为第三方供应商模型按模型配置思考强度与输入模态:知识库与原始 /models 端点取证融合建议并标注置信度,在官方「模型」页卡片内直接编辑。
安装
# npm 包(预构建)
dsh plugin --profile web add dsh-better-reasoning-effort
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:HaoyueQin/dsh-better-reasoning-effort
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
English | 中文
在 DeepSeek Harness 中为第三方模型编辑思考强度与输入模态——直接在官方「模型」页的编辑卡内完成;另有一个 Composer 官方模型菜单内的思考强度快捷滑块(改编自 HanaAyane 的 dsh-reasoning-effort,见致谢)。
为什么需要它
llm-pi-ai 适配器原生支持每模型声明 reasoningEfforts 与 input,但官方「模型」页编辑卡刻意不暴露这两个字段。于是第三方模型在 Composer 里没有思考档位选择器,只有官方 DeepSeek API 能设思考强度,手工声明的模型被当作纯文本,想配置只能手写 settings.yaml 块。本插件把这两份配置能力都搬回 UI:官方模型编辑卡内直接编辑,加一键自动适配。
特性
- 官方页内注入 — 官方「模型」页每个模型行的展开区内出现「选项」编辑块(思考强度、输入模态、端点兼容),随卡片自身的**「保存」**统一提交;改动即时进入待写入,「取消」则与卡片字段一起丢弃。
- 自动适配 — 一键填入推荐档位、线上取值与模态,来源是内置模型知识库(15 家厂商 65 个条目,见支持的模型)、线协议推断,以及对供应商原始
/models列表的同源探测;每条建议标注置信度,参考容量以只读提示出现、自行照抄。 - 自动填充 — 未声明的模型在启动时补一份推荐声明,会话中新增的也会补写(
autofill: false/modalityAutofill: false可关);已声明、显式false、刻意撤销的标记一律不动。 - 三种意图 — 全不勾 = 取消声明(回到继承);只勾 off = 禁用推理;勾选档位 = 写入声明。
- Composer 思考强度滑块 — 官方模型菜单的弹出体被替换为上游风格的档位滑块(拖动 / 键盘,乐观提交、被拒回滚),附一行模型条目打开官方模型列表;右下角触发钮保持原样。切换模型会通过会话记忆链沿用你的档位(issue #4 的每模型默认档跨会话优先)。
- 每模型默认思考强度 — 模型行上的「默认思考强度」选择器,存在设置文档里,每个新会话打开该模型即用它。
- 请求头与 User-Agent — 提供商卡片内编辑官方的
headers字段(掩码显示、路径合并、随卡片保存),并在 fetch 层按 origin 精确接管user-agent的覆盖(官方适配器保留该名称);同源/models探测一并覆盖,冲突时提示而不猜。 - 防御式注入 — 一切锚定官方页 DOM;官方升级改变结构时注入自动暂停,官方页不受影响。
- 双语文案(中文 / English)。
支持的模型
自动适配知识库内置 15 家厂商 65 个条目(DeepSeek、OpenAI、Anthropic Claude、Gemini、Grok、Qwen、GLM、Kimi、Mistral、MiniMax、MiMo、豆包、混元、阶跃、文心——2026-08/09 逐条对照官方文档复核,含视觉变体与无档位控制家族)。完整表格——匹配写法、档位 → 线上取值阶梯、默认档、模态、参考容量——见 docs/supported-models.md(由 src/knowledge.ts 生成,代码是权威数据源)。未列出的模型回退到协议推断 + 通用档位,可手动调整。
安装
需要 DeepSeek Harness 0.1.5-alpha.1 或更高(按行联合的 peer 范围;0.1.2-rc / 0.1.3-alpha 线不再支持——请使用插件 0.3.7)。当前对照 0.2.0-rc.2 编译与门禁。逐内核 seam 核查记录见 docs/compatibility-notes.md。
从 npm 安装(dsh 的 web profile 下):
dsh plugin --profile web add dsh-better-reasoning-effort
DSH 内置的 pnpm 11.7.0 默认 minimum-release-age 为 24 小时:在某个版本发布后一天内发起的安装会解析到「足够旧的最新版」并安装它,而插件管理器显示的仍可能是更新的那一版。写明版本号即可立刻安装——pnpm 接受指定版本,并把它记入豁免:
dsh plugin --profile web add dsh-better-reasoning-effort@0.5.2
release 页面同时附带打包好的 tarball,这条路线跳过 registry 与发布冷静期。tarball 是成品,pnpm 不执行任何脚本,也不需要构建授权。URL 指向单一版本,升级时替换它即可:
dsh plugin --profile web add \
https://github.com/HaoyueQin/dsh-better-reasoning-effort/releases/download/v<version>/dsh-better-reasoning-effort-<version>.tgz
从 GitHub 源码安装,用于开发与审查而非日常安装。pnpm 要跑 prepare 钩子构建 lib/,且只在 allowBuilds 存在对应条目后才放行。安装器会打印确切的键,该键包含解析到的 commit:把它加进 profile 的 pnpm-workspace.yaml 后重新执行 add。新 commit 会改变这个键,因此每次发版都要重新授权;不含 commit 的键形式需要比内置的 11.7.0 更新的 pnpm:
dsh plugin --profile web add github:HaoyueQin/dsh-better-reasoning-effort
或链接本地检出做开发:
npm install && npm run build
dsh plugin --profile web add link:D:/Project/dsh-better-reasoning-effort
重启 dsh web 并强制刷新浏览器。
使用
- 在官方「模型」页配置第三方供应商(API Key 等)。
- 展开某个模型行:官方容量字段下方是编辑块。
- 勾选档位(off / minimal / low / medium / high / xhigh / max),填线上取值(如给
high填ultra,Composer 选 High 时网关收到ultra); - 在「输入模态」区勾选图片输入,声明模型接受什么;
- 点「自动适配」填推荐档位与模态——参考容量以只读提示出现,可自行照抄进官方输入框;
- 改动即时进入待写入,点卡片自身的**「保存」时一并落盘;「取消」**(或刷新)则与卡片字段一起丢弃。
- 勾选档位(off / minimal / low / medium / high / xhigh / max),填线上取值(如给
- 协议兼容时,底部会出现「端点兼容」分区——
openai-completions上设思考预算字段 / vLLM 优先级,openai-responses上设max_output_tokens的处理方式。 - 全不勾 + 保存 = 取消声明(回到继承);只勾 off + 保存 = 禁用推理(
false);模态行「清除声明」+ 保存 = 回到继承提供方默认。
声明后的模型在 Composer 里立即可选思考强度;声明了图片输入的模型可以端到端传附件。
配置
host 侧接受可选配置项(以下为默认值):
- insert:
- id: dsh-better-reasoning-effort
name: dsh-better-reasoning-effort
config:
autofill: true # 启动时自动填充未声明的模型
modalityAutofill: true # 上述填充是否连带输入模态声明
probeTimeoutMs: 15000 # /models 探测请求超时(毫秒)
bootRetryDelaysMs: [1000, 2000, 4000, 8000, 16000, 30000]
defaultGuard: true # 强制思考梯子上的无档位调用落厂商默认档
工作方式(架构)
Browser (lib/client.js) Host (lib/index.js)
├─ DOM injector └─ Auto-fill
│ MutationObserver on the models page settings/document-updated →
│ → mounts EffortEditor in each invalidates the host cache;
│ model row's disclosure browser idle pass fills models
├─ Composer injection
│ MutationObserver on the document
│ → ComposerSlider (root pane)
├─ EffortEditor (React component) (knowledge base + inference)
│ level checkboxes / wire values /
│ input-modality toggle /
│ auto-adapt (zoned suggestions) / committed with the card's Save
│ └─ writes settings.mutate (llm-pi-ai)
src/knowledge.ts的suggestEfforts()是知识库 + 推断引擎——host 与浏览器共用的纯函数。src/client/injection/models-page-editor.ts的reconcile()定位模型行并挂载编辑器;浏览器侧由src/client/index.ts组装,每个注入缝一个模块(src/client/injection/)。src/client/ops.ts的createEditorApi()经settings.mutate写声明,保留行上其他字段,版本冲突时重读并重试一次。
开发
npm run typecheck # tsc 严格检查
npm test # vitest:知识库 / 推断 / 自动填充 / DOM 注入 / 写入
npm run build # lib/*.js + lib/client.js(module-loader bundle)
对照 0.2.0-rc.2 官方包编译与门禁;逐内核记录见 docs/compatibility-notes.md。
已知限制
- 注入依赖官方「模型」页的 DOM(aria-label / class);官方升级可能让注入暂停直至适配——期间官方页不受影响。
- 自动适配探测路由只应答回环与 IP 字面量 host(核心
/api的 Host 白名单纪律、无trustedHosts旁路),且从不跟随重定向——只在 30x 后面列模型的网关拿不到端点证据,自动适配回退到知识库与协议推断。 reasoningEfforts声明是建议——端点真正接受什么以它的文档为准,请在 UI 里微调;知识库不追求穷尽,没有档位阶梯的家族不设条目。- 端点兼容开关刻意永不自动填充:它们描述的是网关行为而非模型能力。
- 模态词汇跟随 pi-ai 核心(当前
text/image);更宽的网关支持(PDF / 音频 / 视频)按家族记录在案,核心词汇扩充前声明不了是设计使然。 - 命名启发式的模态建议(视觉风味 id)刻意标注低置信度,使用前请核对。
- 自建中转:对没有官方 host 认领的路由,自动填充会钉
supportsDeveloperRole: false(部分上游拒绝developer角色);显式值永不被覆盖。 - 强制思考模型(无
off的梯子,如 GLM-5.3):无档位调用自动落厂商默认档而不是发thinking: disabled——设defaultGuard: false可恢复原行为。 headers中的凭据在磁盘上不脱敏:只读视图会掩码,但设置文档仍明文保存——请当 API key 对待。- 请求头区域的编辑态检测读取非官方信号(官方行没有编辑器状态的 data 属性);官方若改名该类词根,区域会停止出现——绝不弄坏页面。
- 同一时间只应有一个
user-agent改写器:同类 header 插件落在同一层,后写者赢;插件会检测并提示已知同类,但不覆盖未知情况。 - 请求层接管依赖官方适配器每请求新建 SDK 客户端——有端到端测试守护该边界,变化时会响亮地失败而不是静默失效。
致谢
Composer 滑块改编自 HanaAyane 的 dsh-reasoning-effort(MIT)——感谢原作者与 codex 风格档位控件的创意。本集成保留了上游的会话选择契约与滑块交互形态,并有意做了几处改变:只保留白色圆钮(不带 chibi 小鱼钮)、绝不替换官方模型席位、以精简重实现跑在 0.1.5-alpha+ 线上。如果用过上游插件,请先移除以免同一席位出现两个档位控件:
dsh plugin --profile web remove dsh-reasoning-effort
Activity
License
MIT
链接
同类插件
V1ki/dsh-plugin-subscriptions★ 422
把 ChatGPT(Codex)、Claude、Grok 订阅当作 DeepSeek Harness 的 LLM 提供方:设置页登录、模型目录、用量展示,以及 image_generate、video_generate 与 x_search 工具。
Mars-Sea/dsh-commandcode-provider★ 370
非官方 Command Code 模型接入插件:注册 `commandcode` 路由,带实时模型目录与推理强度支持。
corrinehu/dsh-workbuddy-connect★ 303
将 WorkBuddy 桌面 App 包含的模型自动接入 DeepSeek Harness,在 DSH 对话窗口里零配置使用。
cv-superding/dsh-deepseek-web-login★ 230
新增 deepseek-web provider,把 chat.deepseek.com 网页端模型接入 DSH:浏览器登录抓取、PoW 请求签名、SSE 流式传输与基于提示词的工具调用。
FishBottle7/opencode2dsh★ 143
将 OpenCode Zen 免费模型接入 DeepSeek Harness,无需 API Key。
WSL043/dsh-codex-subscription★ 142
通过 ChatGPT OAuth 在 DSH 中使用 Codex 模型,提供订阅联网搜索、额度与安全重置、图片工具、高速模式和模型感知上下文;无需 API Key 或 Codex CLI。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。