實戰範例 010:跨 Wing 知識橋接與圖譜導航
背景
單一 Wing 內的關聯很直覺,但真正的知識常常跨越專案邊界。您在工作專案學到的「重試模式 (retry pattern)」,下班讀分布式系統文章時又遇到一次;這兩段記憶如果各別關在不同的 Wing,永遠不會被同時叫出來。
MemPalace 的 Wing 是語境切分,不是隔離。跨 Wing 的 link 加上 graph 指令,讓您把「工作中實作的經驗」與「書上讀到的理論」串成一張可導航的圖。本範例走完完整流程。
情境
您有兩個 Wing:
d:/projects/payment-service,工作專案,今天修了一個重試 bugd:/projects/distributed-systems-notes,個人學習筆記,讀過 retry 相關章節
目標:
- 在兩個 Wing 各加一筆相關記憶
- 用
link建立跨 Wing 關聯 - 用
graph視覺化這條橋 - 用
search驗證關聯兩端能同時被召回
第 1 步:確認兩個 Wing 都已初始化
$ cd ~/projects/payment-service
$ mempalace init --wing "d:/projects/payment-service"
✓ Palace initialized at .mempalace
✓ First wing: d:/projects/payment-service
$ cd ~/projects/distributed-systems-notes
$ mempalace init --wing "d:/projects/distributed-systems-notes"
✓ Palace initialized at .mempalace
✓ First wing: d:/projects/distributed-systems-notes
兩個 Palace 各自獨立運作,但屬於同一個 MemPalace 安裝。建立跨 Wing 連結時,MemPalace 會在兩邊的 wings.yaml 互相登記對方的 reference。
第 2 步:在工作 Wing 加入實作經驗
$ mempalace add --type observation \
--wing "d:/projects/payment-service" \
--room "reliability" \
--title "支付閘道重試 bug 修復筆記" \
--content "Stripe 閘道偶發 503 時,舊版用固定延遲重試 3 次仍常常失敗。改用指數退避 (exponential backoff) 加抖動 (jitter) 後,第 2 次重試成功率高於 95%。關鍵是抖動範圍要夠大,避免所有重試同步打到同一個視窗。" \
--tags "retry,backoff,payment,bugfix"
✓ Created observation drawer: drawer-001.md
第 3 步:在學習 Wing 加入理論引用
$ mempalace add --type reference \
--wing "d:/projects/distributed-systems-notes" \
--room "patterns" \
--title "Exponential Backoff And Jitter 章節摘錄" \
--source "https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/" \
--range "lines 1-80" \
--tags "retry,backoff,jitter,theory"
✓ Created reference drawer: drawer-001.md
注意:兩個 Wing 各自從 drawer-001.md 開始編號,因為編號是 Wing 內部的,不會跨 Wing 接續。
第 4 步:建立跨 Wing 關聯
用完整 reference 把兩端串起來,格式是 <wing>/<room>/<drawer-id>:
$ mempalace link \
--source "d:/projects/payment-service/reliability/drawer-001" \
--target "d:/projects/distributed-systems-notes/patterns/drawer-001" \
--type "relates_to" \
--reason "工作中的指數退避修復,是這篇理論文章的具體實作案例"
✓ Created cross-wing link (relates_to):
payment-service/reliability/drawer-001 → distributed-systems-notes/patterns/drawer-001
--type 只能從三種內建關聯中擇一:references_to、relates_to、extends_from。這裡兩端是「實作」與「理論」的概念對照,屬於中性關聯,選 relates_to 最貼切;若要表達「A 基於 B 擴展」,則用 extends_from。真正的方向與因果寫進 --reason,這會成為之後圖譜推理的線索。
第 5 步:視覺化跨 Wing 圖譜
$ mempalace graph --wing "d:/projects/payment-service" --root "drawer-001"
輸出(Mermaid 格式):
graph LR
A["payment-service/reliability/drawer-001<br/>支付閘道重試 bug 修復筆記"]
B["distributed-systems-notes/patterns/drawer-001<br/>Exponential Backoff And Jitter"]
A -->|relates_to| B
跨 Wing 的邊界清楚標示出來,從任一端起步都能看到對岸的節點。養成建完 link 立刻跑 graph 的習慣,能在一秒內確認方向有没有接反。
第 6 步:驗證關聯兩端能同時召回
$ mempalace search --query "重試如何避免同步塞車"
Wing: d:/projects/payment-service
Room: reliability
[observation] 支付閘道重試 bug 修復筆記
Score: 0.902
Cross-wing link → distributed-systems-notes/patterns/drawer-001
Wing: d:/projects/distributed-systems-notes
Room: patterns
[reference] Exponential Backoff And Jitter 章節摘錄
Score: 0.857
Linked from: payment-service/reliability/drawer-001
Results: 2 (across 2 wings)
搜尋不只給分數,還標出跨 Wing 的關聯邊。您看到的不只是兩筆獨立記憶,而是它們之間的因果脈絡。實作端的高分命中會透過 link 把理論端一起拉進同一個視野。
結果
跨 Wing 知識橋完成:
- 工作 Wing 的實作經驗,透過一條
relates_to邊連到學習 Wing 的理論引用 graph視覺化確認方向正確search雙向召回成立,兩端會同時出現並標示關聯
未來只要其中一端被搜到,圖譜會自動帶出對岸,您不會再「工作做過、讀書又忘」。
下一步
- 把同一個概念在第三個 Wing(例如 open-source 貢獻)也加一筆,形成三角關聯,觀察
graph如何呈現環狀結構 - 用
relates_to建立同層級關聯,把圖譜從樹狀擴展成網狀 - 想理解知識圖譜的時序版本(事實失效與取代),回頭讀知識圖譜 lesson
相關指令
| 指令 | 用途 |
|---|---|
mempalace init |
為每個 Wing 各初始化一次 |
mempalace add |
在指定 Wing 與 Room 加 Drawer |
mempalace link |
建立同 Wing 或跨 Wing 的關聯 |
mempalace graph |
視覺化 Drawer 周圍的關聯子圖 |
mempalace search |
語意搜尋,關聯端會跟著召回 |
關鍵學習點
- Wing 是語境不是隔離:跨 Wing
link讓分散的記憶能互相導航,這是 MemPalace 與一般筆記軟體最大的結構差異。 - 關聯類型承載語意:
references_to、relates_to、extends_from三選一,方向與因果寫進--reason,它們是日後圖譜推理的線索,命名要能表達方向與因果。 - graph 是驗證工具不是展示:建完 link 立刻跑
graph,能在接反方向時當場發現,比事後翻 settings 快得多。 - 關聯讓搜尋召回的是脈絡:實作端命中會把理論端一起帶出來,把「做過」與「讀過」同步拉回同一個視野。