前言¶
DeepSeek Harness(DSH)的對話越久,上下文裏堆疊的內容越容易失控。工具輸出(尤其是錯誤日誌)和重複的中間結果往往會佔據絕大部分 token,而真正關鍵的決策和正在進行的任務則被淹沒其中。一旦觸發壓縮,這些關鍵信息可能連同垃圾一起被概括成模糊的摘要。
dsh-context-maid 旨在解決這一問題。它接管 DSH 的上下文壓縮與瘦身流程,將“垃圾清理”與“重要內容保護”分離。它會在壓縮前先將值得保留的內容歸檔,再對工具輸出進行感知式瘦身,並確保高權威的“釘扎”事實不會被誤刪。
插件概況¶
- 名稱:dsh-context-maid
- 定位:DeepSeek Harness 自動上下文策展插件
- 核心價值:Tool 輸出內容感知瘦身 + 無效日誌清理 + 工作流/記憶釘扎保護 + 先歸檔後壓縮 + 摘要模型可配
- 維護者:Icstick
- 分類:記憶
- 開源協議:MIT License
核心功能¶
dsh-context-maid 通過繼承並註冊 DSH 的官方服務來實現功能覆蓋:
- 接管官方壓縮:繼承
BasicCompactionEngine並註冊爲ctx.compaction。官方的pressure、overflow、manual三路觸發邏輯完全保留,但閾值通過映射機制由用戶控制。 - 壓縮摘要增強:在摺疊摘要前,會將高權威的 PIN(釘扎)事實注入摘要指令中。摘要模型可配置(支持便宜模型、本地模型或智能路由),若未配置則跟隨對話模型。
- Tool 輸出瘦身:繼承
ToolResultPruner註冊爲ctx.toolResultPruner。開啓eventSlim(默認開啓)後,每次 step 前會對新增的超預算 tool 結果進行增量瘦身(保留頭尾、錯誤留尾、JSON 留骨架)。 - 垃圾清掃:基於確定性模型識別重複讀取、失敗後重試等無效事件,生成無 LLM 的 stub 節點進行清理。默認關閉,需在配置中開啓。
- 先歸檔後壓縮:摺疊摘要會先經過 ACP(Agent Composition Protocol)ledger 歸檔,標記爲普通 observation,確保重要內容不隨壓縮消失。
- 可觀測性:插件提供審計日誌,記錄每一次壓縮(fold)、瘦身(slim)和清掃(sweep)的操作。通過
/context-maid status命令可查看引擎狀態、閾值配置、PIN 校驗分佈及摺疊深度。
安裝與啓用¶
通過 CLI 直接添加插件:
dsh plugin --profile <name> add github:Icstick/dsh-context-maid
安裝完成後,必須在 cordis.patch.yml 中禁用官方的默認引擎,否則 maid 無法正常接管服務。
在 profile 的 cordis.patch.yml 中添加以下配置:
- id: compaction-basic
disabled: true
- id: tool-result-pruner
disabled: true
- id: context-maid
name: dsh-context-maid
config:
auditDir: C:\path\to\context-maid
trigger.userRatio: 0.4
注意:
* 在 Windows 環境下,pnpm install 前必須先停止 DSH 進程,否則會遇到 native DLL 鎖的問題。
* 如果 status 顯示 BasicCompactionEngine,說明官方引擎未被禁用,需檢查第 3 步的配置。
配置項¶
| 配置鍵 | 默認值 | 說明 |
|---|---|---|
trigger.userRatio |
0.4 | 上下文閾值(佔模型窗口比例),映射官方 thresholdRatio。 |
trigger.eventSlim |
true | 開啓後,step 邊界對新增超預算 tool 結果進行增量瘦身。 |
slim.thresholdChars |
4000 | 觸發內容感知瘦身的字符數閾值。 |
slim.headChars / slim.tailChars |
800 / 800 | 瘦身時保留的頭尾字符數。 |
sweep.enabled / sweep.aggressive |
false / false | 是否開啓垃圾清掃(默認關閉)。 |
fold.retainRatio |
0.16 | 壓縮後保留的尾段比例。 |
fold.verify.enabled |
true | 是否開啓摺疊後約束校驗(默認只告警,不阻塞)。 |
pin.enabled |
true | 是否開啓 PIN 事實的軟保護。 |
archive.enabled |
true | 是否開啓先歸檔後壓縮。 |
summarization.provider / summarization.model |
’’ / ‘’ | 自定義摘要模型(留空則使用對話模型)。 |
auditDir |
$DSH_HOME/context-maid |
審計日誌目錄。 |
使用示例¶
在對話中輸入 /context-maid status,應能看到以下輸出內容:
engine: ctx.compaction = MaidCompactionEngine(maid 提供,閾值映射生效)
注意事項¶
- 依賴衝突:必須禁用官方的
compaction-basic和tool-result-pruner。DSH 的 cordis 服務同一 key 只能有一個提供者,禁用官方服務是 maid 接管的前提。 - 校驗邏輯:摺疊後的約束校驗目前只比對摘要正文中的字面錨點,不讀取摺疊後的
session surface。這意味着它無法檢測“約束雖然還在上下文中但不在摘要裏”的情況。 - 默認行爲:校驗結論默認只告警,不阻塞摺疊。將
fold.verify.enabled設爲false會關閉校驗與留痕,但不改變摺疊行爲。 - 版本兼容:請確保使用兼容的 DSH 版本(peerDependencies 中要求的範圍)。