> ## Content Index
> Fetch the complete content index at: https://lucent.blog/llms.txt
> Use this file to discover other available public pages before exploring further.

# 从标准开发流程到 AI 编程工作流：Spec-Kit、OpenSpec、Superpowers 与 Comet
- URL: https://lucent.blog/9yd9agc8/
- Published: 2026-07-16T09:04:10.000Z
- Updated: 2026-08-21T00:49:57.000Z
- Author: Lucent
- Tags: AI

## AI 会写代码，然后呢？

AI 很会写代码了，我们为什么还要讨论开发流程？

先看一个很小的需求。产品说，给登录页加一个“记住我”。我们把这句话交给 AI，它很快会加上复选框，写入本地存储，可能顺手补一个测试。页面能点，刷新以后也还在，看起来做完了。

但接着问几句，事情就没那么简单了。记住的是账号，还是登录状态？有效期多长？公共电脑上怎么办？服务端的刷新令牌要不要调整？退出登录之后，客户端留下什么？原来的安全策略里有没有禁止项？

这些问题都不是代码语法问题。它们分散在需求、安全设计、接口约定、测试和验收里。AI 可以在几分钟内生成一个正确的复选框，却也可能在几分钟内把一个没想清楚的需求扩散到整个认证链路。

所以今天不急着比较工具。我想先把软件开发里那些听着有点老派的概念重新过一遍。等这些概念对上了，再看 Spec-Kit、OpenSpec、Superpowers，以及后面的 Comet，很多差异会变得很直白。

## 我们说的“标准开发流程”是什么

先说明一下，这里没有一张全行业统一的流程图。瀑布、敏捷、持续交付，各自的节奏不同，团队使用的阶段名称也不一样。

但无论怎么迭代，有几类问题绕不过去。

一开始要弄清楚为什么做、给谁做、做到什么程度。接着决定系统怎么改，把工作拆开，编码、测试、评审。交付以后，还要让文档、代码和实际行为保持一致。

流程可以循环，也可以并行。这里说的“标准”，只是在提醒我们：这些问题不会凭空消失。

### 需求、规格、设计，不是一份文档的三个标题

Requirement 通常翻译成需求。它描述用户或业务想解决什么问题。比如“用户希望在自己的设备上减少重复登录”。这句话表达了意图，但还不够拿来验收。

Spec，也就是规格，会把边界写清楚。哪些设备可以记住？默认是否勾选？保存多长时间？退出登录之后怎样处理？什么结果算成功，什么结果必须拒绝？规格的作用，是让产品、开发、测试和 AI 对“我们到底要做什么”有同一个答案。

Design 是技术设计。它回答怎么实现：令牌存在哪里，客户端和服务端怎样配合，旧会话如何兼容，出了问题怎么回滚。它要记录真正影响实现的选择。

Plan 和 Task 又是下一层。计划安排改动顺序、依赖和验证方式；任务要具体到可以执行。任务列表很长不代表计划好，每一项能追溯到规格或设计才有用。

这些产物是团队的外部记忆。换一个开发者或 AI 会话，也不必只靠聊天记录猜当时为什么这么做。

### 实现完成和工作完成是两回事

进入编码阶段以后，常见的工程动作包括分支隔离、代码实现、自动化测试和 Code Review。规模大一些的改动还会有集成测试、安全检查、性能验证和用户验收。

这里需要区分 testing 和 verification。测试在问代码行为是否符合预期。验证的范围更大，它还会检查规格覆盖、文档同步、构建结果和评审问题。

验证通过以后才进入发布。发布要考虑部署、数据迁移、监控和回滚，线上反馈又会进入下一轮需求。

最后还有归档。它要把新规则合并回长期规格，保留决策和验证证据，再把临时工作区收好。否则代码已经变了，规范还停在过去。

这是一个相对完整的开发闭环。错别字和认证协议，显然不该走同一套流程。流程应该和风险匹配。

## AI 进入流程以后，多了哪些概念

第一个概念是 Spec-Driven Development，简称 SDD，也就是规格驱动开发。它把规格放到开发链路前面，让计划、任务和实现都从规格派生。

有些项目会说“规格可执行”。它并不是把 Markdown 当代码编译。规格成为 AI 的主要输入，代理据此生成计划、拆任务、实现并检查一致性。中间仍然有模型判断，也需要人审核。

第二个概念是 TDD，测试驱动开发。节奏是 Red、Green、Refactor：先写失败测试，再写最少的实现让它通过，然后整理代码。AI 很容易先生成实现，再补一组刚好能证明自己正确的测试；先看到失败，才能确认测试真的约束了行为。

还有 Greenfield 和 Brownfield。前者是从零开始，后者是在已有代码库上改造。旧项目有历史接口、隐含约定和不能随便动的依赖。AI 在新项目里容易跑得很快，在旧项目里容易跑错方向。

再说 Skill 和 Hook。Skill 是给代理使用的一套工作方法，写明何时触发、按什么步骤做、怎样才算完成。Hook 是执行点上的拦截器，可以检查或阻止动作。两者的约束力度不同。

任务变长以后，还会遇到状态机和 HITL。状态机记录当前阶段并限制下一步。HITL 是 Human in the Loop，也就是在需要判断或授权时让人参与。人不必盯住每一行代码，但需求边界、技术取舍和失败处理，最好别让代理偷偷决定。

## Spec-Kit：把规格放到开发链路中心

Spec-Kit 是 GitHub 开源的 Spec-Driven Development 工具包。它的常见流程从 constitution 开始。constitution 可以理解成项目宪章，里面放长期有效的工程原则，比如测试标准、安全要求、技术边界和用户体验约束。

接下来是 specify，把需求写成规格；clarify，找出模糊和冲突；plan，形成技术方案；tasks，把方案拆成可执行项。实现前还可以用 analyze 检查规格、计划和任务是否对得上，最后由 implement 执行。

代价也很明显。流程和 Markdown 产物都不少，小改动全套照跑会显得重。现在的 Spec-Kit 也支持 Brownfield 演进，所以它并非只能从零开发；它更适合规格需要成为主要事实来源的项目。

回到“记住我”这个需求。用 Spec-Kit，我们会先在规格里写清用户场景和验收条件，再决定令牌方案，生成任务，检查任务有没有遗漏安全约束。它关注的是整条链路有没有从明确的意图出发。

## OpenSpec：把每次改动单独管起来

OpenSpec 也做规格驱动开发，但姿态更轻。它把一次功能开发看作一个 change。change 目录里通常有 proposal、specs、design 和 tasks。proposal 说明为什么改，specs 记录新增或修改的要求，design 记录技术选择，tasks 用来推进实现。

实际使用时，可以用 `/opsx:propose` 创建 change，用 `/opsx:apply` 执行，完成后用 `/opsx:archive` 归档。归档时，增量规格会合并到长期规格里。它更像在代码库旁边放了一套变更账本。

这套结构很适合 Brownfield。旧系统很少有机会一次性补齐全部规格，但我们可以从今天的改动开始记。每做一个功能，就补上相关的 delta spec。时间长了，长期规格会逐渐接近系统真实行为。

OpenSpec 允许随时调整产物，没有很硬的阶段顺序。它适合快速迭代，但文档存在不等于执行纪律自然存在。代理是否先设计、坚持测试，仍要靠工作方法和团队约束。

“记住我”放进 OpenSpec，会成为一个独立 change。我们能清楚看到它改了哪些认证规则，相关任务做到哪里，归档后又怎样改变长期规格。它最在意的是这次变更有没有留下完整、可合并的记录。

## Superpowers：直接约束代理怎么工作

Superpowers 把注意力放在另一处。它用一组可以组合的开发 Skills 约束代理执行，长期规格库并不是中心。

准备做功能时，brainstorming 要求代理先理解需求、比较方案并让用户确认。writing-plans 把实现拆细，test-driven-development 要求先写失败测试。碰到异常先系统查根因，做完以后还要验证和评审，不能只凭一句“已经修复”收工。

它约束的是代理的工作习惯。需求相对明确，但团队担心 AI 跳步骤、乱猜或自证正确时，这类方法很直接。

不过，Superpowers 产生的设计文档和计划主要服务于执行。它并没有把产品规格的长期演进当成首要问题。跨越多个 change 以后，哪些行为是当前正式规则，哪些只是某次实现的设计记录，仍然需要另一套规格管理方式。

同一个“记住我”需求交给 Superpowers，代理会先追问边界，比较存储方案，得到确认后列出计划；编码时先写测试，完成后再跑验证和审查。它最关心的是代理有没有用可靠的方法把事情做完。

讲到这里，三者的关系大概清楚了。Spec-Kit 试图建立完整的规格驱动链路；OpenSpec 围绕 change 管理规格的增量变化；Superpowers 把工程方法写成代理必须遵循的 Skills。它们有重叠，却不是同一层的替代品。

## 工具可以组合，组合以后又有新问题

一个自然想法是，把 OpenSpec 和 Superpowers 一起用。OpenSpec 负责记录需求和变更，Superpowers 负责设计、计划、测试和评审。方向没问题，实际跑长任务时仍会遇到麻烦。

比如 OpenSpec 已经生成 proposal 和 delta spec，切到设计阶段以后，代理有没有真的加载 brainstorming Skill？设计改了规格，交接上下文有没有更新？会话中断一天后，新代理怎么知道停在哪里？代理说验证通过时，有没有报告和分支处理记录？

靠提示词提醒当然能做。但任务一长，提醒会散落在聊天记录和文档里。人还是要记住当前阶段、下一条命令和必须同步的文件，只是从盯代码变成了盯流程。

Comet 就从这里出现了。

## Comet：给长程任务加一个可恢复的运行框架

我不太愿意把 Comet 叫作第四个规范工具。就目前这个项目的实现来看，它更接近 Agent Skill Harness，也就是承载和约束 Skills 运行的框架。

Comet 的经典工作流把开发分成五个阶段。

Open 阶段使用 OpenSpec 建立 proposal、design、tasks 和 delta spec。Design 阶段接入 Superpowers 的需求细化与深度设计，并生成交接材料。Build 阶段形成实现计划，再选择子代理执行、分批执行或直接构建，也可以要求 TDD。Verify 阶段运行测试、检查规格覆盖、处理评审和分支状态，留下验证报告。Archive 阶段把 delta spec 合并回长期规格，再归档 change。

五个阶段本身不新鲜。Comet 真正补上的，是阶段之间的运行状态。

每个 change 有自己的 `.comet.yaml`，记录阶段、构建方式、验证结果和归档状态。引擎另存 run state，状态变化写入追加式事件日志。Guard 检查能否推进，handoff 记录交接内容，验证阶段必须拿出报告。

第二天重新打开项目，`/comet` 会先看活跃 change 和当前状态，再决定继续设计、构建、验证还是归档。恢复依据来自代码库里的产物和状态，不必重讲整段聊天。

Comet 没有要求所有事情都跑完整流程。新增认证能力可以走 full，范围明确的中等改动走 tweak，修复已有行为的 bug 走 hotfix。轻量路径碰到跨模块、新 capability 或 schema 变化时，会停下来让人决定是否升级。

再看“记住我”。如果它只是修复一个已经定义好的过期时间错误，hotfix 足够。要是产品准备新增可信设备体系，涉及新接口、安全策略和多端行为，那就应该走 full。工具不替我们判断风险，但它要求我们把判断说出来，并把选择记住。

`/comet-any` 把工作流想法整理成可评审、验证和分发的 Skill Bundle；`comet eval` 用 Rubric、Pass@k 和 Pass^k 等指标观察 Skill 重复运行时是否稳定。

Skill 很容易让人产生一种错觉：提示词看着完整，应该就有效。真正运行五次，可能有四次成功，也可能每次漏掉不同步骤。留下轨迹和评估结果以后，改 Skill 才不只是凭感觉调句子。

当然，Comet 也会增加产物和流程成本。一个人改一行静态文案，直接改、跑检查、提交，通常更省事。它更适合会跨会话、跨阶段，或者需要多人和多个代理接力的任务。项目风险不高，却把所有检查都开到最重，也是一种浪费。

## 怎么开始：我建议直接使用 Comet

讲到这里，我给一个明确建议：如果你准备在团队里建立一套规范的 AI 编程流程，可以直接从 Comet 开始。不用先在 Spec-Kit、OpenSpec、Superpowers 之间反复纠结，也不用自己手工串联 OpenSpec 和 Superpowers。

原因很实际。Comet 已经把需求、设计、构建、验证和归档接成了一条可恢复的工作流，还会根据任务规模选择 full、tweak 或 hotfix。团队面对的是同一个入口，流程状态和验证证据也留在项目里。换人、换会话，或者任务做到一半停下来，都比较容易接着走。

上手只需要两步：先用 `npm install -g @rpamis/comet` 安装，再到项目目录运行 `comet init`。之后做功能、改需求或者修 bug，直接调用 `/comet`。它会检查当前有没有活跃 change、任务停在哪个阶段，然后创建或恢复合适的工作流。

我建议把 `/comet` 作为正式开发任务的默认入口。一行文案、明确的配置修改，直接改完跑检查就可以；只要需求开始涉及设计取舍、多个文件或后续验证，就交给 Comet 路由。人只需要在需求边界、方案选择和失败处理这些地方做决定。

## 结束

回到开头那个“记住我”。AI 把复选框写出来，只能说明实现开始了。需求边界有没有确认，认证设计有没有调整，测试是否覆盖退出和过期，变更是否进入长期规格，这些都有答案，工作才算结束。

下次把需求交给 AI 之前，可以先问四件事：这次到底改变什么行为？哪些条件算验收通过？我们准备拿什么证据验证？完成以后，哪个文件记录系统的新事实？

如果这些问题没人回答，AI 写得越快，返工可能来得越早。