dsh-aux-degrade:让 DSH 辅助调用更省更完整

前言

除了主对话,DSH 会后台运行一系列辅助 LLM 调用,比如压缩摘要、生成会话标题、增强提示。它们共享主对话的模型,但往往不指定推理努力级别,从而继承了较高的推理设置,把输出预算全消耗在推理上。结果就是:压缩摘要被 max_tokens 截断,截断是静默的,下一轮对话直接缺失部分上下文;会话标题写到一半变成半个单词。

dsh-aux-degrade 挂在 llm/stream 流水线上,在辅助调用发送前将其降级处理。

这是什么

这是一个 DSH 1.5 辅助模型降级插件,由 xiamubumu 维护。它解决的是辅助调用(压缩摘要、会话标题等)在默认高推理级别下被静默截断的问题。目前仅支持 DSH 1.5(>=0.1.5-rc.2 <0.2.0),后续会跟进更新。

核心功能

插件在同一个 llm/stream 挂钩中完成四件事:

1. 降低推理努力到 off

当满足以下任一条件时,调用被标记为辅助调用,其 reasoningEffort 被覆盖为 off:

  • 按用途:purpose 在配置的 purposes 列表中(默认包含 compaction、session-title、title)
  • 按发起插件:发起方在 auxPlugins 列表中(默认识别 dsh-prompt-enhance)
  • 按形状:未声明 purpose 且 tools 不是数组

如果调用方自己明确指定了 reasoningEffort,则不覆盖,尊重调用方的意图。

若要使用不同级别(非 off),可通过 config.effort = 'low' 等配置。

2. 将 maxTokens 提升到至少 1024

某些调用会设置极小的 maxTokens(最差情况为 1),同时伴随高推理级别,导致正文还没开始就被截断。插件设置了一个下界:不小于 1024。

可通过环境变量覆盖:

DSH_AUX_MAXTOKENS_FLOOR=2048    # 使用不同下界
DSH_AUX_MAXTOKENS_FLOOR=0       # 关闭此项

3. 向压缩指令追加两个忠实保留要求

压缩摘要最大的风险不是”短”,而是”丢失信息”。在压力下,摘要生成器会优先叙事,丢弃路径、命令、错误码、约束等硬信息。

当 purpose === 'compaction' 时,插件会在压缩指令末尾追加两个节:

## Standing facts & constraints (MUST keep verbatim)

## Commands & outcomes (MUST keep verbatim)

如果指令已包含这两节,则不再重复追加(幂等)。

4. 清除压缩调用的 tools

压缩摘要不需要调用工具。保留工具定义既占用提示空间,又可能让模型”顺手多调用几个工具”,把本应是纯文本摘要生成变成多次往返。

当 purpose === 'compaction' 时,插件会清除 tools。可通过 config.noTools = false 关闭此行为。

安装与启用

在 DSH 的 profile 中配置 cordis.patch.yml:

- id: aux-degrade
  config:
    enabled: true
    purposes: []
    models: []
    effort: off

配置说明:

  • enabled:控制 #1(降低推理努力)。默认为 false,但在本仓库的 cordis.patch.yml 中被设置为 true
  • purposes:按用途识别辅助调用,默认为 ['compaction', 'session-title', 'title']
  • auxPlugins:按发起插件识别辅助调用,默认为 ['dsh-prompt-enhance'];传入 ['__none__'] 可完全禁用此标准
  • models:指定生效的模型列表,不填则对所有模型生效
  • effort:降级后的推理努力级别,默认为 'off'
  • noTools:是否对压缩调用清除 tools,默认为 true

⚠️ enabled: false 并不等于”零副作用”。它只停止 #1;#2、#3、#4 在代码中在 enabled 检查之前执行,一旦满足条件即生效。要关闭 #2,使用 DSH_AUX_MAXTOKENS_FLOOR=0;要关闭 #4,使用 config.noTools = false;#3 没有单独开关。

官方补丁要求

插件要求应用一个官方补丁 pi-ai-max-tokens-floor,修改 @earendil-works/pi-ai 的 dist/api/simple-options.js。上游 pi-ai 会将 max_tokens 限制为 1,导致辅助调用返回 1~2 个字符,摘要真正丢失的信息不会出现在上下文中。

补丁由本插件通过对话框通知,用户可通过三种方式之一应用:

  • 方式 A:点击”复制提示”,交给自己的 agent 执行
  • 方式 B:运行 node apply.mjs --check 检查,再运行 node apply.mjs --apply --only pi-ai-max-tokens-floor
  • 方式 C:手动用 git apply -p1 应用

补丁库地址:https://github.com/xiamubumu/dsh-patch-library

检测机制:使用内容哈希(pristine / patched)配合 *.orig 备份。当无法判断时,插件会显示”cannot tell”且不会猜测”已应用”。补丁应用后对话框不再出现,”不再提醒”是永久记录的,不影响后续新增补丁的通知。

适用场景与注意

适合需要稳定压缩摘要和会话标题的场景,尤其是默认推理级别较高、容易出现静默截断的环境。

本插件以 DSH 进程权限运行,安装前建议检查源码与许可证(MIT)。

小结

dsh-aux-degrade 通过降低推理努力、设置输出额度下界、强制保留关键信息和清除冗余工具调用,让压缩摘要、会话标题等辅助调用既节省资源又完整可靠。它只在辅助调用上生效,不影响主对话请求,与同类插件冲突风险很低。

  • 目录页:https://www.skillhub.cn/plugins/xiamubumu/dsh-aux-degrade
  • GitHub:https://github.com/xiamubumu/dsh-aux-degrade
羽毛球分组比赛记分
小程序二维码

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

Xiaoye