DeepSeek Harness 的模型路由与 GALGame 插件
66.5/100
综合分
405
GitHub 星标
687
npm 周下载
—/5
用户评分
数据截至 2026/10/27 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add @ljwei-stak/dsh-model-routernpm 源 · @ljwei-stak/dsh-model-router 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · market
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 5 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包@ljwei-stak/dsh-model-router @ 0.25.2
✓Node 引擎要求 >=22.19 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/26 06:42:51
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件读取剪贴板或密钥环境变量写入剪贴板(不计风险)发起外部网络请求
扫描于 2026/10/31(1 天前) · 范围 入口文件闭包 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/cordis-plugin-group@deepseek-ai/cordis-plugin-include@deepseek-ai/cordis-plugin-loader@deepseek-ai/cordis-plugin-timer@deepseek-ai/dsh-agent@deepseek-ai/dsh-agent-default-model@deepseek-ai/dsh-agent-preset-registry@deepseek-ai/dsh-api-gateway@deepseek-ai/dsh-api-remotes@deepseek-ai/dsh-api-session-controller@deepseek-ai/dsh-app-boot给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
界面预览
1 张 · 点击查看大图最近更新
在 GitHub 查看全部 →v0.25.52026-10-26
修复 ZCode 的 Windows 内嵌终端渲染:制表符和 CJK 文本现在能正确显示,VT 颜色序列也能完整传到 xterm.js。每个新建的 ZCode ConPTY 都会在 Node 启动前用字面量 PowerShell 参数设置 UTF-8;现有系统设置和选定的已验证运行时保持不变。
npm 和 GitHub 两种 ZCode 安装方式都包含此修复。独立的 @ljwei-stak/zcode-cli 保持 3.16.2;通过 Desktop 的插件管理器把 router 插件更新到 0.25.5,完全退出应用(包括托盘进程),重新打开后再启动新终端。
验证:
· Windows 和 Linux CI 在提交 de82df4e737954ba0458d597ea82f9a6666c1a9b 上通过:运行 40285505587。
· 本地完整测试套件:1,228 通过,3 跳过,0 失败;冻结的严格依赖安装、生成的客户端和预览检查均通过。
· 真实 Windows ConPTY 回归通过:原生 UTF-8 制表符/CJK 输出、真彩色 VT、特殊字符路径/参数、Unicode 输入、调整大小、操作系统观测到的退出码 7 和清理。
· 实际发布的 ZCode 3.16.2 运行时加上真实 router 终端组件,在宽、窄两种宽度下做了目视检查,包括中文草稿输入和 Ctrl+C 退出码 0。未提交模型请求。这个隔离测试环境不声称已通过已安装 Desktop 应用的验收。
· 发布 tarball 含 86 个文件,导入闭包中有 44 个运行时文件。所有打包字节与公开源码提交的匿名检出结果一致。
SHA256: 4afda84956d06cc88768af474e73d410eead80146213d239c53b237d5baef0ef
SRI: sha512-pEh5iqen9IvDXXwUKtRV2EslRb0Jgj3wBEjQ/i3580eV/vCy1xDZ8N2mvZE0fk60f/x0F4M15qzlkMMxg5JgAg==
发布后验证:npm latest 为 0.25.5。匿名 npm 和 GitHub Release 下载的 SHA256/SRI 完全一致,且与已验证候选一致。npm 实际安装的全部 86 个文件与匿名 GitHub 源码检出结果一致;使用已安装包的 Host 代码和原生依赖,原生 ConPTY 回归同样通过。
v0.25.42026-10-26
ZCode CLI 的 Windows npm 安装现可处理旧桌面启动脚本导致的 EEXIST:安装前识别并备份旧 zcode、zcode.cmd、zcode.ps1,日志显示备份位置;失败或取消后恢复缺失入口,保留新文件和备份。未知冲突和链接路径保持保护,不使用 --force。
本机实际安装 @ljwei-stak/zcode-cli@3.16.2 成功,完整运行资源核验、版本、终端入口和托管就绪检查通过,没有调用模型。桌面资源、配置、登录和会话保留。
验证:本地1230项测试,1227通过、3项环境跳过、0失败;冻结依赖安装、实际client重建和一致性、双语README及离线预览通过。Windows/Linux Node24 CI:40279612130。
源码:a0bc64513d2015a5d3896bb794bdc591eec178e8。
附带的npm原始安装包含85个文件,全部与源码Git blob字节一致;44个运行时文件闭包完整。npm与本Release发布同一包,保留旧版本历史。
SHA256:ef34fb0d5d702a01b786d2129d2b229877618fbdcb1fe3e83e8db498a96a6c8e
SHA512 integrity:sha512-zV+p53jVkONrllNUFXmK5guTqL/nuie8nCZNBLzp4eKM116AtLrKT5A4EOTJVLfi6ZRDrscjsa1OSoU88nyPSw==
Harness“添加插件”输入 @ljwei-stak/dsh-model-router@0.25.4,或选择本Release的tgz安装包;更新后完全退出Harness(包括托盘)再启动。已有npm安装的ZCode可刷新工具体检确认状态。
详见 0.25.4验收记录。本次不宣称新增真实推理或已安装Desktop界面的端到端验证。
v0.25.32026-10-26
给 ZCode CLI 的安装方式选择器加上 npm,使用固定的公共包 @ljwei-stak/zcode-cli。GitHub Release 仍是原有的默认选项。
· npm 的安装、更新、修复、卸载都使用选定的 prefix 和 registry。版本检查和缓存跟随选定的通道。
· TUI、登录和托管任务使用选定的、已验证的 npm 运行时。完整运行时包含在 npm 包里,不再额外从 GitHub 下载运行时,也不回退到其他安装方式。
· 校验包的元数据、内嵌归档和解压后的运行时文件。禁用安装脚本时,准备一个专用的已验证运行时缓存。npm 卸载会保留配置、会话和已缓存的运行时资源。
· 在 Node 24 内保持 Node 24.14.0 或更新版本,保留现有路由绑定和 CLI 已配置的模型。
验证:本地 1,219 项测试(1,216 通过,0 失败,3 项因环境跳过),实际客户端构建/检查与预览检查。在真实 Windows 上,普通安装和 ignore-scripts 安装的 npm 安装、版本/帮助、终端/登录启动、托管就绪和卸载均通过,未发起模型请求。全部 83 个打包文件与 Git 一致,全部 43 个运行时模块均已包含。
来源:21b017998bc951aa8af7175015025c03d006bd47。
更新插件并重启 Harness Host。在 Official Tools → ZCode CLI → Installation Method 中选择 npm,然后安装或修复。
Windows/Linux CI 在对应的源码提交上通过。附件归档是已验证的 npm 载荷。
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。
README
由 DeepSeek 最新模型翻译生成模型路由 · DeepSeek Harness Desktop
English · 简体中文
dshfind dshfind 已收录至 DSH 插件目录 Awesome DSH Plugin
dshfind
想跟进版本更新?点右上角 Watch → Custom → 勾选 Releases(不必 Watching 全部活动)。
面向 DeepSeek Harness Desktop 的成本感知模型路由工作台。在本地规划任务、比较已配置路线、检查执行权限,并通过模型 API 或支持的厂商官方 CLI 执行有依赖关系的工作包。
当前版本:0.25.5(@ljwei-stak/dsh-model-router)。本次修复 Windows 内嵌终端中 ZCode TUI 的框线、中文乱码和残留颜色控制序列:在每个新建 ZCode PTY 中先设置 UTF-8,再启动 Node,系统设置不变。独立社区 ZCode CLI 继续提供 npm 和 GitHub Release 两种安装方式。沿用 0.2.1-rc.3 SDK 与已有 Host peer 范围。API 按金额核算并检查日/月预算和预占;订阅独立统计调用次数与已报告 token 用量。
展开完整文档(README 剩余 1 节)
模型路由 · DeepSeek Harness Desktop
English · 简体中文
dshfind dshfind 已收录至 DSH 插件目录 Awesome DSH Plugin
dshfind
想跟进版本更新?点右上角 Watch → Custom → 勾选 Releases(不必 Watching 全部活动)。
面向 DeepSeek Harness Desktop 的成本感知模型路由工作台。在本地规划任务、比较已配置路线、检查执行权限,并通过模型 API 或支持的厂商官方 CLI 执行有依赖关系的工作包。
当前版本:0.25.5(@ljwei-stak/dsh-model-router)。本次修复 Windows 内嵌终端中 ZCode TUI 的框线、中文乱码和残留颜色控制序列:在每个新建 ZCode PTY 中先设置 UTF-8,再启动 Node,系统设置不变。独立社区 ZCode CLI 继续提供 npm 和 GitHub Release 两种安装方式。沿用 0.2.1-rc.3 SDK 与已有 Host peer 范围。API 按金额核算并检查日/月预算和预占;订阅独立统计调用次数与已报告 token 用量。已确认的订阅通道不会仅因 API 预算用满或缺少 API 单价而被阻止;真正转 API 前须对实际路线重新估价并通过预算预占,混合结果分别保留两个通道的收据。工作台把 API 支出/预占与订阅用量分开,缺失用量保持未知。工作台支持实时耗时、逐工作包进度和取消,保留已完成结果与已报告费用;关闭重开面板可接管原任务。支持“按算法推荐分配 / 手动调整分配”:拆分后的工作包可逐个指定模型 API 或官方工具,保留依赖、重新预览费用,并保存重跑目标。同时接入任务相关质量证据、模型与推理档位联合选择、历史资源 P90 估计与依赖感知搜索。手动混合执行当前只读;官方工具使用自身默认模型,原有官方团队编辑流程保留。兼容 DeepSeek Harness Desktop 0.2.0-rc.1 / 0.2.0-rc.2 / 0.2.1-rc.2 / 0.2.1-rc.3,沿用 Hermes/Pi 安装与终端支持;两者仍无经过验证的托管执行器。真实厂商执行证据仍见 0.20.0 报告,本版未新增模型实测。路由器与 GAL 自 0.12.0 起已拆分为独立插件。
官方 CLI 协作按依赖顺序逐包执行、传递依赖上下文,不会自动回退到模型目录 API。可编辑团队需明确选择 Harness 沙箱或厂商 CLI 正常环境。后者通过 Git worktree 收集修改,但不限制操作系统访问。未显式设置模型映射时,各 CLI 沿用自身配置的模型。参见真实 Windows 验证及其局限。
两个 README 版本同步说明接口、公式、默认值与限制。更新日志保留版本历史。更多操作说明:工作台、安装、迁移、实验规程。
提交前快速评估
一句话价值: 面向 DSH 的成本感知模型路由工作台,可本地规划任务、选择模型路线,并在明确权限下执行有依赖关系的工作包。
类别: 模型与推理(Models & Reasoning),是社区目录分类中最贴切的一类;这是社区分类,并非 DSH 官方分类。
安装(DSH Plugin Hub / web profile): 确保 DSH CLI 可用,然后安装已发布的 npm 包:
dsh plugin --profile web add @ljwei-stak/dsh-model-router@0.25.5
安装到 Harness Desktop: 首次先启动一次 Desktop 初始化 desktop 配置,再彻底退出 Desktop,运行:
dsh plugin --profile desktop add @ljwei-stak/dsh-model-router@0.25.5
也可以在 Harness Desktop → 插件 → 添加插件 中粘贴包名。安装后重启 Desktop。单独运行全局 npm install -g 不会注册 Desktop 插件。
发布包与入口: npm 上的 @ljwei-stak/dsh-model-router@0.25.5。根目录package.json声明包名和 bundle patch;.dsh-plugin/index.mjs导出所需的 apply(ctx) 入口。许可证:MIT。
配置文件与配置入口: 当前不支持导入用户编写的 JSON/YAML 配置文件。Provider、模型和凭据在 Harness 模型页面配置;路由档案与偏好在插件设置中配置。路由器持久状态存于 $DSH_HOME/model-router/state.json(默认:~/.dsh/model-router/state.json)。Provider CLI 沿用各自的登录和配置;路由器不会把 API 密钥复制进模型档案或终端日志。
截图与证据: 工作台截图使用固定的模型、价格和健康状态数据,是模拟 UI 预览,不是实时 Harness 或模型运行。路由流程图展示执行路径。真实 Windows 验证报告记录了 0.20.0 的具体执行及局限;0.25.5 尚无经过验证的端到端厂商运行。实时进度截图是离线模拟;API/订阅分开计算与检查点见0.25.0 验收报告,SDK 兼容与验证边界见0.25.1 验收报告。
权限与风险: 任务规划在本地完成,不调用模型。实际执行会把选定任务和上下文发送到所选模型 API 或厂商 CLI,并可能产生费用。默认使用 Harness 受限环境;只读运行不修改工作区,workspace-write 需要用户明确批准。明确选择 cli-native 的可编辑团队会在 Harness 进程沙箱之外,以当前操作系统用户权限运行;Git worktree 只收集修改,不限制操作系统访问。外部 Provider 和 CLI 服务各自适用其数据处理及计费规则。
兼容性: 声明支持 DeepSeek Harness Desktop 0.2.0-rc.1、0.2.0-rc.2、0.2.1-rc.2、0.2.1-rc.3。源码构建固定使用已发布的 0.2.1-rc.3 SDK 包;保留旧版 peer 声明不表示离线测试已经替代安装版 Desktop 验收。Node.js >=22.19 与 pnpm 10.34.6 仅为源码开发/构建要求,不是插件运行时前置条件;不承诺超出上述 Host 版本的兼容性。
目录: 快速评估 · 功能 · 安装 · 工作台 · 架构 · 会话工具 · 官方工具 · 团队生命周期 · 费用 · 路由算法 · 数据 · 开发 · 排障
当前功能
| 能力 | 当前行为 |
| 任务规划 | 本地任务分类与复杂度分析;支持单路线推荐、有依赖关系的团队工作包或显式指定已配置模型。 |
| 模型配置 | 从 Harness 读取精确的 provider/model 路线;可补充质量、美元价格、擅长领域、CLI 模型名、执行与计费偏好。 |
| 路由预设 | 省钱优先、均衡和效果优先;结合质量下限、估计 token 费用和有界分配搜索。缺失价格保持未知。 |
| 只读执行 | 在工作台预览并确认路由执行,或在 Harness 官方会话中调用。支持的无头 CLI 与模型目录 API 调用均记录结果。 |
| 可编辑 CLI 执行 | 从工作台执行顺序 CLI 团队,或在会话中调用单个受支持 CLI;使用获批的隔离 Git worktree,并有条件地合入补丁。 |
| 官方工具 | 对注册表中的十二种工具检测、安装/更新、检查启动就绪和登录状态;安装任务提供日志和取消功能。 |
| 交互终端 | PowerShell/系统 shell 与十二种注册表 CLI 目标(包含独立 ZCode CLI TUI);包含固定登录命令、实时输出和多会话。 |
| 成本与订阅 | API 金额与并发预算预占、订阅调用/token 分别计算;缺失订阅用量保持未知,转 API 前重新估价并通过预算检查。 |
| 历史与质量 | 逐包结果、依赖视图、失败详情、重跑/改派、评分与可选的更强模型复核。 |
| 执行边界 | 显示每条路线可读写的范围,以及进程是否使用 Harness 沙箱。 |
生成路由建议在本地完成:不会启动厂商 CLI,也不会调用付费模型。实际执行可能产生费用。
本地规划与官方工具执行
安装到 DeepSeek Harness Desktop
打开 插件 → 添加插件,输入:
@ljwei-stak/dsh-model-router@0.25.5
镜像缺少该精确版本时,使用官方 HTTPS npm 源 https://registry.npmjs.org/。启用插件,然后完全退出 Harness(包括托盘进程)并重启。插件详情应显示 0.25.5,侧栏应出现 模型路由。仅执行全局 npm install -g 不会把插件注册到 Desktop。
也可以通过插件管理器安装本地 .tgz 压缩包,或解压后的内部 package 目录。两者都必须包含 package.json 和 .dsh-plugin。历史构建见 Releases,也可按下文从源码构建。
从旧包名升级
旧名称 @ljwei-stak/model-router-galgame 停留在 0.13.0。保留配置档/应用数据,移除旧插件条目,再添加 @ljwei-stak/dsh-model-router@0.25.5。不要同时保留两条插件:它们共用内部插件 id model-router-galgame 和工具名。保留该 id 能让现有路由设置与历史记录继续使用。
从合包 0.11.x 升级前,先备份配置档,并导出需要保留的 GAL 存档。剧情播放、立绘、音乐与存档现属于独立的 @ljwei-stak/dsh-galgame。详细存档限制见 MIGRATION.md。
使用工作台
工作台按流程分为四个导航页签。页头汇总已注册路线、检测到的工具和今日已记录的 API 费用。
| 页签 | 用途 |
| 任务与执行 | 描述任务、生成建议、选择路由只读执行或官方 CLI 协作、预览并确认,然后查看历史。 |
| 模型配置 | 刷新/搜索模型目录,编辑精确路线的配置。 |
| 官方工具 | 完成入门检查,查看/安装工具,使用交互终端。 |
| 预算与安全 | 设置路由、费用、复核策略,检查订阅状态与执行边界。 |
切换页签时面板保持挂载,正在进行的安装与终端状态不会因此丢失。
0.15.0 工作台预览:任务规划与路由建议
截图来自本地 UI 预览,使用预置模型、价格与健康数据,未连接真实模型或 Harness。展开工作包可查看目标、依赖和验收项。
1. 在 Harness 官方的 模型 页面配置供应商、模型和凭据,然后到 模型配置 刷新目录。路线出现在列表中,不代表凭据、网络或模型权限已可用。
2. 可选:为需要比较的路线填入质量与价格。价格单位是 美元/百万 token;质量是用户给出的 0–100 估值。未知价格请留空,不要填零。
3. 在 任务与执行 中描述具体交付物、约束与验收标准。选择 单任务(单个推荐)、团队分工(请求足够复杂时生成依赖工作包)或 指定模型(只使用一条精确路线,不比较其他路线)。只选择团队模式不会启动任何团队。
4. 设置本次估算预算;0 表示移除该规划约束。点击 生成路由建议,结果直接显示在规划区下方。检查路线、复杂度、费用、执行通道及各包的依赖/验收清单。
5. 在 在工作台执行 中,选择 模型路由(只读) 使用现有路由执行器;或先选择 团队分工,再选择 官方工具协作。官方协作可选择 只读检查 或 编辑文件。可编辑团队还需选择 Harness 受限环境(默认沙箱)或 厂商 CLI 正常环境(在 Harness 沙箱外运行)。填入已存在的工作区绝对路径,或沿用上次运行路径。点击 预览执行计划,查看各包、权限与所需确认,然后显式确认执行。Host 启动前会重新检查计划;条件变化可能要求重新确认。
6. 在 执行记录与子任务 查看实际通道、回答、失败、费用与评分。官方协作仅使用已安装、且在所选权限模式下就绪的 CLI 重新规划。编辑需要批准和干净的 Git 仓库;成功的 worktree 修改有条件地合入。该模式下,不可用或失败的 CLI 不会静默变成 API 调用。
执行开始后,工作台显示已耗时、当前工作包与每包状态。取消执行会请求停止当前调用,并阻止后续工作包启动;执行器完成收尾前持续显示正在取消。已完成结果和已报告用量仍保留在历史中。取消不能撤销已经产生的费用或已经整合的改动。关闭面板不会取消执行;同一浏览器会话重新打开后,可在 Host 仍保留该任务时重新连接。Host 重启会清除内存任务,已落盘的工作包结果与预算预占仍保留。确认执行进程已经退出后标记为 interrupted,不会自动续跑调用或释放预占。
预览、进度和取消请求最长等待 15 秒。进度读取超时后继续查询同一任务;取消未确认时可手动重试。网络等待超时不代表 Host 任务已停止,也不会自动重发 startRun。重跑历史步骤前,预算覆盖该步及实际会执行的全部未完成下游;改派使用所选路线估价,未知价格仍保持未知。超时恢复截图为离线模拟。
历史将活动/中断的预算预占与实际支出分别显示;有预占的运行不能重跑或改派。Host 崩溃或检查点保存失败后,请先核对原任务、保留的 worktree 和供应商账单;本版没有手工核对并释放预占的操作入口。不要通过删除状态把占用当成可用额度。
修改任务文本、规划模式、路线配置、目录或相关设置,会使旧建议失效。修改执行输入也会丢弃待确认或已完成的预览,必须对当前请求重新预览。执行预览使用 Host 当前状态,因此可能与先前本地计划不同。
任务示例:
审查本项目并准备实施计划。
1. 梳理入口,识别主要 UI 流程。
2. 在宽、窄视口检查界面,列出布局问题。
3. 检查执行与计费边界。
4. 汇总为按优先级排列的改进清单,并给出验证步骤。
路由器规划并委派文本/代码任务。它本身不渲染视频、不生成美术,也不操控创作软件。
架构与执行契约
Host 负责路线发现、设置、审批、工作区验证、进程启动和持久化账本。React 客户端请求预览并展示 Host 结果。规划、托管执行与安装 RPC 请求使用固定字段,不能指定任意可执行路径、安装包或下载地址。交互终端是独立确认的通道,允许向已启动的 shell/CLI 输入任意用户文本。
flowchart TD
UI[工作台或 Harness 会话] --> PLAN[本地规划器与路线配置]
PLAN --> PRE[Host 预检与确认]
PRE --> ROUTED[路由只读执行器]
PRE --> TEAM[官方 CLI 团队执行器]
ROUTED --> CLI[支持的无头 CLI]
ROUTED --> API[Harness 模型 API]
TEAM --> MODE{权限模式}
MODE -->|read-only| SANDBOX[Harness 沙箱]
MODE -->|workspace-write| WT[隔离 worktree]
WT --> ENV{显式选择执行环境}
ENV --> SANDBOX[Harness 沙箱]
ENV --> NATIVE[厂商 CLI 正常环境]
SANDBOX --> PROCESS[官方 CLI 进程]
NATIVE --> PROCESS
PROCESS -->|editable success| PATCH[基线检查与补丁合入]
PROCESS --> LEDGER
CLI --> LEDGER[结果、身份、用量与费用账本]
API --> LEDGER
PATCH --> LEDGER
| 路径 | 选择与权限 | 失败/回退行为 |
| 模型路由执行 | model_router_execute / 工作台 executor: "routed";只读;按执行/计费策略使用 CLI 或 Harness 模型 API。 | 符合条件的 API 回退遵循已配置的订阅策略。 |
| 官方 CLI,Harness 环境 | 单工具 model_router_tool_run 或团队执行;仅支持当前已适配且就绪的 CLI 模式;必须使用 Host 沙箱。 | 缺少约束能力或未就绪时阻止启动。不自动回退 API。 |
| 官方 CLI,正常环境 | 仅限可编辑官方团队:official-team + workspace-write + cli-native;单独要求用户确认。 | 以当前用户权限运行,sandboxEnforcement: "none"。不会自动切换环境,也不自动回退 API。 |
检测到不等于执行验收通过。 安装版本、可信启动入口、登录状态、支持的权限模式、网络连通性和模型权限是不同检查。交互终端中可用的 CLI,在受限任务中仍可能不可用:适配器、平台、沙箱与所选安装必须全部匹配。
工作台 RPC
经过认证的 Host remote 是 ctx.remote.modelRouterOfficialTools,定义于 official-tools-remote.mjs。它是挂载客户端使用的内部接口,并非独立的公共 HTTP API。预览请求结构如下:
{
"task": "Analyze this repository's logging, implement a small improvement, and verify it.",
"executor": "official-team",
"planMode": "team",
"executionMode": "workspace-write",
"executionEnvironment": "cli-native",
"workspace": "C:/work/example-repository",
"budgetUsd": 1,
"preset": "balanced"
}
将工作区替换为已存在且干净的 Git 根目录。调用 previewRun(request),用客户端 unwrapRemote 辅助函数解码响应,展示计划和 reasons;被阻止时停止。预览不调用模型,也不创建 worktree;入口、版本和完整性检查可能联网。只有用户接受所有当前原因后,客户端才可调用 startRun({ ...request, confirmedReasons: preview.reasons.map(r => r.code) })。
正常环境编辑通常要求 workspace-write 和 unsandboxed 确认;超预算还会增加 over-budget。不要硬编码该列表,也不要未经同意自动填入。startRun 会重新规划和预检,不会消费一个冻结的预览令牌。出现新的确认要求时,返回 needs-confirmation,并给出 missing 与更新后的原因。修改任务、模式、工作区或路线配置后必须重新预览。工作台请求使用已保存路线的 cliModel 映射;临时 cliModelsJson 绑定属于下文的会话工具。
startRun 接受执行后,在任务完成前返回含 jobId、status 和 progress 的任务快照。通过 runStatus({ jobId }) 读取状态,通过 cancelRun({ jobId }) 请求取消。任务状态为 running、cancelling、completed、cancelled 或 failed。终态快照的 result 包含最终工作台响应,以及成功保存后的账本 runId。completed 表示后台执行已结束,任务实际结果仍查看 result.status。进度仅包含工作包身份与状态,不包含回答正文。读取状态失败不代表执行已停止,客户端不得因此自动重发 startRun。
会话工具
请在 Harness 官方会话中调用这些工具。访问本地文件的任务应先配置会话工作区。
| 工具 | 用途 |
| model_router_routes | 列出已配置路线;不验证账号/网络可用性。 |
| model_router_plan | 生成本地 single 或 team 计划。 |
| model_router_consult | 通过模型 API 向一个已配置模型请求真实的第二意见。 |
| model_router_execute | 执行只读路由计划,或显式指定的 provider/model,并记录结果。 |
| model_router_tools / model_router_health | 检查安装/就绪,或版本/登录/计费健康状态。 |
| model_router_tool_install | 从官方来源安装一个固定注册表工具。 |
| model_router_tool_run | 以 read-only 或获批的 workspace-write 模式运行一个支持的 CLI。 |
| model_router_team_execute | 在当前可执行 CLI 路线中重新规划,再顺序执行工作包。 |
| model_router_rerun_step | 重跑失败步骤及未完成的后续依赖、恢复符合条件的可编辑团队,或重复失败的单工具执行。 |
| model_router_rate | 对一条已存结果记录 up、down 或 clear。 |
会话命令:/router <task>、/tools 和 /tools install|cancel <tool-id>。
本地规划请求:
{"task":"Review the architecture and prepare a verification checklist","mode":"team","budgetUsd":10}
只读单工具请求:
{"tool":"codex","task":"Inspect the repository and list UI layout issues; do not edit files","mode":"read-only"}
向 model_router_team_execute 提交可编辑正常环境团队请求:
{
"task": "1. Analyze the logging module and propose a small improvement. 2. Implement it and report verification results.",
"mode": "workspace-write",
"executionEnvironment": "cli-native",
"budgetUsd": 1
}
工作区由会话提供;请先将它配置为获准编辑、且干净的 Git 根目录。工具的审批钩子会请求所需确认。会话工具参数使用 mode,不是工作台的 executionMode,也不接受 workspace、executor 或 planMode。临时模型绑定使用 cliModelsJson,它是 JSON 编码的字符串,例如 "";将占位符替换为该安装支持的模型名。此映射不会强迫规划器选择该工具。
选择精确目录路线时,必须同时提供 provider 和 model。所有 CLI 默认沿用自身配置的模型;目录推荐绝不会自动作为 CLI 模型参数传入。如需显式切换,在路线配置中保存已验证的 官方 CLI 模型名,为单工具调用传入 cliModel,或为团队使用 cliModelsJson。团队绑定优先采用工作包 id,其次工具 id,最后才是已保存的路线映射。ZCode 使用自身默认模型,不支持逐次调用切换。历史分别记录推荐模型、请求的 CLI 名称和报告的实际模型;请求本身不能证明实际使用了该模型。未报告实际模型时,应查看厂商记录。
CLI 团队运行器是插件自身的顺序依赖执行器,不控制 Harness 内置 Agent Teams 的模型选择或生命周期。
官方工具与执行模式
| 注册表 id | 工具 | 托管单工具/团队模式 |
| kimi-code | Kimi Code | 获批的 workspace-write |
| claude-code | Claude Code | Windows:read-only、获批的 workspace-write |
| codex | Codex CLI | Windows:Harness 环境 read-only;显式选择正常环境的可编辑团队支持 workspace-write |
| minimax-code | MiniMax Code | 获批的 workspace-write |
| mimo-code | MiMo Code | Windows:read-only、获批的 workspace-write |
| grok-build | Grok Build | Windows:read-only、获批的 workspace-write |
| gemini | Gemini CLI | 路由无头适配器;不属于托管单工具/团队运行器 |
| opencode | OpenCode | 安装、探测和登录检查;尚无经过验证的受限执行入口 |
| stepcode | Step Code | 安装、探测和登录检查;尚无经过验证的受限执行入口 |
| hermes | Hermes Agent | Windows/POSIX 官方安装脚本、版本检测、交互终端;使用 hermes auth 登录;尚无经过验证的托管执行器 |
| pi | Pi | 官方 npm/pnpm 安装、版本检测、交互终端;启动后输入 /login;尚无经过验证的托管执行器 |
| zcode | ZCode CLI | 独立 TUI;运行入口就绪后支持获批的 workspace-write |
Hermes 使用官方源码安装器的非交互模式,安装后运行 hermes auth。设置统一根目录后,源码安装到 <根目录>/hermes-agent,插件绑定该源码的 .hermes/bin 入口,不会改用其他旧的全局副本。配置、登录和历史仍保留在原 Hermes 数据目录;未设置统一根时沿用厂商默认位置。官方安装器可能将全局便利命令更新为指向所选源码。源码安装请通过 hermes uninstall 卸载。Pi 使用 @earendil-works/pi-coding-agent,npm/pnpm 安装带 --ignore-scripts,要求 Node.js 22.19 及以上。启动 pi 后输入 /login。这两种工具的登录状态显示为未知,以各自界面为准;插件不会读取它们的凭据。
安装器使用各厂商 @latest 对应的固定官方 npm 包、厂商自有安装脚本,或经过所发布 SHA-256 校验的 ZCode CLI 社区发行包。已安装版本高于查询到的最新版本时不降级。最新版本查询约缓存 12 小时;查询不可用时版本保持未知。厂商新版本不会自动获得本项目的验证。ZCode CLI 是从 ZCode 抽取的独立 Node.js 社区发行版,不是 Z.AI 官方发行版;需要 Node 24.14.0 或更新的 Node 24。默认 github-release 方式将运行程序安装到 <统一根目录>/zcode-cli,统一根目录留空时使用 ~/.zcode/runtime。新增的 npm 方式安装固定的 @ljwei-stak/zcode-cli@latest,使用已保存的 npm 源和统一 npm prefix。npm 包包含完整 TUI、Web 和 Agent 运行资源,安装时不再另行从 GitHub 下载。需要准备运行资源时,插件会使用 <DSH_HOME>/model-router/zcode-npm/cache 中的已核验缓存;npm 卸载可能保留该缓存。它与其他 CLI 共用工具卡片的安装、更新、修复与卸载,保留登录、配置和会话历史;不再打开或依赖 ZCode 桌面安装器。
统一安装设置。 官方工具 页顶部(插件设置表单中也有)可一次设置所有工具的安装地址:统一安装目录(留空表示各厂商默认位置)、npm 源,以及各工具的厂商安装脚本镜像覆盖项。目录必须是绝对路径,源必须是 HTTPS。每行选择该工具声明的安装方式:npm、pnpm、厂商脚本(curl | bash 或 irm | iex),或 ZCode CLI 的 github-release 发行包;ZCode CLI 也可选择 npm 安装其固定社区包。当前平台无法运行的方法会在该行说明,不会静默换成其他方法。执行前会在按钮上方显示精确命令。
脚本安装不会把远程内容直接管道传入解释器。 插件先下载脚本,检查所需厂商标记,拒绝 HTML 页面与冲突内容,再运行本地副本。这些检查是启发式检查,不能单独证明脚本来自官方;镜像应转存厂商脚本,不应替换程序。Step Code 脚本接受安装目录;OpenCode 脚本将路径固定为 ~/.opencode/bin,因此自定义目录只在通过包管理器的全局目录配置安装它时生效。可以完全关闭脚本安装,包管理器和经过校验的 ZCode CLI 发行包仍可使用。
更新目标。 修改统一目录或来源后,点击 保存安装设置。工具操作会等待保存和命令刷新完成。npm 使用 --prefix;pnpm 使用自己的 global-dir、global-bin-dir 与 store 设置。即使其他设置页在任务排队期间修改了配置,安装任务仍保留当时选择的配置。更新会检查所选命令目录,PATH 上其他位置的现有副本不会让缺失的目标被误判为已安装。固定路径的厂商脚本会说明真实目标。ZCode CLI 的 GitHub Release 方式使用统一根目录下专属的 zcode-cli 子目录;npm 方式与其他 npm 工具共用 prefix。先选择方式,再核对该方式的命令与目标目录;切换方式不会迁移或卸载另一份副本。
Windows 旧 ZCode 启动入口。 npm 安装前,插件会备份识别出的旧桌面版 zcode、zcode.cmd 和 zcode.ps1 启动脚本,并在安装日志中记录备份位置,再让 npm 创建自己的命令入口。安装失败时会尝试安全恢复旧入口。无法识别的冲突文件保持原样并报错,插件不会添加 --force。桌面程序资源、账号配置、登录和会话历史均保留。
工作台指南列出各厂商的实际渠道与原生安装执行限制。
未设置统一目录时,普通检查会在 PATH 上查找所选包管理器的包。安装、更新、修复或移除任务,会先解析并锁定该管理器的默认全局目标,再比较版本。如果无法安全解析,请先填写并保存统一目录。
一键修复与卸载。 修复会重新执行同一条固定官方命令;即使版本已是最新,损坏的安装仍需要这种重新安装。卸载只移除程序:包管理器安装通过同一管理器卸载;脚本安装移除其登记的命令入口和受支持的 PATH 记录,厂商版本目录可能保留。Windows Codex 原生目录联接没有通用的删除式卸载;工具行会说明这一限制。配置、凭据和会话历史始终保留。
安装、可信启动就绪、账号登录和模型权限是分别检查的。登录状态未知不代表已退出。信任检查取决于工具及安装来源:
| 入口 | 已实现的验证 |
| Windows Claude / Codex | 可执行文件上的有效厂商 Authenticode 签名;Codex 还检查包装器/平台包布局。Claude 要求 2.1.259 或更高版本。 |
| MiMo / Grok | 将原生可执行文件与精确的官方 npm 平台归档比对;Grok 还验证压缩成员及其解压后的可执行文件。 |
| Windows MiniMax 厂商脚本布局 | 将已安装包代码与精确 npm 版本比对,检查版本指针/布局,以及必需原生模块是否存在。 |
| Kimi / 普通 MiniMax npm 或 pnpm,cli-native | 对包代码、manifest 和真实入口额外进行注册表检查。Harness 环境中的这些普通副本不走这一额外路径。 |
| ZCode CLI | GitHub Release 方式:固定 Alice-Marx/zcode-cli 仓库的归档文件,按发布的 SHA-256 校验,启动前检查已安装文件摘要。npm 方式:固定 @ljwei-stak/zcode-cli 包的清单、启动入口、资源清单和压缩资源包与精确注册表版本核对,并校验解包后的运行资源。本地验证记录构成信任边界;两种方式均不提供独立发行者签名。 |
这里的“npm attestation”指与精确注册表发布的一致性:使用注册表 dist.integrity 的 SHA-512 验证 tarball,再比较所选成员的 SHA-256/大小,也可使用已验证缓存。它不是 npm provenance/Sigstore 验证、独立发行者签名,也不能证明每个依赖或本地文件。Gemini 的路由适配器以及 OpenCode/Step 终端不继承这些托管入口的保证。参见注册表、执行器、npm 检查与 ZCode 信任。
版本和 CLI 登录状态检查使用所选安装的具体入口。不能用 PATH 上的另一条命令替代缺失的所选副本;无法检查该入口时,其登录状态保持未知。
会话中的 /tools install|uninstall|repair|method <tool-id> [method] 执行同样操作;agent 也可调用 model_router_tool_install、model_router_tool_repair 和 model_router_tool_uninstall。安装目录与下载来源始终来自用户自己的插件设置,不经 RPC 传入,因此调用不能把安装重定向到任意包或 URL。
model_router_execute 为 Claude、Codex 和 Gemini 提供固定无头适配器。除非适用受支持的订阅路线,其他供应商使用模型目录 API。CLI 缺失或不可用时可回退到该 API;订阅失败遵循下文策略。
可编辑执行需要干净的 Git 根目录与 Host 批准。默认 Harness 环境还要求进程约束;显式确认的 cli-native 团队在该沙箱之外运行。两者都保留下文的 worktree 与条件补丁合入检查。只读 CLI 标志不一定把读取限制在工作区内;请检查 安全边界,尤其是 Codex 较广的可读范围。
Harness 环境下,Claude 只读使用受限模式,仅允许 Read/Glob/Grep,无 shell、斜杠命令或现有 MCP 配置。可编辑 Claude 保留正常工具/配置。执行器转发基础环境、代理和厂商配置/凭据变量白名单,而非所有 Host 变量;仅订阅启动会移除 API 凭据。正常环境执行保留厂商原有状态/配置,CLI 支持并加载时可以使用其 skills/MCP。这不代表所有已配置 skill 或 MCP 服务都已验证可用。
Windows Codex 在 Harness 环境中仅支持只读:外层 ACL 沙箱授予原始 CODEX_HOME 状态目录和私有临时目录的相应权限,同时 Codex 保持 --sandbox read-only。显式确认的正常环境可编辑团队可使用 Codex 自身的 workspace-write 策略。Codex 网络就绪仍取决于账号/环境,本批真实连接检查未通过。
交互终端
在 官方工具 → 官方工具终端 中,选择 shell 或已安装 CLI,按可用选项选择交互/登录模式,输入已存在的绝对目录,并查看启动确认。ZCode CLI 从核验后的独立运行目录启动 TUI。zcode login 登录 Z.AI,zcode login bigmodel 登录 Coding Plan;终端也提供登录模式。由于没有支持的状态查询命令,登录状态保持未知,需在 ZCode 中自行核对。
这些会话在 Harness 沙箱外运行,使用 Host 用户的登录环境、代理与 API-key 变量。输入的命令能以该用户权限读写文件。终端启动与路由执行及其审批/计费策略相互独立。
可选依赖 @lydell/node-pty 提供真实伪终端。加载失败时,卡片会显示管道模式:全屏界面、调整大小和方向键可能无法使用。最多同时运行四个会话;未读取的会话约两分钟后过期,单会话最长六小时。完成后请显式结束;关闭工作台或卸载插件也会结束会话。
插件不持久化终端输入/输出,仅保存会话元数据。选中文本时 Ctrl+C 为复制,否则为中断。Ctrl+Shift+V 为粘贴。
团队生命周期、模型身份与恢复
团队运行时按拓扑顺序串行执行依赖图,不并发执行。各包接收总任务、自身目标/验收项,以及直接依赖的输出(每个依赖最多 2,500 字符)。第一个非成功包会停止全部剩余工作,包括独立工作包。这是插件的执行器,与 Harness 内置 Agent Teams 独立。
模型身份
三个字段含义不同:推荐的目录 provider/model、请求的 requestedCliModel 和 CLI 报告的 actualModel。目录推荐不会自动成为 CLI 参数。显式选择遵循 工作包绑定 > 工具绑定 > 已保存 route.cliModel > 厂商 CLI 默认值。ZCode 不支持逐次调用切换模型;MiniMax/MiMo 映射必须使用其支持的 provider/model 格式。
如果显式绑定与 CLI 报告的实际模型冲突,该包变为 model-mismatch,后续工作停止。没有无歧义的实际模型报告时,身份保持未知;进程成功并不能证明运行了请求的模型。改派失败包时,会使用新路线保存的映射,不保留旧工具的映射。
可编辑 worktree 与合入
1. 规范化源路径、检查会话授权,要求源路径是干净的 Git 根目录且已有 HEAD 提交。记录该基线。
2. 创建 detached 的隔离 worktree。Windows 使用 Host 派生存储位置 os.tmpdir()/.model-router-workspaces//run-<uuid>;拒绝源/worktree 重叠和重定向的存储位置。这样可避开无法初始化 Harness 边界 ACL 的源盘。其他平台保留其受支持的作用域内 worktree 策略。
3. 在该 worktree 中执行各包。取消会停止进程树;失败会保留 worktree 和先前包结果。
4. 全部包成功后暂存修改,并针对原始源基线计算二进制 diff,包括 CLI 在 worktree 内提交的修改。Git 忽略的输出不包含在内。
5. 重新检查源仍干净且 HEAD 未变。运行 git apply --check,然后把补丁应用到源目录,不自动提交。冲突、源变化或需要手工处理的输出会保留 integration-pending 结果/worktree。
worktree 用于分离和收集修改;只有所选 Harness 环境提供操作系统边界。正常环境中的工具/MCP 可影响边界以外的文件或服务。内部执行限制:任务 64,000 字节、捕获输出 32,000,000 字节、输出尾部 32,000 字符、默认超时 45 分钟、最大超时两小时。Kimi/ZCode 还对最终提示词设有 16,000 UTF-8 字节的入口限制。这些是进程限制,不是计费上限。
失败与重试
必须保存的检查点在外部调用前记录启动状态,在下一次付费步骤前保存已有结果、用量和费用。检查点保存失败会停止后续步骤,保留预占以供核对。历史保存包状态、退出码、经过脱敏且有长度限制的诊断、入口/模型证据,以及可用的用量/费用。后续适配器异常不会丢弃先前结果。cli-completed 表示运行时完成了进程/补丁流程;交付物仍需通过验收。blocked、cancelled、incomplete 和 integration-pending 分别区分预检阻止、中断、包失败与合入问题。
重试针对失败包和未完成的后续依赖,保留其他成功结果。符合条件的可编辑 incomplete/cancelled 运行要求记录的源目录、保留的 worktree 与基线:Host 验证后创建新 worktree,播种先前尚未合入的修改,再继续执行。已经合入或 integration-pending 的团队不能使用这一步骤恢复路径。正常环境重试仍需写入和沙箱外执行的同意(工作台重跑请求中的 confirmWrite 与 confirmUnsandboxed);关闭旧设置 confirmUnsandboxedCli 也不能绕过。先前尝试的费用保留在支出总额中。原运行必须没有活动或中断预占,才能走这条重试路径;崩溃检查点是待核对证据,不是自动续跑令牌。
实现:official-team-runtime.mjs、official-tool-executor.mjs 与 run-ledger.mjs。
成本、订阅与质量
- API 预算: 单次规划目标与日/月金额检查用于 API 计费执行。启动时原子检查已记录 API 支出和其他 API 预占,再为本次 API 估计预占。有限预算下,API 单价、费用或预占未知需要显式确认;后续 API 调用会按最新支出与预占重验。已确认的订阅通道不占 API 金额,也不会仅因 API 预算用满或单价缺失而被阻止。订阅转 API 是一次新的金额准入:按实际 API 路线估价、取得所需确认并原子预占后才调用。本地估计不是厂商硬性扣费上限。
- 检查点与中断: 路由执行、重跑/改派、官方团队、单工具运行和会话咨询共用持久执行生命周期。可选复核和质量升级在追加调用前预占额度。质量升级启动前,先保存首个收据与待核对的追加尝试,避免中断时抹掉首次费用或把第二次尝试视为免费。界面区分实际支出与预占,预占不是账单。确认进程退出后仍保留中断预占及未知用量证据以供核对;仅凭经过时间不会释放,也不会自动重放调用。
- 订阅优先: 默认优先检测到的 CLI 账号订阅或已配置 coding-plan 路线。CLI 订阅尝试会移除 API-key 环境变量。billing 可为 subscription-first、api-only 或 subscription-only;subscription 可为 cli-login、plan-key 或 none。
- 回退: 检测到额度耗尽/限流时,将订阅标记为冷却,并可按策略与可用性在已配置 API 路线上重试该路由步骤。其他已尝试的订阅失败默认暂停(onSubscriptionFailure: "ask"):可在历史中选择 API 重试、订阅重试或取消。订阅切换到 API 时,必须按实际 API 路线重新估算并检查预占。缺少价格或超出有限预算时,需要相应确认;未获确认不会启动 API 调用。托管可编辑/单工具/团队运行不会自动在 API 上重试。
- 订阅用量: 独立记录日/月调用次数、已报告输入/输出/缓存 token 和未知/不完整用量次数,并按供应商、工具、模型分组。缺失计数不视为零。订阅转 API 时同时保留订阅用量收据和 API 计费结果。旧记录的参考美元字段可保留,但当前订阅统计不再把它折算为金额,也不据此补造 token。token 数不能证明厂商订阅总额度、剩余额度或已用百分比。
- API 核算: 对 API 计费结果,有效的 CLI 报告金额(包括零)优先采用。否则按 token 计算 CLI 费用,需要完整用量,以及报告实际模型匹配已配置单价或显式 CLI 映射。身份未知或不匹配时 API 费用保持未知;推荐路线价格不能证明实际成本。CLI 使用 API Key 时仍属于 API 计费,厂商账单为准。重跑替换的收据和已裁剪历史保留先前核算。
- 质量与偏好: 可选 off/sample/always 更强模型复核可能增加付费调用,且不作为人工反馈。显式评分以时间衰减和小样本收缩,调整精确路线、任务类型对应的独立主观效用(默认上限 ±0.04,可配置至 ±0.1)。评分不改变客观质量分或其硬下限;可禁用学习、撤回评分或重置学习起点。
Coding-plan 密钥与端点保留在 Harness 供应商设置中。plan-key 配置可将已配置的精确 apiRoute 指定为回退;路线编辑器不接受凭据或任意命令。厂商套餐资格与条款需向厂商核实。
实际费用与规划估计
下面公式用于 API 计费结果。算法中的路线价格比较是规划输入,不会把订阅变成 API 账单;执行预览分别显示 API 金额和订阅预估 token。
对 API 计费结果,有效的 CLI 报告美元金额(包括明确的零)优先于 token × 单价计算。否则,按 token 核算 CLI 费用要求完整、归一化的用量,已知非负价格,以及报告的实际模型匹配计价路线或其显式 CLI 映射:
C_a = \frac{I_u p_i+O p_o+R p_r+W p_w}{10^6}
$C_a$ 对应 actualUsd;$I_u$、$O$、$R$、$W$ 分别对应 inputTokens、outputTokens、cacheReadTokens、cacheWriteTokens,$p_i$、$p_o$、$p_r$、$p_w$ 分别为输入、输出、缓存读取和缓存写入单价,单位为美元/百万 token。
经适配器归一化后,这些账本计数互不重叠;不要把缓存 token 再加到已包含缓存的输入计数中。缺少可选缓存单价时,使用输入单价。用量不完整、价格缺失或身份未知/不匹配时,金额保持 null,不是零。完整的终态证据可在失败、取消、超时后保留;部分事件标记为 usageIncomplete。
例如,完整 API 结果含 1,000 个未缓存输入 token(\$1/百万)和 500 个输出 token(\$5/百万),费用为 \$0.0035。订阅结果记录已报告 token 和调用次数,不折算成 API 金额。API 尝试中厂商报告的 \$0 是该次尝试的明确证据,不能证明先前费用未知的尝试免费。实际厂商账单为准。官方团队模式不自动回退 API,但厂商 CLI 使用自身 API 凭据时仍产生 API 计费。
路由算法
手动分配:生成任务建议后,可选择按算法推荐执行,或逐包指定模型 API / 官方工具。参见手动分配使用说明。
规划器是确定性的本地启发式算法,不是训练得到的成功率预测器。它对文本分类、估计复杂度、创建适当的分析/执行/验证/汇总工作包,发现精确的已配置路线,叠加路线配置,并应用能力/质量约束。显式指定路线会跳过与其他路线的比较。目录质量/延迟/风险提示是实验性先验,不是实测成功概率或厂商实时报价。执行当前以文本为主;vision 标签不能证明已有端到端多模态流水线。
Token 与价格估计
没有匹配资源证据时,基础输入 token 为 $\max(80,\lceil n/3.7\rceil)$,再乘以工作包阶段系数。基础输出为 900,按阶段/推理强度调整,最少 220。其中 $n$ 对应 JavaScript 的 text.length。这是按文本长度估算,不是厂商 tokenizer。匹配的完整历史记录达到样本门槛后,改用经验 P90 资源估计,不再重复乘档位和阶段系数。令 $I$ 为估计输入总数,$R$/$W$ 为缓存读取/写入部分,$O$ 为输出,价格单位为美元/百万 token:
C = \frac{(I-R-W)p_i+O p_o+R p_r+W p_w}{10^6}
U_c = \frac{1}{1+C/\max(C_},10^{-12})}
$U_c$ 对应 costUtility,单价符号与上文一致。$C_}$ 使用固定参考价(输入 1、输出 5、缓存读取/写入 1 美元/百万),不是厂商报价。固定尺度防止一个无关的昂贵候选把所有费用惩罚压平。未知价格的公开估计为 null,费用效用为 0。内部无预算约束搜索使用费用哨兵值 0,但有限预算分配会排除价格未知候选;哨兵值绝不代表执行免费。
候选目标与质量下限
使用归一化质量 $q$,以及归一化延迟、领域匹配、推理匹配和风险代理值:
L = \begin{cases}
\dfrac{1}{1+t/10\,000}, & t\text{ known}, \\
1-\min(1,\max(0,\ell e_\ell)), & \text{otherwise}.
\end{cases}
u = w_q q+w_c U_c+w_\ell L+w_s s+w_r r-w_k k-\alpha\max(0,f-q)+\Delta_p
S = \sum_{j=1}^{n}u_j - 0.015\sum_{(i,j)\in E}\mathbf{1}[\rho_i\ne\rho_j]
$L$ 为延迟效用:$t$ 是匹配历史的 P90 耗时,单位为毫秒;未知时使用延迟代理值 $\ell$ 及档位系数 $e_\ell$。效用式中,$s$/$r$/$k$ 分别是领域匹配、推理匹配和风险,$f$ 为质量下限,$\alpha$ 为关键性,$\Delta_p$ 为有界的 preferenceAdjustment;各 $w$ 为对应权重。$S$ 对应 assignmentScore,$E$ 为依赖边集合,$\rho_j$ 为工作包 $j$ 的 provider/model 路线;指示函数在路线不同时取 1,否则取 0。
质量优先使用足量且匹配的任务客观证据,再回退对应任务类别的 LiveBench 分数、整体 LiveBench、路线配置/目录估值。至少两个 API 档位各有可用任务证据时,才联合比较模型与档位;经验耗时可替换延迟代理项。公共数据刷新默认关闭,需主动启用。人工评分仅影响有界的 preferenceAdjustment,不能提高客观质量或满足质量下限。
| 工作包基础类型 | 质量 | 费用 | 延迟 | 领域 | 推理 | 风险 |
| 简单 | 0.28 | 0.45 | 0.14 | 0.04 | 0.07 | 0.02 |
| 均衡 | 0.40 | 0.26 | 0.10 | 0.09 | 0.10 | 0.05 |
| 复杂 | 0.48 | 0.14 | 0.06 | 0.14 | 0.11 | 0.07 |
| 汇总 | 0.58 | 0.08 | 0.04 | 0.08 | 0.16 | 0.06 |
简单/均衡/复杂任务的基础质量下限分别为 0.75 / 0.78 / 0.82;关键复杂包会提高下限,复杂任务的汇总包至少为 0.84。省钱预设把质量/费用/延迟权重分别乘以 0.75/1.6/1.1,并把下限降低 0.04。效果优先把质量/费用/领域/推理权重分别乘以 1.35/0.5/1.2/1.2,并把下限提高 0.04。倾斜后的权重重新归一化到原总量;调整后的下限限制在 [0.5, 0.97]。均衡不作倾斜。
候选裁剪与分配搜索
1. 优先保留达到各工作包质量下限的候选。若没有合格候选,保留质量最高的至多三个回退候选,并报告约束放宽。
2. 每包最多保留 12 个候选,包含最低已知费用、最大效用与最高质量的锚点。存在依赖时禁用局部 Pareto 裁剪,因为路线身份会影响交接。
3. 验证工作包 ID 唯一且依赖按拓扑排序。保留候选的笛卡尔空间大小不超过 4,096 时精确搜索;否则采用 beam width 256。搜索按未来依赖的模型边界压缩被支配前缀,并用未来交接的乐观估计排序。剩余最小费用用于裁剪不可行前缀;有限预算时,beam 会保护最便宜的可行前缀。
4. 按字典序比较分配:更少放宽包、更小质量缺口、更高效用、更低费用、更少路线切换,最后稳定的路线顺序。最小费用模式先比较费用,再比较效用。每条跨越 provider/model 路线的依赖边从效用中扣除 0.015。
5. 报告搜索元数据与可行性。正预算下若不存在可行分配,仍可返回最小费用备选,但标记 budgetFeasible: false。显示了计划不代表预算已满足。
“精确”仅适用于保留下来的候选空间与代理目标。候选上限和 beam 裁剪意味着不能声称在所有已配置模型上全局最优。单元/合成测试验证机制,不证明真实回答质量提升。研究审查使用的公开 2026-06-25 LiveBench 分数/费用表属于汇总数据;未取得逐题配对的质量/费用矩阵,因此不主张真实路由收益。参见研究、推导/实验与验证规程。
证据导入、回退条件、推理档位与可选 JSON 验收升级的设置参见算法优化使用说明。验收升级默认关闭,启用后仍需通过计费与预算检查,最多增加一次普通 API 调用。
实现:router.mjs、assignment-solver.mjs、routing-evidence.mjs、harness-plan.mjs 与 quality-gates.mjs。
数据与隐私
路由配置/偏好保存在 Harness 插件设置中。运行时状态写入 <DSH_HOME>/model-router/state.json(默认 ~/.dsh/model-router/state.json):健康/入门状态、订阅冷却与独立用量汇总、评分、最多 200 条近期运行、最多 100 条执行预占、50 条终端元数据,以及主动启用的公共数据快照。预占引用的运行不会被历史裁剪删除。运行记录会冻结采用的单价、数据/反馈策略版本。偏好属于共享的本地 DSH_HOME,不是经过认证的独立用户账号;公共数据请求不会上传任务或反馈。
0.15.0 起还保留有界支出汇总,最多覆盖 90 个有数据的日历日期与 24 个月。只包含金额/计数,不含任务或回答内容。
运行历史包含任务文本、输出节选、路线/工作区、失败与费用。保存的任务最多 20,000 字符,每条回答最多 4,000 字符,因此重跑可能依赖被截断的已存上下文。插件不把 API key 存进模型配置,也不保存终端转录。任务执行仍会把所选任务/上下文发送给相应供应商或 CLI。
状态写入使用锁和原子替换。状态结构 v3 保留独立订阅用量和分通道预占,升级可读的 v1/v2 状态时保留 API 历史、预占与旧参考字段;历史缺失 token 保持未知。旧插件会拒绝读取 v3 状态;升级前完全停止所有 Host 进程,降级前备份状态。无法解析的状态保留为 state.json.corrupt-<timestamp> 备份并显示提示。不要分享未经脱敏的历史或日志。
从克隆源码开发
Git 克隆包含完整源码;npm 包是运行时发行包,不含客户端源码、脚本、测试和实验项目。
要求:Node.js 22.19+ 和 pnpm 10.34.6(packageManager 已固定)。在 PowerShell 中,从克隆目录的上级目录执行:
cd .\dsh-model-router
pnpm install --frozen-lockfile --strict-peer-dependencies
npm run build:client
npm test
npm run check:client
npm run pack:local
若已在仓库中,省略第一个 cd。压缩包生成于 dist;通过 Desktop 插件管理器,在测试配置档中安装该 .tgz 的绝对路径。单元测试通过不能证明厂商账号可用、实际模型身份正确或计费已验证。
无需启动 Harness 或厂商工具,即可查看 UI:
npm run preview:ui
打开本地预览。它使用模拟模型、工具与历史,提供有数据、空状态、错误、入门引导与延迟预览等场景,用于检查布局/交互。模拟执行不会调用供应商、安装工具或启动终端。这不属于 Host 集成验证。默认端口被占用时可运行 npm run preview:ui -- --port 4174;刷新页面即可载入客户端源码修改。
| 位置 | 职责 |
| .dsh-plugin/index.mjs | Host 插件、会话工具、设置、执行与 remote 处理器。 |
| .dsh-plugin/client/ | React 工作台源码与 CSS。 |
| shared/router.mjs、assignment-solver.mjs、harness-plan.mjs | 本地评分/搜索与 Host 模型目录集成(位于 .dsh-plugin/ 下)。 |
| shared/official-tools-remote.mjs、official-tools-runtime.mjs | 固定 RPC 编解码、安装选择/任务与偏好。 |
| shared/official-tool-executor.mjs、official-team-runtime.mjs | 可信入口、权限/进程捕获、依赖执行与补丁合入。 |
| shared/task-executors.mjs、subscription-billing.mjs | 路由 CLI/API 执行、订阅策略与回退。 |
| shared/run-ledger.mjs、router-state.mjs | 身份/用量/费用记录、支出保留与加锁原子持久化。 |
| shared/budget-reservations.mjs、execution-lifecycle.mjs | 跨进程预算准入、剩余预占、必须保存的检查点和中断进程证据。 |
| 其他 .dsh-plugin/shared/ 模块 | 终端契约、工具健康、公共快照与有界反馈。 |
| .dsh-plugin/client.js | 生成的 Desktop 客户端 bundle;修改客户端后需重建。 |
| scripts/ 与 tests/ | 构建/打包/验证辅助脚本与回归测试。 |
| experiment-plugin/ | 独立研究实验项目,不随路由插件发布。 |
| docs/ 与带日期报告 | 用户文档与历史验证记录。 |
check:readme 检查六个展示公式、正文行内数学符号、小数前导零、双语公式一致性和审阅后的 blob 哈希;npm test 与 prepack 均会执行。修改公式后还须在 GitHub 页面查看实际渲染。公式块采用 GitHub 官方支持的语法。
check:client 在内存中重建并比较已提交 bundle;prepack 会拒绝过期 bundle。pnpm 10 没有 pnpm peers check 命令:请使用上述严格安装。Host SDK 包不可用/不兼容时,本地集成测试可能需要已安装的 Harness 运行时;setup-harness-dev.mjs 从显式提供的 Host node_modules 链接缺失 SDK 包,start-harness-preview.mjs 启动独立的本地 Web Host 配置档。这些辅助脚本不能代替依赖验证或 Desktop 验收。
GitHub Actions 通过 Windows/Linux Node 24 矩阵执行冻结锁文件严格依赖安装、全量测试、已提交客户端一致性、实际客户端构建和离线预览编译。打包后逐文件对比原始 Git blob,并检查运行时 import 依赖是否完整。这些检查使用本地预置数据,不验证真实供应商计费。提交本地候选后,可先运行 npm run pack:local,再运行 node scripts/check-package.mjs 复现包验证。
旧兼容/研究文件和带日期报告保留作参考;它们的存在不代表当前发行插件仍启用所有旧集成。发布与同步遵循 AGENTS.md;重现某次发布请使用带版本号的包或已验证的发布 tag。
验证层次与已知局限
| 证据 | 能证明什么 |
| 单元/预置数据测试 | 所覆盖场景下的本地规划器、契约、账本、状态和失败处理;不验证厂商账号访问。 |
| 独立 UI 预览 | 使用预置数据的布局和客户端交互;无经过认证的 Host 执行。 |
| 经过认证的 Desktop RPC | 所选运行的真实 Host 预检/审批/启动路径。 |
| 生产运行时 CLI 团队 | 该次调用的真实厂商进程、依赖上下文和文件;不自动等于 UI 或自动路线选择测试。 |
| 源文件读回 | 预期产物已到达源工作区;业务正确性仍取决于选定的检查。 |
0.20.0 Windows 记录包含真实 Claude 工作台 RPC 运行,以及另一次通过已安装生产运行时执行的 Claude → MiniMax 交接,检查了文件/shell 工具和补丁合入。交接使用显式选择的工作包,不证明自动路由质量。该批 Codex 连接检查失败。其他厂商、所有 skill/MCP 服务、跨平台行为、已结算总费用和质量–成本提升,并未全部由这些运行验收。带日期报告保留准确范围。0.20.1 的续跑确认修复有契约/回归检查;本版不增加模型实验或费用。
维护文档时应在同一改动中更新两种语言:同步稳定章节锚点、API 字段、默认值、公式、能力表、示例与证据边界。在 README.i18n.yaml 中记录成对的 Git blob 哈希;哈希标识经过审阅的文本,不证明翻译正确。历史实验报告应始终关联实际测试的运行时版本。
常见问题
| 现象 | 检查 |
| 没有路线或规划被禁用 | 配置 Harness 模型、刷新目录,并等待工具检测完成。 |
| API 费用未知 | 为每条参与比较的 API 路线填写输入/输出美元单价,并核对用量/模型证据。 |
| 订阅用量未知 | 厂商未报告完整计数或历史记录缺失;不要从旧参考美元还原 token,也不要推断剩余额度。 |
| CLI 已安装但不可执行 | 查看启动就绪原因、平台/模式支持和安装来源。 |
| 登录/模型权限仍失败 | 检查厂商账号、CLI 登录、网络和实际模型访问;仅安装成功不够。 |
| 前端提示 Host 版本较旧 | 完全退出 Harness(包括托盘进程)后重启。 |
| 预览与旧建议不同 | 目录、登录、额度或预算状态已变化;请查看新预览。 |
| 中断后预算仍被预占 | 核对原任务、保留的 worktree 和供应商账单。预占不会自动释放或续跑,本版没有手工核对并释放的操作入口。 |
| 旧插件无法读取状态 | v3 保留受保护执行和独立订阅用量;恢复兼容版本,不要删除账本绕过检查。 |
| 终端 TUI 不渲染 | 检查卡片报告的是 PTY 还是管道回退模式。 |
| 已登录但团队没有可执行路线 | 检查 readyModes、平台、所选安装和权限模式;仅终端已登录不能证明具备托管执行能力。 |
| Claude 只读中没有 skills/MCP | 受限模式会禁用它们;可编辑/正常环境选项权限不同,需要相应确认。 |
| 可编辑团队停止 | 查看失败包、退出/诊断字段与合入状态;符合条件的重试或手工检查前请保留 worktree。 |
| 修改未合入 | 检查源是否干净/HEAD 是否变化、补丁冲突与被忽略的输出。保留 worktree 不代表修改已经应用到源目录。 |
| CLI 模型不对或未知 | 比较推荐、请求映射与报告的实际模型;检查所选 CLI 自身默认值/配置。 |
| 正常环境运行再次请求确认 | 每次新启动/重试都要求当前的写入/沙箱外执行同意;预览不是长期有效的审批令牌。 |
提交问题时请附 Host/插件版本、所选模式、工具状态与脱敏错误:问题跟踪。
许可:MIT。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Alice-Marx/dsh-model-router
DeepSeek Harness 的模型路由与 GALGame 插件
相关插件 · 市场 / 管理
插件精选列表awesome-dsh-plugin/awesome-dsh-plugin
DeepSeek Harness(dsh)插件精选列表
★ 21,780未汉化DSH
73.5
新词雷达zhuyansen/new-term-radar
new-term-radar新词雷达
★ 1,947已汉化MCP
72.7
插件生态导航0xsline/awesome-deepseek-harness
安装 贡献指南 DeepSeek Docs 公开插件目录 Issues
★ 1,188已汉化DSH
72.6
技能注册中心iflytek/skillhub
企业级开源智能体技能注册中心——发布、发现并管理组织内可复用的技能包。
★ 5,347已汉化DSH
71.9
插件精选清单Anil-matcha/awesome-dsh-plugin
DeepSeek Harnessdsh精选指南——DeepSeek…
★ 1,013已汉化DSH
71.7
插件市场目录imsai-sh/awesome-deepseek-harness-plugins
面向 DeepSeek Harnessdsh生态的社区插件目录,共收录 13917 个插件含 PR 收录与…
★ 343已汉化DSH
71.6