dsh-cwl: DeepSeek Harness 的結構化上下文驅逐方案

前言

在 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,旨在避免摘要帶來的損失性,同時保持上下文的結構完整性。

核心功能

  1. 自動 Episode 推斷:無需人工標註,自動將連續的相同類型工具批次合併爲語義 episodes。探索類操作爲 expl(如 grep/cat),有副作用操作爲 act(如 edit/write)。用戶消息會關閉當前 episode。
  2. 分級驅逐機制:當上下文壓力超過預算時,先執行內容截斷(content stubbing),再執行整 episode 驅逐。驅逐順序優先處理 expl,再處理 act。
  3. 保護機制:用戶消息永遠不會被驅逐,且驅逐操作作爲位置塊替換,不會破壞工具調用與結果的配對關係。
  4. 工具與觀測:
    • 提供 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 工具與觀測端點,開發者可以精確控制上下文的生命週期。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜