C
deepseek-harness-plugin
cci-65/deepseek-harness-plugin
为第三方模型配置推理强度档位,并在输入栏提供模型与强度选择器。
安装
dsh plugin --profile web add github:cci-65/deepseek-harness-pluginREADME
model-strength-picker(模型思考强度选择器)
为 DeepSeek Harness(DSH)的第三方模型补充可配置的思考强度档位。
UI 分两处:
- 模型选择器座位(
conversation.input.model插槽,低优先级顶替内置选择器):点击输入框工具行的「选择模型」按钮,弹出 290px 宽的居中浮层(按model-strength原型):顶部胶囊(档位名 + 模型名 + ›)、底部推理强度滑块(轨道、档位圆点与旋钮全部为 SVG 几何:<rect rx>/<circle>,不使用border-radius、clip-path、transform或百分比宽度,因此在桌面端与网页端渲染一致);点击胶囊在其正下方以 150ms 淡入展开模型下拉(44px 选项行、按压实色、选中 ✓,外部按下/Escape 收起,Ctrl+Shift+M 切换,档位名 150ms 淡入淡出)。浮层相对触发按钮水平居中、置于上方,随滚动/窗口变化重定位;面板崩溃时自动退位、内置选择器无缝接管。数据与/model命令共享同一份会话模型目录(ctx.modelDirectories),当前选中状态处处一致。 - 设置 → 模型 页底部(
settings.models.footer插槽):「思考强度档位」卡片,集中配置每个第三方模型提供的档位与思考开关格式。
它做什么
- 档位声明(第三方模型的核心缺口)
手工录入 / 发现的 OpenAI 兼容模型默认不声明任何 reasoning level,组合器的 Effort 菜单不会出现。本插件把你在面板里勾选的档位写进
llm-pi-ai配置中对应模型的reasoningEfforts(档位 id →reasoning_effort线级拼写;off留空 = 不发送参数)。providers是 volatile 配置,写入后立即生效,无需重启。- 可勾选档位:
off / minimal / low / medium / high / xhigh / max - 思考开关格式:DeepSeek 系模型经 OpenAI 兼容网关接入时「默认一直思考」,off 不发送参数无法关闭 —— 选择
DeepSeek 兼容会为该模型写compat.thinkingFormat: deepseek(off 发送thinking: {type: disabled},其余档位发送thinking: {type: enabled}+ effort)。
- 可勾选档位:
- 应用档位(当前会话)
滑块提交后调用内置
session.selectModel(provider + model + reasoningEffort),即组合器 Effort 菜单的同一通道,并作为新会话的默认选择持久化。
安装
任选其一(把 <路径> 换成插件目录的绝对路径):
- DSH Web UI:侧边栏「插件 / Plugins」→ 安装 → 本地路径
<路径>。 - 在 DSH 会话里让 agent 装:「请用 plugin_manager 安装本地 bundle:<路径>」。
- CLI:
dsh plugin --profile <profile> add <路径>
<路径> = 本目录(含 package.json 与 cordis.patch.yml)。本 bundle 零外部依赖,可离线安装。
使用
- 安装后(必要时刷新页面),点击输入框里的「选择模型」按钮即弹出模型 + 强度面板。
- 列表选模型、拖动滑块选强度,即选即用(提交完整选择,并保存为新会话默认)。
- 配置档位:打开 设置 → 模型,页面底部「思考强度档位」卡片列出所有第三方(OpenAI 兼容)模型——点「编辑」勾选要提供的档位、按需选择思考开关格式 → 保存。保存后立即生效,选择器的强度滑块即出现这些档位。
文件结构
model-strength-picker/
├── package.json dsh.bundle.patch + dsh.client(web 客户端模块)
├── cordis.patch.yml 插入宿主插件行(id: model-strength-picker)
├── index.js 宿主半边:空实现(全部逻辑在客户端模块)
├── client.js Web 面板(React,挂 conversation.composer.dock)
├── icon.svg / locale/ 插件卡片图标与展示文案
└── README.md
注意事项与边界
- 适用范围:档位声明只对
llm-pi-ai路由的模型可编辑;DeepSeek 官方路由(llm-deepseek适配器)自带 Off/Low/High/Max,无需也不可在此配置。 - 档位的线级拼写默认与档位同名(如
high→reasoning_effort: "high");网关自有词汇(如max: xhigh)可手动编辑 profile 的cordis.patch.yml微调。 - 面板写入
llm-pi-ai时会把读取到的该路由models列表整体回写(数组整体替换语义),因此对同一模型条目上其它字段是保留式编辑;与 Models 页共用同一配置层。 - 从 v0.1.x 升级:旧版的「子 Agent 默认」功能已删除。若你当时设置过,其值仍留在 profile 补丁
tool-subagent行的agentOptions.reasoningEffort,不需要时请在$DSH_HOME/profiles/<profile>/cordis.patch.yml中手动移除该键。 - DSH 处于开发者预览阶段,
settings/sessionremote 的形态可能变化;若更新后失效,按新版本调整client.js。
实现备注:滑块为什么用 SVG
桌面端(Electron 壳)曾经把滑块画错:档位圆点渲染成方块(border-radius: 50% 被丢弃)、旋钮渲染成方圆角(border-radius: 9999px 解析异常),而同样的写法在浏览器里完全正常。逐步排查后确认:
- 不是版本或缓存问题(已核对三份副本与符号链接);
- 不是圆角写法问题(隔离页面上
3px/50%/9999px/ SVG 四种写法在桌面端全部正常); - 因此把几何整体移入 SVG 后,桌面端与网页端渲染一致。
滑块相关的 border-radius、clip-path、transform、百分比宽度已全部移除,请勿在后续改动中重新引入。