claude-pangu 2.2.3 → 2.2.6
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-plugin/plugin.json +2 -2
- package/dist/lib/plugin-installer.d.ts.map +1 -1
- package/dist/lib/plugin-installer.js +97 -0
- package/dist/lib/plugin-installer.js.map +1 -1
- package/hooks/context-smart-alert.sh +3 -3
- package/hooks/lib/message-dedup.sh +14 -2
- package/hooks/progress-notifier.sh +39 -14
- package/hooks/ralph-loop.sh +2 -1
- package/hooks/todo-continuation.sh +2 -2
- package/package.json +1 -1
- package/scripts/install.sh +119 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://code.claude.com/plugin-schema.json",
|
|
3
3
|
"name": "oh-my-claude",
|
|
4
|
-
"version": "2.2.
|
|
5
|
-
"hooks": "
|
|
4
|
+
"version": "2.2.6",
|
|
5
|
+
"hooks": "../hooks/hooks.json",
|
|
6
6
|
"description": "基于中国传统文化的 Claude Code 智能编排插件 - A Claude Code plugin inspired by Chinese traditional culture",
|
|
7
7
|
"author": "ZDragon17",
|
|
8
8
|
"contributors": [
|
|
@@ -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,
|
|
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;AAwHD;;GAEG;AACH,wBAAgB,8BAA8B,IAAI,OAAO,CAyBxD"}
|
|
@@ -211,6 +211,8 @@ export function registerPluginToClaudeCode() {
|
|
|
211
211
|
writeInstalledPlugins(installedPlugins);
|
|
212
212
|
success('插件已注册到 Claude Code');
|
|
213
213
|
info(`注册路径: ${INSTALLED_PLUGINS_PATH}`);
|
|
214
|
+
// 同步 hooks 到 settings.json(关键步骤!)
|
|
215
|
+
syncHooksToSettings();
|
|
214
216
|
return true;
|
|
215
217
|
}
|
|
216
218
|
catch (err) {
|
|
@@ -219,6 +221,101 @@ export function registerPluginToClaudeCode() {
|
|
|
219
221
|
return false;
|
|
220
222
|
}
|
|
221
223
|
}
|
|
224
|
+
// ==================== Hooks 同步 ====================
|
|
225
|
+
/** settings.json 路径 */
|
|
226
|
+
const SETTINGS_PATH = path.join(os.homedir(), '.claude', 'settings.json');
|
|
227
|
+
/**
|
|
228
|
+
* 同步 hooks 配置到 settings.json
|
|
229
|
+
* Claude Code 需要在 settings.json 中配置 hooks 才能生效
|
|
230
|
+
*/
|
|
231
|
+
function syncHooksToSettings() {
|
|
232
|
+
info('正在同步 hooks 到 settings.json...');
|
|
233
|
+
try {
|
|
234
|
+
// 读取现有 settings.json
|
|
235
|
+
let settings = {};
|
|
236
|
+
if (fs.existsSync(SETTINGS_PATH)) {
|
|
237
|
+
try {
|
|
238
|
+
const content = fs.readFileSync(SETTINGS_PATH, 'utf-8');
|
|
239
|
+
settings = JSON.parse(content);
|
|
240
|
+
}
|
|
241
|
+
catch {
|
|
242
|
+
warn('settings.json 解析失败,将创建新配置');
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
// 备份 settings.json
|
|
246
|
+
if (fs.existsSync(SETTINGS_PATH)) {
|
|
247
|
+
const backupPath = `${SETTINGS_PATH}.backup-${Date.now()}`;
|
|
248
|
+
fs.copyFileSync(SETTINGS_PATH, backupPath);
|
|
249
|
+
}
|
|
250
|
+
// 定义核心 hooks(使用插件安装路径)
|
|
251
|
+
const coreHooks = {
|
|
252
|
+
PostToolUse: [
|
|
253
|
+
{
|
|
254
|
+
type: 'command',
|
|
255
|
+
command: `bash "${PLUGIN_DIR}/hooks/progress-notifier.sh"`,
|
|
256
|
+
timeout: 3000
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
type: 'command',
|
|
260
|
+
command: `bash "${PLUGIN_DIR}/hooks/context-smart-alert.sh"`,
|
|
261
|
+
timeout: 2000
|
|
262
|
+
}
|
|
263
|
+
],
|
|
264
|
+
Stop: [
|
|
265
|
+
{
|
|
266
|
+
type: 'command',
|
|
267
|
+
command: `bash "${PLUGIN_DIR}/hooks/todo-continuation.sh"`,
|
|
268
|
+
timeout: 3000
|
|
269
|
+
},
|
|
270
|
+
{
|
|
271
|
+
type: 'command',
|
|
272
|
+
command: `bash "${PLUGIN_DIR}/hooks/ralph-loop.sh"`,
|
|
273
|
+
timeout: 3000
|
|
274
|
+
}
|
|
275
|
+
]
|
|
276
|
+
};
|
|
277
|
+
// 合并 hooks(避免重复)
|
|
278
|
+
if (!settings.hooks) {
|
|
279
|
+
settings.hooks = {};
|
|
280
|
+
}
|
|
281
|
+
let hooksAdded = 0;
|
|
282
|
+
for (const [hookType, hooks] of Object.entries(coreHooks)) {
|
|
283
|
+
if (!settings.hooks[hookType]) {
|
|
284
|
+
settings.hooks[hookType] = [];
|
|
285
|
+
}
|
|
286
|
+
// 获取现有命令列表
|
|
287
|
+
const existingCommands = new Set(settings.hooks[hookType]
|
|
288
|
+
.filter((h) => typeof h === 'object' && 'command' in h)
|
|
289
|
+
.map(h => h.command));
|
|
290
|
+
// 添加新的 hooks(如果不存在)
|
|
291
|
+
for (const hook of hooks) {
|
|
292
|
+
// 检查是否已存在相同脚本的 hook(忽略路径差异)
|
|
293
|
+
const scriptName = hook.command.split('/').pop() || '';
|
|
294
|
+
const alreadyExists = Array.from(existingCommands).some(cmd => cmd.includes(scriptName));
|
|
295
|
+
if (!alreadyExists) {
|
|
296
|
+
settings.hooks[hookType].push(hook);
|
|
297
|
+
hooksAdded++;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
// 写回 settings.json
|
|
302
|
+
const settingsDir = path.dirname(SETTINGS_PATH);
|
|
303
|
+
if (!fs.existsSync(settingsDir)) {
|
|
304
|
+
fs.mkdirSync(settingsDir, { recursive: true });
|
|
305
|
+
}
|
|
306
|
+
fs.writeFileSync(SETTINGS_PATH, JSON.stringify(settings, null, 2), 'utf-8');
|
|
307
|
+
if (hooksAdded > 0) {
|
|
308
|
+
success(`hooks 已同步到 settings.json (新增 ${hooksAdded} 个)`);
|
|
309
|
+
}
|
|
310
|
+
else {
|
|
311
|
+
info('hooks 已是最新,无需更新');
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
catch (err) {
|
|
315
|
+
warn(`hooks 同步失败: ${err instanceof Error ? err.message : 'Unknown error'}`);
|
|
316
|
+
warn('请手动配置 hooks,或运行 /diagnose 获取帮助');
|
|
317
|
+
}
|
|
318
|
+
}
|
|
222
319
|
/**
|
|
223
320
|
* 从 Claude Code 的 installed_plugins.json 移除插件注册
|
|
224
321
|
*/
|
|
@@ -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":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACzG,OAAO,EAAiB,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,qBAAqB,MAAM,0BAA0B,CAAC;AAE7D,oDAAoD;AAEpD,gCAAgC;AAChC,MAAM,sBAAsB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,wBAAwB,CAAC,CAAC;AAkBvG,mDAAmD;AAEnD;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,wDAAwD;AAExD;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,UAAkB;IAChD,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACtD,MAAM,KAAK,GAAkB,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAEtE,IAAI,CAAC,wBAAwB,CAAC,CAAC;IAE/B,yBAAyB;IACzB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACnD,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1D,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,cAAc,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IAED,yCAAyC;IACzC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;IAC7E,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,EAAE,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3D,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,iBAAiB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;IAED,iBAAiB;IACjB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,cAAc;IACd,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3E,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,EAAE,CAAC,YAAY,CACb,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,EAC5B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAC7B,CAAC;gBACF,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,QAAQ,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;YAC9F,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;QACpB,OAAO,CAAC,wBAAwB,KAAK,CAAC,KAAK,OAAO,CAAC,CAAC;QACpD,IAAI,CAAC,gBAAgB,WAAW,EAAE,CAAC,CAAC;QACpC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,WAAW,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC1C,CAAC;AAED,sDAAsD;AAEtD;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,UAAkB;IAC9C,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAClD,MAAM,KAAK,GAAkB,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAEtD,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAEvB,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;aACjE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAEhC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC;YAChC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YACpD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAErD,IAAI,CAAC;gBACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;oBACjC,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAClD,CAAC;gBAED,cAAc;gBACd,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;gBACtD,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC9B,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;gBACnE,CAAC;gBAED,0BAA0B;gBAC1B,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;qBAC/D,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;gBAE3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,IAAI,CAAC;wBACH,EAAE,CAAC,YAAY,CACb,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,EACjC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CACnC,CAAC;oBACJ,CAAC;oBAAC,MAAM,CAAC;wBACP,YAAY;oBACd,CAAC;gBACH,CAAC;gBAED,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,SAAS,QAAQ,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;YACzG,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;QACpB,OAAO,CAAC,gBAAgB,KAAK,CAAC,KAAK,WAAW,CAAC,CAAC;QAChD,IAAI,CAAC,cAAc,SAAS,EAAE,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC1C,CAAC;AAED,sDAAsD;AAEtD;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,iBAAiB,GAAG,IAAI,qBAAqB,EAAE,CAAC;IAEtD,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACtD,IAAI,CAAC,cAAc,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,YAAY,KAAK,CAAC,IAAI,QAAQ,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;AACH,CAAC;AAED,iDAAiD;AAEjD;;GAEG;AACH,SAAS,oBAAoB;IAC3B,IAAI,EAAE,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAAE,CAAC;QAC1C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;YACjE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAyB,CAAC;QACrD,CAAC;QAAC,MAAM,CAAC;YACP,YAAY;QACd,CAAC;IACH,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,IAA0B;IACvD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACxD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;IACD,EAAE,CAAC,aAAa,CAAC,sBAAsB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACnF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B;IACxC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IAE/B,IAAI,CAAC;QACH,MAAM,gBAAgB,GAAG,oBAAoB,EAAE,CAAC;QAChD,MAAM,SAAS,GAAG,GAAG,WAAW,QAAQ,CAAC;QACzC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAErC,SAAS;QACT,MAAM,WAAW,GAAgB;YAC/B,KAAK,EAAE,MAAM;YACb,WAAW,EAAE,UAAU;YACvB,OAAO,EAAE,OAAO;YAChB,WAAW,EAAE,GAAG;YAChB,WAAW,EAAE,GAAG;YAChB,OAAO,EAAE,IAAI;SACd,CAAC;QAEF,UAAU;QACV,IAAI,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YACxC,SAAS;YACT,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACpD,IAAI,CAAC,YAAY,SAAS,KAAK,OAAO,EAAE,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,OAAO;YACP,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACpD,IAAI,CAAC,WAAW,SAAS,KAAK,OAAO,EAAE,CAAC,CAAC;QAC3C,CAAC;QAED,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;QACxC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QAC9B,IAAI,CAAC,SAAS,sBAAsB,EAAE,CAAC,CAAC;QAExC,kCAAkC;QAClC,mBAAmB,EAAE,CAAC;QAEtB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,KAAK,CAAC,WAAW,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,qDAAqD;AAErD,uBAAuB;AACvB,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;AAa1E;;;GAGG;AACH,SAAS,mBAAmB;IAC1B,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAEtC,IAAI,CAAC;QACH,qBAAqB;QACrB,IAAI,QAAQ,GAAiB,EAAE,CAAC;QAChC,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;gBACxD,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAiB,CAAC;YACjD,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,CAAC,2BAA2B,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QAED,mBAAmB;QACnB,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YACjC,MAAM,UAAU,GAAG,GAAG,aAAa,WAAW,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAC3D,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;QAC7C,CAAC;QAED,uBAAuB;QACvB,MAAM,SAAS,GAAiC;YAC9C,WAAW,EAAE;gBACX;oBACE,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,SAAS,UAAU,8BAA8B;oBAC1D,OAAO,EAAE,IAAI;iBACd;gBACD;oBACE,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,SAAS,UAAU,gCAAgC;oBAC5D,OAAO,EAAE,IAAI;iBACd;aACF;YACD,IAAI,EAAE;gBACJ;oBACE,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,SAAS,UAAU,8BAA8B;oBAC1D,OAAO,EAAE,IAAI;iBACd;gBACD;oBACE,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,SAAS,UAAU,uBAAuB;oBACnD,OAAO,EAAE,IAAI;iBACd;aACF;SACF,CAAC;QAEF,iBAAiB;QACjB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACpB,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC;QACtB,CAAC;QAED,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9B,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;YAChC,CAAC;YAED,WAAW;YACX,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAC9B,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;iBACrB,MAAM,CAAC,CAAC,CAAC,EAAmB,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,SAAS,IAAI,CAAC,CAAC;iBACvE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CACvB,CAAC;YAEF,oBAAoB;YACpB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,4BAA4B;gBAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;gBACvD,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;gBAEzF,IAAI,CAAC,aAAa,EAAE,CAAC;oBACnB,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACpC,UAAU,EAAE,CAAC;gBACf,CAAC;YACH,CAAC;QACH,CAAC;QAED,mBAAmB;QACnB,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAChD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAChC,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC;QACD,EAAE,CAAC,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAE5E,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YACnB,OAAO,CAAC,gCAAgC,UAAU,KAAK,CAAC,CAAC;QAC3D,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,eAAe,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QAC5E,IAAI,CAAC,gCAAgC,CAAC,CAAC;IACzC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,8BAA8B;IAC5C,IAAI,CAAC,2BAA2B,CAAC,CAAC;IAElC,IAAI,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,iCAAiC,CAAC,CAAC;YACxC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,gBAAgB,GAAG,oBAAoB,EAAE,CAAC;QAChD,MAAM,SAAS,GAAG,GAAG,WAAW,QAAQ,CAAC;QAEzC,IAAI,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YACxC,OAAO,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC3C,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;YACxC,OAAO,CAAC,uBAAuB,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,YAAY,CAAC,CAAC;QACrB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,KAAK,CAAC,aAAa,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QAC3E,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
@@ -132,7 +132,7 @@ if [ "$usage_percent" -ge "$CRITICAL_THRESHOLD" ]; then
|
|
|
132
132
|
record_alert_time
|
|
133
133
|
progress_bar=$(generate_progress_bar "$usage_percent")
|
|
134
134
|
|
|
135
|
-
printf '{"
|
|
135
|
+
printf '{"hookSpecificOutput":{"additionalContext":"\\n\\n┌─────────────────────────────────────────┐\\n│ 🚨 CONTEXT CRITICAL - 上下文即将耗尽 │\\n└─────────────────────────────────────────┘\\n\\n 📊 [%s] %d%%\\n ~%dk / %dk tokens\\n\\n ⚡ 立即行动 (选一个):\\n • /context compact 压缩历史\\n • /session save 保存进度后开新会话\\n\\n ⚠️ 继续操作可能导致会话中断!\\n"}}\n' "$progress_bar" "$usage_percent" "$((accumulated_tokens / 1000))" "$((MAX_CONTEXT_TOKENS / 1000))"
|
|
136
136
|
exit 0
|
|
137
137
|
fi
|
|
138
138
|
|
|
@@ -144,7 +144,7 @@ if [ "$usage_percent" -ge "$WARNING_THRESHOLD" ]; then
|
|
|
144
144
|
record_alert_time
|
|
145
145
|
progress_bar=$(generate_progress_bar "$usage_percent")
|
|
146
146
|
|
|
147
|
-
printf '{"
|
|
147
|
+
printf '{"hookSpecificOutput":{"additionalContext":"\\n\\n┌──────────────────────────────────────┐\\n│ ⚠️ CONTEXT WARNING - 请尽快处理 │\\n└──────────────────────────────────────┘\\n\\n 📊 [%s] %d%%\\n ~%dk / %dk tokens\\n\\n 💡 建议: /context compact 压缩历史\\n"}}\n' "$progress_bar" "$usage_percent" "$((accumulated_tokens / 1000))" "$((MAX_CONTEXT_TOKENS / 1000))"
|
|
148
148
|
exit 0
|
|
149
149
|
fi
|
|
150
150
|
|
|
@@ -156,7 +156,7 @@ if [ "$usage_percent" -ge "$HINT_THRESHOLD" ]; then
|
|
|
156
156
|
record_alert_time
|
|
157
157
|
progress_bar=$(generate_progress_bar "$usage_percent")
|
|
158
158
|
|
|
159
|
-
printf '{"
|
|
159
|
+
printf '{"hookSpecificOutput":{"additionalContext":"\\n 💡 上下文: [%s] %d%% - 使用 /context 查看详情\\n"}}\n' "$progress_bar" "$usage_percent"
|
|
160
160
|
exit 0
|
|
161
161
|
fi
|
|
162
162
|
|
|
@@ -82,11 +82,23 @@ clear_all_dedup() {
|
|
|
82
82
|
}
|
|
83
83
|
|
|
84
84
|
# 带去重的消息输出函数
|
|
85
|
-
# $1:
|
|
85
|
+
# $1: 消息内容(不包含 JSON 包装)
|
|
86
|
+
# 注意:使用 additionalContext 而非 systemMessage(systemMessage 非 Claude Code 标准字段)
|
|
86
87
|
output_system_message() {
|
|
87
88
|
local message="$1"
|
|
88
89
|
|
|
89
90
|
if should_show_message "$message"; then
|
|
90
|
-
printf '{"
|
|
91
|
+
printf '{"hookSpecificOutput":{"additionalContext":"%s"}}\n' "$message"
|
|
92
|
+
fi
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
# 带去重的重要消息输出函数(会显示给用户)
|
|
96
|
+
# $1: 消息内容
|
|
97
|
+
output_user_visible_message() {
|
|
98
|
+
local message="$1"
|
|
99
|
+
|
|
100
|
+
if should_show_message "$message"; then
|
|
101
|
+
# 使用 additionalContext 添加指令让 Claude 显示给用户
|
|
102
|
+
printf '{"hookSpecificOutput":{"additionalContext":"[DISPLAY TO USER]\\n%s"}}\n' "$message"
|
|
91
103
|
fi
|
|
92
104
|
}
|
|
@@ -109,21 +109,40 @@ else
|
|
|
109
109
|
fi
|
|
110
110
|
fi
|
|
111
111
|
|
|
112
|
-
# 只处理 TodoWrite
|
|
112
|
+
# 只处理 TodoWrite 工具调用(兼容 MCP 工具名格式)
|
|
113
113
|
debug_log "Extracted tool_name: [$tool_name]"
|
|
114
|
-
if [ "$tool_name" != "TodoWrite" ]; then
|
|
115
|
-
debug_log "Not TodoWrite, exiting"
|
|
114
|
+
if [ "$tool_name" != "TodoWrite" ] && [ "$tool_name" != "mcp_todowrite" ]; then
|
|
115
|
+
debug_log "Not TodoWrite/mcp_todowrite, exiting"
|
|
116
116
|
exit 0
|
|
117
117
|
fi
|
|
118
118
|
debug_log "Processing TodoWrite event"
|
|
119
119
|
|
|
120
120
|
# 提取 todo 统计信息
|
|
121
121
|
if [ "$HAS_JQ" -eq 1 ]; then
|
|
122
|
-
# 使用 jq
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
122
|
+
# 使用 jq 精确解析(兼容多种 JSON 路径)
|
|
123
|
+
# MCP 工具可能在: .tool_input.todos, .parameters.todos, .input.todos, 或直接 .todos
|
|
124
|
+
todos_path=""
|
|
125
|
+
for path in ".tool_input.todos" ".parameters.todos" ".input.todos" ".todos"; do
|
|
126
|
+
check=$(echo "$input" | jq -r "$path // empty" 2>/dev/null)
|
|
127
|
+
if [ -n "$check" ] && [ "$check" != "null" ]; then
|
|
128
|
+
todos_path="$path"
|
|
129
|
+
break
|
|
130
|
+
fi
|
|
131
|
+
done
|
|
132
|
+
debug_log "Found todos at path: $todos_path"
|
|
133
|
+
|
|
134
|
+
if [ -n "$todos_path" ]; then
|
|
135
|
+
completed=$(echo "$input" | jq -r "$todos_path | map(select(.status == \"completed\")) | length" 2>/dev/null)
|
|
136
|
+
in_progress=$(echo "$input" | jq -r "$todos_path | map(select(.status == \"in_progress\")) | length" 2>/dev/null)
|
|
137
|
+
pending=$(echo "$input" | jq -r "$todos_path | map(select(.status == \"pending\")) | length" 2>/dev/null)
|
|
138
|
+
current_task=$(echo "$input" | jq -r "$todos_path | map(select(.status == \"in_progress\")) | .[0].content // \"准备下一个任务\"" 2>/dev/null)
|
|
139
|
+
else
|
|
140
|
+
# 如果找不到路径,使用降级方案
|
|
141
|
+
completed=$(count_status "$input" "completed")
|
|
142
|
+
in_progress=$(count_status "$input" "in_progress")
|
|
143
|
+
pending=$(count_status "$input" "pending")
|
|
144
|
+
current_task=$(extract_current_task "$input")
|
|
145
|
+
fi
|
|
127
146
|
else
|
|
128
147
|
# 降级方案:使用纯 shell 解析
|
|
129
148
|
completed=$(count_status "$input" "completed")
|
|
@@ -215,18 +234,24 @@ else
|
|
|
215
234
|
progress_line2=$(printf '✅ 所有任务完成!')
|
|
216
235
|
fi
|
|
217
236
|
|
|
218
|
-
# 转义 JSON
|
|
237
|
+
# 转义 JSON 特殊字符(Windows Git Bash 兼容)
|
|
219
238
|
escape_json() {
|
|
220
|
-
|
|
239
|
+
local str="$1"
|
|
240
|
+
# 使用 bash 内置替换,避免 sed 处理 emoji 时出错
|
|
241
|
+
str="${str//\\/\\\\}" # 转义反斜杠
|
|
242
|
+
str="${str//\"/\\\"}" # 转义双引号
|
|
243
|
+
str="${str//$'\t'/\\t}" # 转义制表符
|
|
244
|
+
str="${str//$'\n'/\\n}" # 转义换行符
|
|
245
|
+
printf '%s' "$str"
|
|
221
246
|
}
|
|
222
247
|
|
|
223
248
|
line1_escaped=$(escape_json "$progress_line1")
|
|
224
249
|
line2_escaped=$(escape_json "$progress_line2")
|
|
225
250
|
|
|
226
|
-
# 输出 JSON(使用
|
|
227
|
-
# systemMessage
|
|
228
|
-
output=$(printf '{"
|
|
229
|
-
"$line1_escaped" "$line2_escaped"
|
|
251
|
+
# 输出 JSON(使用 additionalContext 让 Claude 看到进度并显示给用户)
|
|
252
|
+
# 注意:systemMessage 不是标准字段,只使用 additionalContext
|
|
253
|
+
output=$(printf '{"hookSpecificOutput":{"additionalContext":"\\n【任务进度】\\n%s\\n%s\\n"}}' \
|
|
254
|
+
"$line1_escaped" "$line2_escaped")
|
|
230
255
|
|
|
231
256
|
debug_log "Final output: $output"
|
|
232
257
|
printf '%s\n' "$output"
|
package/hooks/ralph-loop.sh
CHANGED
|
@@ -51,6 +51,7 @@ if [ -f "$RALPH_STATE_FILE" ]; then
|
|
|
51
51
|
fi
|
|
52
52
|
|
|
53
53
|
# 返回 JSON 阻止退出并注入继续指令
|
|
54
|
-
|
|
54
|
+
# 注意:Stop hook 使用 decision + reason 字段(非 systemMessage)
|
|
55
|
+
printf '{"decision":"block","reason":"🔄 Ralph Loop 第 %d 次迭代 - 必须先检查 TODO 列表","hookSpecificOutput":{"additionalContext":"\\n\\n🔄 **Ralph Loop 第 %d 次迭代**\\n\\n## 强制自检流程\\n\\n**必须执行以下步骤:**\\n\\n1. 调用 `mcp_todoread` 工具查看当前 TODO 列表\\n2. 检查是否有 `pending` 或 `in_progress` 状态的任务\\n3. 如果有未完成任务 → 继续工作,不要停止\\n4. 如果所有任务都是 `completed` → 执行结束流程\\n\\n## 结束方式\\n\\n当所有 TODO 完成后:\\n1. 向用户报告任务完成\\n2. 执行: `rm -f .claude/ralph-loop.local.md` 删除循环状态文件\\n3. 循环将自动结束\\n\\n**⚠️ 不要跳过 todoread 检查!**\\n"}}\n' "$NEXT_ITERATION" "$NEXT_ITERATION"
|
|
55
56
|
|
|
56
57
|
exit 0
|
|
@@ -43,7 +43,7 @@ if [ -f "$YISHAN_STATE_FILE" ]; then
|
|
|
43
43
|
fi
|
|
44
44
|
|
|
45
45
|
# 返回 JSON 阻止退出
|
|
46
|
-
#
|
|
47
|
-
printf '{"decision":"block","
|
|
46
|
+
# 注意:Stop hook 使用 decision + reason 字段(非 systemMessage)
|
|
47
|
+
printf '{"decision":"block","reason":"🏔️ 愚公移山 第 %d 次搬石 - 必须先检查 TODO 列表","hookSpecificOutput":{"additionalContext":"\\n\\n🏔️ **愚公移山 第 %d 次搬石**\\n\\n## 强制自检流程\\n\\n**必须执行以下步骤:**\\n\\n1. 调用 `mcp_todoread` 工具查看当前 TODO 列表\\n2. 检查是否有 `pending` 或 `in_progress` 状态的任务\\n3. 如果有未完成任务 → 继续工作,不要停止\\n4. 如果所有任务都是 `completed` → 执行结束流程\\n\\n## 结束方式\\n\\n当所有 TODO 完成后:\\n1. 向用户报告任务完成\\n2. 执行: `rm -f .claude/yishan-loop.local.md` 删除循环状态文件\\n3. 循环将自动结束\\n\\n**⚠️ 不要跳过 todoread 检查!**\\n"}}\n' "$NEXT_ITERATION" "$NEXT_ITERATION"
|
|
48
48
|
|
|
49
49
|
exit 0
|
package/package.json
CHANGED
package/scripts/install.sh
CHANGED
|
@@ -22,6 +22,7 @@ PLUGIN_NAME="oh-my-claude"
|
|
|
22
22
|
INSTALL_DIR="$HOME/.claude/plugins/$PLUGIN_NAME"
|
|
23
23
|
COMMANDS_DIR="$HOME/.claude/commands"
|
|
24
24
|
SKILLS_DIR="$HOME/.claude/skills"
|
|
25
|
+
SETTINGS_FILE="$HOME/.claude/settings.json"
|
|
25
26
|
|
|
26
27
|
# 输出函数
|
|
27
28
|
info() { echo -e "${BLUE}ℹ️ $1${NC}"; }
|
|
@@ -224,6 +225,123 @@ install_plugin() {
|
|
|
224
225
|
fi
|
|
225
226
|
}
|
|
226
227
|
|
|
228
|
+
# 同步 hooks 配置到 settings.json
|
|
229
|
+
setup_hooks() {
|
|
230
|
+
info "正在配置 hooks..."
|
|
231
|
+
|
|
232
|
+
# 检查 settings.json 是否存在
|
|
233
|
+
if [ ! -f "$SETTINGS_FILE" ]; then
|
|
234
|
+
warn "未找到 $SETTINGS_FILE,跳过 hooks 配置"
|
|
235
|
+
warn "请手动将 hooks/hooks.json 中的配置添加到 settings.json"
|
|
236
|
+
return 0
|
|
237
|
+
fi
|
|
238
|
+
|
|
239
|
+
# 备份 settings.json
|
|
240
|
+
cp "$SETTINGS_FILE" "${SETTINGS_FILE}.backup-$(date +%s)" 2>/dev/null || true
|
|
241
|
+
|
|
242
|
+
# 检查是否已经配置了 oh-my-claude hooks(通过检查 progress-notifier)
|
|
243
|
+
if grep -q "progress-notifier.sh" "$SETTINGS_FILE" 2>/dev/null; then
|
|
244
|
+
success "hooks 已配置,跳过"
|
|
245
|
+
return 0
|
|
246
|
+
fi
|
|
247
|
+
|
|
248
|
+
# 尝试使用 Python 合并 JSON(跨平台兼容)
|
|
249
|
+
if command -v python3 >/dev/null 2>&1; then
|
|
250
|
+
PYTHON_CMD="python3"
|
|
251
|
+
elif command -v python >/dev/null 2>&1; then
|
|
252
|
+
PYTHON_CMD="python"
|
|
253
|
+
else
|
|
254
|
+
warn "未找到 Python,无法自动配置 hooks"
|
|
255
|
+
warn "请手动将以下内容添加到 $SETTINGS_FILE 的 hooks 部分:"
|
|
256
|
+
echo ""
|
|
257
|
+
echo ' "hooks": {'
|
|
258
|
+
echo ' "PostToolUse": ['
|
|
259
|
+
echo ' {'
|
|
260
|
+
echo ' "type": "command",'
|
|
261
|
+
echo " \"command\": \"bash \\\"$INSTALL_DIR/hooks/progress-notifier.sh\\\"\","
|
|
262
|
+
echo ' "timeout": 3000'
|
|
263
|
+
echo ' }'
|
|
264
|
+
echo ' ]'
|
|
265
|
+
echo ' }'
|
|
266
|
+
echo ""
|
|
267
|
+
return 0
|
|
268
|
+
fi
|
|
269
|
+
|
|
270
|
+
# 使用 Python 脚本合并 hooks 配置
|
|
271
|
+
$PYTHON_CMD << PYTHON_SCRIPT
|
|
272
|
+
import json
|
|
273
|
+
import sys
|
|
274
|
+
import os
|
|
275
|
+
|
|
276
|
+
settings_file = "$SETTINGS_FILE"
|
|
277
|
+
install_dir = "$INSTALL_DIR"
|
|
278
|
+
|
|
279
|
+
try:
|
|
280
|
+
with open(settings_file, 'r', encoding='utf-8') as f:
|
|
281
|
+
settings = json.load(f)
|
|
282
|
+
except Exception as e:
|
|
283
|
+
print(f"读取 settings.json 失败: {e}", file=sys.stderr)
|
|
284
|
+
sys.exit(1)
|
|
285
|
+
|
|
286
|
+
# 定义核心 hooks(只添加最重要的几个)
|
|
287
|
+
core_hooks = {
|
|
288
|
+
"PostToolUse": [
|
|
289
|
+
{
|
|
290
|
+
"type": "command",
|
|
291
|
+
"command": f'bash "{install_dir}/hooks/progress-notifier.sh"',
|
|
292
|
+
"timeout": 3000
|
|
293
|
+
},
|
|
294
|
+
{
|
|
295
|
+
"type": "command",
|
|
296
|
+
"command": f'bash "{install_dir}/hooks/context-smart-alert.sh"',
|
|
297
|
+
"timeout": 2000
|
|
298
|
+
}
|
|
299
|
+
],
|
|
300
|
+
"Stop": [
|
|
301
|
+
{
|
|
302
|
+
"type": "command",
|
|
303
|
+
"command": f'bash "{install_dir}/hooks/todo-continuation.sh"',
|
|
304
|
+
"timeout": 3000
|
|
305
|
+
},
|
|
306
|
+
{
|
|
307
|
+
"type": "command",
|
|
308
|
+
"command": f'bash "{install_dir}/hooks/ralph-loop.sh"',
|
|
309
|
+
"timeout": 3000
|
|
310
|
+
}
|
|
311
|
+
]
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
# 合并 hooks
|
|
315
|
+
if "hooks" not in settings:
|
|
316
|
+
settings["hooks"] = {}
|
|
317
|
+
|
|
318
|
+
for hook_type, hooks in core_hooks.items():
|
|
319
|
+
if hook_type not in settings["hooks"]:
|
|
320
|
+
settings["hooks"][hook_type] = []
|
|
321
|
+
|
|
322
|
+
# 添加新的 hooks(避免重复)
|
|
323
|
+
existing_commands = [h.get("command", "") for h in settings["hooks"][hook_type] if isinstance(h, dict)]
|
|
324
|
+
for hook in hooks:
|
|
325
|
+
if hook["command"] not in existing_commands:
|
|
326
|
+
settings["hooks"][hook_type].append(hook)
|
|
327
|
+
|
|
328
|
+
# 写回文件
|
|
329
|
+
try:
|
|
330
|
+
with open(settings_file, 'w', encoding='utf-8') as f:
|
|
331
|
+
json.dump(settings, f, indent=2, ensure_ascii=False)
|
|
332
|
+
print("hooks 配置成功")
|
|
333
|
+
except Exception as e:
|
|
334
|
+
print(f"写入 settings.json 失败: {e}", file=sys.stderr)
|
|
335
|
+
sys.exit(1)
|
|
336
|
+
PYTHON_SCRIPT
|
|
337
|
+
|
|
338
|
+
if [ $? -eq 0 ]; then
|
|
339
|
+
success "hooks 配置完成"
|
|
340
|
+
else
|
|
341
|
+
warn "hooks 自动配置失败,请手动配置"
|
|
342
|
+
fi
|
|
343
|
+
}
|
|
344
|
+
|
|
227
345
|
# 验证安装
|
|
228
346
|
verify_installation() {
|
|
229
347
|
info "验证安装..."
|
|
@@ -283,6 +401,7 @@ main() {
|
|
|
283
401
|
show_banner
|
|
284
402
|
check_dependencies
|
|
285
403
|
install_plugin
|
|
404
|
+
setup_hooks
|
|
286
405
|
verify_installation
|
|
287
406
|
show_success
|
|
288
407
|
}
|