Superpowers - 09 从构思到落地:如何用「计划编写与任务粒度」驾驭 AI 时代的软件开发

文章目录

Pre

Superpowers - 01 让 AI 真正"懂工程":Superpowers 软件开发工作流深度解析

Superpowers - 02 用 15 个技能给你的 AI 装上「工程大脑」:Superpowers 快速开始深度解析

Superpowers - 03 一文搞懂 Superpowers:面向多平台 AI 编码助手的安装与实践指南

Superpowers - 04 从"会写代码"到"会做工程":Superpowers 工作流引擎架构深度剖析

Superpowers - 05 构建一个"会自己找插件用"的 Agent:深入解析 Superpowers 的技能发现与激活机制

Superpowers - 06 从文档到"结构契约":Superpowers 技能剖析与 Frontmatter 深度解读

Superpowers - 07 从 SessionStart Hook 看 Superpowers:把「技能库」变成「行为操作系统」

Superpowers - 08 在 AI 时代重写「需求评审会」:深入解读 Superpowers 的头脑风暴与设计规范机制

在 AI 参与软件开发的时代,「怎么写代码」已经不是最大的问题,「怎么让人和 Agent 都能稳定地把复杂需求落到实处」才是关键。 本文围绕 obra Superpowers 中的 writing-plans 技能,系统拆解一套面向「零上下文工程师」的计划编写方法论,帮助你把模糊的设计规范,转化为任何人、任何 Agent 都能照着执行的工程实施计划。


一、 为什么你需要一套「可执行的计划语言」

writing-plans 被设计成一座桥梁:一端是已经评审通过的设计规范,另一端是由人类或 Agent 实际执行的开发任务列表。 在 obra Superpowers 的开发工作流中,它夹在「头脑风暴与设计规范」和「Subagent 驱动开发 / 内联执行计划」之间,是整个流水线的关键咽喉节点。

面向读者主要分三类:

  • 日常需要拆需求、带团队、做 Code Review 的工程师 / Tech Lead
  • 正在尝试用 AI 助手接管部分开发任务的团队
  • 对 Agentic 开发、自动化流水线感兴趣的研究者和技术爱好者

如果用一句话概括本文的核心价值:帮你学会写出一种 对人和 Agent 都友好的「执行说明书」,让每个需求都能走完「规范 → 计划 → 实施 → 合并」的闭环,而不是停在 PPT 或脑子里。


二、整体工作流:计划在开发流水线中的位置

在 Superpowers 设计里,每个功能都要走完一条严格的线性管线:

  1. 构思产生设计规范(brainstorming + design spec)
  2. 使用 writing-plans 将规范拆成可执行任务列表
  3. 通过 subagent-driven-developmentexecuting-plans 消费这些任务
  4. 最后通过 finishing-a-development-branch 完成测试、PR 和合并流程

旧时代的 /write-plan/execute-plan 斜杠命令已经被彻底弃用,原因是它们无法提供足够的上下文注入、自审循环和规范化的交接协议。 基于技能(skill)的系统则以更结构化的方式表达:技能 frontmatter、Hook 注入、上下游技能依赖,从而让整条链路可以被 Agent 和人类稳定消费。

这里有一个非常重要的约束:

  • 没有「已批准的规范」,就不能写计划
  • 没有「完成的计划」,就不能启动实施

这听上去有点「刻意增加流程」,但它直接干掉了最常见的失败模式:Agent 或工程师在需求没讲清楚、范围没收敛时就直接下场写代码,最终导致返工和难以收尾的技术债。


三、核心理念:为一位「零上下文工程师」写计划

writing-plans 最与众不同的地方,是它假设执行者是一名「零上下文工程师」:

一名熟练的开发者,但对我们的工具集或问题域几乎一无所知,而且也不一定擅长测试设计。

这套假设背后有几个现实考虑:

  • AI 的上下文窗口是有限的,计划经常要跨会话执行,之前的聊天记录不可靠
  • 接手计划的人可能不是原作者,也可能压根没参与需求讨论
  • 很多开发者并不天然擅长 TDD,需要「被计划」强制走一遍规范流程

因此,计划必须在文档里把所有关键信息写全:

  • 精确文件路径、文件职责
  • 完整代码块(不是伪代码,也不是口头描述)
  • 精确的测试命令和预期输出
  • 推荐的执行技能(子代理开发还是内联执行)

你可以把它理解为:这是一种面向「匿名未来执行者」的工程说明语言,目标是让任何人在没有上下文、没有陪跑的前提下,也能靠这份文档从零把功能做完。


四、从头开始:计划文档的标准头部

要让计划成为可靠的「协议」,首先得有一个稳定的头部结构。Superpowers 要求每个计划都以统一的头部块开篇,用来向人和 Agent 声明计划的元信息:

字段 用途 示例
Agent 执行指令 告诉 Agent 应使用哪个技能 REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development
目标 一句话描述计划要达成的结果 "Make worktree skills work in Codex App's sandboxed environment"
架构 2--3 句话总结技术方案 "Read-only environment detection at skill start..."
技术栈 涉及的技术和库 "Git, Markdown"等
规范(可选但常见) 所依据的设计规范路径 docs/superpowers/specs/2026-03-23-...-design.md

其中最关键的是 Agent 执行指令 :它明确告诉任何接手计划的 Agent 接下来要调用的是 subagent-driven-development 还是 executing-plans。 如果缺少这一行,Agent 就无法知道下一步的正确协议,相当于链路被掐断。

这个 design 很像 API 的 versioning 和 contract:头部不只是文档装饰,而是机器可读、流程可路由的协议头。


五、文件结构映射:先定「地盘」,再谈任务

在写任何任务前,writing-plans 要求先给出一份清晰的「文件结构映射」:

  • 哪些文件会被创建
  • 哪些会被修改或删除
  • 每个文件的职责是什么

并配套三条设计原则:

  • 单文件单一职责:每个文件的目的要单一清晰
  • 就近放置:一起变更的文件应该靠近,按职责而非技术层次划分
  • 尊重现有模式:不强行重构已有成熟结构,除非被修改文件已明显臃肿

文件映射通常有两种表达形式:

  • 表格:列出路径、操作(创建 / 修改 / 删除)、职责
  • 扁平列表:带动作动词的列表,如 "Create skills/.../SKILL.md:描述 X 功能"

官方明确强调:文件结构映射不仅是组织信息,更是一个 架构校验步骤。如果这一部分写不清楚,后续的任务边界几乎必然混乱,执行时就会出现「到底是哪个文件负责这块逻辑」之类的问题。


六、细粒度拆分:2--5 分钟一个步骤的 TDD 循环

writing-plans 的招牌特性,就是极其强调「任务粒度」。在它的世界观里,一个好的任务应该被拆成若干 每步 2--5 分钟可完成 的具体操作。

在 TDD 场景下,典型的五步循环如下:

步骤 操作 验证
1 编写失败测试 ---
2 运行测试确认失败 预期:FAIL + 特定错误信息
3 编写最小实现 ---
4 运行测试确认通过 预期:PASS
5 提交 ---

每一个步骤在计划文档中对应一个复选框(- [ ]),方便执行者逐项打勾。 这种粒度带来的收益非常直接:

  • 上下文容易装入:每步涉及的改动和信息量足够小,适合丢给子代理完整消化
  • 失败易定位:如果某一步失败,可以非常精准地回溯到该步的修改
  • 提交频率可控:每个 TDD 循环完成一次提交,历史清晰、回滚简单
  • 文档即意图:测试名与预期输出天然记录了行为意图

「2--5 分钟」并不是硬性 SLA,而是一种校准用的心里尺:当你写完一个步骤后,问自己------一位对上下文一无所知的工程师,能否在不额外做决策的前提下,直接执行完?如果答案是否定的,那就再拆。


七、任务内部结构:Files 块、步骤与提交

每个任务内部也有一套固定的「小结构」,贯穿整个仓库的示例计划。

1. Files 块:精确到行号的变更声明

任务的开头是一个 Files 块,明确描述本任务将操作的文件及范围,例如:

  • Create: docs/superpowers/plans/2026-03-23-codex-app-compatibility.md
  • Modify: skills/using-git-worktrees/SKILL.md:14-15

这种写法有几个好处:

  • 消除「到底改哪个文件、哪段代码」的歧义
  • 为自动化或半自动化静态检查提供基础
  • 帮助代码评审者快速对齐本任务修改的「边界」

2. 步骤内容:写「真代码」,不给「脑补空间」

每个步骤内部如果涉及代码,必须给出 实际将写入文件的完整代码块,而不是「大致描述」或伪代码。 同样,验证步骤必须列出:

  • 要执行的具体 shell 命令
  • 预期的输出或至少关键片段

例如,不写「运行测试确保全部通过」,而是写:

  • 运行:npm test -- my-feature.spec.ts
  • 预期:用例 should handle empty input 通过,suite 状态为 PASS

这背后的逻辑是:只要你让执行者自己去脑补「怎么写」,计划就失去了「可机械执行」的属性。对人可能勉强可行,对 Agent 来说则几乎等于失败。

3. 提交步骤:格式统一的 Commit Message

每个任务的最后往往是一个提交步骤,使用带作用域前缀的约定式 commit 格式,例如:

  • feat(worktree-skills): support Codex sandbox detection

正文则用一两句话描述本任务的具体改动。这个统一格式,有利于后续审计、查找和自动化工具的解析。


八、严格的「禁用占位符」规则:不留任何模糊空间

writing-plans 明确列出了一份「禁用模式清单」,凡是出现这些写法的计划,都被视为 计划失败

禁用模式示例 失败原因
"TBD""TODO""implement later""fill in details" 实施者没有可执行内容
"Add appropriate error handling / validation" 「适当」完全没有被定义
"Write tests for the above"(不写测试代码) 执行者可能写出完全不同的测试
"Similar to Task N"(不重复代码) 任务可能被乱序阅读,丢上下文
单纯描述「做什么」但不展示「怎么做」 执行者必须猜细节
引用从未在任何任务中定义的类型或方法 执行者无法解析引用

这套规则本质上是在保护那位假想中的「零上下文工程师」:任何未经定义的引用、模糊的修饰词,都意味着执行者不得不暂停、上下求索、甚至去问原作者,这与「计划可直接执行」的目标背道而驰。

在 Agent 执行的语境下,executing-plans 甚至会明确指示:一旦遇到不明确的说明,应停下来请求人类澄清,而不是自作主张补完。 这进一步放大了写计划时「不要偷懒」的重要性。


九、自审与审查:把问题堵在计划阶段

当计划初稿写完后,writing-plans 要求计划作者自己完成一轮三项自审:

  1. 规范覆盖率检查:逐条浏览原始规范,确认每一项需求都能在某个任务中找到对应实现;发现遗漏要明确记下并补上。
  2. 占位符扫描:在计划中搜索所有禁用模式(如 TODO、TBD 等),确保不存在模糊指令。
  3. 类型一致性检查 :确认所有任务中使用的类型名、方法签名、字段名称保持一致,例如不要一处叫 clearLayers(),另一处叫 clearFullLayers()

值得注意的是:官方建议是「就地修复并继续------无需重新审查」,说明自审更像是一个高效的 checklist,而不是昂贵的审计流程。

除此之外,还可以选择启动一个专门的「计划文档审查者」子代理,按照四个维度进行第二重检查:

维度 检查内容 标准
完整性 是否存在 TODO、未完成任务、缺失步骤 每个步骤必须有真实内容
规范对齐 是否覆盖规范、是否范围蔓延 无遗漏需求,无过度设计
任务分解 边界是否清晰,步骤是否可执行 每步可独立执行
可构建性 工程师是否能不「卡住」完成执行 无歧义引用、无缺失上下文

有趣的一点是:审查者被明确要求「只标记会在实施阶段造成真实问题的项」,风格和措辞类的建议一律视为非阻塞性 advisory。 这让审查流程保持聚焦,而不会滑向纯粹的文风争论。


十、范围检查与计划拆分:拒绝「巨型单体计划」

在开始拆任务之前,writing-plans 要求先对规范做一次 范围检查

  • 如果规范覆盖了多个相对独立的子系统或功能域,就应该在构思阶段就拆成多个子项目规范
  • 如果构思阶段没有拆好,计划编写者也应该及时建议拆分成多份独立计划,每个都对应一段可独立构建、可测试的软件

这是为了避免「一个计划试图覆盖整个平台」的反模式:这种计划不仅难写、难审、难执行,还很容易在执行过程中不断扩张,变成永远完不成的「大项目」。

brainstorming 技能在上游也会强调这一点:一旦察觉范围过大,就要尽早拆出子项目,并让每个子项目走完整的「规范 → 计划 → 实施」流程。


十一、执行交接:子代理驱动 vs 内联执行

当计划写好、存好之后,writing-plans 还要求作者在文档末尾明确给出两种执行策略供选择:

  1. 子代理驱动开发(推荐)

    • 为每个任务起一个新的子代理实例,当前会话派发任务
    • 在任务之间做两阶段审查:先检查规范对齐,再检查代码质量
    • 优点是上下文隔离更好,每个子代理只需要关注自己那一小段计划
  2. 内联执行计划

    • 使用 executing-plans 在同一会话中批量执行任务
    • 适合子代理不可用或希望「一路做到底」的场景

不论使用哪一条路径,最终都要收敛到 finishing-a-development-branch,统一做测试验证、创建 PR 和合并操作。 两种方式的差异主要体现在体验上(交互式 vs 批量式),而不是产出结果。


十二、存储约定:把计划当作正式工程资产

为了保证可发现性和可追溯性,writing-plans 建议将计划统一存储在:

  • docs/superpowers/plans/YYYY-MM-DD-<slug>.md

规范文档则位于:

  • docs/superpowers/specs/

历史上还有一个旧的 docs/plans/ 目录,存放的是约定标准化之前的计划文件。 通过这种路径约定,可以:

  • 按时间顺序快速定位近期计划
  • 清晰地区分规范、计划和其他文档
  • 让上游(brainstorming)和下游(执行技能)都能用路径互相引用

对于团队来说,这也意味着「计划文档」被视为一等公民工程资产,而不是临时聊天记录。


十三、实战示例:如何为一个功能写出合格的计划

结合上述原则,我们可以用一个简化的示例,来演示如何编写一份满足 writing-plans 要求的计划(示意风格,非原文复刻)。

1. 头部示意

markdown 复制代码
REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development

目标:为 Codex App 的沙盒环境增加 Git worktree 能力检测与降级处理

架构:在 worktree 相关技能启动时检测文件系统是否只读;若检测失败或权限不足,退化为 no-op 并记录日志。通过新增兼容性文档说明行为差异。

技术栈:Node.js、Git、Markdown

规范:docs/superpowers/specs/2026-03-23-codex-app-compatibility-design.md

这种写法紧扣文档中的真实示例结构:通过一段简短的架构说明,把关键策略讲清楚,而把细节留给后续的文件映射和任务列表。

2. 文件映射示意

markdown 复制代码
# Files

- Create: docs/superpowers/plans/2026-04-12-codex-worktree-compat.md
  - 记录 Codex 沙盒兼容性计划
- Modify: skills/using-git-worktrees/SKILL.md
  - 增加只读环境检测与降级逻辑说明
- Modify: skills/using-git-worktrees/index.ts
  - 在运行时注入文件系统检测与降级实现
- Modify: tests/using-git-worktrees/compat.spec.ts
  - 覆盖只读环境下的行为

这与文档中要求的「路径 + 操作 + 职责」高度一致,并在最上层锁定了架构决策。

3. 任务与步骤示意

以「为只读环境行为写测试」为例:

markdown 复制代码
## Task 1:为只读环境行为添加测试

Files:
- Modify: tests/using-git-worktrees/compat.spec.ts:1-120

- [ ] 步骤 1:为只读环境添加失败测试
  - 在 `compat.spec.ts` 中新增 `it('disables worktree skills in read-only FS', ...)` 测试用例,断言在只读环境下 skill 返回特定错误消息。
- [ ] 步骤 2:运行测试确认失败
  - 运行:`npm test -- using-git-worktrees/compat.spec.ts`
  - 预期:新用例失败,错误消息包含 `read-only filesystem` 字样。
- [ ] 步骤 3:提交
  - 提交信息:`test(worktrees): add failing spec for read-only FS`

注意这里没有任何 TODO、TBD,也没有「写一个合适的错误处理」这种模糊话术。 执行者只需要按指示写出完整的测试代码,就可以进入实现阶段。


十四、把方法论落地到你的团队

如果你想把 writing-plans 的思路引入自己的团队(不管有没有用 Superpowers),可以从这几步开始:

  1. 统一文档头部:先约定一套类似的头部字段(目标、架构、技术栈、规范链接),让每一份计划都「长得像计划」。
  2. 强制文件映射:规定所有计划必须包含「文件结构映射」,并在 Code Review 里重点看这一节是否合理。
  3. 逐步压缩任务粒度:从「一个任务一天」慢慢过渡到「一个步骤 10--20 分钟」,再向 2--5 分钟靠拢。
  4. 落实禁用占位符:在文档模板和 Review Checklist 里写上「禁止 TODO/TBD 等模糊指令」,鼓励写「实际要改的代码」。
  5. 引入自审清单:让计划作者在提交前自查规范覆盖率、占位符和类型一致性,减少 Review 轮次里的「低级问题」。

当你把这些实践坚持一段时间后,你会发现团队在几个方面的明显变化:

  • 新同事 onboarding 的速度会显著提升
  • 跨时区协作时,不再高度依赖临场口头沟通
  • AI 工具可以更可靠地参与到真实业务代码的开发中,而不是停留在玩票级别

十五、小结:计划是连接人和 Agent 的「共同语言」

writing-plans 所提出的一整套约束------零上下文假设、标准化头部、文件结构映射、2--5 分钟粒度、禁用占位符、自审与审查------看似给开发流程增加了不少「形式感」,但它换来的,是 在高度异质的执行主体之间(人类开发者与各类 Agent)建立一种共同的可执行语言

在 AI 广泛参与开发的未来,谁能先建立起一套严谨的「计划语言」,谁就能更好地把智能能力转化为可控、可审计、可迭代的生产力。writing-plans 给出的,正是这样一份可操作又经过实战打磨的范本,值得每一个关心工程效能与 AI 协作的人认真研究和实践。

相关推荐
阿木木AEcru2 小时前
DeepSeek 崩了 13 小时,不是故障,是 V4 在换引擎
人工智能
阿聪谈架构2 小时前
第07章(下):LangGraph 工作流进阶 —— 检查点、人工介入与多 Agent 协作
人工智能·后端
小小工匠2 小时前
Superpowers - 08 在 AI 时代重写「需求评审会」:深入解读 Superpowers 的头脑风暴与设计规范机制
人工智能·skills·superpowers
橘子编程2 小时前
Hermes Agent 完整使用指南
人工智能
yuhulkjv3352 小时前
AI导出的Excel公式失效
人工智能·ai·chatgpt·excel·豆包·deepseek·ai导出鸭
七夜zippoe2 小时前
OpenClaw 子代理(Subagent)机制详解
大数据·人工智能·subagent·openclaw·子代理
薛定e的猫咪2 小时前
【Neural Networks 2025】TDAG 论文解读:多智能体不是重点,动态任务分解才是关键
人工智能·深度学习·计算机视觉
wayz112 小时前
Day 1 编程实战:机器学习基础与评估指标
人工智能·机器学习
财经三剑客2 小时前
长安汽车3月销量超27万辆 海外及新能源环比大幅增长
大数据·人工智能·汽车