From b1f399f8b9a71aa571bf7b91ca8b8500b6b5a697 Mon Sep 17 00:00:00 2001 From: richblack Date: Sun, 23 Aug 2026 16:52:01 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=A1=E6=A8=99=E6=94=B9=E6=95=B8=E3=80=8C?= =?UTF-8?q?=E7=9C=9F=E7=9A=84=E8=A2=AB=E8=A8=BB=E5=86=8A=E7=9A=84=E9=96=98?= =?UTF-8?q?=E3=80=8D=E2=80=94=E2=80=94=E5=AE=83=E4=B8=80=E7=9B=B4=E5=A4=9A?= =?UTF-8?q?=E5=A0=B1=E4=B8=80=E6=94=AF=E6=A8=A3=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit leo 的雲端驗收(2026-08-23)抓到:信標說 44 支,`ls hooks/ | wc -l` 是 49,對不上。 追下去是 `ls "$ROOT"/hooks/*.sh | wc -l`: 把 `pre-write-guard.template.sh`(樣板,不是閘)與兩支沒掛註冊的輔助檔一起算進去。 🔴 這個數字是 leo 判斷「這個 session 到底有沒有閘」的唯一介面——**多報就是假綠**。 改成數 `hooks.json` 裡註冊過的唯一 `.sh`;hooks.json 讀不到才退回檔案數(且排除樣板)。 實測兩向: 正向(真的 plugin 根目錄) → 42(與 hooks.json 註冊數一致) 反向(沒有 hooks.json 的假根) → 2(三個檔裡有一個是 .template.sh,沒算進去) 查過歷史:本檔自 daa1674 建立以來只有那一版,沒有別的分支修過這段。 inkstone/InkStoneCo#57 --- .claude-plugin/plugin.json | 2 +- hooks/isep-presence-beacon.sh | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 0e17304..9f9e594 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "isep", "description": "InkStone Environment Plugin —— leo 的 Claude Code 環境唯一真相源:43 支機械閘(53 條註冊,白話盤點見 docs/hooks-inventory.md)、7 支 slash command、2 支 skill、27 支腳本,外加治理規範與標籤真相源。本機與雲端裝同一份,沒有子集。", - "version": "0.3.5", + "version": "0.3.6", "keywords": [ "inkstone", "guardrails", diff --git a/hooks/isep-presence-beacon.sh b/hooks/isep-presence-beacon.sh index 1b187c0..cd75f2c 100755 --- a/hooks/isep-presence-beacon.sh +++ b/hooks/isep-presence-beacon.sh @@ -17,7 +17,17 @@ ROOT="${CLAUDE_PLUGIN_ROOT:-}" VER="$(sed -n 's/.*"version"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p' \ "$ROOT/.claude-plugin/plugin.json" 2>/dev/null | head -1)" VER="${VER:-未知}" -GATES="$(ls "$ROOT"/hooks/*.sh 2>/dev/null | wc -l | tr -d ' ')" +# 🔴 數「真的被註冊的」,不是數目錄裡有幾個 .sh(leo 的雲端驗收 2026-08-23 抓到): +# 舊寫法 `ls hooks/*.sh` 把 `pre-write-guard.template.sh`(樣板,不是閘) +# 與兩支沒掛註冊的輔助檔一起算進去 ⇒ 報 45,實際註冊 42。 +# 這個數字是 leo 判斷「這個 session 有沒有閘」的唯一介面——**多報就是假綠**。 +# (查過歷史:本檔自 daa1674 建立以來只有那一版,沒有別的分支修過這段。) +GATES="$(grep -oE 'hooks/[a-zA-Z0-9._-]+\.sh' "$ROOT/hooks/hooks.json" 2>/dev/null \ + | sort -u | wc -l | tr -d ' ')" +case "$GATES" in + ''|*[!0-9]*|0) + GATES="$(ls "$ROOT"/hooks/*.sh 2>/dev/null | grep -cv '\.template\.sh$' | tr -d ' ')" ;; +esac MSG="🟢 ISEP v${VER} 已載入(${GATES} 支閘在 ${ROOT})"