Fix verify: dynamic hook types + target 17

This commit is contained in:
bookworm-admin 2026-04-21 18:33:29 +08:00
parent a365ea9ed1
commit c3db82fbd2

View File

@ -53,10 +53,10 @@ $REPO = 'bookworm/bookworm-smart-assistant'
$CLAUDE_ROOT = Join-Path $env:USERPROFILE '.claude' $CLAUDE_ROOT = Join-Path $env:USERPROFILE '.claude'
$TRUST_PEM_PATH = Join-Path $env:USERPROFILE '.bookworm-trust.pem' $TRUST_PEM_PATH = Join-Path $env:USERPROFILE '.bookworm-trust.pem'
# 目标计数 (v6.5.1) # 目标计数 (v6.5.1, 以 stats-compiled.json 的 hooksRegistered 为准)
$TARGET_SKILLS = 93 $TARGET_SKILLS = 93
$TARGET_AGENTS = 18 $TARGET_AGENTS = 18
$TARGET_HOOKS_MIN = 37 # >=37 即可 (38 全量, 有条件注册容错) $TARGET_HOOKS_MIN = 17 # settings.json 真实激活数 (非 hook 文件总数 38)
# ========== 预检 ========== # ========== 预检 ==========
function Assert-Prereqs { function Assert-Prereqs {
@ -206,22 +206,29 @@ function Test-Installation {
W-Ok "Agents: $agentCount (目标 $TARGET_AGENTS)" W-Ok "Agents: $agentCount (目标 $TARGET_AGENTS)"
} }
# Hooks 数 (从 settings.json 解析 hooks 注册条目) # Hooks 数 (从 settings.json 解析, 动态枚举 hooks 下所有类型)
$settingsPath = Join-Path $CLAUDE_ROOT 'settings.json' $settingsPath = Join-Path $CLAUDE_ROOT 'settings.json'
if (Test-Path $settingsPath) { if (Test-Path $settingsPath) {
try { try {
$settings = Get-Content -Raw $settingsPath | ConvertFrom-Json $settings = Get-Content -Raw $settingsPath | ConvertFrom-Json
$hookCount = 0 $hookCount = 0
foreach ($hookType in @('UserPromptSubmit', 'SessionStart', 'PreToolUse', 'PostToolUse', 'Stop', 'PreCompact')) { $breakdown = @{}
if ($settings.hooks) {
foreach ($hookType in $settings.hooks.PSObject.Properties.Name) {
$grp = $settings.hooks.$hookType $grp = $settings.hooks.$hookType
$cnt = 0
if ($grp) { if ($grp) {
foreach ($g in $grp) { foreach ($g in $grp) { $cnt += $g.hooks.Count }
$hookCount += $g.hooks.Count
} }
$breakdown[$hookType] = $cnt
$hookCount += $cnt
} }
} }
if ($hookCount -lt $TARGET_HOOKS_MIN) { 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 { } else {
W-Ok "Hooks 注册数: $hookCount (目标 $TARGET_HOOKS_MIN+)" W-Ok "Hooks 注册数: $hookCount (目标 $TARGET_HOOKS_MIN+)"
} }