前言¶
DeepSeek Harness (DSH) 採用插件化架構,旨在構建靈活的智能體工作流。在長對話場景下,上下文往往會因爲重複信息、過時內容或錯誤結果而膨脹,導致 token 預算被浪費,甚至觸發上下文溢出。context-pruner 是一個針對 DSH 的會話上下文分診插件,它通過啓發式規則自動識別並處理過時、重複、失敗及過大的上下文內容,以節省 token 預算並控制上下文膨脹。
核心功能¶
該插件的核心特性在於其確定性處理機制和靈活的配置策略。
-
確定性,零模型依賴
所有判斷和重寫均基於啓發式規則,不依賴 LLM 調用或其他外部服務。這意味着行爲是可預測的,且可以在離線環境下進行測試。 -
五個獨立可切換的篩查器
插件內置五種獨立的上下文篩查機制:- 過時輸出 (
staleOutput):對於在最新用戶消息之後超過 N 輪且結果仍完整的工具調用對,將其重寫爲存檔摘要並移除結果塊。 - 重複調用 (
repeatedCall):檢測工具名稱和參數完全相同的調用(JSON 鍵順序不影響匹配),僅保留最新的調用,移除舊的調用對。 - 失敗調用 (
failedCall):針對過時的錯誤結果,將輸入參數替換爲失敗存根(防止信息泄漏並節省空間),保留並修剪錯誤文本。 - 超大塊 (
oversizedBlock):當工具結果文本超過字符上限時,保留頭部和尾部,中間標註省略數量。 - 過時推理 (
staleReasoning):對於超出保留輪次的推理塊,在保留區域僅修剪長度,在非保留區域直接移除。
- 過時輸出 (
-
保留區域與免疫列表
- 保留區域 (
reserve):最近 N 輪用戶對話的內容永遠不會被處理,避免干擾模型正在使用的上下文。 - 免疫列表 (
exempt):通過二維配置(工具名和文件路徑通配符)保護狀態化工具(如task、skill、todowrite等)不被誤刪。
- 保留區域 (
-
審計報告與壓縮集成
每次分診都會輸出結構化的統計報告(包括計數、節省量、壓縮範圍等)。插件原生實現ctx.compaction接口,與 DSH 的壓縮機制無縫集成,支持自動壓力、上下文溢出、手動及強制區域壓縮。
安裝與啓用¶
插件通過 dsh.bundle.patch 打包分發,支持多種安裝方式。
- 從 GitHub 安裝
使用官方倉庫地址進行安裝:
dsh plugin --profile demo add github:JohnXu22786/context-pruner
- 本地掛載
推薦方式,將本地目錄掛載到指定 profile:
dsh plugin --profile web add link:/absolute/path/context-pruner
- Git 源安裝
從 Git 倉庫安裝並指定分支:
dsh plugin --profile web add "github:your-repo/context-pruner#main"
安裝後,通過以下命令檢查配置是否生效:
dsh --profile web --dump-config
典型用法¶
插件提供了模型可見的工具和人類命令兩種交互方式。
-
通過
/triage命令
這是人類命令行接口,直接輸出審計報告並應用有價值的處理。 -
通過
triage_history工具
這是模型可見的擴展點,模型可以調用該工具執行分診並獲取審計報告。如果設置了dryRun: false且存在值得處理的內容,會直接應用處理。 -
配置示例
在cordis.patch.yml中,可以覆蓋默認配置以調整保留輪數或啓用特定篩查器:
- insert:
id: context-triage
name: dsh-context-triage
config:
budget:
contextTokens: 200000
softRatio: 0.6
screeners:
staleOutput: { turns: 5 }
staleReasoning: { enabled: false }
exempt:
tools: [task, skill, write, edit]
適用場景與注意¶
-
適用場景
適用於需要維持長對話上下文且對 token 消耗敏感的場景。插件特別適合處理日誌記錄、長時間運行的批處理任務或需要大量文件讀取的智能體工作流。 -
重要限制
- 單一壓縮提供者:
ctx.compaction允許每個上下文只有一個提供者。如果當前 profile 已加載其他壓縮實現(如內置基礎壓縮後端),必須通過 patch 將其中一個禁用(disabled: true),兩者不能共存。 - 權限與來源:插件以當前 DSH 進程權限運行。在安裝前,建議檢查 GitHub 源碼與許可證。
- 單一壓縮提供者:
總結¶
context-pruner 是一個專注於上下文管理的 DSH 插件,它通過啓發式規則實現零模型依賴的上下文分診。對於希望自動管理長會話上下文膨脹的開發者,它提供了一個可靠且可審計的解決方案。
- 插件目錄: https://www.skillhub.cn/plugins/JohnXu22786/context-pruner
- GitHub 倉庫: https://github.com/JohnXu22786/context-pruner