@ljwei-stak/dsh-model-route-bot 0.66.0 → 0.66.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.dsh-plugin/client.js +1 -1
- package/README.i18n.yaml +2 -2
- package/README.md +6 -6
- package/README.zh.md +6 -6
- package/package.json +6 -87
- package/packages/model-router-plugin/README.md +3 -3
- package/packages/model-router-plugin/package.json +1 -1
- package/packages/orchestration/src/task-product.mjs +56 -49
- package/CHANGELOG.md +0 -503
- package/docs/INSTALLATION_GUIDE.zh.md +0 -150
- package/docs/MANUAL_TASK_ASSIGNMENT.zh.md +0 -46
- package/docs/ROUTING_ADAPTIVE_LEARNING.zh.md +0 -153
- package/docs/ROUTING_ALGORITHM_OPTIMIZATION.zh.md +0 -91
- package/docs/ROUTING_DERIVATION_EXPERIMENTS.zh.md +0 -684
- package/docs/ROUTING_LIVEBENCH_DATA_SEARCH.zh.md +0 -74
- package/docs/ROUTING_LIVEBENCH_VALIDATION.zh.md +0 -154
- package/docs/ROUTING_MATURITY.zh.md +0 -76
- package/docs/ROUTING_RESEARCH.zh.md +0 -59
- package/docs/ROUTING_SELFTEST_STEPS.zh.md +0 -192
- package/docs/WORKBENCH_USER_GUIDE.zh.md +0 -293
- package/docs/archive/MIGRATION.md +0 -53
- package/docs/archive/README.md +0 -21
- package/docs/assets/candidate-pruning.svg +0 -80
- package/docs/assets/desktop-official-tools-0.9.0.png +0 -0
- package/docs/assets/router-only-0.12.0.png +0 -0
- package/docs/assets/routing-workflow.svg +0 -96
- package/docs/assets/workbench-budget-reservations.png +0 -0
- package/docs/assets/workbench-run-progress.png +0 -0
- package/docs/assets/workbench-run-timeout.png +0 -0
- package/docs/assets/workbench-subscription-usage.png +0 -0
- package/docs/assets/workbench-task-preview.jpg +0 -0
- package/docs/assets/workbench-usage.svg +0 -119
- package/docs/releases/0.20.0-validation.md +0 -26
- package/docs/releases/0.22.0-validation.md +0 -28
- package/docs/releases/0.23.0-validation.md +0 -30
- package/docs/releases/0.23.1-validation.md +0 -23
- package/docs/releases/0.24.0-validation.md +0 -41
- package/docs/releases/0.25.0-validation.md +0 -41
- package/docs/releases/0.25.1-validation.md +0 -36
- package/docs/releases/0.25.2-validation.md +0 -48
- package/docs/releases/0.25.3-validation.md +0 -50
- package/docs/releases/0.25.4-validation.md +0 -41
- package/docs/releases/0.25.5-validation.md +0 -40
- package/docs/releases/0.26.0-preview.0-validation.md +0 -23
- package/docs/releases/0.26.0-preview.1-f-difference.json +0 -6845
- package/docs/releases/0.26.0-preview.1-f-difference.md +0 -85
- package/docs/releases/0.26.0-preview.1-validation.md +0 -103
- package/docs/releases/0.63.0-validation.md +0 -51
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
# DeepSeek Harness Desktop · 独立插件安装与验证
|
|
2
|
-
|
|
3
|
-
模型路由从 **0.12.0** 起独立发布;GAL 是独立的 **0.1.0** 插件。路由 **0.25.4** 声明支持官方 **DeepSeek Harness Desktop 0.2.0-rc.1 / 0.2.0-rc.2 / 0.2.1-rc.2 / 0.2.1-rc.3**。GAL 的兼容范围以其自身安装包为准。
|
|
4
|
-
|
|
5
|
-
当前路由版本为 **0.25.4**,ZCode CLI 修复旧桌面版启动入口导致的 npm `EEXIST` 冲突,安装前备份识别出的旧启动脚本;继续提供 npm 与 GitHub Release 默认方式,共用工具卡片的安装、更新、修复和卸载;沿用 0.2.1-rc.3 SDK 与已有 Host peer 兼容声明。API 费用与订阅用量分开计算,沿用实时进度、取消和中断记录。0.22.0 新增算法推荐与手动工作包分配二选一,可逐包选择模型 API 或官方工具,并改进证据驱动规划与依赖搜索。手动混合执行目前只读;编辑文件继续走官方工具协作。沿用 Hermes/Pi 安装与终端支持、OpenCode 官方 V2 包和现有兼容声明。保留原插件 id、配置与运行记录;安装后完全退出 Harness(包括托盘)再重启。公开数据默认关闭,自动质量升级默认关闭。
|
|
6
|
-
|
|
7
|
-
[路由 README](../README.zh.md) · [迁移说明](archive/MIGRATION.md) · [独立 GAL README](https://github.com/Alice-Marx/deepseek-harness-galgame#readme)
|
|
8
|
-
|
|
9
|
-
## 1. 选择需要的插件
|
|
10
|
-
|
|
11
|
-
| 需求 | 添加插件输入框 | 安装后的入口 |
|
|
12
|
-
| --- | --- | --- |
|
|
13
|
-
| 分析复杂度、按质量和费用选模型、调用官方工具 | `@ljwei-stak/dsh-model-router@0.25.4` | 模型路由 |
|
|
14
|
-
| 剧情、立绘、音乐、存档、自由对话 | `@ljwei-stak/dsh-galgame@0.1.0` | Gal 模块 |
|
|
15
|
-
| 两者都要 | 分别安装上面两个包 | 模型路由 + Gal 模块 |
|
|
16
|
-
|
|
17
|
-
旧 npm 包名 `@ljwei-stak/model-router-galgame` 最后版本为 0.13.0,之后不再更新;新安装使用 `@ljwei-stak/dsh-model-router`。自 0.12.0 起路由不含 GAL 入口或剧情美术。GAL 不依赖路由,路由也不依赖 GAL。
|
|
18
|
-
|
|
19
|
-
路由正式版发布在 npm **`latest`** 标签,预发布版在 `next`。推荐填写精确版本。不要省略版本号:`latest` 或镜像状态可能选择与当前宿主不兼容的旧包。
|
|
20
|
-
|
|
21
|
-
## 2. 从 npm 安装
|
|
22
|
-
|
|
23
|
-
1. 打开 **DeepSeek Harness Desktop → 插件 → 添加插件**。
|
|
24
|
-
2. 在“包名、GitHub 仓库地址或本地目录路径”输入框填一个完整包名,例如:
|
|
25
|
-
|
|
26
|
-
```text
|
|
27
|
-
@ljwei-stak/dsh-model-router@0.25.4
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
只想安装 GAL 时填写:
|
|
31
|
-
|
|
32
|
-
```text
|
|
33
|
-
@ljwei-stak/dsh-galgame@0.1.0
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
3. 安装源选可连接的 **HTTPS** npm 源。新版本尚未同步到镜像时,选“自定义地址”并填官方源:
|
|
37
|
-
|
|
38
|
-
```text
|
|
39
|
-
https://registry.npmjs.org/
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
4. 核对预览的包名、版本和宿主兼容信息,安装并启用。完全退出 Harness(包括托盘进程)再启动,确保 Host 加载新代码。
|
|
43
|
-
5. 检查插件详情与侧边栏:路由应为 **0.25.4 / 模型路由**;GAL 应为 **0.1.0 / Gal 模块**。仅装路由时没有 GAL 入口是预期行为。
|
|
44
|
-
|
|
45
|
-
普通用户无需 `npm install -g`,该命令不会把插件注册到当前 Harness profile。
|
|
46
|
-
|
|
47
|
-
## 3. 从 GitHub 版本化安装包安装
|
|
48
|
-
|
|
49
|
-
进入对应 Release 下载 `.tgz`:
|
|
50
|
-
|
|
51
|
-
- [模型路由 Releases](https://github.com/Alice-Marx/dsh-model-router/releases)(也可运行 `npm pack @ljwei-stak/dsh-model-router@0.25.4` 获取同一安装包)
|
|
52
|
-
- [独立 GAL v0.1.0](https://github.com/Alice-Marx/deepseek-harness-galgame/releases/tag/v0.1.0)
|
|
53
|
-
|
|
54
|
-
在“添加插件”填写下载文件的**绝对路径**,例如:
|
|
55
|
-
|
|
56
|
-
```text
|
|
57
|
-
D:\Plugins\ljwei-stak-dsh-model-router-0.25.4.tgz
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
```text
|
|
61
|
-
D:\Plugins\ljwei-stak-dsh-galgame-0.1.0.tgz
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
如附有 `.sha256` 文件,用 PowerShell 计算并比较摘要:
|
|
65
|
-
|
|
66
|
-
```powershell
|
|
67
|
-
Get-FileHash -Algorithm SHA256 -LiteralPath 'D:\Plugins\ljwei-stak-dsh-model-router-0.25.4.tgz'
|
|
68
|
-
Get-FileHash -Algorithm SHA256 -LiteralPath 'D:\Plugins\ljwei-stak-dsh-galgame-0.1.0.tgz'
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
也可解压后填内层含 `package.json` 和 `.dsh-plugin` 的 `package` 目录。下载文件可放在 D 盘等自选位置,运行时数据目录由宿主 profile 决定。通过插件管理器更新,不修改 `app.asar` 或绕过版本检查。
|
|
72
|
-
|
|
73
|
-
## 4. 从合并版迁移:先备份,再拆分安装
|
|
74
|
-
|
|
75
|
-
1. 在旧合并插件的 GAL 播放器导出需要保留的剧情进度,并备份整个 Harness profile。每份 JSON 仅保存**当前剧情状态**,不含所有手动槽、设置、已读记录或本地音乐;重要槽位可依次读档再导出。
|
|
76
|
-
2. 在**同一个 profile**安装独立 `@ljwei-stak/dsh-galgame@0.1.0`。
|
|
77
|
-
3. 0.13.0 起包名改为 `@ljwei-stak/dsh-model-router`(旧包名最后版本为 0.13.0,内容相同,之后不再更新):在插件管理器卸载原 `@ljwei-stak/model-router-galgame`(保留 profile 与应用数据),再添加 `@ljwei-stak/dsh-model-router@0.25.4`。不要两个同时安装(条目 id 与工具名相同);条目 id 未变,路由设置与执行记录会保留。完成两项更新后再玩剧情,避免同时操作旧合并入口和新入口。
|
|
78
|
-
4. 现在路由与 GAL 各有一个入口。独立 GAL 沿用旧存档 localStorage 键,核对当前进度和三槽;更换 profile 或进度未恢复时,先切换到匹配剧目,再导入 JSON 备份。
|
|
79
|
-
5. 后续分别更新需要的插件;只用路由可以不启用或不安装 GAL。保留 profile 与应用数据,卸载插件时不要清理故事数据。
|
|
80
|
-
|
|
81
|
-
GAL 核心只包含**《回声之城·正篇》**与**《旧城迁移篇:未写完的约定》**。已分出的其他篇目保存在源代码归档,不在任一核心包里。其旧存档字节保留,但独立 GAL 核心不能运行那些旧剧目。
|
|
82
|
-
|
|
83
|
-
## 5. 模型路由第一次使用
|
|
84
|
-
|
|
85
|
-
工作台自 0.15.0 起分成**任务与执行、模型配置、官方工具、预算与安全**四页;0.25.4 沿用该布局。切换页面保留安装任务、终端会话和未完成的输入。
|
|
86
|
-
|
|
87
|
-
1. 在 Harness 官方**模型**页配置供应商、模型与凭据。插件读取准确的 `provider/model` 目录,模型档案不保存 API Key。
|
|
88
|
-
2. 在**模型配置**刷新目录,逐条填写自报质量评分、核对过的输入/输出单价(USD / 百万 token)和擅长方向;缺价留空。可选 `cliModel` 必须是该厂商 CLI 已验证接受的名字。可选 LiveBench 名称须准确对应版本与推理档位;它是用户确认的映射,不自动证明实际执行档位。
|
|
89
|
-
3. 在**任务与执行 → 任务规划**输入目标、步骤和验收标准。单任务推荐一条路线,团队模式为足够复杂的任务拆依赖工作包,指定模型跳过其他路线比较。预算是本地估价目标,`0` 表示不设本次估价约束,不限制厂商账单。
|
|
90
|
-
4. 点**生成路由建议**。建议直接显示在规划之后;规划计算在本机完成,不启动模型或 CLI。若已明确启用动态公开数据,读取账本/规划时可按检查间隔请求公开源,但不会把任务或反馈发送给这些源。
|
|
91
|
-
5. 需要真实只读执行时,使用**在工作台执行**,填写存在的工作区绝对路径(留空沿用上次运行)。先**预览执行计划**、核对路线/费用和全部确认原因,再明确确认执行。宿主启动前会重查;确认后才发生真实调用,结果写入执行记录。
|
|
92
|
-
6. 在**官方工具**检测、安装/更新工具并核对入口与登录。ZCode CLI 与其他工具共用安装、更新、修复和卸载操作,可选择 npm 或 GitHub Release 安装独立社区版本;先准备 Node 24.14.0 或更新的 Node 24。可信入口就绪不等于账号和模型有权限。
|
|
93
|
-
7. 在**预算与安全**查看每日/月度预算、订阅失败策略及可读/写边界;**持续反馈与本地偏好**可设置学习启停、半衰期、收缩强度和调整上限,**动态公共数据**需自行启用。官方工具终端不经过 Harness 沙箱,继承用户登录环境,需单独确认启动。
|
|
94
|
-
8. 需要 CLI 修改文件时进入官方会话、选择工作区,明确请求 `model_router_tool_run` 或 `model_router_team_execute` 的 `workspace-write` 模式。可编辑托管执行要求干净 Git 仓库、宿主审批和进程沙箱。`model_router_execute` 用于只读路由执行,`model_router_consult` 用于模型 API 意见。
|
|
95
|
-
|
|
96
|
-
完整教程见[工作台使用指南](WORKBENCH_USER_GUIDE.zh.md);路线算法、订阅与数据保存说明见[README](../README.zh.md)。
|
|
97
|
-
|
|
98
|
-
在成功结果上点 👍 / 👎,再次点已选评价可撤回。评价按准确路线和任务类型形成时间衰减、向零收缩的**主观偏好效用**,默认最大幅度 ±0.04,可配置到不超过 ±0.1;不抬高客观能力分或公共质量门槛。模型复核不视作人工评价,模型侧评分工具需要用户审批;本版不发起付费探索。
|
|
99
|
-
|
|
100
|
-
学习范围是同一个本地 **DSH_HOME** 共享的最近 **200 次运行**,不是多账号隔离或无限长期记忆。“从现在重新学习”只让旧结果不再参与学习,不删除执行记录和费用累计。动态价格只读取用户指定的公开、严格结构化、按官方文档策展的 USD/百万 token 固定费率快照;不是自动抓取所有厂商价目表,复杂阶梯/时段计费不能强行折成该格式。人工单价优先;公开数据默认关闭,详情见[动态数据与持续反馈说明](ROUTING_ADAPTIVE_LEARNING.zh.md)。
|
|
101
|
-
|
|
102
|
-
注册表包含 Kimi、Claude、Codex、MiniMax、MiMo、Grok、Gemini 和 ZCode。Claude、Codex、MiMo、Grok 支持单工具/团队只读或可编辑执行;Kimi、MiniMax、ZCode 仅支持获批的可编辑托管执行。Gemini 有路由无界面适配器,不进入单工具/团队托管执行器。详见[官方工具与托管模式](README.zh.md#官方工具与托管模式)。CLI 模型名可能不同于 Harness 目录;多数 CLI 不提供可核验的实际模型 ID,要看厂商记录与账单。
|
|
103
|
-
|
|
104
|
-
安装使用固定官方 npm 包的 `@latest`、厂商脚本或 [Alice-Marx/zcode-cli](https://github.com/Alice-Marx/zcode-cli) 的 GitHub Release 发行包。ZCode CLI 是社区维护的独立版本,不是 Z.AI 官方发行版。默认 `github-release` 方式使用 `<根目录>/zcode-cli`,统一目录留空时使用 `~/.zcode/runtime`;选择 `npm` 则安装固定包 [`@ljwei-stak/zcode-cli@latest`](https://www.npmjs.com/package/@ljwei-stak/zcode-cli),使用已保存的 npm 源和其他 npm 工具相同的 prefix。npm 包包含完整 TUI、Web 和 Agent 运行资源,安装时不另行从 GitHub 下载;需要准备运行资源时使用 `<DSH_HOME>/model-router/zcode-npm/cache` 中的已核验缓存,npm 卸载可能保留该缓存。两种方式均无需桌面版。希望 npm 工具安装在非 C 盘时,先按自己的空间规划配置全局前缀;Grok 数据目录与登录应使用一致的 `GROK_HOME`。MiniMax Windows 原生依赖失败时,从固定官方 HTTPS 来源下载最新版安装脚本,仅检查大小和基本内容结构后原样执行,**没有锁定该安装脚本的哈希**。安装后的 MiniMax CLI 代码另按已安装版本的官方 npm tarball 摘要核验。MiMo/Grok 同样使用官方 npm 内容证明;适用的 Claude/Codex Windows 入口验证发布者签名。ZCode CLI 的 GitHub Release 方式从固定仓库下载发行包,核对该发行版的 SHA-256,并在启动前检查已安装文件摘要;npm 方式核对固定包与其注册表发布版本。本地校验记录也属于信任边界。可在官方工具终端使用 `zcode login` 或 `zcode login bigmodel` 完成登录。
|
|
105
|
-
|
|
106
|
-
**Windows 旧 ZCode 启动入口。** npm 安装前,插件会备份识别出的旧桌面版 `zcode`、`zcode.cmd` 和 `zcode.ps1` 启动脚本,并在安装日志中记录备份位置,再让 npm 创建自己的命令入口。安装失败时会尝试安全恢复旧入口。无法识别的冲突文件保持原样并报错,插件不会添加 `--force`。桌面程序资源、账号配置、登录和会话历史均保留。具体规则见[执行器](.dsh-plugin/shared/official-tool-executor.mjs)和[npm 内容核验](.dsh-plugin/shared/npm-attestation.mjs)。
|
|
107
|
-
|
|
108
|
-
## 6. GAL 第一次使用
|
|
109
|
-
|
|
110
|
-
安装独立 GAL 后,从**Gal 模块**打开标题画面,选择正篇或旧城迁移篇;**Gal 设置**可调整完整立绘/半身表情、主角色与同伴大小位置、音乐与文字阅读。音乐首次播放需用户点击;剧情模式离线可玩。自由模式发送消息是真实模型调用,需宿主官方模型凭据,可能计费。
|
|
111
|
-
|
|
112
|
-
剧目章节、存档、快捷键、自动阅读、素材鉴赏与故障处理由[独立 GAL 仓库](https://github.com/Alice-Marx/deepseek-harness-galgame#readme)的教程维护。
|
|
113
|
-
|
|
114
|
-
## 7. 安装后验收
|
|
115
|
-
|
|
116
|
-
| 检查 | 预期 |
|
|
117
|
-
| --- | --- |
|
|
118
|
-
| 路由宿主版本 | 0.2.0-rc.1、0.2.0-rc.2、0.2.1-rc.2 或 0.2.1-rc.3;包括 `rc` 后缀。 |
|
|
119
|
-
| 路由独立安装 | 0.25.4 详情、模型路由入口、目录和模型档案可用;不出现旧合并 GAL 入口。 |
|
|
120
|
-
| GAL 独立安装 | 0.1.0 详情、Gal 模块入口、标题与两部核心剧情可用;不要求安装路由。 |
|
|
121
|
-
| 共同安装 | 两个入口各一份,路由工具和 GAL 播放器均能使用。 |
|
|
122
|
-
| 存档迁移 | 同 profile 可读旧键;跨 profile 用匹配剧目 JSON 导入;旧篇目的数据不覆盖。 |
|
|
123
|
-
| 本地规划 | 简单与复杂工作包分配可解释;价格未知保持未知;生成计划不调用模型。 |
|
|
124
|
-
| 官方工具 | 探测、固定来源安装、修复、取消和日志可检查;登录另验。 |
|
|
125
|
-
| 工作台只读执行 | 预览不启动模型,明确确认后执行;核对记录中的渠道、错误与费用。 |
|
|
126
|
-
| 持续反馈 | 点赞/不好/撤回后重新规划;调整只影响本地主观效用,停用与重置不抹除费用。 |
|
|
127
|
-
| 动态公开数据 | 默认关闭;自行启用后核对快照版本、校验时间及失败/过期状态;人工单价仍优先。 |
|
|
128
|
-
| 可编辑执行 | 在干净测试仓库核对审批、隔离工作区、补丁整合、厂商实际模型与计费。 |
|
|
129
|
-
|
|
130
|
-
历史 0.15.0 的自动测试验证为 220 项通过、3 项 Windows 平台跳过;组件 UI 预览检查使用模拟数据。当前 SDK 兼容与发布验证见[0.25.1 验收记录](releases/0.25.1-validation.md),历史 0.18.2 的发布验证见[更新记录](../CHANGELOG.md),不把模拟公开源/模型流和组件预览当作真实付费调用或 Harness Desktop 端到端验收;上表中的实际安装、账号和工作区检查仍需在使用环境中完成。
|
|
131
|
-
|
|
132
|
-
## 8. 开发者从完整源码构建
|
|
133
|
-
|
|
134
|
-
路由需要 Node.js **22.19+** 与 **pnpm 10.34.6**。从完整源码仓库根目录构建;当前源码版本为 0.25.4,DSH SDK 固定为 0.2.1-rc.3;复现已发布版本时检出对应发布标签。旧版(如 0.15.0)标签保留其当时内容。运行:
|
|
135
|
-
|
|
136
|
-
```powershell
|
|
137
|
-
pnpm install --frozen-lockfile --strict-peer-dependencies
|
|
138
|
-
npm run build:client
|
|
139
|
-
npm test
|
|
140
|
-
npm run check:client
|
|
141
|
-
npm run pack:local
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
pnpm 10 没有 `pnpm peers check`;使用严格依赖安装。客户端修改后必须重建,通过 `check:client` 再打包。将 `dist` 中本地包的绝对路径填入插件管理器,在测试 profile 验证;本地开发改动需独立验证,不能仅凭版本号判断包内容相同。
|
|
145
|
-
|
|
146
|
-
仅查看 UI 可运行 `npm run preview:ui` 并打开[本地预览](http://127.0.0.1:4173)。这是模拟目录、工具和执行记录,不启动 Harness Host、真实 CLI 或付费模型;不能代替桌面集成验收。GAL 独立仓库的开发与验证步骤以其自身 README 为准。
|
|
147
|
-
|
|
148
|
-
## 历史兼容提醒
|
|
149
|
-
|
|
150
|
-
合并版 **0.11.1 / 0.11.0** 声明 rc.1 与 rc.2;**0.10.2** 是未发布的本地兼容修复。已发布 **0.10.1** 仅声明 rc.1,rc.2 拒绝安装是 peer 依赖问题,换镜像不能修复;**0.8.0** 使用 0.1.7-rc.2 依赖,不用于当前宿主。历史 Git 标签和安装包保留,详见[更新记录](../CHANGELOG.md)和[迁移说明](archive/MIGRATION.md)。
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
# 选择算法分配或手动调整
|
|
2
|
-
|
|
3
|
-
在工作台生成路由建议后,可以选择 **按算法推荐分配**,也可以选择 **手动调整分配**。
|
|
4
|
-
|
|
5
|
-
1. 输入任务,选择“团队分工”,生成路由建议。单任务也可以调整一个工作包;“指定模型”沿用原来的全局模型选择。
|
|
6
|
-
2. 使用算法分配时,工作包按推荐方案和已设置的计费策略执行。
|
|
7
|
-
3. 切换到手动调整后,每个工作包都有独立的目标选择。初始选择为该包的推荐模型 API,可改成其他已配置的模型 API,或者已安装且支持只读执行的官方工具。
|
|
8
|
-
4. 核对任务目标、前置依赖、原算法推荐与新选择。修改目标不会改变任务拆分和依赖关系。恢复推荐可重新填入各包的推荐模型;切回算法分配会恢复原有自动策略。
|
|
9
|
-
5. 点击“预览执行计划”,核对 Host 验证后的实际目标、费用和权限,再确认执行。修改任务、模型目录、设置、规划依据或分配选择后,需要重新预览。
|
|
10
|
-
|
|
11
|
-
手动分配支持在一次运行中混合模型 API 与官方工具,例如由模型分析、Codex 检查、另一个模型汇总。各包按依赖执行,上游失败会阻止依赖它的后续工作包。结果和分配选择保存在同一份运行记录中,失败步骤重跑沿用保存的目标;改派重跑则使用新选择。
|
|
12
|
-
|
|
13
|
-
## 模型和工具分别代表什么
|
|
14
|
-
|
|
15
|
-
- **模型 API**:固定调用所选 provider/model,使用适配器默认推理档位。不会因为 CLI 已安装、订阅优先、质量升级或自动省钱策略而改为其他模型或渠道。配置为只用订阅的路线,以及编程套餐专用端点,不能直接作为普通 API 目标;预览会说明原因。
|
|
16
|
-
- **官方工具**:固定调用所选的注册工具,使用该工具自身配置的默认模型。选择工具不等于选择某个 API 模型;如需控制工具内部模型,应在该官方工具的配置中设置。未安装、平台不支持或执行未就绪时,预览会拒绝执行;工具失败不会自动转 API。
|
|
17
|
-
|
|
18
|
-
工具默认模型的价格通常无法可靠预估,因此显示“价格待配置/费用未知”,不会套用原推荐 API 模型的价格。已报告的真实费用仍按现有账本规则记录。预算 0 表示未设置本次估算上限;有限预算下,手动目标费用过高或无法确认满足本次预算时会暂停,确认后仍沿用手选目标,不会自动换成便宜模型。估算不是厂商实际扣费的硬上限。
|
|
19
|
-
|
|
20
|
-
手动混合分配当前执行只读任务。需要编辑工程文件时,继续使用“官方工具协作 → 编辑文件”的隔离工作树流程。该流程保留现有权限确认与改动整合机制。
|
|
21
|
-
|
|
22
|
-
如果“允许手动改派”设置关闭,工作台也会关闭手动分配入口。
|
|
23
|
-
|
|
24
|
-
## 在官方会话工具中使用
|
|
25
|
-
|
|
26
|
-
先调用 `model_router_plan`,保存返回的 `packagePlanKey` 和 `team.workPackages`。再调用 `model_router_execute`,使用相同的任务文本与规划模式,传入:
|
|
27
|
-
|
|
28
|
-
```json
|
|
29
|
-
{
|
|
30
|
-
"assignmentMode": "manual",
|
|
31
|
-
"packagePlanKey": "复制当前计划返回的键",
|
|
32
|
-
"packageAssignmentsJson": "以当前计划全部工作包 ID 为键的 JSON 对象"
|
|
33
|
-
}
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
每个绑定只能是下面两种结构之一:
|
|
37
|
-
|
|
38
|
-
```json
|
|
39
|
-
{ "kind": "api", "provider": "目录中的供应商 ID", "model": "目录中的准确模型 ID" }
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
```json
|
|
43
|
-
{ "kind": "tool", "toolId": "codex" }
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
必须覆盖当前计划中的全部工作包,不可添加其他包 ID。拆分键过期、目标不存在或后续工具未就绪时,会在第一个模型调用前拒绝整次执行。未传手动分配参数时,工具继续使用算法推荐。
|
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
# 动态数据与持续反馈:模型路由的推导、实现和实验
|
|
2
|
-
|
|
3
|
-
研究日期:2026-10-04。原实验对象:源码开发版 `0.16.0-dev.1`。该实现随正式版 `0.16.0`(2026-10-05)发布,原实验时间与合成结果保留,不将正式发布视为真实收益验证。
|
|
4
|
-
|
|
5
|
-
本轮已把动态数据和主观反馈接入 Host 与工作台,而不是只提出研究方案。验证使用真实规划器、合成反馈和模拟公开源,未读取用户历史、调用付费模型或证明真实质量—成本收益。此前的 [静态推导与 LiveBench 先验实验](ROUTING_DERIVATION_EXPERIMENTS.zh.md) 保留为冻结的历史研究;本篇记录新增闭环。
|
|
6
|
-
|
|
7
|
-
## 1 为什么要拆成三层
|
|
8
|
-
|
|
9
|
-
| 数据层 | 更新来源 | 影响什么 | 不代表什么 |
|
|
10
|
-
| --- | --- | --- | --- |
|
|
11
|
-
| 公共价格 | 用户选择的公开、按官方文档核对的 JSON 快照 | 下一次规划费用;当次 usage 计费估算 | 已自动抓取所有厂商官网、账号实际账单 |
|
|
12
|
-
| 公共能力 | LiveBench 官方发布或明确比例的 JSON 镜像 | 任务类别能力先验、原有代理质量门槛 | 特定查询答对概率、用户个人满意度 |
|
|
13
|
-
| 本地偏好 | 对真实记录结果的有用/不好/撤回 | 独立、有限幅度的偏好效用 | 模型客观能力变强、未选模型的成绩 |
|
|
14
|
-
|
|
15
|
-
旧实现把人工点赞和模型复核混入全局质量偏置。本轮生产路径不再使用该标量:模型复核保留展示和费用记录,只接受明确主观评价作为个人学习输入。旧的纯函数接口仍为程序调用兼容保留,不能据此判断当前 Host 使用旧机制。
|
|
16
|
-
|
|
17
|
-
非平稳环境需要允许政策随分布变化;相关上下文 bandit 研究提供了更强的检测和遗憾界。但本轮只采用有边界的时间折扣偏好估计,没有复现这些算法,也不继承其收敛保证。[Luo 等,2018](https://www.microsoft.com/en-us/research/publication/efficient-contextual-bandits-non-stationary-worlds/)
|
|
18
|
-
|
|
19
|
-
## 2 主观偏好估计的推导
|
|
20
|
-
|
|
21
|
-
设某个本地工作室中,准确 `provider/model` 和任务类别 `d` 的有效结果集合为 \(I_{m,d}\)。人工评价 \(r_i\in\{-1,+1\}\),不评价或撤回不产生样本。完成时间为 \(t_i\),当前时间为 \(t\),半衰期为 \(H\):
|
|
22
|
-
|
|
23
|
-
\[
|
|
24
|
-
w_i(t)=2^{-(t-t_i)/H},\qquad t_i\le t.
|
|
25
|
-
\]
|
|
26
|
-
|
|
27
|
-
以零偏好为收缩中心,求解加权、正则化的平方损失:
|
|
28
|
-
|
|
29
|
-
\[
|
|
30
|
-
\widehat\theta_{m,d}(t)
|
|
31
|
-
=\arg\min_\theta\left\{\kappa\theta^2+
|
|
32
|
-
\sum_{i\in I_{m,d}}w_i(t)(r_i-\theta)^2\right\}.
|
|
33
|
-
\]
|
|
34
|
-
|
|
35
|
-
令导数为零;\(\kappa>0\) 保证唯一解:
|
|
36
|
-
|
|
37
|
-
\[
|
|
38
|
-
\widehat\theta_{m,d}(t)
|
|
39
|
-
=\frac{\sum_iw_ir_i}{\kappa+\sum_iw_i},\qquad
|
|
40
|
-
b_{m,d}(t)=B\widehat\theta_{m,d}(t).
|
|
41
|
-
\]
|
|
42
|
-
|
|
43
|
-
实现还显式截断到 \([-B,B]\) 作数值保护。由于 \(|r_i|\le1\),
|
|
44
|
-
|
|
45
|
-
\[
|
|
46
|
-
|b_{m,d}(t)|\le B\frac{\sum_iw_i}{\kappa+\sum_iw_i}\le B.
|
|
47
|
-
\]
|
|
48
|
-
|
|
49
|
-
默认 \(H=30\) 天、\(\kappa=3\)、\(B=0.04\)。一条刚完成的好评只给 \(0.01\) 的效用调整;同域20条新好评为约 \(0.0348\)。半衰期让**样本权重**减半,不让收缩后的偏置恰好减半,因为分母也会变化。持续无新证据时,偏好逐渐回到零。
|
|
50
|
-
|
|
51
|
-
有限证据且 \(B>0\) 时上界严格小于 \(B\);允许设置 \(B=0\),此时偏好项恒为零。
|
|
52
|
-
|
|
53
|
-
这不是概率校准,也不是把人工评分减去 LiveBench 分数的“质量残差”。\(r_i\) 衡量有用与否,\(b\) 的单位是现有归一化规划效用;\(B\) 是工程影响上限,需要后续独立数据选择,不是理论最优参数。
|
|
54
|
-
|
|
55
|
-
实现每次从最近200条运行重算,不仅更新累积计数,因此同一 `runId/packageId` 的改评不会重复加样本,撤回立即移除证据,重跑替换结果后清除旧评分。它是有界滑动窗口,不是无限长期记忆;费用累计的既有保留机制与学习窗口分离。
|
|
56
|
-
|
|
57
|
-
## 3 如何进入现有分配目标
|
|
58
|
-
|
|
59
|
-
原有任务代理效用记为 \(U^0_j(m;t)\),包括能力、当期费用、延迟、专长、推理适配、风险和质量短缺惩罚。本轮使用:
|
|
60
|
-
|
|
61
|
-
\[
|
|
62
|
-
U_j(m;t)=U^0_j(m;t)+b_{m,d_j}(t).
|
|
63
|
-
\]
|
|
64
|
-
|
|
65
|
-
组合求解器继续最大化工作包总效用减去交接惩罚,并执行原有预算与代理质量约束。关键区别是:
|
|
66
|
-
|
|
67
|
-
\[
|
|
68
|
-
q_{m,d_j}(t)\ge\tau_j
|
|
69
|
-
\]
|
|
70
|
-
|
|
71
|
-
中的 \(q\) **不加入** \(b\)。好评不能把不满足质量门槛的模型抬进可行池,也不能把 unknown/catalog-heuristic 改标为 LiveBench 证据。若整个池都不满足门槛,原有放宽分支仍会明确 `constraintRelaxed`;这不等于偏好绕过门槛。
|
|
72
|
-
|
|
73
|
-
固定候选下新增有界可加项,不改变 exact/beam 的工程范围。Pareto 剪枝仍必须同时保持实际效用,不能只比较名义质量与费用;含依赖交接的局部剪枝仍关闭。有关条件保证见主推导报告。
|
|
74
|
-
|
|
75
|
-
## 4 数据刷新、版本与历史费用
|
|
76
|
-
|
|
77
|
-
用户在“预算与安全 → 动态公共数据”启用公开源后,打开/刷新账本、生成建议及 Host 规划/执行前按 TTL 检查。默认关闭;默认检查间隔24小时。失败重试间隔为 `min(TTL, 5分钟)`。没有后台定时任务,不使用时不会自行联网,也不为学习额外调用模型。
|
|
78
|
-
|
|
79
|
-
更新流程为“公开地址校验 → 跨进程请求预留 → 有界下载 → 整包验证 → 原子保存”。同进程请求合并,晚到回包不能覆盖另一个请求的更新。每份快照记录来源、核验日、发布日期、版本及 SHA-256 内容身份;刷新失败保留最后有效快照并显示过期/失败状态。清空一个源会立即停止使用该源,但保留磁盘最后有效副本以便恢复。
|
|
80
|
-
|
|
81
|
-
LiveBench 官方发布日不允许倒退。没有发布日期的镜像只能获得内容身份,不能证明其时间顺序。官方 CSV 固定按0–100解释;动态自定义镜像必须是 JSON 且声明 `scoreScale: 1` 或 `100`,拒绝超范围数据和模型规范化碰撞,不把百分制1分当满分。旧的非动态 CSV/JSON 适配调用保留兼容格式,不等于动态入口放宽验证。
|
|
82
|
-
|
|
83
|
-
LiveBench 动态快照按完整原始名称匹配,不猜 API 别名。模型配置新增 `benchmarkModel`:仅在确认版本及测量设置一致后填写榜单中的准确名称。它是用户声明,不是执行证据,不能将 max 档评分当作 low 档的实测。当前还没有完成 `(model, effort)` 联合执行验证,真实验证仍应固定实际模型/档位。
|
|
84
|
-
|
|
85
|
-
任务类别映射是启发式先验:普通 Coding 映射 code,Agentic Coding 不覆盖它;Data Analysis→research、Language→writing、IF→summarization。缺少类别时遵循现有显式/派生 overall 的证据规则,不能把这种映射叫特定查询校准。
|
|
86
|
-
|
|
87
|
-
价格快照只支持准确路线、USD/百万token的固定输入/输出和可选缓存费率,人工填写的价格优先。每路 `asOf` 不允许倒退,重复路线、币种/单位错误或复杂阶梯字段使整包更新失败。**这是按官方文档策展的数据接口,不是通用官网自动抓价服务**;填写 `sourceUrl` 也不会自动认证其内容。阶梯、时段、长上下文、TTL、Batch、音视频等复杂计费不能强塞成统一单价;需另加对应厂商适配器或按原实验协议计算。
|
|
88
|
-
|
|
89
|
-
运行记录冻结当时使用的费率、来源、版本及模型数据/偏好策略版本;后续更新不重写旧费用。旧记录不补造来源。订阅参考费用与 API 预算仍分开,缺失 usage/价格保持未知;当次计费估算使用当前有效快照,过期快照也可能继续作为估算,不能承诺等于现行官网价或真实账单。
|
|
90
|
-
|
|
91
|
-
## 5 反馈有效性、停用与范围
|
|
92
|
-
|
|
93
|
-
Host 用 `runId/packageId` 反查结果,客户端不能提供模型、任务域或用户ID来伪造学习事实。工作台反馈携带所见结果的 `expectedFinishedAt`;重跑后旧页面不能给新结果误评。Host 写入 `ratedAt`、策略版本和输入来源;衰减仍使用完成时间,反复点击旧答案不能刷新证据年龄。
|
|
94
|
-
|
|
95
|
-
仅 `ran=true`、`ok=true` 的成功结果参与学习;等待、取消、未执行、失败和不合法时间不自动当差评。CLI 未明确报告相同实际模型时不训练推荐模型。缺少执行标记、结果ID或可用时间的旧记录不猜测;缺少type按general,缺少ratedAt沿用完成时间,不要求旧记录已有策略/来源标签。模型可调用的评价工具要求 Host 审批,Agent 不得自动自评;来源标签仅作审计,不是独立人类身份认证。
|
|
96
|
-
|
|
97
|
-
可停用学习,设置半衰期/收缩/上限,或“从现在重新学习”。重置仅排除在起点及之前完成的结果,不删除运行、评分展示或费用。模型别名后台换版无法从相同字符串自动检测,需固定版本ID或人工重置。
|
|
98
|
-
|
|
99
|
-
范围为本地 `DSH_HOME` 工作室,不是可信多租户账号隔离。不同用户应使用独立 DSH_HOME;同目录用户共享记录和偏好。未实现账号权限、跨设备同步或无限长期用户画像。
|
|
100
|
-
|
|
101
|
-
## 6 已开展的实验与复现
|
|
102
|
-
|
|
103
|
-
入口:
|
|
104
|
-
|
|
105
|
-
```powershell
|
|
106
|
-
node scripts/adaptive-routing-study.mjs --out docs/experiments/20261004-adaptive-routing/adaptive-study.json
|
|
107
|
-
node --test tests/adaptive-*.test.mjs tests/dynamic-data.test.mjs
|
|
108
|
-
npm run build:client
|
|
109
|
-
npm test
|
|
110
|
-
npm run check:client
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
固定时钟及虚拟 A/B 路线,调用真实 `buildPlan`、`createPlanFromRoutes`、反馈函数及费用记录函数。结果文件:[adaptive-study.json](experiments/20261004-adaptive-routing/adaptive-study.json)。全部标签、能力分、价格和 usage 都是合成,不是最新 LiveBench 逐题数据或真实用户结果。
|
|
114
|
-
|
|
115
|
-
| 实验 | 控制与操作 | 观测 |
|
|
116
|
-
| --- | --- | --- |
|
|
117
|
-
| 正常使用反馈流 | 36轮,只给当轮选中模型合成评价 | 首轮A差评后下一轮B,最终35次B好评;B效用调整约0.03684,能力分始终0.90 |
|
|
118
|
-
| 偏好漂移 | 180天前40条A好评,一小时前4条A差评 | 30天半衰期有效权重约4.621,选B;3650天控制约42.656,仍选A |
|
|
119
|
-
| 价格版本变化 | 只改变假设价:A每百万0.1→5,B保持2 | 同一质量与任务下A→B;不是费用节省百分比实验 |
|
|
120
|
-
| 基准版本变化 | 切换合成 LiveBench-shaped 分数 | 同一费用与任务下A→B;不是实际榜单新旧收益 |
|
|
121
|
-
| 门槛保护 | A能力0.65,200次好评,调整上限0.1 | 仍选达到0.78门槛的B;客观分不被改写 |
|
|
122
|
-
| 撤回与重置 | 从已学习状态移除证据/设置起点 | 恢复未个性化选择;合成记录费用约0.02592美元不变 |
|
|
123
|
-
|
|
124
|
-
以上9个机制检查全部通过。独立集成测试另外验证 Host 真实开启数据刷新、同一快照 Client/Host 投影一致、人工价优先、清空源不误用缓存、费用版本冻结、旧时间戳拒评,以及20条按域反馈改变选模而不改变客观评分。测试使用独立临时 DSH_HOME、内存公开源和模拟模型流。
|
|
125
|
-
|
|
126
|
-
浏览器核验只操作内存演示页:参数保存、学习停用、反馈/撤回及重新规划;不等价于真实 Harness Desktop 端到端验收。完整测试日志与源码哈希归档在本轮 exports 目录,历史实验文件不覆盖。
|
|
127
|
-
|
|
128
|
-
## 7 尚未证明的收益与下一步真实实验
|
|
129
|
-
|
|
130
|
-
只观察被选择模型的反馈,既有政策会决定可观测样本;不评价的用户也可能系统性不同,因此本轮估计的是已观测结果的偏好,不是所有任务总体满意率。没有随机探索及正概率覆盖,不能用这些日志无偏评估未选模型或宣称找到全局最优。[Li 等,2015](https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/paper-7.pdf)
|
|
131
|
-
|
|
132
|
-
真实验证应沿用 [同题实验步骤](ROUTING_SELFTEST_STEPS.zh.md),补充时间顺序而非仅随机划分:
|
|
133
|
-
|
|
134
|
-
1. 固定真实模型/版本/档位、官方计费函数、评价标准和费用上限;冻结数据快照与个人学习参数。
|
|
135
|
-
2. 先采集训练/调整阶段的合法人工评价,再冻结策略;测试阶段评价不得回灌同一轮选择。
|
|
136
|
-
3. 在时间外同题集比较“固定先验、仅动态价格、仅动态评分、仅反馈、三者合用”,预先规定非劣界与分组统计方法。
|
|
137
|
-
4. 分别报告客观任务评分、个人满意度、真实 usage 成本、失败率、反馈覆盖率和策略/价格漂移;不把个人满意度改善替代客观质量非劣。
|
|
138
|
-
5. 获得充分覆盖后才考虑用户明确同意、有预算约束的探索及 propensity 记录;本轮未实现,也不默认进行。
|
|
139
|
-
|
|
140
|
-
因此已完成的是可持续更新的工程闭环、估计式推导和机制实验;真实质量—成本收益、最优参数、跨用户泛化以及实际推理档位验证仍未证明。
|
|
141
|
-
|
|
142
|
-
## 8 实现索引
|
|
143
|
-
|
|
144
|
-
- `shared/adaptive-feedback.mjs`:显式反馈、去重、时间折扣、收缩、重置与独立偏好字段。
|
|
145
|
-
- `shared/dynamic-data.mjs` / `dynamic-data-view.mjs`:Host公开源刷新与浏览器安全投影。
|
|
146
|
-
- `shared/livebench.mjs` / `model-profiles.mjs`:严格动态适配与准确基准映射。
|
|
147
|
-
- `shared/router.mjs` / `harness-plan.mjs`:独立偏好效用、原有质量/预算约束与版本说明。
|
|
148
|
-
- Host `index.mjs`、`router-state.mjs`、`run-ledger.mjs`:持久快照、反馈绑定和历史费率。
|
|
149
|
-
- Client `catalog.mjs`、`router-main.jsx`、`router-insights.jsx`:同源规划、陈旧回包保护和设置界面。
|
|
150
|
-
|
|
151
|
-
这些路径相对 `.dsh-plugin/`。2026-10-04研究阶段未推送、发布npm或变更用户现有设置;2026-10-05按用户要求将实现纳入正式版`0.16.0`,发布状态及安装方式见README/CHANGELOG。发布不自动修改用户现有设置或发起付费模型调用。
|
|
152
|
-
|
|
153
|
-
2026-10-08纳入正式版0.16.1的[成熟度改进](ROUTING_MATURITY.zh.md)补充稳定证据身份/小时衰减刷新、已观察权重诊断、异步/持久化保护及新的反例回归。原始估计式和2026-10-04实验记录保留不覆盖;新增验证不冒充真实质量—成本收益。
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
# 路由算法优化:实施与使用
|
|
2
|
-
|
|
3
|
-
本轮把任务相关证据、模型与推理档位联合选择、真实资源估计和依赖感知搜索接入规划器,并提供可选的 JSON 结构验收级联。它们改进的是有证据约束的规划和执行行为;真实回答质量提高多少、总费用降低多少,仍需独立留出任务上的同题实测。
|
|
4
|
-
|
|
5
|
-
## 已实现的行为
|
|
6
|
-
|
|
7
|
-
- **任务相关质量证据**:按 provider、model、reasoningEffort、channel、任务类型精确匹配,再用查询的哈希词法特征检索相似训练任务。不同任务组才计为不同邻居;样本不足或查询不相似时回退原有估计,不给未调用模型补造标签。输出的邻居离散程度不是校准后的答对概率。
|
|
8
|
-
- **模型 × effort 联合选择**:同一 API 模型至少有两个档位各自具备可用任务证据时,才把这些档位展开成独立动作。冷启动保留原档位选择方式;同一模型切换 effort 不计为跨模型交接。
|
|
9
|
-
- **真实资源估计**:从成功且用量完整的工作包学习输入比例、输出 token 和耗时的经验分布,规划时使用可用的 P90 估计。计数不足、模型身份不符或用量不完整时回退启发式估计。经验分位数不保证整次运行不超预算。
|
|
10
|
-
- **有界 DAG 搜索**:默认候选组合数不超过 4096 时精确枚举;更大空间保留未来依赖所需的模型边界,安全压缩被支配前缀,再按未来交接的乐观估计限宽,默认宽度 256。有限预算继续保护可负担前缀,未知价格不能证明预算可行。
|
|
11
|
-
- **effort 执行一致性**:API 调用传递路由允许列表中的精确 effort ID,并记录计划值、请求值及状态。`requested` 只代表 SDK 请求已携带该控制,不证明提供方实际使用了该强度。CLI 规划使用厂商默认档位;显式传入尚未支持的 CLI effort 时记录 `unsupported`,换模型时不会继承原模型的档位。
|
|
12
|
-
|
|
13
|
-
搜索结果中的 `strategy`、`expandedStates`、`dominancePruned`、`beamPruned`、`peakFrontier` 和 `beamWidth` 可用于审计。`exact` 的范围仅是传入的保留候选空间;beam 路径的 `approximate: true`、`boundCertified: false` 不提供全池最优或目标差距保证。
|
|
14
|
-
|
|
15
|
-
## 导入离线质量证据
|
|
16
|
-
|
|
17
|
-
在源码项目根目录运行:
|
|
18
|
-
|
|
19
|
-
```powershell
|
|
20
|
-
node scripts/build-routing-evidence.mjs --input data.json --output evidence.json
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
此命令只处理本地文件,不调用模型、不联网、不自动收集历史。输入顶层是 `{ "runs": [...], "observations": [...], "matrix": {...} }`,三项均可省略。输入文件上限 10 MB,`runs` 和最终展开的 `observations` 各不超过 10000 条;输入输出路径必须不同。
|
|
24
|
-
|
|
25
|
-
一条 `observations` 的字段示例如下。示例不代表真实测量;`timestamp` 应使用实际采样的 Unix 毫秒时间,`quality` 应来自可追溯的客观验收。
|
|
26
|
-
|
|
27
|
-
```json
|
|
28
|
-
{
|
|
29
|
-
"observations": [
|
|
30
|
-
{
|
|
31
|
-
"id": "task-001:model-a:medium",
|
|
32
|
-
"groupId": "task-001",
|
|
33
|
-
"text": "修复缓存失效后返回旧值的问题",
|
|
34
|
-
"type": "code",
|
|
35
|
-
"provider": "configured-provider-id",
|
|
36
|
-
"model": "configured-model-id",
|
|
37
|
-
"reasoningEffort": "medium",
|
|
38
|
-
"channel": "harness-llm",
|
|
39
|
-
"quality": 1,
|
|
40
|
-
"split": "train",
|
|
41
|
-
"timestamp": 1792281600000,
|
|
42
|
-
"provenance": {
|
|
43
|
-
"kind": "objective",
|
|
44
|
-
"source": "unit-tests",
|
|
45
|
-
"reference": "audit/run-001"
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
]
|
|
49
|
-
}
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
每条记录必须有上述身份、任务文本、类型、评分、时间、训练划分和来源字段。`reasoningEffort: ""` 表示档位未知;不能替换为任意已知档位。`channel: "api"` 会归一为 `harness-llm`。质量分须在 `[0,1]` 内,来源须声明 `kind: "objective"` 和非空 `source`、`reference`;点赞、自评、模型裁判和主观偏好不能直接当作这类标签。
|
|
53
|
-
|
|
54
|
-
`runs` 接受运行账本形状:run 含 `id`、`task`、`createdAt`、`finishedAt`、`packages`;工作包含 `id`、`provider`、`model`、`channel`、`type`、`purpose`、`ran: true`、`ok: true`、`usage`、`inputChars`、`finishedAt`,可含 `durationMs`。资源学习要求有效的非负 `usage.inputTokens`、`usage.outputTokens` 和实际正整数输入字符数。可选的 cache 计数必须是与未缓存输入互斥的读、写类别,不能把已包含缓存的总数再相加。缺失或未知计数不应补零。时间须落在有效窗口及所属 run 的起止范围内;失败、用量不完整、身份不符、重复或多次质量调用合并后的工作包不作为单动作资源样本。资源拒绝原因保留在产物 `stats` 中,账本中的评分不会自动变成质量标签。
|
|
55
|
-
|
|
56
|
-
同题多动作也可用矩阵输入:`matrix` 必须含 `split: "train"` 和 `tasks`;每个 task 含 `id`、`groupId`、`text`、`type`、`timestamp`、`results`。每个 result 含 `action: {provider, model, reasoningEffort, channel}`、`quality`、`provenance`,可另给唯一 `id`。只写实际测量的动作,未调用的动作保持未知。
|
|
57
|
-
|
|
58
|
-
重复 id、同一任务组的重复动作、未来或过期时间、非法客观记录和未经显式允许的 synthetic 记录会使 CLI 的质量导入失败。测试、验证、校准任务须按 `groupId` 在生成训练输入前分离;它们不能作为训练邻居导入。默认时间窗口为 180 天。
|
|
59
|
-
|
|
60
|
-
`--min-samples N` 可用于离线实验,默认 8;`--now TIMESTAMP` 固定评估时间以便复现;`--allow-synthetic` 只用于测试夹具。**生产 Host 重新构建证据时固定采用至少 8 个匹配样本的门槛**,不会沿用离线降低的门槛;质量预测还要求这些样本来自不同且足够相似的任务组。上面的单条示例不足以触发质量预测。
|
|
61
|
-
|
|
62
|
-
将生成文件的 JSON 文本填入插件设置的 `routingEvidenceJson`(最多 200000 字符)。Host 只从导入产物接收质量样本;资源统计从本机运行账本重新学习。`resourceLearningEnabled` 默认 `true`,关闭后停止使用账本重建资源证据。没有可用证据时保持原有冷启动回退。
|
|
63
|
-
|
|
64
|
-
输出产物不保留任务和答案明文,但词法哈希不保证匿名。`revision` 是内容变化标识,不是来源认证或签名;严格解析只能校验声明的格式,不能证明评分和来源真实。
|
|
65
|
-
|
|
66
|
-
## 可选结构验收与一次升级
|
|
67
|
-
|
|
68
|
-
`qualityEscalationEnabled` 默认 `false`。在 `qualityGateJson` 中填写 JSON 文本,例如:
|
|
69
|
-
|
|
70
|
-
```json
|
|
71
|
-
{
|
|
72
|
-
"kind": "json-object",
|
|
73
|
-
"requiredKeys": ["answer"],
|
|
74
|
-
"fieldTypes": {"answer": "string", "sources": "array"}
|
|
75
|
-
}
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
空文本或 `{}` 表示没有 gate。仅支持 `json-object`,只接受完整 JSON 对象,不从散文或 Markdown 代码块提取 JSON。`requiredKeys` 最多 32 个安全键;`fieldTypes` 支持 `string`、`number`、`boolean`、`object`、`array`、`null`,只检查存在的自身字段;需要必填的字段须同时列入 `requiredKeys`。未知配置字段、非法类型和危险键会被拒绝。JSON 数字必须有限。
|
|
79
|
-
|
|
80
|
-
gate 检查结构,不判断回答是否正确。首次通过、没有 gate、升级关闭、请求失败、取消、阻塞、暂停或截断,都不会因此多调用模型。只有显式启用升级、首次结构验收失败、存在不同 provider/model 的已配置合格 API 替代路线,并通过预算与计费批准,才最多再调用一次;不循环重跑同一模型。
|
|
81
|
-
|
|
82
|
-
当前自动质量升级适用于普通 API 工作包:原路线和替代路线均须显式配置 `execution: "api"`,或属于没有官方工具映射的提供方;两者都排除显式 `subscription-first`、`subscription-only` 和 `execution: "official"`,也排除计费计划识别出的任何订阅(含编程套餐名称与关联 `apiRoute`)。有官方工具映射的 API 路线可用 `subscription: "none"` 明确普通 API 身份。替代路线的已知质量先验须高于原路线。CLI、编程套餐订阅调用和 direct 强制指定模型不会自动换模型升级。首次调用已经产生的 usage、价格快照和报告费用会保留在 `qualityAttempts` 中;批准回调失败、第二次失败或两次之间取消,都不能抹掉首次消耗。不同模型的 token 不合并成一个虚假的单模型账单。部分费用未知时 `costUsd` 保持 `null`,已知部分另以 `knownCostUsd` 计入日/月已知小计,并保留未知标记。
|
|
83
|
-
|
|
84
|
-
## 验证与解释边界
|
|
85
|
-
|
|
86
|
-
```powershell
|
|
87
|
-
npm run test:routing-algorithm
|
|
88
|
-
node --test tests/routing-search-experiment.test.mjs tests/routing-search-summary.test.mjs tests/routing-search-frontier.test.mjs tests/routing-optimizer.test.mjs
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
搜索回归同时检查独立穷举 oracle、预算、随机 DAG、档位交接和顺序稳定性。已知 6561 组合反例恢复了零交接解;1728 组合反例的无预算 beam 路径也与 oracle 一致。不过宽度 1 的紧预算条件仍可能损失目标效用,测试继续保留这一差距。固定池上的这些结果不能代替真实模型质量与总成本评估。
|