Skip to content

Project 03. 让 agent 关掉再打开还能接着干

相关讲义:L05. 为什么长时任务会丢失上下文 · L06. 为什么初始化需要单独一个阶段 本篇模板文件:templates/

你要做什么

P02 解决了"接手"的问题,但 agent 接手之后能不能把活干完、干对了,又是另一回事。这个项目要你给 agent 加上范围控制和验证关卡。

你要实现的知识库功能是:文档分块、元数据提取、索引进度显示、带引用的问答流程。这些功能比前两个项目复杂,agent 更容易跑偏——要么多做了不该做的,要么说做完了但其实没通过验证。

你需要一个 feature_list.json,每个功能有明确的状态(failing / passing)。规则很简单:一次只做一个功能,没有可运行的验证证据就不能标成 passing。跑两次,一次不给这些约束,一次严格执行,看结果差多少。

用什么工具

  • Claude Code 或 Codex
  • Git
  • Node.js + Electron
  • feature_list.json(模板参考 docs/zh/resources/templates/feature_list.json

具体步骤

准备工作

  1. 基于 P02 完成后的代码,从同一个 commit 出发。
  2. 创建两个分支:p03-baselinep03-improved
  3. 定义四个功能:文档分块、元数据提取、索引进度 UI 显示、带引用的问答。两条分支的功能定义完全一致。

第一次运行(弱 harness)

切到 p03-baseline 分支。

  1. 启动 agent,给一段模糊的任务提示词。
  2. 不提供 feature_list.json,没有状态追踪。
  3. 不限制 agent 一次做几个功能。
  4. 没有明确的验证标准——agent 自己说"完成了"就算。
  5. 运行结束后,手动检查每个功能是否真的能用。
  6. 记录哪些功能 agent 声称完成但实际没通过验证。

第二次运行(强 harness)

切到 p03-improved 分支。在启动 agent 之前:

  • 在仓库根目录放好 feature_list.json,四个功能全部标为 failing
  • AGENTS.md 里写明规则:一次只做一个功能;状态只能从 failing 切到 passing,且必须有验证证据。
  • 准备好 init.sh

然后启动 agent:

  1. agent 开始工作,每完成一个功能必须更新 feature_list.json 并附上验证证据(截图、测试输出等)。
  2. 至少要有一个功能展示从 failingpassing 的完整转换过程。
  3. 问答功能的验证必须检查引用是否存在、引用是否相关,不能只看有没有输出。
  4. 运行结束后归档所有验证证据。

怎么衡量结果

指标说明
范围漂移次数agent 做了功能清单之外的事的次数
虚假完成率agent 声称完成但验证不通过的功能比例
验证覆盖率有明确验证证据的功能占总功能的百分比
问答质量引用是否存在、引用是否相关
重试次数从开始到所有功能 passing 总共重试了几次

要交什么

  • 弱 harness 运行记录:提示词、日志、验证结果
  • 强 harness 运行记录:feature_list.json 变更历史、日志、验证证据
  • 至少一个功能从 failingpassing 的转换证据
  • 一份对比笔记:重点看范围纪律和完成准确度

对应讲义