dsh-auto-reasoning-effort:按任务难度调度 reasoning_effort

前言

在 DeepSeek Harness(dsh)里跑多步智能体时,模型在每次工具调用前都会经历一段推理(thinking)阶段,这部分往往占掉大部分墙钟时间。若把 reasoning_effort 固定为 high,连 cat package.json 这类轻活也会拖慢;固定为 low 又容易在迁移、排错等重任务上想不够。社区里已有按会话级工具调用历史来调档的插件;本插件把主信号改成「当前这一轮用户到底在问多难的事」,工具活动只作修正。

下面介绍维护者 lion231226 发布的 dsh-auto-reasoning-effort(分类:模型推理)。它是 dsh-thinking-levels 4.4.8(MIT)的 fork,替换调度逻辑而非简单改名;上游 UI、配置管道等保留,调度语义由「会话工具史」改为「任务难度优先」。

这是什么

dsh-auto-reasoning-effort 是面向 dsh 的插件:在会话模型选择器里选 Auto 时,针对每一次 agent/request,根据当前任务难度在模型支持的线级 low、high、max 之间选档,并注入 reasoningEffort;你仍可在选择器、插件配置或消息里的 [effort: …] 标记中手动固定档位,手动选择优先于调度器。

核心功能

每次 agent/request,插件大致按下列顺序工作(资料原文步骤):

  1. 取当前轮最新用户消息,做难度分类(trivial / simple / moderate / complex,以及显式 override)。
  2. 将难度映射为基础档位(low / high / max)。
  3. 若本轮工具采样不少于 2 条,可用本轮工具活动微调档位。
  4. 用滞后(hysteresis)避免档位在相邻请求间来回跳。
  5. 钳制到模型实际宣告的档位;不支持时优先取邻近更低的一档(与上游 fork 差异之一)。
  6. 写入 reasoningEffort,并在日志中记录决策及 reasons[](例如 len:812、kw:重构、stack-trace)。

与上游 dsh-thinking-levels 的主要区别(摘要):

维度 dsh-thinking-levels 4.4.8 dsh-auto-reasoning-effort
主信号 会话级工具调用历史 当前 prompt 难度(长度、关键词、结构、错误等)
采样窗口 整会话一个 ring buffer 按轮隔离,新 prompt 清空窗口
失败回退 回退到低档 默认 safeFallback 为 high,避免静默降档
不可解释性 主要输出档位 每决策附带 reasons[]

若模型选择器、插件 level 配置或消息中的 [effort: …] 已指定手动档位,调度器跳过。

安装与启用

环境要求(README):Node.js 22.19+(或 24+);dsh 版本需在 package.json 声明的 peer 范围内(截至资料列举的 rc 项至 0.2.1-rc.3);使用随 pnpm 11 提供的 dsh CLI。

1. 从 GitHub 安装(会执行 prepare 构建)

dsh plugin --profile web add github:lion231226/dsh-auto-reasoning-effort

2. 从 npm 安装(预构建 lib/,无需本地 build)

dsh plugin --profile web add dsh-auto-reasoning-effort

3. 从 dsh-market(GUI)

在 dsh-market 插件浏览器中搜索 dsh-auto-reasoning-effort 安装;若尚未上架,用上面 CLI 方式。

安装后需重启宿主进程(运行中的 dsh web 不会热加载新 bundle):

dsh web

实用说明:

  • web profile 是 pnpm workspace 根目录;若 dsh plugin add 报 workspace 相关错误,可在命令后加 -w。
  • 从 GitHub 安装会跑包的 prepare;pnpm ≥ 10 默认阻止依赖构建脚本,可能需在 profile 的 pnpm-workspace.yaml 里批准 allowBuilds;若不想授权,可改用 npm 或打包 tarball 安装。
  • 安装前请移除已装的 dsh-thinking-levels——两个调度器同时写同一请求的 reasoningEffort 会冲突。

更完整的先决条件、验证与排错见仓库 INSTALL.md 与 INSTALL.zh.md。

配置要点

配置有两处入口,共用同一 schema:profile 合成文件(cordis.yml)里插件行的 config:,以及 Settings → Plugins 里由 .volatile() 生成的表单字段(改后下一请求生效,无需重启)。关键词列表与 models 需在 composition 层编辑。

键 类型 默认 含义
enabled boolean true 总开关;关闭时不注入
level 见 README auto 会话未选时的默认;auto 表示按请求调度
allowDowngrade boolean true 允许调度器在简单任务或简单工具主导时选 low
allowUpgrade boolean false 允许对 complex 与重工具负载选 max;关闭时 complex 封顶 high
hysteresisSteps 1–10 2 连续相同决策多少次才真正改线级;1 即关闭阻尼
safeFallback low | high | max high 无法读取会话投影或难度输入解析失败时的档位

难度相关关键词可在 difficulty.complexKeywords、heavyKeywords、simpleKeywords、trivialKeywords 中定制;默认值见 README 中的 YAML 片段。models 可按 provider/model 覆盖 vision、thinking、efforts、contextWindow 等能力。

典型用法

  1. 按上文任选一种方式安装插件,重启 dsh web。
  2. 在会话模型选择器中选择 Auto(或将插件 level 设为 auto)。
  3. 正常对话:轻量查询倾向 low,带栈 trace、重构/迁移等关键词的重任务倾向 high 或 max(受 allowUpgrade 等约束);查看日志中的档位与 reasons[] 核对调度理由。
  4. 需要固定档位时:在模型选择器里手动选线级、在插件配置里设 level,或在用户消息中使用 [effort: …] 标记——这些都会跳过自动调度。

适用场景与注意

适合在 dsh 智能体开发中希望按请求平衡推理耗时与任务复杂度、又不想手工每轮改 reasoning_effort 的开发者。与固定高档或纯工具计数调度相比,本插件强调「用户当前在问什么」。

使用前请注意:

  • 插件在当前 dsh 进程权限下运行;从 GitHub / npm 安装前建议阅读源码与 MIT / NOTICE,确认与现有 dsh-thinking-levels 不并存。
  • DeepSeek Harness 生态强调「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。
  • 本介绍事实来自项目 README 与 package.json;行为细节以仓库当前文档为准。

结尾

dsh-auto-reasoning-effort 在 dsh 的 Auto 模式下,用任务难度(辅以本轮工具信号与滞后、钳制)为每次请求选择 low / high / max,并保留手动定档与可解释的 reasons[]。进一步了解可访问 SkillHub 目录页 与 GitHub 仓库。

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

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

小夜