From c3db82fbd2d632daddfe8b190534efad676b487f Mon Sep 17 00:00:00 2001 From: bookworm-admin Date: Tue, 21 Apr 2026 18:33:29 +0800 Subject: [PATCH] Fix verify: dynamic hook types + target 17 --- tools/third-machine-install.ps1 | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/tools/third-machine-install.ps1 b/tools/third-machine-install.ps1 index cae26e5..5109b87 100644 --- a/tools/third-machine-install.ps1 +++ b/tools/third-machine-install.ps1 @@ -53,10 +53,10 @@ $REPO = 'bookworm/bookworm-smart-assistant' $CLAUDE_ROOT = Join-Path $env:USERPROFILE '.claude' $TRUST_PEM_PATH = Join-Path $env:USERPROFILE '.bookworm-trust.pem' -# 目标计数 (v6.5.1) +# 目标计数 (v6.5.1, 以 stats-compiled.json 的 hooksRegistered 为准) $TARGET_SKILLS = 93 $TARGET_AGENTS = 18 -$TARGET_HOOKS_MIN = 37 # >=37 即可 (38 全量, 有条件注册容错) +$TARGET_HOOKS_MIN = 17 # settings.json 真实激活数 (非 hook 文件总数 38) # ========== 预检 ========== function Assert-Prereqs { @@ -206,22 +206,29 @@ function Test-Installation { W-Ok "Agents: $agentCount (目标 $TARGET_AGENTS)" } - # Hooks 数 (从 settings.json 解析 hooks 注册条目) + # Hooks 数 (从 settings.json 解析, 动态枚举 hooks 下所有类型) $settingsPath = Join-Path $CLAUDE_ROOT 'settings.json' if (Test-Path $settingsPath) { try { $settings = Get-Content -Raw $settingsPath | ConvertFrom-Json $hookCount = 0 - foreach ($hookType in @('UserPromptSubmit', 'SessionStart', 'PreToolUse', 'PostToolUse', 'Stop', 'PreCompact')) { - $grp = $settings.hooks.$hookType - if ($grp) { - foreach ($g in $grp) { - $hookCount += $g.hooks.Count + $breakdown = @{} + if ($settings.hooks) { + foreach ($hookType in $settings.hooks.PSObject.Properties.Name) { + $grp = $settings.hooks.$hookType + $cnt = 0 + if ($grp) { + foreach ($g in $grp) { $cnt += $g.hooks.Count } } + $breakdown[$hookType] = $cnt + $hookCount += $cnt } } if ($hookCount -lt $TARGET_HOOKS_MIN) { - W-Warn "Hooks 注册数偏低: $hookCount / $TARGET_HOOKS_MIN+" + W-Warn "Hooks 注册数偏低: $hookCount / $TARGET_HOOKS_MIN (可能漂移)" + $breakdown.GetEnumerator() | Sort-Object Name | ForEach-Object { + W-Warn " $($_.Name): $($_.Value)" + } } else { W-Ok "Hooks 注册数: $hookCount (目标 $TARGET_HOOKS_MIN+)" }