L
dsh-model-console
lli-wenze/dsh-model-console
Model console panel: switch the model for every conversation at once or one at a time, filter sessions by idle time, fold subagents under their parent session, and bulk archive or release sessions.
설치
dsh plugin --profile web add github:lli-wenze/dsh-model-consoleREADME
模型控制台 · dsh-model-console
一个面板统管 DeepSeek Harness 里所有对话的模型选择:一次性批量切换,也能单独改某一个对话;顺手还能按闲置时间清理用不上的会话。
装在侧边栏「全局面板」里,紧挨着「插件」那一行。
功能
- 统一设置:选一个模型,一键
应用到所有对话,四路并发,失败的那条单独留着继续勾选,点一下重试。 - 逐行切换:每个对话一行,模型按钮点开是可搜索的浮层(按服务商分组、显示计数、当前项打 ✓),有推理等级的服务商旁边多一个等级下拉。
- 子代理树形折叠:每个主对话下挂它自己的子代理,行首
▸ N就地展开/收起。勾主对话 = 连它的子代理一起勾上(收起状态下也算),不会漏删。 - 按闲置时间筛选:
全部时间 / 1 / 3 / 7 / 14 / 30 / 90 天以上没用过,每行副标题显示· 3 天前。 - 批量归档 / 释放:勾选后一键归档(
stopActivity会先把这个会话的 turn、子代理、后台任务停掉,不当场报session-active),已归档的会话收进底部一个灰色的折叠组,在里面勾选就能批量释放回来。 - 用量与花费:每行右侧显示该对话的 token 总量(悬停看输入 / 输出 / 缓存读 / 缓存写四项),下方一张「用量与花费」卡汇总全局 token 与估算金额。用量直接读会话的
tokenUsage投影(session.list本来就带,不额外发 RPC);价格取自插件内置的参考价表,选择器里每个模型后面也会标$输入 / $输出(美元 / 百万 token)。 - 手动探活 + 延迟 + 绿灯:工具栏点
探活,逐个问一遍每个服务商的模型清单接口,回来的亮绿色圆灯并标出往返毫秒,失败的亮红灯、悬停看错误原文。灯按服务商算(一条路由一个灯),对话行、选择器分组标题、选择器每一项都会同步显示。 - 中英双语:跟随界面语言,76 个键两套齐全。
关于价格
DSH 本体不携带任何价格数据:buildModelCatalog() 返回的模型条目只有 id / name / reasoning / badge,dsh-llm-pi-ai 的源码里也写明了它从不读 cost 元数据(replay.ts 会把它清零,没有任何消费方上报花费)。所以面板里的金额只能来自插件自己维护的参考价表:
- 先按 provider + model 精确匹配(同一个 model id 在不同网关账单不同),再退化到按 model id 匹配。
- 表里没有的模型不显示价格,只显示 token 量——宁可不显示,也不编一个数。
- 金额是估算,不是账单;
cacheRead默认按输入价的 10%、cacheWrite按 125% 折算,实际以服务商计费为准。 - 想改价,直接改
client.js里的PRICE/PRICE_BY_PROVIDER两张表,刷新页面即生效。
关于探活
探活走的是一次 GET <baseURL>/models(anthropic 协议是 GET <baseURL>/v1/models)——只是拉模型清单,不产生任何 token 费用,代价就是一次网络往返。
- 只在你按下按钮时才发,没有任何定时或自动请求:什么时候往外发流量由你决定。
- 一个服务商一个灯。同一个 provider 下几十个模型共用一条路由,一条 GET 就代表它们通不通,所以不会因为模型多而把请求数放大。
- 逐个串行,不并发轰。想再看一次就再点一次,结果整体覆盖。
- 显示的是探活往返时间,不是首 token 时间(TTFT)。TTFT 要从会话事件流里重建,只反映历史、不反映「现在通不通」,代价也高得多。
- 有些 provider 的内置模型清单会直接本地返回、一次网络都不发(pi-ai 自带 catalog 的那些)。那种情况下灯依然会绿,但毫秒数只代表一次本地查询,不代表网络状况——本 profile 里配的
ohub/xunnia/qnaigc/shusheng/qun都是自声明路由,会真的发请求。 - 宿主没有
remote.llm.discoverModels时,探活按钮根本不渲染,面板其余部分照常。
安装
从插件市场
插件市场(dshmarket)里搜 dsh-model-console,点安装。
从 npm 命令行
dsh plugin --profile <你的 profile> add dsh-model-console
桌面端请注意:应用自己的插件管理器管理的是 desktop profile,命令行装 web profile 不会出现在桌面应用里。桌面端请在 设置 → 插件 里装。
版本兼容
- 声明了
dsh.engines.dsh: ">=0.2.1",装到太旧的宿主上会被拦下,而不是装进去静默坏掉。 - 运行时还做了一次能力探测:宿主没有
uiWorkspace.archiveSession/unarchiveSession时,批量归档、批量释放两个按钮和归档组会直接不渲染;没有remote.session.modelCatalog时页面给出明确报错而不是白屏;没有remote.llm.discoverModels时探活按钮不出现;侧边栏插槽不存在时主面板照样能挂上。 - 只用到一个外部运行时依赖:
react。
开发
# 本地联调:把这个目录 link 到宿主 profile 的 node_modules 即可热更新
dsh plugin --profile <profile> add link:C:\path\to\model-console
改 client.js 刷新页面就生效,不用重装。
许可
MIT