Skip to content

安裝與快速開始

學完你能做什麼

  • ✅ 在 5 分鐘內完成 DCP 外掛安裝
  • ✅ 配置外掛並驗證安裝成功
  • ✅ 看到首次自動修剪的效果

你現在的困境

用 OpenCode 久了,對話越來越長:

  • AI 重複讀取同一個檔案多次
  • 工具呼叫的錯誤訊息佔滿上下文
  • 每次對話都要消耗大量 Token
  • 對話越長,AI 響應越慢

你希望能自動清理對話中的冗餘內容,但不想手動操作。

核心思路

DCP(Dynamic Context Pruning) 是 OpenCode 外掛,自動移除對話歷史中的冗餘工具呼叫,降低 Token 消耗。

它的工作方式:

  1. 自動檢測:每次傳送訊息前,自動分析對話歷史
  2. 智慧清理:移除重複的工具呼叫、過期錯誤、被覆蓋的寫入
  3. AI 驅動:AI 可以主動呼叫 discardextract 工具優化上下文
  4. 透明可控:透過 /dcp 指令查看修剪統計,手動觸發清理

核心優勢

  • 零成本:自動策略無需 LLM 呼叫
  • 零配置:安裝即用,預設配置已優化
  • 零風險:只修改傳送給 LLM 的上下文,對話歷史不受影響

🎒 開始前的準備

開始安裝前,請確認:

  • [ ] 已安裝 OpenCode(支援外掛功能)
  • [ ] 知道如何編輯 OpenCode 配置檔案
  • [ ] 了解基本的 JSONC 語法(支援註解的 JSON)

重要提示

DCP 會修改傳送給 LLM 的上下文內容,但不會影響你的對話歷史。你可以隨時在配置中停用外掛。

跟我做

第 1 步:編輯 OpenCode 配置檔案

為什麼 需要在 OpenCode 配置中宣告 DCP 外掛,這樣 OpenCode 啟動時會自動載入。

開啟你的 OpenCode 配置檔案 opencode.jsonc,在 plugin 欄位中新增 DCP:

jsonc
// opencode.jsonc
{
    "plugin": ["@tarquinen/opencode-dcp@latest"],
}

你應該看到:配置檔案中已經有其他外掛(如果有),在陣列末尾新增 DCP 即可。

提示

使用 @latest 標籤,OpenCode 每次啟動時會自動檢查並取得最新版本。

第 2 步:重新啟動 OpenCode

為什麼 外掛配置修改後需要重新啟動才能生效。

完全關閉 OpenCode,然後重新啟動。

你應該看到:OpenCode 正常啟動,沒有報錯訊息。

第 3 步:驗證外掛安裝

為什麼 確認 DCP 外掛已正確載入,並查看預設配置。

在 OpenCode 對話中輸入:

/dcp

你應該看到:DCP 指令說明資訊,說明外掛已成功安裝。

╭───────────────────────────────────────────────────────────╮
│                      DCP Commands                         │
╰───────────────────────────────────────────────────────────╯

  /dcp context      Show token usage breakdown for current session
  /dcp stats        Show DCP pruning statistics
  /dcp sweep [n]    Prune tools since last user message, or last n tools

第 4 步:查看預設配置

為什麼 了解 DCP 的預設配置,確認外掛是否按預期工作。

DCP 會在首次執行時自動建立配置檔案:

bash
# 查看全域配置檔案
cat ~/.config/opencode/dcp.jsonc

你應該看到:配置檔案已建立,初始只包含 $schema 欄位:

jsonc
{
    "$schema": "https://raw.githubusercontent.com/Opencode-DCP/opencode-dynamic-context-pruning/master/dcp.schema.json"
}

配置檔案初始只包含 $schema 欄位,其他所有配置項使用程式碼中的預設值,無需手動配置即可使用。

預設配置說明

DCP 的程式碼預設值如下(無需寫入配置檔案):

  • deduplication:自動去重,移除重複的工具呼叫
  • purgeErrors:自動清理 4 回合前的錯誤工具輸入
  • discard/extract:AI 可呼叫的修剪工具
  • pruneNotification:顯示詳細修剪通知

如果你需要自訂配置,可以手動新增這些欄位。詳細配置說明見配置全解

第 5 步:體驗自動修剪效果

為什麼 實際使用 DCP,查看自動修剪的效果。

在 OpenCode 中進行一段對話,讓 AI 多次讀取同一個檔案,或執行一些會失敗的工具呼叫。

你應該看到

  1. 每次傳送訊息時,DCP 會自動分析對話歷史
  2. 如果有重複的工具呼叫,DCP 會自動清理
  3. AI 響應後,可能會看到修剪通知(取決於 pruneNotification 配置)

範例修剪通知:

▣ DCP | ~12.5K tokens saved total

▣ Pruning (~12.5K tokens)
→ read: src/config.ts
→ write: package.json

輸入 /dcp context 查看目前會話的 Token 使用情況:

Session Context Breakdown:
─────────────────────────────────────────────────────────

System         15.2% │████████████████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│  25.1K tokens
User            5.1% │████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│   8.4K tokens
Assistant       35.8% │██████████████████████████████████████▒▒▒▒▒▒▒│  59.2K tokens
Tools (45)      43.9% │████████████████████████████████████████████████│  72.6K tokens

─────────────────────────────────────────────────────────

Summary:
  Pruned:          12 tools (~15.2K tokens)
  Current context: ~165.3K tokens
  Without DCP:     ~180.5K tokens

檢查點 ✅

完成以上步驟後,你應該:

  • [ ] 已在 opencode.jsonc 中新增 DCP 外掛
  • [ ] OpenCode 重新啟動後能正常執行
  • [ ] /dcp 指令顯示說明資訊
  • [ ] 配置檔案 ~/.config/opencode/dcp.jsonc 已建立
  • [ ] 對話中能看到修剪通知或透過 /dcp context 看到修剪統計

如果某一步失敗

  • 檢查 opencode.jsonc 語法是否正確(JSONC 格式)
  • 查看 OpenCode 日誌是否有外掛載入錯誤
  • 確認 OpenCode 版本支援外掛功能

踩坑提醒

問題 1:外掛未生效

症狀:配置已新增但看不到修剪效果

原因:OpenCode 未重新啟動或配置檔案路徑錯誤

解決

  1. 完全關閉 OpenCode 後重新啟動
  2. 檢查 opencode.jsonc 位置是否正確
  3. 查看日誌:~/.config/opencode/logs/dcp/daily/ 目錄下的日誌檔案

問題 2:配置檔案未建立

症狀~/.config/opencode/dcp.jsonc 不存在

原因:OpenCode 未呼叫 DCP 外掛或配置目錄權限問題

解決

  1. 確認 OpenCode 已重新啟動
  2. 手動建立配置目錄:mkdir -p ~/.config/opencode
  3. opencode.jsonc 中檢查外掛名稱是否正確:@tarquinen/opencode-dcp@latest

問題 3:修剪通知不顯示

症狀:沒有看到修剪通知,但 /dcp stats 顯示有修剪

原因pruneNotification 配置為 "off""minimal"

解決:修改配置檔案:

jsonc
"pruneNotification": "detailed"  // 或 "minimal"

本課小結

DCP 外掛安裝非常簡單:

  1. opencode.jsonc 中新增外掛
  2. 重新啟動 OpenCode
  3. 使用 /dcp 指令驗證安裝
  4. 預設配置即可使用,無需額外調整

DCP 預設啟用的功能

  • ✅ 自動去重策略(移除重複工具呼叫)
  • ✅ 清除錯誤策略(清理過期錯誤輸入)
  • ✅ AI 驅動工具(discardextract
  • ✅ 詳細修剪通知

下一步:了解如何自訂配置,調整修剪策略以滿足不同場景需求。


下一課預告

下一課我們學習 配置全解

你會學到:

  • 多層級配置系統(全域、環境變數、專案級)
  • 所有配置項的作用和推薦設定
  • 回合保護、受保護工具、受保護檔案模式
  • 如何啟用/停用不同的修剪策略

附錄:原始碼參考

點擊展開查看原始碼位置

更新時間:2026-01-23

功能檔案路徑行號
外掛入口index.ts12-102
配置管理lib/config.ts669-794
指令處理lib/commands/help.ts1-40
Token 計算lib/commands/context.ts68-174

關鍵常數

  • MAX_TOOL_CACHE_SIZE = 1000:工具快取最大條目數

關鍵函數

  • Plugin():外掛註冊和鉤子設定
  • getConfig():載入和合併多層級配置
  • handleContextCommand():分析目前會話 Token 使用