从“AI乱写代码”到“AI规范施工”,我的工程化实践与反思
前言:Vibe Coding的困境
2026年,Vibe Coding成为开发者社区的热词——用自然语言描述需求,让AI生成代码,享受“意念编程”的快感。然而,当我把一个金融新闻分析Agent的需求丢给AI时,理想很丰满,现实很骨感:
- AI遇到模糊需求直接猜,而不是反问澄清
- 100行能解决的问题,AI写出500行企业级抽象
- 修一个bug,顺手reformat了整个文件
- 口头说“完成了”,但根本没验证
这不是模型能力的问题,而是AI行为纪律的问题。就像一个有天赋但散漫的程序员,需要一套“紧箍咒”来规范行为。
我找到了三套方法论:Karpathy Skills(行为纪律)、Superpowers(开发流程)、OpenSpec(规范追溯)。三者组合,让Vibe Coding从“野路子”变成“正规军”。
一、Karpathy Skills:70行Markdown的紧箍咒
背景
前特斯拉AI总监、OpenAI创始成员Andrej Karpathy在X上发了一篇长文,吐槽AI编程Agent的三大“原罪”:
“模型会代你做错误假设,然后不假思索地执行。”
“它们真的很喜欢把代码搞复杂,堆砌抽象概念。”
“它们有时仍会改动或删除自己理解不足的代码和注释。”
开发者Forrest Chang把这些观察翻译成模型能直接执行的规则,形成了Karpathy Skills——一个不到70行的Markdown文件,冲上GitHub趋势第一,收获60k+ Stars。
四条核心原则
原则1:编码前思考(Think Before Coding)
遇到模糊需求,必须先问、不能猜。强制AI输出推理过程,暴露假设和权衡。
效果:AI不再擅自做决定,而是输出“【理解】【假设】【边界】【待确认】”四个模块,等待用户确认后再动手。
原则2:简洁优先(Simplicity First)
用最少的代码解决问题。不加未请求的功能、不为一次性代码搞抽象。
效果:单个函数不超过50行,无抽象类,无“未来可能用到”的代码。
原则3:精准修改(Surgical Changes)
只碰必须碰的地方。不允许顺手reformat、不重构没坏的东西。
效果:一次变更只改≤3个文件,代码审查的diff清晰可读。
原则4:目标驱动执行(Goal-Driven Execution)
把“修复Bug”改成“先写能复现Bug的测试,再让它通过”。
效果:AI必须提供测试通过的证据,不能口头说“完成了”。
实现原理
Karpathy Skills本质上是一个行为约束层,通过在项目根目录放置CLAUDE.md文件,让AI在每次对话前读取这些规则。它不依赖任何框架,只是一个Markdown文件,但效果立竿见影——就像给AI戴上了紧箍咒。
二、Superpowers:14个Skills的开发流程框架
背景
如果说Karpathy解决的是“AI怎么做”的行为纪律,Superpowers解决的是“AI怎么推进”的流程管理。Superpowers由obra维护,提供14个核心skill,覆盖从头脑风暴到代码审查的完整开发流程。
核心Skills
| Skill | 作用 |
|---|---|
brainstorming | 探索技术方案,对比优缺点 |
writing-plans | 将需求拆解为可执行的任务清单 |
test-driven-development | 强制先写测试,再写代码 |
requesting-code-review | 阶段性审查,确保质量 |
verification-before-completion | 验证真正完成,不口头声称 |
finishing-a-development-branch | 规范收尾,合并或PR |
实现原理
Superpowers采用技能库模式:每个skill是一个SKILL.md文件,定义该技能的角色、任务和步骤。AI根据用户指令,按需调用相应skill。
与Karpathy不同,Superpowers是主动调用的——用户需要明确触发某个skill(如@superpowers/test-driven-development),而Karpathy是被动生效的——始终在后台约束AI行为。
作用
Superpowers解决的是流程门禁问题:
- 不允许跳过设计直接写代码
- 不允许不写测试就声称完成
- 不允许没有审查就合并代码
三、OpenSpec:轻量级规范驱动开发
背景
OpenSpec是开源的规范驱动开发工具,定位是“轻量级变更管理”。与Spec-Kit的重型宪法不同,OpenSpec采用变更即代码的理念,每个功能变更都有完整的提案、规范、设计、任务清单。
核心命令
| 命令 | 作用 |
|---|---|
/opsx:new | 创建新变更提案 |
/opsx:explore | 纯思考模式,探索方案、起草规范 |
/opsx:apply | 按任务清单实施 |
/opsx:archive | 归档完成的变更 |
实现原理
OpenSpec在项目根目录创建openspec/文件夹:
text
openspec/
├── changes/ # 活跃变更
│ ├── <change-name>/
│ │ ├── proposal.md # 为什么做
│ │ ├── tasks.md # 做什么(可勾选)
│ │ ├── design.md # 怎么做(技术决策)
│ │ └── specs/ # 规范增量
│ └── archive/ # 已归档变更
└── specs/ # 当前真相(所有已实现功能的最终规范)
每次变更归档时,changes/中的spec增量会合并到specs/,保证specs/始终是当前系统的唯一真相。
作用
OpenSpec解决的是可追溯性问题:
- 每个功能变更都有proposal、tasks、design
- 团队可以查看历史变更,理解“为什么这么做”
- 合规审计可以直接用
openspec/changes/archive/作为证据
四、三件套组合:从需求到代码的完整工作流
为什么需要三者组合?
| 规范 | 解决什么问题 | 触发方式 |
|---|---|---|
| Karpathy | AI行为纪律(不瞎猜、不乱写) | 被动生效(始终在后台) |
| Superpowers | 开发流程门禁(先设计、再TDD、再审查) | 主动调用(按需触发) |
| OpenSpec | 变更追溯(proposal→tasks→archive) | 命令驱动(/opsx:xxx) |
三者各管一摊、互不冲突,形成完整闭环:
text
Karpathy约束行为 → Superpowers规范流程 → OpenSpec记录痕迹
完整工作流示例
以“实现股票新闻检索功能”为例:
| 步骤 | 操作 | 涉及的规范 | 产出 |
|---|---|---|---|
| 1 | 输入模糊需求 | - | “帮我做个新闻检索” |
| 2 | Karpathy自动反问 | Karpathy原则1 | 【理解】【假设】【待确认】 |
| 3 | 用户回答澄清 | - | 明确的需求 |
| 4 | 调用brainstorming | Superpowers | 3个技术方案对比 |
| 5 | 调用/opsx:new | OpenSpec | proposal + tasks + specs |
| 6 | 调用/opsx:apply | OpenSpec | 开始实施 |
| 7 | 每个任务自动执行:思考→TDD→实现→审查 | Karpathy+Superpowers | 高质量代码 |
| 8 | 调用/opsx:archive | OpenSpec | 变更归档,spec合并 |
关键创新:改造OpenSpec Workflow
为了让这三个规范在/opsx:apply执行时自动生效,我们改造了OpenSpec的workflow文件。
改造后的opsx-apply.md包含5个强制阶段:
text
Phase 0: 任务宣布
Phase 1: Karpathy - 编码前思考(强制输出理解、假设、边界、待确认)
Phase 2: Superpowers TDD - 先写失败的测试(RED)
Phase 3: Superpowers - 最简实现(GREEN,≤50行)
Phase 4: Superpowers - 代码审查(检查Karpathy四条原则)
Phase 5: OpenSpec - 标记任务完成
在Antigravity中的配置
Antigravity支持.agent/workflows/目录,将改造后的opsx-apply.md放入即可自动注册为可调用的Workflow。
同时需要创建软链接,将全局skills链接到项目:
bash
ln -s ~/.gemini/antigravity/skills/karpathy-skills .agent/skills/
ln -s ~/.gemini/antigravity/skills/superpowers .agent/skills/
并在.claude/rules.md中固化Karpathy原则,确保始终生效。
五、带来的效果
1. AI行为可预测
以前:AI遇到模糊需求直接猜,经常跑偏。
现在:AI主动输出“【理解】【假设】【边界】【待确认】”,等用户确认后才动手。
2. 代码质量可控
以前:100行能解决的问题,AI写出500行抽象类。
现在:强制≤50行/函数,无抽象类,代码简洁可读。
3. 变更历史可追溯
以前:改了什么都记不清,3个月后不知道为什么这么设计。
现在:每个功能都有proposal、tasks、design,archive目录是完整的历史档案。
4. 测试覆盖率有保障
以前:AI口头说“完成了”,但根本没跑测试。
现在:TDD强制先写测试,验证通过后才能标记完成。
5. Code Review自动化
以前:人工审查AI代码,效率低。
现在:AI自检Karpathy四条原则,不符合自动返工。
六、实践建议
快速入门
- 第一步:在项目根目录放
CLAUDE.md(Karpathy规则),立即生效 - 第二步:安装OpenSpec,执行
openspec init - 第三步:改造
opsx-apply.md,嵌入5阶段流程 - 第四步:配置skills软链接,让Antigravity识别Superpowers
适用场景
| 场景 | 是否推荐 | 原因 |
|---|---|---|
| 个人POC | ✅ 推荐 | 保证代码质量,面试可解释 |
| 团队协作 | ✅ 强推 | 变更历史完整,新人上手快 |
| 金融/医疗等合规场景 | ✅ 强推 | 审计需要完整的决策记录 |
| 简单脚本 | ⚠️ 可选 | 流程可能过重,按需裁剪 |
注意事项
- Karpathy的70行规则是最小投入最大产出,建议所有项目都加上
- Superpowers的14个skills不必全用,选4个核心(brainstorming、TDD、review、verification)即可
- OpenSpec的
/opsx:explore是纯思考模式,非常适合需求澄清阶段
七、总结
Karpathy、Superpowers、OpenSpec三件套的组合,本质上是对Vibe Coding的一次工程化改造:
- Karpathy:把“AI不听话”变成“AI有纪律”
- Superpowers:把“AI乱流程”变成“AI按流程”
- OpenSpec:把“AI不留痕”变成“AI可追溯”
三者叠加,Vibe Coding从“黑客式的快速原型”进化到“工程化的规范开发”。这不仅仅是效率的提升,更是AI编程从玩具到工具的质变。
当AI戴上紧箍咒,它不是被束缚,而是学会了如何做一个合格的工程师。
本文提到的所有工具都是开源的,你可以在GitHub上找到:
- Karpathy Skills: github.com/forrestchan…
- Superpowers: github.com/obra/superp…
- OpenSpec: github.com/fission-ai/…