import CodeBlock from ‘../../../components/CodeBlock.astro’; import CopyButton from ‘../../../components/CopyButton.tsx’;
mempalace graph
檢視與導出知識圖譜,追蹤知識演變並找出孤立記憶。
指令
# 檢視知識圖譜
mempalace graph [options]
# 導出知識圖譜
mempalace graph --export [options]
# 清理失效連結
mempalace graph --cleanup-broken
選項
| 選項 | 描述 | 預設值 |
|---|---|---|
| -r, –root | 根 Drawer ID | 無 |
| -d, –depth | 深度限制(預設無限制) | 無 |
| -w, –wing | 限定 Wing | 所有 Wings |
| –broken | 只顯示失效連結 (broken links) | false |
| –orphan | 只顯示孤立記憶 (無連結的 Drawers) | false |
| –format | 輸出格式(table/json/yaml/mermaid/dot/graphml) | table |
| –export | 匯出模式 | false |
| –output | 匯出檔案路徑 | stdout |
範例
檢視知識圖譜
# 檢視完整的知識圖譜
mempalace graph
Wing: d:/Repo/myproject
Rooms: 3, Drawers: 15
Room: api-design (5 Drawers)
Drawer: API 認證機制設計
Links:
[relates_to] → drawer-015 (安全設計 - 加密機制)
[extends_from] ← drawer-035 (權限設計 - 角色與權限模型)
Drawer: RESTful API 最佳實踐
Links:
[relates_to] → drawer-020 (基礎架構設計)
Room: architecture (4 Drawers)
Drawer: 基礎架構設計
Links:
[extends_from] ← drawer-025 (擴展架構 - 含高可用性)
[relates_to] → drawer-015 (安全設計 - 加密機制)
Room: database-schema (4 Drawers)
Drawer: PostgreSQL 關聯數據處理
Links:
[relates_to] → drawer-020 (基礎架構設計)
檢視關聯樹
# 以特定的 Drawer 為根,檢視其關聯樹
mempalace graph --root "drawer-020" --depth 2
Drawer: 基礎架構設計
extends_from → drawer-025: 擴展架構(高可用)
extends_from → drawer-030: 多區域部署設計
relates_to → drawer-015: 安全設計(加密機制)
extends_from → drawer-035: 權限設計(角色與權限)
relates_to → drawer-040: PostgreSQL 關聯數據處理
檢視孤立記憶
# 找出無連結的 Drawers
mempalace graph --orphan
Wing: d:/Repo/myproject
Orphan Drawers: 2
Room: api-design
Drawer: API 版本管理策略
Links: None (孤立)
Room: database-schema
Drawer: Redis 快取策略
Links: None (孤立)
檢視失效連結
# 列出所有失效連結 (標記為 broken)
mempalace graph --broken
Wing: d:/Repo/myproject
Broken Links: 2
Drawer: API 認證機制設計
[relates_to] → drawer-050 (舊報告 - 已刪除)
Status: broken
Reason: 該記憶已被刪除 (2026-07-16)
Drawer: PostgreSQL 關聯數據處理
[references_to] → drawer-055 (測試文件 - 已遷移)
Status: broken
Reason: 該記憶已被遷移至新位置 (2026-07-16)
導出知識圖譜
導出為 Mermaid (可渲染視覺化圖)
# 導出 Mermaid 格式
mempalace graph --export --format mermaid --output graph.mmd
# 輸出示例 (graph.mmd)
```mermaid
graph TD
drawer001("Claude Anthropic 4.5 模型能力概覽 (R)")
drawer005("Benchmark Report (R)")
drawer007("GPT-4o 對比 (R)")
drawer020("基礎架構設計 (O)")
drawer025("擴展架構 (O)")
drawer001 -->|"references_to"| drawer005
drawer001 -->|"relates_to"| drawer007
drawer020 -->|"extends_from"| drawer025
style drawer001 fill:#e1f5ff
style drawer005 fill:#ffe1e1
style drawer007 fill:#ffe1e1
style drawer020 fill:#e1ffe1
style drawer025 fill:#e1ffe1
### 導出為 DOT (Graphviz)
```bash
# 導出 DOT 格式 (可用 graphviz 渲染)
mempalace graph --export --format dot --output graph.dot
# 輸出示例 (graph.dot)
```dot
digraph knowledge_graph {
drawer001 [label="Claude Anthropic 4.5 模型能力概覽 (R)", shape=box, color=blue];
drawer005 [label="Benchmark Report (R)", shape=box, color=red];
drawer007 [label="GPT-4o 對比 (R)", shape=box, color=red];
drawer020 [label="基礎架構設計 (O)", shape=box, color=green];
drawer001 -> drawer005 [label="references_to"];
drawer001 -> drawer007 [label="relates_to"];
drawer020 -> drawer025 [label="extends_from"];
}
### 導出為 GraphML (Gephi 等工具支援)
```bash
# 導出 GraphML 格式
mempalace graph --export --format graphml --output graph.graphml
# 輸出示例 (graph.graphml)
```xml
<?xml version="1.0" encoding="UTF-8"?>
<graphml xmlns="..."><graph id="knowledge_graph">
<node id="drawer001" />
<node id="drawer005" />
<edge id="e1" source="drawer001" target="drawer005" label="references_to" />
<edge id="e2" source="drawer001" target="drawer007" label="relates_to" />
</graph></graphml>
### 導出為 JSON (自定義處理)
```bash
# 導出 JSON 格式 (便於程式化處理)
mempalace graph --export --format json --output graph.json
# 輸出示例 (graph.json)
```json
{
"nodes": [
{
"id": "drawer001",
"type": "observation",
"title": "Claude Anthropic 4.5 模型能力概覽"
},
{
"id": "drawer005",
"type": "reference",
"title": "Benchmark Report"
}
],
"links": [
{
"id": "rel-001",
"source": "drawer001",
"target": "drawer005",
"type": "references_to",
"weight": 1.0
}
]
}
## 清理失效連結
```bash
# 列出失效連結
mempalace graph --broken
# 移除失效連結(每個都需確認)
mempalace graph --cleanup-broken
Wing: d:/Repo/myproject
Broken Links: 2
Clean up drawer-050 links? [y/N] y
✓ Removed 1 broken link from drawer-010
Clean up drawer-055 links? [y/N] y
✓ Removed 1 broken link from drawer-040
✓ Cleaned up 2 broken links
檢視孤立記憶並關聯
# 找出孤立記憶
mempalace graph --orphan
# 使用 CLI 快速關聯孤立記憶
mempalace link \
--source "drawer-010-isolated" \
--target "drawer-020" \
--type "relates_to" \
--reason "都涉及 API 設計不同面向"
知識圖譜統計
# 檢視 Palace 的圖譜統計
mempalace graph --stats
Wing: d:/Repo/myproject
Rooms: 3
Drawers: 15
Links: 28
Graph Statistics:
Avg Links per Drawer: 1.87 (Target: 3-7) ⚠️ Consider linking orphan drawers
Highly Connected Drawers: 2 (7+ links)
- drawer-020: 9 links
Orphan Drawers: 2 (0 links) ⚠️
Broken Links: 0 ✅
Link Type Distribution:
references_to: 5 (18%)
relates_to: 18 (64%)
extends_from: 5 (18%)
視覺化建議
在 Markdown 中嵌入 Mermaid 圖譜
```mermaid
{{File:graph.mmd}}
### 在網站中嵌入 Graphviz
```html
<!-- 使用 Graphviz 或類似工具渲染 DOT 格式 -->
<div class="knowledge-graph">
<embed src="graph.svg" type="image/svg+xml" />
</div>
錯誤處理
# 根 Drawer 不存在
$ mempalace graph --root "missing-001"
✗ Root drawer not found: missing-001
# 導出目標檔案已存在
$ mempalace graph --export --format mermaid --output graph.mmd
✓ File already exists. Overwrite? [y/N] y
✓ Exported to graph.mmd
# 無導出格式
$ mempalace graph --export --format invalid
✗ Invalid format. Valid formats: table, json, yaml, mermaid, dot, graphml
最佳實踐
✅ 每月導出視覺化:快速識別孤立記憶與失效連結
✅ 平衡連結密度:每個 Drawer 的 Links 數量 3-7 個為佳
✅ 定期清理 broken links:每月執行 --cleanup-broken
✅ 視覺化知識演變:以 Mermaid 或 Graphviz 追蹤思想發展
❌ 避免過度連結:每個 Drawer 關聯 20+ 個其他 Drawers 會降低信噪比
❌ 避免孤立記憶:每月將孤立記憶與相關 Drawers 關聯
❌ 避免失效連結:刪除或遷移 Drawers 時同步更新 Links
相關指令
mempalace link- 建立連結mempalace unlink- 移除連結mempalace list-links- 列出連結