AI 开发实践
最近我更高频地用 Codex 做主力 AI 开发 agent。用久以后,我发现真正影响体验的不是它会不会写代码,而是它会不会收尾。
最麻烦的情况是:AI 很快告诉你“完成了”,但项目并没有真的收尾。
一开始我关注的是它能不能改页面、补接口、修报错、跑测试。后来我发现,AI agent 的执行能力通常不是最大问题。
真正麻烦的是:工作区还有没处理的改动,项目记录没有同步,测试只跑了一部分,真实页面路径没有验证,文档里的版本号还是旧的,甚至某些中文文件在跨环境传输里出现了乱码风险。
这些问题单独看都不大,但它们会不断回到人类这里。你本来只是想让 AI 帮你开发,最后却变成了帮 AI 收拾残局。

所以我给每个 AI 开发任务加了一道“收工检查”。它解决的不是“AI 会不会写代码”,而是:AI 说完成之前,能不能先证明项目真的可以交接?
任务做完,不等于项目结束
AI agent 很擅长执行局部任务。你让它改一个按钮、补一个接口、写一个页面、修一个报错,它通常能很快进入状态。
但项目不是由一个个局部动作组成的。项目还有状态、记录、验证、交接和后续维护。
如果这些问题没有答案,AI 的“完成了”就只是一个语气词。

这不是流程洁癖,而是防止项目被半成品、旧记录和漏验证拖住。
我把“完成”拆成 6 个检查项
1. 代码状态:现在到底改了什么
先看当前分支、当前版本、未保存改动、未追踪文件,以及是否需要提交。不要只说“代码改完了”,要说清楚代码现在处在什么状态。
2. 项目记录:重要事实有没有留下来
聊天记录不是长期记忆。如果任务改变了项目状态、风险、决策或下一步,但这些信息只留在对话框里,后面就很容易接不上。
3. 当前账本:记录和真实代码是否一致
README、任务记录、版本说明或项目账本,最容易出现的问题不是没有,而是过期。历史记录可以保留,但当前状态字段不能过期。
4. 验证证据:不是命令跑完就算
自动测试很重要,但它不能覆盖所有真实使用路径。尤其是页面、按钮、表单、登录、同步、导入导出、权限、导航这些东西,只看测试通过是不够的。
5. 文字健康:看到乱码先停
AI 开发经常会跨终端、脚本、配置文件、Markdown、JSON、YAML。只要中间有中文,就可能遇到显示层乱码,严重时甚至会把文件本体写坏。
6. 下一步:谁继续,继续什么
任务结束时,AI 还要回答一个问题:下一步该找谁?是继续让当前 agent 做,是人类确认,还是只需要写入项目记录,明天再继续?
这不是流程洁癖,是降低维护成本
很多人用 AI agent 的时候,会把重点放在“能不能更快生成代码”。这当然重要。
但当你真的把 AI 放进连续项目里,另一个问题会变得越来越明显:AI 生成结果很快,但它留下的维护成本也可能很高。
如果每次任务结束后,人类都要检查工作区、补项目记录、确认测试、查乱码、判断下一步,那 AI 只是把执行压力换成了管理压力。
可以直接复制的收工单
你可以把下面这段贴进项目提示词、AGENTS 文件、Claude Code 规则或任何 agent 的启动说明里。
PROJECT CLOSEOUT CHECK
Code:当前分支、当前版本、改动和未保存文件。Project Notes:项目状态、任务、风险、决策是否需要更新。Current Record:README、项目账本、交接记录是否和真实代码一致。Validation:测试、构建、真实用户路径是否验证。Text Health:Markdown、JSON、YAML、配置文件是否有乱码。Handoff:下一步由谁接手,接手什么。
我对“完成”的判断变了
以前我看到 AI 说 done,会下意识觉得任务结束了。现在我不会了。
我会看它有没有把代码状态、项目记录、验证证据、文本健康和下一步交代清楚。
如果这些都没有,只能说明它做了一部分事情。还不能说项目结束。
好的 AI 工作流,不是让 AI 多做一点,而是让 AI 少留一点烂尾。
夜雨聆风