🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

压缩模型路由 643048695/dsh-compaction-route

DeepSeek 客户端
64304869534 天前有提交已提供中文文档扫描:未发现敏感能力兼容 / 相关生态

为会话压缩指定摘要模型并配置失败兜底重试

29.8/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/29 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/643048695/dsh-compaction-route.git

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:待复验
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
装得上吗
曾在 dsh 0.2.0-rc.2 下真实安装成功,但当前 dsh 已更新至 0.2.1-rc.5,本站尚未在新版下复验
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 34 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🟢 扫描:未发现敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 指定会话压缩摘要模型
  • 配置兜底模型
  • 失败重试

在 Web 设置页里选 DeepSeek Harness 的会话压缩摘要器,再给它配个兜底模型

README

由 DeepSeek 最新模型翻译生成
dsh-compaction-route License: MIT Last commit Stars 在 Web 设置页里选择会话压缩用的摘要模型,并给它配一个兜底模型。 一个 DeepSeek Harness 插件。 为什么需要它 DSH 的压缩引擎只解析一个摘要模型,而且没有任何失败回退。摘要调用被拒时它直接抛错,/compact 显示 "Compaction could not produce a useful summary",然后就没有然后了。 问题在于:回放的历史是按 DSH 固定的 字符数 ÷ 4 估算的,而各个厂商对同一段字节的切分方式不同,输入上限也各自独立。于是你正在聊天的模型装得下的历史,可能你挑的那个摘要模型装不下 —— 整次压缩就这样失败,没有任何东西接住它。 在一个真实的 950k 窗口会话上实测: | 项 | 值 | | DSH 对回放的估算 | 743,536 tokens | | 聊天模型实际读到的 | 744,184 tokens | | 摘要模型实际需要的 | 超过它的输入上限 → HTTP 400 | 估算器是按聊天模型的分词器校准的(误差 0.1%),所以它报「装得下」,而摘要模型其实已经超了。
展开完整文档(README 剩余 1 节)
dsh-compaction-route

License: MIT
Last commit
Stars

在 Web 设置页里选择会话压缩用的摘要模型,并给它配一个兜底模型。

一个 DeepSeek Harness 插件。

为什么需要它

DSH 的压缩引擎只解析一个摘要模型,而且没有任何失败回退。摘要调用被拒时它直接抛错,/compact 显示 "Compaction could not produce a useful summary",然后就没有然后了。

问题在于:回放的历史是按 DSH 固定的 字符数 ÷ 4 估算的,而各个厂商对同一段字节的切分方式不同,输入上限也各自独立。于是你正在聊天的模型装得下的历史,可能你挑的那个摘要模型装不下 —— 整次压缩就这样失败,没有任何东西接住它。

在一个真实的 950k 窗口会话上实测:

| 项 | 值 |
| DSH 对回放的估算 | 743,536 tokens |
| 聊天模型实际读到的 | 744,184 tokens |
| 摘要模型实际需要的 | 超过它的输入上限 → HTTP 400 |

估算器是按聊天模型的分词器校准的(误差 0.1%),所以它报「装得下」,而摘要模型其实已经超了。用同一段内容实测三条路由:

| 路由 | 同样字节的 token 数 |
| gemini-3.8-flash | 1,027,843 |
| opencode-go/deepseek-v4.1-flash | 939,469 |
| surplan/deepseek-v4.1-flash | 939,003 |

分词器相差约 10%,而上限是同一个(1,048,576)。所以光「换一个模型」并不够:只有兜底模型的窗口比主模型更大时,才救得回「装不下」这种失败。 你的选择救不了时,设置卡会明确警告。

它做什么

监听 llm/stream 瀑布 —— 每一次模型调用都经过的唯一接缝 —— 并且只对 purpose === "compaction" 的请求生效:

1. 把目标改写成你配置的主模型;
2. 该次尝试以终止性错误 chunk 结束时,在兜底模型上重试同一个请求;
3. 输出第一个成功的尝试,或最后一次尝试的结果。

其余所有请求 —— 正常对话、子代理、会话标题、联网搜索 —— 完全原样通过,不受影响。

安装

Web 界面: 设置 → 插件 → 添加插件,填入:

github:643048695/dsh-compaction-route

命令行(普通 profile;desktop profile 由 Electron 应用接管,CLI 会拒绝):

dsh plugin --profile add github:643048695/dsh-compaction-route

安装器询问时启用该 bundle 即可。没有构建步骤,插件挂载不需要重启应用。它插入的行 id 是 compaction-route,同时也是设置命名空间。

配置

设置 → 插件 → dsh-compaction-route → 配置。

| 字段 | 含义 |
| 启用路由 | 关闭则引擎行为与装之前完全一致。 |
| 主模型 | 优先使用的摘要模型。 |
| 兜底模型 | 主模型出错后改用的模型。留空表示不用兜底。 |
| 推理强度 | 压缩调用的 reasoning effort;留空则跟随服务商默认。 |

两个下拉框都是从你 profile 里实际安装的模型里读出来的 —— 数据来自 llm-pi-ai 设置命名空间,装了哪些就能选哪些 —— 每个选项都显示它的上下文窗口。

全新安装时两个模型都是空的,不会改变任何行为。 不做任何猜测:在你选出主模型之前,压缩行为与之前完全一致。在发布出去的代码里写死某条路由,等于替别人的 profile 猜一个它可能没有的服务商;而只有兜底、没有主模型是没有意义的,所以它不会自作主张开始路由。

每个字段都是 volatile,所以改动对下一次压缩即刻生效,无需重启。

怎么选兜底模型

兜底只有在窗口比主模型更大时才能救回装不下这种失败。两个窗口一样大的路由,只会把同一次拒绝重演一遍。

当兜底窗口 ≤ 主模型窗口时,设置卡会给出警告;两者是同一个模型时也会警告。

工作原理

压缩调用 ──▶ llm/stream 瀑布 │ ├─ purpose 不是 "compaction"? ──▶ 原样通过,不受影响 │ ├─ 主模型 ──成功──▶ 输出它的 chunks │ └──终止性错误──▶ 兜底模型 ──▶ 输出它返回的内容 └─(本插件自己创建的调用永远不会被自己再次拦截)

为什么是重新进入 ctx.llm.stream(),而不是调用 next(newOptions)。 cordis 把一个瀑布的 next 构建为对原始参数数组的闭包:

const next = () => (cbs.shift() ?? inner)(...args)

所以 next(modifiedOptions) 会静默忽略传进去的参数,再次分发原来的 options。因此更换 provider/model 必须从链条顶部重新进入 ctx.llm.stream();用一个 WeakSet 标记本插件自己创建的调用对象,避免它拦截自己。

说明与限制

- 只在终止性错误 chunk 上重试。 中间件或调用方抛出的异常会原样上抛,与未装插件时一致 —— 这个接缝不会把它吞掉。
- 取消优先。 已中止的调用绝不重试。
- 只动压缩调用。 判别依据是 purpose,其余任何请求都不会被改道。
- 引擎自己的事件记录的仍是它配置的目标。 compaction/summary 里报告的是引擎的 summarizationProvider / summarizationModel,不是本插件的改写;兜底生效只会出现在本插件的日志行里。想让会话日志与之一致,就把引擎那一行也指向同一个主模型。
- 它不能代替「让历史变小」。 如果回放超过了你拥有的所有窗口,任何兜底都救不了 —— 那是压缩策略的问题,不是路由的问题。

兼容性

支持 @deepseek-ai/dsh 0.1.7-rc.2(已在其上实测),以及同一 node 序列的 0.1.7。

开发

两半都不需要构建步骤。

lib/index.js 宿主半 —— llm/stream 路由 + 设置 schema client/client.js 浏览器半 —— 配置卡片 cordis.patch.yml bundle 补丁:一行,id 为 "compaction-route"

许可证

MIT —— 见 LICENSE。
预览分享卡片长什么样 ↓643048695/dsh-compaction-route
分享 · DeepSeek Harness Hub
643048695/dsh-compaction-route

为会话压缩指定摘要模型并配置失败兜底重试

回到顶部