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 路径一致,便于在长会话里精细减负。

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

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

Xiaoye