Day 046AI 协作手记 Working with AI约 4 分钟

用 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 里还留着一堆没人说得清用途的文件,任务其实还没有结束。