Pular para o conteúdo principal
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.

Instalar

dsh plugin --profile web add github:lli-wenze/dsh-model-console

README

模型控制台 · 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

Plugins relacionados