我今天尝试了,不需要安装 Spec-kit,结合 AGENTS.md 也能实现部分 Spec 开发的方式。我用的 Codex,整个过程是这样的:
1. 用自然语言对话,与 AI 共同产出一个产品功能清单 PRODUCT.md。
2. 在这个清单的基础上,让 AI 生成一个分阶段实现的 PLAN.md。
3. 引用 PRODUCT.md 和 PLAN.md,让 AI 得到一个技术参考文档 TECH-REFER.md。
4. 根据如上所有文档,让 AI 提供一个分阶段,原子化的任务清单 TASK.md
然后 AGENTS.md 里添加一个规则,让 AI 记住自己的每一步修改:
## Change Tracking
- After any file modification in this repo, update `CHANGE.md` at the project root.
- For each change, include:
- Date (YYYY-MM-DD) and optional time
- Affected files/paths
- Action: Add | Modify | Delete
- Functions modified: list fully qualified function/method names; include signature when practical
- Short summary and expected impact
- Keep entries reverse‑chronological; group related changes under the same date.
- When opening a PR, ensure `CHANGE.md` includes that PR’s delta.
Example entry:
Date: 2025-01-01
Changes:
- Modify: Core/WindowManager.swift — Refactor layout calc for clarity.
- Add: Tests/LayoutTests.swift — Add tests for split algorithm.
Functions modified:
- WindowManager.applyLayout(_:to:screens:)
- LayoutEngine.splitRect(_:by:gap:)
Impact:
- Behavior unchanged; improved test coverage and readability.
然后再添加一个规则,让 AI 根据 TASK.md 来一步一步执行:
- 按“一个原子任务一次”的节奏推进,实现来自 `TASK.md` 的任务。
- 每完成一个原子任务:
- 立即在 `TASK.md` 中将对应条目标记为 `[x]`。
- 在 `CHANGE.md` 记录变更:包含日期、影响文件、修改/新增/删除,以及“Functions modified”。
- 若实现影响了用户体验或操作方式,优先在文档中以“用户操作”视角补充说明。
---
这种方式比起 Spec-kit 稍有不同的是,每完成一个任务,Codex 都会让你确认,然后进行下一步,不像 Spec-kit 里提供的命令这么自动化。
但是,这个方式可以比较好地管理每一个步骤的实现,你可以向 AI 反馈你发现它的实现中出现的问题。即时进行修正,这些操作记录都会记录到 CHANGE.md 这个文档里面。
然后有了 CHANGE.md 文档的存在,你可以放心调用不同的 LLM Coding 工具,在基于 CHANGE.md 里面的基础上进行修改。相当于拥有一个项目的记忆。
1. 用自然语言对话,与 AI 共同产出一个产品功能清单 PRODUCT.md。
2. 在这个清单的基础上,让 AI 生成一个分阶段实现的 PLAN.md。
3. 引用 PRODUCT.md 和 PLAN.md,让 AI 得到一个技术参考文档 TECH-REFER.md。
4. 根据如上所有文档,让 AI 提供一个分阶段,原子化的任务清单 TASK.md
然后 AGENTS.md 里添加一个规则,让 AI 记住自己的每一步修改:
## Change Tracking
- After any file modification in this repo, update `CHANGE.md` at the project root.
- For each change, include:
- Date (YYYY-MM-DD) and optional time
- Affected files/paths
- Action: Add | Modify | Delete
- Functions modified: list fully qualified function/method names; include signature when practical
- Short summary and expected impact
- Keep entries reverse‑chronological; group related changes under the same date.
- When opening a PR, ensure `CHANGE.md` includes that PR’s delta.
Example entry:
Date: 2025-01-01
Changes:
- Modify: Core/WindowManager.swift — Refactor layout calc for clarity.
- Add: Tests/LayoutTests.swift — Add tests for split algorithm.
Functions modified:
- WindowManager.applyLayout(_:to:screens:)
- LayoutEngine.splitRect(_:by:gap:)
Impact:
- Behavior unchanged; improved test coverage and readability.
然后再添加一个规则,让 AI 根据 TASK.md 来一步一步执行:
- 按“一个原子任务一次”的节奏推进,实现来自 `TASK.md` 的任务。
- 每完成一个原子任务:
- 立即在 `TASK.md` 中将对应条目标记为 `[x]`。
- 在 `CHANGE.md` 记录变更:包含日期、影响文件、修改/新增/删除,以及“Functions modified”。
- 若实现影响了用户体验或操作方式,优先在文档中以“用户操作”视角补充说明。
---
这种方式比起 Spec-kit 稍有不同的是,每完成一个任务,Codex 都会让你确认,然后进行下一步,不像 Spec-kit 里提供的命令这么自动化。
但是,这个方式可以比较好地管理每一个步骤的实现,你可以向 AI 反馈你发现它的实现中出现的问题。即时进行修正,这些操作记录都会记录到 CHANGE.md 这个文档里面。
然后有了 CHANGE.md 文档的存在,你可以放心调用不同的 LLM Coding 工具,在基于 CHANGE.md 里面的基础上进行修改。相当于拥有一个项目的记忆。