dsh-reasoning-dial
Verifieddsh-reasoning-dial · v0.2.1 · MIT
让任意自定义 API 模型都能声明并选择推理等级:直接编辑 llm-pi-ai 等自定义 provider 目录里每个模型的 reasoningEfforts,把官方那套 Off/Low/Medium/High/XHigh/Max 拨盘扩展到任何自定义 API 模型上。
Install
dsh plugin add dsh-reasoning-dial Confirm the layer applied with dsh --profile default --dump-config — see the install guide.
Source
Published to npm without a public repository. Inspect the package contents before installing.
Tags
Readme
dsh-reasoning-dial
让任意自定义 API 模型都能设置推理等级。
它解决什么问题
DSH 自带 Off / Low / Medium / High / XHigh / Max 推理档位,但这个拨盘只对目录里声明了
reasoningEfforts 的模型出现。内置的 DeepSeek 路线声明了;你自己加的自定义 API
provider(StepFun、各种 GPT 兼容网关、自建网关……)全都不带这个字段,于是:
- 模型选择器里根本没有推理等级下拉框
- 你想调也调不了,只能吃模型自带的默认档
本插件把推理等级当成普通设置数据来读写,不再依赖内置能力声明:
| 设置位置 | 作用 |
|---|---|
llm-pi-ai.providers.<名>.models[].reasoningEfforts |
声明这个模型有哪些档位可选(决定下拉框出不出现) |
agent-default-model.reasoningEffort |
当前生效的那一档 |
安装
插件是个标准 DSH bundle。三种方式任选:
方式 1 — 官方界面(推荐)
设置 → 插件 → 添加插件,选择本目录(含 package.json 的这一层)。
方式 2 — CLI
dsh plugin add F:\harness\DeepSeekharness\workstation\dsh-reasoning-dial
方式 3 — 手动挂载
把本目录软链/复制到
F:\DeepSeek_harness\.dsh\profiles\desktop\node_modules\ 下,
再在 profiles\desktop\package.json 的 dsh.profile.bundles 里加一行
"dsh-reasoning-dial",并加一条同名 dependency。
装完在 设置 → 插件 里确认 reasoning-dial 这一行是启用状态。
四个工具
装好后 Agent 侧会多出四个工具(也可以让 Agent 替你调):
reasoning_scan — 体检
列出所有自定义 provider 里的模型,以及每个模型的声明状态:
inherit— 没声明 → 这就是你没有下拉框的原因none— 明确声明不推理levels— 已声明,附档位和线上拼写
同时附上宿主 LLM 服务报告的原始能力(hostEfforts),方便交叉验证。
只读,不发网络请求。
reasoning_declare — 核心操作
给任意自定义模型声明推理等级:
{
"provider": "gptcodex",
"model": "my-custom-model",
"mode": "levels", // levels | none | inherit
"levels": ["off","low","medium","high","max"],
"wire": { "low": "reasoning_effort=low" } // 可选,逐档覆盖线上拼写
}
mode=levels— 声明可选档位,下拉框立刻出现mode=none— 明确这个模型不推理(选择器不再提供思考档位)mode=inherit— 删掉声明,交回默认wire— 关键:档位到线上字段值的映射。默认用档位名本身(OpenAI 风格)。你的网关如果要别的拼写,在这里逐档覆盖。
reasoning_select — 选档
写 agent-default-model,一次到位:
{ "provider": "gptcodex", "model": "my-custom-model", "effort": "high" }
effort 可以是 off / minimal / low / medium / high / xhigh / max,
或 inherit(删除设置、用模型默认档)。
reasoning_probe — 实测
同一句最小提示词,分别以低档和高档各请求一次,比较结果。 用来区分「声明了但线上忽略」和「真的生效」。会真的发请求,可在设置里关掉。
插件设置
| 项 | 默认 | 说明 |
|---|---|---|
namespaces |
llm-pi-ai |
逗号分隔。自定义 provider 住在哪些设置命名空间里 |
levels |
off,low,medium,high,max |
默认提供哪些档位 |
wireMode |
identity |
档位→线上值的默认映射:identity(原样)/ lower(转小写)/ none |
autoDeclare |
false |
启动时自动给未声明的模型补默认阶梯。默认关:错误声明比不声明更糟 |
allowProbe |
true |
是否允许 reasoning_probe 发真实请求 |
agentTools |
true |
是否注册这四个工具 |
使用流程
1. reasoning_scan # 看哪些模型是 inherit
2. reasoning_declare (provider/model) # 补声明
3. 重启会话 / 刷新模型选择器 # 下拉框出现
4. reasoning_select effort=high # 选档
5. reasoning_probe # 可选:验证线上真的吃这一档
已知边界(重要)
- 声明是"关于线上的声明",不是魔法。 插件只写设置,不会让你的供应商
凭空支持某个参数。如果网关不认
reasoning_effort,下拉框会出现但选了没效果 —— 先用reasoning_probe验证。 - 本插件写的是 host 侧 settings 服务。 它按读到的接口形状做了特性探测
(
get/read读取,mutate/update写入),但 host 侧 settings 的确切签名 是按官方客户端插件的用法推断的。如果启动后工具报宿主没有暴露可读写的 settings 服务,说明该签名不匹配,把报错发我即可。 - 写粒度:设置的 path-op 只能整体替换数组,所以每次保存都是重写该
provider 的整个
models数组。插件会先读再改再写,未识别的字段原样保留。 - 不改动任何凭据,不写配置命名空间以外的任何设置。
许可
MIT