副标题:项目日记与月度报告 · AI 提效
本文为 vergex.cn 原创首发,转载请注明出处。
上个月发版前夜,我还在逐条翻看两百多条 Git 提交,试图拼凑一份像样的项目月报。三小时后我意识到:真正该自动化的不是“写月报”这个动作,而是让 Agent 把月报所需的全部上下文——需求、代码、测试、踩坑记录——都提前准备好。独立开发者没有 PM、没有技术写手,Agent 应该是能闭环交付的“实习生”,而不是只会回答“这段代码怎么写”的搜索引擎。
把 Agent 当成能独立闭环的“实习生”
大多数独立开发者使用大模型的方式停留在“问答模式”:贴一段报错,等一段解释;贴一段需求,等一段代码。这种模式效率提升有限,因为你仍然是自己任务的调度中心。想要效率真正乘以 10,需要把 Agent 当成一名可以交付完整任务的实习生:你给目标、边界和验收标准,它负责调研、实现、测试、文档。
我常用的任务委托格式只有四行:
目标:为本站文章页增加代码块复制按钮
边界:不引入新依赖,兼容 dark/light 模式,移动端不显示
验收:1) 点击后弹出 toast 提示;2) 支持键盘聚焦;3) 所有现有代码块无样式回归
上下文:相关组件在 src/components/CodeBlock.astro
把这四行发给 Aider、Claude Code 或你自己封装的脚本 Agent,效果会远好于“帮我写个复制按钮”。关键区别在于:你给出的是结果定义,而不是实现步骤。 Agent 会在工具链允许范围内自主选择读文件、写测试、运行命令,而不是逐句等待你的下一步指令。
给 Agent 一张工牌:项目常驻配置
实习生入职需要工牌、邮箱、座位。Agent 进入项目也需要一套常驻配置,否则每次启动都要重新交代项目规范、技术栈、提交约定。对独立开发者来说,维护这些配置的时间一次投入、长期复利。
如果你用 Aider,可以在项目根放置 .aider.conf.yml:
model: gpt-4o
architect: true
auto-commits: false
dirty-commits: false
test-cmd: "npm run test:unit"
lint-cmd: "npm run lint"
启动 Aider 时它会自动读取这份配置,不需要每次手敲 flag。auto-commits: false 和 dirty-commits: false 是我强制的两条纪律:Agent 可以改代码,但提交权必须在你手上,避免它把中间态强行写进仓库历史。
如果你用 Claude Code,则在项目根创建 .claude/CLAUDE.md,把项目结构、命名约定、测试命令、不允许做的事写进去。它每次进入项目都会读取。无论哪种工具,核心原则是把“你默认知道的事”显性化,例如:
- 项目使用 pnpm,不要生成
npm install命令 - 不要修改
pnpm-lock.yaml - 所有新函数必须带 TypeScript 返回类型
- 第三方 API 调用必须走
src/lib/api.ts的封装
这些规则不要放在聊天记录里,而要放在 Agent 启动就能读到的位置。
让 Agent 长出双手:工具链与 MCP
没有工具的 Agent 只是个聊天框。2026 年主流的工程 Agent 普遍支持 MCP(Model Context Protocol),它让模型可以安全地读写文件、执行命令、查询数据库、调用浏览器。对独立开发者来说,这意味着 Agent 真的能替你完成“改代码 → 跑测试 → 看结果 → 再改”的循环。
一个最小可用的 MCP 配置示例(以官方 filesystem server 为例):
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/you/projects/my-blog"
]
}
}
}
配置生效后,Agent 可以直接读取、搜索、编辑项目文件,而不需要你手动复制粘贴。更进一步的组合是:filesystem + git + browser。filesystem 负责代码,git 负责 diff 和历史查询,browser 负责查最新文档或验证部署后的页面。
这里有一份我日常维护的Agent 工具栈清单,包含各工具的用途、安装命令和配置模板,完整版可在站点下载。不要自己从零摸索,先把别人踩过的坑避开。
下面这张表能帮你快速判断该用哪种 Agent 形态:
| 维度 | 通用聊天型(ChatGPT / Claude Web) | 终端工程型(Aider / Claude Code) | 后台自动化型(脚本 + API) |
|---|---|---|---|
| 最佳场景 | 思路发散、文案、答疑 | 需求到代码、重构、修 Bug | 定时报告、批量处理、CI 流水线 |
| 上下文来源 | 你粘贴的片段 | Git 仓库、MCP 工具、本地文件 | 结构化输入、日志、数据库 |
| 工具调用 | 无或有限 | 文件读写、终端、浏览器、Git | 自定义函数 / REST API |
| 人工介入 | 每轮对话 | 关键决策点 | 仅异常或最终审阅 |
| 适合任务粒度 | 小时级咨询 | 天级任务 | 周级流水线 |
独立开发者最高性价比的形态是“终端工程型”:它既能闭环处理具体任务,又保留了人工决策的节点。
避坑:不要把聊天记录当成记忆
很多开发者以为“我和 Agent 说了十几轮,它应该记住项目了”。这是最大幻觉之一。Agent 的上下文窗口不是硬盘,长会话下它会对早期指令产生“中间遗忘”,甚至把临时假设当成既定事实。更危险的是,它可能把三个月前某次实验的代码风格当成当前规范。
我的做法是建立一个结构化上下文目录 docs/agent/:
docs/agent/
├── 00-tech-stack.md # 技术栈与版本约束
├── 01-architecture.md # 模块关系与数据流
├── 02-decisions.md # 关键决策与理由
├── 03-patterns.md # 编码约定与反模式
└── 04-known-issues.md # 当前已知问题与规避方案
每次启动新会话时,让 Agent 先读这五个文件,而不是从零聊天。更新决策时同步更新 02-decisions.md,而不是指望 Agent 记住。检索时不要用向量数据库放大幻觉风险,用 rg 做精确关键词检索往往更可靠:
rg --type md --context 2 "复制按钮" docs/agent/
如果你的笔记超过几千条,再考虑轻量向量检索;否则纯文本 + ripgrep 对独立开发者已经足够快、足够准。
本地跑与云上跑:双轨成本熔断
把繁重任务全丢给云端 API,月底账单可能让你清醒。独立开发者需要一套“双轨”策略:复杂推理、长上下文、代码生成走云端;简单补全、敏感数据、批量格式化走本地。
本地部署我常用 Ollama:
# 拉取一个擅长代码的模型
ollama pull qwen2.5-coder:32b
# 直接交互测试
ollama run qwen2.5-coder:32b
对独立项目而言,32B 级别的本地模型已经能完成大量代码审查、注释补全、小函数生成。真正需要云端 Agent 的是跨文件重构、复杂调试、需要调用 MCP 工具的任务。
成本熔断不只是“少用 API”,而是设置硬预算和 token 计数习惯:
- 在 OpenAI / Anthropic 控制台设置月度使用上限。
- 给每个 Agent 会话设定预期 token 上限,例如“本次重构预算 50 万 tokens”。
- 长任务先让 Agent 写方案文档,你确认后再让它动手改代码,避免反复试错烧钱。
另外,不要把生产密钥直接交给 Agent。给 Agent 用的 API key 只开必要权限,并绑定 IP 或短期过期策略。
从 Git 提交到月度报告:一个可复现的自动化脚本
项目月报是独立开发者最头疼的行政任务之一,但它天然适合 Agent:输入是 Git 历史、issue 状态、文档变更,输出是面向读者而非机器的可读文本。下面这段脚本可以直接运行,它会拉取最近 N 天的提交记录,调用 Claude API 生成一份中文月报草稿。
#!/usr/bin/env python3
"""从 Git 提交生成项目月报草稿"""
import argparse
import os
import subprocess
from datetime import datetime, timedelta
import anthropic
def git_log(repo: str, days: int) -> str:
since = (datetime.now() - timedelta(days=days)).strftime("%Y-%m-%d")
result = subprocess.run(
[
"git", "-C", repo,
"log", f"--since={since}", "--reverse",
"--pretty=format:[%h] %ad %s%n%b---",
"--date=short",
],
capture_output=True,
text=True,
check=True,
)
return result.stdout
def summarize(text: str, model: str) -> str:
client = anthropic.Anthropic(
api_key=os.environ.get("ANTHROPIC_API_KEY")
)
prompt = (
"你是一位独立开发者,请根据下面的 Git 提交记录,"
"用中文写一份项目月度进展报告:\n"
"1) 本月完成了哪些功能/模块;\n"
"2) 解决了什么关键问题;\n"
"3) 下月可推进的方向。\n"
"保持简洁、面向读者,不要罗列提交哈希。\n\n"
"提交记录:\n" + text
)
resp = client.messages.create(
model=model,
max_tokens=4096,
temperature=0.3,
system="你是技术写作助手,只输出项目月报正文。",
messages=[{"role": "user", "content": prompt}],
)
return resp.content[0].text
def main():
parser = argparse.ArgumentParser()
parser.add_argument("--repo", default=".")
parser.add_argument("--days", type=int, default=30)
parser.add_argument(
"--model",
default="claude-3-5-sonnet-latest",
)
args = parser.parse_args()
log = git_log(args.repo, args.days)
if not log.strip():
print("该时间段内没有提交记录。")
return
report = summarize(log, args.model)
out_path = f"monthly-report-{datetime.now():%Y-%m-%d}.md"
with open(out_path, "w", encoding="utf-8") as f:
f.write(report)
print(f"已生成:{out_path}")
if __name__ == "__main__":
main()
安装依赖:
pip install anthropic
export ANTHROPIC_API_KEY="sk-..."
python monthly_report.py --repo /path/to/project --days 30
这个脚本只是一个起点。进阶做法是把 issue 关闭记录、测试覆盖率变化、文档更新也一并喂给 Agent,让它生成更完整的月度回顾。Agent 最适合的正是这种“把机器可读数据变成人类可读故事”的任务。
避坑:不要让 Agent 直接修改你的主分支
Agent 改代码最可怕的不是它写错,而是你不知道它在哪里写错。很多独立开发者图省事,直接在 main 分支上让 Agent 改代码,结果几轮对话后仓库进入一种“能跑但不敢碰”的状态。
我的纪律是:任何 Agent 改动必须先进入独立工作树(worktree)或独立分支。
# 创建独立工作目录和分支
git worktree add ../myproject-agent -b agent/exp-login
# 进入工作目录启动 Agent
cd ../myproject-agent
aider
# 完成后回到主仓库审阅 diff
cd ../myproject
git diff main...agent/exp-login
git worktree 是 Git 原生能力,不依赖任何 Agent 工具。它的好处是:主仓库保持干净,Agent 随便折腾;你可以同时开多个工作树做不同实验;合并前必须走 diff + 测试 + 代码审查流程。
验收 Agent 产出时,我坚持三步:
- 看 diff,不看聊天:聊天记录会说很多漂亮话,diff 才是真实改动。
- 跑测试,不止看结果:让 Agent 在提交前跑
npm test或pytest,并保存测试输出。 - 问为什么:对任何非显而易见的改动,让 Agent 在 commit message 或代码注释里写明理由。
反模式清单与自查表
- [ ] 把 Agent 当搜索引擎,只问“怎么做”,不给目标、边界、验收标准。
- [ ] 每次启动 Agent 都从零聊天,没有项目常驻配置。
- [ ] 让 Agent 直接操作
main分支,没有隔离的工作树或分支。 - [ ] 把聊天记录当成记忆,没有结构化的
docs/agent/上下文。 - [ ] 一次性把整个大仓库塞进上下文,导致中间遗忘和幻觉。
- [ ] 给 Agent 长期有效的高权限 API key,没有预算和权限熔断。
- [ ] 只看 Agent 的回复文字,不看它实际改动的 diff。
- [ ] 让 Agent 自动提交,导致仓库历史被临时代码污染。
- [ ] 所有任务都走云端 API,没有用本地模型做成本分流。
- [ ] 生成月报时手动复制粘贴 Git 记录,而不是用脚本让 Agent 闭环完成。
核心总结:独立开发者用 Agent 提效的本质,不是“让 AI 帮你写代码”,而是“把任务闭环 delegate 给一名不需要工位的实习生”——前提是你要给它工牌、工具、记忆、预算和验收标准。

