Allow users to choose which model (Gemini/Codex) handles frontend and backend tasks during init (Step 2/4) and via menu option 6. Gemini model name is also configurable (e.g. gemini-2.5-flash). All 21 command templates updated from hardcoded model names to template variables.
11 KiB
11 KiB
description
| description |
|---|
| 多模型协作执行 - 根据计划获取原型 → Claude 重构实施 → 多模型审计交付 |
Execute - 多模型协作执行
$ARGUMENTS
核心协议
- 语言协议:与工具/模型交互用英语,与用户交互用中文
- 代码主权:外部模型对文件系统零写入权限,所有修改由 Claude 执行
- 脏原型重构:将 Codex/Gemini 的 Unified Diff 视为"脏原型",必须重构为生产级代码
- 止损机制:当前阶段输出通过验证前,不进入下一阶段
- 前置条件:仅在用户对
/ccg:plan输出明确回复 "Y" 后执行(如缺失,必须先二次确认)
多模型调用规范
工作目录:
{{WORKDIR}}:必须通过 Bash 执行pwd(Unix)或cd(Windows CMD)获取当前工作目录的绝对路径,禁止从$HOME或环境变量推断- 如果用户通过
/add-dir添加了多个工作区,先用 Glob/Grep 确定任务相关的工作区 - 如果无法确定,用
AskUserQuestion询问用户选择目标工作区
调用语法(并行用 run_in_background: true):
# 复用会话调用(推荐)- 原型生成(Implementation Prototype)
Bash({
command: "~/.claude/bin/codeagent-wrapper {{LITE_MODE_FLAG}}--progress --backend <{{BACKEND_PRIMARY}}|{{FRONTEND_PRIMARY}}> {{GEMINI_MODEL_FLAG}}resume <SESSION_ID> - \"{{WORKDIR}}\" <<'EOF'
ROLE_FILE: <角色提示词路径>
<TASK>
需求:<任务描述>
上下文:<计划内容 + 目标文件>
</TASK>
OUTPUT: Unified Diff Patch ONLY. Strictly prohibit any actual modifications.
EOF",
run_in_background: true,
timeout: 3600000,
description: "简短描述"
})
# 新会话调用 - 原型生成(Implementation Prototype)
Bash({
command: "~/.claude/bin/codeagent-wrapper {{LITE_MODE_FLAG}}--progress --backend <{{BACKEND_PRIMARY}}|{{FRONTEND_PRIMARY}}> {{GEMINI_MODEL_FLAG}}- \"{{WORKDIR}}\" <<'EOF'
ROLE_FILE: <角色提示词路径>
<TASK>
需求:<任务描述>
上下文:<计划内容 + 目标文件>
</TASK>
OUTPUT: Unified Diff Patch ONLY. Strictly prohibit any actual modifications.
EOF",
run_in_background: true,
timeout: 3600000,
description: "简短描述"
})
审计调用语法(Code Review / Audit):
Bash({
command: "~/.claude/bin/codeagent-wrapper {{LITE_MODE_FLAG}}--progress --backend <{{BACKEND_PRIMARY}}|{{FRONTEND_PRIMARY}}> {{GEMINI_MODEL_FLAG}}resume <SESSION_ID> - \"{{WORKDIR}}\" <<'EOF'
ROLE_FILE: <角色提示词路径>
<TASK>
Scope: Audit the final code changes.
Inputs:
- The applied patch (git diff / final unified diff)
- The touched files (relevant excerpts if needed)
Constraints:
- Do NOT modify any files.
- Do NOT output tool commands that assume filesystem access.
</TASK>
OUTPUT:
1) A prioritized list of issues (severity, file, rationale)
2) Concrete fixes; if code changes are needed, include a Unified Diff Patch in a fenced code block.
EOF",
run_in_background: true,
timeout: 3600000,
description: "简短描述"
})
角色提示词:
| 阶段 | Codex | Gemini |
|---|---|---|
| 实施 | ~/.claude/.ccg/prompts/codex/architect.md |
~/.claude/.ccg/prompts/gemini/frontend.md |
| 审查 | ~/.claude/.ccg/prompts/codex/reviewer.md |
~/.claude/.ccg/prompts/gemini/reviewer.md |
会话复用:如果 /ccg:plan 提供了 SESSION_ID,使用 resume <SESSION_ID> 复用上下文。
等待后台任务(最大超时 600000ms = 10 分钟):
TaskOutput({ task_id: "<task_id>", block: true, timeout: 600000 })
重要:
- 必须指定
timeout: 600000,否则默认只有 30 秒会导致提前超时 - 若 10 分钟后仍未完成,继续用
TaskOutput轮询,绝对不要 Kill 进程 - 若因等待时间过长跳过了等待,必须调用
AskUserQuestion询问用户选择继续等待还是 Kill Task - ⛔ Gemini 失败必须重试:若 Gemini 调用失败(非零退出码或输出包含错误信息),最多重试 2 次(间隔 5 秒)。仅当 3 次全部失败时才跳过 Gemini 结果并使用单模型结果继续。
- ⛔ Codex 结果必须等待:Codex 执行时间较长(5-15 分钟)属于正常。TaskOutput 超时后必须继续用 TaskOutput 轮询,绝对禁止在 Codex 未返回结果时直接跳过或继续下一阶段。已启动的 Codex 任务若被跳过 = 浪费 token + 丢失结果。
执行工作流
执行任务:$ARGUMENTS
📖 Phase 0:读取计划
[模式:准备]
-
识别输入类型:
- 计划文件路径(如
.claude/plan/xxx.md) - 直接的任务描述
- 计划文件路径(如
-
读取计划内容:
- 若提供了计划文件路径,读取并解析
- 提取:任务类型、实施步骤、关键文件、SESSION_ID
-
执行前确认:
- 若输入为"直接任务描述"或计划中缺失
SESSION_ID/ 关键文件:先向用户确认补全信息 - 若无法确认用户是否已对计划回复 "Y":必须二次询问确认后再进入下一阶段
- 若输入为"直接任务描述"或计划中缺失
-
任务类型判断:
任务类型 判断依据 路由 前端 页面、组件、UI、样式、布局 Gemini 后端 API、接口、数据库、逻辑、算法 Codex 全栈 同时包含前后端 Codex ∥ Gemini 并行
🔍 Phase 1:上下文快速检索
[模式:检索]
⚠️ 必须使用 MCP 工具快速检索上下文,禁止手动逐个读取文件
根据计划中的"关键文件"列表,调用 {{MCP_SEARCH_TOOL}} 检索相关代码:
{{MCP_SEARCH_TOOL}}({
query: "<基于计划内容构建的语义查询,包含关键文件、模块、函数名>",
project_root_path: "{{WORKDIR}}"
})
检索策略:
- 从计划的"关键文件"表格提取目标路径
- 构建语义查询覆盖:入口文件、依赖模块、相关类型定义
- 若检索结果不足,可追加 1-2 次递归检索
- 禁止使用 Bash + find/ls 手动探索项目结构
检索完成后:
- 整理检索到的代码片段
- 确认已获取实施所需的完整上下文
- 进入 Phase 3
🎨 Phase 3:原型获取
[模式:原型]
根据任务类型路由:
Route A: 前端/UI/样式 → Gemini
限制:上下文 < 32k tokens
- 调用 Gemini(使用
~/.claude/.ccg/prompts/gemini/frontend.md) - 输入:计划内容 + 检索到的上下文 + 目标文件
- OUTPUT:
Unified Diff Patch ONLY. Strictly prohibit any actual modifications. - Gemini 是前端设计的权威,其 CSS/React/Vue 原型为最终视觉基准
- ⚠️ 警告:忽略 Gemini 对后端逻辑的建议
- 若计划包含
GEMINI_SESSION:优先resume <GEMINI_SESSION>
Route B: 后端/逻辑/算法 → Codex
- 调用 Codex(使用
~/.claude/.ccg/prompts/codex/architect.md) - 输入:计划内容 + 检索到的上下文 + 目标文件
- OUTPUT:
Unified Diff Patch ONLY. Strictly prohibit any actual modifications. - {{BACKEND_PRIMARY}} 是后端逻辑的权威,利用其逻辑运算与 Debug 能力
- 若计划包含
CODEX_SESSION:优先resume <CODEX_SESSION>
Route C: 全栈 → 并行调用
- 并行调用(
run_in_background: true):- Gemini:处理前端部分
- Codex:处理后端部分
- 用
TaskOutput等待两个模型的完整结果 - 各自使用计划中对应的
SESSION_ID进行resume(若缺失则创建新会话)
务必遵循上方 多模型调用规范 的 重要 指示
⚡ Phase 4:编码实施
[模式:实施]
Claude 作为代码主权者执行以下步骤:
-
读取 Diff:解析 Codex/Gemini 返回的 Unified Diff Patch
-
思维沙箱:
- 模拟应用 Diff 到目标文件
- 检查逻辑一致性
- 识别潜在冲突或副作用
-
重构清理:
- 将"脏原型"重构为高可读、高可维护性、企业发布级代码
- 去除冗余代码
- 确保符合项目现有代码规范
- 非必要不生成注释与文档,代码自解释
-
最小作用域:
- 变更仅限需求范围
- 强制审查变更是否引入副作用
- 做针对性修正
-
应用变更:
- 使用 Edit/Write 工具执行实际修改
- 仅修改必要的代码,严禁影响用户现有的其他功能
-
自检验证(强烈建议):
- 运行项目既有的 lint / typecheck / tests(优先最小相关范围)
- 若失败:优先修复回归,再继续进入 Phase 5
✅ Phase 5:审计与交付
[模式:审计]
5.1 自动审计
变更生效后,强制立即并行调用 Codex 和 Gemini 进行 Code Review:
-
{{BACKEND_PRIMARY}} 审查(
run_in_background: true):- ROLE_FILE:
~/.claude/.ccg/prompts/codex/reviewer.md - 输入:变更的 Diff + 目标文件
- 关注:安全性、性能、错误处理、逻辑正确性
- ROLE_FILE:
-
{{FRONTEND_PRIMARY}} 审查(
run_in_background: true):- ROLE_FILE:
~/.claude/.ccg/prompts/gemini/reviewer.md - 输入:变更的 Diff + 目标文件
- 关注:可访问性、设计一致性、用户体验
- ROLE_FILE:
用 TaskOutput 等待两个模型的完整审查结果。优先复用 Phase 3 的会话(resume <SESSION_ID>)以保持上下文一致。
5.2 整合修复
- 综合 Codex + Gemini 的审查意见
- 按信任规则权衡:后端以 Codex 为准,前端以 Gemini 为准
- 执行必要的修复
- 修复后按需重复 Phase 5.1(直到风险可接受)
5.3 交付确认
审计通过后,向用户报告:
## ✅ 执行完成
### 变更摘要
| 文件 | 操作 | 说明 |
|------|------|------|
| path/to/file.ts | 修改 | 描述 |
### 审计结果
- Codex:<通过/发现 N 个问题>
- Gemini:<通过/发现 N 个问题>
### 后续建议
1. [ ] <建议的测试步骤>
2. [ ] <建议的验证步骤>
关键规则
- 代码主权 – 所有文件修改由 Claude 执行,外部模型零写入权限
- 脏原型重构 – Codex/Gemini 的输出视为草稿,必须重构
- 信任规则 – 后端以 Codex 为准,前端以 Gemini 为准
- 最小变更 – 仅修改必要的代码,不引入副作用
- 强制审计 – 变更后必须进行多模型 Code Review
使用方法
# 执行计划文件
/ccg:execute .claude/plan/功能名.md
# 直接执行任务(适用于已在上下文中讨论过的计划)
/ccg:execute 根据之前的计划实施用户认证功能
与 /ccg:plan 的关系
/ccg:plan生成计划 + SESSION_ID- 用户确认 "Y" 后
/ccg:execute读取计划,复用 SESSION_ID,执行实施