c2638668e3
leo 2026-08-20:「同一個 plugin 你用,薄殼也用,保證兩邊同步」
「我要你幫雲端做薄殼,永遠都有問題,你要做的就是這組設定
你自己可以 dogfooding」
搬進來:41 支 hook(51 條註冊)/7 支 command/2 支 skill/23 支腳本。
不搬 .env、wiki、docs——那些是知識不是環境。
51 條 hook 路徑全部從 $CLAUDE_PROJECT_DIR/.claude/hooks/ 改成 ${CLAUDE_PLUGIN_ROOT}/hooks/,
零漏網。那正是薄殼一直壞掉的根:雲端 cwd 不是真身,寫死路徑就斷。
尚未驗證:Claude Code 能不能從私有 Gitea repo 裝 marketplace(要憑證)。
下一步就是在本機實際裝一次,通了才動雲端 bootstrap.sh。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
72 lines
4.8 KiB
Diff
72 lines
4.8 KiB
Diff
開場注入補一段:藏書地圖顯示 0 不等於庫是空的(2026-08-13)
|
||
|
||
由 subagent 產生、**待總管代套**(`.claude/` 是受保護目錄,子 session 動不了)。
|
||
|
||
套用:
|
||
git apply scripts/patches/session-start-recall--map-zero-is-a-lie.patch
|
||
驗證(要看到那段文字):
|
||
bash .claude/hooks/session-start-recall.sh | sed -n '/查不到就換一種查法/,/追蹤:/p'
|
||
|
||
已驗:`git apply --check` 通過、`bash -n` 通過、實跑印得出來(輸出見 Leo/mira#6)。
|
||
|
||
--- 為什麼要這段(2026-08-13 對 leo21c 唯讀實測)-----------------------------
|
||
|
||
leo 原話:「現在你的 MCP 搜不到東西,這就是我急着要完成它的原因。沒有它你是瞎的。」
|
||
|
||
實測結果不是「搜尋壞了」,是**地圖說謊,而 AI 信了它就不再往下查**:
|
||
|
||
kbdb_get_map() → 8 個庫,7 個 triplet_count = 0
|
||
kbdb_search(q="cypher-executor", mode="keyword") → 42 筆,來源正是那 7 個庫
|
||
(gitea:Leo/Arcrun@…、gitea:Leo/mira@… 等,library 全都標對了)
|
||
|
||
地圖數的是**三元組**;那 7 個庫有 entries 但沒有三元組
|
||
(`kbdb_query(template='triplet')` 抽樣 100 筆,source_uri 全部是 kb://,沒有一筆來自 gitea)。
|
||
|
||
⇒ 開場注入把「七個庫是空的」推到每個 session 眼前,AI 於是不查了——
|
||
而答案 keyword 一查就有。**這一段就是為了擋掉那個誤判。**
|
||
|
||
一併寫進注入文字的另外兩件實測(省得每個 session 自己撞):
|
||
· 語意搜尋對超過一半的 repo wiki 內容是瞎的(那 42 筆裡 23 筆 is_embedded=0)。
|
||
問「Arcrun 是什麼 工作流引擎 Cloudflare」回 0 筆;同題 keyword 回 29 筆真答案。
|
||
· kbdb_graph_neighbors(subject="Arcrun") 回 0 個鄰居,
|
||
但 kbdb_get_map(library="kb") 列著 Arcrun degree 40 ⇒ 圖查詢是斷的。
|
||
|
||
🔴 這段是**暫時的路標,不是修法**。真修法在 Leo/Arcrun#87(三元組沒從 repo wiki 產生)、
|
||
Leo/Arcrun#85(embed 補算)、Leo/mira#6(Mira 主線)。
|
||
**那三張修好之後這段要拿掉**,否則它會變成下一個「看起來像現況的舊東西」。
|
||
|
||
--- a/.claude/hooks/session-start-recall.sh
|
||
+++ b/.claude/hooks/session-start-recall.sh
|
||
@@ -83,6 +83,31 @@
|
||
echo "════════════════════════════════════════════════"
|
||
echo ""
|
||
|
||
+# ── push 1.5/5:藏書地圖顯示 0 ≠ 庫是空的(2026-08-13 實測,暫時路標)────────
|
||
+# 修好 Leo/Arcrun#87(三元組沒從 repo wiki 產生)與 #85(一半沒 embed)之後,
|
||
+# 這整段要拿掉。留著會變成下一個「看起來像現況的舊東西」。
|
||
+echo "────────────────────────────────────────────────"
|
||
+echo "🔴 查不到就換一種查法——**藏書地圖顯示 0,不代表那個庫是空的**(2026-08-13 實測)"
|
||
+echo ""
|
||
+echo " 地圖數的是「三元組」。各 repo 的 wiki 有 entries、但**沒有三元組**,"
|
||
+echo " 所以 arcrun/mira/arcrun-rag/arcrun-harness/inkstoneco 等庫會顯示 0——**那是假的**。"
|
||
+echo " 實測:kbdb_search(q=\"cypher-executor\", mode=\"keyword\") 回 42 筆,正是那些庫的卡片。"
|
||
+echo ""
|
||
+echo " ⇒ 三種查法現在的實際狀態:"
|
||
+echo " · kbdb_search(mode=\"keyword\") ✅ 可用——**目前唯一可靠的一種,優先用它**"
|
||
+echo " · kbdb_search(mode=\"semantic\") ◐ 對超過一半的 repo wiki 是瞎的(沒 embed)"
|
||
+echo " 回 0 筆**不代表庫裡沒有**,改用 keyword 再問一次"
|
||
+echo " · kbdb_graph_neighbors() ❌ 目前回 0 個鄰居,先別依賴它"
|
||
+echo ""
|
||
+echo " 🔴 **不要因為地圖是 0、或語意回 0,就下結論說「庫裡沒有這個」。**"
|
||
+echo " 2026-08-13 就是這樣把 Arcrun 的定位講錯的——查得到,只是被告知不用查。"
|
||
+echo ""
|
||
+echo " 在修好之前,問「X 是什麼」的正確姿勢:"
|
||
+echo " kbdb_search(q=\"X\", mode=\"keyword\") → 沒有再試 semantic → 都沒有才說沒有"
|
||
+echo " 追蹤:Leo/Arcrun#87(地圖)|Leo/Arcrun#85(embed)|Leo/mira#6(Mira 主線)"
|
||
+echo "────────────────────────────────────────────────"
|
||
+echo ""
|
||
+
|
||
# ── push 2/5:各 repo 的 wiki 全景(leo 2026-08-12「一次看到全景」的另一半)──
|
||
# 上面那段是**票**(雲端現算)+ KBDB 藏書地圖;這段是**各 repo 真正的 wiki**。
|
||
# 為什麼不塞進雲端那支工作流:工作流跑在 Cloudflare 上,要拿 repo 樹只有
|