vscode nanobot

2026-07-23




# VS Code Copilot Chat vs Nanobot 記憶與對話壓縮機制比較報告

 

> 研究日期:2026-07-23

> 比較範圍:Context 管理、對話壓縮、記憶系統、Prompt 組裝

 

---

 

## 目錄

 

1. [架構總覽比較](#1-架構總覽比較)

2. [Context 組裝比較](#2-context-組裝比較)

3. [對話壓縮機制比較](#3-對話壓縮機制比較)

4. [記憶系統比較](#4-記憶系統比較)

5. [壓縮觸發策略比較](#5-壓縮觸發策略比較)

6. [摘要品質與保留策略比較](#6-摘要品質與保留策略比較)

7. [Fallback 與容錯比較](#7-fallback-與容錯比較)

8. [效能與延遲比較](#8-效能與延遲比較)

9. [可觀測性比較](#9-可觀測性比較)

10. [設定與控制比較](#10-設定與控制比較)

11. [交叉啟示與改善建議](#11-交叉啟示與改善建議)

12. [附錄:源碼對照](#12-附錄源碼對照)

 

---

 

## 1. 架構總覽比較

 

```mermaid

graph LR

    subgraph "VS Code Copilot Chat"

        V1["7 層 Context 組裝"]

        V2["Context Compaction<br/>(自動 + /compact 手動)"]

        V3["3-scope 記憶系統<br/>User/Session/Repo"]

        V4["Prompt Caching<br/>(供應商端)"]

        V5["Transcript 保留"]

    end

 

    subgraph "Nanobot"

        N1["ContextBuilder 組裝"]

        N2["Consolidator + AutoCompact<br/>(Token 驅動 + TTL 驅動)"]

        N3["Dream 兩階段記憶整併"]

        N4["GitStore 版控記憶"]

        N5["history.jsonl 持久化"]

    end

```

 

| 維度                    | VS Code Copilot Chat                         | Nanobot                                                  |

| ----------------------- | -------------------------------------------- | -------------------------------------------------------- |

| **定位**          | IDE 內嵌 AI 助手                             | 獨立自託管 Agent 框架                                    |

| **開發者**        | Microsoft                                    | HKUDS (開源)                                             |

| **語言**          | TypeScript (Node.js)                         | Python                                                   |

| **Context 管理**  | 7 層固定組裝                                 | ContextBuilder 模組化組裝                                |

| **壓縮核心**      | `SummarizedConversationHistory` (TSX 元件) | `Consolidator` + `AutoCompact` (Python class)        |

| **記憶持久化**    | Transcript (.jsonl) + Memory files           | history.jsonl + MEMORY.md + SOUL.md + USER.md + GitStore |

| **壓縮模型**      | 可用 Prism 專用 endpoint / 同對話模型        | 同 provider 的同一模型                                   |

| **摘要 Fallback** | Simple mode(文字化歷史)                    | raw_archive(原始 dump)                                 |

 

---

 

## 2. Context 組裝比較

 

### VS Code — 7 層固定架構

 

```mermaid

graph TB

    subgraph "VS Code Context 組裝"

        A["① System Instructions"]

        B["② Customizations<br/>AGENTS.md / .instructions.md / Skills"]

        C["③ User Message"]

        D["④ Conversation History"]

        E["⑤ Implicit Context<br/>活動檔案、選取、錯誤"]

        F["⑥ Explicit References<br/>#file / #codebase"]

        G["⑦ Tool Outputs"]

    end

```

 

### Nanobot — ContextBuilder 模組化架構

 

```mermaid

graph TB

    subgraph "Nanobot Context 組裝"

        N1["Identity<br/>agent/identity.md + platform_policy"]

        N2["Bootstrap Files<br/>AGENTS.md + SOUL.md + USER.md"]

        N3["Tool Contract<br/>agent/tool_contract.md"]

        N4["Memory Context<br/>MEMORY.md (長期記憶)"]

        N5["Active Skills<br/>always-on skills 全文 + 其他摘要"]

        N6["Recent History<br/>history.jsonl 最近 50 條<br/>(8K token cap)"]

        N7["Archived Summary<br/>前次壓縮摘要"]

        N8["Conversation History<br/>session.get_history()<br/>(max 120 msgs + token cap)"]

        N9["Runtime Context<br/>時間、channel、chat_id、goal state"]

        N10["User Message + Media"]

    end

```

 

### 詳細對照

 

| 組裝層                   | VS Code                               | Nanobot                                                      | 差異                                                           |

| ------------------------ | ------------------------------------- | ------------------------------------------------------------ | -------------------------------------------------------------- |

| **系統指令**       | 內建 System Instructions              | `agent/identity.md` + `platform_policy.md`               | Nanobot 用 Jinja2 模板可自訂                                   |

| **自訂指令**       | AGENTS.md / .instructions.md / Skills | AGENTS.md / SOUL.md / USER.md                                | Nanobot 多了 SOUL(行為規則)和 USER(使用者屬性)的 MECE 分離 |

| **記憶注入**       | User Memory 前 200 行自動載入         | MEMORY.md + Recent History(50 條 / 8K token cap)           | VS Code 全量注入;Nanobot 有 token cap 和條數上限              |

| **歷史回放**       | 完整歷史(直到 token 極限)           | `session.get_history(max_messages=120, max_tokens=budget)` | Nanobot 同時限制條數和 token 數;VS Code 只看 token            |

| **工具定義**       | 隨請求帶上(Full mode)               | `tool_contract.md` 摘要 + 實際 tool registry               | VS Code 全量帶 tool schema;Nanobot 帶合約摘要                 |

| **Runtime 元資料** | 不明確區分                            | `[Runtime Context]` 標籤包裹                               | Nanobot 明確標記非指令元資料,避免模型誤解為指令               |

| **摘要注入**       | Summary 取代舊歷史                    | `[Archived Context Summary]` 區段                          | 兩者做法類似,但 Nanobot 保留原始標籤                          |

| **圖片處理**       | 壓縮時替換為 placeholder              | `[image: path]` breadcrumb                                 | 類似策略,保持上下文可追溯                                     |

 

---

 

## 3. 對話壓縮機制比較

 

### VS Code Compaction 流程

 

```mermaid

sequenceDiagram

    participant User as 使用者

    participant VSCode as VS Code

    participant LLM as LLM (摘要)

    participant Transcript as Transcript (.jsonl)

 

    User->>VSCode: 送出訊息

    VSCode->>VSCode: 組裝 prompt,計算 token

    alt Context Window 已滿

        VSCode->>Transcript: 儲存完整對話

        VSCode->>LLM: 摘要請求(Full/Simple mode)

        LLM-->>VSCode: 摘要

        VSCode->>VSCode: 用摘要取代舊歷史

    end

    VSCode->>LLM: 精簡後 prompt

    LLM-->>VSCode: 回應

```

 

### Nanobot Consolidation 流程

 

```mermaid

sequenceDiagram

    participant User as 使用者/Channel

    participant Agent as AgentLoop

    participant Cons as Consolidator

    participant LLM as LLM (摘要)

    participant Hist as history.jsonl

 

    User->>Agent: 送出訊息

    Agent->>Agent: RESTORE → COMPACT

    Agent->>Cons: maybe_consolidate_by_tokens()

    Cons->>Cons: 估算 session prompt tokens

    alt Token 超出預算

        Cons->>Cons: pick_consolidation_boundary()

        Cons->>LLM: 摘要請求

        LLM-->>Cons: 摘要文字

        Cons->>Hist: append_history(摘要)

        Cons->>Cons: 更新 last_consolidated cursor

    end

    Agent->>Agent: BUILD → RUN

    Agent->>LLM: 完整 prompt

    LLM-->>Agent: 回應

```

 

### 核心差異對照

 

| 維度               | VS Code                             | Nanobot                                                   |

| ------------------ | ----------------------------------- | --------------------------------------------------------- |

| **壓縮粒度** | 以 tool call round 為單位           | 以 user-turn boundary 為單位                              |

| **壓縮判斷** | 歷史超出可用 token 預算即觸發       | 估算整個 prompt 是否超出`context_window_tokens * ratio` |

| **壓縮策略** | 一次性:整段舊歷史 → 摘要          | 迭代式:最多 5 輪,每輪移除一段直到低於目標               |

| **壓縮目標** | 騰出空間讓當前請求通過              | 降至`budget * consolidation_ratio`(預設 50%)          |

| **摘要模型** | 可走 Prism 專用 compaction endpoint | 同一 provider 同一模型                                    |

| **壓縮位置** | 在 render prompt 時(前端組裝階段) | 在 agent loop 的 BUILD 階段(後端處理階段)               |

| **摘要保留** | 直接取代歷史 + Transcript hint      | 摘要存入 history.jsonl +`_last_summary` metadata        |

| **多輪壓縮** | 每次壓縮產生一個 summary            | 迭代壓縮,每輪獨立摘要,最後一輪的摘要存入 metadata       |

 

---

 

## 4. 記憶系統比較

 

### VS Code — 3-scope 檔案式記憶

 

```mermaid

graph TB

    subgraph "VS Code 記憶系統"

        VU["User Memory<br/>/memories/<br/>前 200 行自動載入<br/>⚠️ 持續佔用 context"]

        VS["Session Memory<br/>/memories/session/<br/>僅列目錄"]

        VR["Repo Memory<br/>/memories/repo/<br/>僅列目錄"]

    end

```

 

### Nanobot — Dream 兩階段記憶整併

 

```mermaid

graph TB

    subgraph "Nanobot 記憶系統"

        N1["SOUL.md<br/>Agent 行為規則、guardrails<br/>工具使用策略"]

        N2["USER.md<br/>使用者屬性:偏好、習慣、溝通風格"]

        N3["MEMORY.md<br/>專案 context:架構、決策、基礎設施"]

        N4["history.jsonl<br/>對話歷史(append-only)"]

        N5["skills/NAME/SKILL.md<br/>可重用工作流模板"]

    end

 

    N1 --> D["Dream 整併引擎"]

    N2 --> D

    N3 --> D

    N4 --> D

    D --> N1

    D --> N2

    D --> N3

    D --> N5

```

 

### 詳細對照

 

| 維度                   | VS Code                                               | Nanobot                                                                      |

| ---------------------- | ----------------------------------------------------- | ---------------------------------------------------------------------------- |

| **Scope 數量**   | 3 (User / Session / Repo)                             | 4+ (SOUL / USER / MEMORY / Skills / history)                                 |

| **分類原則**     | 以「生命週期」分:跨 workspace / 單 session / 單 repo | 以「內容性質」分:行為 / 個人 / 專案 / 技能 (MECE)                           |

| **持久化格式**   | Markdown 檔案                                         | Markdown 檔案 + JSONL 歷史                                                   |

| **自動載入**     | User memory 前 200 行                                 | MEMORY.md 全文 + Recent History (50 條/8K cap)                               |

| **記憶品質控制** | 無自動整理,依賴使用者手動維護                        | **Dream 引擎**:LLM 驅動的自動 MECE 整併                               |

| **去重機制**     | 無                                                    | Dream 跨檔案去重,保留最特定副本                                             |

| **衰變規則**     | 無                                                    | Sprint 目標保留 30 天、架構決策永久、ephemeral 活躍時保留                    |

| **版控**         | 無                                                    | GitStore(SOUL.md / USER.md / MEMORY.md)                                    |

| **摘要標記**     | 無                                                    | SNIP 標記系統:[permanent] / [durable] / [ephemeral] / [correction] / [skip] |

 

### Dream 引擎 — Nanobot 獨有的記憶整併

 

Dream 是 Nanobot 最獨特的記憶機制,VS Code 沒有對應功能:

 

```mermaid

sequenceDiagram

    participant Cron as Cron 排程

    participant Dream as Dream 引擎

    participant LLM as LLM

    participant Memory as SOUL/USER/MEMORY.md

    participant History as history.jsonl

 

    Cron->>Dream: 觸發 Dream run

    Dream->>History: 讀取上次 dream_cursor 後的新條目

    Dream->>LLM: 送出 SNIP 分類請求

    LLM-->>Dream: 每條標記 [permanent/durable/ephemeral/correction/skip]

    Dream->>LLM: 送出記憶整併請求

    Note over LLM: 分析全部記憶檔<br/>執行 MECE 分類<br/>去重、刪除、遷移、新增

    LLM-->>Dream: 更新後的記憶檔內容

    Dream->>Memory: 更新 SOUL.md / USER.md / MEMORY.md

    Dream->>History: 更新 .dream_cursor

    Dream->>Dream: GitStore auto-commit

```

 

**Dream 的兩個階段**:

 

1. **Consolidator(對話壓縮)**:壓縮時用 SNIP 標記分類歷史條目

2. **Dream Run(記憶整併)**:排程觸發,LLM 驅動的跨檔案 MECE 重整

 

---

 

## 5. 壓縮觸發策略比較

 

### VS Code — 單一觸發點

 

```mermaid

graph TD

    A[組裝 prompt] --> B{Token 超出可用預算?}

    B -->|是| C[觸發 Compaction]

    B -->|否| D[直接送出]

    C --> E[產生摘要]

    E --> F[用摘要取代舊歷史]

    F --> D

```

 

### Nanobot — 雙路徑觸發

 

```mermaid

graph TD

    A[處理訊息] --> B[RESTORE 階段]

    B --> C[COMPACT 階段<br/>AutoCompact.prepare_session]

    C --> D[BUILD 階段<br/>Consolidator.maybe_consolidate_by_tokens]

 

    D --> E{估算 prompt tokens<br/>超出 input_token_budget?}

    E -->|是| F[迭代壓縮<br/>最多 5 輪]

    E -->|否| G[跳過壓縮]

 

    F --> H{降至 target 預算?}

    H -->|是| G

    H -->|否 / 無法再切| G

 

    subgraph "TTL 路徑(非同步)"

        I[AutoCompact.check_expired] --> J{Session 閒置<br/>超過 TTL?}

        J -->|是| K[compact_idle_session<br/>保留最近 8 則]

        J -->|否| L[跳過]

    end

```

 

| 維度               | VS Code                | Nanobot                                             |

| ------------------ | ---------------------- | --------------------------------------------------- |

| **觸發時機** | 組裝 prompt 時(同步) | Agent loop BUILD 階段(同步)+ 閒置 TTL(非同步)   |

| **觸發條件** | Token 預算溢出         | Token 估算超出預算**或** Session 閒置超過 TTL |

| **閒置壓縮** | ❌ 無                  | ✅ AutoCompact TTL-based                            |

| **手動觸發** | `/compact` 命令      | 無顯式命令,但可透過 session TTL 設定               |

| **壓縮鎖**   | 無(前端同步處理)     | asyncio.Lock 保護並發壓縮                           |

| **目標預算** | 騰出足夠空間           | 降至`budget × consolidation_ratio`(預設 50%)   |

 

---

 

## 6. 摘要品質與保留策略比較

 

### VS Code 摘要策略

 

```mermaid

graph TB

    subgraph "Full Mode"

        F1[帶上 tools schema]

        F2[tool_choice: 'none']

        F3[佔用 90% modelMaxPromptTokens - toolTokens]

        F4[用 ConversationHistory 元件渲染完整歷史]

    end

 

    subgraph "Simple Mode(Fallback)"

        S1[不帶 tools]

        S2[用 SimpleSummarizedHistory 文字化]

        S3[優先保留第一個 user message]

        S4[截斷過大的工具結果和參數]

    end

```

 

### Nanobot 摘要策略

 

```mermaid

graph TB

    subgraph "Consolidator.archive"

        C1[格式化訊息為文字]

        C2[截斷至 input_token_budget]

        C3[送 LLM 產生摘要]

        C4[摘要存入 history.jsonl]

        C5[SNIP 標記分類]

    end

 

    subgraph "raw_archive(Fallback)"

        R1[格式化訊息為文字]

        R2[截斷至 _RAW_ARCHIVE_MAX_CHARS]

        R3["直接寫入 history.jsonl<br/>附 RAW 標記"]

        R4["⚠️ WARNING: degraded"]

    end

```

 

| 維度                    | VS Code                                             | Nanobot                                                 |

| ----------------------- | --------------------------------------------------- | ------------------------------------------------------- |

| **摘要 prompt**   | 複雜:要求精確度、完整性、逐字準確性等 6 項品質指引 | 簡潔:SNIP 四準則 (Signal/Novel/Important/Persistent)   |

| **歷史渲染**      | 原始 message 格式(含 tool calls / reasoning)      | 文字化格式(`[timestamp] ROLE [tools: x]: content`)  |

| **工具結果處理**  | Full mode 保留;Simple mode 截斷                    | 全部文字化,截斷至 token budget                         |

| **保留策略**      | 最近 N 個 tool call rounds                          | 最近 N 個 user-turn boundary 之後的訊息                 |

| **Fallback 品質** | Simple mode 仍是 LLM 產出                           | raw_archive 只是原始 dump,無摘要                       |

| **保留最近訊息**  | 保留摘要後的所有新對話                              | TTL 壓縮保留最近 8 則;Token 壓縮保留 boundary 後的訊息 |

| **SNIP 分類**     | ❌ 無                                               | ✅ [permanent/durable/ephemeral/correction/skip]        |

 

---

 

## 7. Fallback 與容錯比較

 

| 故障情境                      | VS Code                                     | Nanobot                                                              |

| ----------------------------- | ------------------------------------------- | -------------------------------------------------------------------- |

| **摘要 LLM 失敗**       | Simple mode fallback(仍用 LLM)            | raw_archive fallback(直接 dump,不經 LLM)                          |

| **模型切換**            | 可能觸發 Simple mode(context window 變小) | Consolidator.set_provider() 更新參數,下次壓縮自動適配               |

| **Token 估算不準**      | 90% 預留作安全邊際                          | 1024 token safety buffer + consolidation_ratio                       |

| **壓縮中斷**            | Transcript 已完整儲存,下次重啟可恢復       | 已 archive 的部分寫入 history.jsonl,last_consolidated cursor 已更新 |

| **Concurrent 壓縮**     | 不適用(前端單線程)                        | asyncio.Lock 防止同一 session 並發壓縮                               |

| **Prism endpoint 失敗** | 自動 fallback 到 agent endpoint             | 不適用(無獨立 compaction endpoint)                                 |

 

---

 

## 8. 效能與延遲比較

 

| 維度                   | VS Code                        | Nanobot                                         |

| ---------------------- | ------------------------------ | ----------------------------------------------- |

| **壓縮延遲感知** | 使用者可感知(等待摘要生成)   | 使用者較不感知(BUILD 階段背景處理)            |

| **閒時壓縮**     | ❌ 僅在請求時壓縮              | ✅ AutoCompact TTL-based 閒時壓縮               |

| **Prompt Cache** | 壓縮會打破 prefix cache        | 不特別管理 cache(由 provider 端處理)          |

| **壓縮模型**     | Prism 可用便宜模型             | 使用同模型(成本較高)                          |

| **估算方式**     | 精確計算 token(provider API) | estimate_message_tokens 估算(字元/4 或更精確) |

 

---

 

## 9. 可觀測性比較

 

| 維度                      | VS Code                                        | Nanobot                                   |

| ------------------------- | ---------------------------------------------- | ----------------------------------------- |

| **Token 使用監控**  | ✅ Context Window 控制項(填充條、數字、分類) | ❌ 無 UI,僅 loguru 日誌                  |

| **壓縮事件通知**    | ✅ 明確通知使用者壓縮發生                      | ❌ 僅 debug/info 日誌                     |

| **Cache 分析**      | ✅ Cache Explorer 工具                         | ❌ 無                                     |

| **Transcript 查詢** | ✅ Agent 可用 read_file 讀取                   | ✅ history.jsonl 可查詢(cursor-based)   |

| **壓縮後回溯**      | ✅ Transcript hint 指引 agent 回查             | ✅ history.jsonl 保留原始內容 + SNIP 標記 |

 

---

 

## 10. 設定與控制比較

 

| 設定                          | VS Code                                            | Nanobot                                                           |

| ----------------------------- | -------------------------------------------------- | ----------------------------------------------------------------- |

| **啟用/停用壓縮**       | `chat.summarizeAgentConversationHistory.enabled` | `session_ttl_minutes`(設 0 停用 TTL 壓縮;token 壓縮不可停用) |

| **Context Window 大小** | 自動偵測模型上限                                   | `context_window_tokens`(設定檔)                               |

| **壓縮比例**            | 90% of modelMaxPromptTokens                        | `consolidation_ratio`(預設 0.5)                               |

| **歷史回放上限**        | 依 token budget 動態調整                           | `max_messages`(預設 120)                                      |

| **歷史 token 上限**     | 動態計算                                           | `_replay_token_budget()`                                        |

| **記憶注入上限**        | 前 200 行                                          | 50 條 / 8K token cap                                              |

| **閒置 TTL**            | ❌ 無                                              | `session_ttl_minutes`                                           |

| **壓縮迭代上限**        | 一次壓縮                                           | `_MAX_CONSOLIDATION_ROUNDS = 5`                                 |

| **檔案訊息上限**        | 無                                                 | `FILE_MAX_MESSAGES = 2000`                                      |

 

---

 

## 11. 交叉啟示與改善建議

 

### Nanobot 可借鑑 VS Code 的設計

 

```mermaid

graph LR

    subgraph "VS Code 優勢 → Nanobot 改善方向"

        A["Transcript Hint 機制"] --> A1["讓 agent 壓縮後<br/>能回查完整原始對話"]

        B["Context Window 控制項"] --> B1["mecui 加入<br/>token 使用量視覺化"]

        C["專用 Compaction Endpoint"] --> C1["Consolidator 可選用<br/>便宜/快速模型做摘要"]

        D["手動 /compact"] --> D1["WebUI 加入<br/>手動壓縮按鈕"]

        E["Prompt Cache 友善"] --> E1["壓縮時考慮<br/>prefix 穩定性"]

    end

```

 

| VS Code 特性                  | Nanobot 可如何採用                                               |

| ----------------------------- | ---------------------------------------------------------------- |

| **Transcript Hint**     | 壓縮摘要後附加歷史檔路徑 hint,讓 agent 知道可`read_file` 回查 |

| **Context Window UI**   | mecui 加 token 使用量填充條,讓使用者知道何時即將觸發壓縮        |

| **Compaction Endpoint** | Consolidator 支援`summarization_model` 設定,用便宜模型做摘要  |

| **手動 /compact**       | WebUI 加 "壓縮對話" 按鈕,讓使用者主動控制                       |

| **Prompt Cache 意識**   | 壓縮時保留 system prompt prefix 穩定性,減少 cache miss          |

 

### VS Code 可借鑑 Nanobot 的設計

 

```mermaid

graph LR

    subgraph "Nanobot 優勢 → VS Code 改善方向"

        A["Dream 記憶整併"] --> A1["自動去重、分類、<br/>衰變管理記憶"]

        B["MECE 分類"] --> B1["SOUL/USER/MEMORY<br/>性質分離"]

        C["SNIP 標記"] --> C1["摘要附帶<br/>保留優先順序標記"]

        D["TTL 閒時壓縮"] --> D1["長閒置 session<br/>自動瘦身"]

        E["GitStore 版控"] --> E1["記憶變更可追溯"]

    end

```

 

| Nanobot 特性           | VS Code 可如何採用                                            |

| ---------------------- | ------------------------------------------------------------- |

| **Dream 引擎**   | 加入定期記憶整併,自動去重、刪除過時內容                      |

| **MECE 分類**    | 將 copilot-instructions.md 拆分為「行為規則」和「使用者偏好」 |

| **SNIP 標記**    | 摘要產生時附帶 [durable/ephemeral] 標記,影響保留優先順序     |

| **TTL 閒時壓縮** | 長時間未使用的 session 自動壓縮,節省重新開啟時的 token 消耗  |

| **GitStore**     | 記憶檔案版本控制,可追溯修改歷史                              |

 

### 兩者共同可改善

 

| 改善方向                  | 說明                                                                                  |

| ------------------------- | ------------------------------------------------------------------------------------- |

| **壓縮感知度**      | 兩者都缺乏「壓縮前 vs 壓縮後」的資訊品質量化比較                                      |

| **多模型適配**      | 兩者在模型切換時的壓縮策略調整都較粗糙                                                |

| **摘要品質驗證**    | 兩者都缺乏自動化的摘要品質檢查(如:摘要是否遺漏關鍵決策)                            |

| **跨 session 記憶** | VS Code 的 memory 系統偏靜態;Nanobot 的 Dream 偏單一 workspace;都缺乏跨專案記憶整合 |

 

---

 

## 12. 附錄:源碼對照

 

| 功能                          | VS Code (TypeScript)                     | Nanobot (Python)                                      |

| ----------------------------- | ---------------------------------------- | ----------------------------------------------------- |

| **Context 組裝**        | `summarizedConversationHistory.tsx`    | `nanobot/agent/context.py` (ContextBuilder)         |

| **壓縮核心**            | `ConversationHistorySummarizer` (同上) | `nanobot/agent/memory.py` (Consolidator)            |

| **自動壓縮**            | Prompt render 時自動觸發                 | `nanobot/agent/autocompact.py` (AutoCompact)        |

| **閒時壓縮**            | ❌ 無                                    | `AutoCompact.check_expired()`                       |

| **手動壓縮**            | `/compact` 命令                        | ❌ 無顯式命令                                         |

| **摘要 fallback**       | `simpleSummarizedHistoryPrompt.tsx`    | `Consolidator.raw_archive()`                        |

| **Compaction endpoint** | `compactionEndpoint.ts`                | ❌ 無(用同模型)                                     |

| **記憶整併**            | ❌ 無                                    | `MemoryStore.build_dream_prompt()` + Dream template |

| **歷史持久化**          | Transcript (.jsonl)                      | `history.jsonl` + session JSON                      |

| **Session 管理**        | VS Code session                          | `nanobot/session/manager.py` (SessionManager)       |

| **Token 估算**          | Provider API 精確計算                    | `estimate_message_tokens()` 估算                    |

| **摘要 prompt 模板**    | 內嵌於 TSX                               | `templates/agent/consolidator_archive.md`           |

| **記憶分類模板**        | ❌ 無                                    | `templates/agent/dream.md`                          |

 

---

 

## 總結

 

| 維度                         | 勝出    | 原因                                                                   |

| ---------------------------- | ------- | ---------------------------------------------------------------------- |

| **Context 組裝靈活性** | Nanobot | 模組化 + Jinja2 模板可自訂;VS Code 7 層固定                           |

| **壓縮策略成熟度**     | VS Code | Full/Simple 雙模式 + Prism + Transcript Hint;Nanobot 僅有單一模式     |

| **壓縮策略完備性**     | Nanobot | Token 驅動 + TTL 驅動雙路徑 + 迭代式壓縮;VS Code 僅 Token 驅動        |

| **記憶系統深度**       | Nanobot | Dream 引擎 + MECE 分類 + SNIP 標記 + GitStore;VS Code 僅 3-scope 檔案 |

| **可觀測性**           | VS Code | Context Window 控制項 + Cache Explorer;Nanobot 僅日誌                 |

| **使用者控制**         | VS Code | `/compact` 手動觸發 + 設定開關;Nanobot 缺乏手動控制                 |

| **Fallback 品質**      | VS Code | Simple mode 仍經 LLM;Nanobot raw_archive 只是原始 dump                |

| **成本效率**           | VS Code | Prism 可用便宜模型做摘要;Nanobot 用同模型                             |

 

> **核心差異**:VS Code 的設計哲學是「**客戶端即時壓縮,讓使用者隨時能繼續對話**」,因此重視壓縮的可靠性和可觀測性;Nanobot 的設計哲學是「**服務端持續運行的自主 Agent**」,因此重視記憶的長期品質(Dream)和閒時自動瘦身(AutoCompact)。兩者各有擅場,交叉借鑑可讓雙方都更完善。

 







Login to like - 0 Likes



Comments...


No Comments Yet...



Add Comment...



shumin

A graduated biotechnology engineer. Now is a software engineer


Latest Posts



Footer with Icons