
1. 为什么你的 Superpowers 只发挥了 10%从 Skill 组合到 TDD 的真实摩擦Superpowers 这个项目在 GitHub 上已经积累了 213000 星但绝大多数人装完之后实际用到的只是它最表层的能力——把 Skill 当成一个更长的 prompt 来用。我见过太多人装完npx skills add obra/superpowers之后就再也没有打开过~/.claude/skills/目录更别说去理解 Skill 内部的阶段门槛机制。Skill 和 prompt 的本质区别在于prompt 是建议Claude 可以参考也可以忽略而一个结构良好的 Skill 定义了明确的阶段门槛比如「红灯测试必须失败之后才能进下一步」「计划必须输出 Markdown 文件后才能开始编码」Claude 会更倾向于照执行。这个差别不是概念游戏它直接决定了你的 Agent 工作流是「看起来在跑」还是「真的在跑」。这篇文章聚焦三条主线Skill 组合、TDD 驱动、Agent 协作。我会给出可复制的 Skill 配置片段、TDD 任务拆解模板以及 Agent 调用链的验证步骤。你可以在本地跑通一条完整链路然后对照输出结果自查。适合已经装过 Superpowers 但感觉「好像没发挥出来」的开发者也适合正在评估要不要把 Agent 工作流引入日常编码的人。先说你可能会遇到的第一个摩擦Skill 装了但没触发。原因通常不是 Skill 本身有问题而是你的调用方式没有给 Claude 足够的信号去识别「现在该进入哪个阶段」。Superpowers 的子模块之间是有依赖关系的单独触发一个 Skill 和按链路触发一组 Skill效果差距很大。第二个摩擦是 TDD 流程被跳过。Claude 在没有约束的时候天然倾向于直接写实现代码测试留到最后或者干脆不写。Superpowers 的test-driven-development子模块把这个流程锁住了但前提是你要正确配置它的触发条件。第三个摩擦是 Agent 协作变成了「多个 Agent 各干各的」。并行 Agent 分发的前提是任务之间真正独立如果有依赖关系并行变串行还容易出错。这个坑我在一次跨模块重构里踩过后面会详细拆解。2. TaoToken 前置把模型接入层先跑通在进入 Skill 配置之前你需要确保模型接入层是通的。我用 TaoToken 作为统一接入层原因是它把不同模型的调用方式统一成了 OpenAI 兼容格式省掉了每个模型单独配 SDK 的麻烦。官网地址是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentAPI 端点是 https://taotoken.net/api。先拿 Key。打开 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite 创建一个新的 API Key复制出来。这个 Key 后面会用在 Claude Code 的配置文件和 Agent 调用链里。接下来配置 Claude Code 的接入。Claude Code 支持通过环境变量指定 Base URL 和 API Key你可以在~/.claude/settings.json里写入{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: sk-your-taotoken-key } }如果你用的是 Codex 或者 Cline 这类工具配置方式类似核心是三件套Base URL、API Key、Model ID。Model ID 根据你实际要调用的模型来填比如claude-sonnet-4-20250514或者gpt-4o。验证接入是否成功可以用一个最简单的 curl 请求curl https://taotoken.net/api/v1/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer sk-your-taotoken-key \ -d { model: claude-sonnet-4-20250514, messages: [{role: user, content: 回复 OK}], max_tokens: 10 }如果返回的 JSON 里有choices字段且内容正常说明接入层已经通了。这一步看起来简单但后面 Skill 触发失败的时候你至少可以排除「模型根本没连上」这个可能性。关于模型选择我的建议是日常编码用 Sonnet复杂推理用 Opus简单任务用 Haiku。TaoToken 的模型对话页面 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite 可以快速测试不同模型的响应质量不用改代码就能切换。如果你打算长期跑 Agent 工作流Coding Plan https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite 会比按量付费更划算尤其是 TDD 流程里测试和实现来回跑的时候token 消耗比你想的要大。3. 可复制配置Skill 组合与 TDD 任务拆解模板这一节给出可以直接复制到项目里的配置片段。先看 Skill 的组合配置。Superpowers 安装完之后默认不会激活所有子模块。你需要在项目的.claude/skills.json或者全局的~/.claude/skills/config.json里指定要启用的 Skill 和触发条件。我实际留下的子模块是这三个{ skills: [ { name: test-driven-development, source: obra/superpowers, trigger: when user asks to implement a feature or fix a bug, enforce: true }, { name: systematic-debugging, source: obra/superpowers, trigger: when user reports an error or unexpected behavior, enforce: true }, { name: writing-plans, source: obra/superpowers, trigger: when task requires more than 3 steps, enforce: true } ] }enforce: true是关键。它告诉 Claude 这个 Skill 的阶段门槛是强制的不能跳过。没有这个标记Claude 可能会在「觉得没必要」的时候绕过 TDD 流程。接下来是 TDD 任务拆解模板。这个模板我放在项目的docs/tdd-template.md里每次开始新功能的时候让 Claude 先读这个文件# TDD 任务拆解模板 ## 阶段一Red红灯 - [ ] 明确要测试的行为边界 - [ ] 写一个会失败的测试用例 - [ ] 运行测试确认失败原因是「功能未实现」而不是「测试写错了」 - [ ] 输出测试失败日志到 tdd-logs/red-{feature}.log ## 阶段二Green绿灯 - [ ] 写最少的代码让测试通过 - [ ] 不允许添加测试未覆盖的功能 - [ ] 运行测试确认全部通过 - [ ] 输出测试通过日志到 tdd-logs/green-{feature}.log ## 阶段三Refactor重构 - [ ] 在不改变行为的前提下整理代码 - [ ] 重新运行测试确认仍然通过 - [ ] 输出重构说明到 tdd-logs/refactor-{feature}.md ## 验证点 每个阶段结束后必须输出对应的日志文件否则不允许进入下一阶段。这个模板的核心是「验证点」那一行。它把阶段门槛变成了可检查的文件输出Claude 不能只是口头说「我测过了」必须留下日志。Agent 调用链的配置稍微复杂一些。如果你要用 Superpowers 的并行 Agent 分发需要在~/.claude/agents/dispatch.json里定义任务分片规则{ dispatch: { mode: parallel, max_agents: 3, require_independence_check: true, tasks: [ { name: frontend-refactor, scope: src/components/**, agent_model: claude-sonnet-4-20250514 }, { name: backend-api-update, scope: src/api/**, agent_model: claude-sonnet-4-20250514 }, { name: test-coverage, scope: tests/**, agent_model: claude-haiku-3-20250319 } ] } }require_independence_check: true这个配置很重要。它会在分发之前检查任务之间是否有文件重叠或依赖关系如果有自动降级为串行执行。这个检查帮我避免过一次「两个 Agent 同时改同一个文件导致冲突」的事故。4. 验证请求与成功结果跑通一条完整链路配置写完之后你需要验证整条链路是否真的跑通了。我用的验证方法是用一个真实的小功能需求走完从 Skill 触发到 TDD 三阶段再到 Agent 分发的完整流程。先启动 Claude Code然后输入一个测试需求实现一个函数输入一个整数数组返回其中所有偶数的平方和。 要求走 TDD 流程输出每个阶段的日志文件。如果 Skill 配置正确Claude 的第一反应不应该是直接写实现代码而是先进入 Red 阶段。你会看到它输出类似这样的内容[Skill: test-driven-development] 进入 Red 阶段 正在编写测试用例... 测试文件已创建tests/even_square_sum.test.js 运行测试... 测试失败ReferenceError: evenSquareSum is not defined 失败原因确认功能未实现 日志已输出tdd-logs/red-even-square-sum.log这一步的关键验证点是「失败原因确认」。如果 Claude 输出的失败原因是「测试语法错误」或者「导入路径不对」说明测试本身有问题需要让它先修测试再进 Green 阶段。进入 Green 阶段后Claude 应该只写最少的实现代码function evenSquareSum(arr) { return arr.filter(n n % 2 0).reduce((sum, n) sum n * n, 0); }然后运行测试输出通过日志。这时候你可以检查tdd-logs/green-even-square-sum.log文件是否存在内容是否包含「全部通过」的字样。Refactor 阶段 Claude 可能会把函数拆成更小的单元或者调整命名。验证点是重构后测试仍然通过且tdd-logs/refactor-even-square-sum.md里有重构说明。Agent 分发的验证稍微不同。你需要一个跨模块的任务才能触发并行分发。比如重构 src/components/ 下的所有 React 组件同时更新 src/api/ 下的接口调用并补充 tests/ 下的测试覆盖。如果配置正确Claude 会先做独立性检查确认三个目录没有文件重叠然后启动三个 Agent 并行执行。你可以在终端看到类似这样的输出[Agent Dispatch] 独立性检查通过 启动 Agent 1: frontend-refactor (scope: src/components/**) 启动 Agent 2: backend-api-update (scope: src/api/**) 启动 Agent 3: test-coverage (scope: tests/**) 等待最慢的 Agent 完成...成功的结果是三个 Agent 都输出完成日志且没有文件冲突报告。如果出现冲突说明独立性检查没有正确拦截需要检查dispatch.json里的 scope 定义是否有重叠。5. 本篇常见错排查401、local proxy failed、reading choices、OAuth这一节列出我在配置过程中实际遇到的报错和排查方法。每个报错都对应一个具体的配置问题你可以对照自己的情况排查。401 Unauthorized这是最常见的接入层报错。原因通常是 API Key 没有正确写入配置文件或者 Key 已经过期。排查步骤先检查~/.claude/settings.json里的ANTHROPIC_API_KEY是否和 TaoToken 控制台里的一致。如果一致用 curl 直接测试 Key 是否有效curl https://taotoken.net/api/v1/models \ -H Authorization: Bearer sk-your-taotoken-key如果 curl 也返回 401说明 Key 本身有问题去 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite 重新生成一个。如果 curl 正常但 Claude Code 报 401说明配置文件路径不对检查 Claude Code 实际读取的是哪个 settings 文件。local proxy failed这个报错通常出现在你用了本地代理工具的情况下。Claude Code 尝试连接本地代理端口但失败了。排查步骤检查ANTHROPIC_BASE_URL是否被错误地设置成了http://localhost:xxxx而不是https://taotoken.net/api。如果你确实需要本地代理确认代理进程在运行且端口正确。但大多数情况下直接把 Base URL 指向 TaoToken 的 API 端点就能解决。reading choices 报错这个报错说明请求发出去了但响应格式不符合预期。常见原因是 Model ID 写错了或者请求的模型不支持当前 API 格式。排查步骤检查你用的 Model ID 是否在 TaoToken 的模型列表里。用模型对话页面 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite 测试同一个 Model ID如果那边正常但 Claude Code 报错说明是 Claude Code 的请求格式问题检查是否有多余的 header 或参数。OAuth 相关报错Claude Code 某些版本会尝试走 OAuth 流程而不是 API Key 认证。如果你看到 OAuth 相关的报错说明认证方式冲突了。排查步骤在settings.json里显式设置ANTHROPIC_AUTH_MODE: api_key强制走 API Key 认证。如果还是不行检查是否有环境变量ANTHROPIC_OAUTH_TOKEN被设置了把它清掉。Skill 不触发这个不算报错但比报错更让人困惑。Claude 没有进入 TDD 流程直接开始写实现代码。排查步骤检查skills.json里的enforce是否为true检查trigger条件是否匹配你当前的任务描述。如果都正确但还是不触发尝试在 prompt 里显式说「请使用 test-driven-development Skill」手动触发一次看看 Skill 本身是否能正常工作。Agent 分发后文件冲突并行 Agent 修改了同一个文件导致冲突。排查步骤检查dispatch.json里的 scope 定义是否有重叠。比如src/components/**和src/**就是重叠的。把 scope 收窄到具体目录确保每个 Agent 的操作范围互斥。如果任务本身有依赖关系不要强行并行改成串行执行。6. 语义一致 CTA从验证到长期工作流跑通上面这条链路之后你可能会发现两个问题一是 token 消耗比预期高二是每次手动配置 Skill 和 Agent 比较麻烦。这两个问题都有对应的解法。token 消耗高的原因通常是模型选择没有分层。简单任务用了 Opus复杂任务也用了 Opus成本自然下不来。我的做法是在dispatch.json里给不同 Agent 指定不同的模型前端重构用 Sonnet测试覆盖用 Haiku只有涉及架构决策的任务才用 Opus。这个分层策略让我的月账单降了大约 35%同时大部分任务的完成质量没有明显下降。如果你打算把这条工作流长期跑下去Coding Plan https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite 会比按量付费更可控。TDD 流程里测试和实现来回跑加上 Agent 并行分发token 消耗曲线不是线性的固定额度的套餐能避免月底看到账单时的心跳加速。配置管理方面我建议把skills.json、dispatch.json和tdd-template.md都纳入版本控制。这样换机器或者团队协作的时候直接 clone 下来就能用不用重新配一遍。接入文档 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 里有完整的配置示例遇到不确定的参数可以对照查。最后说一个我踩过的坑不要一次性启用所有 Skill。Superpowers 有 20 多个子模块全开之后 Claude 的决策负担会变重反而容易在阶段门槛之间犹豫。先启用 TDD、systematic-debugging 和 writing-plans 这三个跑顺了再按需加。Skill 的质量参差不齐判断标准很简单没有它这件事会让我多花多少时间答案是「5 分钟以内」的大概率是噱头答案是「每次都要手动处理、很烦」的就值得装。如果你在配置过程中遇到上面没覆盖的报错可以去 API Keys 页面 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite 检查 Key 状态或者用模型对话页面快速测试模型连通性。大部分接入层的问题在这两个页面都能定位到原因。