主模型选择器旁的子代理模型选择器:按会话选择模型与思考程度,应用到所有进程内子代理。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:ringoage/dsh-subagent-model-picker
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
面向 DeepSeek Harness 的可视化、手动子代理模型选择器。
在主模型选择器旁边,为每一个进程内子代理挑一个更便宜 / 更快的模型(以及思考程度), 按会话持久化,零猜测。
为什么做它
「给子代理换便宜模型」这两天被做了很多遍,但它们都是替你决定:
| 方案 | 如何选择 | 谁决定 | 可预测? |
|---|---|---|---|
| 工具式 | 模型自己调用一个工具 | 模型 | ❌ 依赖当次运行 |
| 自动式 | 规则 / 计划模式判断 | 插件的策略 | ⚠️ 只跟它的规则一样好 |
| 命令式 | 你输入 /命令 |
你,命令式 | ✅ 但无可视状态 |
| 手动 GUI(本项目) | 主模型座旁的座位 | 你,可视化 | ✅ 确定 + 始终可见 |
dsh-subagent-model-picker 是这个分类里唯一一个可视化、手动的选择器:
主模型座旁的一个 GUI 控件,选择显式、一眼可见,并确定性地覆盖每一条子代理路径。
它给你什么
- 手动 — 你来选;不是策略,也不是模型自己。
- 可视化 — 主模型座旁的下拉(悬停胶囊 + 点击外部收起 + Esc)。
- 可预测 — 选择是会话状态;每个子代理都拿到你选的那个。
- 全局覆盖 — 一个 host 侧
agent/request监听器覆盖subagent、subagent_fork与 workflow 扇出(任意深度)。 - 思考程度 — 提供推理等级的模型(如
off/high/max)会有对应的「思考程度」菜单。 - 默认继承 — 在你选择之前,子代理沿用主模型。
- 按会话 + 持久 — 选择跟随会话,重启后仍保留。
- 本地化 —
zh/en文案。
互补,而非替代
自动路由插件(tier/smart/adaptive 路由、计划模式分类)与工具式 / 命令式回答的是 「替我选」;本项目回答的是「让我选」。它们可以组合:把自动路由当默认策略, 再用本选择器手动覆盖某个会话——或反过来。
工作原理
两个半区协作,完全不触碰 apiProxy 的 settings 白名单:
Host 半区(
lib/index.js)注册一个agent/request瀑布监听器。dsh-scope允许事件向上冒泡,因此这个 host-root 监听器能看到所有 agent 的请求;子代理通过agent.options.subagentDepth >= 1识别。它沿父链走到根会话,只对子代理覆盖{ provider, model, reasoningEffort? }。持久化 + 传输 走一个 Typert Remote 服务(
subagent-model-picker,wire 命名空间subagent-model-picker),暴露get/set/clear。Client 半区挂载 Remote 贡献 (ctx.remote.$mount)并调用remote.subagent-model-picker.*;服务在 host 侧 把sessionId -> { provider, model, reasoningEffort? }映射写入,因此完全不经过 apiProxy 的exposedNamespaces()白名单。
安装
一行命令(GitHub,兼容插件市场)
dsh plugin --profile web add github:ringoage/dsh-subagent-model-picker
这就是插件市场使用的 github: 安装路径,可直接从本仓库安装。
手动(编辑 profile)
在你的 web profile(.dsh/profiles/web/package.json)中,把包加为依赖并列入
dsh.profile.bundles:
{
"dependencies": {
"dsh-subagent-model-picker": "^1.0.0"
},
"dsh": {
"profile": {
"bundles": ["dsh-subagent-model-picker"]
}
}
}
然后重启 harness。本地开发可用 link: 依赖指向本目录。
使用
主模型选择器左侧会出现 子代理模型。选择一个模型(若提供,再选思考程度), 该会话派生出的所有子代理都会使用它。选择「继承主模型(默认)」即可恢复默认路由。
限制
- 只路由 进程内子代理:
subagent、subagent_fork与 workflow 扇出子任务。 外部 CLI agent(如claude-code、codex)自行管理模型选择,不受影响。 - 选择器是 Web 客户端 功能;host 路由在 GUI 未打开时依然生效,但选项本身在 Web 输入框中编辑。
开发
lib/index.js— host 半区(Remote 服务 +agent/request路由)。lib/client.js— client 半区(slot UI + Remote 贡献 + locale)。cordis.patch.yml— 挂载插件行的dsh.bundle.patch插入层。
Remote 服务运行在 SRC 模式:方法用纯 JS 手动施加 @Remote(name) 契约(无需生成
typert.host.js),client 贡献则手写 strict 描述符。
License
链接
同类插件
V1ki/dsh-plugin-subscriptions★ 407
把 ChatGPT(Codex)、Claude、Grok 订阅当作 DeepSeek Harness 的 LLM 提供方:设置页登录、模型目录、用量展示,以及 image_generate、video_generate 与 x_search 工具。
Mars-Sea/dsh-commandcode-provider★ 352
非官方 Command Code 模型接入插件:注册 `commandcode` 路由,带实时模型目录与推理强度支持。
corrinehu/dsh-workbuddy-connect★ 238
将 WorkBuddy 桌面 App 包含的模型自动接入 DeepSeek Harness,在 DSH 对话窗口里零配置使用。
cv-superding/dsh-deepseek-web-login★ 188
新增 deepseek-web provider,把 chat.deepseek.com 网页端模型接入 DSH:浏览器登录抓取、PoW 请求签名、SSE 流式传输与基于提示词的工具调用。
volcengine/ark-cli#ark-plan-api★ 140
在 DSH 原生模型选择器中注册方舟 Agent Plan、Coding Plan 与后付费模型路由。
franksong2702/dsh-codex-connect★ 129
通过 ChatGPT OAuth 将 OpenAI Codex 模型接入 DeepSeek Harness,并提供可选的搜索与图片工具。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。