前言¶
在 DeepSeek Harness(DSH)里接第三方 OpenAI 兼容网关时,常见做法是在 profile 里手写 llm-pi-ai 路由和 models: 列表,让模型出现在选择器里。README 指出:手写 models: 会整体替换已安装目录里的模型;这些条目通常没有 reasoningEfforts,dsh-llm-pi-ai 会把它们当成非推理模型,Composer 里也就没有思考档位可选。把档位写进 YAML 能修一次,但网关上新模型或上游改能力时很容易过期。许多网关其实已经在自己的 model listing 里公布了推理能力字段,维护者 shuang-ying 的社区插件 dsh-api-thinking(仓库 shuang-ying/dsh-ThirdApi-ThinkingMode,npm 包名 dsh-api-thinking)会按路由拉取 listing,把各模型真实的思考档位写回配置里的 reasoningEfforts,减少手工维护。插件分类为联网工具;仓库 README 标明 MIT 许可,且说明其为社区维护,并非 DeepSeek 官方产品。
这是什么¶
dsh-api-thinking 是一个 DSH profile bundle:对每个 llm-pi-ai 下的 OpenAI 兼容路由请求其模型列表,读取端点公布的 reasoning / effort 相关字段,只更新对应模型的 reasoningEfforts,其余配置(注释、!!js 表达式及其他字段)不动。端点完全未声明推理能力时,插件不臆造能力,也不抹掉你手写的档位。
核心功能¶
下面介绍 README 中已列出的行为,均可与仓库文档核对。
- 自动同步档位 — 按路由拉 model listing,把端点公布的可选思考级别写入匹配模型的
reasoningEfforts。 - 新路由、新模型 — 在模型页增加 API 或模型后,无需改插件、无需重启即可跟进(配合 DSH 的配置热更新与定时扫掠)。
- 不发明能力 — 端点对 reasoning 沉默时保持原样;已有手写
reasoningEfforts不会被无端擦掉。 - 只动一个字段 — 仅维护
reasoningEfforts。 - 幂等 — 扫掠后若无变更则不写文件。
- 自诊断 — 每次加载与扫掠会写入状态文档,便于排查。
端点 listing 中字段优先级(节选,用于「可选档位」)依次为:reasoning_supported_efforts → supported_efforts → reasoning_efforts。写入规则摘要:有可选项则映射为 DSH 可命名的档位(off / minimal / low / medium / high / xhigh / max);仅有固定 effort 时默认作为单一档位展示(可用 fixedEffortAsLevel: false 关闭);supports_reasoning: false 写 false;声明会推理但未给集合或固定值时移除该键;完全无 reasoning 信息或模型不在 listing 中则不改动。
安装与启用¶
需要先有一套可用的 DSH 安装。文档示例使用 desktop profile,请换成你自己的 profile 名。
方式一:DSH Web UI
打开 Settings → Plugins,搜索 dsh-api-thinking 并安装。具备插件管理能力的智能体也可直接调用 install_bundle。
方式二:命令行
dsh plugin --profile desktop add dsh-api-thinking
安装后重启 DSH 并刷新页面。
卸载:在插件页关闭或卸载;或从该 profile 的 package.json 移除 dsh-api-thinking 依赖,并从 dsh.profile.bundles 数组中删除对应项。
插件以当前 DSH 进程权限访问配置与联网拉取 model listing;安装前请自行查看 GitHub 源码 与 MIT 许可证,确认符合你的环境策略。
典型用法¶
安装后没有单独开关,默认可用。插件会遍历 llm-pi-ai 行下的路由:
| 目标 | 做法 |
|---|---|
| 让某模型出现思考档位 | 在 Settings → Models 配置路由与模型,稍等扫掠完成 |
| 新增 API | 在模型页添加;档位随 listing 自动跟进 |
| 缩小范围 | 配置 routes 为关心的路由名;默认 [] 表示所有 OpenAI 兼容路由 |
| 调整扫掠频率 | 设置 intervalMs;0 表示加载后只扫一次 |
| 排查无变化 | 阅读状态文档(默认 $DSH_HOME/api-thinking.status.json,见配置项 statusFile) |
运行时机(README 摘要):启动后 startDelayMs(默认 3000ms)做全量校准;profile patch 变更后(HMR 约 2s 防抖)再扫;默认每 intervalMs(120000ms)定时扫掠作为上游变更的后备。
配置片段(来自 README,覆盖 bundle 行时 patch 里须逐字写 name: dsh-api-thinking):
- insert:
- id: api-thinking
name: dsh-api-thinking
config:
entryId: llm-pi-ai
routes: []
intervalMs: 120000
startDelayMs: 3000
timeoutMs: 15000
includeOff: false
fixedEffortAsLevel: true
log: true
statusFile: ''
includeOff 默认为 false:未选档位时 pi-ai 适配器可能把映射后的 off 当作默认发送;对允许关闭思考的模型,贸然暴露 off 会把「提供商默认」变成「关闭思考」,需显式开启。
适用场景与注意¶
适合:已通过 llm-pi-ai 接多家 OpenAI 兼容网关,且网关 model listing 里带有 reasoning / effort 元数据,希望在 DSH 模型选择器里看到与端点一致的思考档位,又不想每次上游改模型都手改 YAML。
不太适合或需预期:LiteLLM、vLLM 等常不在 listing 里公布能力数据的自建网关——插件会按设计保持沉默,你仍需手写 reasoningEfforts。仅当端点明确说出能力时才会改写该字段。
社区插件目录页:SkillHub — dsh-ThirdApi-ThinkingMode。开发与问题反馈:GitHub 仓库。经过上面的步骤,第三方模型的思考档位可与各端点自己的模型列表对齐,Composer 里可选档位与网关声明一致,而手工 YAML 只需管路由与模型名本身。