ccg-ros2-workflow 2.2.2 → 3.0.0

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.
Files changed (186) hide show
  1. package/README.md +211 -96
  2. package/README.zh-CN.md +256 -0
  3. package/dist/cli.mjs +15 -15
  4. package/dist/index.d.mts +59 -36
  5. package/dist/index.d.ts +59 -36
  6. package/dist/index.mjs +4 -4
  7. package/dist/shared/ccg-ros2-workflow.Bhm8c7P1.mjs +5154 -0
  8. package/package.json +31 -12
  9. package/templates/codex/AGENTS.md +348 -0
  10. package/templates/codex/agents/ccg-implement.toml +73 -0
  11. package/templates/codex/agents/ccg-research.toml +73 -0
  12. package/templates/codex/agents/ccg-review.toml +82 -0
  13. package/templates/codex/config.toml +21 -0
  14. package/templates/codex/hooks/ccg-workflow.py +253 -0
  15. package/templates/codex/hooks.json +15 -0
  16. package/templates/commands/agents/planner.md +97 -122
  17. package/templates/commands/agents/system-integrator.md +2 -2
  18. package/templates/commands/agents/team-architect.md +97 -0
  19. package/templates/commands/agents/team-qa.md +121 -0
  20. package/templates/commands/agents/team-reviewer.md +112 -0
  21. package/templates/commands/commit.md +30 -1
  22. package/templates/commands/context.md +332 -0
  23. package/templates/commands/go.md +206 -0
  24. package/templates/commands/init.md +1 -1
  25. package/templates/commands/spec-impl.md +41 -21
  26. package/templates/commands/spec-init.md +21 -27
  27. package/templates/commands/spec-plan.md +54 -21
  28. package/templates/commands/spec-research.md +78 -26
  29. package/templates/commands/spec-review.md +20 -16
  30. package/templates/{commands → commands-legacy}/analyze.md +1 -1
  31. package/templates/commands-legacy/backend.md +224 -0
  32. package/templates/commands-legacy/codex-exec.md +411 -0
  33. package/templates/{commands → commands-legacy}/debug.md +1 -1
  34. package/templates/commands-legacy/enhance.md +55 -0
  35. package/templates/{commands → commands-legacy}/feat.md +2 -2
  36. package/templates/commands-legacy/frontend.md +213 -0
  37. package/templates/{commands → commands-legacy}/optimize.md +1 -1
  38. package/templates/{commands → commands-legacy}/plan.md +1 -15
  39. package/templates/{commands → commands-legacy}/team-plan.md +1 -1
  40. package/templates/commands-legacy/team.md +475 -0
  41. package/templates/{commands → commands-legacy}/test.md +1 -1
  42. package/templates/commands-legacy/workflow.md +283 -0
  43. package/templates/engine/model-router.md +123 -0
  44. package/templates/engine/phase-guide.md +207 -0
  45. package/templates/engine/strategies/debug-investigate.md +169 -0
  46. package/templates/engine/strategies/deep-research.md +141 -0
  47. package/templates/engine/strategies/direct-fix.md +108 -0
  48. package/templates/engine/strategies/full-collaborate.md +389 -0
  49. package/templates/engine/strategies/git-action.md +43 -0
  50. package/templates/engine/strategies/guided-develop.md +282 -0
  51. package/templates/engine/strategies/optimize-measure.md +103 -0
  52. package/templates/engine/strategies/quick-implement.md +96 -0
  53. package/templates/engine/strategies/refactor-safely.md +180 -0
  54. package/templates/engine/strategies/review-audit.md +123 -0
  55. package/templates/hooks/session-start.js +100 -0
  56. package/templates/hooks/skill-router.js +144 -0
  57. package/templates/hooks/subagent-context.js +161 -0
  58. package/templates/hooks/task-utils.js +190 -0
  59. package/templates/hooks/workflow-state.js +55 -0
  60. package/templates/output-styles/abyss-command.md +56 -0
  61. package/templates/output-styles/abyss-concise.md +89 -0
  62. package/templates/output-styles/abyss-ritual.md +70 -0
  63. package/templates/output-styles/engineer-professional.md +20 -3
  64. package/templates/output-styles/laowang-engineer.md +2 -2
  65. package/templates/prompts/antigravity/analyzer.md +59 -0
  66. package/templates/prompts/antigravity/architect.md +55 -0
  67. package/templates/prompts/antigravity/builder.md +52 -0
  68. package/templates/prompts/antigravity/debugger.md +48 -0
  69. package/templates/prompts/antigravity/frontend.md +50 -0
  70. package/templates/prompts/antigravity/optimizer.md +40 -0
  71. package/templates/prompts/antigravity/reviewer.md +67 -0
  72. package/templates/prompts/antigravity/tester.md +39 -0
  73. package/templates/prompts/claude/debugger.md +1 -1
  74. package/templates/prompts/claude/reviewer.md +1 -1
  75. package/templates/prompts/codex/analyzer.md +8 -0
  76. package/templates/prompts/codex/architect.md +9 -1
  77. package/templates/prompts/codex/builder.md +61 -0
  78. package/templates/prompts/codex/debugger.md +9 -1
  79. package/templates/prompts/codex/optimizer.md +7 -0
  80. package/templates/prompts/codex/reviewer.md +7 -0
  81. package/templates/prompts/codex/tester.md +8 -1
  82. package/templates/prompts/gemini/analyzer.md +11 -3
  83. package/templates/prompts/gemini/architect.md +10 -2
  84. package/templates/prompts/gemini/debugger.md +8 -0
  85. package/templates/prompts/gemini/frontend.md +10 -2
  86. package/templates/prompts/gemini/optimizer.md +9 -2
  87. package/templates/prompts/gemini/reviewer.md +7 -0
  88. package/templates/prompts/gemini/tester.md +8 -1
  89. package/templates/rules/ccg-skill-routing.md +91 -0
  90. package/templates/rules/ccg-skills.md +65 -0
  91. package/templates/skills/SKILL.md +92 -0
  92. package/templates/skills/domains/ai/SKILL.md +34 -0
  93. package/templates/skills/domains/ai/agent-dev.md +242 -0
  94. package/templates/skills/domains/ai/llm-security.md +288 -0
  95. package/templates/skills/domains/ai/prompt-and-eval.md +279 -0
  96. package/templates/skills/domains/ai/rag-system.md +542 -0
  97. package/templates/skills/domains/architecture/SKILL.md +42 -0
  98. package/templates/skills/domains/architecture/api-design.md +225 -0
  99. package/templates/skills/domains/architecture/caching.md +299 -0
  100. package/templates/skills/domains/architecture/cloud-native.md +285 -0
  101. package/templates/skills/domains/architecture/message-queue.md +329 -0
  102. package/templates/skills/domains/architecture/security-arch.md +297 -0
  103. package/templates/skills/domains/data-engineering/SKILL.md +207 -0
  104. package/templates/skills/domains/development/SKILL.md +46 -0
  105. package/templates/skills/domains/development/cpp.md +369 -0
  106. package/templates/skills/domains/development/go.md +323 -0
  107. package/templates/skills/domains/development/java.md +277 -0
  108. package/templates/skills/domains/development/python.md +487 -0
  109. package/templates/skills/domains/development/rust.md +313 -0
  110. package/templates/skills/domains/development/shell.md +313 -0
  111. package/templates/skills/domains/development/typescript.md +277 -0
  112. package/templates/skills/domains/devops/SKILL.md +39 -0
  113. package/templates/skills/domains/devops/cost-optimization.md +272 -0
  114. package/templates/skills/domains/devops/database.md +217 -0
  115. package/templates/skills/domains/devops/devsecops.md +198 -0
  116. package/templates/skills/domains/devops/git-workflow.md +181 -0
  117. package/templates/skills/domains/devops/observability.md +280 -0
  118. package/templates/skills/domains/devops/performance.md +336 -0
  119. package/templates/skills/domains/devops/testing.md +283 -0
  120. package/templates/skills/domains/infrastructure/SKILL.md +200 -0
  121. package/templates/skills/domains/mobile/SKILL.md +224 -0
  122. package/templates/skills/domains/orchestration/SKILL.md +29 -0
  123. package/templates/skills/domains/orchestration/multi-agent.md +263 -0
  124. package/templates/skills/domains/ros2-control/SKILL.md +206 -0
  125. package/templates/skills/domains/ros2-hardware/SKILL.md +277 -0
  126. package/templates/skills/domains/ros2-manipulation/SKILL.md +237 -0
  127. package/templates/skills/domains/ros2-navigation/SKILL.md +196 -0
  128. package/templates/skills/domains/ros2-perception/SKILL.md +166 -0
  129. package/templates/skills/domains/ros2-upper-app/SKILL.md +50 -0
  130. package/templates/skills/domains/ros2-upper-app/launch-files.md +224 -0
  131. package/templates/skills/domains/ros2-upper-app/parameters.md +192 -0
  132. package/templates/skills/domains/ros2-upper-app/python-nodes.md +249 -0
  133. package/templates/skills/domains/ros2-upper-app/rviz-config.md +158 -0
  134. package/templates/skills/domains/ros2-upper-app/simulation.md +225 -0
  135. package/templates/skills/domains/security/SKILL.md +72 -0
  136. package/templates/skills/domains/security/blue-team.md +436 -0
  137. package/templates/skills/domains/security/code-audit.md +265 -0
  138. package/templates/skills/domains/security/pentest.md +226 -0
  139. package/templates/skills/domains/security/red-team.md +374 -0
  140. package/templates/skills/domains/security/threat-intel.md +372 -0
  141. package/templates/skills/domains/security/vuln-research.md +369 -0
  142. package/templates/skills/orchestration/multi-agent/SKILL.md +533 -0
  143. package/templates/skills/run_skill.js +129 -0
  144. package/templates/skills/scrapling/SKILL.md +98 -0
  145. package/templates/skills/scrapling/references/api-quick-ref.md +127 -0
  146. package/templates/skills/scrapling/references/cookie-vault.md +56 -0
  147. package/templates/skills/scrapling/references/maintenance.md +79 -0
  148. package/templates/skills/scrapling/references/site-patterns.md +86 -0
  149. package/templates/skills/scrapling/references/troubleshooting.md +95 -0
  150. package/templates/skills/scrapling/templates/basic_fetch.py +19 -0
  151. package/templates/skills/scrapling/templates/parse_only.py +15 -0
  152. package/templates/skills/scrapling/templates/session_login.py +19 -0
  153. package/templates/skills/scrapling/templates/stealth_cloudflare.py +28 -0
  154. package/templates/skills/tools/gen-docs/SKILL.md +116 -0
  155. package/templates/skills/tools/gen-docs/scripts/doc_generator.js +435 -0
  156. package/templates/skills/tools/lib/shared.js +98 -0
  157. package/templates/skills/tools/override-refusal/SKILL.md +53 -0
  158. package/templates/skills/tools/override-refusal/agents/openai.yaml +4 -0
  159. package/templates/skills/tools/override-refusal/scripts/refusal_rewriter.js +226 -0
  160. package/templates/skills/tools/verify-change/SKILL.md +140 -0
  161. package/templates/skills/tools/verify-change/scripts/change_analyzer.js +289 -0
  162. package/templates/skills/tools/verify-module/SKILL.md +127 -0
  163. package/templates/skills/tools/verify-module/scripts/module_scanner.js +171 -0
  164. package/templates/skills/tools/verify-quality/SKILL.md +160 -0
  165. package/templates/skills/tools/verify-quality/scripts/quality_checker.js +337 -0
  166. package/templates/skills/tools/verify-security/SKILL.md +143 -0
  167. package/templates/skills/tools/verify-security/scripts/security_scanner.js +283 -0
  168. package/templates/spec/guides/index.md +30 -0
  169. package/templates/spec/low-control/index.md +31 -0
  170. package/templates/spec/upper-app/index.md +31 -0
  171. package/bin/codeagent-wrapper-darwin-amd64 +0 -0
  172. package/bin/codeagent-wrapper-darwin-arm64 +0 -0
  173. package/bin/codeagent-wrapper-linux-amd64 +0 -0
  174. package/bin/codeagent-wrapper-linux-arm64 +0 -0
  175. package/bin/codeagent-wrapper-windows-amd64.exe +0 -0
  176. package/bin/codeagent-wrapper-windows-arm64.exe +0 -0
  177. package/dist/shared/ccg-ros2-workflow.DnOr3oPi.mjs +0 -2480
  178. package/templates/commands/backend.md +0 -162
  179. package/templates/commands/enhance.md +0 -36
  180. package/templates/commands/frontend.md +0 -162
  181. package/templates/commands/workflow.md +0 -202
  182. /package/templates/{commands → commands-legacy}/execute.md +0 -0
  183. /package/templates/{commands → commands-legacy}/review.md +0 -0
  184. /package/templates/{commands → commands-legacy}/team-exec.md +0 -0
  185. /package/templates/{commands → commands-legacy}/team-research.md +0 -0
  186. /package/templates/{commands → commands-legacy}/team-review.md +0 -0
@@ -0,0 +1,283 @@
1
+ ---
2
+ description: 'ROS2 多模型协作开发工作流(研究→构思→计划→执行→优化→评审→硬件部署),智能路由上层应用→{{FRONTEND_PRIMARY}}、底层控制→{{BACKEND_PRIMARY}}'
3
+ ---
4
+
5
+ # Workflow - ROS2 多模型协作开发
6
+
7
+ 使用质量把关、MCP 服务和多模型协作执行 ROS2 结构化开发工作流。
8
+
9
+ ## 使用方法
10
+
11
+ ```bash
12
+ /workflow <ROS2任务描述>
13
+ ```
14
+
15
+ ## 上下文
16
+
17
+ - 要开发的任务:$ARGUMENTS
18
+ - 带质量把关的结构化 7 阶段工作流(含硬件部署)
19
+ - 多模型协作:{{BACKEND_PRIMARY}}(底层控制)+ {{FRONTEND_PRIMARY}}(上层应用)+ Claude(编排)
20
+ - MCP 服务集成(ace-tool)以增强功能
21
+ - 目标平台:ROS2 Humble / 物理机器人
22
+
23
+ ## 你的角色
24
+
25
+ 你是**ROS2 编排者**,协调多模型协作系统(研究 → 构思 → 计划 → 执行 → 优化 → 评审 → 硬件部署),用中文协助用户,面向专业机器人开发者,交互应简洁专业,避免不必要解释。
26
+
27
+ **协作模型**:
28
+ - **ace-tool MCP** – 代码检索 + Prompt 增强
29
+ - **{{BACKEND_PRIMARY}}** – 底层控制:C++、硬件驱动、实时算法、控制器(**底层权威,可信赖**)
30
+ - **{{FRONTEND_PRIMARY}}** – 上层应用:Launch、Python、RViz、仿真配置(**上层高手,底层意见仅供参考**)
31
+ - **Claude (自己)** – 编排、计划、执行、交付
32
+
33
+ ---
34
+
35
+ ## 多模型调用规范
36
+
37
+ **工作目录**:
38
+ - `{{WORKDIR}}`:**必须通过 Bash 执行 `pwd`(Unix)或 `cd`(Windows CMD)获取当前工作目录的绝对路径**,禁止从 `$HOME` 或环境变量推断
39
+ - 如果用户通过 `/add-dir` 添加了多个工作区,先用 Glob/Grep 确定任务相关的工作区
40
+ - 如果无法确定,用 `AskUserQuestion` 询问用户选择目标工作区
41
+
42
+ **调用语法**(并行用 `run_in_background: true`,串行用 `false`):
43
+
44
+ ```
45
+ # 新会话调用
46
+ Bash({
47
+ command: "~/.claude/bin/codeagent-wrapper {{LITE_MODE_FLAG}}--progress --backend <{{BACKEND_PRIMARY}}|{{FRONTEND_PRIMARY}}> {{GEMINI_MODEL_FLAG}}- \"{{WORKDIR}}\" <<'EOF'
48
+ ROLE_FILE: <角色提示词路径>
49
+ <TASK>
50
+ 需求:<增强后的需求(如未增强则用 $ARGUMENTS)>
51
+ 上下文:<前序阶段收集的项目上下文、分析结果等>
52
+ ROS2上下文:<colcon工作空间、package.xml、launch文件、节点架构等>
53
+ </TASK>
54
+ OUTPUT: 期望输出格式
55
+ EOF",
56
+ run_in_background: true,
57
+ timeout: 3600000,
58
+ description: "简短描述"
59
+ })
60
+
61
+ # 复用会话调用
62
+ Bash({
63
+ command: "~/.claude/bin/codeagent-wrapper {{LITE_MODE_FLAG}}--progress --backend <{{BACKEND_PRIMARY}}|{{FRONTEND_PRIMARY}}> {{GEMINI_MODEL_FLAG}}resume <SESSION_ID> - \"{{WORKDIR}}\" <<'EOF'
64
+ ROLE_FILE: <角色提示词路径>
65
+ <TASK>
66
+ 需求:<增强后的需求(如未增强则用 $ARGUMENTS)>
67
+ 上下文:<前序阶段收集的项目上下文、分析结果等>
68
+ ROS2上下文:<colcon工作空间、package.xml、launch文件、节点架构等>
69
+ </TASK>
70
+ OUTPUT: 期望输出格式
71
+ EOF",
72
+ run_in_background: true,
73
+ timeout: 3600000,
74
+ description: "简短描述"
75
+ })
76
+ ```
77
+
78
+ **角色提示词**:
79
+
80
+ | 阶段 | 底层控制 | 上层应用 |
81
+ |------|----------|----------|
82
+ | 分析 | `~/.claude/.ccg/prompts/{{BACKEND_PRIMARY}}/analyzer.md` | `~/.claude/.ccg/prompts/{{FRONTEND_PRIMARY}}/analyzer.md` |
83
+ | 规划 | `~/.claude/.ccg/prompts/{{BACKEND_PRIMARY}}/architect.md` | `~/.claude/.ccg/prompts/{{FRONTEND_PRIMARY}}/architect.md` |
84
+ | 审查 | `~/.claude/.ccg/prompts/{{BACKEND_PRIMARY}}/reviewer.md` | `~/.claude/.ccg/prompts/{{FRONTEND_PRIMARY}}/reviewer.md` |
85
+
86
+ **会话复用**:每次调用返回 `SESSION_ID: xxx`,后续阶段用 `resume xxx` 复用上下文(注意:是 `resume`,不是 `--resume`)。
87
+
88
+ **并行调用**:使用 `run_in_background: true` 启动,用 `TaskOutput` 等待结果。**必须等所有模型返回后才能进入下一阶段**。
89
+
90
+ **等待后台任务**(使用最大超时 600000ms = 10 分钟):
91
+
92
+ ```
93
+ TaskOutput({ task_id: "<task_id>", block: true, timeout: 600000 })
94
+ ```
95
+
96
+ **重要**:
97
+ - 必须指定 `timeout: 600000`,否则默认只有 30 秒会导致提前超时。
98
+ 如果 10 分钟后仍未完成,继续用 `TaskOutput` 轮询,**绝对不要 Kill 进程**。
99
+ - 若因等待时间过长跳过了等待 TaskOutput 结果,则**必须调用 `AskUserQuestion` 工具询问用户选择继续等待还是 Kill Task。禁止直接 Kill Task。**
100
+ - ⛔ **上层应用模型失败必须重试**:若上层应用模型调用失败(非零退出码或输出包含错误信息),最多重试 2 次(间隔 5 秒)。仅当 3 次全部失败时才跳过上层应用模型结果并使用单模型结果继续。
101
+ - ⛔ **底层控制模型结果必须等待**:底层控制模型执行时间较长(5-15 分钟)属于正常。TaskOutput 超时后必须继续用 TaskOutput 轮询,**绝对禁止在底层控制模型未返回结果时直接跳过或继续下一阶段**。已启动的底层控制任务若被跳过 = 浪费 token + 丢失结果。
102
+
103
+ ---
104
+
105
+ ## 沟通守则
106
+
107
+ 1. 响应以模式标签 `[模式:X]` 开始,初始为 `[模式:研究]`。
108
+ 2. 核心工作流严格按 `研究 → 构思 → 计划 → 执行 → 优化 → 评审 → 硬件部署` 顺序流转。
109
+ 3. 每个阶段完成后必须请求用户确认。
110
+ 4. 评分低于 7 分或用户未批准时强制停止。
111
+ 5. 在需要询问用户时,尽量使用 `AskUserQuestion` 工具进行交互,举例场景:请求用户确认/选择/批准
112
+
113
+ ---
114
+
115
+ ## 执行工作流
116
+
117
+ **任务描述**:$ARGUMENTS
118
+
119
+ ### 🔍 阶段 1:研究与分析
120
+
121
+ `[模式:研究]` - 理解需求并收集 ROS2 上下文:
122
+
123
+ 1. **ROS2 环境检测**:
124
+ - 检查 colcon 工作空间结构(`src/`、`build/`、`install/`)
125
+ - 扫描 `package.xml` 文件,识别现有 ROS2 包
126
+ - 检查 launch 文件和配置文件
127
+ 2. **Prompt 准备**:直接将 $ARGUMENTS 作为后续多模型调用的输入。
128
+ 3. **上下文检索**:调用 `{{MCP_SEARCH_TOOL}}`,重点检索 ROS2 相关代码(节点、消息、服务、launch)
129
+ 4. **需求完整性评分**(0-10 分):
130
+ - 目标明确性(0-3)、预期结果(0-3)、边界范围(0-2)、约束条件(0-2)
131
+ - ≥7 分:继续 | <7 分:⛔ 停止,提出补充问题
132
+
133
+ ### 💡 阶段 2:方案构思
134
+
135
+ `[模式:构思]` - 多模型并行分析:
136
+
137
+ **并行调用**(`run_in_background: true`):
138
+ - **底层控制模型**:使用分析提示词,输出底层控制可行性(C++ 节点/硬件驱动/实时性/消息定义)、方案、风险
139
+ - **上层应用模型**:使用分析提示词,输出上层应用可行性(Launch 文件/Python 节点/RViz 配置/仿真)、方案、集成
140
+
141
+ 用 `TaskOutput` 等待结果。**📌 保存 SESSION_ID**(`BACKEND_SESSION` 和 `FRONTEND_SESSION`)。
142
+
143
+ **务必遵循上方 `多模型调用规范` 的 `重要` 指示**
144
+
145
+ 综合两方分析,输出方案对比(至少 2 个方案),包含:
146
+ - 节点架构设计(节点数量、职责划分)
147
+ - Topic/Service/Action 选型
148
+ - QoS 策略建议
149
+ - 硬件依赖(CAN/串口/传感器)
150
+
151
+ 等待用户选择方案。
152
+
153
+ ### 📋 阶段 3:详细规划
154
+
155
+ `[模式:计划]` - 多模型协作规划:
156
+
157
+ **并行调用**(复用会话 `resume <SESSION_ID>`):
158
+ - **底层控制模型**:使用规划提示词 + `resume $BACKEND_SESSION`,输出底层控制架构(C++ 节点实现/控制算法/消息定义/CMakeLists.txt)
159
+ - **上层应用模型**:使用规划提示词 + `resume $FRONTEND_SESSION`,输出上层应用架构(Launch 文件/参数配置/RViz 配置/Python 节点)
160
+
161
+ 用 `TaskOutput` 等待结果。
162
+
163
+ 综合两方规划,输出完整实施计划:
164
+ - **节点清单**:每个节点的职责、订阅/发布的 Topic、提供的 Service
165
+ - **消息定义**:自定义消息的 .msg 文件内容
166
+ - **QoS 配置**:每个 Topic 的 QoS 策略(Reliability/Durability/History)
167
+ - **Launch 配置**:启动顺序、参数传递、命名空间
168
+ - **文件清单**:需要创建/修改的文件列表
169
+
170
+ **⛔ HARD STOP**:展示计划,等待用户批准。未批准禁止进入执行阶段。
171
+
172
+ ### ⚙️ 阶段 4:代码执行
173
+
174
+ `[模式:执行]` - Claude 主导实施:
175
+
176
+ 根据批准的计划,按以下顺序实施:
177
+
178
+ 1. **消息定义**(如需):
179
+ - 创建 `msg/` 目录和 .msg 文件
180
+ - 更新 `CMakeLists.txt` 和 `package.xml`
181
+ 2. **C++ 节点**(底层控制):
182
+ - 创建节点源文件(`src/`)
183
+ - 实现订阅/发布/服务
184
+ - 配置 CMakeLists.txt
185
+ 3. **Python 节点**(上层应用):
186
+ - 创建 Python 节点(`scripts/` 或 `<package>/`)
187
+ - 实现 rclpy 逻辑
188
+ - 配置 setup.py
189
+ 4. **Launch 文件**:
190
+ - 创建 launch 文件(`launch/`)
191
+ - 配置节点启动、参数、重映射
192
+ 5. **配置文件**:
193
+ - 创建参数 YAML(`config/`)
194
+ - RViz 配置(`rviz/`)
195
+
196
+ 每完成一个模块,运行 `colcon build` 验证编译。
197
+
198
+ ### 🔧 阶段 5:优化审查
199
+
200
+ `[模式:优化]` - 多模型并行审查:
201
+
202
+ **并行调用**(复用会话 `resume <SESSION_ID>`):
203
+ - **底层控制模型**:使用审查提示词 + `resume $BACKEND_SESSION`,审查 C++ 代码、消息定义、实时性、线程安全
204
+ - **上层应用模型**:使用审查提示词 + `resume $FRONTEND_SESSION`,审查 Launch 文件、参数配置、Python 代码、RViz 配置
205
+
206
+ 用 `TaskOutput` 等待结果。
207
+
208
+ 综合两方审查意见,Claude 整合修复:
209
+ - **Critical 问题**:必须修复(QoS 不匹配、生命周期错误、线程不安全)
210
+ - **Warning 问题**:建议修复(命名不规范、参数缺失、日志不足)
211
+ - **Info 建议**:可选优化(性能优化、代码风格)
212
+
213
+ ### ✅ 阶段 6:最终评审
214
+
215
+ `[模式:评审]` - 质量把关:
216
+
217
+ 1. **编译测试**:
218
+ ```bash
219
+ colcon build --packages-select <package_name>
220
+ colcon test --packages-select <package_name>
221
+ ```
222
+ 2. **静态检查**:
223
+ - C++: `cpplint` / `cppcheck`
224
+ - Python: `flake8` / `pylint`
225
+ 3. **ROS2 规范检查**:
226
+ - package.xml 完整性
227
+ - CMakeLists.txt 正确性
228
+ - Launch 文件语法
229
+ 4. **文档完整性**:
230
+ - README.md 包含使用说明
231
+ - 代码注释充分
232
+ - Launch 文件有说明
233
+
234
+ 输出评审报告,等待用户确认。
235
+
236
+ ### 🚀 阶段 7:硬件部署
237
+
238
+ `[模式:硬件部署]` - 生成部署方案:
239
+
240
+ 1. **硬件依赖检查**:
241
+ - 串口设备(`/dev/ttyUSB*`、`/dev/ttyACM*`)
242
+ - CAN 总线(`can0`、`can1`)
243
+ - 传感器设备(相机、激光雷达)
244
+ - 权限配置(udev rules)
245
+ 2. **部署脚本生成**:
246
+ ```bash
247
+ # deploy.sh
248
+ #!/bin/bash
249
+ # 检查硬件设备
250
+ # 配置 udev rules
251
+ # 启动 ROS2 节点
252
+ # 监控运行状态
253
+ ```
254
+ 3. **Gazebo 仿真验证**(可选):
255
+ - 生成 Gazebo world 文件
256
+ - 配置机器人模型(URDF/SDF)
257
+ - 启动仿真环境
258
+ - 验证节点通信
259
+ 4. **部署清单**:
260
+ - 硬件连接检查表
261
+ - 软件依赖安装命令
262
+ - 启动命令
263
+ - 故障排查指南
264
+
265
+ 输出部署文档和脚本,等待用户确认。
266
+
267
+ ---
268
+
269
+ ## 完成标准
270
+
271
+ 所有 7 个阶段完成后,输出最终交付清单:
272
+
273
+ - ✅ ROS2 包结构完整(package.xml、CMakeLists.txt、setup.py)
274
+ - ✅ 节点实现完成(C++/Python)
275
+ - ✅ 消息定义正确(.msg/.srv/.action)
276
+ - ✅ Launch 文件可用
277
+ - ✅ 配置文件完整(params.yaml、rviz config)
278
+ - ✅ 编译测试通过
279
+ - ✅ 代码审查通过
280
+ - ✅ 硬件部署方案就绪
281
+ - ✅ 文档完整
282
+
283
+ **🎉 ROS2 开发工作流完成!**
@@ -0,0 +1,123 @@
1
+ # CCG 模型路由器 — 运行时模型选择框架
2
+
3
+ > 本文件由策略文件通过 Read 加载,提供动态模型选择和 codeagent-wrapper 调用模板。
4
+
5
+ ## 1. 获取模型配置
6
+
7
+ 读取用户配置确定可用模型:
8
+
9
+ ```
10
+ Read ~/.claude/.ccg/config.toml
11
+ ```
12
+
13
+ 从 `[routing]` 区块提取:
14
+ - `frontend.primary` — 上层应用模型(默认 `gemini`)
15
+ - `backend.primary` — 底层控制模型(默认 `codex`)
16
+ - `geminiModel` — Gemini 型号(默认 `gemini-3.1-pro-preview`)
17
+
18
+ 如果配置文件不存在或不可读,使用默认值直接继续。
19
+
20
+ ## 2. 按阶段选择模型
21
+
22
+ ### 分析/研究阶段
23
+ | 任务领域 | 推荐模型 | 角色提示词 |
24
+ |---------|---------|-----------|
25
+ | 底层控制/架构 | backend 模型 | `$BACKEND/analyzer.md` |
26
+ | 上层应用/UI | frontend 模型 | `$FRONTEND/analyzer.md` |
27
+ | 全栈 | 双模型并行 | 各用对应 analyzer |
28
+ | 安全 | backend 模型 | `$BACKEND/analyzer.md` |
29
+
30
+ ### 规划阶段
31
+ | 任务领域 | 推荐模型 | 角色提示词 |
32
+ |---------|---------|-----------|
33
+ | 架构设计 | backend 模型 | `$BACKEND/architect.md` |
34
+ | ROS2系统集成 设计 | frontend 模型 | `$FRONTEND/architect.md` |
35
+ | 全栈 | 双模型并行 | 各用对应 architect |
36
+
37
+ ### 审查阶段(始终双模型交叉验证)
38
+ - backend 模型 + `$BACKEND/reviewer.md`
39
+ - frontend 模型 + `$FRONTEND/reviewer.md`
40
+
41
+ ### 调试阶段
42
+ | 任务领域 | 推荐模型 | 角色提示词 |
43
+ |---------|---------|-----------|
44
+ | 底层控制问题 | backend 模型优先 | `$BACKEND/debugger.md` |
45
+ | 上层应用问题 | frontend 模型优先 | `$FRONTEND/debugger.md` |
46
+ | 不确定 | 双模型并行 | 各用对应 debugger |
47
+
48
+ ### 实施阶段
49
+
50
+ **默认模式**(Claude 执行):
51
+ - 外部模型仅提供建议,Claude 执行所有文件修改
52
+
53
+ **Codex Builder 模式**(用户选择时):
54
+ - backend 模型 + `$BACKEND/builder.md` — **有完整写权限**,直接写代码到文件系统
55
+ - Claude 监控进度,审查产出,必要时接管
56
+ - 适用于 M-L 复杂度、低中风险的明确实施任务
57
+
58
+ ## 3. 调用模板
59
+
60
+ ### 获取工作目录
61
+
62
+ 先确定当前工作目录(不可从 $HOME 推断):
63
+ ```
64
+ WORKDIR=$(pwd)
65
+ ```
66
+
67
+ ### 新会话调用
68
+
69
+ ```
70
+ Bash({
71
+ command: "~/.claude/bin/codeagent-wrapper {{LITE_MODE_FLAG}}--progress --backend $MODEL {{GEMINI_MODEL_FLAG}}- \"$WORKDIR\" <<'CODEAGENT_EOF'\nROLE_FILE: ~/.claude/.ccg/prompts/$MODEL/$ROLE.md\n<TASK>\n$TASK_CONTENT\n</TASK>\nOUTPUT: $OUTPUT_FORMAT\nCODEAGENT_EOF",
72
+ run_in_background: true,
73
+ timeout: 3600000,
74
+ description: "$SHORT_DESCRIPTION"
75
+ })
76
+ ```
77
+
78
+ 变量说明:
79
+ - `$MODEL` — 选定的模型名(`codex` / `gemini` / `claude`)
80
+ - `$ROLE` — 角色文件名(`analyzer` / `architect` / `reviewer` / `debugger` / `optimizer` / `tester` / `builder`)
81
+ - `$TASK_CONTENT` — 任务内容(需求 + 上下文)
82
+ - `$OUTPUT_FORMAT` — 期望输出格式
83
+ - `$SHORT_DESCRIPTION` — 简短描述(用于进度显示)
84
+
85
+ ### 复用会话调用
86
+
87
+ ```
88
+ Bash({
89
+ command: "~/.claude/bin/codeagent-wrapper {{LITE_MODE_FLAG}}--progress --backend $MODEL {{GEMINI_MODEL_FLAG}}resume $SESSION_ID - \"$WORKDIR\" <<'CODEAGENT_EOF'\nROLE_FILE: ~/.claude/.ccg/prompts/$MODEL/$ROLE.md\n<TASK>\n$TASK_CONTENT\n</TASK>\nOUTPUT: $OUTPUT_FORMAT\nCODEAGENT_EOF",
90
+ run_in_background: true,
91
+ timeout: 3600000,
92
+ description: "$SHORT_DESCRIPTION"
93
+ })
94
+ ```
95
+
96
+ ### 并行双模型调用模式
97
+
98
+ 同时启动两个模型,各自独立分析:
99
+
100
+ 1. 启动 backend 模型(`run_in_background: true`)
101
+ 2. 启动 frontend 模型(`run_in_background: true`)
102
+ 3. 等待两者完成:
103
+ ```
104
+ TaskOutput({ task_id: "$BACKEND_TASK_ID", block: true, timeout: 600000 })
105
+ TaskOutput({ task_id: "$FRONTEND_TASK_ID", block: true, timeout: 600000 })
106
+ ```
107
+ 4. 综合双方结果
108
+
109
+ ## 4. 等待与重试规则
110
+
111
+ | 场景 | 策略 |
112
+ |------|------|
113
+ | frontend 模型失败 | 重试最多 2 次,间隔 5s |
114
+ | backend 模型运行中 | 可能需要 5-15 分钟,保持轮询,永不终止 |
115
+ | 3 次全败 | 降级为单模型模式,告知用户 |
116
+ | 超时 | 600s 等待上限,超时后报告并询问用户 |
117
+
118
+ ## 5. SESSION_ID 管理
119
+
120
+ - 每次 codeagent-wrapper 调用返回 `Session-ID: xxx`
121
+ - 捕获并保存:`BACKEND_SESSION`、`FRONTEND_SESSION`
122
+ - 后续阶段通过 `resume $SESSION_ID` 复用上下文
123
+ - 复用会话可减少重复分析,提升效率
@@ -0,0 +1,207 @@
1
+ # CCG 通用阶段指导
2
+
3
+ > 本文件定义所有策略共享的阶段执行规范。策略文件可通过 Read 引用。
4
+
5
+ ## 1. 阶段状态自检
6
+
7
+ 每完成一个阶段,回顾对应的 `[phase-state:N]` 块:
8
+ 1. 确认该阶段的 Gate 条件已满足
9
+ 2. 输出 `📍 Next: [具体动作]` 告知用户下一步
10
+ 3. 如有 `[required]` 标记的阶段未完成,不可跳过
11
+
12
+ ## 2. Gate Check 执行规范
13
+
14
+ Gate 是阶段间的硬性检查点。执行方式:
15
+
16
+ - **数据 Gate**:检查前序阶段是否产出了必要数据(分析结果?计划文件?)
17
+ - **确认 Gate(HARD STOP)**:必须等待用户明确确认才能继续
18
+ - **质量 Gate**:检查产出物是否达到最低质量标准
19
+
20
+ Gate 失败时:说明缺失什么,给出补救建议,不可绕过。
21
+
22
+ ## 3. Next-Action 格式
23
+
24
+ 每个阶段完成后输出:
25
+
26
+ ```
27
+ 📍 Next: [一句话描述下一步具体动作]
28
+ ```
29
+
30
+ 示例:
31
+ - `📍 Next: 加载模型路由器,启动双模型并行分析`
32
+ - `📍 Next: 请确认以上修复方案是否正确`
33
+ - `📍 Next: 运行测试验证修复效果`
34
+
35
+ ## 4. 策略升级规则
36
+
37
+ 执行中发现复杂度超出当前策略能力时:
38
+
39
+ 1. 明确告知用户:`当前策略为 [名称],但发现 [原因],建议升级到 [目标策略]`
40
+ 2. 等待用户确认
41
+ 3. 确认后:`Read ~/.claude/.ccg/engine/strategies/[target].md`
42
+ 4. 从新策略的 Phase 1 开始(已完成的分析工作可复用)
43
+
44
+ **只能升级,不能降级**(除非用户明确要求)。
45
+
46
+ ## 5. 错误恢复
47
+
48
+ | 场景 | 处理方式 |
49
+ |------|---------|
50
+ | 外部模型调用失败 | 按模型路由器重试规则处理 |
51
+ | 测试失败 | 分析失败原因,修复后重新运行 |
52
+ | 用户要求中止 | 立即停止,报告已完成的工作 |
53
+ | 意外文件冲突 | 报告冲突,等待用户决策 |
54
+
55
+ ## 6. Team Dispatch 协议
56
+
57
+ 当策略需要并行实施时,使用 Agent Teams:
58
+
59
+ ### 前置条件
60
+ - 任务已拆分为文件级子任务(互不重叠)
61
+ - plan.md 已审批
62
+
63
+ ### 标准流程
64
+ ```
65
+ 1. TeamCreate({ team_name: "{task-id}-team" })
66
+ 2. 同一消息内并行 spawn 所有 Layer 1 Builder
67
+ 3. 等待完成 → spawn Layer 2(如有)
68
+ 4. spawn Reviewer 快检
69
+ 5. Critical → spawn fix-dev(最多 2 轮)
70
+ 6. shutdown 所有 teammates
71
+ ```
72
+
73
+ ### Builder Prompt 必含项
74
+ - `## 工作目录` — 绝对路径
75
+ - `## 文件范围约束(⛔ 硬性规则)` — 只能改的文件列表
76
+ - `## 实施步骤` — 具体操作
77
+ - `## 验收标准` — 怎样算完成
78
+
79
+ ### Spec 注入
80
+ PreToolUse Hook 自动为 Team member 注入:
81
+ - context.jsonl 中列出的 spec 文件
82
+ - requirements.md 和 plan.md 摘要
83
+ - research/ 目录下的研究成果
84
+
85
+ Builder 不需要在 prompt 中手动粘贴 spec — Hook 自动处理。
86
+
87
+ ### 降级方案
88
+ TeamCreate 失败(Agent Teams 未启用)→ Claude 自己按计划顺序实施。
89
+
90
+ ## 7. 输出规范
91
+
92
+ - 中文交流,技术术语保留英文
93
+ - 代码块标明语言
94
+ - 变更摘要用 git diff 格式
95
+ - 研究结果用表格对比
96
+
97
+ ## 8. Spec Evolution Protocol — Spec 反馈环
98
+
99
+ > 让 `.ccg/spec/` 从静态文档变为随项目开发自动进化的活知识库。
100
+
101
+ ### 触发条件
102
+
103
+ 任务归档前(status → "archived"),如果以下任一条件成立,**必须执行 Spec Evolution**:
104
+ - 本次开发中发现了可复用的编码模式或约定
105
+ - 外部模型审查提出了有价值的规范建议
106
+ - 修复了一个非显而易见的坑(未来可能再踩)
107
+ - 引入了新的第三方库/API/架构模式
108
+
109
+ ### 执行步骤
110
+
111
+ 1. **提炼经验**:分析 `git diff` + review.md(如有),提取可复用的经验教训
112
+ 2. **分类归属**:判断经验属于哪个 Spec 域:
113
+ - 底层控制相关 → `.ccg/spec/backend/index.md`
114
+ - 上层应用相关 → `.ccg/spec/frontend/index.md`
115
+ - 跨模块/通用 → `.ccg/spec/guides/index.md`
116
+ 3. **草拟更新**:以追加方式写出建议新增的 Spec 条目(不覆盖现有内容)
117
+ 4. **展示给用户**:
118
+ ```
119
+ 📝 Spec Evolution — 本次开发经验提炼
120
+
121
+ 建议新增到 .ccg/spec/backend/index.md:
122
+ - [规范条目](来源:{task-name},{日期})
123
+
124
+ 确认写入?[Y/n]
125
+ ```
126
+ 5. **用户确认后写入**(⛔ 不可静默写入 Spec)
127
+ 6. **无值得提炼的经验 → 跳过**(不要强行凑条目)
128
+
129
+ ### 条目质量标准
130
+
131
+ 好的 Spec 条目:
132
+ - ✅ 具体:引用真实文件路径和 API 签名
133
+ - ✅ 说明 Why:不只说"要这样做",还说"因为…"
134
+ - ✅ 可验证:子 Agent 能根据条目判断对错
135
+
136
+ 坏的 Spec 条目:
137
+ - ❌ 空泛:"写好的代码" / "注意安全"
138
+ - ❌ 一次性:只对本次任务有价值,对未来无意义
139
+
140
+ ## 9. Loop Detection & Recovery — 死循环检测
141
+
142
+ > workflow-state Hook 自动追踪每轮的 phase + nextAction。连续 3 轮无变化触发 Break-Loop Protocol。
143
+
144
+ ### 机制
145
+
146
+ - Hook 在每轮用户消息时写入 `.ccg/tasks/{name}/.turns.json`(最近 10 轮滚动缓冲)
147
+ - 检测规则:连续 3 轮 `phase` + `nextAction` 完全相同 → 判定为死循环
148
+ - 触发后在 `<ccg-state>` 面包屑中注入 `⚠️ LOOP DETECTED` 警告
149
+
150
+ ### Break-Loop Protocol(Claude 收到警告后必须执行)
151
+
152
+ 1. **立即停止**当前重复动作
153
+ 2. **根因分析**(5 Why):
154
+ - 是外部依赖阻塞?(网络/API/权限)→ 告知用户
155
+ - 是策略不适配?→ 建议升级策略
156
+ - 是信息不足?→ 向用户提问
157
+ - 是实现路径走死?→ 换方案
158
+ 3. **更新 task.json**:`nextAction` 必须变更为新的动作描述(打破循环)
159
+ 4. **如果连续 2 次触发 Break-Loop**(即 6 轮无进展)→ 强制暂停,输出完整状态摘要请用户介入
160
+
161
+ ## 10. Ralph Loop — 迭代审查协议
162
+
163
+ > 审查不是一次性动作。每轮 spawn 新 Agent(干净上下文),读取磁盘最新状态重新验证,循环自修复。
164
+
165
+ ### 适用场景
166
+
167
+ 策略中标注为 `[Ralph Loop]` 的审查阶段,使用迭代审查代替一次性审查。
168
+
169
+ ### 标准流程
170
+
171
+ ```
172
+ Round N (N=1,2,...,MAX_ROUNDS):
173
+ 1. 双模型并行审查(每次 spawn 新 Agent,干净上下文)
174
+ 2. 质量关卡(verify-security / verify-quality / verify-change)
175
+ 3. 综合审查报告,按 Critical / Warning / Info 分级
176
+ 4. 展示给用户,询问:
177
+ - 有 Critical → "发现 N 个 Critical 问题,是否修复后再审?[Y/n]"
178
+ - 无 Critical → "审查通过,是否需要再审一轮?[y/N]"
179
+ 5. 用户选择继续 →
180
+ a. spawn fix-dev(新 Agent,干净上下文)修复 Critical 问题
181
+ b. 进度追加到 .ccg/tasks/{name}/fix-log.jsonl
182
+ c. 回到 Round N+1
183
+ 6. 用户选择停止 → 退出循环,进入下一阶段
184
+ ```
185
+
186
+ ### 关键规则
187
+
188
+ - **每轮审查必须是新 Agent** — 不复用上一轮的 Agent 上下文,避免"上下文污染越修越烂"
189
+ - **fix-dev 也是新 Agent** — 从磁盘读取最新代码状态,只修分配的问题
190
+ - **最多 3 轮**(MAX_ROUNDS=3)— 超过 3 轮说明问题根深,应该回退到规划阶段
191
+ - **用户始终有决定权** — 每轮结束后由用户决定是否继续,不自动循环
192
+ - **fix-log.jsonl 追踪进度** — 每轮结果追加一行 JSON,格式:
193
+ ```jsonl
194
+ {"round": 1, "critical": 2, "warning": 5, "fixed": ["file1:issue", "file2:issue"], "ts": "ISO"}
195
+ {"round": 2, "critical": 0, "warning": 3, "fixed": ["file3:issue"], "ts": "ISO"}
196
+ ```
197
+
198
+ ### context.jsonl 角色标注
199
+
200
+ 策展 context.jsonl 时,按角色标注 `roles` 字段:
201
+ ```jsonl
202
+ {"file": ".ccg/spec/backend/index.md", "reason": "底层控制规范", "roles": ["implement", "review"]}
203
+ {"file": ".ccg/tasks/{name}/plan.md", "reason": "实施计划", "roles": ["implement"]}
204
+ {"file": ".ccg/tasks/{name}/research/lib-comparison.md", "reason": "库选型", "roles": ["research", "implement"]}
205
+ ```
206
+
207
+ SubAgent-context Hook 自动按角色过滤:无 `roles` 字段 = 注入所有角色。