@ranger1/dx 0.1.76 → 0.1.78
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 +92 -31
- package/bin/dx.js +3 -3
- package/lib/cli/commands/deploy.js +2 -1
- package/lib/cli/commands/stack.js +198 -237
- package/lib/cli/commands/start.js +0 -6
- package/lib/cli/dx-cli.js +10 -1
- package/lib/cli/help.js +8 -7
- package/lib/{opencode-initial.js → codex-initial.js} +3 -82
- package/lib/vercel-deploy.js +14 -27
- package/package.json +1 -2
- package/@opencode/agents/__pycache__/gh_review_harvest.cpython-314.pyc +0 -0
- package/@opencode/agents/__pycache__/pr_context.cpython-314.pyc +0 -0
- package/@opencode/agents/__pycache__/pr_precheck.cpython-314.pyc +0 -0
- package/@opencode/agents/__pycache__/pr_review_aggregate.cpython-314.pyc +0 -0
- package/@opencode/agents/__pycache__/test_pr_review_aggregate.cpython-314-pytest-9.0.2.pyc +0 -0
- package/@opencode/agents/__pycache__/test_pr_review_aggregate.cpython-314.pyc +0 -0
- package/@opencode/agents/claude-reviewer.md +0 -82
- package/@opencode/agents/codex-reviewer.md +0 -83
- package/@opencode/agents/gemini-reviewer.md +0 -82
- package/@opencode/agents/gh-thread-reviewer.md +0 -122
- package/@opencode/agents/gh_review_harvest.py +0 -292
- package/@opencode/agents/pr-context.md +0 -82
- package/@opencode/agents/pr-fix.md +0 -243
- package/@opencode/agents/pr-precheck.md +0 -89
- package/@opencode/agents/pr-review-aggregate.md +0 -151
- package/@opencode/agents/pr_context.py +0 -351
- package/@opencode/agents/pr_precheck.py +0 -505
- package/@opencode/agents/pr_review_aggregate.py +0 -868
- package/@opencode/agents/test_pr_review_aggregate.py +0 -701
- package/@opencode/commands/doctor.md +0 -271
- package/@opencode/commands/git-commit-and-pr.md +0 -282
- package/@opencode/commands/git-release.md +0 -642
- package/@opencode/commands/oh_attach.json +0 -92
- package/@opencode/commands/opencode_attach.json +0 -29
- package/@opencode/commands/opencode_attach.py +0 -142
- package/@opencode/commands/pr-review-loop.md +0 -211
|
@@ -1,271 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
allowed-tools: [Bash, AskUserQuestion, Edit, Read, Write]
|
|
3
|
-
description: '环境诊断'
|
|
4
|
-
agent: build
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Step -1: Mandatory Remote Install Instructions
|
|
10
|
-
|
|
11
|
-
在执行任何本地 Bootstrap/检测/修复之前,先拉取并按文档完整执行一次安装指引(不是只下载):
|
|
12
|
-
|
|
13
|
-
```bash
|
|
14
|
-
INSTALL_URL="https://raw.githubusercontent.com/obra/superpowers/refs/heads/main/.codex/INSTALL.md"
|
|
15
|
-
INSTALL_MD="$(mktemp -t codex-install.XXXXXX.md)"
|
|
16
|
-
|
|
17
|
-
echo "Fetch and follow instructions from ${INSTALL_URL}"
|
|
18
|
-
curl -fsSL "${INSTALL_URL}" -o "${INSTALL_MD}"
|
|
19
|
-
|
|
20
|
-
# 必须阅读并执行 INSTALL.md 中要求执行的命令;不可只拉取不执行
|
|
21
|
-
cat "${INSTALL_MD}"
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
执行要求(强制):
|
|
25
|
-
- 按 `INSTALL.md` 的步骤顺序执行一遍。
|
|
26
|
-
- 安装/初始化类命令必须实际执行。
|
|
27
|
-
- 失败时先修复再重试该步;完成后再进入 Step 0。
|
|
28
|
-
|
|
29
|
-
---
|
|
30
|
-
|
|
31
|
-
## Step 0: Bootstrap(dx + 模板 + pnpm)
|
|
32
|
-
|
|
33
|
-
目标:
|
|
34
|
-
|
|
35
|
-
- dx 安装/升级到最新
|
|
36
|
-
- 刷新 `~/.opencode/commands/*`(确保 `opencode_attach.py` 可用)
|
|
37
|
-
|
|
38
|
-
```bash
|
|
39
|
-
set -euo pipefail
|
|
40
|
-
|
|
41
|
-
# 必要前提:node + corepack(用于 pnpm)
|
|
42
|
-
if ! command -v node >/dev/null 2>&1; then
|
|
43
|
-
echo "ERROR: node NOT_FOUND (need Node.js >= 20)"
|
|
44
|
-
echo "macOS: brew install node"
|
|
45
|
-
echo "Debian/Ubuntu: curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - && sudo apt-get install -y nodejs"
|
|
46
|
-
exit 1
|
|
47
|
-
fi
|
|
48
|
-
|
|
49
|
-
if ! command -v pnpm >/dev/null 2>&1; then
|
|
50
|
-
corepack enable >/dev/null 2>&1 || true
|
|
51
|
-
corepack prepare pnpm@latest --activate
|
|
52
|
-
fi
|
|
53
|
-
|
|
54
|
-
# 安装/升级 dx 到最新(幂等)
|
|
55
|
-
pnpm add -g @ranger1/dx@latest
|
|
56
|
-
|
|
57
|
-
# 备份后刷新模板(避免覆盖导致不可回退)
|
|
58
|
-
ts="$(date +%Y%m%d%H%M%S)"
|
|
59
|
-
if [ -d "$HOME/.opencode/commands" ]; then
|
|
60
|
-
cp -a "$HOME/.opencode/commands" "$HOME/.opencode/commands.bak.${ts}" 2>/dev/null || true
|
|
61
|
-
fi
|
|
62
|
-
if [ -d "$HOME/.opencode/agents" ]; then
|
|
63
|
-
cp -a "$HOME/.opencode/agents" "$HOME/.opencode/agents.bak.${ts}" 2>/dev/null || true
|
|
64
|
-
fi
|
|
65
|
-
|
|
66
|
-
dx initial
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
---
|
|
70
|
-
|
|
71
|
-
## Step 1: 快速检测(单次 Bash)
|
|
72
|
-
|
|
73
|
-
目标:一次 Bash 输出完整状态表,减少 tool 调用与 token。
|
|
74
|
-
|
|
75
|
-
```bash
|
|
76
|
-
set -euo pipefail
|
|
77
|
-
|
|
78
|
-
os="$(uname -s 2>/dev/null || echo unknown)"
|
|
79
|
-
pm="none"
|
|
80
|
-
if command -v brew >/dev/null 2>&1; then pm="brew"; fi
|
|
81
|
-
if command -v apt-get >/dev/null 2>&1; then pm="apt"; fi
|
|
82
|
-
|
|
83
|
-
ver() {
|
|
84
|
-
# usage: ver <bin> <cmd>
|
|
85
|
-
b="$1"; shift
|
|
86
|
-
if command -v "$b" >/dev/null 2>&1; then
|
|
87
|
-
("$@" 2>/dev/null | head -n 1) || true
|
|
88
|
-
else
|
|
89
|
-
echo "NOT_FOUND"
|
|
90
|
-
fi
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
has_agents="NOT_FOUND"; [ -f AGENTS.md ] && has_agents="FOUND"
|
|
94
|
-
|
|
95
|
-
dx_v="$(ver dx dx --version)"
|
|
96
|
-
opencode_v="$(ver opencode opencode --version)"
|
|
97
|
-
rg_v="$(ver rg rg --version)"
|
|
98
|
-
agent_browser_v="$(ver agent-browser agent-browser --version)"
|
|
99
|
-
py3_v="$(ver python3 python3 --version)"
|
|
100
|
-
py_v="$(ver python python --version)"
|
|
101
|
-
|
|
102
|
-
attach_status="NOT_READY"
|
|
103
|
-
if command -v python3 >/dev/null 2>&1 && [ -f "$HOME/.opencode/commands/opencode_attach.py" ]; then
|
|
104
|
-
python3 "$HOME/.opencode/commands/opencode_attach.py" --dry-run >/dev/null 2>&1 && attach_status="READY" || true
|
|
105
|
-
fi
|
|
106
|
-
|
|
107
|
-
# 插件以“配置是否就绪”为准(真正安装由 opencode 启动时自动完成)
|
|
108
|
-
cfg_opencode="$HOME/.config/opencode/opencode.json"
|
|
109
|
-
plug_oh="NOT_CONFIGURED"
|
|
110
|
-
plug_codex="NOT_CONFIGURED"
|
|
111
|
-
plug_antigravity="NOT_CONFIGURED"
|
|
112
|
-
if [ -f "$cfg_opencode" ]; then
|
|
113
|
-
grep -q 'oh-my-opencode' "$cfg_opencode" && plug_oh="CONFIGURED" || true
|
|
114
|
-
grep -q 'opencode-openai-codex-auth' "$cfg_opencode" && plug_codex="CONFIGURED" || true
|
|
115
|
-
grep -q 'opencode-antigravity-auth' "$cfg_opencode" && plug_antigravity="CONFIGURED" || true
|
|
116
|
-
fi
|
|
117
|
-
|
|
118
|
-
echo "OS: ${os} | PM: ${pm}"
|
|
119
|
-
echo
|
|
120
|
-
printf '%-34s | %-12s | %s\n' "tool" "status" "version"
|
|
121
|
-
printf '%-34s | %-12s | %s\n' "opencode" "$( [ "$opencode_v" = NOT_FOUND ] && echo MISSING || echo OK )" "$opencode_v"
|
|
122
|
-
printf '%-34s | %-12s | %s\n' "dx" "$( [ "$dx_v" = NOT_FOUND ] && echo MISSING || echo OK )" "$dx_v"
|
|
123
|
-
printf '%-34s | %-12s | %s\n' "rg" "$( [ "$rg_v" = NOT_FOUND ] && echo MISSING || echo OK )" "$rg_v"
|
|
124
|
-
printf '%-34s | %-12s | %s\n' "agent-browser" "$( [ "$agent_browser_v" = NOT_FOUND ] && echo MISSING || echo OK )" "$agent_browser_v"
|
|
125
|
-
printf '%-34s | %-12s | %s\n' "python3" "$( [ "$py3_v" = NOT_FOUND ] && echo MISSING || echo OK )" "$py3_v"
|
|
126
|
-
printf '%-34s | %-12s | %s\n' "python (softlink)" "$( [ "$py_v" = NOT_FOUND ] && echo MISSING || echo OK )" "$py_v"
|
|
127
|
-
printf '%-34s | %-12s | %s\n' "AGENTS.md" "$has_agents" "-"
|
|
128
|
-
printf '%-34s | %-12s | %s\n' "attach (global config)" "$attach_status" "-"
|
|
129
|
-
printf '%-34s | %-12s | %s\n' "plugin: oh-my-opencode" "$plug_oh" "-"
|
|
130
|
-
printf '%-34s | %-12s | %s\n' "plugin: opencode-openai-codex-auth" "$plug_codex" "-"
|
|
131
|
-
printf '%-34s | %-12s | %s\n' "plugin: opencode-antigravity-auth" "$plug_antigravity" "-"
|
|
132
|
-
|
|
133
|
-
missing=0
|
|
134
|
-
for x in "$opencode_v" "$dx_v" "$rg_v" "$agent_browser_v" "$py3_v"; do
|
|
135
|
-
[ "$x" = NOT_FOUND ] && missing=1
|
|
136
|
-
done
|
|
137
|
-
[ "$attach_status" != READY ] && missing=1
|
|
138
|
-
for x in "$plug_oh" "$plug_codex" "$plug_antigravity"; do
|
|
139
|
-
[ "$x" != CONFIGURED ] && missing=1
|
|
140
|
-
done
|
|
141
|
-
|
|
142
|
-
echo
|
|
143
|
-
if [ "$missing" = 0 ]; then
|
|
144
|
-
echo "OK: all dependencies ready"
|
|
145
|
-
else
|
|
146
|
-
echo "NEED_FIX: missing or not-ready items detected"
|
|
147
|
-
fi
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
---
|
|
151
|
-
|
|
152
|
-
## Step 2: 只问一次(缺失/升级)
|
|
153
|
-
|
|
154
|
-
如果出现 `NEED_FIX`,只问一次:是否一键安装 + 升级到最新版本(包含插件配置 attach)。
|
|
155
|
-
|
|
156
|
-
`AskUserQuestion`: 检测到缺失/未就绪项,是否一键修复并升级到最新版本?
|
|
157
|
-
|
|
158
|
-
选项:
|
|
159
|
-
|
|
160
|
-
- 一键修复(Recommended)
|
|
161
|
-
- 跳过(只输出检测表)
|
|
162
|
-
|
|
163
|
-
---
|
|
164
|
-
|
|
165
|
-
## Step 3: 一键修复(安装 + 升级到最新)
|
|
166
|
-
|
|
167
|
-
确认后直接执行以下脚本(幂等;尽量走包管理器升级;插件用 attach 配置确保可自动安装/更新):
|
|
168
|
-
|
|
169
|
-
```bash
|
|
170
|
-
set -euo pipefail
|
|
171
|
-
|
|
172
|
-
os="$(uname -s 2>/dev/null || echo unknown)"
|
|
173
|
-
has_brew=0; command -v brew >/dev/null 2>&1 && has_brew=1
|
|
174
|
-
has_apt=0; command -v apt-get >/dev/null 2>&1 && has_apt=1
|
|
175
|
-
|
|
176
|
-
need_sudo=0
|
|
177
|
-
if [ "$has_apt" = 1 ] && command -v sudo >/dev/null 2>&1; then
|
|
178
|
-
need_sudo=1
|
|
179
|
-
fi
|
|
180
|
-
|
|
181
|
-
if ! command -v pnpm >/dev/null 2>&1; then
|
|
182
|
-
corepack enable >/dev/null 2>&1 || true
|
|
183
|
-
corepack prepare pnpm@latest --activate
|
|
184
|
-
fi
|
|
185
|
-
|
|
186
|
-
# dx(始终升级到最新)
|
|
187
|
-
pnpm add -g @ranger1/dx@latest
|
|
188
|
-
|
|
189
|
-
if ! command -v dx >/dev/null 2>&1; then
|
|
190
|
-
echo "WARN: dx still NOT_FOUND (check PATH for pnpm global bin: pnpm bin -g)"
|
|
191
|
-
fi
|
|
192
|
-
|
|
193
|
-
# OpenCode 模板(确保 opencode_attach.py 存在)
|
|
194
|
-
if [ ! -f "$HOME/.opencode/commands/opencode_attach.py" ]; then
|
|
195
|
-
dx initial
|
|
196
|
-
fi
|
|
197
|
-
|
|
198
|
-
# opencode CLI
|
|
199
|
-
if [ "$os" = "Darwin" ] && [ "$has_brew" = 1 ]; then
|
|
200
|
-
brew update >/dev/null
|
|
201
|
-
brew tap anomalyco/tap >/dev/null 2>&1 || true
|
|
202
|
-
brew install anomalyco/tap/opencode >/dev/null 2>&1 || brew upgrade opencode >/dev/null 2>&1 || true
|
|
203
|
-
else
|
|
204
|
-
# 官方支持 npm/bun/pnpm;这里统一用 pnpm
|
|
205
|
-
pnpm add -g opencode-ai@latest
|
|
206
|
-
fi
|
|
207
|
-
|
|
208
|
-
if ! command -v opencode >/dev/null 2>&1; then
|
|
209
|
-
echo "WARN: opencode still NOT_FOUND (check PATH for pnpm global bin: pnpm bin -g)"
|
|
210
|
-
fi
|
|
211
|
-
|
|
212
|
-
# ripgrep
|
|
213
|
-
if [ "$has_brew" = 1 ]; then
|
|
214
|
-
brew install ripgrep >/dev/null 2>&1 || brew upgrade ripgrep >/dev/null 2>&1 || true
|
|
215
|
-
elif [ "$has_apt" = 1 ] && [ "$need_sudo" = 1 ]; then
|
|
216
|
-
sudo apt-get update -y >/dev/null
|
|
217
|
-
sudo apt-get install -y ripgrep
|
|
218
|
-
else
|
|
219
|
-
echo "WARN: no brew/apt-get; skip ripgrep auto-install"
|
|
220
|
-
fi
|
|
221
|
-
|
|
222
|
-
# python3 (+ python 软链接尽量走系统包)
|
|
223
|
-
if [ "$has_brew" = 1 ]; then
|
|
224
|
-
brew install python >/dev/null 2>&1 || brew upgrade python >/dev/null 2>&1 || true
|
|
225
|
-
elif [ "$has_apt" = 1 ] && [ "$need_sudo" = 1 ]; then
|
|
226
|
-
sudo apt-get update -y >/dev/null
|
|
227
|
-
sudo apt-get install -y python3 python3-venv python3-pip python-is-python3
|
|
228
|
-
else
|
|
229
|
-
echo "WARN: no brew/apt-get; skip python auto-install"
|
|
230
|
-
fi
|
|
231
|
-
|
|
232
|
-
# agent-browser(安装/升级 + 安装 Chromium)
|
|
233
|
-
if [ "$os" = "Darwin" ] && [ "$has_brew" = 1 ]; then
|
|
234
|
-
brew install agent-browser >/dev/null 2>&1 || brew upgrade agent-browser >/dev/null 2>&1 || true
|
|
235
|
-
else
|
|
236
|
-
pnpm add -g agent-browser@latest
|
|
237
|
-
fi
|
|
238
|
-
|
|
239
|
-
if command -v agent-browser >/dev/null 2>&1; then
|
|
240
|
-
agent-browser install >/dev/null 2>&1 || agent-browser install --with-deps
|
|
241
|
-
fi
|
|
242
|
-
|
|
243
|
-
# attach(写入 ~/.config/opencode/*.json;自动备份 .bak.*)
|
|
244
|
-
if command -v python3 >/dev/null 2>&1 && [ -f "$HOME/.opencode/commands/opencode_attach.py" ]; then
|
|
245
|
-
python3 "$HOME/.opencode/commands/opencode_attach.py"
|
|
246
|
-
else
|
|
247
|
-
echo "ERROR: python3/opencode_attach.py NOT_READY"
|
|
248
|
-
exit 1
|
|
249
|
-
fi
|
|
250
|
-
|
|
251
|
-
echo "DONE"
|
|
252
|
-
```
|
|
253
|
-
|
|
254
|
-
---
|
|
255
|
-
|
|
256
|
-
## 输出格式
|
|
257
|
-
|
|
258
|
-
**全部就绪:**
|
|
259
|
-
|
|
260
|
-
```
|
|
261
|
-
✅ 所有依赖已就绪
|
|
262
|
-
```
|
|
263
|
-
|
|
264
|
-
**有缺失:**
|
|
265
|
-
|
|
266
|
-
```
|
|
267
|
-
⚠️ <工具> 未安装/未配置
|
|
268
|
-
```
|
|
269
|
-
|
|
270
|
-
**修复完成后:**
|
|
271
|
-
重复执行 Step 1,输出最终状态表格,确认所有项目均为 OK/READY/CONFIGURED。
|
|
@@ -1,282 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
allowed-tools: [Bash, Read, Glob, TodoWrite, Edit, Grep]
|
|
3
|
-
description: 'Git 工作流:Issue/Commit/PR 自动化'
|
|
4
|
-
agent: documenter
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## 用法
|
|
8
|
-
|
|
9
|
-
```bash
|
|
10
|
-
/git-commit-and-pr # 自动检测并执行所需阶段
|
|
11
|
-
/git-commit-and-pr --issue <ID> # 指定关联 Issue
|
|
12
|
-
/git-commit-and-pr --issue-only # 仅创建 Issue
|
|
13
|
-
/git-commit-and-pr --pr --base <BRANCH> # 仅创建 PR
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
---
|
|
17
|
-
|
|
18
|
-
## 执行流程
|
|
19
|
-
|
|
20
|
-
### Step 1: 状态检测
|
|
21
|
-
|
|
22
|
-
并行执行:
|
|
23
|
-
|
|
24
|
-
```bash
|
|
25
|
-
git status --short
|
|
26
|
-
git branch --show-current
|
|
27
|
-
git log -1 --format='%H %s' 2>/dev/null || echo "no-commits"
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
根据状态决定执行阶段:
|
|
31
|
-
|
|
32
|
-
- 无 Issue 或 `--issue-only` → 执行 Issue 创建
|
|
33
|
-
- 有未提交修改 → 执行 Commit 流程
|
|
34
|
-
- 工作树干净且在功能分支 → 执行 PR 创建
|
|
35
|
-
|
|
36
|
-
**禁止在 main/master 直接提交。**
|
|
37
|
-
|
|
38
|
-
---
|
|
39
|
-
|
|
40
|
-
### Step 2: Issue 创建(可选)
|
|
41
|
-
|
|
42
|
-
#### 2.1 信息收集与分析
|
|
43
|
-
|
|
44
|
-
**代码变更分析(并行执行):**
|
|
45
|
-
|
|
46
|
-
```bash
|
|
47
|
-
git status --short
|
|
48
|
-
git diff --stat
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
**重复检查(可选):**
|
|
52
|
-
|
|
53
|
-
```bash
|
|
54
|
-
gh issue list --search "<关键词>" --limit 5
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
**上下文提炼:**
|
|
58
|
-
|
|
59
|
-
- 从对话历史中提取问题描述和需求背景
|
|
60
|
-
- 识别受影响的模块(backend/front/admin/shared)
|
|
61
|
-
- 确认是否涉及数据库、API 或基础设施变更
|
|
62
|
-
|
|
63
|
-
#### 2.2 Issue 内容生成
|
|
64
|
-
|
|
65
|
-
**标题生成策略:**
|
|
66
|
-
|
|
67
|
-
- 格式:`[模块] 简洁描述` 或 `[类型] 功能/问题描述`
|
|
68
|
-
- 示例:
|
|
69
|
-
- `[Backend] 优化用户认证流程性能`
|
|
70
|
-
- `[Bug] 修复聊天消息丢失问题`
|
|
71
|
-
- `[规范] 统一错误码命名规范`
|
|
72
|
-
- 优先使用用户提供的 `--title` 参数
|
|
73
|
-
|
|
74
|
-
**标签选择(基于内容自动添加):**
|
|
75
|
-
|
|
76
|
-
- `bug` - Bug 修复
|
|
77
|
-
- `enhancement` - 功能增强
|
|
78
|
-
- `documentation` - 文档相关
|
|
79
|
-
- `performance` - 性能优化
|
|
80
|
-
- `refactor` - 代码重构
|
|
81
|
-
- `backend` / `frontend` - 模块标签
|
|
82
|
-
- `infrastructure` - 基础设施
|
|
83
|
-
|
|
84
|
-
**正文结构模板:**
|
|
85
|
-
|
|
86
|
-
```markdown
|
|
87
|
-
## 背景
|
|
88
|
-
|
|
89
|
-
[当前场景、讨论来源、为什么需要这个改动]
|
|
90
|
-
|
|
91
|
-
## 现状/问题
|
|
92
|
-
|
|
93
|
-
[观察到的问题、现有实现的不足、需要改进的地方]
|
|
94
|
-
|
|
95
|
-
## 期望行为
|
|
96
|
-
|
|
97
|
-
[目标状态、期望结果、验收标准]
|
|
98
|
-
|
|
99
|
-
## 执行计划
|
|
100
|
-
|
|
101
|
-
- [ ] 步骤 1
|
|
102
|
-
- [ ] 步骤 2
|
|
103
|
-
- [ ] 步骤 3
|
|
104
|
-
|
|
105
|
-
## 影响范围
|
|
106
|
-
|
|
107
|
-
[受影响的模块、可能的风险、需要通知的团队]
|
|
108
|
-
|
|
109
|
-
## 相关资源
|
|
110
|
-
|
|
111
|
-
[相关 Issue、PR、文档链接]
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
#### 2.3 执行 Issue 创建
|
|
115
|
-
|
|
116
|
-
使用命令查看现有标签
|
|
117
|
-
```bash
|
|
118
|
-
gh label list --limit 20
|
|
119
|
-
```
|
|
120
|
-
使用 heredoc 格式执行 gh CLI:
|
|
121
|
-
|
|
122
|
-
```bash
|
|
123
|
-
gh issue create \
|
|
124
|
-
--title "[模块] 问题摘要" \
|
|
125
|
-
--label label1 --label label2 \
|
|
126
|
-
--body-file - <<'MSG'
|
|
127
|
-
## 背景
|
|
128
|
-
|
|
129
|
-
[从对话历史提炼的背景信息]
|
|
130
|
-
|
|
131
|
-
## 现状/问题
|
|
132
|
-
|
|
133
|
-
[代码变更分析结果和问题描述]
|
|
134
|
-
|
|
135
|
-
## 期望行为
|
|
136
|
-
|
|
137
|
-
[目标状态和验收标准]
|
|
138
|
-
|
|
139
|
-
## 执行计划
|
|
140
|
-
|
|
141
|
-
- [ ] 步骤 1
|
|
142
|
-
- [ ] 步骤 2
|
|
143
|
-
|
|
144
|
-
## 影响范围
|
|
145
|
-
|
|
146
|
-
[受影响模块列表]
|
|
147
|
-
MSG
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
**质量检查清单:**
|
|
151
|
-
|
|
152
|
-
- [ ] 标题简洁明确(≤ 80 字符)
|
|
153
|
-
- [ ] 背景信息完整
|
|
154
|
-
- [ ] 问题/需求描述清晰
|
|
155
|
-
- [ ] 执行步骤可操作
|
|
156
|
-
- [ ] 影响范围已标注
|
|
157
|
-
- [ ] 标签选择准确
|
|
158
|
-
- [ ] 无敏感信息(.env、密钥等)
|
|
159
|
-
|
|
160
|
-
#### 2.4 输出 Issue 信息
|
|
161
|
-
|
|
162
|
-
成功创建后,解析 gh 输出获取 Issue 编号:
|
|
163
|
-
|
|
164
|
-
```
|
|
165
|
-
✅ Issue 创建成功
|
|
166
|
-
|
|
167
|
-
Issue: #<编号>
|
|
168
|
-
标题: <标题>
|
|
169
|
-
链接: <GitHub URL>
|
|
170
|
-
标签: <标签列表>
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
存储 Issue ID 供后续 commit 和 PR 使用。
|
|
174
|
-
|
|
175
|
-
`--issue-only` 时在此终止。
|
|
176
|
-
|
|
177
|
-
---
|
|
178
|
-
|
|
179
|
-
### Step 3: Commit 流程
|
|
180
|
-
|
|
181
|
-
#### 3.1 暂存变更
|
|
182
|
-
|
|
183
|
-
```bash
|
|
184
|
-
git add -A
|
|
185
|
-
git diff --cached --stat
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
#### 3.2 生成提交
|
|
189
|
-
|
|
190
|
-
分析 `git diff --cached` 内容,生成 commit message:
|
|
191
|
-
|
|
192
|
-
```bash
|
|
193
|
-
git commit -F - <<'EOF'
|
|
194
|
-
<type>: <概要>
|
|
195
|
-
|
|
196
|
-
变更说明:
|
|
197
|
-
- <变更项1>
|
|
198
|
-
- <变更项2>
|
|
199
|
-
|
|
200
|
-
Refs: #<issue-id>
|
|
201
|
-
EOF
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
type 类型:feat/fix/refactor/docs/chore/test
|
|
205
|
-
|
|
206
|
-
#### 3.3 确认提交
|
|
207
|
-
|
|
208
|
-
```bash
|
|
209
|
-
git status
|
|
210
|
-
git log -1 --oneline
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
---
|
|
214
|
-
|
|
215
|
-
### Step 4: PR 创建
|
|
216
|
-
|
|
217
|
-
#### 4.1 推送分支
|
|
218
|
-
|
|
219
|
-
```bash
|
|
220
|
-
git push -u origin HEAD
|
|
221
|
-
```
|
|
222
|
-
|
|
223
|
-
#### 4.2 分析变更
|
|
224
|
-
|
|
225
|
-
```bash
|
|
226
|
-
# 优先使用 origin/HEAD(远端默认分支),避免硬编码 main/master。
|
|
227
|
-
# 如需指定基准分支,使用:/git-commit-and-pr --pr --base <BRANCH>
|
|
228
|
-
git log origin/HEAD..HEAD --oneline
|
|
229
|
-
git diff origin/HEAD...HEAD --stat
|
|
230
|
-
```
|
|
231
|
-
|
|
232
|
-
#### 4.3 创建 PR
|
|
233
|
-
|
|
234
|
-
```bash
|
|
235
|
-
gh pr create --title '<type>: <概要>' --body-file - <<'EOF'
|
|
236
|
-
## 变更说明
|
|
237
|
-
|
|
238
|
-
- <变更项>
|
|
239
|
-
|
|
240
|
-
## 测试
|
|
241
|
-
|
|
242
|
-
- [ ] 本地测试通过
|
|
243
|
-
|
|
244
|
-
Closes: #<issue-id>
|
|
245
|
-
EOF
|
|
246
|
-
```
|
|
247
|
-
|
|
248
|
-
#### 4.4 提示评审
|
|
249
|
-
|
|
250
|
-
创建 PR 成功后,提醒用户运行自动评审流程:
|
|
251
|
-
|
|
252
|
-
```
|
|
253
|
-
💡 提示:运行以下命令启动自动评审
|
|
254
|
-
/pr-review-loop --pr <PR_NUMBER>
|
|
255
|
-
```
|
|
256
|
-
|
|
257
|
-
---
|
|
258
|
-
|
|
259
|
-
## 输出格式
|
|
260
|
-
|
|
261
|
-
**成功:**
|
|
262
|
-
|
|
263
|
-
```
|
|
264
|
-
✅ 完成
|
|
265
|
-
|
|
266
|
-
Issue: #<编号> <标题>
|
|
267
|
-
Commit: <hash> <主题>
|
|
268
|
-
PR: #<编号> → <URL>
|
|
269
|
-
|
|
270
|
-
💡 下一步:运行以下命令启动自动评审
|
|
271
|
-
/pr-review-loop --pr <编号>
|
|
272
|
-
```
|
|
273
|
-
|
|
274
|
-
**部分完成:**
|
|
275
|
-
|
|
276
|
-
```
|
|
277
|
-
⚠️ 停止于 [阶段]
|
|
278
|
-
|
|
279
|
-
已完成:<列表>
|
|
280
|
-
阻塞:<原因>
|
|
281
|
-
继续:/dx:git-commit-and-pr --issue <编号>
|
|
282
|
-
```
|