前言¶
在 DeepSeek Harness (DSH) 的開發與運維中,上下文窗口的長期壓力是長期會話面臨的常見問題。傳統應對方案通常依賴 LLM 進行摘要壓縮,但這會帶來四個結構性問題:不可預測的損失性、結構破壞(因果鏈坍塌爲 prose)、阻塞成本(在任務中途觸發全量 LLM 調用)以及壓縮誘導的幻覺。
針對這些問題,dsh-cwl 提供了一種替代方案:基於 Context Window Lifecycle (CWL) 的結構化上下文驅逐。
這是什麼¶
dsh-cwl 是 DeepSeek Harness 的一個插件,由 kalifun 維護。它通過將智能體軌跡推斷爲類型化的 episode graph(探索 expl / 動作 act),並在上下文壓力超過預算時,執行零 LLM、確定性的分級驅逐策略。
其核心設計理念基於論文 Beyond Compaction: Structured Context Eviction for Long-Horizon Agents,旨在避免摘要帶來的損失性,同時保持上下文的結構完整性。
核心功能¶
- 自動 Episode 推斷:無需人工標註,自動將連續的相同類型工具批次合併爲語義 episodes。探索類操作爲
expl(如 grep/cat),有副作用操作爲act(如 edit/write)。用戶消息會關閉當前 episode。 - 分級驅逐機制:當上下文壓力超過預算時,先執行內容截斷(content stubbing),再執行整 episode 驅逐。驅逐順序優先處理
expl,再處理act。 - 保護機制:用戶消息永遠不會被驅逐,且驅逐操作作爲位置塊替換,不會破壞工具調用與結果的配對關係。
- 工具與觀測:
- 提供
cwl_recall工具,用於按需讀取被驅逐文件的路徑。 - 提供 API 端點
/api/cwl/evictions查看驅逐日誌,以及/api/cwl/force強制執行一次驅逐。
- 提供
安裝與啓用¶
安裝前請確保已安裝 DeepSeek Harness 並配置好 Profile。
dsh plugin --profile <name> add github:kalifun/dsh-cwl
插件依賴以下環境要求:
* Node.js: ^22.19.0 || >=24.0.0
* Peer Dependencies: @deepseek-ai/cordis, @deepseek-ai/dsh-compaction, @deepseek-ai/dsh-token-meter
典型用法¶
基礎運行¶
默認情況下,插件在上下文壓力未超過 80% 預算時保持靜止,僅在壓力超標時開始驅逐。
配置調整¶
通過環境變量調整驅逐策略與預算:
# 設置自定義預算(tokens)
DSH_CWL_BUDGET=30000 dsh web
# 設置驅逐順序爲 oldest(從舊到新)
DSH_CWL_EVICT_ORDER=oldest DSH_CWL_EVICT_BATCH=0 dsh web
# 調整 stub 粗細(默認 1500 字符)
DSH_CWL_STRIP_THRESHOLD=1000 dsh web
驗證與調試¶
# 運行驗證檢查
node check.js
# 運行會話分析
node tools/analyze-session.mjs <session.l>
適用場景與注意¶
dsh-cwl 適合需要處理長跨度對話、依賴上下文重放驗證的場景。由於插件以當前 dsh 進程權限運行,建議在安裝前檢查源碼與許可證。
總結¶
dsh-cwl 通過結構化驅逐替代了傳統的 LLM 摘要壓縮,解決了上下文管理中的確定性缺失與結構破壞問題。配合 cwl_recall 工具與觀測端點,開發者可以精確控制上下文的生命週期。