《AI 渐进编程》之十四:Agent 的道场怎么布置?——程序项目的工作台方法
前面几篇已经把控制逻辑说清楚了:
prompt负责轻任务Harness负责边界和验收state负责记住当前进展current_task.md负责定义这一轮具体做什么;revision_log.md负责记录为什么这么改open_issues.md负责保存暂时不能解决的问题project_map.md负责保存长期项目认知。
这一篇不再重复这些控制逻辑,
而是回答一个更实际的问题:
这些东西应该怎么摆,AI 和人类才都看得清楚?
这就是工作台要解决的事。
1. 工作台不是控制器,而是信息布局
Harness 讲的是:
- 能做什么
- 不能做什么
- 怎么验收
- 失败后怎么办
工作台讲的是:
- 这些信息放哪
- Agent先看什么
- 代码、状态、反馈怎么分开
- 人类怎样快速接管
- 哪些信息应该显示成界面
一句话:
Harness 负责控制,工作台负责摆放和呈现。
2. 一个程序工作台应该分成四块
以购物车程序为例,工作台可以分成四块:
2.1 项目认知区
放长期稳定的信息:
- 项目目标
- 主文件
- 关键约束
- 读文件顺序
- 架构边界
对应:
project_map.md
这一块的作用,是让 Agent 先知道“这个项目是什么”。
它不负责描述本轮具体任务,而是保存长期认知。
2.2 当前任务区
放这一轮具体要做什么:
- 本轮目标
- 允许修改的文件
- 禁止碰的范围
- 验收条件
- 需要人工确认的事项
对应:
current_task.md
这一块的作用,是让 Agent 先知道“这轮该干什么”。
它比项目地图更短、更具体,也更临时。任务完成后,它可以被替换、归档或更新。
2.3 代码与验证区
放真正要改的内容:
- 业务代码
- 测试代码
- 局部 diff
- 测试输出
- 验证结果
在购物车程序里,通常就是:
checkout/service.pytests/test_checkout.py
这一块是 Agent 真正动手的地方。它应该尽量干净,不要塞太多状态说明和历史解释。
2.4 反馈区
放修改后的结果:
- 为什么这么改
- 改了什么
- 哪些测试通过
- 哪些问题还没解决
- 下一轮从哪里接
对应:
revision_log.mdopen_issues.md
这一块的作用,是让下一轮不会重新猜。
3. 为什么不能把所有东西堆在一起?
因为一堆在一起,系统就会开始混。
问题一:任务和日志混在一起
current_task.md 说的是“现在要做什么”。revision_log.md 说的是“已经做过什么”。
如果混在一起,Agent 可能把历史任务误认为当前任务,也可能把旧的候选方向当成新的执行授权。
问题二:代码和状态混在一起
代码文件应该表达程序逻辑。
状态文件应该表达任务边界和项目认知。
如果把临时说明、修改计划、验收备注都塞进代码附近,Agent 可能把说明当逻辑,把备注当需求,最后改出一堆范围外内容。
问题三:人类视图和执行层混在一起
人类想快速知道:
- 当前做到哪了
- 这轮为什么这么改
- 哪些问题还开着
- 下一步是否安全
Agent 执行时需要的是:
- 允许范围
- 目标文件
- 验收条件
- 失败处理方式
这两类信息相关,但不应该混成同一个权威来源。
所以工作台的第一原则是:
每一块只负责一种职责。
所以工作台的第一原则是:
每一块只负责一种职责。
4. 购物车程序里的工作台可以怎么摆?
还是用空购物车结算修复来举例。
这次任务是:空购物车结算时,不应该返回 500,而应该返回稳定的 400 错误,并带上错误码 EMPTY_CART。
一个工作台可以这样摆。
左侧:项目认知
显示:
text
项目:购物车结算服务
主文件:checkout/service.py
测试入口:tests/test_checkout.py
长期约束:支付模块不能在本轮重构
当前阶段:局部 bug fix
来源:
project_map.md
中间:代码编辑区
显示:
checkout/service.py
tests/test_checkout.py
这一块是 Agent 真正修改的地方。
它应该保持干净,围绕当前任务展开,不要塞入长期讨论和历史备忘。
右侧:反馈区
显示:
revision_log.md
open_issues.md
这里记录:
- 这轮为什么改
- 哪些测试通过
- 是否留下架构问题
- 下一轮该怎么看
顶部或底部:验收状态
显示:
空购物车是否返回 400
错误码是否为 EMPTY_CART
正常购物车是否仍然通过
是否修改了禁止文件
是否需要人工确认
这一块可以来自测试结果,也可以来自任务验收清单。
5. Agent 编程需要三块屏幕
传统编程主要围绕代码编辑器展开。
有了 Agent 以后,程序员实际面对的是三块屏幕。
第一块是对话框。
它承载本轮意图、临时解释、确认和人工判断。人通过对话框告诉 Agent 要做什么,也在这里决定是否扩大范围、暂停或继续。
第二块是 Dashboard。
它显示项目状态:当前任务、允许范围、禁止范围、最近修改、开放问题、验收结果和安全下一步。Dashboard 不替代状态文件,只把状态文件里的信息显示出来。
第三块是程序。
它包括源代码、测试、配置、diff 和运行结果。这里是真正发生修改和验证的地方。
这三块屏幕对应三种职责:
对话框 → 意图与协商
Dashboard → 状态与方向
程序 → 修改与验证
Agent 编程的问题,很多时候不是 Agent 不会写代码,而是这三块屏幕混在一起:
- 对话框里堆满长期状态;
- 代码区里塞进临时说明;
- 人类看不到当前任务和开放问题;
- Agent 不知道哪些状态是权威来源。
所以工作台的意义,就是把三块屏幕分清楚。
对话框负责说清这一次。
Dashboard 负责看清现在。
程序区负责改对东西。
6. 一个最小的程序工作台模板
如果压缩成最小结构,可以这样理解:
workspace:
map:
- project_map.md
task:
- current_task.md
code:
- checkout/service.py
- tests/test_checkout.py
feedback:
- revision_log.md
- open_issues.md
review:
- acceptance summary
这个模板的重点不是 YAML,
而是它表达了一个很简单的事实:
- 认知单独放
- 任务单独放
- 代码单独放
- 反馈单独放
- 验收单独放
7. Dashboard 是工作台的只读视图
当项目还小的时候,人直接打开这些 md 文件就够了。
但项目变长以后,人类会遇到一个新问题:每次都打开四五个文件,才能知道现在做到哪了,很累,也容易漏。
这时可以给工作台加一个 Dashboard。
Dashboard 不是新的状态文件。Dashboard 是从状态文件生成出来的只读界面。
project_map.md
current_task.md
revision_log.md
open_issues.md
↓
Dashboard
Dashboard 可以显示:
当前任务:修复空购物车结算错误
允许范围:checkout/service.py, tests/test_checkout.py
禁止范围:payment/**, cart/model.py
最近转移:新增 EMPTY_CART 回归测试
开放问题:是否应把非空购物车规则上移到 domain model
验收状态:checkout suite passed
安全下一步:记录架构问题,不在本轮重构
它的作用是让人快速看清当前状态。
但 Dashboard 不能替代 md。
如果 Dashboard 和 current_task.md 冲突,以 current_task.md 为准。
如果 Dashboard 和 open_issues.md 冲突,以 open_issues.md 为准。
如果要关闭问题,仍然要更新 open_issues.md。
如果要扩大任务范围,仍然要修改 current_task.md。
一句话:
md 是状态源,Dashboard 是只读视图。
8. 先做只读 Dashboard
第一版 Dashboard 应该只读。
它只显示状态,不写回状态。
它可以做:
- 显示当前任务;
- 显示允许和禁止范围;
- 显示最近一次修改;
- 显示开放问题;
- 显示验收结果;
- 提示安全下一步。
它暂时不做:
- 不关闭 issue;
- 不修改 current task;
- 不扩大 allowlist;
- 不写 revision log;
- 不触发提交。
写回状态属于更高风险动作,需要单独任务、权限边界和验收规则。
所以最稳的路径是:
第一步:md 状态文件
第二步:只读 Dashboard
第三步:受控写回
不要一开始就把 Dashboard 做成能改状态的控制台。
9. 工作台为什么能帮助收敛?
因为它让每一轮都更清楚。
没有工作台的时候,Agent 容易这样跑:
改一点
看一点
再猜一点
顺手多改一点
最后边界越来越乱
有了工作台以后,流程会更稳:
先读项目地图
再读当前任务
只改允许范围内的代码
看测试和验收
把结果写回状态
下一轮继续
工作台不直接让 Agent 更聪明,但它让 Agent 更不容易把信息看串。
10. 人类为什么也需要工作台?
因为人类不只想看结果,
还想知道:
现在走到哪了
这轮为什么这么改
哪些问题还在
下一轮准备做什么
当前结果是否可以相信
如果没有工作台,人类就只能翻文件、看 diff、猜上下文。
那样很费力,也不稳定。
所以工作台还有一个很重要的作用:
让人类能快速接管,也能快速继续。
Dashboard 则是这个目标的进一步延伸:它把工作台里的关键状态显示成一个更容易看的界面。
11. 本章小结
工作台的核心不是界面,而是信息分层。
以购物车程序为例,Agent 的基本流程是:
- 先看项目认知
- 再看当前任务
- 只改允许范围内的代码
- 运行测试和验收
- 把结果写回日志和问题清单
Harness 负责控制动作,工作台负责摆放信息,Dashboard 负责只读呈现。
状态留在 md,视图交给 Dashboard。
下一章,我会继续讲:程序项目里的完整任务流,怎么从地图、任务、修改、验证,一直走到可提交状态。
更多推荐
所有评论(0)