💡阅读指南

跳过 Tasks 以后,执行计划由高级模型在开发过程中动态维护,但项目仍然需要一份稳定的收口记录。本节增加一份自定义的实施报告,把 SPEC、代码、测试和验收结果重新连接起来,并说明本轮开发结束时到底应该留下哪些产物。

8.1 为什么还需要一份实施报告

实现 Agent 在任务结束后,如果只保留一句:“开发完成,测试全部通过”,这并不足以支持验收。

标准 Spec Kit 使用 tasks.md 记录待办任务和完成状态。但是,胶囊系统选择让高级模型直接从 Plan 进入实现,没有生成这份中间清单。我们因此增加 implementation-report.md,在实现结束以后记录最终结果:

Text
SPEC:规定要实现和验收什么
  ↓
Plan:规定准备怎样实现和验证
  ↓
代码与测试:形成实际实现和验证证据
  ↓
implementation-report.md:逐项汇总实现结果

报告只是一张索引,把 SPEC 条目指向实现文件、测试文件、执行结果和已知问题。以后审查项目时,我们可以从报告快速找到证据,而不是重新翻阅整段开发对话。

📌说明

implementation-report.md 是本项目增加的自定义产物,不是 Spec Kit 的标准文件。

8.2 先固定模板,再让 Agent 填写

如果 Prompt 只要求“生成一份最终报告”,不同 Agent 很可能给出完全不同的内容。有的只会概括改了哪些文件,有的只会粘贴测试命令,还有的会漏掉没有完成的需求。我们需要一份标准模板,约束 Agent 产生标准的报告。先在功能目录中建立报告模板:

Text
specs/001-capsule-main-flow/implementation-report-template.md

实现完成以后,Agent 读取这份模板,根据真实结果生成:

Text
specs/001-capsule-main-flow/implementation-report.md

模板和报告要分开保留。模板规定每次实施都应该回答哪些问题,最终报告只记录本次实施的答案。重新开发或进行一次新的完整验收时,可以再次从模板生成报告。

这份模板围绕一条很简单的主线组织:

Text
实现了什么
  ↓
每项 SPEC 要求由哪里实现、怎样验证
  ↓
实际运行了哪些测试、结果是什么
  ↓
是否偏离 Plan,还有什么没有完成
  ↓
最终交付物是否齐全,能否进入验收

其中最重要的是“SPEC 逐项核对表”。它不能只写“FR-001 至 FR-056 全部完成”,而要保留每个编号,并给出对应的实现位置和验证方式。自动化测试无法覆盖的内容,也要明确写出采用了人工检查、文档检查还是端到端验收。通过失败未运行阻塞 是不同结果,不能混写。

8.3 本轮开发的最终交付物

这里的“交付物”并不是给最终用户安装的安装包,而是当前开发阶段完成以后,项目仓库中应该具备并可供验收的内容。胶囊系统本轮开发需要核对下面四组产物。

产品实现

  • src/capsule_system/ 中的 Python 核心模块。
  • 可供 Agent 稳定调用的 capsule CLI。
  • skills/capsule-system/ 中与 Agent 基座无关的 Skill。
  • 飞书存储适配及必要的配置、权限检查能力。
  • pyproject.toml、依赖锁定文件和开发运行说明。

测试与验收资料

  • tests/unit/ 中的单元测试。
  • tests/contract/ 中的 CLI、数据结构和外部适配契约测试。
  • tests/integration/ 中的模块协作与飞书适配测试。
  • tests/acceptance/ 中对应用户故事和验收场景的端到端测试。
  • tests/fixtures/ 中经过标注的输入样例和预期结果。

设计依据

  • spec.md 及其需求清单和验收标准。
  • plan.mdresearch.mddata-model.mdcontracts/quickstart.md 等 Plan 产物。
  • 实现过程中发生的技术偏离及其理由已经记录。

实施结果

  • 全部实际测试命令及通过、失败、未运行数量已经记录。
  • SPEC 中的功能需求、边界情况、验收场景和成功标准已经逐项核对。
  • 未完成、阻塞、跳过和需要人工验收的内容已经明确列出。
  • implementation-report.md 已按模板生成,并给出是否可以进入验收的结论。

测试资料和实施报告属于开发与验收资产,应该保留在项目仓库中,但不等于以后必须发给最终用户。安装包包含什么、怎样检查用户环境、怎样升级和卸载,仍然留给后续发布阶段处理。