ccg-workflow 1.6.0 → 1.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +175 -408
- package/bin/codeagent-wrapper-linux-arm64 +0 -0
- package/bin/codeagent-wrapper-windows-arm64.exe +0 -0
- package/dist/cli.mjs +1 -1
- package/dist/index.d.mts +3 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.mjs +1 -1
- package/dist/shared/{ccg-workflow.CjatSnB0.mjs → ccg-workflow._fNXxrRQ.mjs} +194 -286
- package/package.json +1 -1
- package/templates/commands/analyze.md +130 -57
- package/templates/commands/backend.md +92 -152
- package/templates/commands/clean-branches.md +81 -66
- package/templates/commands/commit.md +81 -117
- package/templates/commands/debug.md +117 -90
- package/templates/commands/feat.md +68 -282
- package/templates/commands/frontend.md +92 -154
- package/templates/commands/init.md +100 -36
- package/templates/commands/optimize.md +137 -70
- package/templates/commands/review.md +123 -63
- package/templates/commands/rollback.md +86 -60
- package/templates/commands/test.md +143 -54
- package/templates/commands/workflow.md +244 -0
- package/templates/commands/worktree.md +78 -226
- package/templates/commands/bugfix.md +0 -114
- package/templates/commands/code.md +0 -255
- package/templates/commands/dev.md +0 -179
- package/templates/commands/think.md +0 -102
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: '多模型协作开发工作流(研究→构思→计划→执行→优化→评审),智能路由前端→Gemini、后端→Codex'
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Workflow - 多模型协作开发
|
|
6
|
+
|
|
7
|
+
使用质量把关、MCP 服务和多模型协作执行结构化开发工作流。
|
|
8
|
+
|
|
9
|
+
## 使用方法
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
/workflow <任务描述>
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## 上下文
|
|
16
|
+
|
|
17
|
+
- 要开发的任务:$ARGUMENTS
|
|
18
|
+
- 带质量把关的结构化 6 阶段工作流
|
|
19
|
+
- 多模型协作:Codex(后端)+ Gemini(前端)+ Claude(编排)
|
|
20
|
+
- MCP 服务集成(ace-tool)以增强功能
|
|
21
|
+
|
|
22
|
+
## 你的角色
|
|
23
|
+
|
|
24
|
+
你是**编排者**,协调多模型协作系统(研究 → 构思 → 计划 → 执行 → 优化 → 评审),用中文协助用户,面向专业程序员,交互应简洁专业,避免不必要解释。
|
|
25
|
+
|
|
26
|
+
**协作模型**:
|
|
27
|
+
- **ace-tool MCP** – 代码检索 + Prompt 增强
|
|
28
|
+
- **Codex** – 后端逻辑、算法、调试(**后端权威,可信赖**)
|
|
29
|
+
- **Gemini** – 前端 UI/UX、视觉设计(**前端高手,后端意见仅供参考**)
|
|
30
|
+
- **Claude (自己)** – 编排、计划、执行、交付
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## 沟通守则
|
|
37
|
+
|
|
38
|
+
1. 响应以模式标签 `[模式:X]` 开始,初始为 `[模式:研究]`。
|
|
39
|
+
2. 核心工作流严格按 `研究 → 构思 → 计划 → 执行 → 优化 → 评审` 顺序流转。
|
|
40
|
+
3. 每个阶段完成后必须请求用户确认。
|
|
41
|
+
4. 评分低于 7 分或用户未批准时强制停止。
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## 执行工作流
|
|
46
|
+
|
|
47
|
+
**任务描述**:$ARGUMENTS
|
|
48
|
+
|
|
49
|
+
### 🔍 阶段 1:研究与分析
|
|
50
|
+
|
|
51
|
+
`[模式:研究]` - 理解需求并收集上下文:
|
|
52
|
+
|
|
53
|
+
1. **Prompt 增强**:调用 `mcp__ace-tool__enhance_prompt`
|
|
54
|
+
2. **上下文检索**:调用 `mcp__ace-tool__search_context`
|
|
55
|
+
3. **需求完整性评分**(0-10 分):
|
|
56
|
+
- 目标明确性(0-3)、预期结果(0-3)、边界范围(0-2)、约束条件(0-2)
|
|
57
|
+
- ≥7 分:继续 | <7 分:⛔ 停止,提出补充问题
|
|
58
|
+
|
|
59
|
+
### 💡 阶段 2:方案构思
|
|
60
|
+
|
|
61
|
+
`[模式:构思]` - 多模型并行分析:
|
|
62
|
+
|
|
63
|
+
**并行调用 Codex 和 Gemini 进行分析**:
|
|
64
|
+
|
|
65
|
+
1. **Codex 分析**:`~/.claude/.ccg/prompts/codex/analyzer.md`
|
|
66
|
+
2. **Gemini 分析**:`~/.claude/.ccg/prompts/gemini/analyzer.md`
|
|
67
|
+
|
|
68
|
+
**执行步骤**:
|
|
69
|
+
1. 使用 **Bash 工具的 `run_in_background: true` 参数**启动两个后台进程:
|
|
70
|
+
|
|
71
|
+
**Codex 分析进程**:
|
|
72
|
+
```
|
|
73
|
+
Bash({
|
|
74
|
+
command: "~/.claude/bin/codeagent-wrapper --backend codex - \"$PWD\" <<'EOF_CODEX'
|
|
75
|
+
ROLE_FILE: ~/.claude/.ccg/prompts/codex/analyzer.md
|
|
76
|
+
<TASK>
|
|
77
|
+
分析需求: <任务描述>
|
|
78
|
+
Context: <项目上下文>
|
|
79
|
+
</TASK>
|
|
80
|
+
OUTPUT: 技术可行性、推荐方案、风险点
|
|
81
|
+
EOF_CODEX",
|
|
82
|
+
run_in_background: true,
|
|
83
|
+
timeout: 3600000,
|
|
84
|
+
description: "Codex 技术分析"
|
|
85
|
+
})
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**Gemini 分析进程**:
|
|
89
|
+
```
|
|
90
|
+
Bash({
|
|
91
|
+
command: "~/.claude/bin/codeagent-wrapper --backend gemini - \"$PWD\" <<'EOF_GEMINI'
|
|
92
|
+
ROLE_FILE: ~/.claude/.ccg/prompts/gemini/analyzer.md
|
|
93
|
+
<TASK>
|
|
94
|
+
分析需求: <任务描述>
|
|
95
|
+
Context: <项目上下文>
|
|
96
|
+
</TASK>
|
|
97
|
+
OUTPUT: UI可行性、推荐方案、用户体验
|
|
98
|
+
EOF_GEMINI",
|
|
99
|
+
run_in_background: true,
|
|
100
|
+
timeout: 3600000,
|
|
101
|
+
description: "Gemini UI 分析"
|
|
102
|
+
})
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
2. 使用 `TaskOutput` 监控并获取 2 个后台进程的输出结果
|
|
106
|
+
|
|
107
|
+
**⚠️ 强制规则:必须等待 TaskOutput 返回两个模型的完整结果后才能进入下一阶段,禁止跳过或提前继续!**
|
|
108
|
+
|
|
109
|
+
**注意**:Gemini 可能不会在输出中直接显示 SESSION_ID。如需复用上下文,请查看输出中的 log 文件路径,运行 `grep "SESSION_ID" <log文件>` 获取。
|
|
110
|
+
|
|
111
|
+
综合两方分析,输出方案对比(至少 2 个方案),等待用户选择。
|
|
112
|
+
|
|
113
|
+
### 📋 阶段 3:详细规划
|
|
114
|
+
|
|
115
|
+
`[模式:计划]` - 多模型协作规划:
|
|
116
|
+
|
|
117
|
+
**并行调用 Codex 和 Gemini 进行架构规划**:
|
|
118
|
+
|
|
119
|
+
1. **Codex 规划**:`~/.claude/.ccg/prompts/codex/architect.md`
|
|
120
|
+
2. **Gemini 规划**:`~/.claude/.ccg/prompts/gemini/architect.md`
|
|
121
|
+
|
|
122
|
+
调用示例(使用 `run_in_background: true`):
|
|
123
|
+
|
|
124
|
+
**Codex 规划进程**:
|
|
125
|
+
```
|
|
126
|
+
Bash({
|
|
127
|
+
command: "~/.claude/bin/codeagent-wrapper --backend codex - \"$PWD\" <<'EOF_CODEX'
|
|
128
|
+
ROLE_FILE: ~/.claude/.ccg/prompts/codex/architect.md
|
|
129
|
+
<TASK>
|
|
130
|
+
规划需求: <任务描述>
|
|
131
|
+
Context: <项目上下文>
|
|
132
|
+
</TASK>
|
|
133
|
+
OUTPUT: 后端架构规划
|
|
134
|
+
EOF_CODEX",
|
|
135
|
+
run_in_background: true,
|
|
136
|
+
timeout: 3600000,
|
|
137
|
+
description: "Codex 后端架构规划"
|
|
138
|
+
})
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
**Gemini 规划进程**:
|
|
142
|
+
```
|
|
143
|
+
Bash({
|
|
144
|
+
command: "~/.claude/bin/codeagent-wrapper --backend gemini - \"$PWD\" <<'EOF_GEMINI'
|
|
145
|
+
ROLE_FILE: ~/.claude/.ccg/prompts/gemini/architect.md
|
|
146
|
+
<TASK>
|
|
147
|
+
规划需求: <任务描述>
|
|
148
|
+
Context: <项目上下文>
|
|
149
|
+
</TASK>
|
|
150
|
+
OUTPUT: 前端架构规划
|
|
151
|
+
EOF_GEMINI",
|
|
152
|
+
run_in_background: true,
|
|
153
|
+
timeout: 3600000,
|
|
154
|
+
description: "Gemini 前端架构规划"
|
|
155
|
+
})
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
使用 `TaskOutput` 获取 2 个模型的规划结果。
|
|
159
|
+
|
|
160
|
+
**⚠️ 强制规则:必须等待 Codex 和 Gemini 两个进程都返回完整结果后才能进入下一阶段,禁止跳过或提前继续!**
|
|
161
|
+
|
|
162
|
+
**Claude 综合规划**:
|
|
163
|
+
- 采纳 Codex 的后端规划(**可信赖**)
|
|
164
|
+
- 采纳 Gemini 的前端规划(**可信赖**)
|
|
165
|
+
- Gemini 的后端建议**仅供参考,以 Codex 为准**
|
|
166
|
+
- 请求用户批准后存入 `.claude/plan/任务名.md`
|
|
167
|
+
|
|
168
|
+
### ⚡ 阶段 4:实施
|
|
169
|
+
|
|
170
|
+
`[模式:执行]` - 代码开发:
|
|
171
|
+
|
|
172
|
+
- 严格按批准的计划实施
|
|
173
|
+
- 遵循项目现有代码规范
|
|
174
|
+
- 在关键里程碑请求反馈
|
|
175
|
+
|
|
176
|
+
### 🚀 阶段 5:代码优化
|
|
177
|
+
|
|
178
|
+
`[模式:优化]` - 多模型并行审查:
|
|
179
|
+
|
|
180
|
+
**并行调用 Codex 和 Gemini 进行代码审查**:
|
|
181
|
+
|
|
182
|
+
1. **Codex 审查**:`~/.claude/.ccg/prompts/codex/reviewer.md`
|
|
183
|
+
2. **Gemini 审查**:`~/.claude/.ccg/prompts/gemini/reviewer.md`
|
|
184
|
+
|
|
185
|
+
调用示例(使用 `run_in_background: true`):
|
|
186
|
+
|
|
187
|
+
**Codex 审查进程**:
|
|
188
|
+
```
|
|
189
|
+
Bash({
|
|
190
|
+
command: "~/.claude/bin/codeagent-wrapper --backend codex - \"$PWD\" <<'EOF_CODEX'
|
|
191
|
+
ROLE_FILE: ~/.claude/.ccg/prompts/codex/reviewer.md
|
|
192
|
+
<TASK>
|
|
193
|
+
审查代码: <实施的代码变更>
|
|
194
|
+
关注点: 安全性、性能、错误处理
|
|
195
|
+
</TASK>
|
|
196
|
+
OUTPUT: 审查意见
|
|
197
|
+
EOF_CODEX",
|
|
198
|
+
run_in_background: true,
|
|
199
|
+
timeout: 3600000,
|
|
200
|
+
description: "Codex 代码审查"
|
|
201
|
+
})
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
**Gemini 审查进程**:
|
|
205
|
+
```
|
|
206
|
+
Bash({
|
|
207
|
+
command: "~/.claude/bin/codeagent-wrapper --backend gemini - \"$PWD\" <<'EOF_GEMINI'
|
|
208
|
+
ROLE_FILE: ~/.claude/.ccg/prompts/gemini/reviewer.md
|
|
209
|
+
<TASK>
|
|
210
|
+
审查代码: <实施的代码变更>
|
|
211
|
+
关注点: 可访问性、设计一致性、用户体验
|
|
212
|
+
</TASK>
|
|
213
|
+
OUTPUT: 审查意见
|
|
214
|
+
EOF_GEMINI",
|
|
215
|
+
run_in_background: true,
|
|
216
|
+
timeout: 3600000,
|
|
217
|
+
description: "Gemini 代码审查"
|
|
218
|
+
})
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
使用 `TaskOutput` 获取 2 个模型的审查结果。
|
|
222
|
+
|
|
223
|
+
**⚠️ 强制规则:必须等待 Codex 和 Gemini 两个进程都返回完整结果后才能进入下一阶段,禁止跳过或提前继续!**
|
|
224
|
+
|
|
225
|
+
整合审查意见,提出优化建议,用户确认后执行。
|
|
226
|
+
|
|
227
|
+
### ✅ 阶段 6:质量审查
|
|
228
|
+
|
|
229
|
+
`[模式:评审]` - 最终评估:
|
|
230
|
+
|
|
231
|
+
- 对照计划检查完成情况
|
|
232
|
+
- 运行测试验证功能
|
|
233
|
+
- 报告问题与建议
|
|
234
|
+
- 请求最终用户确认
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
## 关键规则
|
|
239
|
+
|
|
240
|
+
1. 阶段顺序不可跳过(除非用户明确指令)
|
|
241
|
+
2. **多模型调用必须使用 Bash 工具的 `run_in_background: true` 参数 + `TaskOutput` 获取结果**
|
|
242
|
+
3. **必须等待所有模型返回完整结果后才能进入下一阶段**,禁止跳过或提前继续
|
|
243
|
+
4. 外部模型对文件系统**零写入权限**,所有修改由 Claude 执行
|
|
244
|
+
5. 评分 <7 分或用户未批准时**强制停止**
|
|
@@ -1,276 +1,128 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: 管理 Git
|
|
3
|
-
allowed-tools: Read(**), Exec(git worktree add, git worktree list, git worktree remove, git worktree prune, git branch, git checkout, git rev-parse, git stash, git cp, detect-ide, open-ide, which, command, basename, dirname)
|
|
4
|
-
argument-hint: <add|list|remove|prune|migrate> [path] [-b <branch>] [-o|--open] [--track] [--guess-remote] [--detach] [--checkout] [--lock] [--migrate-from <source-path>] [--migrate-stash]
|
|
5
|
-
# examples:
|
|
6
|
-
# - /git-worktree add feature-ui # 从 main/master 创建新分支 'feature-ui'
|
|
7
|
-
# - /git-worktree add feature-ui -o # 创建 worktree 并直接用 IDE 打开
|
|
8
|
-
# - /git-worktree add hotfix -b fix/login -o # 创建新分支 'fix/login',路径为 'hotfix'
|
|
9
|
-
# - /git-worktree migrate feature-ui --from main # 将主分支未提交内容迁移到 feature-ui
|
|
10
|
-
# - /git-worktree migrate feature-ui --stash # 将当前 stash 迁移到 feature-ui
|
|
2
|
+
description: '管理 Git Worktree:在 ../.ccg/项目名/ 目录创建,支持 IDE 集成和内容迁移'
|
|
11
3
|
---
|
|
12
4
|
|
|
13
|
-
#
|
|
5
|
+
# Worktree - Git Worktree 管理
|
|
14
6
|
|
|
15
|
-
|
|
7
|
+
在结构化目录管理 Git worktree,支持智能默认和 IDE 集成。
|
|
16
8
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
---
|
|
20
|
-
|
|
21
|
-
## Usage
|
|
9
|
+
## 使用方法
|
|
22
10
|
|
|
23
11
|
```bash
|
|
24
|
-
|
|
25
|
-
/git-worktree add <path> # 从 main/master 创建名为 <path> 的新分支
|
|
26
|
-
/git-worktree add <path> -b <branch> # 创建指定名称的新分支
|
|
27
|
-
/git-worktree add <path> -o # 创建并直接用 IDE 打开
|
|
28
|
-
/git-worktree list # 显示所有 worktree 状态
|
|
29
|
-
/git-worktree remove <path> # 删除指定的 worktree
|
|
30
|
-
/git-worktree prune # 清理无效 worktree 记录
|
|
31
|
-
|
|
32
|
-
# 内容迁移
|
|
33
|
-
/git-worktree migrate <target> --from <source> # 迁移未提交内容
|
|
34
|
-
/git-worktree migrate <target> --stash # 迁移 stash 内容
|
|
12
|
+
/worktree <add|list|remove|prune|migrate> [options]
|
|
35
13
|
```
|
|
36
14
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
| 选项 | 说明 |
|
|
40
|
-
| ------------------ | -------------------------------------------- |
|
|
41
|
-
| `add [<path>]` | 在 `../.ccg/项目名/<path>` 添加新的 worktree |
|
|
42
|
-
| `migrate <target>` | 迁移内容到指定 worktree |
|
|
43
|
-
| `list` | 列出所有 worktree 及其状态 |
|
|
44
|
-
| `remove <path>` | 删除指定路径的 worktree |
|
|
45
|
-
| `prune` | 清理无效的 worktree 引用 |
|
|
46
|
-
| `-b <branch>` | 创建新分支并检出到 worktree |
|
|
47
|
-
| `-o, --open` | 创建成功后直接用 IDE 打开(跳过询问) |
|
|
48
|
-
| `--from <source>` | 指定迁移源路径(migrate 专用) |
|
|
49
|
-
| `--stash` | 迁移当前 stash 内容(migrate 专用) |
|
|
50
|
-
| `--track` | 设置新分支跟踪对应的远程分支 |
|
|
51
|
-
| `--guess-remote` | 自动猜测远程分支进行跟踪 |
|
|
52
|
-
| `--detach` | 创建分离 HEAD 的 worktree |
|
|
53
|
-
| `--checkout` | 创建后立即检出(默认行为) |
|
|
54
|
-
| `--lock` | 创建后锁定 worktree |
|
|
55
|
-
|
|
56
|
-
---
|
|
15
|
+
## 子命令
|
|
57
16
|
|
|
58
|
-
|
|
17
|
+
| 命令 | 说明 |
|
|
18
|
+
|------|------|
|
|
19
|
+
| `add <path>` | 创建新 worktree |
|
|
20
|
+
| `list` | 列出所有 worktree |
|
|
21
|
+
| `remove <path>` | 删除指定 worktree |
|
|
22
|
+
| `prune` | 清理无效引用 |
|
|
23
|
+
| `migrate <target>` | 迁移内容到目标 worktree |
|
|
59
24
|
|
|
60
|
-
|
|
61
|
-
- 通过 `git rev-parse --is-inside-work-tree` 验证 Git 仓库
|
|
62
|
-
- 检测是否在主仓库或现有 worktree 中,进行智能路径计算
|
|
25
|
+
## 选项
|
|
63
26
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
27
|
+
| 选项 | 说明 |
|
|
28
|
+
|------|------|
|
|
29
|
+
| `-b <branch>` | 创建新分支 |
|
|
30
|
+
| `-o, --open` | 创建后用 IDE 打开 |
|
|
31
|
+
| `--from <source>` | 迁移源路径 |
|
|
32
|
+
| `--stash` | 迁移 stash 内容 |
|
|
33
|
+
| `--track` | 跟踪远程分支 |
|
|
34
|
+
| `--detach` | 分离 HEAD |
|
|
35
|
+
| `--lock` | 锁定 worktree |
|
|
68
36
|
|
|
69
|
-
|
|
70
|
-
# worktree 检测的核心路径计算逻辑
|
|
71
|
-
get_main_repo_path() {
|
|
72
|
-
local git_common_dir=$(git rev-parse --git-common-dir 2>/dev/null)
|
|
73
|
-
local current_toplevel=$(git rev-parse --show-toplevel 2>/dev/null)
|
|
74
|
-
|
|
75
|
-
# 检测是否在 worktree 中
|
|
76
|
-
if [[ "$git_common_dir" != "$current_toplevel/.git" ]]; then
|
|
77
|
-
# 在 worktree 中,从 git-common-dir 推导主仓库路径
|
|
78
|
-
dirname "$git_common_dir"
|
|
79
|
-
else
|
|
80
|
-
# 在主仓库中
|
|
81
|
-
echo "$current_toplevel"
|
|
82
|
-
fi
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
MAIN_REPO_PATH=$(get_main_repo_path)
|
|
86
|
-
PROJECT_NAME=$(basename "$MAIN_REPO_PATH")
|
|
87
|
-
WORKTREE_BASE="$MAIN_REPO_PATH/../.ccg/$PROJECT_NAME"
|
|
88
|
-
|
|
89
|
-
# 始终使用绝对路径防止嵌套问题
|
|
90
|
-
ABSOLUTE_WORKTREE_PATH="$WORKTREE_BASE/<path>"
|
|
91
|
-
```
|
|
37
|
+
---
|
|
92
38
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
3. **Worktree 操作**
|
|
96
|
-
- **add**: 使用智能分支/路径默认创建新 worktree
|
|
97
|
-
- **list**: 显示所有 worktree 的分支和状态
|
|
98
|
-
- **remove**: 安全删除 worktree 并清理引用
|
|
99
|
-
- **prune**: 清理孤立的 worktree 记录
|
|
100
|
-
|
|
101
|
-
4. **智能默认**
|
|
102
|
-
- **分支创建**: 未指定 `-b` 时,使用路径名创建新分支
|
|
103
|
-
- **基础分支**: 新分支从 main/master 分支创建
|
|
104
|
-
- **路径解析**: 未指定路径时使用分支名作为路径
|
|
105
|
-
- **IDE 集成**: 自动检测并提示 IDE 打开
|
|
106
|
-
|
|
107
|
-
5. **内容迁移**
|
|
108
|
-
- 在 worktree 之间迁移未提交改动
|
|
109
|
-
- 将 stash 内容应用到目标 worktree
|
|
110
|
-
- 安全检查防止冲突
|
|
111
|
-
|
|
112
|
-
6. **安全特性**
|
|
113
|
-
- **路径冲突防护**: 创建前检查目录是否已存在
|
|
114
|
-
- **分支检出验证**: 确保分支未被其他地方使用
|
|
115
|
-
- **绝对路径强制**: 防止在 worktree 内创建嵌套的 `.ccg` 目录
|
|
116
|
-
- **删除时自动清理**: 同时清理目录和 git 引用
|
|
117
|
-
- **清晰的状态报告**: 显示 worktree 位置和分支状态
|
|
118
|
-
|
|
119
|
-
7. **环境文件处理**
|
|
120
|
-
- **自动检测**: 扫描 `.gitignore` 文件中的环境变量文件模式
|
|
121
|
-
- **智能复制**: 复制 `.gitignore` 中列出的 `.env` 和 `.env.*` 文件
|
|
122
|
-
- **排除逻辑**: 跳过 `.env.example` 等模板文件
|
|
123
|
-
- **权限保护**: 保持原始文件权限和时间戳
|
|
124
|
-
- **用户反馈**: 提供已复制环境文件的清晰状态信息
|
|
39
|
+
## 目录结构
|
|
125
40
|
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
fi
|
|
137
|
-
|
|
138
|
-
local copied_count=0
|
|
139
|
-
|
|
140
|
-
# 检测 .env 文件
|
|
141
|
-
if [[ -f "$main_repo/.env" ]] && grep -q "^\.env$" "$gitignore_file"; then
|
|
142
|
-
cp "$main_repo/.env" "$target_worktree/.env"
|
|
143
|
-
echo "✅ 已复制 .env"
|
|
144
|
-
((copied_count++))
|
|
145
|
-
fi
|
|
146
|
-
|
|
147
|
-
# 检测 .env.* 模式文件(排除 .env.example)
|
|
148
|
-
for env_file in "$main_repo"/.env.*; do
|
|
149
|
-
if [[ -f "$env_file" ]] && [[ "$(basename "$env_file")" != ".env.example" ]]; then
|
|
150
|
-
local filename=$(basename "$env_file")
|
|
151
|
-
if grep -q "^\.env\.\*$" "$gitignore_file"; then
|
|
152
|
-
cp "$env_file" "$target_worktree/$filename"
|
|
153
|
-
echo "✅ 已复制 $filename"
|
|
154
|
-
((copied_count++))
|
|
155
|
-
fi
|
|
156
|
-
fi
|
|
157
|
-
done
|
|
158
|
-
|
|
159
|
-
if [[ $copied_count -gt 0 ]]; then
|
|
160
|
-
echo "📋 已从 .gitignore 复制 $copied_count 个环境文件"
|
|
161
|
-
fi
|
|
162
|
-
}
|
|
41
|
+
```
|
|
42
|
+
parent-directory/
|
|
43
|
+
├── your-project/ # 主项目
|
|
44
|
+
│ ├── .git/
|
|
45
|
+
│ └── src/
|
|
46
|
+
└── .ccg/ # worktree 管理目录
|
|
47
|
+
└── your-project/
|
|
48
|
+
├── feature-ui/ # 功能分支
|
|
49
|
+
├── hotfix/ # 修复分支
|
|
50
|
+
└── debug/ # 调试 worktree
|
|
163
51
|
```
|
|
164
52
|
|
|
165
53
|
---
|
|
166
54
|
|
|
167
|
-
##
|
|
55
|
+
## 执行工作流
|
|
168
56
|
|
|
169
|
-
###
|
|
57
|
+
### Add - 创建 Worktree
|
|
170
58
|
|
|
171
|
-
|
|
172
|
-
- **智能提示**: 创建 worktree 后询问是否在 IDE 中打开
|
|
173
|
-
- **直接打开**: 使用 `-o` 标志跳过提示直接打开
|
|
174
|
-
- **自定义配置**: 通过 git config 配置
|
|
59
|
+
`[模式:创建]`
|
|
175
60
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
/git-worktree migrate hotfix --from ../other-worktree
|
|
61
|
+
1. 验证 Git 仓库
|
|
62
|
+
2. 计算路径:`../.ccg/项目名/<path>`
|
|
63
|
+
3. 创建 worktree
|
|
64
|
+
4. 自动复制环境文件(`.env` 等)
|
|
65
|
+
5. 可选:用 IDE 打开
|
|
182
66
|
|
|
183
|
-
|
|
184
|
-
/git-worktree migrate feature-ui --stash
|
|
185
|
-
```
|
|
67
|
+
### Migrate - 迁移内容
|
|
186
68
|
|
|
187
|
-
|
|
69
|
+
`[模式:迁移]`
|
|
188
70
|
|
|
189
71
|
1. 验证源有未提交内容
|
|
190
|
-
2.
|
|
72
|
+
2. 确保目标干净
|
|
191
73
|
3. 显示即将迁移的改动
|
|
192
|
-
4.
|
|
193
|
-
5.
|
|
74
|
+
4. 安全迁移
|
|
75
|
+
5. 确认结果
|
|
194
76
|
|
|
195
77
|
---
|
|
196
78
|
|
|
197
|
-
##
|
|
79
|
+
## 示例
|
|
198
80
|
|
|
199
81
|
```bash
|
|
200
|
-
#
|
|
201
|
-
/
|
|
202
|
-
|
|
203
|
-
|
|
82
|
+
# 基本创建
|
|
83
|
+
/worktree add feature-ui
|
|
84
|
+
|
|
85
|
+
# 创建并用 IDE 打开
|
|
86
|
+
/worktree add feature-ui -o
|
|
87
|
+
|
|
88
|
+
# 创建指定分支
|
|
89
|
+
/worktree add hotfix -b fix/login -o
|
|
90
|
+
|
|
91
|
+
# 迁移未提交内容
|
|
92
|
+
/worktree migrate feature-ui --from main
|
|
204
93
|
|
|
205
|
-
#
|
|
206
|
-
/
|
|
207
|
-
/git-worktree migrate feature-ui --from main # 迁移未提交改动
|
|
208
|
-
/git-worktree migrate hotfix --stash # 迁移 stash 内容
|
|
94
|
+
# 迁移 stash 内容
|
|
95
|
+
/worktree migrate feature-ui --stash
|
|
209
96
|
|
|
210
97
|
# 管理操作
|
|
211
|
-
/
|
|
212
|
-
/
|
|
213
|
-
/
|
|
98
|
+
/worktree list
|
|
99
|
+
/worktree remove feature-ui
|
|
100
|
+
/worktree prune
|
|
214
101
|
```
|
|
215
102
|
|
|
216
|
-
|
|
103
|
+
## 输出示例
|
|
217
104
|
|
|
218
105
|
```
|
|
219
106
|
✅ Worktree created at ../.ccg/项目名/feature-ui
|
|
220
107
|
✅ 已复制 .env
|
|
221
108
|
✅ 已复制 .env.local
|
|
222
109
|
📋 已从 .gitignore 复制 2 个环境文件
|
|
223
|
-
🖥️ 是否在 IDE
|
|
224
|
-
🚀 正在用 VS Code
|
|
225
|
-
```
|
|
226
|
-
|
|
227
|
-
---
|
|
228
|
-
|
|
229
|
-
## Directory Structure
|
|
230
|
-
|
|
231
|
-
```
|
|
232
|
-
parent-directory/
|
|
233
|
-
├── your-project/ # 主项目
|
|
234
|
-
│ ├── .git/
|
|
235
|
-
│ └── src/
|
|
236
|
-
└── .ccg/ # worktree 管理
|
|
237
|
-
└── your-project/ # 项目 worktree
|
|
238
|
-
├── feature-ui/ # 功能分支
|
|
239
|
-
├── hotfix/ # 修复分支
|
|
240
|
-
└── debug/ # 调试 worktree
|
|
110
|
+
🖥️ 是否在 IDE 中打开?[y/n]: y
|
|
111
|
+
🚀 正在用 VS Code 打开...
|
|
241
112
|
```
|
|
242
113
|
|
|
243
114
|
---
|
|
244
115
|
|
|
245
|
-
##
|
|
116
|
+
## 智能特性
|
|
246
117
|
|
|
247
|
-
|
|
118
|
+
1. **智能默认** – 未指定分支时使用路径名
|
|
119
|
+
2. **IDE 集成** – 自动检测 VS Code / Cursor / WebStorm
|
|
120
|
+
3. **环境文件** – 自动复制 `.gitignore` 中的 `.env` 文件
|
|
121
|
+
4. **路径安全** – 始终使用绝对路径防止嵌套问题
|
|
122
|
+
5. **分支保护** – 验证分支未被其他地方使用
|
|
248
123
|
|
|
249
|
-
|
|
250
|
-
- 通过 git config 配置自定义 IDE
|
|
251
|
-
- 基于优先级的自动检测选择
|
|
124
|
+
## 注意事项
|
|
252
125
|
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
# 配置自定义 IDE
|
|
257
|
-
git config worktree.ide.custom.sublime "subl %s"
|
|
258
|
-
git config worktree.ide.preferred "sublime"
|
|
259
|
-
|
|
260
|
-
# 控制自动检测
|
|
261
|
-
git config worktree.ide.autodetect true # 默认
|
|
262
|
-
```
|
|
263
|
-
|
|
264
|
-
---
|
|
265
|
-
|
|
266
|
-
## Notes
|
|
267
|
-
|
|
268
|
-
- **性能**: worktree 共享 `.git` 目录,节省磁盘空间
|
|
269
|
-
- **安全**: 路径冲突防护和分支检出验证
|
|
270
|
-
- **迁移**: 仅限未提交改动;已提交内容需使用 `git cherry-pick`
|
|
271
|
-
- **IDE 要求**: 命令行工具必须在 PATH 中
|
|
272
|
-
- **跨平台**: 支持 Windows、macOS、Linux
|
|
273
|
-
- **环境文件**: 自动复制 `.gitignore` 中列出的环境文件到新 worktree
|
|
274
|
-
- **文件排除**: 模板文件如 `.env.example` 仅保留在主仓库中
|
|
275
|
-
|
|
276
|
-
---
|
|
126
|
+
- Worktree 共享 `.git` 目录,节省磁盘空间
|
|
127
|
+
- 迁移仅限未提交改动,已提交内容用 `git cherry-pick`
|
|
128
|
+
- 支持 Windows、macOS、Linux
|