用 Codex 之后,我开始认真收拾工作区
After Codex, I started tidying my workspace最近用 Codex 做完一个稍长的任务后,我发现:
功能完成了,项目根目录也像被翻过一遍。
里面多了临时脚本、测试文件、截图、日志、草稿,还有一些名字看起来都像“最终版”的中间产物。
这些文件生成时可能都有用。麻烦发生在几天之后:
哪些是最终交付物?哪些只在验证时用过一次?哪些是 agent 创建的?哪些是我原本留下的?哪些可以删,哪些最好别碰?
我后来意识到,只告诉 coding agent“要完成什么”还不够。
如果工作区是否清晰没有被写进要求,它自然也不会被当成完成标准。
只要一个 coding agent 能读写文件、运行命令、生成中间产物,不管是 Codex、Claude Code 还是 Cursor Agent,都会遇到类似问题。
我把它叫作 workspace hygiene:工作区卫生。
现在我主要遵守 3 条规则。
1. 先限制它能在哪里动手
以前我更关心 agent 能不能完成任务,现在也会检查它能在哪些地方完成任务。
只需要检查代码、分析问题时,可以先用 read-only。
需要修改时,再开放当前 workspace 的写权限。联网、修改 workspace 以外的文件或者系统配置,则单独确认。
以 Codex CLI / IDE 为例,可以使用类似配置:
sandbox_mode = “workspace-write” approval_policy = “on-request” web_search = “cached” [sandbox_workspace_write] network_access = false
大意是:
允许它在当前 workspace 内工作;命令默认不能直接联网;需要越过边界时先询问。
权限越大,发生问题后需要检查的范围也越大。
如果任务需要同时尝试 A、B、C 几种方案,我也会考虑使用临时分支、worktree、sandbox 或项目副本,避免所有试错都发生在主项目里。
2. 给过程文件一个固定去处
对于报告、数据分析、图片生成这类任务,我会固定两个目录:
work/:临时脚本、日志、草稿和过程数据outputs/:最后需要交付或给人查看的文件
已有代码库则继续遵循原本的 src/、tests/、docs/ 等结构,不需要为了使用 agent 强行增加一套目录。
可以直接给 agent 这段要求:
本任务请尽量直接回答。只有确实需要修改源码、创建交付物、验证脚本或中间数据时才创建文件。
请遵循项目已有的目录结构:
- 临时过程文件放在 work/ 或项目已有的临时目录;
- 独立交付物放在 outputs/;
- 源码、测试和文档放回项目原有位置;
- 不要在项目根目录散落 scratch 文件。 结束前,请列出本次创建和修改的文件。
如果这是一条长期规则,也可以写进项目的 AGENTS.md 或其他 agent instruction 文件,不用每次重新提醒。
3. 把 housekeeping 写进完成标准
Agent 说“完成了”以后,我现在会再让它做一次收尾:
请做一次 housekeeping 收尾:
1. 列出本任务创建或修改的文件,分为:
- 最终交付物
- 源码或文档变更
- 临时过程文件
2. 删除确认由本任务创建且不再需要的临时文件。
3. 不要删除:
- 我提供的输入文件
- 项目原有文件
- 来源不确定的未跟踪文件
4. 如果当前目录是 git repo,运行 git status –short,并解释剩余的修改和未跟踪文件。
5. 最后说明:
- 保留了什么
- 清理了什么
- 还有什么需要我决定
这里最重要的一句是:
不要删除来源不确定的文件。
Housekeeping 不是尽可能多删东西,而是让每项变更都有清楚的去向。无法确认来源时,保留并交给人判断更安全。
我现在对“任务完成”的定义也多了一条:
结果能运行,改动也能解释。
如果 git status 里还留着一堆没人说得清用途的文件,任务其实还没有结束。