daa1674a20
2026-08-20 雲端 session 的閘全滅,而三個驗證步驟全部回綠。 今晚在隔離 HOME(GIT_CONFIG_NOSYSTEM=1)重現,把兩件事分開了: ① setup script 的寫法是對的 裸環境失敗、加了 url.insteadOf 就成功 —— x-access-token 這個使用者名稱 Gitea 也接受。所以先前我對 leo 說「URL 重寫沒作用到 marketplace 這條路徑」 是錯的,這裡更正。 (前兩次測試之所以誤導,是因為 /etc/gitconfig 的 macOS keychain helper 還在幫忙 —— 「隔離 HOME」並沒有隔離系統層設定。同一個病第三次。) ② 真正的缺陷是這支腳本從不驗證自己 設完就結束。token 沒生效也不出聲 ⇒ setup log 一片綠、 session 開起來才發現 marketplace 拉不下來,而那時已經沒有任何線索。 本次加兩道自我驗證:git 認證通不通、marketplace 有沒有就位, 任一不通就 exit 1 並印出該查什麼。 ③ 新增 isep-presence-beacon.sh(信標,不是閘) SessionStart 報「ISEP v幾 已載入、幾支閘」。 它的全部意義是鑑別力:這行住在 plugin 裡,所以看得到就一定載入了, 看不到就是零閘。不像 git tag(在三支閘的白名單裡,閘死了照樣過)。 ④ plugin.json 0.0.0 → 0.3.0 查清楚了:0.0.0 不是漂移,是誠實 —— ISEP 一個 tag 都沒有,從沒發過 release。 而這正是「雲端拿不到更新」的另一半:claude plugin update 比對版本號, 沒有 release 就永遠沒有新號碼可比。所以這一刀的收工是真的打 tag 發版。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
31 lines
1.4 KiB
Bash
Executable File
31 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
# isep-presence-beacon.sh — SessionStart:報出「ISEP 真的載入了,幾版、幾支閘」
|
||
#
|
||
# 這不是閘,是**信標**。存在的理由是 2026-08-20 的雲端事故:
|
||
# 雲端 session 的閘全滅,而三個驗證步驟全部回綠——因為它們沒有鑑別力
|
||
# (`git tag` 在三支閘的白名單裡;`Skills(9)/Hooks(5)` 剛好是薄殼自己的 .claude/ 產生的數字)。
|
||
#
|
||
# 🔴 鑑別力就是這支的全部意義:
|
||
# 這行出現 ⇒ plugin 一定載入了(因為它自己就住在 plugin 裡)
|
||
# 這行不見 ⇒ plugin 沒載入,那個 session 是零閘狀態
|
||
# ——沒有第三種情況,也沒有「剛好也會過」的巧合。
|
||
set -uo pipefail
|
||
|
||
ROOT="${CLAUDE_PLUGIN_ROOT:-}"
|
||
[ -n "$ROOT" ] || exit 0
|
||
|
||
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 ' ')"
|
||
|
||
MSG="🟢 ISEP v${VER} 已載入(${GATES} 支閘在 ${ROOT})"
|
||
|
||
printf '%s\n' "{
|
||
\"systemMessage\": \"${MSG}\",
|
||
\"hookSpecificOutput\": {
|
||
\"hookEventName\": \"SessionStart\",
|
||
\"additionalContext\": \"${MSG}。這行是 ISEP plugin 自己發的——看得到它就表示閘真的生效了。若某個 session 從頭到尾沒有這行,那個 session 是零閘狀態,先修 plugin 再做事,不要用『跑得動』當證據。\"
|
||
}
|
||
}"
|