Theme / v3.9.0

MemPalace

本地優先的 AI 記憶宮殿

指令詳解

mempalace graph

檢視與導出知識圖譜,追蹤知識演變並找出孤立記憶。

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 - 列出連結