dsh-model-advanced: Set default inference strength and image handoff by model

前言

在 DeepSeek Harness(DSH)里,模型适配器(adapter)通常按提供商一次性描述模型能力:同一 provider 下往往只有一个「默认推理强度」,也无法表达「纯文本模型收到图片时该怎么办」。实际对话里,快模型和推理模型希望不同的起始 effort;纯文本模型若直接丢图,要么图片被丢弃,要么整轮失败。社区插件 dsh-model-advanced(维护者 drm-nz,分类:模型推理)在 Settings → Models 页面底部增加一张配置卡片,并在运行时实现对应行为:每个模型独立的默认推理等级,以及为不能读图的模型指定「代读」模型。

这是什么

dsh-model-advanced 是 DSH 插件,简介为:Per-model default reasoning effort and image handoff for text-only models. A DeepSeek Harness plugin. 配置写入插件自有命名空间 model-advanced,键为 provider/model,与 adapter 解耦,因此同一 provider 下两个模型可以各自有不同的默认 effort,adapter 未描述的模型也能设默认项。

目录页:https://www.skillhub.cn/plugins/drm-nz/dsh-model-advanced
源码与说明:https://github.com/drm-nz/dsh-model-advanced(许可证 MIT,package 版本 0.1.0)

核心功能

Models 页 Advanced 卡片

在模型列表下方,每个已配置模型一行,两列可设:

列 含义
Model 模型名称、provider、id
Default reasoning level 对话尚未选择等级时的起始推理等级;空选项表示不覆盖
Image understanding 对不能读图的模型:指定代其读图的模型

默认推理等级如何生效

README 说明通过四处衔接覆盖「选了等级 / 没选等级 / 从未选等级」等路径:

  1. 装饰 resolveModelInfo,让模型目录展示配置的等级,Composer 的 Effort 菜单以此打开。
  2. 装饰 resolveCallConfig,选模型但未指定等级时,保存配置的等级而非 adapter 自带默认。
  3. agent/request waterfall 覆盖从不选等级的入口。
  4. 启动后一次 reconciliation(composition 事务 settle 之后)对齐全局默认选择与配置等级。

插件 dispose 时会恢复上述 prototype 装饰。

图片转交(image handoff)

为不能读图的模型配置 delegate 后,当一轮携带图片时:

  1. delegate 调用一次,附带保留版式的转写指令:一行摘要、阅读顺序、各文本区域及约 0–1000 尺度的包围框、表格用 GFM、图表与 UI 状态说明。
  2. 结果以 image transcript note 追加到 step,并命名图片 id。
  3. note 带 [dsh-image-handoff:<id>] 标记,从 session 历史读回,重试与后续轮次不再对 delegate 计费。
  4. 图片仍留在对话中;发给纯文本模型的 wire 仍是占位符而非原图,模型读的是转写文本。

后续追问时,模型可调用:

inspect_image(image_id, question)

同一图片会再次交给 delegate 并带上问题,避免纯文本模型被固定在一次读图结果上。delegate 失败不会终止整轮,会在 transcript 里记一条无法读图说明。

如何判断模型能否读图

按成本从低到高:

  1. provider 配置里模型声明的 input modalities。
  2. 仅对配置未描述的模型调用 discoverModels(普通页面加载可保持离线)。
  3. 从同一 model id 在其他已配置 route 上推断。
  4. 勾选 This model reads images,在以上均未知时固定能力。

安装与启用

需要已安装带插件管理器的 DeepSeek Harness。官方安装命令如下:

dsh plugin --profile desktop add github:drm-nz/dsh-model-advanced

然后重启应用。插件分 host 半(lib/index.js,启动加载)与 browser 半(lib/client.js,由安装包提供),不重启两者都不会生效。

卸载:

dsh plugin --profile desktop remove dsh-model-advanced

依赖 @deepseek-ai/dsh-llm、@deepseek-ai/dsh-tools、@deepseek-ai/schemastery,须从 profile 解析且与当前 Harness 版本匹配;插件装饰 runtime prototype,天然版本耦合。README 中有 Compatibility 小节可对照。

本地 link 安装见 README 的 From a local checkout;cordis.patch.yml 入口名为 bare dsh-model-advanced,link 安装需注意 import 解析方式。

典型用法

界面配置

在 Settings → Models 底部卡片中为每个模型选 Default reasoning level 与 Image understanding(effort id 须与 adapter 列出的等级 id 一致,从卡片列表选,勿猜)。

手写 YAML

卡片写入的命名空间也可直接编辑,示例来自 README:

- id: model-advanced
  config:
    modelDefaults:
      "deepseek/deepseek-chat": high
    imageDelegates:
      "deepseek/deepseek-chat": { provider: openai, model: gpt-5-mini }
    imageCapable:
      "openai/o4-mini": true
Key 形状 含义
modelDefaults provider/model → effort id 该模型起始推理等级
imageDelegates provider/model → { provider, model } 代读图片的模型
imageCapable provider/model → true 无法自动发现时固定「能读图」

启动自检

每次启动、composition settle 后,会向 ~/.dsh/health.log 追加一行,例如:

2026-11-01T02:00:42Z dsh-model-advanced ok   patch=live tool=live defaults=2/2
2026-11-01T02:00:42Z dsh-model-advanced warn patch=live tool=live defaults=1/2 stale=deepseek/old-model
  • patch:两处 prototype 装饰是否仍为插件安装的函数;dead 表示 Harness 内部变动导致默认等级不再生效。
  • tool:inspect_image 是否已注册。
  • defaults:配置的默认等级有多少能在 resolveModelInfo 读回且仍被模型提供;stale= 列出已失效项(常见于 effort id 改名)。

查看:

tail -n 2 ~/.dsh/health.log
grep -v ' ok ' ~/.dsh/health.log

可通过 DSH_HEALTH_LOG 改写入路径。自检失败不会阻止插件加载;客户端也会根据模型目录在 Composer 显示一次 warning toast(健康时不显示)。

适用场景与注意

适合在 DSH desktop profile 下同时使用多种模型:需要「按模型」而非「按 provider」设默认推理强度,或主对话用纯文本模型但对话里会出现截图、图表等图片的场景。

DSH 生态理念是「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。插件以当前 DSH 进程权限运行,安装前建议阅读源码与 MIT 许可证,确认 delegate 模型与 API 调用符合你的策略。

结尾

dsh-model-advanced 把 adapter 难以表达的「每模型默认 effort」和「纯文本模型的图片代读」收到 Models 页一张卡片和 model-advanced 配置里,并在请求链路与 inspect_image 工具上落地。进一步了解可访问 SkillHub 目录页 与 GitHub 仓库。

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

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

Xiaoye