claude-pangu 2.2.7 → 2.2.9

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/commands/xuetu.md CHANGED
@@ -1,4 +1,19 @@
1
- # 学徒命令 - 从经验中学习
1
+ ---
2
+ name: xuetu
3
+ description: |
4
+ 学徒命令 - 从经验中学习
5
+ 基于持续学习技能,从会话中提取可复用模式。
6
+ 别名:/apprentice, /learner, /remember
7
+ arguments:
8
+ - name: action
9
+ description: "操作类型: (空)=分析学习, list=列出, search=搜索, apply=应用, save=保存"
10
+ required: false
11
+ - name: query
12
+ description: "搜索关键词或模式 ID"
13
+ required: false
14
+ ---
15
+
16
+ # /xuetu - 学徒命令
2
17
 
3
18
  > 📚 学而时习之,温故而知新
4
19
 
@@ -13,49 +28,197 @@
13
28
  # 指定提取内容
14
29
  /xuetu "如何处理认证错误"
15
30
 
16
- # 英文命令
17
- /learner extract "auth error handling"
18
- ```
19
-
20
- ## 管理知识库
21
-
22
- ```bash
23
31
  # 列出所有已学习的模式
24
32
  /xuetu list
25
33
 
34
+ # 按分类列出
35
+ /xuetu list --category code-patterns
36
+
26
37
  # 搜索特定模式
27
38
  /xuetu search "认证"
39
+ /xuetu search --tags auth,jwt
28
40
 
29
41
  # 应用已学习的模式
30
- /xuetu apply "处理JWT过期"
42
+ /xuetu apply jwt-refresh-token
43
+
44
+ # 手动保存模式
45
+ /xuetu save "模式名称" --category code-patterns --tags react,form
46
+
47
+ # 删除过时的学习成果
48
+ /xuetu delete <pattern-id>
31
49
 
32
50
  # 导出知识库
33
- /xuetu export --format=json
51
+ /xuetu export > patterns.json
34
52
 
35
53
  # 导入知识库
36
- /xuetu import knowledge.json
54
+ /xuetu import patterns.json
37
55
  ```
38
56
 
39
- ## 选项
57
+ ## 执行流程
40
58
 
41
- ```bash
42
- # 指定分类
43
- /xuetu --category=patterns 提取认证相关经验
59
+ <xuetu>
60
+ ## 学徒学习流程
61
+
62
+ ### 阶段 1: 会话分析
63
+
64
+ 分析当前会话中的:
65
+ - 实现的功能代码
66
+ - 解决的问题
67
+ - 使用的模式
68
+ - 讨论的最佳实践
69
+
70
+ ### 阶段 2: 模式识别
71
+
72
+ 识别以下信号:
73
+ - [ ] 重复出现的代码结构
74
+ - [ ] 解决了特定问题的方案
75
+ - [ ] 用户肯定的实现方式
76
+ - [ ] 通过验证的代码
77
+
78
+ ### 阶段 3: 价值评估
79
+
80
+ 对每个候选内容评估:
81
+ | 维度 | 权重 | 说明 |
82
+ |------|------|------|
83
+ | 可复用性 | 40% | 能否在其他场景使用 |
84
+ | 通用性 | 30% | 是否项目无关 |
85
+ | 正确性 | 20% | 是否是正确做法 |
86
+ | 复杂度 | 10% | 是否值得记录 |
87
+
88
+ ### 阶段 4: 保存学习成果
89
+
90
+ 将有价值的内容保存到 `.claude/learned-patterns/`
91
+
92
+ 分类:
93
+ - `code-patterns/` - 代码模式
94
+ - `solutions/` - 问题解决方案
95
+ - `best-practices/` - 最佳实践
96
+ - `project-knowledge/` - 项目知识
97
+
98
+ ### 阶段 5: 汇报结果
99
+
100
+ ```markdown
101
+ ## 📚 学习报告
102
+
103
+ ### 本次学习
104
+ 从当前会话识别并保存了以下模式:
105
+
106
+ #### 1. [code-pattern] React 表单验证
107
+ - **文件**: `code-patterns/react-form-validation.md`
108
+ - **标签**: react, form, zod
109
+ - **来源**: 实现登录表单
44
110
 
45
- # 添加标签
46
- /xuetu --tags=auth,jwt,error
111
+ #### 2. [solution] Prisma 连接池配置
112
+ - **文件**: `solutions/prisma-connection-pool.md`
113
+ - **标签**: prisma, database
114
+ - **来源**: 修复连接超时
47
115
 
48
- # 从历史会话提取
49
- /xuetu --session=ses_abc123
116
+ ### 统计
117
+ - 总学习成果: 42 个
118
+ - 本次新增: 2 个
50
119
  ```
120
+ </xuetu>
121
+
122
+ ## 学习成果格式
123
+
124
+ ### 代码模式
125
+
126
+ ```markdown
127
+ ## 模式:React 表单验证
128
+
129
+ ### 触发条件
130
+ - 实现表单验证逻辑
131
+ - 使用 react-hook-form
132
+
133
+ ### 模式代码
134
+ \`\`\`typescript
135
+ import { useForm } from 'react-hook-form';
136
+ import { zodResolver } from '@hookform/resolvers/zod';
137
+ import { z } from 'zod';
138
+
139
+ const schema = z.object({
140
+ email: z.string().email('请输入有效邮箱'),
141
+ password: z.string().min(8, '密码至少8位'),
142
+ });
143
+
144
+ export function LoginForm() {
145
+ const { register, handleSubmit, formState: { errors } } = useForm({
146
+ resolver: zodResolver(schema),
147
+ });
148
+ // ...
149
+ }
150
+ \`\`\`
151
+
152
+ ### 学习来源
153
+ - 会话: 2026-02-03-login
154
+ ```
155
+
156
+ ### 解决方案
157
+
158
+ ```markdown
159
+ ## 解决方案:Next.js Cookies 问题
160
+
161
+ ### 问题描述
162
+ 在服务端组件中 cookies() 报错
163
+
164
+ ### 根本原因
165
+ cookies() 需要在异步上下文中调用
166
+
167
+ ### 解决方案
168
+ \`\`\`typescript
169
+ import { cookies } from 'next/headers';
170
+
171
+ export default async function Page() {
172
+ const cookieStore = await cookies();
173
+ const token = cookieStore.get('token');
174
+ }
175
+ \`\`\`
176
+ ```
177
+
178
+ ## 存储位置
179
+
180
+ ```
181
+ .claude/
182
+ └── learned-patterns/
183
+ ├── index.json # 学习索引
184
+ ├── code-patterns/ # 代码模式
185
+ ├── solutions/ # 解决方案
186
+ ├── best-practices/ # 最佳实践
187
+ └── project-knowledge/ # 项目知识
188
+ ```
189
+
190
+ ## 配置选项
191
+
192
+ 在 `.claude/settings.json` 中配置:
193
+
194
+ ```json
195
+ {
196
+ "omc": {
197
+ "continuousLearning": {
198
+ "enabled": true,
199
+ "autoLearn": true,
200
+ "storage": "project",
201
+ "minConfidence": 0.7
202
+ }
203
+ }
204
+ }
205
+ ```
206
+
207
+ ## 与其他命令的关系
208
+
209
+ | 命令 | 功能 | 范围 |
210
+ |------|------|------|
211
+ | `/learn` | 项目画像 | 项目结构、技术栈 |
212
+ | `/xuetu` | 个人经验 | 模式、解决方案 |
213
+ | `/snippet` | 代码片段 | 可直接复制的代码 |
51
214
 
52
215
  ## 命令别名
53
216
 
54
217
  - `/xuetu` - 学徒(中文)
55
- - `/learner` - Learner(英文)
56
- - `/learn` - 简写
218
+ - `/apprentice` - 英文别名
219
+ - `/learner` - 学习者
57
220
  - `/remember` - 记住
58
221
 
59
222
  ---
60
223
 
61
- 加载 learner 技能以获取详细指南。
224
+ 加载 continuous-learning 技能以获取详细指南。
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-installer.d.ts","sourceRoot":"","sources":["../../lib/plugin-installer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,EAAE,aAAa,EAAuB,MAAM,sBAAsB,CAAC;AA2B1E;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAID;;GAEG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,CA+DjE;AAID;;GAEG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,CAuD/D;AAID;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAWzC;AA8BD;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,OAAO,CA0CpD;AAyHD;;GAEG;AACH,wBAAgB,8BAA8B,IAAI,OAAO,CAyBxD"}
1
+ {"version":3,"file":"plugin-installer.d.ts","sourceRoot":"","sources":["../../lib/plugin-installer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,EAAE,aAAa,EAAuB,MAAM,sBAAsB,CAAC;AA2B1E;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAID;;GAEG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,CA+DjE;AAID;;GAEG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,CAuD/D;AAID;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAWzC;AA8BD;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,OAAO,CA0CpD;AA0JD;;GAEG;AACH,wBAAgB,8BAA8B,IAAI,OAAO,CAyBxD"}
@@ -247,31 +247,51 @@ function syncHooksToSettings() {
247
247
  const backupPath = `${SETTINGS_PATH}.backup-${Date.now()}`;
248
248
  fs.copyFileSync(SETTINGS_PATH, backupPath);
249
249
  }
250
- // 定义核心 hooks(使用插件安装路径)
250
+ // 定义核心 hooks(使用新格式:matcher + hooks 数组)
251
251
  // 注意:在 Windows Git Bash 中,使用 bash -c '. script' 才能正确接收 stdin 管道输入
252
252
  const coreHooks = {
253
253
  PostToolUse: [
254
254
  {
255
- type: 'command',
256
- command: `bash -c '. "${PLUGIN_DIR}/hooks/progress-notifier.sh"'`,
257
- timeout: 3000
255
+ matcher: 'TodoWrite',
256
+ hooks: [
257
+ {
258
+ type: 'command',
259
+ command: `bash -c '. "${PLUGIN_DIR}/hooks/progress-notifier.sh"'`,
260
+ timeout: 3000
261
+ }
262
+ ]
258
263
  },
259
264
  {
260
- type: 'command',
261
- command: `bash -c '. "${PLUGIN_DIR}/hooks/context-smart-alert.sh"'`,
262
- timeout: 2000
265
+ matcher: '*',
266
+ hooks: [
267
+ {
268
+ type: 'command',
269
+ command: `bash -c '. "${PLUGIN_DIR}/hooks/context-smart-alert.sh"'`,
270
+ timeout: 2000
271
+ }
272
+ ]
263
273
  }
264
274
  ],
265
275
  Stop: [
266
276
  {
267
- type: 'command',
268
- command: `bash -c '. "${PLUGIN_DIR}/hooks/todo-continuation.sh"'`,
269
- timeout: 3000
277
+ matcher: '*',
278
+ hooks: [
279
+ {
280
+ type: 'command',
281
+ command: `bash -c '. "${PLUGIN_DIR}/hooks/todo-continuation.sh"'`,
282
+ timeout: 3000
283
+ }
284
+ ]
270
285
  },
271
286
  {
272
- type: 'command',
273
- command: `bash -c '. "${PLUGIN_DIR}/hooks/ralph-loop.sh"'`,
274
- timeout: 3000
287
+ matcher: '*',
288
+ hooks: [
289
+ {
290
+ type: 'command',
291
+ command: `bash -c '. "${PLUGIN_DIR}/hooks/ralph-loop.sh"'`,
292
+ timeout: 3000
293
+ }
294
+ ]
275
295
  }
276
296
  ]
277
297
  };
@@ -280,21 +300,29 @@ function syncHooksToSettings() {
280
300
  settings.hooks = {};
281
301
  }
282
302
  let hooksAdded = 0;
283
- for (const [hookType, hooks] of Object.entries(coreHooks)) {
303
+ for (const [hookType, hookEntries] of Object.entries(coreHooks)) {
284
304
  if (!settings.hooks[hookType]) {
285
305
  settings.hooks[hookType] = [];
286
306
  }
287
- // 获取现有命令列表
288
- const existingCommands = new Set(settings.hooks[hookType]
289
- .filter((h) => typeof h === 'object' && 'command' in h)
290
- .map(h => h.command));
291
- // 添加新的 hooks(如果不存在)
292
- for (const hook of hooks) {
293
- // 检查是否已存在相同脚本的 hook(忽略路径差异)
294
- const scriptName = hook.command.split('/').pop() || '';
295
- const alreadyExists = Array.from(existingCommands).some(cmd => cmd.includes(scriptName));
296
- if (!alreadyExists) {
297
- settings.hooks[hookType].push(hook);
307
+ // 获取现有脚本名列表(从新格式的 hooks 数组中提取)
308
+ const existingScripts = new Set();
309
+ for (const entry of settings.hooks[hookType]) {
310
+ if (entry && typeof entry === 'object' && 'hooks' in entry && Array.isArray(entry.hooks)) {
311
+ for (const h of entry.hooks) {
312
+ if (h && typeof h === 'object' && 'command' in h) {
313
+ const scriptName = h.command.split('/').pop() || '';
314
+ existingScripts.add(scriptName);
315
+ }
316
+ }
317
+ }
318
+ }
319
+ // 添加新的 hook entries(如果脚本不存在)
320
+ for (const hookEntry of hookEntries) {
321
+ // 提取这个 entry 中的脚本名
322
+ const scriptNames = hookEntry.hooks.map(h => h.command.split('/').pop() || '');
323
+ const allExist = scriptNames.every(name => Array.from(existingScripts).some(existing => existing.includes(name)));
324
+ if (!allExist) {
325
+ settings.hooks[hookType].push(hookEntry);
298
326
  hooksAdded++;
299
327
  }
300
328
  }
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-installer.js","sourceRoot":"","sources":["../../lib/plugin-installer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin-installer.js","sourceRoot":"","sources":["../../lib/plugin-installer.ts"],"names":[],"mappings":"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"}
@@ -96,6 +96,28 @@ EOF
96
96
  exit 0
97
97
  fi
98
98
 
99
+ # ---- 深度工作模式检测 (Deepwork/Hephaestus) ----
100
+ # 特征:目标导向、自主实现、端到端、深度
101
+ deepwork_mode=false
102
+ if echo "$prompt_lower" | grep -qE '(deepwork|huoshen|火神|hephaestus|深度工作)'; then
103
+ deepwork_mode=true
104
+ elif echo "$prompt_lower" | grep -qE '(目标导向|goal[-_]?oriented|自主.{0,5}(实现|完成|开发)|autonomous.{0,5}(implement|develop|complete))' || \
105
+ echo "$prompt_lower" | grep -qE '(端到端|end[-_]?to[-_]?end|e2e).{0,10}(实现|完成|开发|implement|develop|complete)' || \
106
+ echo "$prompt_lower" | grep -qE '(深度.{0,5}(理解|探索|分析)|deep.{0,5}(understand|explore|analyze))' || \
107
+ echo "$prompt_lower" | grep -qE '(给我.{0,5}目标|只需要.{0,5}目标|不用.{0,5}(告诉|说).{0,5}怎么做)' || \
108
+ echo "$prompt_lower" | grep -qE '(你来决定|你自己决定|自己想办法|自己规划)'; then
109
+ deepwork_mode=true
110
+ fi
111
+
112
+ if [ "$deepwork_mode" = true ]; then
113
+ cat << 'EOF'
114
+ {
115
+ "systemMessage": "\n\n<deepwork-mode>\n🔥 **火神深度工作模式已激活!**\n\n[目标导向 - 自主探索 - 端到端完成]\n\n## 为什么选择此模式\n检测到需要深度理解和自主完成的任务。\n\n## 核心特性\n\n### 1. 🎯 目标导向\n- 只需提供目标,我来决定实现路径\n- 不需要详细步骤指引\n\n### 2. 🔭 探索优先\n在写任何代码前,并行启动 2-5 个探索任务:\n```\n@wukong - 探索项目结构\n@wukong - 分析代码风格\n@wukong - 搜索相似实现\n@wukong - 识别测试模式\n```\n\n### 3. 🎨 模式匹配\n- 学习项目的编码规范\n- 按照项目风格编写代码\n- 让代码看起来像项目原作者写的\n\n### 4. ✅ 端到端完成\n- 100% 完成才算完成\n- 每个声明都有验证证据\n- 不接受部分完成\n\n## 执行流程\n```\nPhase 0: 目标理解\n ↓\nPhase 1: 并行探索 (2-5 @wukong)\n ↓\nPhase 2: 模式学习 → 项目画像\n ↓\nPhase 3: 自主实现\n ↓\nPhase 4: 验证循环 (测试→修复→测试)\n ↓\nPhase 5: 最终验证 + 证据展示\n```\n\n## 完成标志\n```\n<promise>深度工作完成</promise>\n```\n\n**给我目标,我交付完美。**\n</deepwork-mode>\n"
116
+ }
117
+ EOF
118
+ exit 0
119
+ fi
120
+
99
121
  # ---- 蜂群模式检测 (Swarm) ----
100
122
  # 特征:批量、所有、N个同类任务
101
123
  swarm_mode=false
@@ -17,6 +17,8 @@ RALPH_STATE_FILE=".claude/ralph-loop.local.md"
17
17
 
18
18
  # 如果状态文件不存在,允许正常退出
19
19
  if [ ! -f "$RALPH_STATE_FILE" ]; then
20
+ # Stop hook 需要输出 JSON 响应,即使是允许停止的情况
21
+ echo '{}' 2>/dev/null || true
20
22
  exit 0
21
23
  fi
22
24
 
@@ -34,6 +36,7 @@ COMPLETION_PROMISE=${COMPLETION_PROMISE:-DONE}
34
36
  if [ "$MAX_ITERATIONS" -gt 0 ] 2>/dev/null && [ "$ITERATION" -ge "$MAX_ITERATIONS" ] 2>/dev/null; then
35
37
  echo "🛑 Ralph Loop: 已达最大迭代次数 ($MAX_ITERATIONS)" >&2
36
38
  rm -f "$RALPH_STATE_FILE"
39
+ echo '{}' 2>/dev/null || true
37
40
  exit 0
38
41
  fi
39
42
 
@@ -16,6 +16,8 @@ YISHAN_STATE_FILE=".claude/yishan-loop.local.md"
16
16
 
17
17
  # 如果状态文件不存在,允许正常退出
18
18
  if [ ! -f "$YISHAN_STATE_FILE" ]; then
19
+ # Stop hook 需要输出 JSON 响应,即使是允许停止的情况
20
+ echo '{}' 2>/dev/null || true
19
21
  exit 0
20
22
  fi
21
23
 
@@ -31,6 +33,7 @@ MAX_ITERATIONS=${MAX_ITERATIONS:-50}
31
33
  if [ "$MAX_ITERATIONS" -gt 0 ] 2>/dev/null && [ "$ITERATION" -ge "$MAX_ITERATIONS" ] 2>/dev/null; then
32
34
  echo "🛑 愚公移山: 已达最大迭代次数 ($MAX_ITERATIONS)" >&2
33
35
  rm -f "$YISHAN_STATE_FILE"
36
+ echo '{}' 2>/dev/null || true
34
37
  exit 0
35
38
  fi
36
39
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-pangu",
3
- "version": "2.2.7",
3
+ "version": "2.2.9",
4
4
  "description": "基于中国传统文化的 Claude Code 智能编排插件 - A Claude Code plugin inspired by Chinese traditional culture (原名 oh-my-claude)",
5
5
  "keywords": [
6
6
  "claude-code",
@@ -19,6 +19,21 @@ NC='\033[0m' # No Color
19
19
  # 配置
20
20
  REPO="ZDragon17/oh-my-claude"
21
21
  PLUGIN_NAME="oh-my-claude"
22
+
23
+ # Windows 兼容性:确保 HOME 变量正确设置
24
+ if [[ "$(uname -s)" == MINGW* ]] || [[ "$(uname -s)" == MSYS* ]] || [[ "$(uname -s)" == CYGWIN* ]]; then
25
+ # Windows Git Bash 环境
26
+ IS_WINDOWS=true
27
+ # 如果 HOME 未设置或为空,使用 USERPROFILE
28
+ if [ -z "$HOME" ] && [ -n "$USERPROFILE" ]; then
29
+ HOME=$(cygpath -u "$USERPROFILE" 2>/dev/null || echo "$USERPROFILE" | sed 's|\\|/|g' | sed 's|^\([A-Za-z]\):|/\L\1|')
30
+ fi
31
+ # 确保 HOME 是 Unix 风格路径 (/c/Users/xxx)
32
+ HOME=$(cygpath -u "$HOME" 2>/dev/null || echo "$HOME")
33
+ else
34
+ IS_WINDOWS=false
35
+ fi
36
+
22
37
  INSTALL_DIR="$HOME/.claude/plugins/$PLUGIN_NAME"
23
38
  COMMANDS_DIR="$HOME/.claude/commands"
24
39
  SKILLS_DIR="$HOME/.claude/skills"
@@ -272,10 +287,40 @@ setup_hooks() {
272
287
  import json
273
288
  import sys
274
289
  import os
290
+ import platform
291
+ import re
275
292
 
276
293
  settings_file = "$SETTINGS_FILE"
277
294
  install_dir = "$INSTALL_DIR"
278
295
 
296
+ # Windows 兼容性:确保路径格式正确
297
+ # Claude Code 在 Windows 上执行 bash 命令时需要 Unix 风格路径
298
+ def normalize_path_for_hooks(path):
299
+ """将路径转换为 Git Bash 兼容格式"""
300
+ if platform.system() == 'Windows':
301
+ # 如果是 Windows 原生路径 (C:\Users\...),转换为 /c/Users/...
302
+ if re.match(r'^[A-Za-z]:', path):
303
+ drive = path[0].lower()
304
+ rest = path[2:].replace('\\\\', '/').replace('\\', '/')
305
+ return f'/{drive}{rest}'
306
+ # 如果已经是 Unix 风格但使用了反斜杠
307
+ path = path.replace('\\\\', '/').replace('\\', '/')
308
+ return path
309
+
310
+ install_dir = normalize_path_for_hooks(install_dir)
311
+
312
+ # Windows 上需要使用 bash -c '. script' 格式,否则 stdout 不会被捕获
313
+ is_windows = platform.system() == 'Windows'
314
+
315
+ def make_hook_command(script_path):
316
+ """生成 hook 命令,Windows 使用特殊格式"""
317
+ if is_windows:
318
+ # Windows: bash -c '. "script.sh"' 格式确保 stdout 正确输出
319
+ return f"bash -c '. \"{script_path}\"'"
320
+ else:
321
+ # macOS/Linux: 标准格式
322
+ return f'bash "{script_path}"'
323
+
279
324
  try:
280
325
  with open(settings_file, 'r', encoding='utf-8') as f:
281
326
  settings = json.load(f)
@@ -283,30 +328,50 @@ except Exception as e:
283
328
  print(f"读取 settings.json 失败: {e}", file=sys.stderr)
284
329
  sys.exit(1)
285
330
 
286
- # 定义核心 hooks(只添加最重要的几个)
331
+ # 定义核心 hooks(使用绝对路径,不依赖环境变量)
287
332
  core_hooks = {
288
333
  "PostToolUse": [
289
334
  {
290
- "type": "command",
291
- "command": f'bash "{install_dir}/hooks/progress-notifier.sh"',
292
- "timeout": 3000
335
+ "matcher": "TodoWrite",
336
+ "hooks": [
337
+ {
338
+ "type": "command",
339
+ "command": make_hook_command(f"{install_dir}/hooks/progress-notifier.sh"),
340
+ "timeout": 3000
341
+ }
342
+ ]
293
343
  },
294
344
  {
295
- "type": "command",
296
- "command": f'bash "{install_dir}/hooks/context-smart-alert.sh"',
297
- "timeout": 2000
345
+ "matcher": "*",
346
+ "hooks": [
347
+ {
348
+ "type": "command",
349
+ "command": make_hook_command(f"{install_dir}/hooks/context-smart-alert.sh"),
350
+ "timeout": 2000
351
+ }
352
+ ]
298
353
  }
299
354
  ],
300
355
  "Stop": [
301
356
  {
302
- "type": "command",
303
- "command": f'bash "{install_dir}/hooks/todo-continuation.sh"',
304
- "timeout": 3000
357
+ "matcher": "*",
358
+ "hooks": [
359
+ {
360
+ "type": "command",
361
+ "command": make_hook_command(f"{install_dir}/hooks/todo-continuation.sh"),
362
+ "timeout": 3000
363
+ }
364
+ ]
305
365
  },
306
366
  {
307
- "type": "command",
308
- "command": f'bash "{install_dir}/hooks/ralph-loop.sh"',
309
- "timeout": 3000
367
+ "matcher": "*",
368
+ "hooks": [
369
+ {
370
+ "type": "command",
371
+ "command": make_hook_command(f"{install_dir}/hooks/ralph-loop.sh"),
372
+ "timeout": 3000
373
+ }
374
+ ]
310
375
  }
311
376
  ]
312
377
  }
@@ -315,14 +380,31 @@ core_hooks = {
315
380
  if "hooks" not in settings:
316
381
  settings["hooks"] = {}
317
382
 
383
+ def extract_commands_from_hooks(hooks_list):
384
+ """从 hooks 列表中提取所有 command"""
385
+ commands = []
386
+ for h in hooks_list:
387
+ if isinstance(h, dict):
388
+ # 新格式: {"matcher": "...", "hooks": [{"command": "..."}]}
389
+ if "hooks" in h:
390
+ for inner_hook in h.get("hooks", []):
391
+ if "command" in inner_hook:
392
+ commands.append(inner_hook["command"])
393
+ # 旧格式: {"type": "command", "command": "..."}
394
+ elif "command" in h:
395
+ commands.append(h["command"])
396
+ return commands
397
+
318
398
  for hook_type, hooks in core_hooks.items():
319
399
  if hook_type not in settings["hooks"]:
320
400
  settings["hooks"][hook_type] = []
321
401
 
322
402
  # 添加新的 hooks(避免重复)
323
- existing_commands = [h.get("command", "") for h in settings["hooks"][hook_type] if isinstance(h, dict)]
403
+ existing_commands = extract_commands_from_hooks(settings["hooks"][hook_type])
324
404
  for hook in hooks:
325
- if hook["command"] not in existing_commands:
405
+ # 从新格式中提取 command
406
+ hook_command = hook.get("hooks", [{}])[0].get("command", "")
407
+ if hook_command and hook_command not in existing_commands:
326
408
  settings["hooks"][hook_type].append(hook)
327
409
 
328
410
  # 写回文件