以Vibe Coding思路与 AI 一起“凭感觉写代码”,快速生成、快速迭代。原型开发的效率因此大幅提升,但问题也随之显现:跳过设计、缺少测试、行为不稳定、问题难追溯,难以保证工程质量。代码虽然能跑,却不敢上线。
那如何既保留 AI效率,又保证工程质量?业界提出一种新思路——Vibe Engineering:让 AI 不再随性编码,而是像工程师一样遵循设计评审、任务拆解、TDD 与代码审查等工程纪律。开源项目 Superpowers 正是这一理念的实践,它试图把工程最佳实践固化为 AI 必须执行的“技能”,让 AI 编程从“能跑就行”,走向“能跑也敢上线”。
01
—
Vibe Coding 怎么才敢上线?
Vibe Coding,由 OpenAI 联合创始人之一 Andrej Karpathy 在 2025 年 2 月提出,指开发者与 AI 一起随性编码,凭"感觉"快速迭代。这种模式在原型阶段效率极高,但在生产环境中,往往导致灾难。一份对 18 位 CTO 的调查显示,其中 16 位报告了由 AI 生成代码直接导致的生产事故。
主要面临如下核心问题:
- 无规划:AI 直奔编码实现,跳过设计,埋下架构隐患(不过这一点随着 Spec Driven 的推行有很大的改善!)。
- 无测试:AI 倾向于乐观,缺乏对边缘情况的自我怀疑。
- 不一致:相同任务,产出不一,难以复现和维护。
- 黑盒化:过程不透明,出问题后调试如考古。
图 1:Vibe Coding “能跑但不敢上线”的焦虑
一个在 GitHub 三个月狂揽 71.3k Star 的开源项目 Superpowers 提出了一个不错的办法——强制 AI 遵循软件工程纪律。
02
—
Superpowers:让 Coding Agent 遵守工程纪律
Superpowers 不是代码生成器,而是一个强制将软件工程最佳实践注入 AI Agent 工作流的"方法论框架"。
该框架通过一系列被称为 "Skills"(技能) 的可执行模块,将设计、计划、TDD、审查等流程固化,AI 不得不遵循。
图 2:Superpowers 核心工作流,在编码前建立强制性关卡
该框架内置 14 个核心技能,覆盖开发全生命周期:
类别 |
技能名称 |
核心功能 |
系统 |
|
技能路由引擎,所有对话的入口 |
系统 |
|
创建新技能的系统技能 |
协作 |
|
苏格拉底式需求精炼,生成设计文档 |
协作 |
|
生成 2-5 分钟粒度的详细实施计划 |
协作 |
|
批量执行含人工检查点 |
协作 |
|
并发子代理工作流 |
协作 |
|
子代理驱动开发,含两阶段 Code Review |
协作 |
|
提交代码审查前的自查清单 |
协作 |
|
响应代码审查反馈的流程 |
测试 |
|
强制 RED-GREEN-REFACTOR 循环 |
调试 |
|
4 阶段根因分析流程 |
调试 |
|
确认问题真正被修复 |
版本控制 |
|
使用 Git Worktree 进行并行开发 |
版本控制 |
|
合并或创建 PR 的决策工作流 |
03
—
五大设计启示如何驯服 AI
第一,Skills = 可执行的工程契约
Superpowers 将工程原则从"建议"升级为"强制"。brainstorming 技能中的 HARD-GATE 机制,在设计获批前,禁止 AI 写任何代码。
<HARD-GATE> Do NOT invoke any implementation skill, write any code, scaffold any project, or take any implementation action until you have presented a design and the user has approved it. This applies to EVERY project regardless of perceived simplicity. </HARD-GATE>
图 3:Superpowers 将工程最佳实践从“建议”升级为“可执行契约”
第二,Skill Engineering 优先于 Prompt Engineering
Superpowers 提倡 Skill Engineering,将高质量的工程实践沉淀为可复用的 Agent Skills SKILL.md 文件,而非依赖一次性的、难以复现的 Prompt。
维度 |
Prompt Engineering |
Skill Engineering |
核心产物 |
一次性的 Prompt 字符串 |
可复用的 SKILL.md 文件 |
复用性 |
低,强依赖上下文 |
高,跨项目、跨会话 |
知识沉淀 |
在个人脑中 |
在代码库中,可传承 |
第三,运用 "说服心理学"
Jesse Vincent 在博客中提到,他有意识地使用了心理学家 Robert Cialdini 的《影响力》原则,包括:权威、承诺与一致性、社会认同,后来发现这与一项学术研究不谋而合。该研究由 Dan Shapiro(Glowforge CEO)与 Cialdini 等人合著,证实了说服原则对 LLM 同样有效。
例如,利用权威(Authority)原则,在 using-superpowers 技能中设置不容置疑的指令:
<EXTREMELY-IMPORTANT> If you think there is even a 1% chance a skill might apply to what you are doing, you ABSOLUTELY MUST invoke the skill. IF A SKILL APPLIES TO YOUR TASK, YOU DO NOT HAVE A CHOICE. YOU MUST USE IT. This is not negotiable. This is not optional. You cannot rationalize your way out of this. </EXTREMELY-IMPORTANT>
第四, Subagent 架构 = 职责分离
每个开发任务都派生一个全新的子代理(Subagent),并内部分为三个角色,形成微缩敏捷团队:
- 实现者(Implementer):按 TDD 编写代码。
- 规格审查员(Spec Reviewer):审查代码是否符合任务要求。
- 质量审查员(Code Quality Reviewer):审查代码的可读性、可维护性。
这种设计隔离了上下文,并实现了职责分离,确保了代码质量。
第五,TDD:给 AI 的"怀疑主义"安全网
AI 天生"乐观",TDD 则是强制它怀疑的外部机制。Superpowers 将 TDD 奉为铁律:先有失败的测试,再有生产代码。
图 4:Superpowers 强制执行的 RED-GREEN-REFACTOR 循环
04
—
实战:开发一个 weather-cli
场景:用 Go 开发一个命令行天气查询工具。
1. 首先,安装 Superpowers Skill
首先,在支持的平台(如 Claude Code)中安装 Superpowers 插件:
# 注册 Superpowers 插件市场 /plugin marketplace add obra/superpowers-marketplace # 安装插件 /plugin install superpowers@superpowers-marketplace
重启会话后,每次对话开始时,AI 都会自动注入 Superpowers 的工作流。
2. Brainstorming (强制)
向 AI 提出需求:
用户:我们来构建一个 Go 语言的命令行天气查询工具 weather-cli。
此时,Superpowers 会立刻介入,brainstorming 技能被激活。AI 不会写一行代码,而是开始提问:
AI (Superpowers):好的,在开始之前,我们先来明确一下设计。为了确保我们构建的是正确的东西,我有几个问题(每次一个):我们从哪里获取天气数据?有推荐的 API 吗?还是我来找一个免费的?
用户:使用 Open-Meteo 的免费 API,不需要 API Key。
AI:明白了。输出格式是什么样的?纯文本,还是 JSON?
用户:纯文本,格式为 城市: 温度°C, 天气状况。
经过几轮问答,AI 将设计方案呈现给用户确认并保存为 docs/plans/2026-03-05-weather-cli-design.md。
# Weather CLI Design Document **Goal**: A command-line tool to query current weather by city name. **Architecture**: - Use Open-Meteo Geocoding API to resolve city name to coordinates. - Use Open-Meteo Weather API to fetch current weather data. - Map weather codes to human-readable descriptions. **Tech Stack**: Go 1.21, standard library only. **Error Handling**: - City not found: "Error: city 'X' not found" - API failure: "Error: failed to fetch weather data"
3. Writing Plans (任务分解)
设计批准后,writing-plans 技能启动。AI 将整个开发过程分解成具体的、小颗粒度的任务,每个任务都包含完整的代码示例和验证步骤:
# Weather CLI Implementation Plan > **For Claude:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to > implement this plan task-by-task. **Goal:** CLI tool to query current weather by city name. **Tech Stack:** Go 1.21, standard library --- ### Task 1: Project Setup **Files:** - Create: `weather-cli/go.mod` - Create: `weather-cli/main.go` **Step 1: Initialize Go module** Run: `go mod init github.com/user/weather-cli` Expected: go.mod created **Step 2: Create empty main.go** ... ### Task 2: Implement Weather Fetching (TDD) **Files:** - Create: `weather-cli/weather/weather.go` - Create: `weather-cli/weather/weather_test.go` **Step 1: Write the failing test** ```go // weather/weather_test.go func TestGetWeather_Success(t *testing.T) { server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request ) { w.Write([]byte(`{ "current_weather": { "temperature": 15.0, "weathercode": 3 } }`)) })) defer server.Close() temp, desc, err := GetWeather("Berlin", server.URL) if err != nil { t.Fatalf("unexpected error: %v", err) } if temp != 15.0 { t.Errorf("expected 15.0, got %.1f", temp) } if desc != "Partly cloudy" { t.Errorf("expected 'Partly cloudy', got '%s'", desc) } }
然后经过一系列的交互之后,开始产出代码 ....
// weather/weather.go package weather import ( "encoding/json" "net/http" ) var weatherCodes = map[int]string{ 0: "Clear sky", 1: "Mainly clear", 2: "Partly cloudy", 3: "Partly cloudy", // ... more codes } ......
4. Subagent-Driven Development (TDD + Code Review)
当代码完成之后,AI 开始执行任务 2,再次经历以下循环:
- 实现者:编写失败的测试,然后编写最小实现让测试通过。
- 规格审查员:检查功能是否符合要求。✅ 通过。
- 质量审查员:发现缺少错误路径测试,硬编码等问题。❌ 不通过,打回修改。
- 实现者:修复问题,重新提交。
- 质量审查员:再次审查。✅ 通过。
任务 2 完成,进入下一任务。
05
—
从 Vibe Coding 到 Vibe Engineering
Superpowers 标志着人机协作的范式转移:从凭感觉的 Vibe Coding,走向严谨的 Vibe Engineering。
图 5:Vibe Coding 与 Vibe Engineering 的核心差异
特征 |
Vibe Coding |
Vibe Engineering |
核心目标 |
快速获得能运行的代码 |
构建可维护的生产级软件 |
人类角色 |
提需求者 |
架构师,流程监督者 |
AI 角色 |
代码生成器 |
遵循纪律的初级工程师 |
质量保证 |
人工测试 + 祈祷 |
内置于流程的 TDD + Code Review |
Vibe Coding 的本质是"让 AI 搞定",而 Vibe Engineering 的本质是"让 AI 按规矩搞定"。
06
—
行动建议
在 AI 时代,工程纪律非但没有过时,反而变得前所未有的重要。与其担忧被取代,不如主动进化:
- 成为流程定义者:将团队的最佳实践"工具化"、"流程化",创建自己的 Skill。
- 坚持代码审查:对 AI 生成的代码,抱着"有罪推定"的心态去审查。
- 拥抱 TDD:先用测试定义"行为",再让 AI 填充"实现"。
- 分而治之:将复杂任务分解,降低 AI 的处理难度。
人类工程师的角色,正从代码的"生产者",转变为开发流程的设计者、AI 团队的架构师、最终产品质量的守护者。这或许是人与 AI 协作的新形态。
(如果这篇文章对您所有帮助,请帮忙 关注 并 转发,谢谢!)
参考资料
[1] Karpathy, A. (2025, February 2). "There's a new kind of coding I call 'vibe coding'...". X (Twitter).
https://x.com/karpathy/status/1886192184808149383
[2] Final Round AI. (2025, August 15). What CTOs Really Think About Vibe Coding.
https://www.finalroundai.com/blog/what-ctos-think-about-vibe-coding
[3] Vincent, J. (2025-2026). obra/superpowers. GitHub.
https://github.com/obra/superpowers
[4] Vincent, J. (2025, October 9). Superpowers: How I'm using coding agents in October 2025. Massively Parallel Procrastination.
https://blog.fsck.com/2025/10/09/superpowers/
[5] Meincke, L., Shapiro, D., Duckworth, A., Mollick, E. R., & Cialdini, R. B. (2025). Call Me A Jerk: Persuading AI to Comply with Objectionable Requests. SSRN.
https://papers.ssrn.com/sol3/papers.cfm?abstract_id=5357179