@wwkit/freetoken 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +96 -0
- package/cli/helpers/args.js +48 -0
- package/cli/index.js +374 -0
- package/cli/pid-manager.js +87 -0
- package/client/index.html +25 -0
- package/client/public/favicon.svg +1 -0
- package/client/public/icons.svg +24 -0
- package/client/src/App.vue +136 -0
- package/client/src/assets/vite.svg +1 -0
- package/client/src/assets/vue.svg +1 -0
- package/client/src/components/ChatBox.vue +320 -0
- package/client/src/components/CheckList.vue +52 -0
- package/client/src/components/CodeBlock.vue +99 -0
- package/client/src/components/DetailBlock.vue +47 -0
- package/client/src/components/HelloWorld.vue +95 -0
- package/client/src/components/LangSwitch.vue +32 -0
- package/client/src/components/LinkList.vue +32 -0
- package/client/src/components/OsSwitch.vue +42 -0
- package/client/src/components/OsToggle.vue +15 -0
- package/client/src/components/PageHeader.vue +31 -0
- package/client/src/components/StepList.vue +92 -0
- package/client/src/composables/useClipboard.js +26 -0
- package/client/src/composables/useOs.js +22 -0
- package/client/src/data/docs/agent.js +1002 -0
- package/client/src/data/docs/auth.js +631 -0
- package/client/src/data/docs/builtin-tools.js +322 -0
- package/client/src/data/docs/chat.js +181 -0
- package/client/src/data/docs/index.js +9 -0
- package/client/src/data/docs/skills.js +396 -0
- package/client/src/data/docs/spec-conversion.js +1042 -0
- package/client/src/data/freeModels/bluesliu.js +97 -0
- package/client/src/data/freeModels/index.js +11 -0
- package/client/src/data/freeModels/nvidia.js +126 -0
- package/client/src/data/freeModels/openrouter.js +116 -0
- package/client/src/data/harness/claude.js +89 -0
- package/client/src/data/harness/codex.js +66 -0
- package/client/src/data/harness/dsh.js +86 -0
- package/client/src/data/harness/hermes.js +56 -0
- package/client/src/data/harness/index.js +22 -0
- package/client/src/data/harness/opencode.js +77 -0
- package/client/src/data/proxy/api-relay.js +53 -0
- package/client/src/data/proxy/builtin-proxy.js +54 -0
- package/client/src/data/proxy/cf-workers.js +67 -0
- package/client/src/data/proxy/ecs-forward.js +75 -0
- package/client/src/data/proxy/ecs-reverse.js +89 -0
- package/client/src/data/proxy/index.js +15 -0
- package/client/src/docs/claudecode.md +44 -0
- package/client/src/docs/codex.md +90 -0
- package/client/src/docs/hermesagent.md +42 -0
- package/client/src/docs/opencode.md +103 -0
- package/client/src/locales/en.js +436 -0
- package/client/src/locales/index.js +31 -0
- package/client/src/locales/zh-CN.js +461 -0
- package/client/src/main.js +16 -0
- package/client/src/router/index.js +76 -0
- package/client/src/style.css +15 -0
- package/client/src/views/AdminModelsView.vue +214 -0
- package/client/src/views/DocsView.vue +1604 -0
- package/client/src/views/FreeModelsView.vue +518 -0
- package/client/src/views/HarnessView.vue +314 -0
- package/client/src/views/HomeView.vue +147 -0
- package/client/src/views/ProxyView.vue +112 -0
- package/client/src/views/TokenMarketView.vue +26 -0
- package/client/vite.config.js +41 -0
- package/package.json +85 -0
- package/scripts/build-zip.sh +61 -0
- package/scripts/postinstall.js +7 -0
- package/server/src/config/targets.json +1 -0
- package/server/src/index.js +52 -0
- package/server/src/lib/coding-test.js +215 -0
- package/server/src/lib/database.js +353 -0
- package/server/src/lib/run-test.js +15 -0
- package/server/src/lib/scheduler.js +21 -0
- package/server/src/lib/tester.js +310 -0
- package/server/src/routes/admin.js +48 -0
- package/server/src/routes/proxy.js +64 -0
- package/server/src/routes/speed.js +87 -0
- package/src/config.js +45 -0
- package/src/config.json5 +27 -0
- package/src/index.js +10 -0
|
@@ -0,0 +1,396 @@
|
|
|
1
|
+
// Skills 模块:AI 编程 Agent 的技能系统
|
|
2
|
+
// 首个子模块:Superpowers — 完整的软件开发方法论技能库
|
|
3
|
+
|
|
4
|
+
export default {
|
|
5
|
+
id: 'skills',
|
|
6
|
+
name: 'Skills',
|
|
7
|
+
badge: '技能系统',
|
|
8
|
+
tagline: 'AI 编程 Agent 的可组合技能库与自动触发机制',
|
|
9
|
+
description:
|
|
10
|
+
'Skills 是 AI 编程 Agent 的"方法论插件"——通过 Markdown 技能文件 + SessionStart Hook 自动注入,让 Agent 在编码前自动遵循 TDD、头脑风暴、计划编写、子 Agent 驱动开发等最佳实践。技能不是建议而是强制工作流——Agent 在任何响应前必须检查并调用相关技能。',
|
|
11
|
+
|
|
12
|
+
subModules: [
|
|
13
|
+
{
|
|
14
|
+
id: 'superpowers',
|
|
15
|
+
name: 'Superpowers',
|
|
16
|
+
badge: '方法论',
|
|
17
|
+
tagline: '为编码 Agent 打造的完整软件开发方法论',
|
|
18
|
+
description:
|
|
19
|
+
'Superpowers 是一套基于可组合技能(Skills)的软件开发方法论,由 Jesse Vincent / Prime Radiant 开发。它不是代码库或工具——而是一组 Markdown 技能文件 + SessionStart Hook,让 Claude Code、Codex、Cursor、OpenCode 等 14+ 种编码 Agent 自动遵循"先思考再编码"的工作流。核心理念:Agent 在写代码前必须先头脑风暴→设计方案→编写计划→TDD 实现→代码审查。',
|
|
20
|
+
|
|
21
|
+
// ── 核心机制 ──
|
|
22
|
+
coreMechanism: {
|
|
23
|
+
title: '核心机制:SessionStart Hook + 技能自动触发',
|
|
24
|
+
description:
|
|
25
|
+
'Superpowers 的核心是一个 bash 脚本(hooks/session-start),在 Agent 会话启动、清除、压缩(compact)时自动执行。它读取 using-superpowers 技能的全文,注入为会话上下文(包裹在 <EXTREMELY_IMPORTANT> 标签中),让 Agent 从第一条消息就知道自己"有超能力"并必须使用技能。',
|
|
26
|
+
flow: [
|
|
27
|
+
{ phase: '1. Hook 触发', detail: 'SessionStart Hook 在会话启动/clear/compact 时触发(hooks.json 配置 matcher: "startup|clear|compact")' },
|
|
28
|
+
{ phase: '2. 读取 bootstrap', detail: 'bash 脚本读取 skills/using-superpowers/SKILL.md 全文,JSON 转义后包裹为 <EXTREMELY_IMPORTANT> 上下文' },
|
|
29
|
+
{ phase: '3. 平台适配输出', detail: '检测当前平台(Cursor/Claude Code/Copilot CLI),输出对应格式的 JSON:additional_context(Cursor)/ hookSpecificOutput.additionalContext(Claude Code)/ additionalContext(SDK 标准)' },
|
|
30
|
+
{ phase: '4. 上下文注入', detail: 'Agent 收到注入的 using-superpowers 技能全文,从第一条消息就知道自己有技能系统' },
|
|
31
|
+
{ phase: '5. 技能自动触发', detail: 'Agent 在处理任何用户消息前,先检查是否有相关技能。如果有(哪怕 1% 可能性),必须调用 Skill 工具加载技能全文并遵循' },
|
|
32
|
+
{ phase: '6. compact 后重新注入', detail: '会话压缩(compact)会丢失上下文——Hook 在 compact 后重新执行,确保长会话不丢失技能感知' },
|
|
33
|
+
],
|
|
34
|
+
hookCode: `// hooks/hooks.json — SessionStart Hook 配置
|
|
35
|
+
{
|
|
36
|
+
"hooks": {
|
|
37
|
+
"SessionStart": [{
|
|
38
|
+
"matcher": "startup|clear|compact",
|
|
39
|
+
"hooks": [{
|
|
40
|
+
"type": "command",
|
|
41
|
+
"command": "\${CLAUDE_PLUGIN_ROOT}/hooks/run-hook.cmd session-start",
|
|
42
|
+
"shell": "bash",
|
|
43
|
+
"async": false
|
|
44
|
+
}]
|
|
45
|
+
}]
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// hooks/session-start — 核心注入逻辑(bash)
|
|
50
|
+
using_superpowers_content=$(cat "skills/using-superpowers/SKILL.md")
|
|
51
|
+
session_context="<EXTREMELY_IMPORTANT>\\nYou have superpowers.\\n\\n"
|
|
52
|
+
+ "Below is your 'using-superpowers' skill...\\n"
|
|
53
|
+
+ escape_for_json(using_superpowers_content)
|
|
54
|
+
+ "\\n</EXTREMELY_IMPORTANT>"
|
|
55
|
+
|
|
56
|
+
// 平台适配输出
|
|
57
|
+
if Cursor: { "additional_context": session_context }
|
|
58
|
+
if Claude: { "hookSpecificOutput": { additionalContext: session_context } }
|
|
59
|
+
if Copilot: { "additionalContext": session_context }`,
|
|
60
|
+
notes: [
|
|
61
|
+
'Hook 是同步的(async: false),确保上下文在 Agent 处理第一条消息前就注入',
|
|
62
|
+
'compact 后重新注入是关键——没有它,长会话会"忘记"自己有技能',
|
|
63
|
+
'using-superpowers 是唯一的"bootstrap 技能"——其他技能通过 Skill 工具按需加载',
|
|
64
|
+
'Hermes Agent 没有 post-compact hook,长会话压缩后会丢失 bootstrap',
|
|
65
|
+
],
|
|
66
|
+
},
|
|
67
|
+
|
|
68
|
+
// ── 技能库 ──
|
|
69
|
+
skillLibrary: {
|
|
70
|
+
title: '技能库(14 个技能)',
|
|
71
|
+
description:
|
|
72
|
+
'每个技能是一个 SKILL.md 文件,含 frontmatter(name + description)和 Markdown 正文。技能按职责分为测试、调试、协作、元技能四类。',
|
|
73
|
+
categories: [
|
|
74
|
+
{
|
|
75
|
+
name: '测试',
|
|
76
|
+
skills: [
|
|
77
|
+
{ name: 'test-driven-development', desc: 'RED-GREEN-REFACTOR 循环:先写失败测试→看它失败→写最小代码→看它通过→重构。铁律:没有失败测试就不写生产代码。先写了代码?删掉重来。' },
|
|
78
|
+
],
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
name: '调试',
|
|
82
|
+
skills: [
|
|
83
|
+
{ name: 'systematic-debugging', desc: '4 阶段根因分析流程,含根因追踪、纵深防御、条件等待技术' },
|
|
84
|
+
{ name: 'verification-before-completion', desc: '完成前验证——确保真正修好了,不只是"看起来修好了"' },
|
|
85
|
+
],
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
name: '协作',
|
|
89
|
+
skills: [
|
|
90
|
+
{ name: 'brainstorming', desc: '苏格拉底式设计精炼——在写代码前先搞清楚要做什么。三条路径:Spike(可行性探查)/ Bounded(有界修改)/ Architectural(架构级)。HARD-GATE:设计批准前不写任何代码' },
|
|
91
|
+
{ name: 'writing-plans', desc: '将设计拆解为 2-5 分钟的细粒度任务,每个任务含精确文件路径、完整代码、验证步骤' },
|
|
92
|
+
{ name: 'executing-plans', desc: '分批执行计划,带人工检查点' },
|
|
93
|
+
{ name: 'dispatching-parallel-agents', desc: '并发子 Agent 工作流' },
|
|
94
|
+
{ name: 'subagent-driven-development', desc: '每任务一个新子 Agent + 两阶段审查(规格合规→代码质量)+ 全分支终审。核心原则:新子 Agent 隔离上下文,不继承会话历史' },
|
|
95
|
+
{ name: 'requesting-code-review', desc: '代码审查前检查清单' },
|
|
96
|
+
{ name: 'receiving-code-review', desc: '如何响应审查反馈' },
|
|
97
|
+
{ name: 'using-git-worktrees', desc: 'Git worktree 隔离开发分支' },
|
|
98
|
+
{ name: 'finishing-a-development-branch', desc: '合并/PR/保留/丢弃决策流程' },
|
|
99
|
+
],
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
name: '元技能',
|
|
103
|
+
skills: [
|
|
104
|
+
{ name: 'writing-skills', desc: '创建新技能的最佳实践——将 TDD 应用于流程文档:写压力测试场景→看 Agent 不带技能时失败(RED)→写技能文档(GREEN)→堵漏洞(REFACTOR)' },
|
|
105
|
+
{ name: 'using-superpowers', desc: '技能系统入口——SessionStart Hook 自动注入,定义"任何响应前必须检查技能"的铁律和 Red Flags 表' },
|
|
106
|
+
],
|
|
107
|
+
},
|
|
108
|
+
],
|
|
109
|
+
},
|
|
110
|
+
|
|
111
|
+
// ── 基本工作流 ──
|
|
112
|
+
workflow: {
|
|
113
|
+
title: '基本工作流',
|
|
114
|
+
description:
|
|
115
|
+
'Superpowers 定义了一条从想法到交付的完整工作流,每个阶段由对应技能驱动。技能自动触发——用户不需要手动调用。',
|
|
116
|
+
stages: [
|
|
117
|
+
{ step: '1. brainstorming', detail: '用户说"做个 X"→ 自动触发 brainstorming 技能。Agent 不直接写代码,而是通过对话搞清楚需求,输出设计方案。HARD-GATE:设计批准前不写代码' },
|
|
118
|
+
{ step: '2. using-git-worktrees', detail: '设计批准后 → 自动创建隔离 worktree + 新分支,运行项目初始化,验证测试基线' },
|
|
119
|
+
{ step: '3. writing-plans', detail: '将设计拆解为 2-5 分钟的细粒度任务列表,每个任务含精确文件路径和验证步骤' },
|
|
120
|
+
{ step: '4. subagent-driven-development', detail: '逐任务派发子 Agent 执行,每个任务后做两阶段审查(规格合规 + 代码质量)。Agent 可自主工作数小时不偏离计划' },
|
|
121
|
+
{ step: '5. test-driven-development', detail: '实现阶段强制 RED-GREEN-REFACTOR:先写失败测试→看它失败→写最小代码→看它通过→提交。先写了代码?删掉' },
|
|
122
|
+
{ step: '6. requesting-code-review', detail: '任务间自动审查,按严重度报告问题。Critical 问题阻断进度' },
|
|
123
|
+
{ step: '7. finishing-a-development-branch', detail: '所有任务完成后,验证测试、展示选项(合并/PR/保留/丢弃)、清理 worktree' },
|
|
124
|
+
],
|
|
125
|
+
},
|
|
126
|
+
|
|
127
|
+
// ── using-superpowers 铁律 ──
|
|
128
|
+
ironRule: {
|
|
129
|
+
title: 'using-superpowers 技能的铁律',
|
|
130
|
+
description:
|
|
131
|
+
'using-superpowers 是唯一通过 Hook 自动注入的技能。它定义了技能系统的使用规则——核心是一条不可协商的铁律。',
|
|
132
|
+
rule: '在任何响应或行动之前调用相关技能——包括澄清问题、探索代码库、检查文件。即使只有 1% 的可能性技能适用,也必须调用。',
|
|
133
|
+
redFlags: [
|
|
134
|
+
{ thought: '"这只是个简单问题"', reality: '问题是任务。检查技能。' },
|
|
135
|
+
{ thought: '"我先需要更多上下文"', reality: '技能检查在澄清问题之前。' },
|
|
136
|
+
{ thought: '"让我先探索代码库"', reality: '技能告诉你如何探索。先检查。' },
|
|
137
|
+
{ thought: '"我可以快速检查 git/文件"', reality: '文件缺少对话上下文。检查技能。' },
|
|
138
|
+
{ thought: '"这不需要正式技能"', reality: '如果技能存在,就用它。' },
|
|
139
|
+
{ thought: '"我记得这个技能"', reality: '技能会演进。读当前版本。' },
|
|
140
|
+
{ thought: '"技能太重了"', reality: '简单的事会变复杂。用它。' },
|
|
141
|
+
{ thought: '"我先做这一件事"', reality: '在做任何事之前先检查。' },
|
|
142
|
+
],
|
|
143
|
+
priority: 'process 技能优先于 implementation 技能——brainstorming 和 systematic-debugging 是最常见的 process 技能,先设定方法,再执行实现。',
|
|
144
|
+
},
|
|
145
|
+
|
|
146
|
+
// ── subagent-driven-development 核心设计 ──
|
|
147
|
+
subagentDesign: {
|
|
148
|
+
title: 'subagent-driven-development 的核心设计',
|
|
149
|
+
description:
|
|
150
|
+
'Superpowers 最独特的技能——通过派发隔离上下文的子 Agent 实现高质量自主开发。',
|
|
151
|
+
principles: [
|
|
152
|
+
{ name: 'Fresh subagent per task', detail: '每个任务派发新子 Agent,不继承会话历史。主 Agent 精确构造子 Agent 需要的指令和上下文' },
|
|
153
|
+
{ name: 'Two-stage review', detail: '每个任务后做两阶段审查:先查规格合规(是否做了该做的),再查代码质量(做得好不好)' },
|
|
154
|
+
{ name: 'Continuous execution', detail: '不在任务间暂停询问"要继续吗"。执行所有任务直到完成或遇到四种停止条件之一' },
|
|
155
|
+
{ name: 'Rulings not stalls', detail: '遇到冲突/歧义/计划缺陷时做裁决而非停顿。记录每个决定为 Ruling: <决定> — <原因> — <错了的代价>' },
|
|
156
|
+
{ name: 'Broad final review', detail: '所有任务完成后做全分支审查,确保整体一致性' },
|
|
157
|
+
],
|
|
158
|
+
stopConditions: '只有四种情况停止:1. 不可逆/破坏性操作 2. 安全敏感操作 3. 工作树外的副作用(merge/push/publish)4. 计划完全破碎、每条路都是猜测',
|
|
159
|
+
},
|
|
160
|
+
|
|
161
|
+
// ── writing-skills 的 TDD 方法论 ──
|
|
162
|
+
writingSkills: {
|
|
163
|
+
title: 'writing-skills:用 TDD 写技能',
|
|
164
|
+
description:
|
|
165
|
+
'Superpowers 将 TDD 应用于技能文档本身——技能不是散文,是塑造 Agent 行为的代码。',
|
|
166
|
+
tddMapping: [
|
|
167
|
+
{ tdd: 'Test case', skillCreation: '压力测试场景(子 Agent 挑战)' },
|
|
168
|
+
{ tdd: 'Production code', skillCreation: '技能文档(SKILL.md)' },
|
|
169
|
+
{ tdd: 'Test fails (RED)', skillCreation: 'Agent 不带技能时违反规则(基线行为)' },
|
|
170
|
+
{ tdd: 'Test passes (GREEN)', skillCreation: 'Agent 带技能后遵守规则' },
|
|
171
|
+
{ tdd: 'Refactor', skillCreation: '堵漏洞同时保持合规' },
|
|
172
|
+
{ tdd: 'Write test first', skillCreation: '写基线场景在写技能之前' },
|
|
173
|
+
{ tdd: 'Watch it fail', skillCreation: '记录 Agent 用的具体合理化借口' },
|
|
174
|
+
{ tdd: 'Minimal code', skillCreation: '写技能针对那些具体违规' },
|
|
175
|
+
{ tdd: 'Watch it pass', skillCreation: '验证 Agent 现在合规了' },
|
|
176
|
+
],
|
|
177
|
+
},
|
|
178
|
+
|
|
179
|
+
// ── 多平台支持 ──
|
|
180
|
+
platforms: {
|
|
181
|
+
title: '多平台支持(14+ 种 Agent)',
|
|
182
|
+
description:
|
|
183
|
+
'Superpowers 通过平台适配的 Hook 和插件安装方式支持主流编码 Agent。核心机制相同——SessionStart Hook 注入 using-superpowers 技能。',
|
|
184
|
+
items: [
|
|
185
|
+
{ name: 'Claude Code', install: '/plugin install superpowers@claude-plugins-official', hook: 'hookSpecificOutput.additionalContext' },
|
|
186
|
+
{ name: 'Codex CLI/App', install: '/plugins → search superpowers', hook: 'additionalContext(SDK 标准)' },
|
|
187
|
+
{ name: 'Cursor', install: '/add-plugin superpowers', hook: 'additional_context(snake_case)' },
|
|
188
|
+
{ name: 'OpenCode', install: 'opencode.json plugin array', hook: '原生 skill 工具 + todowrite/task 工具映射' },
|
|
189
|
+
{ name: 'Gemini CLI', install: 'gemini extensions install', hook: '扩展系统' },
|
|
190
|
+
{ name: 'GitHub Copilot CLI', install: 'copilot plugin install', hook: 'additionalContext' },
|
|
191
|
+
{ name: 'Devin CLI', install: 'devin plugins install', hook: '插件系统' },
|
|
192
|
+
{ name: 'Hermes Agent', install: 'hermes plugins install', hook: '无 post-compact hook(长会话限制)' },
|
|
193
|
+
],
|
|
194
|
+
},
|
|
195
|
+
|
|
196
|
+
// ── 哲学 ──
|
|
197
|
+
philosophy: {
|
|
198
|
+
title: '设计哲学',
|
|
199
|
+
principles: [
|
|
200
|
+
{ name: 'Test-Driven Development', desc: '先写测试,永远如此。没有失败测试就不写生产代码' },
|
|
201
|
+
{ name: 'Systematic over ad-hoc', desc: '流程优于猜测。每一步都有对应技能指导' },
|
|
202
|
+
{ name: 'Complexity reduction', desc: '简洁是首要目标。技能帮助减少而非增加复杂度' },
|
|
203
|
+
{ name: 'Evidence over claims', desc: '验证后再宣布成功。"看起来好了"不算成功' },
|
|
204
|
+
{ name: 'Skills are mandatory', desc: '技能是强制工作流,不是建议。Agent 不能合理化跳过' },
|
|
205
|
+
{ name: 'Human partner', desc: '刻意使用"human partner"而非"user"——强调协作而非服务关系' },
|
|
206
|
+
],
|
|
207
|
+
},
|
|
208
|
+
},
|
|
209
|
+
|
|
210
|
+
// ── Subagent 子模块 ──
|
|
211
|
+
{
|
|
212
|
+
id: 'subagent',
|
|
213
|
+
name: 'Subagent',
|
|
214
|
+
badge: '子 Agent',
|
|
215
|
+
tagline: '4 种流行编码 Agent 的 subagent 机制对比:prompt、输出、文件、时机、并行、生命周期',
|
|
216
|
+
description:
|
|
217
|
+
'Subagent(子 Agent)是编码 Agent 将任务委派给隔离上下文的子进程的机制。主 Agent 构造精确的 prompt 派发子 Agent,子 Agent 在隔离上下文中执行任务后返回结果。本模块对比 Superpowers、Claude Code、opencode、Codex CLI 四种工具的 subagent 实现,覆盖 6 个关键维度。',
|
|
218
|
+
|
|
219
|
+
// ── 六维度对比表 ──
|
|
220
|
+
comparison: {
|
|
221
|
+
title: '六维度对比总览',
|
|
222
|
+
rows: [
|
|
223
|
+
{
|
|
224
|
+
dimension: '1. Prompt 构造',
|
|
225
|
+
superpowers: '模板文件(implementer-prompt.md)+ 占位符(BRIEF_FILE/REPORT_FILE/任务名)',
|
|
226
|
+
claude: '.md 文件 frontmatter(name/description/tools/model)+ 正文 system prompt',
|
|
227
|
+
opencode: 'task 工具 prompt 参数 + subagent_type 选择类型 + description(3-5 词)',
|
|
228
|
+
codex: 'spawn_agent prompt + fork_turns:"none"(隔离上下文)+ agent_type 角色文件 + model + reasoning_effort',
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
dimension: '2. 输出格式',
|
|
232
|
+
superpowers: '状态码(DONE/DONE_WITH_CONCERNS/BLOCKED/NEEDS_CONTEXT)+ commit SHA + 测试摘要 + 报告文件路径(<15 行)',
|
|
233
|
+
claude: '单条消息返回主 Agent。Transcript 中显示为 tool call 行(如 code-improver(Suggest improvements))',
|
|
234
|
+
opencode: '单条消息返回调用方。不直接对用户可见——主 Agent 需摘要转发',
|
|
235
|
+
codex: '子 Agent 最终答案推入父 Agent mailbox。父 Agent 在下一轮收到。wait_agent 是事件订阅非轮询',
|
|
236
|
+
},
|
|
237
|
+
{
|
|
238
|
+
dimension: '3. 文件机制',
|
|
239
|
+
superpowers: '工作空间目录(.superpowers/sdd/<plan>/):ledger(progress.md)、brief 文件、report 文件。Ledger 跨 compaction 存活',
|
|
240
|
+
claude: '~/.claude/agents/(用户级)或 .claude/agents/(项目级)或 --agents CLI JSON。优先级:managed > CLI > project > user > plugin',
|
|
241
|
+
opencode: '无文件定义。内置 agent 类型(explore/general/translate)。task_id 可恢复之前的 session',
|
|
242
|
+
codex: '~/.codex/agents/ 角色文件(agent_type)。~/.codex/config.toml 配置 default_subagent_model + reasoning_effort',
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
dimension: '4. 使用时机与分工',
|
|
246
|
+
superpowers: '计划驱动:逐任务派发。主 Agent = 控制器(协调/审查/裁决),子 Agent = 实现者(编码/测试/自审)。不在任务间暂停',
|
|
247
|
+
claude: '主 Agent 判断 subagent description 相关时自动委派。也可显式请求"Use the X agent to..."',
|
|
248
|
+
opencode: '"尽可能并发启动多个 agent"。委派后不重复工作,继续非重叠任务或等待结果。明确告知是写代码还是仅调研',
|
|
249
|
+
codex: '计划驱动:逐任务 spawn。有本地工作时不等(结果在下一轮到达),真正空闲时 wait_agent(5-10 分钟)',
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
dimension: '5. 并行机制与数量',
|
|
253
|
+
superpowers: '同一条消息中多个 dispatch = 并行。用于独立问题域(不同测试文件/不同子系统)。一条 dispatch = 顺序',
|
|
254
|
+
claude: 'Task 工具支持并行派发多个 subagent。多个 subagent 可同时执行独立任务',
|
|
255
|
+
opencode: '"在单条消息中使用多个 tool 调用"= 并行。启动后不重复已委派的工作',
|
|
256
|
+
codex: 'spawn_agent 创建子 Agent。可 spawn 多个。wait_agent 等待任一完成。V2 无显式数量上限(自动驱逐空闲子 Agent)',
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
dimension: '6. 生命周期与强制关闭',
|
|
260
|
+
superpowers: '返回单条消息后结束。可被 resume(fix findings R≤3 恢复同一实现者,R≥4 换新实现者+更强模型)。最多 5 轮修复',
|
|
261
|
+
claude: '运行至完成,返回单条消息。无 resume 机制。新 session 需重新 dispatch',
|
|
262
|
+
opencode: 'Fresh context(除非 task_id 恢复)。返回单条消息。输出应被信任。task_id 可续接同一子 Agent session',
|
|
263
|
+
codex: 'V2:无 close_agent,空闲子 Agent 自动驱逐(不阻塞)。V1:有 close_agent,审查后关闭。followup_task 恢复实现者。harness 驱逐的子 Agent 透明重载',
|
|
264
|
+
},
|
|
265
|
+
],
|
|
266
|
+
},
|
|
267
|
+
|
|
268
|
+
// ── Superpowers 示例详解 ──
|
|
269
|
+
superpowersExample: {
|
|
270
|
+
title: 'Superpowers subagent 示例详解',
|
|
271
|
+
description:
|
|
272
|
+
'Superpowers 的 subagent-driven-development 是最完整的 subagent 工作流——有模板文件、状态码契约、文件持久化、修复循环和两阶段审查。',
|
|
273
|
+
promptTemplate: `// implementer-prompt.md 模板(简化)
|
|
274
|
+
Subagent (general-purpose):
|
|
275
|
+
description: "Implement Task N: [task name]"
|
|
276
|
+
model: [MODEL — 必须指定,否则继承最贵模型]
|
|
277
|
+
prompt: |
|
|
278
|
+
You are implementing Task N: [task name]
|
|
279
|
+
|
|
280
|
+
## Task Description
|
|
281
|
+
Read your task brief first: [BRIEF_FILE]
|
|
282
|
+
It contains the full task text from the plan.
|
|
283
|
+
|
|
284
|
+
## Context
|
|
285
|
+
[Scene-setting: where this fits, dependencies, architectural context]
|
|
286
|
+
|
|
287
|
+
## Your Job
|
|
288
|
+
1. Implement exactly what the task specifies
|
|
289
|
+
2. Write tests (following TDD if task says to)
|
|
290
|
+
3. Verify implementation works
|
|
291
|
+
4. Commit your work
|
|
292
|
+
5. Self-review (see below)
|
|
293
|
+
6. Report back
|
|
294
|
+
|
|
295
|
+
## You Do Not Dispatch Subagents
|
|
296
|
+
Do all work yourself. Never spawn a subagent.
|
|
297
|
+
Review is the controller's job, not yours.
|
|
298
|
+
|
|
299
|
+
## Report Format
|
|
300
|
+
Write your full report to [REPORT_FILE]:
|
|
301
|
+
- What you implemented
|
|
302
|
+
- What you tested and test results
|
|
303
|
+
- TDD Evidence (RED + GREEN)
|
|
304
|
+
- Files changed
|
|
305
|
+
- Self-review findings
|
|
306
|
+
|
|
307
|
+
Then report back with ONLY (under 15 lines):
|
|
308
|
+
- Status: DONE | DONE_WITH_CONCERNS | BLOCKED | NEEDS_CONTEXT
|
|
309
|
+
- Commits created (short SHA + subject)
|
|
310
|
+
- One-line test summary
|
|
311
|
+
- Your concerns, if any
|
|
312
|
+
- The report file path`,
|
|
313
|
+
outputContract: `// 状态码契约
|
|
314
|
+
DONE // 任务完成,测试通过
|
|
315
|
+
DONE_WITH_CONCERNS // 完成但有疑虑
|
|
316
|
+
BLOCKED // 无法完成,需要帮助
|
|
317
|
+
NEEDS_CONTEXT // 缺少上下文信息
|
|
318
|
+
|
|
319
|
+
// 报告格式(<15 行,详情在报告文件中)
|
|
320
|
+
Status: DONE
|
|
321
|
+
Commits: a1b2c3d Implement user login
|
|
322
|
+
Tests: 14/14 passing, output pristine
|
|
323
|
+
Concerns: none
|
|
324
|
+
Report: .superpowers/sdd/plan-login/task-3-report.md`,
|
|
325
|
+
fileMechanism: `// 工作空间目录结构
|
|
326
|
+
.superpowers/sdd/<plan-name>/
|
|
327
|
+
├── progress.md # Ledger — 跨 compaction 存活的进度追踪
|
|
328
|
+
│ ├── "# SDD ledger — plan: <plan file path>"
|
|
329
|
+
│ ├── "Task 1: complete"
|
|
330
|
+
│ ├── "Task 2: complete"
|
|
331
|
+
│ └── "Task 3: fix round 2" ← 中途状态
|
|
332
|
+
├── task-1-brief.md # 任务简报(从计划提取)
|
|
333
|
+
├── task-1-report.md # 实现者报告
|
|
334
|
+
├── task-2-brief.md
|
|
335
|
+
├── task-2-report.md
|
|
336
|
+
├── task-3-brief.md
|
|
337
|
+
├── task-3-report.md
|
|
338
|
+
└── review-packages/ # 审查包
|
|
339
|
+
|
|
340
|
+
// Ledger 是恢复地图:
|
|
341
|
+
// compact 后主 Agent 读 ledger 知道哪些任务已完成
|
|
342
|
+
// 不会重复派发已完成任务`,
|
|
343
|
+
lifecycle: `// 修复循环生命周期
|
|
344
|
+
Task 开始
|
|
345
|
+
↓
|
|
346
|
+
派发 implementer subagent(fresh context)
|
|
347
|
+
↓
|
|
348
|
+
implementer 实现 + 测试 + 提交 + 自审
|
|
349
|
+
↓
|
|
350
|
+
派发 task-reviewer subagent(两阶段审查)
|
|
351
|
+
├── 阶段 1: 规格合规(是否做了该做的)
|
|
352
|
+
└── 阶段 2: 代码质量(做得好不好)
|
|
353
|
+
↓
|
|
354
|
+
审查通过?
|
|
355
|
+
├── 是 → 标记任务完成 → 下一个任务
|
|
356
|
+
└── 否 → 修复循环(最多 5 轮)
|
|
357
|
+
├── R ≤ 3: resume 同一 implementer(followup_task)
|
|
358
|
+
└── R ≥ 4: 派发新 implementer + 更强模型
|
|
359
|
+
↓
|
|
360
|
+
派发 scoped re-review(只审查修复部分)
|
|
361
|
+
↓
|
|
362
|
+
所有 findings 解决?
|
|
363
|
+
├── 是 → 标记任务完成
|
|
364
|
+
└── R = 5 → 裁决每个未决 finding
|
|
365
|
+
├── 有承重 finding → 裁决并继续(仅当每条路都是猜测时才停)
|
|
366
|
+
└── 无承重 finding → 暂存到 ledger 继续`,
|
|
367
|
+
},
|
|
368
|
+
|
|
369
|
+
// ── 各工具关键差异要点 ──
|
|
370
|
+
keyDifferences: {
|
|
371
|
+
title: '关键差异要点',
|
|
372
|
+
items: [
|
|
373
|
+
{ tool: 'Superpowers', point: '唯一有完整修复循环(5 轮)+ 两阶段审查 + ledger 持久化的工具。子 Agent 不允许再派子 Agent("You Do Not Dispatch Subagents")' },
|
|
374
|
+
{ tool: 'Claude Code', point: 'subagent 通过 .md 文件定义,有 5 级优先级(managed > CLI > project > user > plugin)。支持递归子目录发现。无 resume 机制' },
|
|
375
|
+
{ tool: 'opencode', point: '最简洁——无文件定义,内置 3 种 agent 类型。task_id 是唯一 resume 机制。明确要求"告知子 Agent 是写代码还是仅调研"' },
|
|
376
|
+
{ tool: 'Codex CLI', point: '最复杂——spawn_agent + followup_task + wait_agent 三工具配合。V2 无 close_agent(自动驱逐),V1 有。wait_agent 是事件订阅非轮询。必须显式设置 model + reasoning_effort' },
|
|
377
|
+
],
|
|
378
|
+
},
|
|
379
|
+
|
|
380
|
+
// ── 并行与防阻塞最佳实践 ──
|
|
381
|
+
bestPractices: {
|
|
382
|
+
title: '并行与防阻塞最佳实践',
|
|
383
|
+
items: [
|
|
384
|
+
{ practice: '并行触发', detail: '在单条消息中发起多个 subagent dispatch = 并行执行。每条消息一个 dispatch = 顺序。用于独立问题域(不同文件/不同子系统)' },
|
|
385
|
+
{ practice: '不重复工作', detail: '委派给 subagent 后,主 Agent 不做相同工作。继续非重叠任务或等待结果' },
|
|
386
|
+
{ practice: '精确构造 prompt', detail: '子 Agent 不继承会话历史——主 Agent 必须构造完整上下文。包含:任务描述、相关代码、约束条件、期望输出格式' },
|
|
387
|
+
{ practice: '状态码契约', detail: 'Superpowers 的 DONE/BLOCKED/NEEDS_CONTEXT 状态码让主 Agent 快速决策——不需要读完整报告就能决定下一步' },
|
|
388
|
+
{ practice: '文件持久化', detail: 'Superpowers 的 ledger(progress.md)跨 compaction 存活——compact 后主 Agent 读 ledger 恢复进度,不重复派发已完成任务' },
|
|
389
|
+
{ practice: '超时与驱逐', detail: 'Codex V2 自动驱逐空闲子 Agent(不阻塞主 Agent)。opencode 无显式超时——子 Agent 返回单条消息即结束' },
|
|
390
|
+
{ practice: '不无限嵌套', detail: 'Superpowers 明确禁止子 Agent 再派子 Agent。避免递归爆炸和上下文污染' },
|
|
391
|
+
{ practice: '修复用 resume 不用新建', detail: 'Codex V2 的 followup_task 透明重载被驱逐的子 Agent。Superpowers R≤3 resume 同一实现者。opencode 用 task_id 续接' },
|
|
392
|
+
],
|
|
393
|
+
},
|
|
394
|
+
},
|
|
395
|
+
],
|
|
396
|
+
}
|