@ljwei-stak/dsh-model-route-bot 0.64.0 → 0.66.0

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.
Files changed (34) hide show
  1. package/.dsh-plugin/client.js +694 -407
  2. package/CHANGELOG.md +47 -0
  3. package/README.i18n.yaml +2 -2
  4. package/README.md +209 -147
  5. package/README.zh.md +208 -146
  6. package/apps/integration-client/bot-attention.mjs +2 -2
  7. package/apps/integration-client/panels.jsx +239 -134
  8. package/apps/integration-client/product.css +36 -0
  9. package/apps/integration-client/routing-submissions.mjs +68 -0
  10. package/apps/integration-client/task-progress.mjs +46 -0
  11. package/apps/integration-client/tasks-panel.jsx +147 -0
  12. package/modules/bot-runtime/read-model.mjs +2 -2
  13. package/package.json +3 -1
  14. package/packages/capability-broker/src/authority.mjs +15 -1
  15. package/packages/model-router-plugin/README.md +39 -15
  16. package/packages/model-router-plugin/README.zh.md +40 -16
  17. package/packages/model-router-plugin/package.json +1 -1
  18. package/packages/orchestration/src/bot-routing-candidates.mjs +6 -6
  19. package/packages/orchestration/src/bot-routing-service.mjs +30 -5
  20. package/packages/orchestration/src/bot-routing.mjs +6 -4
  21. package/packages/orchestration/src/product-composition.mjs +65 -31
  22. package/packages/orchestration/src/sqlite-router-state.mjs +33 -8
  23. package/packages/orchestration/src/stop-proof.mjs +37 -0
  24. package/packages/orchestration/src/task-contract.mjs +42 -2
  25. package/packages/orchestration/src/task-journal.mjs +143 -37
  26. package/packages/orchestration/src/task-product.mjs +49 -0
  27. package/packages/orchestration/src/task-service.mjs +110 -18
  28. package/packages/orchestration/src/task-stage.mjs +36 -0
  29. package/packages/orchestration/src/write-retry.mjs +56 -0
  30. package/remote-computer-agent/build.mjs +48 -13
  31. package/remote-computer-agent/dist/cli.mjs +11 -1
  32. package/remote-computer-agent/dist/cli.mjs.map +2 -2
  33. package/remote-computer-agent/dist/index.mjs +11 -1
  34. package/remote-computer-agent/dist/index.mjs.map +2 -2
package/README.zh.md CHANGED
@@ -6,184 +6,274 @@
6
6
 
7
7
  [![dshfind](https://dshfind.com/api/card/Alice-Marx/dsh-model-router?lang=zh)](https://dshfind.com/zh/plugins/Alice-Marx/dsh-model-router?ref=badge)
8
8
 
9
- **当前正式版:0.64.0 · Windows Agent:0.1.1。**
9
+ ![DSH Bot · 模型路由——模型调度、Bot 协作与远程桌面](https://raw.githubusercontent.com/Alice-Marx/dsh-model-router/main/.github/assets/readme-cover-v2.png)
10
10
 
11
- 在 **插件 → 添加插件** 中按需选择:
11
+ **面向 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) 的模型路由与持久化 Bot 工作区。**
12
12
 
13
- | 输入的包名 | 安装内容 |
14
- |---|---|
15
- | `@ljwei-stak/dsh-model-route-bot` | 完整 Bot 工作区及模型路由,包含电脑、资料库和例行任务。 |
16
- | `@ljwei-stak/dsh-model-router` | Harness 原界面中的模型路由工作台,不安装 DS Bot。 |
13
+ 将任务转化为可审查的执行计划,为不同环节选择合适的已配置模型或原生 CLI 工具,并集中跟踪结果。完整 Bot 版本进一步提供长期对话、多 Bot 分工、私有资料库,以及用户自有 Windows 电脑的连接与操作。
17
14
 
18
- 每个 profile 选择一种安装形态。在插件管理中切换时,先移除原安装入口,再添加所需包;保留 profile 和 Bot 数据目录,并沿用已配置的 Bot 目录;内部路由配置标识沿用原值。[纯路由操作说明](packages/model-router-plugin/README.zh.md)。
15
+ 本项目是社区插件,复用 Harness 的模型配置和 Host 服务;各模型供应商与 CLI 使用各自的账户及访问权限。
19
16
 
20
- 一个 DeepSeek Harness 插件整合长期 Bot 对话、群聊、记忆和浏览器工作,以及模型路由、托管任务、Bot 私有文件和独立实现的 Windows 远程桌面。先为各 Bot 配置准确模型、工具和电脑权限,再由 Main Bot 将工作路由并真实派发给具备条件的执行 Bot。
17
+ **当前正式版:0.66.0 · Windows Remote Agent:0.1.1**
21
18
 
22
- **从这里开始:** [安装](#install) · [第一个 Bot](#quick-evaluation) · [日常工作](#daily-work) · [连接电脑](#computers) · [例行任务](#routines) · [Bot 路由](#bot-routing) · [私有资料库](#library) · [模型工作台](#workbench) · [数学参考](#costs) · [排查问题](#troubleshooting)。
19
+ [选择版本](#editions) · [安装](#install) · [第一个任务](#quick-evaluation) · [Bot 分工](#bot-routing) · [远程电脑](#computers) · [问题反馈](#troubleshooting)
23
20
 
24
- ![DSH Bot workspace](https://gitlab.com/Alice_marx/dsh-model-router/-/raw/main/docs/assets/workspace-0.63.1-light.png)
21
+ <a id="editions"></a>
25
22
 
26
- <a id="capabilities"></a>
23
+ ## 选择适合的工作区
27
24
 
28
- ## 已纳入的工作流
25
+ | 版本 | 在「插件 → 添加插件」中输入 | 安装内容 |
26
+ | --- | --- | --- |
27
+ | **DSH Bot + 模型路由** | `@ljwei-stak/dsh-model-route-bot` | 完整 Bot 工作区、模型路由工作台、Bot 分工、远程电脑、私有资料库与例行任务。 |
28
+ | **模型路由** | `@ljwei-stak/dsh-model-router` | 在 Harness 原有界面增加「模型路由」入口,提供路线规划、工具、执行与核算,不安装 DS Bot。 |
29
29
 
30
- | 范围 | 可以使用的能力 |
31
- | --- | --- |
32
- | Bot 对话 | 各自的模型、角色、工作目录、私有对话和权限设置;侧聊、提问与审批卡片。 |
33
- | 团队协作 | 群聊、并行提及、分阶段群目标、Bot 之间交接与结果留存。 |
34
- | 上下文与记忆 | 对话检查点/分段与搜索;Bot/群/团队三类记忆、变更历史,以及可审查的技能/项目规则学习提议。 |
35
- | 浏览器与文档 | 每 Bot 浏览器分区及页面工具,Office 文件读取/预览,连接器与密钥输入卡片;头像库与团队外观设置。 |
36
- | 定时工作 | Host 开启 Automation tasks 服务后使用上游定时任务;持续工作要求 Host 和相关 Agent 保持运行。 |
37
- | Bot 路由 | 保存省钱/均衡/效果策略,读取已提交模型/工具/机器候选,预览拒绝原因并真实派发执行任务。 |
38
- | 远程电脑 | 配对 Windows 桌面,观看/接管切换,键盘、鼠标和文字输入,显示器选择及放大查看。 |
39
- | 例行任务 | 演示已确认输入,按 Bot 保存,通过真实桌面会话回放,查看结果并核对未知影响。 |
40
- | 私有资料库 | 按 Bot 隔离的文件夹、二进制上传下载、文本编辑、名称筛选,以及页面和已授权 Bot 工具的私有文本搜索。 |
41
- | 模型工作台 | 本地模型路线规划、带依赖工作包、官方 CLI 检测/安装/终端、执行历史及独立的 API/订阅核算。 |
30
+ 同一个 Harness profile **选择一种版本**。两者共用路由配置;切换时,在插件管理中移除原包入口,再在同一 profile 添加另一个版本,保留数据目录并沿用已配置的 Bot home。[纯路由版本操作说明](packages/model-router-plugin/README.zh.md)。
31
+
32
+ <a id="capabilities"></a>
33
+
34
+ ## 功能概览
35
+
36
+ | 工作流 | 可用能力 | 适用版本 |
37
+ | --- | --- | --- |
38
+ | 任务驱动的模型路由 | 从任务模板起步,比较省钱、均衡或效果优先方案;支持单路线、带依赖的团队分工及指定准确模型。 | 两种版本 |
39
+ | 可审查的执行 | 确认前检查模型、工具、工作区、权限与估算;集中跟踪进度、结果、取消状态和受支持的重试。 | 两种版本 |
40
+ | 原生 CLI 工具 | 检测与安装已登记工具,检查登录及执行模式就绪状态,打开交互终端。 | 两种版本 |
41
+ | 预算与反馈 | 设置 API 限额,核对预占和收据,独立查看订阅调用/token,并使用可选复核与显式评分。 | 两种版本 |
42
+ | 持久化 Bot 对话 | 每个 Bot 独立配置模型、角色、工作目录、私有对话与权限;支持侧聊、提问和审批卡片。 | 完整 Bot |
43
+ | 群聊与共享上下文 | 使用提及、分阶段群目标、交接、对话搜索/检查点,以及带变更历史的 Bot/群/团队记忆。 | 完整 Bot |
44
+ | 浏览器与文档工作 | 每 Bot 浏览器分区、支持的 Office 读取/预览、连接器、密钥卡片、头像与团队外观设置。 | 完整 Bot |
45
+ | 定时工作 | 通过 Host 的 Automation tasks 服务为目标 Bot 或群设置定时任务。 | 完整 Bot |
46
+ | Bot 之间的任务路由 | Main Bot 根据已提交的模型、工具、电脑与资金配置选择符合条件的执行 Bot,真实派发任务。 | 完整 Bot |
47
+ | Windows 电脑与例行任务 | 配对自有电脑、观看或接管桌面、录制已确认输入,并回放保存的例行任务。 | 完整 Bot |
48
+ | 私有文件资料库 | 按 Bot 管理文件夹、二进制上传下载、文本编辑及返回行号的私有文本检索。 | 完整 Bot |
42
49
 
43
50
  <a id="install"></a>
44
51
 
45
52
  ## 安装
46
53
 
47
- 在 Harness Desktop 从 npm 安装 `@ljwei-stak/dsh-model-route-bot@0.64.0`,或导入对应的 Release 安装包。
54
+ 1. 在 Harness Desktop 打开 **插件 → 添加插件**,输入以下包名之一:
55
+ - 完整工作区:`@ljwei-stak/dsh-model-route-bot@0.66.0`
56
+ - 仅模型路由:`@ljwei-stak/dsh-model-router@0.66.0`
57
+ 2. 启用后,**连同托盘进程一起完全退出 Harness**,再重新启动,让 Host 加载已安装版本。
58
+ 3. 在 Harness 官方 **模型** 设置中配置 Provider 凭据和模型。完整版本进入 Bot 工作区;纯路由版本从侧栏打开 **模型路由**。
48
59
 
49
- 1. 在 Harness Desktop 打开 **插件 → 添加插件**,输入 `@ljwei-stak/dsh-model-route-bot@0.64.0`,也可导入 Release 的 `.tgz` 包;本地解压安装时选择包含 `package.json` 和 `.dsh-plugin` 的内层 `package` 目录。
50
- 2. 启用插件后,**连同托盘进程一起完全退出 Harness**,再重新启动。只关窗口可能仍保留旧 Host。
51
- 3. 检查已加载包的版本并打开 Bot 工作区/产品导航。Provider 凭据和模型在 Harness 官方 **模型** 设置中配置。
52
-
53
- 使用 DSH CLI 安装指定正式版:
60
+ 也可使用 DSH CLI,按所需版本选择一条命令:
54
61
 
55
62
  ```powershell
56
- dsh plugin --profile desktop add @ljwei-stak/dsh-model-route-bot@0.64.0
63
+ # 完整 Bot 工作区
64
+ dsh plugin --profile desktop add @ljwei-stak/dsh-model-route-bot@0.66.0
65
+
66
+ # 仅模型路由
67
+ dsh plugin --profile desktop add @ljwei-stak/dsh-model-router@0.66.0
57
68
  ```
58
69
 
59
- 仅执行全局 `npm install -g` 不会注册插件。包名仍为 `@ljwei-stak/dsh-model-router`,内部插件 ID 仍为 `model-router-galgame`,以保留设置。替换旧包前先移除重复插件条目;GAL 是独立插件。
70
+ 离线安装可从 [GitHub Releases](https://github.com/Alice-Marx/dsh-model-router/releases/latest) 导入对应 `.tgz`。本地解压安装时,选择同时包含 `package.json` 与 `.dsh-plugin` 的内层 `package` 目录。仅全局安装 npm 包不会将其注册为 Harness 插件。
60
71
 
61
72
  <a id="quick-evaluation"></a>
62
73
 
63
- ## 第一个 Bot 与第一个任务
74
+ ## 完成第一个任务
64
75
 
65
- 1. 在 Harness **模型** 中添加 Provider/模型,然后新建或选择 Bot,绑定准确的已配置模型。
66
- 2. 打开 **Bot 绑定**,核对该 Bot 的工具、工作目录、机器权限与资金设置。角色说明本身不授予权限。
67
- 3. 在 Bot 设置中将协调 Bot 标记为 Main,并为执行 Bot 分别配置实际要用的模型和工具。
68
- 4. 发送一个产物明确、验收方式具体的小任务。检查任务状态及产物;已受理的计划 ID 代表已提交,不代表已完成。
69
- 5. 需要电脑操作时先完成下方配对;需要委派时开启 [Bot 路由](#bot-routing),先预览候选决定。
76
+ 两种版本均可使用模型路由工作台;完整 Bot 工作区通过 **高级工作台** 进入。
70
77
 
71
- 集成模式复用 Harness Sessions。可选的独立运行时使用自己的会话存储,必须显式切换;同一 Bot 只能有一个正在服务的运行时。群聊、记忆、浏览器和长期上下文来自已固定的上游实现,而非占位能力清单。
78
+ 1. **准备模型。** 在 Harness 中添加可用的 Provider/模型;进入 **模型配置** 刷新路线,填写已知价格和能力,未知信息留空。
79
+ 2. **写清结果。** 在 **任务与执行** 选择 **项目检查**、**整理说明** 或 **方案比较** 模板,再修改任务与验收标准。**撤销模板** 可恢复原文。
80
+ 3. **查看预览。** 点击 **下一步:预览执行**,再点击 **预览执行计划**,核对模型/工具、工作区、权限及 API 费用或订阅用量估算。
81
+ 4. **确认启动。** 阅读确认项,点击 **全部确认并执行**。填写任务、生成建议和预览都不会调用模型;确认执行才会启动。
82
+ 5. **检查结果。** 打开 **执行记录** 查看输出、收据、状态、取消和受支持的重试操作,再检查所要求的产物是否达成。
72
83
 
73
- Windows/云电脑安装:[下载 Agent 0.1.1 完整 Windows x64 包](https://github.com/Alice-Marx/dsh-model-router/releases/download/v0.63.3/dsh-remote-agent-0.1.1-windows-x64.zip),解压后运行 `start.cmd`。
84
+ 当前应用界面使用中文;英文文档提供对应控件的操作解释。
74
85
 
75
- <a id="daily-work"></a>
86
+ ![当前工作台:可编辑任务模板与清晰的下一步引导](https://raw.githubusercontent.com/Alice-Marx/dsh-model-router/main/.github/assets/workbench-task.png)
76
87
 
77
- ## 对话、群聊、记忆、浏览器与定时工作
88
+ *截图来自当前真实工作台组件,使用离线演示数据;其中模型、价格、用量和路径均为示例。*
89
+
90
+ <a id="workbench"></a>
78
91
 
79
- | 要做的事 | 操作方法 |
92
+ ## 模型路由工作台
93
+
94
+ | 页面 | 主要用途 |
80
95
  | --- | --- |
81
- | 与 Bot 对话 | 在侧栏创建或选择 Bot,在 Bot 设置中选择模型和角色,再发送消息;遇到提问或审批卡片时先处理卡片。 |
82
- | 多 Bot 群聊 | 从聊天选择器中选择所需 Bot 建立群聊;在群设置中配置成员/管理员、谁来回答、工作目录和群公告,用 `@` 指定回答者。 |
83
- | 管理长期上下文 | 从侧栏搜索对话,用对话分段/检查点管理长任务;打开 Bot、群或团队的记忆入口查看、编辑、删除记忆及其变更,审核后再接受技能/项目规则学习提议。 |
84
- | 使用浏览器与文档 | 打开当前 Bot 的浏览器面板管理页面和网页工作;附加支持的 Office 文档进行读取/预览。按需配置连接器,通过密钥输入卡片填写凭据;头像库与私有文件资料库分别管理。 |
85
- | 定时执行工作 | 宿主开启 Automation tasks 服务后,从 Bot 设置或定时任务页面选择目标 Bot/群、任务内容和可用时间规则并保存,检查下次执行状态;Host 与相关 Agent 必须保持运行。 |
96
+ | **任务与执行** | 填写任务、选择规划模式,按需比较或分配工作包,再预览和确认执行。 |
97
+ | **模型配置** | 管理已配置的准确路线、价格、质量证据、计费偏好及 CLI 模型映射。 |
98
+ | **官方工具** | 查看安装、登录与执行模式就绪状态,管理工具安装和终端。 |
99
+ | **预算与安全** | 设置 API 限额和执行策略,核对实际支出、预占与订阅用量。 |
100
+ | **执行记录** | 查看任务输出、收据、中断/未知状态、取消及受支持的恢复操作。 |
86
101
 
87
- <a id="computers"></a>
102
+ 选择 **单任务** 使用一条路线,选择 **团队分工** 生成带依赖的工作包,或通过 **指定模型** 使用准确的已配置路线。**比较路由** 是可选步骤;比较后可保留算法建议,也可为每个工作包手动选择 API 模型或工具。
88
103
 
89
- ## 连接自己的 Windows 或云电脑
104
+ 路由/预算与执行选项按需展开。页面重新挂载时,任务文字、模式、所选模型及本次显式估算保留在**当前窗口内存**中;关闭应用或重载客户端会清除草稿。**需要你处理** 面板可用 **×** 关闭,再由顶部入口恢复,当前设备会记住显示偏好。失败提醒会直接打开对应执行记录。
90
105
 
91
- ### 在被控制的电脑上
106
+ ![执行预览:工作包分配、估算、工作区与执行确认](https://raw.githubusercontent.com/Alice-Marx/dsh-model-router/main/.github/assets/workbench-execution-preview.png)
92
107
 
93
- 1. 准备自己的 Windows x64 电脑/云电脑,并登录它的桌面。使用画面与输入时保持交互用户会话可用。
94
- 2. 将 **完整** `DSH-RemoteAgent-windows-x64-…zip` 解压到要长期保留的目录。完整包包含 Node、生产依赖、`dist`、安装/启动文件及原生 helper;只复制 `start.cmd` 或单个 exe 不够。
95
- 3. 双击 **`start.cmd`**。向导会让你选择工作目录、监听的具体本机/私有 VPN 地址、端口(默认 `9701`),以及 Harness 所在电脑能够访问的 Agent 基础 URL。
96
- 4. 跨电脑使用前先配置 WireGuard/Tailscale 或受保护隧道。只有已配置该私网时才确认私网隧道选项。本机使用或另行配置的 SSH 端口转发可使用回环地址。
97
- 5. 决定是否开启 **`hostManagedBots`**。显式开启后,这个可信、已认证 Host 可以在配对的目录/工具上限内授权现有及新建团队 Bot;关闭时必须填写固定的允许 Bot ID。它不会把配对密钥交给模型,也不会取消目录/工具限制。
98
- 6. 选择可选的命令/浏览器权限。向导为当前已登录用户注册 Agent 与桌面 helper 任务,不保存 Windows 密码;显示安装路径,并在其中生成 **`private/pairing.private.json`**。再次运行会保留已有配置和凭据。
108
+ *离线预览示例,未调用模型;实际工作区在确认后才启动所选模型或受支持的 CLI。*
99
109
 
100
- ### 在 Harness 中
110
+ 模型路由执行只读分析。需要修改文件时,选择 **团队分工 → 官方工具协作 → 编辑文件**,核对执行预览后启动。独立工作树用于归集改动,不限制工作树以外的系统访问。
101
111
 
102
- 1. 打开 **远程电脑 → 添加电脑**,导入 Agent 安装目录生成的 **`private/pairing.private.json`**。
103
- 2. 导入会自动填写 endpoint、机器/客户端标识、`rootIds`、工具和隧道选项。核对后按表单选择 Bot,再配对/探测。该文件包含 Host 配对凭据,应私下保管,不上传 Git 或问题报告。
104
- 3. 检查 **Bot 绑定** 和电脑授权。观看需要截图权限;接管及 routine 回放还需要获准的桌面输入工具和写入模式。`project` 等目录 ID 对应远端已配置工作目录,不是模型指定的路径。
105
- 4. 在 Bot 右侧 **电脑操作** 页签或电脑页面中选择电脑/显示器,点击 **连接桌面**,先以 **仅观看** 模式查看。
106
- 5. 点击 **取得控制权**,等待控制确认后再使用鼠标、键盘、滚轮或文字输入。真人控制期间会阻止该 Bot 冲突的桌面自动化;点击 **仅观看** 归还控制并释放按住的输入。
107
- 6. 点击 **放大** 进入铺满应用的查看界面,或在观看时双击;**关闭放大** 返回面板。结束后断开连接,留意任何停止尚未确认的提示。
112
+ <a id="official-tools"></a>
113
+ <a id="session-tools"></a>
114
+ <a id="team-lifecycle"></a>
108
115
 
109
- 桌面引擎使用 **Windows GDI 截图 → JPEG → WebSocket**,输入由原生端逐条确认。这是独立实现,不使用 RustDesk 协议。界面显示实测帧率;不承诺固定 30 FPS、已达到 RustDesk 性能、安全桌面采集或任意网络吞吐。Agent 可访问不等于已登录用户的桌面 helper 可用。
116
+ ### 使用各工具自己的账户与能力
110
117
 
111
- <a id="routines"></a>
118
+ 工具注册表包含 **Kimi Code、Claude Code、Codex、MiniMax Code、MiMo Code、Grok Build、Gemini、OpenCode、StepCode、Pi、Hermes、ZCode 和 DSH TUI**。在 **官方工具** 中检测工具,选择可用安装方式,完成厂商登录,再检查所需执行模式的就绪状态。
112
119
 
113
- ## 演示、保存与回放例行任务
120
+ 交互终端提供已安装工具自身的工作方式与能力;托管单工具和团队执行使用受支持的适配器。安装或登录成功,仍需核对具体模式与模型是否可用。厂商原生进程使用当前系统用户权限;Provider 凭据和 coding-plan 端点保留在 Harness 设置中。
114
121
 
115
- 1. 连接桌面、取得控制权,将应用恢复到已知起始界面,输入例行任务名称,点击 **开始录制**。
116
- 2. 演示工作流。只有该桌面会话成功确认的输入进入录制。连续鼠标移动按 **200 毫秒** 采样为路径点;保留按钮/按键/文字/滚轮顺序以及这些动作之前的最终位置。
117
- 3. 点击 **结束并保存**。客户端等待输入队列、确认释放按住的输入,再保存到该 Bot 的私有 routine 存储。输入的文字会包含在录制中;缺少保存确认时保留草稿,不显示成功。
118
- 4. 打开 **例行任务**,选择 Bot/电脑并恢复起始界面,运行已保存任务,查看实际结果及停止步骤。
119
- 5. 最多保存 **200 个保留步骤**,保留动作之间的停顿最多 **60 秒**。回放核对准确显示器 ID、物理分辨率、坐标系及已录 DPI。应用状态/布局变化仍需要重新演示;采样鼠标轨迹不适合精细绘图。
122
+ <a id="daily-work"></a>
120
123
 
121
- 这是有界的坐标与时序回放,不是通用视觉学习。回放会取得控制权,每个原生输入都等待 ACK,续期授权,并在完成、失败或取消时释放输入/控制。明确拒绝即停止后续步骤;已经发送但 ACK 丢失、断线或 Host 中断的输入会标记为 **unknown / 结果未知**,因为可能已经生效。
124
+ ## 建立持久化 Bot 工作区
122
125
 
123
- 未知执行会阻止这个 Bot/电脑再运行 routine。先检查真实桌面,确认工作已经做到哪里,恢复适合下一次运行的界面,并填写检查说明后再解除阻塞。核对不会将旧结果改为成功,也不会自动重跑。请求停止不等于确认停止;所有输入 ACK 成功也不能单独证明业务目标已经达成。
126
+ **适用于完整 Bot 版本。** 新建 Bot,选择准确的已配置模型,设置角色和工作目录;在 **Bot 绑定** 中提交允许的工具、电脑/工作区权限和资金配置。需要委派时,将协调 Bot 标记为 **Main**。
127
+
128
+ | 要做的事 | 操作方式 |
129
+ | --- | --- |
130
+ | 私有对话 | 在侧栏选择 Bot,发送消息,按需处理提问或审批卡片。 |
131
+ | 多 Bot 群聊 | 从聊天选择器建立群聊,设置成员/管理员与回答规则,用 `@` 指定 Bot;长任务可设置分阶段目标。 |
132
+ | 长期上下文 | 搜索对话,使用检查点/分段,编辑 Bot、群或团队记忆;审核后接受技能/项目规则学习提议。 |
133
+ | 网页与文档 | 打开当前 Bot 浏览器面板管理页面;附加支持的 Office 文档读取/预览;按需配置连接器并通过密钥卡片输入凭据。 |
134
+ | 定时执行 | 开启 Host 的 Automation tasks 服务,选择目标 Bot/群、任务和时间规则,保存后检查下次执行状态。Host 与相关 Agent 需保持运行。 |
135
+ | 工作区外观 | 独立管理头像与团队外观;头像库与私有文件资料库分别使用。 |
136
+
137
+ 集成模式复用 Harness Sessions;可选独立运行时拥有自己的会话存储。切换时需显式转移运行时所有权,同一 Bot 同时由一个运行时服务。
138
+
139
+ <a id="task-progress"></a>
140
+
141
+ ## 多 Bot 任务进度与待处理
142
+
143
+ **适用于完整 Bot 版本 0.66.0。** 在 **任务** 页面按 Bot 查看任务数量,通过 **全部 / 进行中 / 待处理 / 已结束** 筛选,或搜索任务名称及任务、计划、操作编号。计数和筛选针对已加载记录;资金准入检查属于进行中,等待预算属于待处理。
144
+
145
+ **需要你处理** 显示完整数量,超过六项时可展开全部。每项都能打开原任务;等待审批时可进入对应 Bot 私聊查看原请求。打开任务后可查看 **任务时间线**,了解排队、资金准入、执行、停止请求及收据核对,并展开每次尝试的原编号。日志读取不会重新派发任务或调用模型;停止请求仍需等待确认。旧宿主未提供时间线时,页面保留现有收据详情。
146
+
147
+ 宿主最多加载 **512 条任务**,优先待处理与进行中的记录,再显示较新的历史任务;超出时明确显示加载数量和总数。时间线按需读取最近 **80 条事件**,截断时显示实际总数。这些数量是持久任务记录的范围,不包括全部私聊消息或厂商实时输出。
148
+
149
+ 本轮参考 [Agents Anywhere](https://github.com/anywhere-labs/Agents-Anywhere) 的时间线与按能力开放操作的方式;实现与验证说明见 [任务工作区说明](docs/integration/agents-anywhere-tasks.md)。
124
150
 
125
151
  <a id="bot-routing"></a>
126
152
 
127
- ## 在 Bot 之间路由工作
153
+ ## 由 Main Bot 分配任务给执行 Bot
128
154
 
129
- 1. 先为 Main 和执行 Bot 配置准确模型、官方工具及机器/工作区授权。
130
- 2. 在 **任务 → Bot 路由** 开启路由,选择 **省钱优先**、**均衡** 或 **效果优先**,使用对应控件保存设置。
131
- 3. 输入任务,选择自动路由或指定 Bot;需要时选择电脑/目录和只读、写入、桌面或浏览器操作。**预览路由** 会显示选中者、缺失条件/落选原因及拟新增绑定。
132
- 4. 点击 **按此路由创建任务** 才会真实派发。可选的自动电脑授权仍受已提交机器上限与发起 Main Bot 可委派范围限制。
133
- 5. Main Bot 可以调用 **`bot_route_task`** 或同义工具 **`bot_dispatch`**,两者默认都会派发。显式 **`preview:true`** 仅预览,不创建任务、不新增授权。通过 `bot_task_plan_status` 查看真实计划/任务状态,并检查产物后再报告完成。
155
+ **适用于完整 Bot 版本。** 模型路由选择模型路线;Bot 路由选择已配置的 Bot 并向它真实派发任务。
134
156
 
135
- 候选来自已提交的 Bot 模型/工具/机器状态,包括可用性与已配置价格/质量证据。Bot 名称或提示词不能授予端点、可执行文件、凭据或操作身份。执行 Bot 的每次模型请求单独进行预算准入并生成与父任务关联的收据;任务获准不等于后续所有模型调用都被统一放行。
157
+ 路由使用每个 Bot 自己保存的价格,即使多个 Bot 使用相同模型也分别读取。无效的价格或质量评分保留为未知;评分相同时,优先选择价格已知的 Bot,再按 Bot ID 排序。
136
158
 
137
- <a id="library"></a>
159
+ 修改任务、刷新候选或切换宿主后,原预览会失效。展开 **查看比较依据** 可检查候选评分与未知信息。创建任务需要当前有效的预览;取得受理记录后会显示计划编号并停用重复创建按钮。若提交响应丢失或不完整,请先刷新任务记录、核对原提交,再决定是否创建另一项任务。窄屏下可横向滚动表格查看全部列。
138
160
 
139
- ## 使用 Bot 私有文件资料库
161
+ **核对原提交** 只读取原请求对应的持久计划和操作编号,不会重发任务、授予权限或调用模型。暂未查到只表示当前查询结果,原请求仍可能完成。同一窗口内切换页面后提醒会保留,并且只在内存保存提交引用;重新加载应用会清除。自行核对记录后,可显式清除本窗口提醒;清除不会停止原任务,也不会创建另一项任务。
140
162
 
141
- 打开 **资料库**,选择 Bot 和文件夹,可以上传本地文件、新建/进入文件夹、编辑支持的文本与下载文件;名称筛选只缩小当前目录条目。需要正文检索时输入字面查询并点击 **搜索文本**。结果显示文件路径、行号和匹配文本;点击路径可打开并选中对应行,修改后显式保存到该文件。
163
+ 重载前可展开 **保存提交核对码** 并复制核对码;重载后连接原宿主,在 **核对已保存的提交** 中粘贴,即可查询原记录。核对码只包含原 Bot 与请求编号,不含任务正文或登录凭据,也不能授予执行权限。无效核对码会在本地拦截;剪贴板不可用时可选中后手动复制。核对失败会按原因提示重新登录、更新宿主、核对不一致记录或恢复连接,并保留原引用供再次查询。
142
164
 
143
- 二进制上传/下载保留原始字节,每个文件最多 **16 MiB**。文本读取/编辑每文件最多 **1 MiB**。文本搜索不区分大小写,查询最多 256 字符,在选中 Bot 的库内最多扫描 500 个条目/8 层目录,从符合条件的文本文件返回最多 50 行匹配。已授权的 `bot_library_search` 工具复用相同后端,只搜索实际调用 Bot 自己的库。同名上传会被拒绝。
165
+ ```mermaid
166
+ flowchart LR
167
+ U["任务与验收标准"] --> M["Main Bot"]
168
+ M --> R["检查可用 Bot 并预览路由"]
169
+ R --> A["研究 Bot · 已配置模型/工具"]
170
+ R --> B["执行 Bot · 已配置模型/工具"]
171
+ R --> C["复核 Bot · 已配置模型/工具"]
172
+ A --> E["任务记录、产物与收据"]
173
+ B --> E
174
+ C --> E
175
+ ```
144
176
 
145
- 资料库是该 Bot 的私有文件区,与上游头像库、远端机器工作区不同。上传 PDF 或 Office 文件不代表自动提供 OCR、语义索引或对所有二进制格式的检索。模型通过已获准的资料库工具访问自己的文件,不能靠传入另一个 Bot ID 读取其私有区。
177
+ *示例团队结构。请先创建相应 Bot 并提交权限,再路由工作。*
146
178
 
147
- <a id="workbench"></a>
148
- <a id="official-tools"></a>
149
- <a id="session-tools"></a>
150
- <a id="team-lifecycle"></a>
151
- <a id="architecture"></a>
179
+ 1. 为 Main 和执行 Bot 配置实际使用的模型、允许工具、电脑/工作区授权及资金设置。
180
+ 2. 打开 **任务 → Bot 路由**,启用路由,选择 **省钱优先**、**均衡** 或 **效果优先** 并保存策略。
181
+ 3. 输入任务,选择自动路由或指定 Bot;按需选择电脑/目录和操作类型。**预览路由** 会解释选中者、缺失条件、落选原因及拟新增绑定。
182
+ 4. 点击 **按此路由创建任务** 才会派发;跟踪真实任务记录并检查产物。已受理的计划 ID 表示已提交,不代表已完成。
152
183
 
153
- ## 模型工作台、工具与执行边界
184
+ Main Bot 也可调用 `bot_route_task` 或同义工具 `bot_dispatch`;两者默认派发,显式 `preview: true` 仅预览。`bot_task_plan_status` 返回实际计划/任务状态。执行 Bot 的每次模型调用分别进行预算准入,并生成关联父任务的收据。角色说明本身不授予工具或电脑权限。
154
185
 
155
- 打开 **高级工作台** 使用模型路线规划、准确路线档案、官方工具、终端、带依赖工作包以及 API/订阅核算。Provider 凭据在 Harness 模型页面配置,厂商 CLI 使用自身登录。检测或安装成功不能证明登录、模型权益或某种托管执行模式可用。
186
+ <a id="computers"></a>
156
187
 
157
- 可用 **项目检查、整理说明、方案比较** 模板起步,再修改任务;**撤销模板** 可恢复原文。当前窗口内切换页面会保留任务草稿。路由/预算与执行选项按需展开;点击 **下一步:预览执行** 前往执行预览,比较路由是可选步骤。结果及受支持的重试集中在 **执行记录**,失败提醒会打开对应记录。选择模板或切页不会启动执行。
188
+ ## 连接自己的 Windows 或云电脑
158
189
 
159
- 点击 **需要你处理** 面板右上角的 **×** 即可关闭;当前设备会记住选择,重启后仍保持关闭。需要时点击工作台顶部的 **显示待处理提醒** 重新打开;任务记录仍可在历史及费用页面查看。
190
+ **适用于完整 Bot 版本。** 使用用户自备的 **Windows x64 电脑或云桌面**;向导生成本地 Agent 配置与配对文件。Host 需能通过已配置的网络、VPN 或隧道访问 Agent。
160
191
 
161
- 规划与候选预览在本地进行。执行可能将任务/上下文发送给选中的供应商或 CLI,并产生费用。模型路由选择模型路线,Bot 路由选择已配置 Bot 并派发真实执行任务;两者共用已提交的 Host 权限与核算,不从模型参数接受权限。
192
+ **在被控制的电脑上:**
162
193
 
163
- 官方工具注册表包括 Kimi Code、Claude Code、Codex、MiniMax Code、MiMo Code、Grok Build、Gemini、OpenCode、StepCode、Pi、Hermes、ZCode 和 DSH TUI。能否运行取决于工作台显示的平台和执行模式。交互终端使用当前系统用户权限;显式选择厂商原生环境的可编辑进程不在 Harness 进程沙箱内,worktree 只归集修改,不限制系统访问。
194
+ 1. 下载 [Windows Agent 0.1.1 完整包](https://github.com/Alice-Marx/dsh-model-router/releases/download/v0.63.3/dsh-remote-agent-0.1.1-windows-x64.zip),解压到长期保留的目录,运行 `start.cmd`,并保持 Windows 交互用户已登录。
195
+ 2. 在向导中设置可访问的地址、端口、允许工作目录及可选命令/浏览器能力。向导为当前用户注册 Agent 与桌面 helper,生成 `private/pairing.private.json`,不保存 Windows 密码;再次运行会保留已有配置。
164
196
 
165
- 任务保留 task/attempt/operation 身份、结果及未知影响证据。根据任务状态和验收标准判断完成,不从已生成计划、安装方法、权限检查通过或方法名称推断完成。API 金额/预占与订阅调用次数/已报告 token 独立记账,缺失用量保持未知。
197
+ **在 Harness 中:**
166
198
 
167
- 1. 在 **模型配置** 中刷新准确路线,填写已知价格、质量证据、计费偏好与 CLI 模型映射;未知信息留空。
168
- 2. 在 **任务与执行** 中填写任务,选择单路线、依赖团队或逐包手动分配;生成建议,核对预览,再确认需要执行的操作。
169
- 3. 在 **官方工具** 中检测/安装 CLI,检查支持模式和登录情况,按需使用交互终端;CLI 已安装不代表每个模型都有可用的托管执行器。
170
- 4. 在 **预算与安全** 和费用页面设置 API 限额/订阅偏好并查看收据;通过任务/历史页面跟踪执行,按记录状态取消、重试或核对结果。
199
+ 3. 打开 **远程电脑 → 添加电脑**,导入 `private/pairing.private.json`,核对自动填写的地址与授权,选择允许的 Bot 后配对/探测。该配对文件需私下保管。
200
+ 4. 在 **Bot 绑定** 保存该 Bot 的电脑与工具权限,打开 **电脑操作** 或电脑页面,选择显示器并点击 **连接桌面**,先观看画面。
201
+ 5. 点击 **取得控制权**,等待确认后发送键盘、鼠标、滚轮或文字输入。**仅观看** 会归还控制并释放按住的输入;通过 **放大** 或观看时双击查看大画面,结束后断开连接。
171
202
 
172
- 下方成本与路由计算说明适用于 **模型路线工作台**;Bot 选择和桌面 routine 回放属于另外的工作流。
203
+ 桌面采用自适应 JPEG 传输和原生输入确认,界面显示实测帧率;真人接管会阻止冲突的 Bot 桌面自动化。当前支持已登录且可用的 Windows 交互桌面,性能取决于分辨率和网络;安全/UAC 桌面不在采集范围内。电脑配对用于配置访问权限,云主机开通和网络连通由用户自行准备。
204
+
205
+ <a id="routines"></a>
206
+
207
+ ## 录制与回放例行任务
208
+
209
+ **适用于完整 Bot 版本。** 将演示过的桌面操作私下保存给选定 Bot。
210
+
211
+ 1. 连接桌面并取得控制权,将应用恢复到已知起始状态,输入任务名并点击 **开始录制**。
212
+ 2. 演示操作。只有成功确认的输入进入录制;连续鼠标移动按 200 毫秒采样为路径点。
213
+ 3. 点击 **结束并保存**,等待输入队列处理及按键/按钮释放确认;输入文字也会保存到录制中。
214
+ 4. 打开 **例行任务**,选择 Bot/电脑,恢复相同起始布局后回放,检查结果及停止位置。
215
+
216
+ 每个任务最多保留 **200 步**,停顿最多 **60 秒**,并核对显示器、物理分辨率、坐标系和录制 DPI。回放遵循坐标与时序,应用或布局变化时可能需要重新录制。输入可能生效但确认丢失时,结果记为 **unknown / 结果未知**;先检查真实桌面并填写核对说明,再解除下一次运行的阻塞。停止请求需等待实际停止确认。
217
+
218
+ <a id="library"></a>
219
+
220
+ ## 为每个 Bot 管理私有资料
221
+
222
+ **适用于完整 Bot 版本。** 打开 **资料库**,选择 Bot 和文件夹,上传/下载文件、新建目录或编辑支持的文本。名称筛选用于当前目录;**搜索文本** 在选定 Bot 的私有文本中返回文件路径、行号和匹配内容,打开结果后可编辑并显式保存。
223
+
224
+ 二进制传输保留原始字节,**单文件最多 16 MiB**;文本读取/编辑**单文件最多 1 MiB**。同名上传会被拒绝。获授权的 `bot_library_search` 使用调用 Bot 自己的库。PDF/Office 上传后作为文件保存;这里的文本检索不提供通用 OCR 或语义索引。
173
225
 
174
226
  <a id="costs"></a>
175
227
 
176
- ## 成本、订阅与质量
228
+ ## 理解执行与费用核算
229
+
230
+ - **本地规划。** 路线比较和执行预检不调用模型;确认执行会将所选任务/上下文发送给供应商或 CLI,并可能产生费用。
231
+ - **API 预算。** 单次估算与日/月限额共同检查已记录支出和其他预占。有限预算下,未知价格或金额需相应确认;估算用于规划控制,实际账单以供应商为准。
232
+ - **订阅单独核对。** 调用次数和已报告的输入/输出/缓存 token 与 API 金额分别记账。缺失用量保持未知,不视为零,也不据此推算厂商剩余总额度。
233
+ - **选择回退策略。** 可优先订阅、仅订阅或仅 API;订阅转 API 需重新估算、预算准入及必要确认。托管可编辑/单工具/团队运行不会自动在 API 上重试。
234
+ - **依据记录恢复。** 保留执行尝试、收据、预占和未知影响证据;中断后先核对再重试,经过时间或发出停止请求不能证明远程操作已停止。
235
+ - **有依据地优化选择。** 可选更强模型复核会增加调用。显式评分只调整有界偏好,不提高客观质量分或绕过质量下限;可禁用学习、撤回评分或重置学习起点。
236
+
237
+ <a id="architecture"></a>
238
+ <a id="data"></a>
239
+
240
+ ## 集成方式、数据与兼容性
241
+
242
+ Host 管理已提交的模型、工具、电脑、资金及操作身份。Bot 委派、模型工具调用和工作台主人操作遵循同一权限依据;独立工作树用于整理代码改动,厂商原生进程使用当前用户的系统访问权限。
243
+
244
+ Provider 凭据和认证会话由 Harness 管理。路由状态、收据、Bot 绑定、私有资料库和例行任务账本位于 `<DSH_HOME>/model-router/`;已配置 Bot home 保留上游对话、记忆、浏览器状态与团队文件。Agent 配置和配对凭据留在被控电脑。切换运行时所有者前备份这些位置;配对文件、录制、日志和私有资料不应出现在公开问题报告中。
245
+
246
+ | 组件 | 当前范围 |
247
+ | --- | --- |
248
+ | Harness 集成 | 声明的宿主版本见 [package.json](package.json);集成验证使用实际 Harness SDK **0.2.2-rc.1**。 |
249
+ | Bot 基础 | 固定 [DS Bot](https://github.com/Fei2411/DS-Bot) **0.2.7**,叠加本项目集成与产品扩展。 |
250
+ | 远程桌面 | Windows x64 Agent **0.1.1**,需要可用且已登录的交互桌面。 |
251
+ | 工具执行 | 以工作台显示的本机平台、CLI 安装、账户、准确模型与执行适配器支持情况为准。 |
252
+
253
+ <a id="troubleshooting"></a>
177
254
 
178
- - **API 预算:** 单次规划目标与日/月金额检查用于 API 计费执行。启动时原子检查已记录 API 支出和其他 API 预占,再为本次 API 估计预占。有限预算下,API 单价、费用或预占未知需要显式确认;后续 API 调用会按最新支出与预占重验。已确认的订阅通道不占 API 金额,也不会仅因 API 预算用满或单价缺失而被阻止。订阅转 API 是一次新的金额准入:按实际 API 路线估价、取得所需确认并原子预占后才调用。本地估计不是厂商硬性扣费上限。
179
- - **检查点与中断:** 路由执行、重跑/改派、官方团队、单工具运行和会话咨询共用持久执行生命周期。可选复核和质量升级在追加调用前预占额度。质量升级启动前,先保存首个收据与待核对的追加尝试,避免中断时抹掉首次费用或把第二次尝试视为免费。界面区分实际支出与预占,预占不是账单。确认进程退出后仍保留中断预占及未知用量证据以供核对;仅凭经过时间不会释放,也不会自动重放调用。
180
- - **订阅优先:** 默认优先检测到的 CLI 账号订阅或已配置 coding-plan 路线。CLI 订阅尝试会移除 API-key 环境变量。`billing` 可为 `subscription-first`、`api-only` 或 `subscription-only`;`subscription` 可为 `cli-login`、`plan-key` 或 `none`。
181
- - **回退:** 检测到额度耗尽/限流时,将订阅标记为冷却,并可按策略与可用性在已配置 API 路线上重试该路由步骤。其他已尝试的订阅失败默认暂停(`onSubscriptionFailure: "ask"`):可在历史中选择 API 重试、订阅重试或取消。订阅切换到 API 时,必须按实际 API 路线重新估算并检查预占。缺少价格或超出有限预算时,需要相应确认;未获确认不会启动 API 调用。托管可编辑/单工具/团队运行不会自动在 API 上重试。
182
- - **订阅用量:** 独立记录日/月调用次数、已报告输入/输出/缓存 token 和未知/不完整用量次数,并按供应商、工具、模型分组。缺失计数不视为零。订阅转 API 时同时保留订阅用量收据和 API 计费结果。旧记录的参考美元字段可保留,但当前订阅统计不再把它折算为金额,也不据此补造 token。token 数不能证明厂商订阅总额度、剩余额度或已用百分比。
183
- - **API 核算:** 对 API 计费结果,有效的 CLI 报告金额(包括零)优先采用。否则按 token 计算 CLI 费用,需要完整用量,以及报告实际模型匹配已配置单价或显式 CLI 映射。身份未知或不匹配时 API 费用保持未知;推荐路线价格不能证明实际成本。CLI 使用 API Key 时仍属于 API 计费,厂商账单为准。重跑替换的收据和已裁剪历史保留先前核算。
184
- - **质量与偏好:** 可选 `off`/`sample`/`always` 更强模型复核可能增加付费调用,且不作为人工反馈。显式评分以时间衰减和小样本收缩,调整精确路线、任务类型对应的独立主观效用(默认上限 ±0.04,可配置至 ±0.1)。评分不改变客观质量分或其硬下限;可禁用学习、撤回评分或重置学习起点。
255
+ ## 常见问题与反馈
256
+
257
+ | 现象 | 检查方式 |
258
+ | --- | --- |
259
+ | 更新后仍是旧界面 | 完全退出托盘 Host,确认已安装包及版本后重启。 |
260
+ | 没有路线或符合条件的执行 Bot | 检查准确模型、允许工具、授权、可用性及路由预览中的落选原因。 |
261
+ | 工具已安装但不能执行 | 检查登录、模型权益、具体模式的就绪状态、工作区和已提交权限。 |
262
+ | Agent 可访问但没有桌面 | 检查 Windows 登录会话、Agent/helper 任务、显示器和原生日志。 |
263
+ | 新 Bot 无法使用已配对电脑 | 检查配对的 Bot 名单/托管 Bot 上限,再保存新 Bot 的电脑和工具授权。 |
264
+ | 能观看但不能接管 | 检查桌面输入权限、写入授权和当前控制权占用。 |
265
+ | 中断、结果未知或停止待确认 | 核对执行记录与真实远程结果,再处理后续尝试。 |
266
+ | 例行任务提示显示器变化 | 恢复原显示器、分辨率、DPI 和应用布局,或重新录制。 |
267
+ | 资料库拒绝上传或编辑 | 检查文件大小及同名冲突;二进制传输与文本编辑的限额不同。 |
268
+ | 金额或用量未知 | 检查实际模型身份、配置价格和已报告用量,缺失数据不是零。 |
185
269
 
186
- Coding-plan 密钥与端点保留在 Harness 供应商设置中。`plan-key` 配置可将已配置的精确 `apiRoute` 指定为回退;路线编辑器不接受凭据或任意命令。厂商套餐资格与条款需向厂商核实。
270
+ 通过 [GitHub Issues](https://github.com/Alice-Marx/dsh-model-router/issues) 提交可复现问题,通过 [GitHub Releases](https://github.com/Alice-Marx/dsh-model-router/releases/latest) 获取安装文件。反馈时附上安装版本、插件/Host 版本、平台、复现步骤和脱敏截图或错误;移除凭据、配对文件和私有任务内容。
271
+
272
+ ## 许可与致谢
273
+
274
+ 本项目扩展采用 [MIT 许可证](LICENSE)。内置 DS Bot 源码保留 **Apache-2.0** 许可证及声明,来源记录见 [SOURCE.json](modules/bot-runtime/SOURCE.json)。感谢 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) 提供宿主基础,以及 [DS Bot](https://github.com/Fei2411/DS-Bot) 提供 Bot 基础。
275
+
276
+ ## 技术参考:费用核算与路由算法
187
277
 
188
278
  ### 实际费用与规划估计
189
279
 
@@ -204,13 +294,13 @@ $`C_a`$ 对应 `actualUsd`;$`I_u`$、$`O`$、$`R`$、$`W`$ 分别对应 `input
204
294
 
205
295
  <a id="routing"></a>
206
296
 
207
- ## 路由算法
297
+ ### 路由算法
208
298
 
209
- 手动分配:生成任务建议后,可选择按算法推荐执行,或逐包指定模型 API / 官方工具。参见[手动分配使用说明](docs/MANUAL_TASK_ASSIGNMENT.zh.md)。
299
+ 手动分配:生成任务建议后,可选择按算法推荐执行,或逐包指定模型 API / 官方工具。参见[工作台操作说明](#workbench)。
210
300
 
211
301
  规划器是确定性的本地启发式算法,不是训练得到的成功率预测器。它对文本分类、估计复杂度、创建适当的分析/执行/验证/汇总工作包,发现精确的已配置路线,叠加路线配置,并应用能力/质量约束。显式指定路线会跳过与其他路线的比较。目录质量/延迟/风险提示是实验性先验,不是实测成功概率或厂商实时报价。执行当前以文本为主;vision 标签不能证明已有端到端多模态流水线。
212
302
 
213
- ### Token 与价格估计
303
+ #### Token 与价格估计
214
304
 
215
305
  没有匹配资源证据时,基础输入 token 为 $`\max(80,\lceil n/3.7\rceil)`$,再乘以工作包阶段系数。基础输出为 900,按阶段/推理强度调整,最少 220。其中 $`n`$ 对应 JavaScript 的 `text.length`。这是按文本长度估算,不是厂商 tokenizer。匹配的完整历史记录达到样本门槛后,改用经验 P90 资源估计,不再重复乘档位和阶段系数。令 $`I`$ 为估计输入总数,$`R`$/$`W`$ 为缓存读取/写入部分,$`O`$ 为输出,价格单位为美元/百万 token:
216
306
 
@@ -226,7 +316,7 @@ U_c = \frac{1}{1+C/\max(C_{\mathrm{ref}},10^{-12})}
226
316
 
227
317
  $`U_c`$ 对应 `costUtility`,单价符号与上文一致。$`C_{\mathrm{ref}}`$ 使用固定参考价(输入 1、输出 5、缓存读取/写入 1 美元/百万),不是厂商报价。固定尺度防止一个无关的昂贵候选把所有费用惩罚压平。未知价格的公开估计为 `null`,费用效用为 0。内部无预算约束搜索使用费用哨兵值 0,但有限预算分配会排除价格未知候选;哨兵值绝不代表执行免费。
228
318
 
229
- ### 候选目标与质量下限
319
+ #### 候选目标与质量下限
230
320
 
231
321
  使用归一化质量 $`q`$,以及归一化延迟、领域匹配、推理匹配和风险代理值:
232
322
 
@@ -261,7 +351,7 @@ $`L`$ 为延迟效用:$`t`$ 是匹配历史的 P90 耗时,单位为毫秒;
261
351
 
262
352
  简单/均衡/复杂任务的基础质量下限分别为 **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]。均衡不作倾斜。
263
353
 
264
- ### 候选裁剪与分配搜索
354
+ #### 候选裁剪与分配搜索
265
355
 
266
356
  1. 优先保留达到各工作包质量下限的候选。若没有合格候选,保留质量最高的至多三个回退候选,并报告约束放宽。
267
357
  2. 每包最多保留 **12 个候选**,包含最低已知费用、最大效用与最高质量的锚点。存在依赖时禁用局部 Pareto 裁剪,因为路线身份会影响交接。
@@ -271,32 +361,4 @@ $`L`$ 为延迟效用:$`t`$ 是匹配历史的 P90 耗时,单位为毫秒;
271
361
 
272
362
  “精确”仅适用于保留下来的候选空间与代理目标。候选上限和 beam 裁剪意味着不保证在所有已配置模型中全局最优;请在预览中核对所选路线与是否放宽了质量下限。
273
363
 
274
- 证据导入、回退条件、推理档位与可选 JSON 验收升级的设置参见[算法优化使用说明](docs/ROUTING_ALGORITHM_OPTIMIZATION.zh.md)。验收升级默认关闭,启用后仍需通过计费与预算检查,最多增加一次普通 API 调用。
275
-
276
- <a id="data"></a>
277
-
278
- ## 数据与隐私
279
-
280
- Provider 凭据和认证会话由 Harness 管理。路由状态/收据位于 `<DSH_HOME>/model-router/`;产品还在其中保留已提交 Bot 绑定、任务记录、私有资料库与 routine/执行账本。上游 Bot home 按配置位置保留对话、记忆、浏览器状态及相关团队文件。远程 Agent 状态与配对凭据留在被控电脑的安装目录。
281
-
282
- 发送给供应商或 CLI 的任务/上下文适用对应服务的账户和计费条款。已保存 routine 包含演示输入的文字。配对导出、历史、日志及私有文件应作为私有数据保管。更换运行时所有者或降级前备份应用状态,不删除收据或未知操作账本来绕过阻塞。
283
-
284
- <a id="troubleshooting"></a>
285
-
286
- ## 排查问题
287
-
288
- | 现象 | 检查内容 |
289
- | --- | --- |
290
- | 更新后仍是旧 UI/版本 | 完全退出托盘 Host,确认安装包位置/版本并重启。 |
291
- | 无路线或没有可用执行 Bot | 准确模型、允许工具、机器/目录授权、当前可用性及预览中的拒绝原因。 |
292
- | `TOOL_DENIED` 或任务受阻 | 查看实际已提交 Bot 权限和请求操作,不扩大模型提供的身份,也不将角色提示词视为授权。 |
293
- | Agent 在线但没有桌面 | 当前已登录 Windows 会话、两个安装任务、full-desktop helper 及原生日志。 |
294
- | 连接不到 Agent | 可访问的基础 URL/端口、已配置的私有 VPN/隧道;导入配对文件不会建立网络。 |
295
- | Chief 能连接而新工人不能 | 检查 Agent 配对的 Bot 名单/`hostManagedBots` 上限,再保存工人的电脑与工具授权;固定名单不会自动包含新建 Bot。 |
296
- | 可以观看但接管按钮不可用 | 所需桌面输入工具、写模式授权及当前控制权占用。 |
297
- | Routine 提示显示器变化 | 恢复录制时显示器/分辨率/DPI,或重新录制;应用布局也要一致。 |
298
- | 结果未知或停止未确认 | 检查实际电脑和执行记录后再解除阻塞,不盲目重跑、不删除账本。 |
299
- | 资料库拒绝文件 | 二进制传输每文件最多 16 MiB,文本编辑/读取最多 1 MiB,同名上传会被拒绝。 |
300
- | API/订阅金额未知 | 检查实际模型身份、价格和供应商用量证据,缺失计数不是零。 |
301
-
302
- [版本更新记录(GitLab)](https://gitlab.com/Alice_marx/dsh-model-router/-/blob/main/CHANGELOG.md) · [源码构建指南(GitLab)](https://gitlab.com/Alice_marx/dsh-model-router/-/blob/main/docs/DEVELOPMENT.md) · [MIT 许可证](LICENSE)
364
+ 路线档案支持匹配的资源证据、回退条件、推理档位与可选 JSON 验收升级。验收升级默认关闭,启用后仍需通过计费与预算检查,最多增加一次普通 API 调用。
@@ -19,7 +19,7 @@ const short = (value, limit = 80) => {
19
19
  }
20
20
 
21
21
  /** A remote result that never confirmed its stop is unknown, not "stopped". */
22
- function remoteUncertain(row) {
22
+ export function remoteUncertain(row) {
23
23
  const remote = row?.result?.remote
24
24
  if (!remote || typeof remote !== 'object') return false
25
25
  // An operation that never started has nothing to confirm — but a receipt that also claims its
@@ -59,7 +59,7 @@ export function deriveBotAttention(snapshot, { limit = 6 } = {}) {
59
59
  task.blockedReason || '此任务需要你批准后才能继续。', 'approve', { botId: task.botId, taskId: id })
60
60
  continue
61
61
  }
62
- if (task.state === 'waiting-budget' || task.state === 'admitting') {
62
+ if (task.state === 'waiting-budget') {
63
63
  add('budget', `budget:${id}`, `${bot} 等待预算:${title}`,
64
64
  task.blockedReason || '预算或资金准入未通过,任务已停在启动前。', 'budget', { botId: task.botId, taskId: id })
65
65
  continue