🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI
广告☁️ 云服务器特惠阿里云首购 8 折 · 腾讯云合作特惠
DeepSeek Harness Hub
← 返回列表

zhubaohi/dsh-qwen38-compaction-fix

DeepSeek Harnessspec-screened扫描:低风险在 GitHub 查看 ↗
✓ 可直接安装

Qwen3.8NInfer压缩修复

自动检查通过:npm 包已发布且 engines 声明满足基线;该结论来自程序自动检查,未经人工实机验证。 · 最近上游提交 2026/9/7 · 已提供中文文档

DSH 插件:阻止 qwen3.8-27b 在上下文压缩期间把输出预算烧在思考上

综合分
29.9
GitHub 分
29.9
用户评分
—
★ Stars
2
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add dsh-qwen38-ninfer-compaction-fix
npm 包 dsh-qwen38-ninfer-compaction-fix 已校验归属本仓库,走 npm 安装最省事
信任档位:已验证本站已于 1 天前真实安装成功(L4 · 真实安装)
是什么
dsh 原生插件 · other
装得上吗
本站已真实安装成功(L4 · 真实安装,非静态推断)
安全吗
本站尚未对该插件做风险分级(暂未覆盖,不等同于无风险)
还在维护吗
活跃:最近一次提交在 19 天前

档位由下列信号合成:本站实装验证(真实安装,当前最高到 L4)· 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。下方各区块是它的证据明细。 验证判据与等级说明 →

🟢实装验证通过· 2026/9/24
由本站实装验证器在真实 dsh 环境安装成功,非静态推断。
数据截至 2026/9/22(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查✓ 自动检查通过

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-qwen38-ninfer-compaction-fix @ 1.1.0
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/22 13:28:35

依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/dsh-settings
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

由 DeepSeek 最新模型翻译生成
Qwen3.8(NInfer)压缩修复

针对运行在 NInfer 引擎上、无法压缩的本地 qwen3.8-27b 网关的修复。该模型以 xhigh 级别进行思考,在得出结论之前就把整个输出 token 预算花在推理上,导致压缩检查点返回时被截断。这个 DeepSeek Harness(dsh)插件仅针对压缩调用禁用思考,并对这些调用应用模型在关闭思考时推荐的采样参数。

范围:仅限 NInfer。 本包是为由
NInfer 引擎(ninfer-serve,兼容 OpenAI 的 API)提供服务的网关编写的:它重写的
线上字段(reasoning_effort、presence_penalty、repetition_penalty、min_p)正是
NInfer 网关所解释的字段。如果你的 qwen3.8 是由其他东西启动的
(llama.cpp、vLLM、FastMTP……),同样的思路——为 dsh 的压缩和
会话标题调用关闭思考,使 xhigh 推理无法耗尽整个输出预算——仍然适用,
但每个引擎使用不同的线上参数,因此本包并不声称能修复那些
启动方式。

安装

dsh plugin --profile web add dsh-qwen38-ninfer-compaction-fix

然后重启 dsh web(或刷新 GUI 页面)。该插件也列在 DSH
插件市场中(设置 → 插件市场 → 搜索 "qwen38")。

症状

当上下文压力累积时,dsh 会将对话压缩成一个检查点。在本地 qwen3.8-27b 以其默认推理级别运行时,压缩有时会失败,会话中会留下这样一行:

summarization truncated at the token cap (incomplete checkpoint)

这是 dsh-compaction-basic 的判定,即摘要器在未完成的情况下触及了输出 token 上限。对话只被压缩成那段被截断的文本:摘要未能触及的一切实际上都从上下文中丢失了。

为什么会发生

本地 qwen3.8-27b 部署以其默认强度进行思考:在典型路由配置中为 xhigh,对每一个未显式设置推理强度的调用都是如此。压缩就是这样一个调用。模型被要求为整个对话写一份长摘要。在 xhigh 下,它会在写出摘要的第一个字之前,把整个 max_tokens 输出预算都花在推理 token 上。响应在没有任何结论的情况下触及上限,于是你就得到了上面那个被截断的检查点。

修复

1. 仅针对压缩禁用思考。 在压缩调用上打上 reasoning_effort: "off"(waterfall 层,通过模型的 reasoningEfforts 声明解析为线上值 reasoning_effort: "none"):零推理 token,整个输出预算都可用于摘要。其他所有调用,无论是正常轮次、子代理,还是对任何其他模型的请求,都保留路由的 xhigh。思考绝不会被全局禁用。
2. 应用关闭思考时推荐的采样参数。 qwen3.8-27b 针对思考模式和关闭思考模式分别发布了不同的推荐采样参数。该插件将第二组参数(temperature: 0.7, top_p: 0.8, top_k: 20, min_p: 0.0, presence_penalty: 1.5, repetition_penalty: 1.0)写入压缩请求体,因此请求实际上与其所处的模式相匹配。
3. 恢复输出预算。 将压缩请求体的线上 max_tokens 提升至可配置的下限(默认 16384;该值绝不会被降低),从而撤销 pi-ai 中可能在大型对话中压缩 max_tokens 的上下文钳制。
4. 修复会话标题(次要)。 会话标题生成在同一路由上运行,且输出预算极小(maxTokens: 64),因此 xhigh 思考也会截断标题。该插件将配置的 reasoning_effort 线上值写入标题请求体。标题提供程序在水落石出之前就已将其 LLM 选项锁定到位,因此只有线上请求体可达。

其他一切均不受影响。每个门控都会检查用途和模型(waterfall),或检查签名和模型(HTTP),因此对话轮次、子代理以及任何其他模型都会原样通过,逐字节不变,并使用路由默认值。每个防护都会失败开放。

模型名称必须匹配:请先阅读本节

该插件仅在传出请求的 model 字段与 models 允许列表中的某个 id 匹配时才会生效:默认恰好为 qwen3.8-27b,区分大小写。这是精确 id 匹配,而非家族或子字符串匹配,因为写入请求体的采样参数特定于此模型,对其他任何模型都会是错误的。

正在比较的是哪个 id: 你的路由所服务的模型 id,即在 $DSH_HOME/settings.yaml 中 llm-pi-ai.providers..models[].id 下声明的那个。这是 dsh 放入发往你的网关的每个传出请求的 model 字段中的值。它不是你的网关内部对该模型的称呼。

使其匹配:以下两个位置任选其一即可:

1. $DSH_HOME/settings.yaml 的 qwen38-compaction-fix: 部分(实时生效,无需重启):

qwen38-compaction-fix:
models: [your-model-id]

2. 你的配置文件的 cordis.patch.yml 中插件行的 config: 块(在下次 GUI 加载时生效):

- id: qwen38-compaction-fix
config:
models: [your-model-id]

如果你的网关以不同的 id 提供该模型(自定义模型名称、带后缀的变体、不同的大小写),请将那个 id 添加到 models 中。采样值保持不变;只有 id 必须匹配。

如果没有任何匹配,该插件会静默地什么都不做: 每个请求都会原样通过,逐字节不变,并且未命中时不会有任何警告。如果你安装了这个插件,却仍然看到被截断的检查点,请先检查模型 id。

配置

所有键都是可选的;默认值由 schema 应用。优先级(从高到低):
1. $DSH_HOME/settings.yaml 中的 qwen38-compaction-fix: 部分(实时生效,无需重启)
2. 你的 profile 的 cordis.patch.yml 中插件行的 config: 块
3. 插件自带的默认值

settings.yaml 示例:

qwen38-compaction-fix:
effort: off            # "" 禁用 effort 策略
models: [qwen3.8-27b]  # 精确 id;[] 禁用整个策略
sampling:              # wire 字段名,原样写入请求体
temperature: 0.7
top_p: 0.8
top_k: 20
min_p: 0.0
presence_penalty: 1.5
repetition_penalty: 1.0
maxTokensFloor: 16384  # 0 禁用下限
titleReasoning: none   # "" 禁用标题门控

| 键 | 默认值 | 含义 |
|---|---|---|
| effort | "off" | 标记到匹配调用上的推理强度。优先级顺序:已配置值,然后是 off,然后是 low;如果模型不提供其中任何一个,则保留其自身默认值(仅一条警告)。"" 禁用 effort 策略。 |
| purposes | ["compaction"] | waterfall 层所适用的 LLM 调用的 purpose 标签。 |
| models | ["qwen3.8-27b"] | 策略所适用的精确模型 id(区分大小写),在每一层都会检查。空列表禁用整个策略。参见上文模型名称部分。 |
| sampling. | {} | 原样写入压缩请求体的采样设置。缺失的键保持缺失。 |
| maxTokensFloor | 16384 | 压缩请求体的 wire max_tokens/max_completion_tokens 会被提升到至少此值;绝不会降低。0 禁用。 |
| titleReasoning | "none" | 写入会话标题请求体的 wire reasoning_effort 值。"" 禁用该门控。 |

调用本身显式指定的 reasoningEffort 始终优先于插件默认值。

工作原理

四个协同层:

1. llm/stream waterfall: 对于 purpose 在 purposes 中且 options.model 在 models 中的调用,解析模型提供的推理强度,并在派发前就地标记所选强度。
2. HTTP 采样: 包装进程的 fetch;当聊天补全请求体携带压缩引擎的最终指令(一个稳定签名)且其 model 字段被允许时,应用配置的采样条目——即按 NInfer 网关的拼写写入的 wire 字段。
3. HTTP max_tokens 下限: 相同的门控;将输出上限提升到下限;绝不会降低它。
4. HTTP 会话标题推理: 当请求体携带标题提供方的系统提示(稳定签名)且其 model 被允许时,写入配置的 reasoning_effort wire 值。

HTTP 层的身份识别依赖于 dsh-compaction-basic 和 dsh-session-title-llm 随附的指令文本。如果未来的 dsh 版本更改了这些指令,匹配的 HTTP 门控会静默停止匹配,请求体将保留其 wire 默认值。其他门控不受影响,并且绝不会破坏 LLM 流量,因为每个防护都是故障放行的。

限制
- 引擎范围:NInfer。 本插件重写的 wire 字段是 NInfer 网关所解释的那些字段。由其他引擎(llama.cpp、vLLM、FastMTP……)提供服务的网关可能会忽略这些字段,或以不同方式拼写它们;同样的“关闭思考”思路可以移植到它们,但该移植是另一个软件包。
- 模型匹配是针对 settings.yaml 中 llm-pi-ai.providers..models[].id 下声明的 id 进行的精确 id 匹配。参见上文的模型名称部分。
- HTTP 层签名跟踪特定的 dsh 版本;当签名不再匹配时会发生什么,请参见“工作原理”。
- 本插件为你运行的本地网关*塑造请求。它不会改变 harness 自身的路由或服务器的真实容量限制(服务器仍会强制执行这些限制)。

测试

门控逻辑由冒烟测试覆盖(参见 CHANGELOG.md):允许的模型请求体会按预期的采样、下限和推理值被重写;不允许的模型、缺失的模型以及空允许列表的请求体会逐字节原样通过。

许可证

MIT。参见 LICENSE。

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入社群

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

DPharness QQ 群二维码,QQ 扫码进群
QQ 扫码进群
DPharness 飞书群二维码,飞书扫码进群
飞书扫码进群