dsh-compaction-micro:DeepSeek Harness 的微清理層

前言

DeepSeek Harness (DSH) 的上下文壓縮層主要負責管理對話上下文。其中的 dsh-compaction-basic 負責對工具結果進行總結,這是一個調用昂貴模型的過程。如果上下文溢出但壓力尚未達到總結閾值,直接總結往往是不必要的開銷。dsh-compaction-micro 插件旨在填補這一空缺,它作爲一個獨立的“微清理層”,在官方總結層之前,將白名單內的可重運行工具結果替換爲佔位符,從而在不調用模型的情況下快速釋放 Token 空間。

它是什麼

這是一個爲 DeepSeek Harness 壓縮流程設計的微型清理層。它遵循觀察者模式:不修改模型請求,不發起模型調用,僅通過替換 tool/result 內容來觸發壓縮事件。每次重寫操作都會伴隨一個 compaction/prune 事件,確保持久化日誌仍作爲可重構的事實來源。

  • 所有者:Perfirstvito
  • 許可證:MIT
  • 定位:在官方總結層之前介入的預壓縮層。

安裝與啓用

安裝該插件需要使用本地鏈接的方式。在插件目錄下執行以下命令:

dsh plugin --profile headless add link:<this-dir>

配置說明

該插件通過配置項控制清理行爲。以下是核心配置項:

字段 默認值 說明
clearableTools [] 允許被清理的工具白名單。僅限只讀、可重運行工具(如 read, glob, grep)。留空則禁用該層。
retainRecent 3 保留最新的 N 個可清理結果在上下文中可見。
microThresholdRatio 0.85 清理觸發的閾值比例。當 Token 佔用超過 (contextWindow - reservedTokens) * 0.85 時觸發。
reservedTokens 0 從有效上下文窗口中預先扣除的 Token 數量。
auto true 是否自動安裝監聽器。設爲 false 時僅暴露 ctx.microCompaction.clearSession()。

使用示例

通常需要將此插件掛載在 dsh-compaction-basic 之前。在 DSH 的插件配置中,建議按以下順序排列:

- name: '@deepseek-ai/dsh-token-meter'
- name: '@deepseek-ai/dsh-compaction-tool-result-pruner'
- name: '@deepseek-ai/dsh-compaction-basic'
  config:
    thresholdRatio: 0.9
- name: 'dsh-compaction-micro'
  config:
    clearableTools: [read, glob, grep, web_search, web_fetch]
    retainRecent: 3
    microThresholdRatio: 0.85
    reservedTokens: 0

工作原理

插件通過兩個前置監聽器工作:

  1. agent/pre-step (prepend):

    • 監聽並測量上下文壓力。
    • 當 totalTokens 達到閾值(即 (contextWindow - reservedTokens) × microThresholdRatio)時,按從舊到新的順序清除白名單工具結果,但始終保留最近 retainRecent 個結果可見。
    • 清理後,底層會重新測量,若壓力已緩解,則跳過昂貴的總結步驟。
  2. agent/request-error (prepend):

    • 當確認發生上下文溢出時,優先執行清理操作。
    • 清理完成後,再將控制權委託給官方的後端修剪、總結及重試流程。

注意事項

  • 掛載順序:雖然監聽器設置了 prepend: true,但爲了確保邏輯順序正確,建議將 dsh-compaction-micro bundle 掛載在 dsh-compaction-basic 之前。
  • 工具安全:該插件僅對只讀、可重運行工具(如讀取文件、搜索內容)安全。寫操作、編輯、Shell 調用等工具必須從 clearableTools 白名單中移除,否則可能導致不可逆的數據丟失。
  • 權限運行:插件以當前 DSH 進程權限運行,使用前請檢查源碼與許可證。

開發

本地開發需要將 DSH 的工作空間包 junction 到 node_modules/@deepseek-ai 目錄下。

npm run typecheck     # TypeScript 類型檢查
node --import tsx --test tests/micro.test.ts

目錄與倉庫

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

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

小夜