安裝與快速開始
學完你能做什麼
- ✅ 在 5 分鐘內完成 DCP 外掛安裝
- ✅ 配置外掛並驗證安裝成功
- ✅ 看到首次自動修剪的效果
你現在的困境
用 OpenCode 久了,對話越來越長:
- AI 重複讀取同一個檔案多次
- 工具呼叫的錯誤訊息佔滿上下文
- 每次對話都要消耗大量 Token
- 對話越長,AI 響應越慢
你希望能自動清理對話中的冗餘內容,但不想手動操作。
核心思路
DCP(Dynamic Context Pruning) 是 OpenCode 外掛,自動移除對話歷史中的冗餘工具呼叫,降低 Token 消耗。
它的工作方式:
- 自動檢測:每次傳送訊息前,自動分析對話歷史
- 智慧清理:移除重複的工具呼叫、過期錯誤、被覆蓋的寫入
- AI 驅動:AI 可以主動呼叫
discard和extract工具優化上下文 - 透明可控:透過
/dcp指令查看修剪統計,手動觸發清理
核心優勢
- 零成本:自動策略無需 LLM 呼叫
- 零配置:安裝即用,預設配置已優化
- 零風險:只修改傳送給 LLM 的上下文,對話歷史不受影響
🎒 開始前的準備
開始安裝前,請確認:
- [ ] 已安裝 OpenCode(支援外掛功能)
- [ ] 知道如何編輯 OpenCode 配置檔案
- [ ] 了解基本的 JSONC 語法(支援註解的 JSON)
重要提示
DCP 會修改傳送給 LLM 的上下文內容,但不會影響你的對話歷史。你可以隨時在配置中停用外掛。
跟我做
第 1 步:編輯 OpenCode 配置檔案
為什麼 需要在 OpenCode 配置中宣告 DCP 外掛,這樣 OpenCode 啟動時會自動載入。
開啟你的 OpenCode 配置檔案 opencode.jsonc,在 plugin 欄位中新增 DCP:
// 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 會在首次執行時自動建立配置檔案:
# 查看全域配置檔案
cat ~/.config/opencode/dcp.jsonc你應該看到:配置檔案已建立,初始只包含 $schema 欄位:
{
"$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 多次讀取同一個檔案,或執行一些會失敗的工具呼叫。
你應該看到:
- 每次傳送訊息時,DCP 會自動分析對話歷史
- 如果有重複的工具呼叫,DCP 會自動清理
- 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 未重新啟動或配置檔案路徑錯誤
解決:
- 完全關閉 OpenCode 後重新啟動
- 檢查
opencode.jsonc位置是否正確 - 查看日誌:
~/.config/opencode/logs/dcp/daily/目錄下的日誌檔案
問題 2:配置檔案未建立
症狀:~/.config/opencode/dcp.jsonc 不存在
原因:OpenCode 未呼叫 DCP 外掛或配置目錄權限問題
解決:
- 確認 OpenCode 已重新啟動
- 手動建立配置目錄:
mkdir -p ~/.config/opencode - 在
opencode.jsonc中檢查外掛名稱是否正確:@tarquinen/opencode-dcp@latest
問題 3:修剪通知不顯示
症狀:沒有看到修剪通知,但 /dcp stats 顯示有修剪
原因:pruneNotification 配置為 "off" 或 "minimal"
解決:修改配置檔案:
"pruneNotification": "detailed" // 或 "minimal"本課小結
DCP 外掛安裝非常簡單:
- 在
opencode.jsonc中新增外掛 - 重新啟動 OpenCode
- 使用
/dcp指令驗證安裝 - 預設配置即可使用,無需額外調整
DCP 預設啟用的功能:
- ✅ 自動去重策略(移除重複工具呼叫)
- ✅ 清除錯誤策略(清理過期錯誤輸入)
- ✅ AI 驅動工具(
discard和extract) - ✅ 詳細修剪通知
下一步:了解如何自訂配置,調整修剪策略以滿足不同場景需求。
下一課預告
下一課我們學習 配置全解
你會學到:
- 多層級配置系統(全域、環境變數、專案級)
- 所有配置項的作用和推薦設定
- 回合保護、受保護工具、受保護檔案模式
- 如何啟用/停用不同的修剪策略
附錄:原始碼參考
點擊展開查看原始碼位置
更新時間:2026-01-23
| 功能 | 檔案路徑 | 行號 |
|---|---|---|
| 外掛入口 | index.ts | 12-102 |
| 配置管理 | lib/config.ts | 669-794 |
| 指令處理 | lib/commands/help.ts | 1-40 |
| Token 計算 | lib/commands/context.ts | 68-174 |
關鍵常數:
MAX_TOOL_CACHE_SIZE = 1000:工具快取最大條目數
關鍵函數:
Plugin():外掛註冊和鉤子設定getConfig():載入和合併多層級配置handleContextCommand():分析目前會話 Token 使用