@hunyed15/codecgc 0.1.6 → 0.1.8
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/.claude/hooks/route-edit.ps1 +58 -57
- package/INSTALLATION.md +117 -484
- package/README.md +118 -150
- package/bin/cgc-external-status.js +4 -0
- package/bin/cgc-start.js +4 -0
- package/bin/codecgc.js +141 -20
- package/codecgc/compound/codecgc-capability-matrix.md +37 -0
- package/codecgc/reference/README.md +69 -0
- package/codecgc/reference/maintainer-guide.md +93 -0
- package/codecgc/reference/mcp-tool-surface.md +112 -0
- package/codecgc/reference/onboarding.md +69 -0
- package/codecgc/reference/operation-guide.md +29 -23
- package/codecgc/reference/path-contract.md +53 -0
- package/codecgc/reference/policy-routing.md +57 -0
- package/codecgc/reference/project-structure.md +80 -0
- package/codecgc/reference/quickstart.md +108 -0
- package/codecgc/reference/real-workflow-loop.md +123 -0
- package/codecgc/reference/recovery-loop.md +109 -0
- package/codecgc/reference/release-maintenance-playbook.md +4 -1
- package/codecgc/reference/troubleshooting.md +112 -0
- package/codecgc/roadmap/codecgc-release-maintenance/delivery-plan.md +49 -0
- package/codecgc/roadmap/codecgc-release-maintenance/overview.md +41 -0
- package/codecgc/roadmap/codecgc-release-maintenance/phases.md +84 -0
- package/codecgcmcp/README.md +57 -11
- package/codecgcmcp/src/codecgcmcp/server.py +164 -26
- package/codexmcp/src/codexmcp/server.py +32 -26
- package/geminimcp/src/geminimcp/server.py +22 -14
- package/model-routing.yaml +31 -6
- package/package.json +11 -4
- package/scripts/audit_codecgc_external_capabilities.py +83 -4
- package/scripts/audit_codecgc_historical_audits.py +42 -2
- package/scripts/audit_codecgc_package_runtime.py +73 -4
- package/scripts/audit_codecgc_release_readiness.py +55 -3
- package/scripts/audit_codecgc_workflow_history.py +8 -5
- package/scripts/build_codecgc_task.py +62 -45
- package/scripts/codecgc_artifact_roots.py +8 -40
- package/scripts/codecgc_console_io.py +3 -45
- package/scripts/codecgc_executor_registry.py +4 -54
- package/scripts/codecgc_path_contract.py +7 -0
- package/scripts/codecgc_policy.py +275 -0
- package/scripts/codecgc_routing_paths.py +3 -16
- package/scripts/codecgc_routing_template.py +11 -135
- package/scripts/codecgc_runtime/__init__.py +1 -0
- package/scripts/codecgc_runtime/artifacts.py +42 -0
- package/scripts/codecgc_runtime/console.py +45 -0
- package/scripts/codecgc_runtime/executor_registry.py +55 -0
- package/scripts/codecgc_runtime/mcp_config.py +72 -0
- package/scripts/codecgc_runtime/path_contract.py +123 -0
- package/scripts/codecgc_runtime/paths.py +22 -0
- package/scripts/codecgc_runtime/routing_paths.py +16 -0
- package/scripts/codecgc_runtime/routing_template.py +169 -0
- package/scripts/codecgc_runtime/workflow_runtime.py +72 -0
- package/scripts/codecgc_runtime_paths.py +3 -22
- package/scripts/codecgc_step_control.py +3 -2
- package/scripts/codecgc_workflow_runtime.py +3 -71
- package/scripts/entry_codecgc_workflow.py +4 -0
- package/scripts/install_codecgc.py +490 -21
- package/scripts/normalize_codecgc_audits.py +5 -3
- package/scripts/postinstall_codecgc.js +6 -56
- package/scripts/review_codecgc_workflow.py +6 -3
- package/scripts/route_codecgc_workflow.py +67 -36
- package/scripts/run_codecgc_build.py +28 -0
- package/scripts/run_codecgc_fix.py +28 -0
- package/scripts/run_codecgc_task.py +5 -2
- package/scripts/run_codecgc_test.py +28 -0
- package/scripts/sync_codecgc_mcp_config.py +4 -54
- package/scripts/write_codecgc_review.py +7 -3
package/README.md
CHANGED
|
@@ -1,204 +1,172 @@
|
|
|
1
|
-
# CodeCGC
|
|
1
|
+
# CodeCGC
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
CodeCGC 是一个以 Claude 为主控入口的多模型开发编排层,用于把需求、规划、执行、审查和验收拆成可控的协作流程。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
它的核心分工是:Claude 负责需求、规划、设计、文档、审查、验收和工作流状态;Codex 负责后端实现和后端测试;Gemini 负责前端实现和前端测试。CodeCGC 通过项目级路由策略和 Claude 写入拦截 hook 来约束这些边界。
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## 工作模型
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
- **发布日期**: 2026-05-04
|
|
11
|
-
- **Python 要求**: >= 3.10
|
|
12
|
-
- **Node.js 要求**: >= 20.0.0
|
|
9
|
+
推荐主路径:
|
|
13
10
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
1. **路由逻辑错误** - `first_pending_step_is_not_executable` 硬编码检查 step 1
|
|
18
|
-
2. **路径提取误匹配** - `extract_target_paths_from_request` 误匹配日期/版本号
|
|
19
|
-
|
|
20
|
-
### P1 - 可用性改进 ✅
|
|
21
|
-
3. **步骤状态自动更新** - Review 后自动更新 checklist 步骤状态
|
|
22
|
-
4. **Per-step timeout** - 支持在 checklist 中为每个步骤指定超时时间
|
|
23
|
-
|
|
24
|
-
### P2 - 效率优化 ✅
|
|
25
|
-
5. **YAML 解析器替换** - 用 PyYAML 替换手写解析器,删除 ~180 行代码
|
|
26
|
-
6. **测试覆盖** - 添加 30+ 单元测试,覆盖核心逻辑
|
|
27
|
-
|
|
28
|
-
## 📚 文档
|
|
11
|
+
```text
|
|
12
|
+
Claude /cgc -> CodeCGC MCP -> CodeCGC runtime -> Codex 或 Gemini 执行器
|
|
13
|
+
```
|
|
29
14
|
|
|
30
|
-
|
|
31
|
-
- **[INSTALLATION.md](INSTALLATION.md)** - 完整安装与配置文档
|
|
32
|
-
- **[codecgc/architecture/code-audit-2026-05-04.md](codecgc/architecture/code-audit-2026-05-04.md)** - 代码审计报告
|
|
15
|
+
CLI 仍然保留,用于本地调试、CI 检查和 MCP 不可用时的回退执行。普通用户优先使用 Claude 内的 `/cgc`,或在命令行使用 `cgc`,不需要记住所有内部子命令。
|
|
33
16
|
|
|
34
|
-
##
|
|
17
|
+
## 安装
|
|
35
18
|
|
|
36
|
-
|
|
19
|
+
全局安装 CLI:
|
|
37
20
|
|
|
38
21
|
```bash
|
|
39
|
-
# 从 npm 安装 CodeCGC
|
|
40
22
|
npm install -g @hunyed15/codecgc --registry=https://registry.npmjs.org/
|
|
41
|
-
|
|
42
|
-
# 安装 Python 依赖
|
|
43
|
-
pip install pyyaml
|
|
44
|
-
|
|
45
|
-
# 如自动集成未生效,可手动补执行
|
|
46
|
-
cgc-install --mode user
|
|
47
23
|
```
|
|
48
24
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
- `~/.claude/mcp.json`
|
|
52
|
-
- `~/.claude/hooks/route-edit.ps1`
|
|
53
|
-
- `~/.claude/commands/cgc*.md` 自定义 slash commands
|
|
54
|
-
|
|
55
|
-
当前安装链路还会注册 3 个 MCP server:
|
|
56
|
-
|
|
57
|
-
- `codecgc`:CodeCGC 编排器 MCP
|
|
58
|
-
- `codex`:后端执行器 MCP
|
|
59
|
-
- `gemini`:前端执行器 MCP
|
|
25
|
+
全局安装只提供 `cgc*` 命令,不会默认写入用户级 Claude 配置。
|
|
60
26
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
- `/cgc`
|
|
64
|
-
- `/cgc-install`
|
|
65
|
-
- `/cgc-status`
|
|
66
|
-
- `/cgc-doctor`
|
|
67
|
-
- `/cgc-plan`
|
|
68
|
-
- `/cgc-build`
|
|
69
|
-
- `/cgc-fix`
|
|
70
|
-
- `/cgc-test`
|
|
71
|
-
- `/cgc-review`
|
|
72
|
-
- `/cgc-route`
|
|
73
|
-
- `/cgc-history`
|
|
74
|
-
- `/cgc-package-audit`
|
|
75
|
-
- `/cgc-external-audit`
|
|
76
|
-
- `/cgc-release-readiness`
|
|
77
|
-
- `/cgc-lifecycle`
|
|
78
|
-
|
|
79
|
-
当前这些 Claude commands 已调整为:
|
|
80
|
-
|
|
81
|
-
- 优先走 `codecgc` MCP orchestrator
|
|
82
|
-
- 只有在 MCP tool 路径不可用时,才回退到本地 CLI
|
|
83
|
-
|
|
84
|
-
如果安装时 Python 尚未就绪,自动集成会跳过,此时可在安装 Python 后手动执行 `cgc-install --mode user`。
|
|
85
|
-
|
|
86
|
-
### 2. 初始化项目
|
|
27
|
+
然后在每个目标项目根目录执行项目级安装:
|
|
87
28
|
|
|
88
29
|
```bash
|
|
89
30
|
cd your-project
|
|
90
31
|
cgc-install
|
|
32
|
+
cgc-start
|
|
33
|
+
cgc-status
|
|
91
34
|
cgc-doctor
|
|
92
35
|
```
|
|
93
36
|
|
|
94
|
-
|
|
37
|
+
在 Claude 中可以使用对应 slash command:
|
|
95
38
|
|
|
96
|
-
```
|
|
97
|
-
cgc
|
|
39
|
+
```text
|
|
40
|
+
/cgc-install
|
|
41
|
+
/cgc-start
|
|
42
|
+
/cgc-status
|
|
43
|
+
/cgc-doctor
|
|
98
44
|
```
|
|
99
45
|
|
|
100
|
-
|
|
46
|
+
`/cgc-install` 和 `cgc-install` 默认都是项目级安装。它们会把集成文件写入当前项目,而不是写入 `~/.claude`。只有用户显式请求 user 模式时,才会处理用户级 Claude 集成。
|
|
47
|
+
|
|
48
|
+
## 安装后生成的项目文件
|
|
49
|
+
|
|
50
|
+
`cgc-install` 会在目标项目中创建或同步:
|
|
51
|
+
|
|
52
|
+
```text
|
|
53
|
+
.mcp.json
|
|
54
|
+
model-routing.yaml
|
|
55
|
+
.claude/
|
|
56
|
+
settings.json
|
|
57
|
+
hooks/
|
|
58
|
+
route-edit.ps1
|
|
59
|
+
commands/
|
|
60
|
+
cgc*.md
|
|
61
|
+
codecgc/
|
|
62
|
+
START_HERE.md
|
|
63
|
+
features/
|
|
64
|
+
issues/
|
|
65
|
+
execution/
|
|
66
|
+
requirements/
|
|
67
|
+
architecture/
|
|
68
|
+
roadmap/
|
|
69
|
+
compound/
|
|
70
|
+
docs/
|
|
71
|
+
reference/
|
|
72
|
+
fixtures/
|
|
73
|
+
```
|
|
101
74
|
|
|
102
|
-
|
|
75
|
+
在 CodeCGC 源码仓库中,`.mcp.json`、`.claude/settings.json`、`.claude/commands/`、`codecgc/START_HERE.md` 以及实时 workflow 输出目录会被忽略,因为它们是机器相关或项目安装生成的内容。
|
|
103
76
|
|
|
104
|
-
|
|
77
|
+
源码仓库会保留可发布运行时、参考文档、命令模板、测试 fixtures,以及 `.claude/hooks/route-edit.ps1` 这个 hook 模板。
|
|
105
78
|
|
|
106
|
-
|
|
107
|
-
npm login --registry=https://registry.npmjs.org/
|
|
108
|
-
npm publish --access public --registry=https://registry.npmjs.org/
|
|
109
|
-
```
|
|
79
|
+
## 角色与路由策略
|
|
110
80
|
|
|
111
|
-
|
|
81
|
+
`model-routing.yaml` 是文件归属和写入权限的唯一策略来源:
|
|
112
82
|
|
|
113
|
-
|
|
83
|
+
- Claude 可以写 orchestration 和 docs 路径。
|
|
84
|
+
- Codex 可以写 backend 源码和 backend 测试。
|
|
85
|
+
- Gemini 可以写 frontend 源码和 frontend 测试。
|
|
86
|
+
- shared 路径使用 `split-first` 策略,必须先拆分再执行。
|
|
87
|
+
- unknown 路径默认拒绝,直到它被明确加入 `model-routing.yaml`。
|
|
114
88
|
|
|
115
|
-
|
|
89
|
+
Claude hook 本身不承载业务逻辑。它只把 `Edit`、`Write`、`MultiEdit` 请求转发给 `scripts/codecgc_policy.py`,从而保证 hook 检查、任务构建和执行器派发使用同一套路由策略。
|
|
116
90
|
|
|
117
|
-
|
|
91
|
+
## 文档放置规则
|
|
118
92
|
|
|
119
|
-
|
|
120
|
-
git tag v0.1.0
|
|
121
|
-
git push origin v0.1.0
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
自动发布前提:
|
|
93
|
+
普通项目文档放在 `docs/`,例如用户手册、API 文档、部署说明和 changelog。
|
|
125
94
|
|
|
126
|
-
|
|
127
|
-
- 仓库 Secrets 中已设置 `NPM_TOKEN`
|
|
128
|
-
- tag 版本必须与 `package.json` 中的 `version` 完全一致
|
|
95
|
+
CodeCGC 工作流和治理产物放在 `codecgc/`:
|
|
129
96
|
|
|
130
|
-
|
|
97
|
+
- `codecgc/docs/`:CodeCGC 生成的指南类文档。
|
|
98
|
+
- `codecgc/reference/`:稳定契约、参考说明和工具文档。
|
|
99
|
+
- `codecgc/requirements/`:长期需求沉淀。
|
|
100
|
+
- `codecgc/architecture/`:架构说明和系统图谱。
|
|
101
|
+
- `codecgc/roadmap/`:路线图和阶段计划。
|
|
102
|
+
- `codecgc/features/`:功能计划、checklist 和验收记录。
|
|
103
|
+
- `codecgc/issues/`:问题报告、分析和修复计划。
|
|
104
|
+
- `codecgc/execution/`:执行器审计记录。
|
|
131
105
|
|
|
132
|
-
|
|
133
|
-
# 1. 更新 package.json version
|
|
134
|
-
# 2. 提交到 GitHub
|
|
135
|
-
# 3. 打版本 tag
|
|
136
|
-
git tag v0.1.0
|
|
137
|
-
git push origin main --tags
|
|
138
|
-
```
|
|
106
|
+
## 日常使用
|
|
139
107
|
|
|
140
|
-
|
|
108
|
+
在 Claude 中:
|
|
141
109
|
|
|
110
|
+
```text
|
|
111
|
+
/cgc 在 src/components/LoginForm.tsx 中新增登录页
|
|
142
112
|
```
|
|
143
|
-
release/
|
|
144
|
-
├── README.md # 本文件
|
|
145
|
-
├── QUICKSTART.md # 快速开始指南
|
|
146
|
-
├── INSTALLATION.md # 完整安装文档
|
|
147
|
-
├── package.json # Node.js 包配置
|
|
148
|
-
├── requirements.txt # Python 核心依赖
|
|
149
|
-
├── requirements-dev.txt # Python 开发依赖
|
|
150
|
-
├── pytest.ini # 测试配置
|
|
151
|
-
├── model-routing.yaml # 路由规则模板
|
|
152
|
-
├── bin/ # 命令行工具
|
|
153
|
-
├── scripts/ # Python 工作流脚本
|
|
154
|
-
├── tests/ # 单元测试
|
|
155
|
-
├── codecgc/ # 工作流产物模板
|
|
156
|
-
├── codexmcp/ # Codex MCP 服务器
|
|
157
|
-
└── geminimcp/ # Gemini MCP 服务器
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
## 🔧 依赖清单
|
|
161
113
|
|
|
162
|
-
|
|
114
|
+
在命令行中:
|
|
163
115
|
|
|
164
|
-
|
|
165
|
-
|
|
116
|
+
```bash
|
|
117
|
+
cgc "在 src/components/LoginForm.tsx 中新增登录页"
|
|
118
|
+
```
|
|
166
119
|
|
|
167
|
-
|
|
168
|
-
- pytest>=8.0.0
|
|
169
|
-
- pytest-cov>=4.1.0
|
|
120
|
+
CodeCGC 会判断下一步应该是规划、执行、审查、继续还是关闭。只有当你已经明确知道当前阶段时,才需要直接使用子命令:
|
|
170
121
|
|
|
171
|
-
|
|
122
|
+
```bash
|
|
123
|
+
cgc-plan ...
|
|
124
|
+
cgc-build ...
|
|
125
|
+
cgc-fix ...
|
|
126
|
+
cgc-test ...
|
|
127
|
+
cgc-review ...
|
|
128
|
+
cgc-route ...
|
|
129
|
+
```
|
|
172
130
|
|
|
173
|
-
|
|
174
|
-
2. **Gemini MCP** - 前端代码执行器
|
|
131
|
+
## 健康检查
|
|
175
132
|
|
|
176
|
-
|
|
133
|
+
对已经安装 CodeCGC 的目标项目:
|
|
177
134
|
|
|
178
135
|
```bash
|
|
136
|
+
cgc-status
|
|
179
137
|
cgc-doctor
|
|
138
|
+
cgc-external-status
|
|
139
|
+
cgc-external-audit
|
|
180
140
|
```
|
|
181
141
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
### v0.1.0 (2026-05-04)
|
|
185
|
-
|
|
186
|
-
**修复**:
|
|
187
|
-
- 修复路由逻辑错误
|
|
188
|
-
- 修复路径提取误匹配
|
|
189
|
-
- Review 后自动更新步骤状态
|
|
190
|
-
|
|
191
|
-
**新增**:
|
|
192
|
-
- Per-step timeout 支持
|
|
193
|
-
- 30+ 单元测试
|
|
142
|
+
维护或发布 CodeCGC 包时:
|
|
194
143
|
|
|
195
|
-
|
|
196
|
-
-
|
|
144
|
+
```bash
|
|
145
|
+
python -m pytest tests --basetemp D:\tmp\codecgc-pytest
|
|
146
|
+
python -m compileall -q scripts codecgcmcp\src codexmcp\src geminimcp\src
|
|
147
|
+
python scripts\audit_codecgc_package_runtime.py --format json
|
|
148
|
+
python scripts\audit_codecgc_release_readiness.py --format json
|
|
149
|
+
npm pack --dry-run --json
|
|
150
|
+
```
|
|
197
151
|
|
|
198
|
-
|
|
152
|
+
`cgc-release-readiness` 会通过临时项目安装探针验证发布包可用性。源码仓库本身不需要提交项目级 `.mcp.json` 或 `.claude/settings.json`。
|
|
199
153
|
|
|
200
|
-
|
|
154
|
+
如果运行环境限制默认临时目录写入,可以显式指定探针目录:
|
|
201
155
|
|
|
202
|
-
|
|
156
|
+
```bash
|
|
157
|
+
set CODECGC_RELEASE_PROBE_ROOT=D:\tmp
|
|
158
|
+
python scripts\audit_codecgc_release_readiness.py --format json
|
|
159
|
+
```
|
|
203
160
|
|
|
204
|
-
|
|
161
|
+
## 参考文档
|
|
162
|
+
|
|
163
|
+
- [快速开始](codecgc/reference/quickstart.md)
|
|
164
|
+
- [新手入口](codecgc/reference/onboarding.md)
|
|
165
|
+
- [操作指南](codecgc/reference/operation-guide.md)
|
|
166
|
+
- [真实工作流闭环](codecgc/reference/real-workflow-loop.md)
|
|
167
|
+
- [失败恢复闭环](codecgc/reference/recovery-loop.md)
|
|
168
|
+
- [故障排查](codecgc/reference/troubleshooting.md)
|
|
169
|
+
- [路径契约](codecgc/reference/path-contract.md)
|
|
170
|
+
- [路由策略](codecgc/reference/policy-routing.md)
|
|
171
|
+
- [项目结构](codecgc/reference/project-structure.md)
|
|
172
|
+
- [维护者指南](codecgc/reference/maintainer-guide.md)
|
package/bin/cgc-start.js
ADDED
package/bin/codecgc.js
CHANGED
|
@@ -12,11 +12,13 @@ const invokedBinary = (process.env.CODECGC_BIN_NAME || path.basename(process.arg
|
|
|
12
12
|
const packageJson = JSON.parse(readFileSync(path.join(repoRoot, "package.json"), "utf8"));
|
|
13
13
|
const productVersion = packageJson.version || "0.0.0";
|
|
14
14
|
const DIRECT_COMMANDS = new Set([
|
|
15
|
+
"start",
|
|
15
16
|
"install",
|
|
16
17
|
"status",
|
|
17
18
|
"doctor",
|
|
18
19
|
"package-audit",
|
|
19
20
|
"external-audit",
|
|
21
|
+
"external-status",
|
|
20
22
|
"release-readiness",
|
|
21
23
|
"lifecycle",
|
|
22
24
|
"history",
|
|
@@ -39,11 +41,13 @@ const helpText = `CodeCGC 命令入口
|
|
|
39
41
|
cgc --request <text>
|
|
40
42
|
cgc --latest
|
|
41
43
|
cgc --slug <workflow-slug>
|
|
42
|
-
cgc-
|
|
44
|
+
cgc-start [--format json|summary] [--workspace <dir>]
|
|
45
|
+
cgc-install [--mode local|user-dry-run|user|status|doctor|start] [--workspace <dir>] [--user-root <dir>]
|
|
43
46
|
cgc-status [--format json|summary]
|
|
44
47
|
cgc-doctor [--format json|summary]
|
|
45
48
|
cgc-package-audit [--format json|summary]
|
|
46
49
|
cgc-external-audit [--format json|summary] [--workspace <dir>]
|
|
50
|
+
cgc-external-status [--format json|summary] [--workspace <dir>]
|
|
47
51
|
cgc-release-readiness [--format json|summary] [--workspace <dir>]
|
|
48
52
|
cgc-lifecycle [--format json|summary]
|
|
49
53
|
cgc-history [--flow all|feature|issue] [--status all|open|closed] [--last <n>] [--format json|summary]
|
|
@@ -78,6 +82,8 @@ const helpText = `CodeCGC 命令入口
|
|
|
78
82
|
cgc-route ...
|
|
79
83
|
我想把 CodeCGC 安装或重新同步到当前项目
|
|
80
84
|
cgc-install
|
|
85
|
+
我刚装完,想看当前项目下一步怎么开始
|
|
86
|
+
cgc-start
|
|
81
87
|
我想知道集成面现在是否就绪
|
|
82
88
|
cgc-status
|
|
83
89
|
我想知道运行前置和执行器能不能真正启动
|
|
@@ -86,6 +92,8 @@ const helpText = `CodeCGC 命令入口
|
|
|
86
92
|
cgc-package-audit
|
|
87
93
|
我想确认第三方能力接入策略和本地 MCP 注册状态
|
|
88
94
|
cgc-external-audit
|
|
95
|
+
我想快速查看第三方能力状态面板
|
|
96
|
+
cgc-external-status
|
|
89
97
|
我想在发布或长期维护前跑一次总检查
|
|
90
98
|
cgc-release-readiness
|
|
91
99
|
我想快速判断当前仓库处于哪个生命周期阶段
|
|
@@ -98,11 +106,13 @@ const helpText = `CodeCGC 命令入口
|
|
|
98
106
|
cgc-plan / cgc-build / cgc-fix / cgc-review / cgc-route
|
|
99
107
|
|
|
100
108
|
命令职责:
|
|
109
|
+
cgc-start 显示当前项目的首次使用入口和下一步动作
|
|
101
110
|
cgc-install 同步项目级或用户级集成面
|
|
102
111
|
cgc-status 检查集成是否就绪,并给出下一步
|
|
103
112
|
cgc-doctor 检查运行前置、执行器导入与项目集成状态
|
|
104
113
|
cgc-package-audit 检查发布包是否覆盖运行时依赖
|
|
105
|
-
cgc-external-audit
|
|
114
|
+
cgc-external-audit 检查外部能力白名单、接入声明与本地 MCP 观测一致性
|
|
115
|
+
cgc-external-status 查看外部能力状态面板与本地 MCP 观测结果
|
|
106
116
|
cgc-release-readiness 汇总安装、运行时、发布包、外部接入与生命周期就绪状态
|
|
107
117
|
cgc-lifecycle 汇总 roadmap、workflow 与 execution 的生命周期阶段
|
|
108
118
|
cgc-history 只读汇总最近 feature / issue workflow 历史
|
|
@@ -117,9 +127,10 @@ const helpText = `CodeCGC 命令入口
|
|
|
117
127
|
|
|
118
128
|
首次使用:
|
|
119
129
|
1. 先在目标项目根目录执行 cgc-install
|
|
120
|
-
2.
|
|
121
|
-
3.
|
|
122
|
-
4.
|
|
130
|
+
2. 执行 cgc-start 查看项目本地入口说明
|
|
131
|
+
3. 再执行 cgc-status,必要时补 cgc-doctor
|
|
132
|
+
4. 然后直接使用 cgc "<自然语言需求>" 或 cgc-entry
|
|
133
|
+
5. 只有当你已经明确知道当前阶段时,再改用 cgc-plan / cgc-build / cgc-fix / cgc-test / cgc-review / cgc-route
|
|
123
134
|
|
|
124
135
|
示例:
|
|
125
136
|
cgc "新增一个登录页面,放在 src/components/LoginForm.tsx"
|
|
@@ -129,6 +140,7 @@ const helpText = `CodeCGC 命令入口
|
|
|
129
140
|
cgc --request "现在下一步该做什么"
|
|
130
141
|
cgc --latest
|
|
131
142
|
cgc --slug 2026-05-01-demo-login-ui
|
|
143
|
+
cgc-start
|
|
132
144
|
cgc-plan --flow feature --slug demo-login-ui --summary "Demo login UI feature" --target-path src/components/LoginForm.tsx --kind frontend
|
|
133
145
|
cgc-build --slug 2026-05-01-demo-login-ui --step-number 1 --dry-run
|
|
134
146
|
cgc-fix --slug 2026-05-01-demo-sync-bug --step-number 1 --dry-run
|
|
@@ -140,6 +152,7 @@ const helpText = `CodeCGC 命令入口
|
|
|
140
152
|
cgc-status --format summary
|
|
141
153
|
cgc-doctor --format summary
|
|
142
154
|
cgc-package-audit --format summary
|
|
155
|
+
cgc-external-status --format summary
|
|
143
156
|
cgc-external-audit --format summary
|
|
144
157
|
cgc-release-readiness --format summary
|
|
145
158
|
cgc-lifecycle --format summary
|
|
@@ -153,10 +166,36 @@ const helpText = `CodeCGC 命令入口
|
|
|
153
166
|
CODECGC_WORKSPACE_ROOT 当当前 shell 目录不是目标项目根目录时,显式覆盖目标工作区
|
|
154
167
|
`;
|
|
155
168
|
|
|
169
|
+
const startHelpText = `CodeCGC Start
|
|
170
|
+
|
|
171
|
+
用法:
|
|
172
|
+
cgc-start [--format <summary|json>] [--workspace <dir>]
|
|
173
|
+
|
|
174
|
+
用途:
|
|
175
|
+
显示当前项目的首次使用入口、项目本地 onboarding 文件,以及下一步动作。
|
|
176
|
+
|
|
177
|
+
默认行为:
|
|
178
|
+
不传 --format 时默认输出 summary,更适合安装后直接阅读。
|
|
179
|
+
该命令只读,不会修改项目文件。
|
|
180
|
+
|
|
181
|
+
主要参数:
|
|
182
|
+
--workspace <dir>
|
|
183
|
+
显式指定目标项目根目录。默认使用当前 shell 所在目录。
|
|
184
|
+
--format <summary|json>
|
|
185
|
+
summary 用于新手入口摘要,json 用于调试或自动化消费。
|
|
186
|
+
|
|
187
|
+
推荐用法:
|
|
188
|
+
cgc-install
|
|
189
|
+
cgc-start
|
|
190
|
+
cgc-status
|
|
191
|
+
cgc-doctor
|
|
192
|
+
cgc "新增一个登录页面,放在 src/components/LoginForm.tsx"
|
|
193
|
+
`;
|
|
194
|
+
|
|
156
195
|
const installHelpText = `CodeCGC 安装与自检
|
|
157
196
|
|
|
158
197
|
用法:
|
|
159
|
-
cgc-install [--mode <local|user-dry-run|user|status|doctor>] [--workspace <dir>] [--user-root <dir>] [--format <json|summary>]
|
|
198
|
+
cgc-install [--mode <local|user-dry-run|user|status|doctor|start>] [--workspace <dir>] [--user-root <dir>] [--format <json|summary>]
|
|
160
199
|
|
|
161
200
|
用途:
|
|
162
201
|
准备、检查或修复 CodeCGC 在 Claude 与 MCP 启动链路上的集成面。
|
|
@@ -172,6 +211,8 @@ const installHelpText = `CodeCGC 安装与自检
|
|
|
172
211
|
检查项目级集成是否就绪,并附带用户级集成预览状态。
|
|
173
212
|
doctor
|
|
174
213
|
检查运行前置、执行器可导入性,以及项目级集成是否就绪。
|
|
214
|
+
start
|
|
215
|
+
只读显示项目首次使用入口和下一步动作。
|
|
175
216
|
|
|
176
217
|
主要参数:
|
|
177
218
|
--workspace <dir>
|
|
@@ -183,12 +224,16 @@ const installHelpText = `CodeCGC 安装与自检
|
|
|
183
224
|
|
|
184
225
|
推荐用法:
|
|
185
226
|
cgc-install
|
|
227
|
+
cgc-start
|
|
186
228
|
cgc-install --workspace D:\\Projects\\MyApp
|
|
229
|
+
cgc-install --mode start --format summary
|
|
187
230
|
cgc-install --mode status --format summary
|
|
188
231
|
cgc-install --mode doctor --format summary
|
|
189
232
|
cgc-install --mode user-dry-run --user-root C:\\Users\\Admin\\.claude
|
|
190
233
|
|
|
191
234
|
相关命令:
|
|
235
|
+
cgc-start
|
|
236
|
+
查看当前项目首次使用入口。
|
|
192
237
|
cgc-status
|
|
193
238
|
快速查看集成状态。
|
|
194
239
|
cgc-doctor
|
|
@@ -227,6 +272,8 @@ const statusHelpText = `CodeCGC 安装状态
|
|
|
227
272
|
cgc-status --format json
|
|
228
273
|
|
|
229
274
|
相关命令:
|
|
275
|
+
cgc-start
|
|
276
|
+
查看当前项目首次使用入口。
|
|
230
277
|
cgc-install
|
|
231
278
|
同步或修复当前项目集成面。
|
|
232
279
|
cgc-doctor
|
|
@@ -318,6 +365,30 @@ const externalAuditHelpText = `CodeCGC 外部能力审计
|
|
|
318
365
|
cgc-external-audit --format json
|
|
319
366
|
`;
|
|
320
367
|
|
|
368
|
+
const externalStatusHelpText = `CodeCGC 外部能力状态面板
|
|
369
|
+
|
|
370
|
+
用法:
|
|
371
|
+
cgc-external-status [--format <summary|json>] [--workspace <dir>]
|
|
372
|
+
|
|
373
|
+
用途:
|
|
374
|
+
快速查看外部能力登记状态、规划项与本地 MCP 观测结果。
|
|
375
|
+
|
|
376
|
+
默认行为:
|
|
377
|
+
不传 --format 时默认输出 summary,更适合日常维护检查。
|
|
378
|
+
只有在需要查看完整结构化数据时才建议改用 --format json。
|
|
379
|
+
|
|
380
|
+
主要参数:
|
|
381
|
+
--workspace <dir>
|
|
382
|
+
显式指定目标项目根目录。默认使用当前 shell 所在目录。
|
|
383
|
+
--format <summary|json>
|
|
384
|
+
summary 用于快速查看面板,json 用于调试和自动化消费。
|
|
385
|
+
|
|
386
|
+
推荐用法:
|
|
387
|
+
cgc-external-status
|
|
388
|
+
cgc-external-status --workspace D:\\Projects\\MyApp
|
|
389
|
+
cgc-external-status --format json
|
|
390
|
+
`;
|
|
391
|
+
|
|
321
392
|
const releaseReadinessHelpText = `CodeCGC Release Readiness
|
|
322
393
|
|
|
323
394
|
用法:
|
|
@@ -594,22 +665,22 @@ const routeHelpText = `CodeCGC Workflow Route
|
|
|
594
665
|
|
|
595
666
|
function findPython() {
|
|
596
667
|
const override = (process.env.CODECGC_PYTHON_COMMAND || "").trim();
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
shell: false,
|
|
602
|
-
});
|
|
603
|
-
if (probe.status === 0) {
|
|
604
|
-
return override;
|
|
668
|
+
const generatedMcpCommand = readGeneratedMcpPythonCommand();
|
|
669
|
+
for (const configured of [override, generatedMcpCommand]) {
|
|
670
|
+
if (configured) {
|
|
671
|
+
return configured;
|
|
605
672
|
}
|
|
606
673
|
}
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
674
|
+
const candidates = [
|
|
675
|
+
...(process.platform === "win32" ? ["python", "py"] : ["python3", "python"]),
|
|
676
|
+
];
|
|
677
|
+
const seen = new Set();
|
|
611
678
|
|
|
612
679
|
for (const command of candidates) {
|
|
680
|
+
if (seen.has(command)) {
|
|
681
|
+
continue;
|
|
682
|
+
}
|
|
683
|
+
seen.add(command);
|
|
613
684
|
const probe = spawnSync(command, ["--version"], {
|
|
614
685
|
cwd: repoRoot,
|
|
615
686
|
encoding: "utf8",
|
|
@@ -622,6 +693,27 @@ function findPython() {
|
|
|
622
693
|
return null;
|
|
623
694
|
}
|
|
624
695
|
|
|
696
|
+
function readGeneratedMcpPythonCommand() {
|
|
697
|
+
for (const mcpPath of [path.join(invocationCwd, ".mcp.json"), path.join(repoRoot, ".mcp.json")]) {
|
|
698
|
+
if (!existsSync(mcpPath)) {
|
|
699
|
+
continue;
|
|
700
|
+
}
|
|
701
|
+
try {
|
|
702
|
+
const payload = JSON.parse(readFileSync(mcpPath, "utf8"));
|
|
703
|
+
const servers = payload && payload.mcpServers;
|
|
704
|
+
if (servers && servers.codecgc && typeof servers.codecgc.command === "string") {
|
|
705
|
+
const command = servers.codecgc.command.trim();
|
|
706
|
+
if (command) {
|
|
707
|
+
return command;
|
|
708
|
+
}
|
|
709
|
+
}
|
|
710
|
+
} catch (_error) {
|
|
711
|
+
// Ignore malformed generated config and continue with normal Python discovery.
|
|
712
|
+
}
|
|
713
|
+
}
|
|
714
|
+
return "";
|
|
715
|
+
}
|
|
716
|
+
|
|
625
717
|
function run(command, commandArgs) {
|
|
626
718
|
const commandEnv = {
|
|
627
719
|
...process.env,
|
|
@@ -1096,6 +1188,10 @@ function looksLikeEntryFlag(flag) {
|
|
|
1096
1188
|
]).has(flag);
|
|
1097
1189
|
}
|
|
1098
1190
|
|
|
1191
|
+
function hasOption(argsList, optionName) {
|
|
1192
|
+
return argsList.some((item) => item === optionName || item.startsWith(`${optionName}=`));
|
|
1193
|
+
}
|
|
1194
|
+
|
|
1099
1195
|
function shouldRouteRootInvocationToEntry(rawArgs) {
|
|
1100
1196
|
if (rawArgs.length === 0) {
|
|
1101
1197
|
return false;
|
|
@@ -1132,6 +1228,10 @@ function main() {
|
|
|
1132
1228
|
}
|
|
1133
1229
|
|
|
1134
1230
|
if (rest.length === 1 && (rest[0] === "--help" || rest[0] === "-h")) {
|
|
1231
|
+
if (subcommand === "start") {
|
|
1232
|
+
console.log(startHelpText);
|
|
1233
|
+
return;
|
|
1234
|
+
}
|
|
1135
1235
|
if (subcommand === "install") {
|
|
1136
1236
|
console.log(installHelpText);
|
|
1137
1237
|
return;
|
|
@@ -1152,6 +1252,10 @@ function main() {
|
|
|
1152
1252
|
console.log(externalAuditHelpText);
|
|
1153
1253
|
return;
|
|
1154
1254
|
}
|
|
1255
|
+
if (subcommand === "external-status") {
|
|
1256
|
+
console.log(externalStatusHelpText);
|
|
1257
|
+
return;
|
|
1258
|
+
}
|
|
1155
1259
|
if (subcommand === "release-readiness") {
|
|
1156
1260
|
console.log(releaseReadinessHelpText);
|
|
1157
1261
|
return;
|
|
@@ -1216,6 +1320,18 @@ function main() {
|
|
|
1216
1320
|
return;
|
|
1217
1321
|
}
|
|
1218
1322
|
|
|
1323
|
+
if (subcommand === "start") {
|
|
1324
|
+
run(
|
|
1325
|
+
python,
|
|
1326
|
+
[
|
|
1327
|
+
path.join(repoRoot, "scripts", "install_codecgc.py"),
|
|
1328
|
+
"--mode",
|
|
1329
|
+
"start",
|
|
1330
|
+
...rest,
|
|
1331
|
+
],
|
|
1332
|
+
);
|
|
1333
|
+
}
|
|
1334
|
+
|
|
1219
1335
|
if (subcommand === "install") {
|
|
1220
1336
|
run(python, [path.join(repoRoot, "scripts", "install_codecgc.py"), ...rest]);
|
|
1221
1337
|
}
|
|
@@ -1242,12 +1358,17 @@ function main() {
|
|
|
1242
1358
|
);
|
|
1243
1359
|
}
|
|
1244
1360
|
|
|
1245
|
-
if (subcommand === "external-audit") {
|
|
1361
|
+
if (subcommand === "external-audit" || subcommand === "external-status") {
|
|
1362
|
+
const view = subcommand === "external-status" ? "status" : "audit";
|
|
1363
|
+
const commandArgs = [...rest];
|
|
1364
|
+
if (!hasOption(commandArgs, "--view")) {
|
|
1365
|
+
commandArgs.push("--view", view);
|
|
1366
|
+
}
|
|
1246
1367
|
run(
|
|
1247
1368
|
python,
|
|
1248
1369
|
[
|
|
1249
1370
|
path.join(repoRoot, "scripts", "audit_codecgc_external_capabilities.py"),
|
|
1250
|
-
...
|
|
1371
|
+
...commandArgs,
|
|
1251
1372
|
],
|
|
1252
1373
|
);
|
|
1253
1374
|
}
|