dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
DSH 插件(上游 HaoyueQin/dsh-better-reasoning-effort 0.5.2 的 Fork):在官方「模型」页编辑卡里直接编辑每模型的思考强度(reasoningEfforts)与输入模态(input)声明,并支持一键适配;本 Fork 让出模型能力面板的席位。
| 项目 | 内容 |
|---|---|
| 插件名 | dsh-better-reasoning-effort —— 为第三方模型声明思考强度与输入模态 |
| 原作者 | HaoyueQin · GitHub @HaoyueQin |
| 原仓库 | https://github.com/HaoyueQin/dsh-better-reasoning-effort |
| 上游 npm 包名 | dsh-better-reasoning-effort(归原作者,本版不能沿用) |
| 本版 npm 包名 | dsh-better-reasoning-effort-fish |
| 许可证 | MIT,版权归原作者(本仓库 LICENSE 未做任何修改) |
| 本版基线 | 上游 master = v0.5.2(commit 52b584c) |
| 本版性质 | 个人客制化版(fork),非原创、非官方;上游 README 完整保留为 README.original.md / README_ZH.original.md |
署名与改动范围的完整说明见
NOTICE.md。再分发时请保留原作者署名。
llm-pi-ai 适配器原生支持每模型声明 reasoningEfforts(思考强度)与 input(输入模态),但官方「模型」页编辑卡刻意不暴露这两个字段。结果:第三方模型在 Composer 里没有思考档位选择器,只有官方 DeepSeek API 能设思考强度,手工声明的模型被当作纯文本,想配置只能手写 settings.yaml 块。
本插件把这两份配置能力搬回 UI:在官方模型编辑卡内直接编辑,加一键自动适配(内置模型知识库 + 线协议推断)。
| 能力 | 说明 |
|---|---|
| 官方页内注入 | 官方模型行展开区出现「选项」编辑块(思考强度、输入模态、端点兼容),随卡片自身的保存统一提交,取消则一起丢弃 |
| 自动适配 | 一键填入推荐档位、线上取值与模态:内置知识库(15 家厂商 65 个条目)+ 线协议推断 + 同源 /models 探测,每条建议标注置信度 |
| 自动填充 | 启动时补齐未声明模型的推荐声明,会话中新增的也会补写(autofill: false / modalityAutofill: false 可关) |
| 三种意图 | 全不勾 = 取消声明(回到继承);只勾 off = 禁用推理;勾选档位 = 写入声明 |
| Composer 思考强度滑块 | 官方模型菜单弹出体换成上游风格的档位滑块(拖动 / 键盘,乐观提交、被拒回滚),右下角触发钮保持原样 |
| 每模型默认思考强度 | 模型行上的「默认思考强度」选择器,写进设置文档,新会话打开该模型即用它 |
| 请求头与 User-Agent | 提供商卡片内编辑官方 headers 字段(掩码显示、路径合并),并按 origin 精确接管 fetch 层的 user-agent;同源 /models 探测一并覆盖 |
| 防御式注入 | 一切锚定官方页 DOM;官方升级改变结构时注入自动暂停,官方页不受影响 |
本版(本 Fork)相对上游的改动:让出官方模型能力面板的 settings.models.provider-card 席位,避免与 dsh-web 的模型能力插件冲突。 详见兼容与边界。
需要 DeepSeek Harness 0.1.5-alpha.1 或更高(按 peerDependencies 范围),当前对照 0.2.0-rc.2 编译与门禁。Node 要求 ^22.19.0 || >=24。
从 npm 安装(推荐):
# 桌面版
dsh plugin --profile desktop add dsh-better-reasoning-effort-fish
# Web 版
dsh plugin --profile web add dsh-better-reasoning-effort-fish
DSH 内置 pnpm 的
minimum-release-age为 24 小时:版本发布后一天内的安装会解析到「足够旧的最新版」。写明版本号可立刻安装,例如dsh-better-reasoning-effort-fish@0.5.8。
release 页面同时附带打包好的 tarball,这条路线跳过 registry 与发布冷静期。tarball 是成品,pnpm 不执行任何脚本,也不需要构建授权。URL 指向单一版本,升级时替换它即可:
dsh plugin --profile web add \
https://github.com/Fish-under-sea/dsh-better-reasoning-effort-fish/releases/download/v<version>/dsh-better-reasoning-effort-fish-<version>.tgz
从 GitHub 源码安装,用于开发与审查而非日常安装。pnpm 要跑 prepare 钩子构建 lib/,且只在 allowBuilds 存在对应条目后才放行。安装器会打印确切的键,该键包含解析到的 commit:把它加进 profile 的 pnpm-workspace.yaml 后重新执行 add。新 commit 会改变这个键,因此每次发版都要重新授权:
dsh plugin --profile web add github:Fish-under-sea/dsh-better-reasoning-effort-fish
链接本地检出(改源码用):
npm install && npm run build
dsh plugin --profile desktop add link:/path/to/dsh-better-reasoning-effort-fish
dsh plugin --profile web add link:/path/to/dsh-better-reasoning-effort-fish
安装后重启 DSH 并强制刷新浏览器。
high 填 ultra,Composer 选 High 时网关收到 ultra);openai-completions 上设思考预算字段 / vLLM 优先级,openai-responses 上设 max_output_tokens 的处理方式。user-agent 等自定义请求头。false);模态行「清除声明」+ 保存 = 回到继承提供方默认。声明后的模型在 Composer 里立即可选思考强度;声明了图片输入的模型可以端到端传附件。
host 侧接受以下可选配置项(写入 settings.yaml 的插件 config 块):
| 配置键 | 默认值 | 可选值 | 说明 |
|---|---|---|---|
autofill | true | true / false | 启动时自动填充未声明模型的推荐声明 |
modalityAutofill | true | true / false | 上述填充是否连带输入模态声明 |
probeTimeoutMs | 15000 | 正整数 | /models 探测请求超时(毫秒) |
bootRetryDelaysMs | [1000, 2000, 4000, 8000, 16000, 30000] | 正整数数组 | 启动时自动填充失败后的重试延迟(毫秒) |
defaultGuard | true | true / false | 强制思考梯子上的无档位调用落厂商默认档,而非发送 thinking: disabled |
示例:
- insert:
- id: dsh-better-reasoning-effort-fish
name: dsh-better-reasoning-effort-fish
config:
autofill: true
modalityAutofill: true
probeTimeoutMs: 15000
bootRetryDelaysMs: [1000, 2000, 4000, 8000, 16000, 30000]
defaultGuard: true
本 Fork 只做一处修复:请求头编辑器不再占用官方 settings.models.provider-card 席位,改挂官方卡片自身的编辑器容器。
原因是官方该席位为 keyed slot —— 注册表对同一 (key, priority) 只接受一个条目,第二个注册直接抛错。dsh-web 全家桶的 @linxin666/dsh-client-ui-model-capabilities(模型能力面板)注册的正是同一个 llm-pi-ai key、同一个默认优先级 0。两者都占时只有一个能注册成功,另一个的整块界面静默消失。因 dsh-web 走异步壳行加载,实际被挤掉的是模型能力面板(每模型思考强度 / 图片输入)。
| 修复前 | 修复后 | |
|---|---|---|
settings.models.provider-card 席位 | 本插件抢占 | 完整让给 model-capabilities |
| 模型能力面板 | 静默消失 | 正常显示 |
| 请求头编辑器 | 在卡片内(占席位) | 仍在卡片内 —— 改挂卡片自己的编辑器容器 |
改动落在 src/client/injection/provider-card.ts(新增)、src/client/index.ts(不再注册席位)与 src/client/injection/models-page.ts(接入页面扫描)。回归防护见 tests/client.spec.tsx 与 tests/provider-card.spec.tsx。
两者的插件 id、host 路由前缀(/dsh-better-reasoning-effort-fish/*)与包名都已分开,可在同一 profile 并存;实际使用建议只装一个,避免同一份设置被两套 UI 同时编辑。
Composer 滑块改编自 HanaAyane 的 dsh-reasoning-effort(MIT)。如果用过上游那个插件,请先移除以免同一席位出现两个档位控件:
dsh plugin --profile web remove dsh-reasoning-effort
已知限制
reasoningEfforts 声明是建议 —— 端点真正接受什么以它的文档为准,请在 UI 里微调。text / image);更宽的网关支持(PDF / 音频 / 视频)在核心词汇扩充前声明不了,这是设计使然。supportsDeveloperRole: false;显式值永不被覆盖。off 的梯子,如 GLM-5.3):无档位调用自动落厂商默认档而不是发 thinking: disabled —— 设 defaultGuard: false 可恢复原行为。headers 中的凭据在磁盘上不脱敏:只读视图会掩码,但设置文档仍明文保存 —— 请当 API key 对待。user-agent 改写器:同类 header 插件落在同一层,后写者赢;插件会检测并提示已知同类,但不覆盖未知情况。更多兼容性细节见 docs/compatibility-notes.md,支持的模型列表见 docs/supported-models.md。
npm run typecheck # tsc 严格检查
npm test # vitest:知识库 / 推断 / 自动填充 / DOM 注入 / 写入
npm run build # lib/*.js + lib/client.js
测试由 vitest 驱动,需先 npm install 安装依赖(全新 clone 不含 node_modules),再 npm test 运行;构建用 npm run build(lib/ 为构建产物,已被 gitignore,clone 里不含)。
本机在 DSH 文件沙箱下开发时,vitest 与 esbuild 需要额外处理(沙箱禁止子进程管道)—— 完整命令见 FORK.md。
本包是独立仓库(https://github.com/Fish-under-sea/dsh-better-reasoning-effort-fish),不在 dsh-fish 单仓内;但它是聚合包 @fish-under-sea/dsh-fish 的成员之一,可与聚合包内其他插件一起安装。
MIT,著作权归原作者 HaoyueQin;本版新增代码同样以 MIT 发布,再分发请保留 LICENSE 与 NOTICE.md。