Files
ISEP/scripts/patches/session-start-recall--map-zero-is-a-lie.patch
T
Leo c2638668e3 ISEP 0.1.0:環境設定收成一個 plugin,本機與雲端共用一份
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>
2026-08-20 11:41:46 +08:00

72 lines
4.8 KiB
Diff
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
開場注入補一段:藏書地圖顯示 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#85embed 補算)、Leo/mira#6Mira 主線)。
**那三張修好之後這段要拿掉**,否則它會變成下一個「看起來像現況的舊東西」。
--- 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 " 所以 arcrunmiraarcrun-ragarcrun-harnessinkstoneco 等庫會顯示 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#85embed)|Leo/mira#6Mira 主線)"
+echo "────────────────────────────────────────────────"
+echo ""
+
# ── push 2/5:各 repo 的 wiki 全景(leo 2026-08-12「一次看到全景」的另一半)──
# 上面那段是**票**(雲端現算)+ KBDB 藏書地圖;這段是**各 repo 真正的 wiki**。
# 為什麼不塞進雲端那支工作流:工作流跑在 Cloudflare 上,要拿 repo 樹只有