
🚩 2026 年「术哥无界」系列实战文档 X 篇原创计划 第 86 篇,AI 编程最佳实战「2026」系列第 18 篇
大家好,欢迎来到 术哥无界 | ShugeX | 运维有术。
我是术哥,一名专注于 AI 编程、AI 智能体、Agent Skills、MCP、云原生、AIOps、Milvus 向量数据库的技术实践者与开源布道者!
Talk is cheap, let's explore。无界探索,有术而行。

图 1:Superpowers + OpenSpec 协同开发实战手册全景概览
假设你正在维护一个 3 年以上的老项目,代码是纯手工写的,没有测试用例,前后端耦合在一起,注释少得可怜。老板说要加一个限时抢购模块,上线时间很紧。
你想到用 AI 辅助编码来提速,但真动手了才发现问题一堆:AI 生成的代码风格和项目格格不入,改着改着把老功能搞崩了,前端改完接口后端还没同步……还不如自己写来得快。
CSDN 上有个高赞评论说得很直白:Superpowers 值得研究的地方不是更强,而是更稳。另一个工具 OpenSpec 的核心理念更直接 - 在编写任何代码之前,就对要做什么达成一致。
这两句话放在一起看,恰好点出了老旧项目引入 AI 编/程的核心矛盾:需求理解不准确,执行过程不可控。
这篇文章要做的,就是用 Superpowers 和 OpenSpec 这两款工具,设计一套专门面向老旧项目的 AI 增强开发工作流。3 人团队,4 个阶段,从需求定义到代码落地,完整跑通。
先说清楚这两款工具各自干什么,再说怎么配合。

图 2:OpenSpec(需求层)与 Superpowers(执行层)双层分工架构
OpenSpec - GitHub 上 40.9k Star,定位是规范驱动开发(SDD)。它的核心思路是把需求写成机器可理解的规范文件,让 AI 和人先在文字层面达成共识,再动手写代码。
它的双文件夹模型很清晰:
openspec/specs/ - 当前系统的规范,项目的事实来源openspec/changes/ - 每次变更的提案、设计文档、任务清单每份变更包含三个文件:proposal.md(为什么要做)、design.md(技术方案)、tasks.md(实施清单)。别小看这三个文件,据 CSDN 上的对比测试,使用 OpenSpec 后相同需求下 Token 消耗降低 30%-50%,返工率下降 60% 以上。
Superpowers - GitHub 上 158k Star,定位是AI 编码代理的完整工作方法论。它管的是 AI 写代码的过程:强制 TDD、子代理隔离、两阶段代码审查。
7 步强制流程:brainstorming → git worktree 隔离 → 拆 2-5 分钟小任务 → 子代理执行 → TDD 循环 → 代码审查 → 分支收尾。每一步都不可跳过。
一句话区分:OpenSpec 管需求层,Superpowers 管执行层。一个解决 AI 理解需求不准确的问题,一个解决 AI 写代码过程不可控的问题。
引入这两款工具后,3 人团队的职责会发生变化。不是简单地用 AI 替代人,而是人和 AI 的分工边界变了。
传统模式下架构师要画架构图、写技术方案、做 Code Review。引入工具后,架构师的核心职责变成了定义和消费规范:
/opsx:propose 命令生成变更提案,把业务需求翻译成 AI 可理解的规范design.md 中的技术决策,确保不踩旧系统的坑/opsx:verify 命令验证实现是否偏离设计架构师不再是画完图就交给开发的角色,而是整个规范链条的起点和终点。
后端不再需要从零写业务骨架。工作重心转移到:
tasks.md,用 Superpowers 的 brainstorming 技能澄清每个任务的边界前端的变化和后端类似,但多了一个关键职责:
design.md 中的接口规范,提前做页面开发三个角色之间不再靠口头沟通对齐,而是通过 OpenSpec 的规范文件形成可审查、可追溯的协作链条。

图 3:四阶段闭环工作流全景流程
这是整套方案的核心。每个阶段都有明确的输入、输出和工具支持。
老项目的关键问题不是代码烂,而是没人能完整说清楚它到底怎么运作的。AI 在这里能发挥巨大作用。
操作步骤:
# 安装 OpenSpec
npm install -g @fission-ai/openspec@latest
# 在项目目录初始化
openspec init/opsx:explore 命令探索现有代码结构。这个命令的设计初衷就是开发前梳理思路,特别适合摸底老项目。openspec/specs/ 目录。这一步的产出物是现有系统的规范快照。产出:openspec/specs/ 目录下的现有系统规范,包括数据模型、接口列表、核心业务流程。
关键提醒:这一步不要急于写代码。Phodal 在腾讯云的技术博客里提到,AI 辅助老旧系统改造的前两步永远是理解现有业务和设计与拆分模块。跳过分析直接写代码,后续返工的概率非常高。
有了旧系统的规范快照,就可以开始定义新需求了。
操作步骤:
/opsx:propose 命令,一步生成变更提案。OpenSpec 会自动创建包含 proposal.md、design.md、tasks.md 的变更目录。design.md 中的技术方案,确保:tasks.md 中的任务拆分是否合理。按照 Superpowers 的要求,每个任务应该能在 2-5 分钟内完成。如果任务粒度太大,AI 执行时容易跑偏。产出:openspec/changes/ 目录下完整的变更制品。
OpenSpec 的增量规范(Delta Spec)机制在这里发挥了很大作用。它用 ADDED/MODIFIED/REMOVED 三种标记描述每个变更对现有规范的影响。老旧项目怕的就是改了 A 结果 B 坏了,Delta Spec 把影响面直接摆在台面上。
这个阶段是 Superpowers 的主场。
操作步骤:
# 在 Claude Code 中安装
/plugin install superpowers@claude-plugins-officialtasks.md 作为 Superpowers 的输入,启动 brainstorming 技能精炼每个任务。步骤 | 做什么 | 谁负责 |
|---|---|---|
brainstorming | 苏格拉底式提问,澄清任务细节 | AI + 架构师 |
git worktree | 创建隔离分支,保护主分支 | AI 自动 |
writing-plans | 拆解为 2-5 分钟可执行小任务 | AI 自动 |
subagent 执行 | 每个任务派独立子代理 | AI 自动 |
TDD 循环 | RED → GREEN → REFACTOR | AI 自动 |
代码审查 | 两阶段审查:规范合规 + 代码质量 | AI + 人 |
分支收尾 | 验证测试、合并决策 | AI + 人 |
产出:经过 TDD 和代码审查的业务代码,附带测试用例。
当前后端都在并行开发时,接口变更的同步是老大难问题。
操作步骤:
/opsx:sync 命令,将变更的增量规格合并到主规格中。/opsx:archive 归档,保持规范目录的整洁。产出:同步后的系统规范,归档的变更记录。
四个阶段形成闭环:分析旧系统 → 定义新需求 → 生成代码 → 同步变更。每一轮迭代都会更新 openspec/specs/ 中的系统规范,为下一轮开发提供更准确的起点。
用一个具体的需求走一遍完整流程。场景是这样的:一个 3 年的旧商城系统,技术栈是 Spring Boot + jQuery + MySQL,没有测试用例,代码注释率不到 5%。需求是新增限时抢购模块。
先在项目根目录执行初始化:
openspec init然后用 /opsx:explore 探索现有代码结构。重点关注三个模块:商品服务、订单服务、库存服务。AI 分析后生成规范快照,放到 openspec/specs/ 目录。
架构师审查后补充了几条 AI 没发现的隐含规则:
这些信息会被写入规范,后续所有开发活动都以这份规范为基准。
架构师执行 /opsx:propose,描述需求背景:为商城系统增加限时抢购功能,支持活动创建、库存预扣、订单快速确认。
OpenSpec 自动生成三个文件。以 design.md 为例,关键的技术决策:
tasks.md 拆分后的部分任务:
任务 | 预计时间 | 负责人 |
|---|---|---|
创建 | 3 分钟 | 后端 |
实现 Redis 库存预扣接口 | 5 分钟 | 后端 |
抢购订单创建 API | 5 分钟 | 后端 |
抢购活动列表页面 | 4 分钟 | 前端 |
倒计时组件 | 3 分钟 | 前端 |
库存实时显示组件 | 3 分钟 | 前端 |
Delta Spec 标记了变更影响:ADDED 抢购相关接口和数据模型,MODIFIED 商品查询接口(增加抢购价格字段)。
后端开发拿到 tasks.md 后,启动 Superpowers 工作流。
以实现 Redis 库存预扣接口这个任务为例,Superpowers 的执行过程:
feature/flash-sale-stock。# 拆解后的子任务清单(部分)
1. 创建 RedisStockService 类
2. 实现 deductStock() 方法(Lua 脚本保证原子性)
3. 编写 deductStock() 的测试用例
4. 实现 stockRevert() 回滚方法(订单取消时调用)
5. 编写回滚方法的测试用例@Autowired 注入,但旧项目用的是构造器注入。人工标记后修正。前端同步进行,消费 design.md 中的接口规范,用 Superpowers 并行开发抢购页面和倒计时组件。
前后端联调时发现一个差异:后端的抢购接口返回的时间戳是秒级,前端期望的是毫秒级。
后端在 OpenSpec 中更新了接口规范的 Delta Spec:
## MODIFIED: flash-sale-api-spec
- `startTime` 和 `endTime` 字段单位从秒改为毫秒
- 原因:前端倒计时组件需要毫秒精度前端执行 /opsx:sync 拉取更新后的规范,确认无需改动代码(前端本身用的就是毫秒)。变更完成后 /opsx:archive 归档。
整个流程走下来,从需求定义到联调完成,3 人团队用 AI 辅助完成了原本可能需要一周的工作。关键不是 AI 写了多少代码,而是规范先行让所有人始终在同一页面上。
你在项目中用过类似的 AI 辅助方案吗?有没有踩过 AI 生成代码风格和老项目冲突的坑?欢迎在评论区聊聊。

图 4:老旧项目引入 AI 的 4 大常见问题与解决方案速查卡
理论和实战都有了,但真正落地的时候,踩坑是不可避免的。以下是几个高频问题。
AI 生成的代码遵循现代编码规范,但老旧项目可能有自己的约定。比如旧项目用 var 声明变量,AI 偏好用 let/const;旧项目的异常处理是返回错误码,AI 默认抛异常。
解决建议:在 openspec/specs/ 中增加一份代码风格规范,明确命名规则、异常处理方式、注释风格等。Superpowers 的 brainstorming 技能在开始每个任务前会读取项目规范,自动对齐风格。
别嫌麻烦,这份规范写一次,后续所有 AI 生成的代码都会参考它。
Spring Boot 1.x 的项目,AI 生成的代码可能默认用了 2.x 的 API。jQuery 1.x 和 3.x 的方法差异也很大。
解决建议:在 OpenSpec 的系统规范中明确标注依赖版本。更稳妥的做法是,在 Superpowers 的 brainstorming 阶段主动告知 AI 当前使用的框架版本号。
另外一个经验:让 AI 先读旧代码再写新代码。Superpowers 的子代理每次处理新任务时,上下文是全新的。但它会读取项目规范和已有的代码文件,所以确保规范中有版本信息至关重要。
OpenSpec 的三个文件(proposal → design → tasks)很容易让人写出几十页的设计文档,尤其是对老旧项目来说,恨不得把所有历史遗留问题都在这一轮 Spec 里解决。
解决建议:OpenSpec 的核心哲学之一就是 iterative not waterfall。每个变更只解决一个明确的问题。限时抢购就是限时抢购,不要在同一个变更里顺便重构订单模块。
官方也强调 easy not complex - 如果一个变更的 tasks.md 超过 10 个任务,考虑拆成多个变更。
Superpowers 强制 TDD,但老旧项目可能连测试框架都没配好。
解决建议:先别急着给老代码补测试。两个思路:
这对应了业界常说的绞杀者模式(Strangler Fig Pattern)- 新代码用新规范,老代码逐步迁移,不要试图一次搞定。
两款工具的安装互不冲突,可以同时使用:
# 第一步:安装 OpenSpec
npm install -g @fission-ai/openspec@latest
# 第二步:在项目目录初始化
cd your-project && openspec init
# 第三步:安装 Superpowers(以 Claude Code 为例)
/plugin install superpowers@claude-plugins-officialSuperpowers 也支持 Cursor(/add-plugin superpowers)、Codex CLI、OpenCode 等平台。OpenSpec 支持 25+ AI 编码助手,包括 Claude Code、Cursor、Windsurf 等。
两款工具都是 MIT 开源协议,免费使用。
相关资源
Superpowers 官方仓库:https://github.com/obra/superpowers
OpenSpec 官方仓库:https://github.com/Fission-AI/OpenSpec
OpenSpec 官网:https://openspec.dev
Superpowers 技能库(社区):https://github.com/obra/superpowers-skills
老旧项目接入 AI 编程,核心矛盾就两个:AI 理解需求不准确,AI 写代码过程不可控。
OpenSpec 解决前者 - 用结构化的规范文件让 AI 和人先对齐需求,再动手。Superpowers 解决后者 - 用强制性的工作流(TDD、子代理、代码审查)保证代码质量。
两者的分工边界很清晰:OpenSpec 管需求层,Superpowers 管执行层。组合起来就是一套完整的 AI 增强开发工作流。
说到底,老旧项目反而是 AI 编程尤其需要规范约束的场景。新项目写坏了可以重来,老项目写坏了影响线上业务。与其怕 AI 翻车而不用,不如用好工具给它套上缰绳。
建议收藏这篇,下次接到老项目新需求时翻出来对照着走一遍。如果你的同事也在为老旧项目引入 AI 发愁,转发给他看看。
好啦,谢谢你观看我的文章,如果喜欢可以点赞转发给需要的朋友,我们下一期再见!敬请期待!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。