dsh-reasoning-distill:把超长思考压成可重放的核心

前言

在 DeepSeek Harness(DSH)里跑带大量工具调用的 agent 时,同一段对话历史会在每一步请求里反复送进模型。若某一步的 reasoning 特别长,这些 token 会在同一轮里被多次计费,成本很快上去。宿主自带的上下文压缩会整段收历史,和「只缩短思考块、保留有效推导」的需求并不完全一致。

下面介绍社区插件 dsh-reasoning-distill(维护者 huhu23333,分类:工作流):监视单步思考长度,超过阈值时用蒸馏模型改写成更短版本,并在后续请求里重放压缩版;同时给出每个会话的蒸馏开销与节省统计。插件默认关闭,需在「设置 → 思考压缩」里选好后端并打开总开关。

这是什么

dsh-reasoning-distill 是 DSH 的工作流类插件,定位可以概括为:把过长的模型思考压缩成核心内容,之后每次请求重放压缩版,并报告会话级的成本与净收益。

插件以当前 DSH 进程权限运行;安装前请自行查看仓库源码与许可证,确认信任来源。

核心功能

压缩与重放

  1. 监视每次模型输出中的思考内容(reasoning),并估算 token 数。
  2. 某一步思考超过该模型的触发阈值(默认 4000 token)时,把这一步的思考(可选附上工具调用与结果)交给蒸馏模型(默认 deepseek-official/deepseek-flash,思考强度 off)改写成更短版本。压缩的是措辞与冗余,不是删掉有效推导步骤。
  3. 压缩在下一步请求之前完成;等待时间受该模型超时限制,到点则放弃本次压缩(原文不动、不替换)。只有压缩结果至少能省下最低节省(默认 600 token)时才采用。
  4. 被采用的压缩版会替换「模型看到的思考」;会话日志里的思考原文不变,账本写在会话日志旁的 sidecar 文件里。

「思考压缩」标签页会显示触发次数、蒸馏开销、采用次数、单次请求减量、历史累计节省、净收益,以及最近一步未触发原因。

三种改写后端

插件只负责算出压缩版;写回会话需要选一个助手消息改写后端(未选则总开关会被强制关闭):

后端 适用情况
derive 无需安装与补丁,内存里替换;打包版 DSH(如 dsh-desktop)优先用它。对话页仍显示日志原文,模型实际收到的是压缩版。
in-place 需对 DSH 源码打补丁(scripts/dsh-inplace-patch.mjs),不建分支、不改日志结构;需从源码构建的 DSH,npm 直装或第三方打包版无法用。
message-edit 实验性,不推荐:依赖第三方插件,每次压缩会新建分支会话,场景受限。

会话范围与默认开关

主对话、可续聊子代理、一次性子代理有独立开关;默认仅主对话开启。可续聊子代理、一次性子代理、附带工具调用结果、压缩最终回答轮等默认关闭。

另有按上下文占用限制触发(默认开启、60%):占用过高时即使单步达阈值也不再压缩,避免刚压缩就被宿主整段上下文压缩收走。

安装与启用

前置条件:Node >= 20;DSH 能正常启动(依赖 sessionPersistence)。装完后需重启一次 dsh web。

从 npm 安装:

dsh plugin --profile web add dsh-reasoning-distill

从 GitHub 安装(pnpm 可能要求把包名加入 profile 的 pnpm-workspace.yaml 的 allowBuilds 后重试):

dsh plugin --profile web add github:huhu23333/dsh-reasoning-distill

选用 derive 时无需再装后端。若用 in-place,在 DSH 源码目录执行:

node scripts/dsh-inplace-patch.mjs --apply --build

然后重启 dsh web。升级 DSH 前建议先回退补丁,升级后用 --check 复查。

启用步骤:

  1. 打开「设置 → 思考压缩」。
  2. 选中一个改写后端(derive 选中即用)。
  3. 打开「启用思考压缩」,再按需调整阈值、最低节省、蒸馏模型等项。

README 注明可能适配的 DSH 版本范围为 0.2.0-rc.1~0.2.1-rc.2;完整功能与 in-place 体验建议用从官方仓库源码构建的 DSH。

典型用法

适合形态是 README 里说的 「单轮次、多步工具调用的超长单轮对话」:一次说清任务,让 agent 在同一轮里连续调用很多步工具。同一段历史在每一步都要重发,压缩后的思考会被反复重放,省下的输入 token 才有机会超过蒸馏开销。

不适合作为默认开启的场景是 「多轮问答、根据反馈反复精修」:每轮步骤少,节省有限;且 DeepSeek API 在多轮对话中通常不会把之前轮次的 reasoning_content 拼进上下文(除非请求带 tools),压缩版往往不会被模型读到,改写还可能破坏上下文缓存前缀匹配。这类阶段建议在设置里关掉总开关。

适用场景与注意

适合谁

  • 习惯「许愿式」单轮长链工具调用的 DSH 用户,且愿意用蒸馏模型换输入 token。
  • 使用打包版 DSH、不想改宿主源码的用户:用 derive 即可,无需补丁。

需要注意

  • 插件默认关闭;未选后端时无法开启。
  • in-place 修改 DSH 本体,跨版本升级可能导致补丁失效;打包安装请用 derive。
  • derive 下冷启动若 sidecar 读失败,会暂时带原文并打日志警告,恢复后自动再应用。
  • 少数回退路径可能导致缓存按未命中计费,报告中的净收益可能被高估(README 对 cacheBreakTokens 有说明)。

结尾

dsh-reasoning-distill 针对单轮多步工具链里重复发送超长 reasoning 的痛点,用可配置的阈值与蒸馏改写把思考压短并在后续请求重放,用 sidecar 账本和面板报告把开销与节省摊开。是否划算取决于对话形态;多轮精修阶段建议关闭,长链单轮任务可结合 derive 或 in-place 试用。

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

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

小夜