ccgx-workflow 1.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.
- package/LICENSE +22 -0
- package/README.md +469 -0
- package/README.zh-CN.md +466 -0
- package/bin/ccg.mjs +2 -0
- package/dist/cli.d.mts +1 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.mjs +173 -0
- package/dist/index.d.mts +1774 -0
- package/dist/index.d.ts +1774 -0
- package/dist/index.mjs +2029 -0
- package/dist/shared/ccgx-workflow.WgUzkiC3.mjs +5248 -0
- package/package.json +129 -0
- package/templates/commands/agents/assumptions-analyzer.md +129 -0
- package/templates/commands/agents/code-fixer.md +292 -0
- package/templates/commands/agents/codebase-mapper.md +152 -0
- package/templates/commands/agents/debug-session-manager.md +247 -0
- package/templates/commands/agents/debugger.md +111 -0
- package/templates/commands/agents/eval-auditor.md +171 -0
- package/templates/commands/agents/framework-selector.md +152 -0
- package/templates/commands/agents/get-current-datetime.md +29 -0
- package/templates/commands/agents/init-architect.md +114 -0
- package/templates/commands/agents/integration-checker.md +163 -0
- package/templates/commands/agents/interface-auditor.md +170 -0
- package/templates/commands/agents/nyquist-auditor.md +131 -0
- package/templates/commands/agents/pattern-mapper.md +111 -0
- package/templates/commands/agents/phase-runner.md +321 -0
- package/templates/commands/agents/plan-checker.md +255 -0
- package/templates/commands/agents/planner.md +320 -0
- package/templates/commands/agents/team-architect.md +186 -0
- package/templates/commands/agents/team-qa.md +121 -0
- package/templates/commands/agents/team-reviewer.md +157 -0
- package/templates/commands/agents/ui-ux-designer.md +573 -0
- package/templates/commands/agents/verifier.md +274 -0
- package/templates/commands/analyze.md +210 -0
- package/templates/commands/autonomous.md +792 -0
- package/templates/commands/cancel.md +132 -0
- package/templates/commands/clean-branches.md +117 -0
- package/templates/commands/codex-exec.md +404 -0
- package/templates/commands/commit.md +151 -0
- package/templates/commands/context.md +332 -0
- package/templates/commands/debate.md +165 -0
- package/templates/commands/debug.md +226 -0
- package/templates/commands/enhance.md +64 -0
- package/templates/commands/execute.md +380 -0
- package/templates/commands/init.md +123 -0
- package/templates/commands/optimize.md +217 -0
- package/templates/commands/plan.md +373 -0
- package/templates/commands/result.md +106 -0
- package/templates/commands/review.md +338 -0
- package/templates/commands/rollback.md +116 -0
- package/templates/commands/spec-impl.md +139 -0
- package/templates/commands/spec-init.md +101 -0
- package/templates/commands/spec-plan.md +210 -0
- package/templates/commands/spec-research.md +152 -0
- package/templates/commands/spec-review.md +120 -0
- package/templates/commands/status.md +206 -0
- package/templates/commands/team-exec.md +265 -0
- package/templates/commands/test.md +236 -0
- package/templates/commands/verify-work.md +338 -0
- package/templates/commands/verify.md +66 -0
- package/templates/commands/workflow.md +190 -0
- package/templates/commands/worktree.md +128 -0
- package/templates/hooks/ccg-context-monitor.js +159 -0
- package/templates/hooks/ccg-session-state.cjs +510 -0
- package/templates/hooks/ccg-statusline.js +142 -0
- package/templates/output-styles/abyss-command.md +56 -0
- package/templates/output-styles/abyss-concise.md +89 -0
- package/templates/output-styles/abyss-cultivator.md +302 -0
- package/templates/output-styles/abyss-ritual.md +70 -0
- package/templates/output-styles/engineer-professional.md +89 -0
- package/templates/output-styles/laowang-engineer.md +127 -0
- package/templates/output-styles/nekomata-engineer.md +120 -0
- package/templates/output-styles/ojousama-engineer.md +121 -0
- package/templates/prompts/claude/analyzer.md +59 -0
- package/templates/prompts/claude/architect.md +54 -0
- package/templates/prompts/claude/debugger.md +71 -0
- package/templates/prompts/claude/optimizer.md +73 -0
- package/templates/prompts/claude/reviewer.md +63 -0
- package/templates/prompts/claude/tester.md +69 -0
- package/templates/prompts/codex/analyzer.md +58 -0
- package/templates/prompts/codex/architect.md +54 -0
- package/templates/prompts/codex/debugger.md +74 -0
- package/templates/prompts/codex/optimizer.md +81 -0
- package/templates/prompts/codex/reviewer.md +73 -0
- package/templates/prompts/codex/tester.md +62 -0
- package/templates/prompts/gemini/analyzer.md +61 -0
- package/templates/prompts/gemini/architect.md +55 -0
- package/templates/prompts/gemini/debugger.md +78 -0
- package/templates/prompts/gemini/frontend.md +64 -0
- package/templates/prompts/gemini/optimizer.md +84 -0
- package/templates/prompts/gemini/reviewer.md +80 -0
- package/templates/prompts/gemini/tester.md +68 -0
- package/templates/rules/ccg-skill-routing.md +83 -0
- package/templates/rules/ccg-skills.md +71 -0
- package/templates/scripts/ccg-phase-runner-launcher.mjs +467 -0
- package/templates/scripts/invoke-model.mjs +949 -0
- package/templates/scripts/repatch-gemini-plugin.mjs +194 -0
- package/templates/skills/SKILL.md +92 -0
- package/templates/skills/domains/ai/SKILL.md +35 -0
- package/templates/skills/domains/ai/agent-dev.md +242 -0
- package/templates/skills/domains/ai/llm-security.md +288 -0
- package/templates/skills/domains/ai/prompt-and-eval.md +279 -0
- package/templates/skills/domains/ai/rag-system.md +542 -0
- package/templates/skills/domains/architecture/SKILL.md +43 -0
- package/templates/skills/domains/architecture/api-design.md +225 -0
- package/templates/skills/domains/architecture/caching.md +299 -0
- package/templates/skills/domains/architecture/cloud-native.md +285 -0
- package/templates/skills/domains/architecture/message-queue.md +329 -0
- package/templates/skills/domains/architecture/security-arch.md +297 -0
- package/templates/skills/domains/data-engineering/SKILL.md +208 -0
- package/templates/skills/domains/development/SKILL.md +47 -0
- package/templates/skills/domains/development/cpp.md +246 -0
- package/templates/skills/domains/development/go.md +323 -0
- package/templates/skills/domains/development/java.md +277 -0
- package/templates/skills/domains/development/python.md +288 -0
- package/templates/skills/domains/development/rust.md +313 -0
- package/templates/skills/domains/development/shell.md +313 -0
- package/templates/skills/domains/development/typescript.md +277 -0
- package/templates/skills/domains/devops/SKILL.md +40 -0
- package/templates/skills/domains/devops/cost-optimization.md +272 -0
- package/templates/skills/domains/devops/database.md +217 -0
- package/templates/skills/domains/devops/devsecops.md +198 -0
- package/templates/skills/domains/devops/git-workflow.md +181 -0
- package/templates/skills/domains/devops/observability.md +280 -0
- package/templates/skills/domains/devops/performance.md +336 -0
- package/templates/skills/domains/devops/testing.md +283 -0
- package/templates/skills/domains/frontend-design/SKILL.md +244 -0
- package/templates/skills/domains/frontend-design/agents/openai.yaml +4 -0
- package/templates/skills/domains/frontend-design/claymorphism/SKILL.md +121 -0
- package/templates/skills/domains/frontend-design/claymorphism/references/tokens.css +52 -0
- package/templates/skills/domains/frontend-design/component-patterns.md +202 -0
- package/templates/skills/domains/frontend-design/engineering.md +287 -0
- package/templates/skills/domains/frontend-design/glassmorphism/SKILL.md +142 -0
- package/templates/skills/domains/frontend-design/glassmorphism/references/tokens.css +32 -0
- package/templates/skills/domains/frontend-design/liquid-glass/SKILL.md +139 -0
- package/templates/skills/domains/frontend-design/liquid-glass/references/tokens.css +81 -0
- package/templates/skills/domains/frontend-design/neubrutalism/SKILL.md +145 -0
- package/templates/skills/domains/frontend-design/neubrutalism/references/tokens.css +44 -0
- package/templates/skills/domains/frontend-design/reference/color-and-contrast.md +132 -0
- package/templates/skills/domains/frontend-design/reference/interaction-design.md +195 -0
- package/templates/skills/domains/frontend-design/reference/motion-design.md +99 -0
- package/templates/skills/domains/frontend-design/reference/responsive-design.md +114 -0
- package/templates/skills/domains/frontend-design/reference/spatial-design.md +100 -0
- package/templates/skills/domains/frontend-design/reference/typography.md +133 -0
- package/templates/skills/domains/frontend-design/reference/ux-writing.md +107 -0
- package/templates/skills/domains/frontend-design/state-management.md +680 -0
- package/templates/skills/domains/frontend-design/ui-aesthetics.md +110 -0
- package/templates/skills/domains/frontend-design/ux-principles.md +156 -0
- package/templates/skills/domains/infrastructure/SKILL.md +201 -0
- package/templates/skills/domains/mobile/SKILL.md +225 -0
- package/templates/skills/domains/orchestration/SKILL.md +30 -0
- package/templates/skills/domains/orchestration/multi-agent.md +263 -0
- package/templates/skills/domains/security/SKILL.md +73 -0
- package/templates/skills/domains/security/blue-team.md +436 -0
- package/templates/skills/domains/security/code-audit.md +265 -0
- package/templates/skills/domains/security/pentest.md +226 -0
- package/templates/skills/domains/security/red-team.md +374 -0
- package/templates/skills/domains/security/threat-intel.md +372 -0
- package/templates/skills/domains/security/vuln-research.md +369 -0
- package/templates/skills/impeccable/adapt/SKILL.md +201 -0
- package/templates/skills/impeccable/animate/SKILL.md +176 -0
- package/templates/skills/impeccable/arrange/SKILL.md +126 -0
- package/templates/skills/impeccable/audit/SKILL.md +149 -0
- package/templates/skills/impeccable/bolder/SKILL.md +118 -0
- package/templates/skills/impeccable/clarify/SKILL.md +185 -0
- package/templates/skills/impeccable/colorize/SKILL.md +144 -0
- package/templates/skills/impeccable/critique/SKILL.md +203 -0
- package/templates/skills/impeccable/critique/reference/cognitive-load.md +106 -0
- package/templates/skills/impeccable/critique/reference/heuristics-scoring.md +234 -0
- package/templates/skills/impeccable/critique/reference/personas.md +178 -0
- package/templates/skills/impeccable/delight/SKILL.md +305 -0
- package/templates/skills/impeccable/distill/SKILL.md +123 -0
- package/templates/skills/impeccable/extract/SKILL.md +94 -0
- package/templates/skills/impeccable/harden/SKILL.md +357 -0
- package/templates/skills/impeccable/normalize/SKILL.md +72 -0
- package/templates/skills/impeccable/onboard/SKILL.md +248 -0
- package/templates/skills/impeccable/optimize/SKILL.md +268 -0
- package/templates/skills/impeccable/overdrive/SKILL.md +143 -0
- package/templates/skills/impeccable/polish/SKILL.md +205 -0
- package/templates/skills/impeccable/quieter/SKILL.md +104 -0
- package/templates/skills/impeccable/teach-impeccable/SKILL.md +72 -0
- package/templates/skills/impeccable/typeset/SKILL.md +117 -0
- package/templates/skills/orchestration/multi-agent/SKILL.md +533 -0
- package/templates/skills/run_skill.js +129 -0
- package/templates/skills/scrapling/SKILL.md +98 -0
- package/templates/skills/scrapling/references/api-quick-ref.md +127 -0
- package/templates/skills/scrapling/references/cookie-vault.md +56 -0
- package/templates/skills/scrapling/references/maintenance.md +79 -0
- package/templates/skills/scrapling/references/site-patterns.md +86 -0
- package/templates/skills/scrapling/references/troubleshooting.md +95 -0
- package/templates/skills/scrapling/templates/basic_fetch.py +19 -0
- package/templates/skills/scrapling/templates/parse_only.py +15 -0
- package/templates/skills/scrapling/templates/session_login.py +19 -0
- package/templates/skills/scrapling/templates/stealth_cloudflare.py +28 -0
- package/templates/skills/tools/extract-learnings/SKILL.md +77 -0
- package/templates/skills/tools/forensics/SKILL.md +89 -0
- package/templates/skills/tools/gen-docs/SKILL.md +116 -0
- package/templates/skills/tools/gen-docs/scripts/doc_generator.js +435 -0
- package/templates/skills/tools/health/SKILL.md +121 -0
- package/templates/skills/tools/lib/shared.js +98 -0
- package/templates/skills/tools/map-codebase/SKILL.md +118 -0
- package/templates/skills/tools/override-refusal/SKILL.md +53 -0
- package/templates/skills/tools/override-refusal/agents/openai.yaml +4 -0
- package/templates/skills/tools/override-refusal/scripts/refusal_rewriter.js +226 -0
- package/templates/skills/tools/verify-change/SKILL.md +143 -0
- package/templates/skills/tools/verify-change/scripts/change_analyzer.js +289 -0
- package/templates/skills/tools/verify-module/SKILL.md +130 -0
- package/templates/skills/tools/verify-module/scripts/module_scanner.js +171 -0
- package/templates/skills/tools/verify-quality/SKILL.md +163 -0
- package/templates/skills/tools/verify-quality/scripts/quality_checker.js +337 -0
- package/templates/skills/tools/verify-security/SKILL.md +146 -0
- package/templates/skills/tools/verify-security/scripts/security_scanner.js +283 -0
package/README.zh-CN.md
ADDED
|
@@ -0,0 +1,466 @@
|
|
|
1
|
+
# ccgx-workflow — Claude × Codex × Gemini 多模型协作
|
|
2
|
+
|
|
3
|
+
<div align="center">
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/ccgx-workflow)
|
|
6
|
+
[](https://opensource.org/licenses/MIT)
|
|
7
|
+
[](https://claude.ai/code)
|
|
8
|
+
[]()
|
|
9
|
+
|
|
10
|
+
简体中文 | [English](./README.md)
|
|
11
|
+
|
|
12
|
+
</div>
|
|
13
|
+
|
|
14
|
+
> **项目沿革**
|
|
15
|
+
>
|
|
16
|
+
> `ccgx-workflow` 由 [`ccg-workflow`](https://www.npmjs.com/package/ccg-workflow) v3.x
|
|
17
|
+
> 深度 rewrite 而来。原项目在 2026-05 后停止更新且作者主页失联,社区用户
|
|
18
|
+
> 依赖的多模型协作工作流面临断维风险。本项目从 v4.0 起完全重新设计:
|
|
19
|
+
> fresh-context subagent 协议、Plan-Critic-Verify 三档质量门、OS 级三层
|
|
20
|
+
> 进程隔离、broker tx_id 防漂移、8 处 plugin patch 与一键 repatch 脚本。
|
|
21
|
+
>
|
|
22
|
+
> `/ccg:*` 命令面板对老用户**手势兼容**,但底层架构已完全不同。
|
|
23
|
+
> 原项目 MIT 许可下的代码与版权完整保留,详见 [LICENSE](./LICENSE)。
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## 这是什么
|
|
28
|
+
|
|
29
|
+
Claude Code 编排 Codex(后端)+ Gemini(前端)的多模型协作开发系统。前端任务自动路由 Gemini,后端任务自动路由 Codex,Claude 负责编排决策与代码审核。
|
|
30
|
+
|
|
31
|
+
外部模型**无写入权限**——它们只返回 patch,由 Claude 审核后落地。
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
Claude Code (编排)
|
|
35
|
+
│
|
|
36
|
+
┌───┴───┐
|
|
37
|
+
↓ ↓
|
|
38
|
+
Codex Gemini
|
|
39
|
+
(后端) (前端)
|
|
40
|
+
│ │
|
|
41
|
+
└───┬───┘
|
|
42
|
+
↓
|
|
43
|
+
Unified Patch
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## 核心特性
|
|
47
|
+
|
|
48
|
+
- **零配置模型路由** — 前端 → Gemini / 后端 → Codex,按 phase frontmatter 的 `Type:` 字段自动派发,无需手动切换
|
|
49
|
+
- **~30 个 `/ccg:*` 斜杠命令** — 从规划到执行、Git 工作流到代码审查、自治长跑、异步任务三件套
|
|
50
|
+
- **三档质量门** — `--quality=fast|triple|debate` 单一开关切换 Plan-Critic-Verify 协作深度
|
|
51
|
+
- **fresh-context subagent 协议** — `phase-runner` / `code-fixer` / `debug-session-manager` 把主线 context 压在 ≤15%,主线只接 ≤200 token 摘要
|
|
52
|
+
- **OS 级三层进程隔离** — `Bash(claude -p --agent ccg/phase-runner)` 替代主进程内 sidechain,治理主进程 RSS 泄漏
|
|
53
|
+
- **OPSX 规范驱动** — 集成 [OPSX](https://github.com/fission-ai/opsx),把模糊需求变成可验证约束,让 AI 没法自由发挥
|
|
54
|
+
- **plugin 优先 + wrapper fallback** — codex/gemini 官方 plugin 装了走 plugin spawn,没装回退 `codeagent-wrapper`
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## 快速开始
|
|
59
|
+
|
|
60
|
+
### 前置条件
|
|
61
|
+
|
|
62
|
+
| 依赖 | 必需 | 说明 |
|
|
63
|
+
|------|------|------|
|
|
64
|
+
| **Node.js 20+** | 是 | `ora@9.x` 要求 Node ≥ 20 |
|
|
65
|
+
| **Claude Code CLI** | 是 | [安装方法](#安装-claude-code) |
|
|
66
|
+
| **jq** | 是 | 自动授权 Hook 依赖([安装方法](#安装-jq)) |
|
|
67
|
+
| **codex@openai-codex plugin** | 否 | 启用后端 Codex 路由(强烈推荐) |
|
|
68
|
+
| **gemini@google-gemini plugin** | 否 | 启用前端 Gemini 路由(强烈推荐) |
|
|
69
|
+
|
|
70
|
+
### 一键安装
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
npx ccgx-workflow
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
首次运行会提示选择语言(简体中文 / English)、API 提供方、MCP 工具,全部交互式完成。CLI 命令名仍为 `ccg`(保持老用户肌肉记忆)。
|
|
77
|
+
|
|
78
|
+
### 安装 jq
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
# macOS
|
|
82
|
+
brew install jq
|
|
83
|
+
|
|
84
|
+
# Linux (Debian/Ubuntu)
|
|
85
|
+
sudo apt install jq
|
|
86
|
+
|
|
87
|
+
# Linux (RHEL/CentOS)
|
|
88
|
+
sudo yum install jq
|
|
89
|
+
|
|
90
|
+
# Windows
|
|
91
|
+
choco install jq # 或: scoop install jq
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### 安装 Claude Code
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
npx ccgx-workflow menu # 选择「安装 Claude Code」
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
支持 npm / homebrew / curl / powershell / cmd。
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## 启用多模型协作(codex / gemini plugin)
|
|
105
|
+
|
|
106
|
+
ccgx-workflow 通过 Claude Code 官方 plugin 机制调用 codex 和 gemini,**不再依赖旧的 `codeagent-wrapper` 二进制**。装 plugin 才能开启完整的双模型并行能力。
|
|
107
|
+
|
|
108
|
+
### 安装命令(在 Claude Code 内执行)
|
|
109
|
+
|
|
110
|
+
```
|
|
111
|
+
/plugin install codex@openai-codex
|
|
112
|
+
/plugin install gemini@google-gemini
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
`@` 后是 marketplace identifier。如果提示 marketplace 未配置,在 Claude Code 里执行 `/help plugin` 查看本地 marketplace 管理命令,或参考 [Claude Code plugin 官方文档](https://docs.claude.com/en/docs/claude-code/plugins)。
|
|
116
|
+
|
|
117
|
+
> 上游 plugin 仓库地址(用于排错 / 提 issue):
|
|
118
|
+
> - **codex**: `openai-codex` marketplace(Claude Code 官方)
|
|
119
|
+
> - **gemini**: [sakibsadmanshajib/gemini-plugin-cc](https://github.com/sakibsadmanshajib/gemini-plugin-cc)
|
|
120
|
+
|
|
121
|
+
### 验证安装
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
ls ~/.claude/plugins/cache/openai-codex/codex/
|
|
125
|
+
ls ~/.claude/plugins/cache/google-gemini/gemini/
|
|
126
|
+
# 应能看到版本目录(如 1.0.4 / 1.0.1)
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### ⚠️ Gemini plugin Windows 已知问题(强烈建议 patch)
|
|
130
|
+
|
|
131
|
+
`gemini@google-gemini` v1.0.1 在 Windows 上有 **8 处 spawn 缺 `windowsHide: true`** 的 bug,会导致:
|
|
132
|
+
|
|
133
|
+
- 调用时短暂闪现 cmd 黑窗、抢应用焦点(高频)
|
|
134
|
+
- 底层 ACP broker spawn `gemini.cmd` 时 ENOENT 报错(被 plugin 错误处理路径序列化为 `[object Object]`)
|
|
135
|
+
- broker daemon 启动 / `gemini --version` 健康检查 / `taskkill` / `where gemini` 等环节都会闪框
|
|
136
|
+
|
|
137
|
+
**ccgx-workflow 内置一键 repatch 脚本**(幂等,可重复运行):
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
node ~/.claude/.ccg/scripts/repatch-gemini-plugin.mjs
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
脚本行为:
|
|
144
|
+
1. 自动定位 plugin 版本目录
|
|
145
|
+
2. 检查每处 patch 状态(probe 字符串匹配)
|
|
146
|
+
3. 已 patch 的 [SKIP],未 patch 的 [APPLY]
|
|
147
|
+
4. 完成后提示重启 broker daemon 命令
|
|
148
|
+
|
|
149
|
+
⚠️ **重要**:每次 `claude plugin update gemini@google-gemini` 后 plugin update 会覆盖 cache,**必须重跑 patch 脚本**。
|
|
150
|
+
|
|
151
|
+
⚠️ **patch 后重启 broker daemon**(旧 daemon 仍跑未 patch 代码):
|
|
152
|
+
|
|
153
|
+
```powershell
|
|
154
|
+
# Windows PowerShell
|
|
155
|
+
Get-CimInstance Win32_Process -Filter "Name='node.exe'" |
|
|
156
|
+
Where-Object { $_.CommandLine -match 'acp-broker' } |
|
|
157
|
+
ForEach-Object { Stop-Process -Id $_.ProcessId -Force }
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
或简单点:`/plugin disable gemini@google-gemini` 然后 `/plugin enable gemini@google-gemini`。
|
|
161
|
+
|
|
162
|
+
8 处 bug 的根因 + 临时 patch + 永久路径全部归档在 [`.ccg-migration/PLUGIN-PATCHES.md`](./.ccg-migration/PLUGIN-PATCHES.md)。上游 PR 准备中,合并后此 patch 自动失效。
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## 与 ccg-workflow 的关系
|
|
167
|
+
|
|
168
|
+
ccgx-workflow **不是 fork**——上游 `ccg-workflow` 公开版本截止在 v3.x,2026-05 后停更;本项目的 v1.0 是基于 v3.x 之上从零重新设计的独立产品(内部经历约 3 天 / 92 commit / 1141 个新测试的密集迭代后定稿)。
|
|
169
|
+
|
|
170
|
+
### 新增功能与特性
|
|
171
|
+
|
|
172
|
+
#### 🆕 新增命令(vs v3.x)
|
|
173
|
+
|
|
174
|
+
| 命令 | 说明 |
|
|
175
|
+
|------|------|
|
|
176
|
+
| `/ccg:debate` | **多轮辩论原语**——codex propose ↔ gemini challenge ↔ codex respond,cap N 轮,schema 硬校验 retry protocol |
|
|
177
|
+
| `/ccg:status [job-id]` | **异步任务三件套之一**——dashboard 模式聚合多 phase 进度 / `--wait --timeout-ms` 阻塞 / `--tail` 流式 + 3 类卡点警告 |
|
|
178
|
+
| `/ccg:status --cancel <phase-id>` | 单 phase cooperative cancel + grace + kill-tree 强杀(Windows `taskkill /T /F` + POSIX `setsid` 进程组) |
|
|
179
|
+
| `/ccg:result <job-id>` | 取最终 verdict / summary / artifacts,主线接 ≤200 token 摘要 |
|
|
180
|
+
| `/ccg:cancel <job-id>` | 中止活跃 job,写 `cancel.flag` cooperative → 5s grace → kill-tree |
|
|
181
|
+
| `/ccg:verify --gate=<name>` | **统一 verify 入口**——合并 v3.x 的 `verify-{change,quality,security,module}` 4 个独立命令,加 `--gate=all` 自动多门串联 |
|
|
182
|
+
| `/ccg:verify-work` | **会话式 UAT + cold-start smoke 注入**——UAT.md 跨 `/clear` 持久 frontmatter + git diff 扫 server/db/migrations 自动注入冷启动测试 |
|
|
183
|
+
|
|
184
|
+
#### 🚀 增强命令(vs v3.x)
|
|
185
|
+
|
|
186
|
+
| 命令 | v3.x | ccgx-workflow |
|
|
187
|
+
|------|------|---------------|
|
|
188
|
+
| `/ccg:autonomous` | 串行 phase | **wave 拓扑分波并行** + cascade skip + max-concurrent batching;`--quality=fast/triple/debate` 三档质量门 + per-phase frontmatter override |
|
|
189
|
+
| `/ccg:review` | 双模型审查 | 加 `--fix --auto` worktree 隔离闭环修复(4 步事务清理:merge/remove/branch -D/rm sentinel) |
|
|
190
|
+
| `/ccg:debug` | 单步诊断 | manager + debugger **双层 fresh-context**——多轮 falsifiable hypothesis + 持久 session 在 `.context/debug/<slug>.md` |
|
|
191
|
+
| `/ccg:team` | 4 独立命令 | 8 阶段统一工作流(research→plan→exec→review→fix→integrate)+ 7 角色自动编排 + Evaluator-Optimizer 反馈环(最多 2 轮自动修复 Critical) |
|
|
192
|
+
|
|
193
|
+
#### 🤖 新增 Agent(vs v3.x 的 7 个)
|
|
194
|
+
|
|
195
|
+
**fresh-context 协议组**(4 个,主线只接 ≤200 token 摘要):
|
|
196
|
+
|
|
197
|
+
| Agent | 职责 |
|
|
198
|
+
|-------|------|
|
|
199
|
+
| `phase-runner` | 自治长跑 phase 实施者——`Bash(claude -p --agent ccg/phase-runner)` 启 OS 级子进程,stream-json 流式输出落 `.context/jobs/<id>/progress.jsonl` |
|
|
200
|
+
| `code-fixer` | review --fix 闭环修复——git worktree 隔离 + 3 层 verification + 原子 commit |
|
|
201
|
+
| `debug-session-manager` | debug 多轮编排——隔离 context 跑 hypothesis 调试循环,主线接 ≤200 token 摘要 |
|
|
202
|
+
| `debugger` | 科学方法 hypothesis 构造——受 manager 调度的纯诊断 specialist |
|
|
203
|
+
|
|
204
|
+
**specialist 矩阵**(8 个,role × layer 2D 分发):
|
|
205
|
+
|
|
206
|
+
| Agent | 职责 |
|
|
207
|
+
|-------|------|
|
|
208
|
+
| `assumptions-analyzer` | 假设审问官——强制 first-principles,列无证据推断 + 证据缺口 |
|
|
209
|
+
| `pattern-mapper` | 模式映射——实施前扫描代码库现有模式,给 builder "照抄哪里"的精确锚点 |
|
|
210
|
+
| `plan-checker` | 计划核验——5 维度强校验 GSD 高 ROI 子集 + max-3-loop 收敛环;BLOCKER 退回 planner |
|
|
211
|
+
| `nyquist-auditor` | 深度审计——专攻边界、并发竞争、错误传播链、资源泄漏 |
|
|
212
|
+
| `verifier` | 交付核验——逐条对照需求清单,输出 PASS/FAIL/PARTIAL 矩阵 + Level 4 数据流(FLOWING/STATIC/DISCONNECTED/HOLLOW_PROP) |
|
|
213
|
+
| `integration-checker` | 跨模块接口契约——找格式漂移 / 调用方未更新 / 孤立导出 |
|
|
214
|
+
| `framework-selector` | 技术选型评审——现状 vs 提案对比,强制验证现状不能解决才能进 |
|
|
215
|
+
| `eval-auditor` | 评估闭环审计——抽样 / 对照 / 指标博弈 / 结论可证伪性审计 |
|
|
216
|
+
|
|
217
|
+
加上 v3.x 已有的 7 个核心 agent(planner / ui-ux-designer / init-architect / get-current-datetime / team-architect / team-qa / team-reviewer),ccgx-workflow 共 **19 个 subagent**。
|
|
218
|
+
|
|
219
|
+
#### 🔧 新增机制 / 基础设施
|
|
220
|
+
|
|
221
|
+
| 机制 | 说明 |
|
|
222
|
+
|------|------|
|
|
223
|
+
| **三档质量门** | `--quality=fast`(2 wave / impl + verify)/ `triple`(4 wave / plan + critic + impl + verify,默认)/ `debate`(7 wave / + 3 round propose-challenge-respond,cap 3) |
|
|
224
|
+
| **wave 拓扑调度** | Kahn 拓扑分波 + cascade skip + max-concurrent batching,墙钟压缩 30-40%,`--sequential` opt-out |
|
|
225
|
+
| **OS 级三层进程隔离** | 主 claude.exe → `Bash(claude -p)` 子进程 → 可选 plugin 进程组;治理 v3.x 主进程 RSS 泄漏(uni-iam 实测撞 23GB → ccgx 设计目标 < 8GB) |
|
|
226
|
+
| **broker tx_id 防漂移** | 每次 spawn 注入 `CCG_BROKER_TX_ID` (crypto.randomUUID),broker.log 8 字段强 schema;100k spawn 0 碰撞 / 2k concurrent 0 misattribution(实测) |
|
|
227
|
+
| **`context_budget` frontmatter 硬约束** | 4 主编排器声明 `context_budget: orchestrator-15`,禁止 slurp builder stdout |
|
|
228
|
+
| **`.context/<phase>/{CONTEXT,SUMMARY}.md`** | phase-scoped 状态机,主线只读 frontmatter(< 200 tokens/phase) |
|
|
229
|
+
| **`.context/codebase/` 七文件契约** | codebase-mapper agent 4 路并行扫描产出(STACK/INTEGRATIONS/ARCHITECTURE/STRUCTURE/CONVENTIONS/TESTING/CONCERNS) |
|
|
230
|
+
| **silent fallback 治理** | verify wave Bash 直调(架构性消除)+ debate retry protocol schema 硬校验(4 类违规枚举:parse-failed / insufficient-attempts / missing-reason / silent-success) |
|
|
231
|
+
| **scope reduction detection** | plan-checker 维度 7b——识别 "v1 / 简化 / 静态先 / 后续连接" 关键词 + 与原始需求 80% 重叠匹配,BLOCKER 拦截 |
|
|
232
|
+
| **commit-msg-review git hook** | opt-in pre-commit-msg hook,3 启发式(文件名 ⊆ staged / phase tag ↔ staged paths / 操作类型 ↔ diff) |
|
|
233
|
+
| **ground-truth-sampler** | autonomous 启动时动态采样 plugin/skill/agent 列表写 `.context/ground-truth/latest.json`,phase-runner prompt 强约束必须 Read 之 |
|
|
234
|
+
| **interface-auditor specialist** | autonomous verify wave triple/debate 档加 3rd spawn——5 检查清单 SSoT-violation / leftover / magic-string-vs-ground-truth / 未验证假设 / API drift |
|
|
235
|
+
| **Gemini plugin Windows repatch** | `~/.claude/.ccg/scripts/repatch-gemini-plugin.mjs` 一键 patch 8 处 spawn bug,幂等可重跑 |
|
|
236
|
+
| **fixtures 自动生成** | `scripts/regen-fixtures.ts` + `tests/fixtures/ground-truth/*.sample.json`,防 inline mock 偏离真实接口 |
|
|
237
|
+
| **pipeline-check helper** | `pnpm pack` + tarball audit + 漏文件检测,防"templates 在 git 但 npm 包漏装"事故 |
|
|
238
|
+
|
|
239
|
+
#### 📦 Skill 体系
|
|
240
|
+
|
|
241
|
+
ccgx-workflow 沿用 v3.x 引入的 **Skill Registry**(SKILL.md frontmatter 驱动自动命令生成),技能体系为:
|
|
242
|
+
|
|
243
|
+
- **质量关卡** 4 个:verify-{change, quality, security, module}(合并到 `/ccg:verify` 后仍可作 skill 单独触发)
|
|
244
|
+
- **工具 skill** 6 个:gen-docs / health / map-codebase / extract-learnings / forensics / override-refusal
|
|
245
|
+
- **域知识秘典** 10 大领域 ~21 个 SKILL.md(security / architecture / devops / ai / development / frontend-design 等,全 `user-invocable: false`,关键词路由触发自动 Read)
|
|
246
|
+
- **Impeccable UI/UX 工具集** 20 个(adapt / animate / arrange / audit / bolder / clarify / colorize / critique / delight / distill / extract / harden / normalize / onboard / optimize / overdrive / polish / quieter / typeset 等,可选安装)
|
|
247
|
+
- **scrapling**:网页抓取 skill,支持 Cloudflare / WAF 绕过
|
|
248
|
+
- **orchestration/multi-agent**:多 agent 协作 SKILL
|
|
249
|
+
|
|
250
|
+
合计 **47 个 SKILL.md** + 50 余个辅助 md = 100+ 技能文件。
|
|
251
|
+
|
|
252
|
+
### 总览对比表
|
|
253
|
+
|
|
254
|
+
下表是核心差异:
|
|
255
|
+
|
|
256
|
+
| 维度 | 原版 `ccg-workflow` v3.x | `ccgx-workflow` v1.0 |
|
|
257
|
+
|------|--------------------------|----------------------|
|
|
258
|
+
| 维护状态 | 2026-05 起停更,作者主页失联 | 持续维护,接受 PR |
|
|
259
|
+
| 主线 context 治理 | 无显式约束 | `context_budget` frontmatter 硬约束 + fresh-context subagent 协议 |
|
|
260
|
+
| 多模型质量门 | 单一编排 | **三档可调** `--quality=fast/triple/debate` (Plan-Critic-Verify) |
|
|
261
|
+
| 自治长跑 | 串行 phase | **wave 拓扑分波并行** + cascade skip + cap 调度 |
|
|
262
|
+
| 进程隔离 | 主进程内 sidechain | **OS 级三层** (`Bash(claude -p)` 子进程 + plugin 进程组) |
|
|
263
|
+
| broker 防漂移 | — | **broker tx_id** 加密签 + 8 字段强 schema |
|
|
264
|
+
| Gemini Windows patch | 用户手动改 8 处源码 | **内置一键 repatch 脚本**,幂等可重跑 |
|
|
265
|
+
| Silent fallback 治理 | — | verify wave Bash 直调 + debate retry protocol schema 硬校验 |
|
|
266
|
+
| 测试规模 | 168 | **1309** |
|
|
267
|
+
| 命令面板 | 35(含已弃用) | ~30(合并 + 收敛) |
|
|
268
|
+
| Subagent | 7 | **19**(fresh-context 协议 4 个 + specialist 矩阵 8 个) |
|
|
269
|
+
| 二进制依赖 | Go binary 16.3 MB | **Node 单文件 ~200 KB** |
|
|
270
|
+
| 协议 | MIT | MIT(保留原作者署名 + 维护人双 copyright) |
|
|
271
|
+
| `/ccg:*` 命令面板 | — | **完全兼容**,老用户零迁移成本 |
|
|
272
|
+
|
|
273
|
+
### 老用户迁移
|
|
274
|
+
|
|
275
|
+
详见 [MIGRATION-FROM-CCG-WORKFLOW.md](./MIGRATION-FROM-CCG-WORKFLOW.md)。一句话版:
|
|
276
|
+
|
|
277
|
+
```bash
|
|
278
|
+
npm uninstall -g ccg-workflow # 如有全局安装
|
|
279
|
+
npx ccgx-workflow # 重新初始化
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
`/ccg:*` 命令、`.context/` 状态、`.ccg/roadmap.md` 全部兼容,无需改代码或重建项目状态。
|
|
283
|
+
|
|
284
|
+
---
|
|
285
|
+
|
|
286
|
+
## 命令清单
|
|
287
|
+
|
|
288
|
+
### 开发工作流
|
|
289
|
+
|
|
290
|
+
| 命令 | 说明 | 模型 |
|
|
291
|
+
|------|------|------|
|
|
292
|
+
| `/ccg:workflow` | 完整 6 阶段工作流(智能路由前端/后端) | Codex + Gemini |
|
|
293
|
+
| `/ccg:plan` | 多模型协作规划(Phase 1-2) | Codex + Gemini |
|
|
294
|
+
| `/ccg:execute` | 多模型协作执行(Phase 3-5) | Codex + Gemini + Claude |
|
|
295
|
+
| `/ccg:codex-exec` | Codex 全权执行计划(plan → code → review) | Codex + 多模型审核 |
|
|
296
|
+
| `/ccg:autonomous` | 跨 phase 自治长跑(`--quality=fast/triple/debate`) | phase-runner + Plan-Critic-Verify |
|
|
297
|
+
| `/ccg:context` | 项目上下文管理(.context/ 初始化、日志、压缩、历史) | Claude |
|
|
298
|
+
| `/ccg:enhance` | 内置 Prompt 增强 | Claude |
|
|
299
|
+
|
|
300
|
+
### 分析与质量
|
|
301
|
+
|
|
302
|
+
| 命令 | 说明 | 模型 |
|
|
303
|
+
|------|------|------|
|
|
304
|
+
| `/ccg:analyze` | 技术分析 | Codex + Gemini |
|
|
305
|
+
| `/ccg:debug` | 问题诊断 + 修复(manager + debugger 双层 fresh-context) | debug-session-manager |
|
|
306
|
+
| `/ccg:optimize` | 性能优化 | Codex + Gemini |
|
|
307
|
+
| `/ccg:test` | 测试生成 | 智能路由 |
|
|
308
|
+
| `/ccg:review` | 代码审查(自动 git diff + `--fix --auto` worktree 闭环修复) | Codex + Gemini + code-fixer |
|
|
309
|
+
| `/ccg:verify --gate=<change\|quality\|security\|module\|all>` | 统一 verify 入口 | Claude |
|
|
310
|
+
| `/ccg:verify-work` | 编排器 + 会话式 UAT + cold-start smoke | Claude |
|
|
311
|
+
| `/ccg:debate` | 多轮 propose/challenge/respond 原语(cap N 轮) | Codex + Gemini |
|
|
312
|
+
|
|
313
|
+
### 异步任务三件套
|
|
314
|
+
|
|
315
|
+
| 命令 | 说明 |
|
|
316
|
+
|------|------|
|
|
317
|
+
| `/ccg:status [job-id]` | 列表 / 单查 job(`--wait --timeout-ms` 阻塞;dashboard 模式聚合多 phase 进度) |
|
|
318
|
+
| `/ccg:status --tail <job-id>` | stream-json 流式 + 单行覆盖 + 3 类卡点警告 |
|
|
319
|
+
| `/ccg:status --cancel <phase-id>` | 单 phase cooperative cancel + grace + kill-tree |
|
|
320
|
+
| `/ccg:result <job-id>` | 取最终 verdict / summary / artifacts |
|
|
321
|
+
| `/ccg:cancel <job-id>` | 中止活跃 job |
|
|
322
|
+
|
|
323
|
+
### OPSX 规范驱动
|
|
324
|
+
|
|
325
|
+
| 命令 | 说明 |
|
|
326
|
+
|------|------|
|
|
327
|
+
| `/ccg:spec-init` | 初始化 OPSX 环境 |
|
|
328
|
+
| `/ccg:spec-research` | 需求 → 约束集 |
|
|
329
|
+
| `/ccg:spec-plan` | 约束 → 零决策可执行计划 |
|
|
330
|
+
| `/ccg:spec-impl` | 按规范执行 + 归档 |
|
|
331
|
+
| `/ccg:spec-review` | 双模型交叉审查 |
|
|
332
|
+
|
|
333
|
+
### Agent Teams 并行实施
|
|
334
|
+
|
|
335
|
+
| 命令 | 说明 |
|
|
336
|
+
|------|------|
|
|
337
|
+
| `/ccg:team` | **统一工作流(推荐)** — 8 阶段 7 角色全流程 |
|
|
338
|
+
| `/ccg:team research <args>` | 需求 → 约束(子命令) |
|
|
339
|
+
| `/ccg:team plan <args>` | 约束 → 并行实施计划 |
|
|
340
|
+
| `/ccg:team review [git-range]` | 双模型交叉审查 |
|
|
341
|
+
| `/ccg:team-exec` | spawn Builder teammates 并行写代码 |
|
|
342
|
+
|
|
343
|
+
> **前置**:`settings.json` 启用 `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1`。
|
|
344
|
+
|
|
345
|
+
### Git 工具
|
|
346
|
+
|
|
347
|
+
| 命令 | 说明 |
|
|
348
|
+
|------|------|
|
|
349
|
+
| `/ccg:commit` | 智能 conventional commit |
|
|
350
|
+
| `/ccg:rollback` | 交互式回滚 |
|
|
351
|
+
| `/ccg:clean-branches` | 清理已合并分支 |
|
|
352
|
+
| `/ccg:worktree` | Worktree 管理 |
|
|
353
|
+
|
|
354
|
+
### 项目初始化
|
|
355
|
+
|
|
356
|
+
| 命令 | 说明 |
|
|
357
|
+
|------|------|
|
|
358
|
+
| `/ccg:init` | 初始化项目 CLAUDE.md |
|
|
359
|
+
|
|
360
|
+
---
|
|
361
|
+
|
|
362
|
+
## 配置
|
|
363
|
+
|
|
364
|
+
### 目录结构
|
|
365
|
+
|
|
366
|
+
```
|
|
367
|
+
~/.claude/
|
|
368
|
+
├── commands/ccg/ # ~30 斜杠命令
|
|
369
|
+
├── agents/ccg/ # 19 子智能体
|
|
370
|
+
├── skills/ccg/ # 质量关卡 + 10 域知识 + impeccable + 编排
|
|
371
|
+
├── bin/codeagent-wrapper # fallback 路径(plugin 未装时启用)
|
|
372
|
+
└── .ccg/
|
|
373
|
+
├── config.toml
|
|
374
|
+
├── scripts/
|
|
375
|
+
│ └── repatch-gemini-plugin.mjs # ⭐ 一键 patch
|
|
376
|
+
└── prompts/
|
|
377
|
+
├── codex/ # 6 个 Codex 专家提示词
|
|
378
|
+
└── gemini/ # 7 个 Gemini 专家提示词
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
### 环境变量
|
|
382
|
+
|
|
383
|
+
`~/.claude/settings.json` 的 `"env"` 段:
|
|
384
|
+
|
|
385
|
+
| 变量 | 说明 | 默认 | 何时调整 |
|
|
386
|
+
|------|------|------|----------|
|
|
387
|
+
| `CODEAGENT_POST_MESSAGE_DELAY` | Codex 完成后等待秒数 | `5` | Codex 进程挂起时设为 `1` |
|
|
388
|
+
| `CODEX_TIMEOUT` | wrapper 执行超时(秒) | `7200` | 长任务时增大 |
|
|
389
|
+
| `BASH_DEFAULT_TIMEOUT_MS` | Claude Code Bash 超时(ms) | `120000` | 命令超时时增大 |
|
|
390
|
+
| `BASH_MAX_TIMEOUT_MS` | Claude Code Bash 最大超时(ms) | `600000` | 长 build 时增大 |
|
|
391
|
+
|
|
392
|
+
### MCP
|
|
393
|
+
|
|
394
|
+
```bash
|
|
395
|
+
npx ccgx-workflow menu # 选择「配置 MCP」
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
**代码检索**(择一):
|
|
399
|
+
- **fast-context**(推荐)— Windsurf Fast Context,AI 驱动搜索,免索引
|
|
400
|
+
- **ace-tool** — `search_context` 代码搜索([官方](https://augmentcode.com/) / [第三方代理](https://acemcp.heroman.wtf/))
|
|
401
|
+
- **ContextWeaver** — 本地混合搜索,需要 SiliconFlow API Key(免费)
|
|
402
|
+
|
|
403
|
+
**可选**:Context7(自动安装,库文档)/ Playwright(浏览器自动化)/ DeepWiki / Exa。
|
|
404
|
+
|
|
405
|
+
---
|
|
406
|
+
|
|
407
|
+
## 升级 / 卸载
|
|
408
|
+
|
|
409
|
+
```bash
|
|
410
|
+
# 升级
|
|
411
|
+
npx ccgx-workflow@latest # npx 用户
|
|
412
|
+
npm install -g ccgx-workflow@latest # npm 全局用户
|
|
413
|
+
|
|
414
|
+
# 卸载
|
|
415
|
+
npx ccgx-workflow # 选「卸载」
|
|
416
|
+
npm uninstall -g ccgx-workflow # npm 全局用户额外执行
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
---
|
|
420
|
+
|
|
421
|
+
## FAQ
|
|
422
|
+
|
|
423
|
+
### Codex CLI 0.80.0 进程不退出
|
|
424
|
+
|
|
425
|
+
`--json` 模式下 Codex 输出完成后不会自动退出。
|
|
426
|
+
|
|
427
|
+
**修复**:`CODEAGENT_POST_MESSAGE_DELAY=1`。
|
|
428
|
+
|
|
429
|
+
### 我之前用 ccg-workflow,能直接用 ccgx-workflow 吗
|
|
430
|
+
|
|
431
|
+
可以。`/ccg:*` 命令面板完全兼容,`.context/` 状态、`.ccg/roadmap.md` 全部兼容。详见 [MIGRATION-FROM-CCG-WORKFLOW.md](./MIGRATION-FROM-CCG-WORKFLOW.md)。
|
|
432
|
+
|
|
433
|
+
### 为什么 CLI 命令叫 `ccg` 不叫 `ccgx`
|
|
434
|
+
|
|
435
|
+
保留 `ccg` 是为了让老用户的 alias / 脚本 / 文档零成本迁移——`/ccg:*` 命令面板和 `ccg` CLI 都是肌肉记忆。包名 `ccgx-workflow` 用于消歧 npm 命名空间,CLI 名字仍是 `ccg`。
|
|
436
|
+
|
|
437
|
+
### Gemini plugin patch 上游修了之后我怎么办
|
|
438
|
+
|
|
439
|
+
ccgx-workflow 会持续跟踪上游 plugin 版本。修复合并到上游后,repatch 脚本会通过 probe 检测自动跳过已修复条目([SKIP]),无副作用。届时也会发布 ccgx-workflow 版本注明"上游已修,patch 转 no-op"。
|
|
440
|
+
|
|
441
|
+
---
|
|
442
|
+
|
|
443
|
+
## 贡献
|
|
444
|
+
|
|
445
|
+
欢迎 PR / issue。本项目 MIT 协议,提交即视为同意以 MIT 发布。
|
|
446
|
+
|
|
447
|
+
- **Issues**: [GitHub Issues](https://github.com/wzyxdwll/ccgx-workflow/issues)
|
|
448
|
+
- **Discussions**: [GitHub Discussions](https://github.com/wzyxdwll/ccgx-workflow/discussions)
|
|
449
|
+
|
|
450
|
+
## Credits
|
|
451
|
+
|
|
452
|
+
ccgx-workflow 站在 ccg-workflow 之上,对原作者 fengshao1227 与上游贡献者致谢。
|
|
453
|
+
|
|
454
|
+
- [ccg-workflow](https://github.com/fengshao1227/ccg-workflow) v1.x – v3.x 原项目(fengshao1227)
|
|
455
|
+
- [gsd-build/get-shit-done](https://github.com/gsd-build/get-shit-done/) — fresh-context subagent 协议、context monitor、code-fixer worktree 闭环、debug session manager 等多处架构灵感
|
|
456
|
+
- [cexll/myclaude](https://github.com/cexll/myclaude) — codeagent-wrapper 灵感
|
|
457
|
+
- [UfoMiao/zcf](https://github.com/UfoMiao/zcf) — Git 工具灵感
|
|
458
|
+
- [GuDaStudio/skills](https://github.com/GuDaStudio/skills) — 路由设计
|
|
459
|
+
|
|
460
|
+
## License
|
|
461
|
+
|
|
462
|
+
MIT — 详见 [LICENSE](./LICENSE)(保留原作者 fengshao1227 与 fork 维护人 wangzy 双 copyright)
|
|
463
|
+
|
|
464
|
+
---
|
|
465
|
+
|
|
466
|
+
v1.0.0 | [Issues](https://github.com/wzyxdwll/ccgx-workflow/issues) | [Migration from ccg-workflow](./MIGRATION-FROM-CCG-WORKFLOW.md)
|
package/bin/ccg.mjs
ADDED
package/dist/cli.d.mts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
package/dist/cli.mjs
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import cac from 'cac';
|
|
3
|
+
import ansis from 'ansis';
|
|
4
|
+
import { d as diagnoseMcpConfig, i as isWindows, r as readClaudeCodeConfig, f as fixWindowsMcpConfig, w as writeClaudeCodeConfig, a as readCcgConfig, b as initI18n, c as i18n, s as showMainMenu, e as init, g as configMcp, v as version } from './shared/ccgx-workflow.WgUzkiC3.mjs';
|
|
5
|
+
import 'inquirer';
|
|
6
|
+
import 'ora';
|
|
7
|
+
import 'node:child_process';
|
|
8
|
+
import 'node:util';
|
|
9
|
+
import 'node:os';
|
|
10
|
+
import 'node:url';
|
|
11
|
+
import 'pathe';
|
|
12
|
+
import 'fs-extra';
|
|
13
|
+
import 'smol-toml';
|
|
14
|
+
import 'i18next';
|
|
15
|
+
|
|
16
|
+
async function diagnoseMcp() {
|
|
17
|
+
console.log();
|
|
18
|
+
console.log(ansis.cyan.bold(" \u{1F50D} MCP Configuration Diagnostics"));
|
|
19
|
+
console.log();
|
|
20
|
+
const issues = await diagnoseMcpConfig();
|
|
21
|
+
console.log(ansis.bold(" Diagnostic Results:"));
|
|
22
|
+
console.log();
|
|
23
|
+
for (const issue of issues) {
|
|
24
|
+
if (issue.startsWith("\u2705")) {
|
|
25
|
+
console.log(ansis.green(` ${issue}`));
|
|
26
|
+
} else if (issue.startsWith("\u26A0\uFE0F")) {
|
|
27
|
+
console.log(ansis.yellow(` ${issue}`));
|
|
28
|
+
} else if (issue.startsWith("\u274C")) {
|
|
29
|
+
console.log(ansis.red(` ${issue}`));
|
|
30
|
+
} else {
|
|
31
|
+
console.log(` ${issue}`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
if (isWindows() && issues.some((i) => i.includes("not properly wrapped"))) {
|
|
35
|
+
console.log();
|
|
36
|
+
console.log(ansis.yellow(" \u{1F4A1} Tip: Run the following command to fix Windows MCP configuration:"));
|
|
37
|
+
console.log(ansis.gray(" npx ccg fix-mcp"));
|
|
38
|
+
}
|
|
39
|
+
console.log();
|
|
40
|
+
}
|
|
41
|
+
async function fixMcp() {
|
|
42
|
+
console.log();
|
|
43
|
+
console.log(ansis.cyan.bold(" \u{1F527} Fixing MCP Configuration"));
|
|
44
|
+
console.log();
|
|
45
|
+
if (!isWindows()) {
|
|
46
|
+
console.log(ansis.yellow(" \u26A0\uFE0F This command is only needed on Windows"));
|
|
47
|
+
console.log();
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
try {
|
|
51
|
+
const config = await readClaudeCodeConfig();
|
|
52
|
+
if (!config) {
|
|
53
|
+
console.log(ansis.red(" \u274C No ~/.claude.json found"));
|
|
54
|
+
console.log();
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
if (!config.mcpServers || Object.keys(config.mcpServers).length === 0) {
|
|
58
|
+
console.log(ansis.yellow(" \u26A0\uFE0F No MCP servers configured"));
|
|
59
|
+
console.log();
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const fixedConfig = fixWindowsMcpConfig(config);
|
|
63
|
+
await writeClaudeCodeConfig(fixedConfig);
|
|
64
|
+
console.log(ansis.green(" \u2705 Windows MCP configuration fixed"));
|
|
65
|
+
console.log();
|
|
66
|
+
console.log(ansis.gray(" Run diagnostics again to verify:"));
|
|
67
|
+
console.log(ansis.gray(" npx ccg diagnose-mcp"));
|
|
68
|
+
console.log();
|
|
69
|
+
} catch (error) {
|
|
70
|
+
console.log(ansis.red(` \u274C Failed to fix MCP configuration: ${error}`));
|
|
71
|
+
console.log();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
function customizeHelp(sections) {
|
|
76
|
+
sections.unshift({
|
|
77
|
+
title: "",
|
|
78
|
+
body: ansis.cyan.bold(`CCG - Claude + Codex + Gemini v${version}`)
|
|
79
|
+
});
|
|
80
|
+
sections.push({
|
|
81
|
+
title: ansis.yellow(i18n.t("cli:help.commands")),
|
|
82
|
+
body: [
|
|
83
|
+
` ${ansis.cyan("ccg")} ${i18n.t("cli:help.commandDescriptions.showMenu")}`,
|
|
84
|
+
` ${ansis.cyan("ccg init")} | ${ansis.cyan("i")} ${i18n.t("cli:help.commandDescriptions.initConfig")}`,
|
|
85
|
+
` ${ansis.cyan("ccg config mcp")} ${i18n.t("cli:help.commandDescriptions.configMcp")}`,
|
|
86
|
+
` ${ansis.cyan("ccg diagnose-mcp")} ${i18n.t("cli:help.commandDescriptions.diagnoseMcp")}`,
|
|
87
|
+
` ${ansis.cyan("ccg fix-mcp")} ${i18n.t("cli:help.commandDescriptions.fixMcp")}`,
|
|
88
|
+
"",
|
|
89
|
+
ansis.gray(` ${i18n.t("cli:help.shortcuts")}`),
|
|
90
|
+
` ${ansis.cyan("ccg i")} ${i18n.t("cli:help.shortcutDescriptions.quickInit")}`
|
|
91
|
+
].join("\n")
|
|
92
|
+
});
|
|
93
|
+
sections.push({
|
|
94
|
+
title: ansis.yellow(i18n.t("cli:help.options")),
|
|
95
|
+
body: [
|
|
96
|
+
` ${ansis.green("--lang, -l")} <lang> ${i18n.t("cli:help.optionDescriptions.displayLanguage")} (zh-CN, en)`,
|
|
97
|
+
` ${ansis.green("--force, -f")} ${i18n.t("cli:help.optionDescriptions.forceOverwrite")}`,
|
|
98
|
+
` ${ansis.green("--help, -h")} ${i18n.t("cli:help.optionDescriptions.displayHelp")}`,
|
|
99
|
+
` ${ansis.green("--version, -v")} ${i18n.t("cli:help.optionDescriptions.displayVersion")}`,
|
|
100
|
+
"",
|
|
101
|
+
ansis.gray(` ${i18n.t("cli:help.nonInteractiveMode")}`),
|
|
102
|
+
` ${ansis.green("--skip-prompt, -s")} ${i18n.t("cli:help.optionDescriptions.skipAllPrompts")}`,
|
|
103
|
+
` ${ansis.green("--frontend, -F")} <models> ${i18n.t("cli:help.optionDescriptions.frontendModels")}`,
|
|
104
|
+
` ${ansis.green("--backend, -B")} <models> ${i18n.t("cli:help.optionDescriptions.backendModels")}`,
|
|
105
|
+
` ${ansis.green("--mode, -m")} <mode> ${i18n.t("cli:help.optionDescriptions.collaborationMode")}`,
|
|
106
|
+
` ${ansis.green("--workflows, -w")} <list> ${i18n.t("cli:help.optionDescriptions.workflows")}`,
|
|
107
|
+
` ${ansis.green("--install-dir, -d")} <path> ${i18n.t("cli:help.optionDescriptions.installDir")}`
|
|
108
|
+
].join("\n")
|
|
109
|
+
});
|
|
110
|
+
sections.push({
|
|
111
|
+
title: ansis.yellow(i18n.t("cli:help.examples")),
|
|
112
|
+
body: [
|
|
113
|
+
ansis.gray(` # ${i18n.t("cli:help.exampleDescriptions.showInteractiveMenu")}`),
|
|
114
|
+
` ${ansis.cyan("npx ccg")}`,
|
|
115
|
+
"",
|
|
116
|
+
ansis.gray(` # ${i18n.t("cli:help.exampleDescriptions.runFullInitialization")}`),
|
|
117
|
+
` ${ansis.cyan("npx ccg init")}`,
|
|
118
|
+
` ${ansis.cyan("npx ccg i")}`,
|
|
119
|
+
"",
|
|
120
|
+
ansis.gray(` # ${i18n.t("cli:help.exampleDescriptions.customModels")}`),
|
|
121
|
+
` ${ansis.cyan("npx ccg i --frontend gemini,codex --backend codex,gemini")}`,
|
|
122
|
+
"",
|
|
123
|
+
ansis.gray(` # ${i18n.t("cli:help.exampleDescriptions.parallelMode")}`),
|
|
124
|
+
` ${ansis.cyan("npx ccg i --mode parallel")}`,
|
|
125
|
+
""
|
|
126
|
+
].join("\n")
|
|
127
|
+
});
|
|
128
|
+
return sections;
|
|
129
|
+
}
|
|
130
|
+
async function setupCommands(cli) {
|
|
131
|
+
try {
|
|
132
|
+
const config = await readCcgConfig();
|
|
133
|
+
const defaultLang = config?.general?.language || "zh-CN";
|
|
134
|
+
await initI18n(defaultLang);
|
|
135
|
+
} catch {
|
|
136
|
+
await initI18n("zh-CN");
|
|
137
|
+
}
|
|
138
|
+
cli.command("", i18n.t("cli:help.commandDescriptions.showMenu")).option("--lang, -l <lang>", `${i18n.t("cli:help.optionDescriptions.displayLanguage")} (zh-CN, en)`).action(async (options) => {
|
|
139
|
+
if (options.lang) {
|
|
140
|
+
await initI18n(options.lang);
|
|
141
|
+
}
|
|
142
|
+
await showMainMenu();
|
|
143
|
+
});
|
|
144
|
+
cli.command("init", i18n.t("cli:help.commandDescriptions.initConfig")).alias("i").option("--lang, -l <lang>", `${i18n.t("cli:help.optionDescriptions.displayLanguage")} (zh-CN, en)`).option("--force, -f", i18n.t("cli:help.optionDescriptions.forceOverwrite")).option("--skip-prompt, -s", i18n.t("cli:help.optionDescriptions.skipAllPrompts")).option("--skip-mcp", "Skip MCP configuration (used during update)").option("--sync", "List installed files that no longer exist in current templates (v4.1+)").option("--frontend, -F <models>", i18n.t("cli:help.optionDescriptions.frontendModels")).option("--backend, -B <models>", i18n.t("cli:help.optionDescriptions.backendModels")).option("--mode, -m <mode>", i18n.t("cli:help.optionDescriptions.collaborationMode")).option("--workflows, -w <workflows>", i18n.t("cli:help.optionDescriptions.workflows")).option("--install-dir, -d <path>", i18n.t("cli:help.optionDescriptions.installDir")).action(async (options) => {
|
|
145
|
+
if (options.lang) {
|
|
146
|
+
await initI18n(options.lang);
|
|
147
|
+
}
|
|
148
|
+
await init(options);
|
|
149
|
+
});
|
|
150
|
+
cli.command("diagnose-mcp", i18n.t("cli:help.commandDescriptions.diagnoseMcp")).action(async () => {
|
|
151
|
+
await diagnoseMcp();
|
|
152
|
+
});
|
|
153
|
+
cli.command("fix-mcp", i18n.t("cli:help.commandDescriptions.fixMcp")).action(async () => {
|
|
154
|
+
await fixMcp();
|
|
155
|
+
});
|
|
156
|
+
cli.command("config <subcommand>", i18n.t("cli:help.commandDescriptions.configMcp")).action(async (subcommand) => {
|
|
157
|
+
if (subcommand === "mcp") {
|
|
158
|
+
await configMcp();
|
|
159
|
+
} else {
|
|
160
|
+
console.log(ansis.red(i18n.t("common:unknownSubcommand", { subcommand })));
|
|
161
|
+
console.log(ansis.gray(i18n.t("common:availableSubcommands", { list: "mcp" })));
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
cli.help((sections) => customizeHelp(sections));
|
|
165
|
+
cli.version(version);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
async function main() {
|
|
169
|
+
const cli = cac("ccg");
|
|
170
|
+
await setupCommands(cli);
|
|
171
|
+
cli.parse();
|
|
172
|
+
}
|
|
173
|
+
main().catch(console.error);
|