billion-context-relief:在 DSH 裏按需導出或刪除上下文

前言

在 DSH(DeepSeek Harness)裏跑長會話時,上下文窗口會被大段日誌、抓取頁面、工具輸出佔滿。社區插件 billion-context-dsh(ACP)可以把一段上下文壓成 Agent 自己寫的摘要,這是常用的「減負」方式。但有些內容並不適合壓成摘要:可能以後還要原文對照的長日誌,可以直接移出窗口;已經沒價值的死衚衕檢索或過期快照,則希望乾脆刪掉,既不寫摘要也不落盤。

billion-context-relief 由維護者 markelayan 發佈,分類屬於「記憶」類 DSH 插件,是 ACP 的配套插件。它提供「導出到文件並留指針」和「無文件刪除」兩種顯式操作,並附帶發現大塊上下文與管理導出文件的工具。README 明確說明:沒有任何自動壓縮、導出或刪除;唯一會自動出現的是僅作提示的 advisor 通知。

這是什麼

  • npm 包名: billion-context-relief(當前資料中版本爲 0.1.2,MIT 許可證)
  • 定位: Agent 按需請求的 context relief,Companion to billion-context-dsh (ACP)
  • 運行環境: Node.js >= 20;聲明兼容 DSH 0.2.0-rc.2,不支持 DSH 0.1.x
  • 依賴關係: 不自帶壓縮引擎;peer 依賴 billion-context-dsh,且 ACP 必須是 profile 裏當前激活的 compaction engine(在 dsh.profile.bundles 中替換 compaction-basic)

沒有安裝 ACP、或使用了其他壓縮引擎時,本插件各工具會說明需要 ACP,且不會改動上下文;advisor 也會保持靜默。

與 ACP 的分工

ACP 通過 compress 路徑做替換;本插件的每一次替換也走同一路徑,因此與已有 ACP 塊的行爲一致。README 概括兩類場景:

場景 工具 效果
體積大但可能還要原文 context_export 把區間寫到臨時文件(模型不讀文件內容),窗口內換成一行指針
已無繼續保留價值 context_delete 丟棄區間,無摘要、無文件;資料描述爲帶 DELETED REFERENCES 標記

此外:context_large_blocks 只讀列出保護區外 oversized 項;context_exports 按名稱管理已導出文件。

區間邊界使用 surface seq(整數)或 ACP 的 mNNNNN ref,與 context_large_blocks、acp_status 輸出一致;區間爲閉區間。

核心工具(已覈實能力)

context_large_blocks

只讀掃描,幫助決定「動哪一段」。可選參數包括 largeMessageTokens、largeTurnTokens、largeBlockTokens(單次覆蓋閾值)、limit(1–50,默認 20)。輸出給出閾值、seq 範圍、估算 token、距今輪數等;不展示正文內容。說明中提到:turn 條目與其中的 message 會重疊,應對其中一種操作,不要重複處理。

context_export

將已完成上下文的一個區間寫入臨時文件,並用一行指針替換該區間。

參數 說明
startSeq / endSeq 必填;seq 或 mNNNNN
name 可選,文件名提示,例如 pytest-run-3
note 可選,保留在指針中的一行說明(資料截斷處標明最大 120 字符)

context_delete / context_exports

  • context_delete: 刪除指定區間,不生成摘要文件(package 描述:帶 DELETED REFERENCES 標記)。
  • context_exports: 管理按名稱保存的導出文件;卸載插件後,已產生的 export 文件仍留在磁盤,需自行清理(見 README Exports 一節)。

拒絕與安全邊界

README 設有 「What it refuses」:例如已在 ACP 塊內的區間會拒絕(涉及 AlreadyCompressedRangeError)。具體規則以倉庫文檔爲準。插件以當前 DSH 進程權限運行;安裝前建議閱讀源碼與 LICENSE,並理解導出文件落在臨時目錄(日誌示例:exports in <tmpdir>/billion-context-relief)。

安裝與啓用

DSH 生態是「一切皆插件」;插件目錄站 SkillHub 上的條目 與 GitHub 倉庫由社區維護,並非 DeepSeek / 幻方官方應用商店。

1、先裝 ACP(profile 尚未有時)

資料給出的測試組合爲 GitHub 固定 ref:

dsh plugin --profile web add "billion-context-dsh@github:Tyan66666/billion-context-dsh#2026-09-30_dsh-0.2-seam-port"

npm 上 billion-context-dsh@0.2.26 文檔標註爲預期可用但未在 relief 側實測。

2、安裝 billion-context-relief(推薦 npm)

dsh plugin --profile web add billion-context-relief

固定版本示例:

dsh plugin --profile web add billion-context-relief@0.1.2

或從 GitHub release 標籤安裝:

dsh plugin --profile web add "billion-context-relief@github:markelayan/billion-context-relief#v0.1.2"

升級:

dsh plugin --profile web update billion-context-relief

dsh plugin add 會寫入 profile 的 package.json 和 dsh.profile.bundles,運行中的 DSH 無需重啓即可加載;新工具只出現在安裝之後新開的 session 裏,舊 session 需重新打開。

3、確認加載

dsh web 時可查看 ~/.dsh/dsh-web.log,應出現類似:

[billion-context-relief] ready — tools: context_large_blocks, context_export, context_delete, context_exports · advisor=true · exports in <tmpdir>/billion-context-relief

卸載:

dsh plugin --profile web remove billion-context-relief

已寫入 session 的 ACP 塊會保留;導出文件需按文檔自行刪除。

典型用法思路

下面是一條可復現的操作順序(具體 seq 以你當前 session 爲準):

  1. 用 ACP 相關能力或 context_large_blocks 查看窗口占用與大塊列表(示例輸出中會看到 Thresholds: message ≥4.0K · turn ≥12.0K · ACP block ≥3.0K tokens 及若干 seq / tool 行)。
  2. 若某段是「可能要原文」的長日誌或抓取結果,調用 context_export,傳入 startSeq、endSeq,必要時加 name、note。
  3. 若某段確定無保留價值,調用 context_delete 處理同一區間(不要對 turn 與其 message 重複操作)。
  4. 需要清理磁盤上的導出時,使用 context_exports。

每次變更都是 Agent 顯式調用工具;advisor 僅提示,不代爲執行。

適用場景與注意

適合誰: 已在 DSH 0.2.0-rc.2 上使用 billion-context-dsh (ACP)、且希望 Agent 在「摘要」之外還能「外置原文」或「直接丟棄」上下文的開發者。

務必注意:

  • 必須先裝並讓 ACP 成爲 active compaction engine;否則本插件不會生效。
  • 包體約 19 kB(packed),無 runtime 依賴,但依賴 profile 內正確解析的 billion-context-dsh。
  • 配置項細節、advisor 觸發條件、導出目錄完整行爲見 GitHub README;本文僅依據公開 README 與 package.json 中已出現的事實。
  • 插件與 DSH 以本機用戶權限讀寫文件與 session;生產或敏感環境安裝前請審閱源碼。

結尾

billion-context-relief 把 context 管理從「只能壓摘要」擴展爲「導出留指針」和「無文件刪除」,且全部通過 Agent 顯式調用完成,與 ACP 的 compress 路徑一致,便於在長會話裏精細減負。

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

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

小夜