@ljwei-stak/dsh-model-route-bot 0.66.4 → 0.67.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 (271) hide show
  1. package/.dsh-plugin/bot-product.mjs +81 -5
  2. package/.dsh-plugin/client.js +17490 -1791
  3. package/README.i18n.yaml +4 -4
  4. package/README.md +409 -364
  5. package/README.zh.md +409 -364
  6. package/apps/integration-client/README.md +31 -7
  7. package/apps/integration-client/api.mjs +14 -3
  8. package/apps/integration-client/binding-editor.jsx +308 -109
  9. package/apps/integration-client/binding-model.mjs +262 -0
  10. package/apps/integration-client/binding.css +144 -0
  11. package/apps/integration-client/bot-model-status.mjs +18 -0
  12. package/apps/integration-client/bot-profile-identity.jsx +197 -0
  13. package/apps/integration-client/bot-profile.css +57 -0
  14. package/apps/integration-client/bot-profile.mjs +97 -0
  15. package/apps/integration-client/bot-settings-dialog.css +18 -0
  16. package/apps/integration-client/bot-settings-dialog.jsx +111 -0
  17. package/apps/integration-client/bot-thread-header-bridge.css +20 -0
  18. package/apps/integration-client/bot-thread-header.jsx +278 -0
  19. package/apps/integration-client/bot-threads-panel.jsx +378 -0
  20. package/apps/integration-client/bot-threads.css +169 -0
  21. package/apps/integration-client/chat-design.mjs +250 -0
  22. package/apps/integration-client/chat-ui.jsx +175 -0
  23. package/apps/integration-client/chat.css +477 -0
  24. package/apps/integration-client/composer-draft-binding.mjs +50 -0
  25. package/apps/integration-client/composer-draft-bound.jsx +14 -0
  26. package/apps/integration-client/composer-draft-host.jsx +142 -0
  27. package/apps/integration-client/composer-draft-session.jsx +287 -0
  28. package/apps/integration-client/composer-draft-witness.mjs +115 -0
  29. package/apps/integration-client/composer-draft.css +4 -0
  30. package/apps/integration-client/composer-draft.mjs +322 -0
  31. package/apps/integration-client/contact-attention.jsx +54 -0
  32. package/apps/integration-client/data-panel.jsx +439 -0
  33. package/apps/integration-client/data.css +69 -0
  34. package/apps/integration-client/desktop-bridge.mjs +1 -0
  35. package/apps/integration-client/desktop-http-socket.mjs +49 -0
  36. package/apps/integration-client/desktop-keyboard.mjs +32 -0
  37. package/apps/integration-client/desktop-pane.jsx +99 -30
  38. package/apps/integration-client/desktop-stream.mjs +13 -3
  39. package/apps/integration-client/desktop-tools.jsx +19 -0
  40. package/apps/integration-client/desktop-touch.mjs +27 -0
  41. package/apps/integration-client/desktop.css +41 -0
  42. package/apps/integration-client/independent-chat-controller.mjs +224 -0
  43. package/apps/integration-client/independent-chat-entry.jsx +61 -0
  44. package/apps/integration-client/independent-chat-navigation.mjs +21 -0
  45. package/apps/integration-client/independent-chat-page.jsx +148 -0
  46. package/apps/integration-client/independent-chat-rich.jsx +64 -0
  47. package/apps/integration-client/independent-chat-rich.mjs +30 -0
  48. package/apps/integration-client/independent-chat.css +73 -0
  49. package/apps/integration-client/index.jsx +24 -16
  50. package/apps/integration-client/library-panel.jsx +4 -1
  51. package/apps/integration-client/licenses/jsqr-1.4.0-LICENSE.txt +202 -0
  52. package/apps/integration-client/main-route-editor.jsx +94 -0
  53. package/apps/integration-client/main-route-model.mjs +100 -0
  54. package/apps/integration-client/model-picker.css +37 -0
  55. package/apps/integration-client/model-picker.jsx +83 -0
  56. package/apps/integration-client/native-activity.css +141 -0
  57. package/apps/integration-client/native-activity.jsx +276 -0
  58. package/apps/integration-client/native-activity.mjs +384 -0
  59. package/apps/integration-client/notifications-panel.jsx +186 -0
  60. package/apps/integration-client/notifications.css +126 -0
  61. package/apps/integration-client/pairing-qr.jsx +79 -0
  62. package/apps/integration-client/panels.jsx +126 -115
  63. package/apps/integration-client/product-slots.jsx +46 -0
  64. package/apps/integration-client/routine-recorder.mjs +23 -2
  65. package/apps/integration-client/secure-pairing.jsx +84 -0
  66. package/apps/integration-client/tasks-panel.jsx +32 -10
  67. package/apps/integration-client/ui-icons.jsx +17 -0
  68. package/apps/integration-client/usage-explorer.jsx +43 -0
  69. package/apps/integration-client/usage-report.mjs +71 -0
  70. package/apps/integration-client/usage.css +34 -0
  71. package/apps/integration-client/web-panel-model.mjs +140 -0
  72. package/apps/integration-client/web-panel-page.jsx +221 -0
  73. package/apps/integration-client/web-panel-pins-live.jsx +28 -0
  74. package/apps/integration-client/web-panel.css +139 -0
  75. package/apps/integration-client/workspace-model.mjs +67 -0
  76. package/apps/integration-client/workspace-navigation.mjs +56 -0
  77. package/apps/integration-client/workspace-ui.jsx +173 -0
  78. package/apps/integration-client/workspace.css +332 -0
  79. package/modules/bot-runtime/SOURCE.json +176 -50
  80. package/modules/bot-runtime/index.mjs +169 -13
  81. package/modules/bot-runtime/product-overlay/OVERLAY.json +128 -2
  82. package/modules/bot-runtime/product-overlay/base/src/client/header.js +244 -0
  83. package/modules/bot-runtime/product-overlay/base/src/client/learning-card.js +202 -0
  84. package/modules/bot-runtime/product-overlay/base/src/client/model-menu.js +371 -0
  85. package/modules/bot-runtime/product-overlay/base/src/client/secret-card.js +363 -0
  86. package/modules/bot-runtime/product-overlay/base/src/client/sources.js +68 -0
  87. package/modules/bot-runtime/product-overlay/base/src/client/turn-error.js +260 -0
  88. package/modules/bot-runtime/product-overlay/base/src/host/channel.js +647 -0
  89. package/modules/bot-runtime/product-overlay/base/src/host/memory.js +2050 -0
  90. package/modules/bot-runtime/product-overlay/base/src/host/models.js +314 -0
  91. package/modules/bot-runtime/product-overlay/base/src/host/parts.js +1473 -0
  92. package/modules/bot-runtime/product-overlay/base/src/host/privacy.js +368 -0
  93. package/modules/bot-runtime/product-overlay/base/src/host/roster.js +776 -0
  94. package/modules/bot-runtime/product-overlay/base/src/host/store.js +512 -0
  95. package/modules/bot-runtime/product-overlay/base/src/host/usage.js +653 -0
  96. package/modules/bot-runtime/product-overlay/patches/src/client/details-drawer.js.patch +48 -2
  97. package/modules/bot-runtime/product-overlay/patches/src/client/header.js.patch +41 -0
  98. package/modules/bot-runtime/product-overlay/patches/src/client/index.js.patch +33 -1
  99. package/modules/bot-runtime/product-overlay/patches/src/client/learning-card.js.patch +20 -0
  100. package/modules/bot-runtime/product-overlay/patches/src/client/model-menu.js.patch +24 -0
  101. package/modules/bot-runtime/product-overlay/patches/src/client/secret-card.js.patch +25 -0
  102. package/modules/bot-runtime/product-overlay/patches/src/client/sources.js.patch +52 -0
  103. package/modules/bot-runtime/product-overlay/patches/src/client/turn-error.js.patch +23 -0
  104. package/modules/bot-runtime/product-overlay/patches/src/host/channel.js.patch +46 -0
  105. package/modules/bot-runtime/product-overlay/patches/src/host/memory.js.patch +11 -0
  106. package/modules/bot-runtime/product-overlay/patches/src/host/models.js.patch +16 -0
  107. package/modules/bot-runtime/product-overlay/patches/src/host/parts.js.patch +95 -0
  108. package/modules/bot-runtime/product-overlay/patches/src/host/privacy.js.patch +11 -0
  109. package/modules/bot-runtime/product-overlay/patches/src/host/roster.js.patch +145 -0
  110. package/modules/bot-runtime/product-overlay/patches/src/host/store.js.patch +68 -0
  111. package/modules/bot-runtime/product-overlay/patches/src/host/usage.js.patch +11 -0
  112. package/modules/bot-runtime/read-model.mjs +19 -4
  113. package/modules/bot-runtime/vendor/ds-bot/src/client/details-drawer.js +15 -5
  114. package/modules/bot-runtime/vendor/ds-bot/src/client/header.js +9 -2
  115. package/modules/bot-runtime/vendor/ds-bot/src/client/index.js +9 -2
  116. package/modules/bot-runtime/vendor/ds-bot/src/client/learning-card.js +2 -2
  117. package/modules/bot-runtime/vendor/ds-bot/src/client/model-menu.js +5 -3
  118. package/modules/bot-runtime/vendor/ds-bot/src/client/secret-card.js +3 -3
  119. package/modules/bot-runtime/vendor/ds-bot/src/client/sources.js +25 -2
  120. package/modules/bot-runtime/vendor/ds-bot/src/client/turn-error.js +3 -2
  121. package/modules/bot-runtime/vendor/ds-bot/src/host/channel.js +14 -2
  122. package/modules/bot-runtime/vendor/ds-bot/src/host/memory.js +1 -1
  123. package/modules/bot-runtime/vendor/ds-bot/src/host/models.js +7 -0
  124. package/modules/bot-runtime/vendor/ds-bot/src/host/parts.js +26 -9
  125. package/modules/bot-runtime/vendor/ds-bot/src/host/privacy.js +1 -1
  126. package/modules/bot-runtime/vendor/ds-bot/src/host/roster.js +112 -3
  127. package/modules/bot-runtime/vendor/ds-bot/src/host/store.js +34 -1
  128. package/modules/bot-runtime/vendor/ds-bot/src/host/usage.js +1 -1
  129. package/modules/independent-runtime/index.mjs +152 -62
  130. package/modules/independent-runtime/remote-tools.mjs +8 -5
  131. package/modules/openmaus-protocol/NOTICE +10 -0
  132. package/modules/openmaus-protocol/README.md +15 -0
  133. package/modules/openmaus-protocol/SOURCE.json +68 -0
  134. package/modules/openmaus-protocol/dist/protocol.mjs +1203 -0
  135. package/modules/openmaus-protocol/index.mjs +1 -0
  136. package/modules/openmaus-protocol/transport.mjs +77 -0
  137. package/modules/openmaus-protocol/vendor/LICENSE +202 -0
  138. package/modules/openmaus-protocol/vendor/companion/src/e2e/README.md +405 -0
  139. package/modules/openmaus-protocol/vendor/companion/src/e2e/credentials.ts +128 -0
  140. package/modules/openmaus-protocol/vendor/companion/src/e2e/descriptor.ts +84 -0
  141. package/modules/openmaus-protocol/vendor/companion/src/e2e/noise.ts +456 -0
  142. package/modules/openmaus-protocol/vendor/companion/src/e2e/phone.ts +104 -0
  143. package/modules/openmaus-protocol/vendor/companion/src/e2e/session.ts +417 -0
  144. package/modules/openmaus-protocol/vendor/companion/src/e2e/vectors/v1.json +2565 -0
  145. package/modules/openmaus-protocol/vendor/companion/src/e2e/vectors/v1.sha256 +1 -0
  146. package/modules/openmaus-protocol/vendor/companion/src/e2e/yamux.ts +335 -0
  147. package/package.json +18 -6
  148. package/packages/bot-acp/README.md +156 -0
  149. package/packages/bot-acp/licenses/LICENSE-OpenMausBot +202 -0
  150. package/packages/bot-acp/licenses/NOTICE.md +27 -0
  151. package/packages/bot-acp/src/acp-adapter.mjs +795 -0
  152. package/packages/bot-acp/src/acp-host.mjs +148 -0
  153. package/packages/bot-acp/src/native-launch.mjs +121 -0
  154. package/packages/bot-acp/src/permission-policy.mjs +283 -0
  155. package/packages/bot-acp/src/rpc-codec.mjs +265 -0
  156. package/packages/bot-acp/src/session-core.mjs +581 -0
  157. package/packages/bot-acp/src/stdio-rpc.mjs +329 -0
  158. package/packages/bot-engines/README.md +281 -0
  159. package/packages/bot-engines/licenses/LICENSE-OpenMausBot +202 -0
  160. package/packages/bot-engines/licenses/NOTICE.md +32 -0
  161. package/packages/bot-engines/src/claude-engine.mjs +772 -0
  162. package/packages/bot-engines/src/claude-llm-adapter.mjs +797 -0
  163. package/packages/bot-engines/src/claude-llm-turn.mjs +292 -0
  164. package/packages/bot-engines/src/claude-permission-broker.mjs +130 -0
  165. package/packages/bot-engines/src/claude-permission-proxy.mjs +87 -0
  166. package/packages/bot-engines/src/claude-protocol.mjs +177 -0
  167. package/packages/bot-engines/src/driver-catalog.mjs +334 -0
  168. package/packages/bot-engines/src/host-loop-request.mjs +95 -0
  169. package/packages/bot-engines/src/host-registrations.mjs +105 -0
  170. package/packages/capability-broker/src/cli-bootstrap.mjs +86 -16
  171. package/packages/capability-broker/src/cli-bridge-response.mjs +80 -0
  172. package/packages/capability-broker/src/cli-stdio-bridge.mjs +21 -8
  173. package/packages/cli-runtime/src/codex-session-core.mjs +4 -0
  174. package/packages/cli-runtime/src/native-cli-output.mjs +57 -0
  175. package/packages/cli-runtime/src/native-peer.ps1 +51 -3
  176. package/packages/cli-runtime/src/native-process.mjs +77 -14
  177. package/packages/model-router-plugin/package.json +1 -1
  178. package/packages/orchestration/src/binding-product.mjs +19 -0
  179. package/packages/orchestration/src/bot-data-actions.mjs +45 -0
  180. package/packages/orchestration/src/bot-data-chart.mjs +109 -0
  181. package/packages/orchestration/src/bot-data-context.mjs +44 -0
  182. package/packages/orchestration/src/bot-data-engine.mjs +809 -0
  183. package/packages/orchestration/src/bot-data-io.mjs +186 -0
  184. package/packages/orchestration/src/bot-data-sql.mjs +195 -0
  185. package/packages/orchestration/src/bot-data-surface.mjs +144 -0
  186. package/packages/orchestration/src/bot-data-tools.mjs +68 -0
  187. package/packages/orchestration/src/bot-data-worker.mjs +228 -0
  188. package/packages/orchestration/src/bot-independent-execution.mjs +195 -0
  189. package/packages/orchestration/src/bot-independent-stream.mjs +74 -0
  190. package/packages/orchestration/src/bot-loop.mjs +152 -19
  191. package/packages/orchestration/src/bot-notifications.mjs +159 -0
  192. package/packages/orchestration/src/bot-policy.mjs +43 -4
  193. package/packages/orchestration/src/bot-profile.mjs +171 -0
  194. package/packages/orchestration/src/bot-routine.mjs +4 -4
  195. package/packages/orchestration/src/bot-runtime-assembly.mjs +255 -8
  196. package/packages/orchestration/src/bot-runtime-switch.mjs +13 -2
  197. package/packages/orchestration/src/bot-serving.mjs +164 -0
  198. package/packages/orchestration/src/bot-session-store.mjs +105 -9
  199. package/packages/orchestration/src/bot-settings.mjs +50 -11
  200. package/packages/orchestration/src/bot-thread-admission.mjs +84 -0
  201. package/packages/orchestration/src/bot-thread-host.mjs +187 -0
  202. package/packages/orchestration/src/bot-threads.mjs +790 -0
  203. package/packages/orchestration/src/data-product-access.mjs +37 -0
  204. package/packages/orchestration/src/data-tool-contract.mjs +291 -0
  205. package/packages/orchestration/src/desktop-http-carrier.mjs +120 -0
  206. package/packages/orchestration/src/desktop-proxy.mjs +311 -0
  207. package/packages/orchestration/src/desktop-sessions.mjs +43 -9
  208. package/packages/orchestration/src/ds-lifecycle.mjs +31 -4
  209. package/packages/orchestration/src/grant-refresh-queue.mjs +17 -0
  210. package/packages/orchestration/src/independent-chat-page.mjs +39 -0
  211. package/packages/orchestration/src/independent-chat-service.mjs +308 -0
  212. package/packages/orchestration/src/independent-context-state.mjs +44 -0
  213. package/packages/orchestration/src/independent-message-wire.mjs +84 -0
  214. package/packages/orchestration/src/independent-tool-catalog.mjs +175 -0
  215. package/packages/orchestration/src/independent-tool-families.mjs +73 -0
  216. package/packages/orchestration/src/independent-tool-host.mjs +344 -0
  217. package/packages/orchestration/src/main-bot-grant.mjs +15 -0
  218. package/packages/orchestration/src/main-model-routes.mjs +208 -0
  219. package/packages/orchestration/src/model-accounting.mjs +99 -35
  220. package/packages/orchestration/src/model-auxiliary-dispatch.mjs +187 -0
  221. package/packages/orchestration/src/model-loop-frame.mjs +179 -0
  222. package/packages/orchestration/src/model-prepared-generation.mjs +175 -0
  223. package/packages/orchestration/src/model-request-bounds.mjs +111 -0
  224. package/packages/orchestration/src/native-activity-contract.mjs +491 -0
  225. package/packages/orchestration/src/native-activity-service.mjs +102 -0
  226. package/packages/orchestration/src/native-activity-store.mjs +249 -0
  227. package/packages/orchestration/src/native-conversation-tools.mjs +78 -0
  228. package/packages/orchestration/src/native-data-tools.mjs +100 -0
  229. package/packages/orchestration/src/native-remote-actions.mjs +742 -0
  230. package/packages/orchestration/src/native-team-tools.mjs +73 -0
  231. package/packages/orchestration/src/pairing-invite.mjs +37 -0
  232. package/packages/orchestration/src/product-composition.mjs +1559 -1001
  233. package/packages/orchestration/src/remote-machines.mjs +82 -14
  234. package/packages/orchestration/src/routine-execution.mjs +5 -3
  235. package/packages/orchestration/src/routine-session.mjs +19 -13
  236. package/packages/orchestration/src/secure-pairing-host.mjs +112 -0
  237. package/packages/orchestration/src/task-journal.mjs +29 -0
  238. package/packages/orchestration/src/task-product.mjs +17 -0
  239. package/packages/orchestration/src/team-assignment-store.mjs +120 -0
  240. package/packages/orchestration/src/team-bridge.mjs +282 -0
  241. package/packages/orchestration/src/team-scheduler.mjs +83 -0
  242. package/packages/orchestration/src/team-sdk-tools.mjs +84 -0
  243. package/packages/orchestration/src/team-tool-contract.mjs +284 -0
  244. package/packages/orchestration/src/ui-host-namespace.mjs +23 -0
  245. package/packages/orchestration/src/web-panel-actions.mjs +103 -0
  246. package/packages/orchestration/src/web-panel-framing.mjs +227 -0
  247. package/packages/orchestration/src/web-panel-store.mjs +206 -0
  248. package/remote-computer-agent/README.md +39 -29
  249. package/remote-computer-agent/build.mjs +3 -0
  250. package/remote-computer-agent/dist/OPENMAUSBOT_LICENSE +202 -0
  251. package/remote-computer-agent/dist/OPENMAUSBOT_NOTICE +10 -0
  252. package/remote-computer-agent/dist/OPENMAUSBOT_SOURCE.json +68 -0
  253. package/remote-computer-agent/dist/cli-stdio-bridge.mjs +215 -25
  254. package/remote-computer-agent/dist/cli-stdio-bridge.mjs.map +4 -4
  255. package/remote-computer-agent/dist/cli.mjs +1688 -168
  256. package/remote-computer-agent/dist/cli.mjs.map +4 -4
  257. package/remote-computer-agent/dist/index.mjs +1579 -122
  258. package/remote-computer-agent/dist/index.mjs.map +4 -4
  259. package/remote-computer-agent/dist/native-peer.ps1 +51 -3
  260. package/remote-computer-agent/package-lock.json +308 -2
  261. package/remote-computer-agent/package.json +2 -1
  262. package/remote-computer-agent/pair-device.ps1 +20 -0
  263. package/remote-computer-agent/setup.ps1 +38 -16
  264. package/remote-computer-agent/src/cli.ts +24 -3
  265. package/remote-computer-agent/src/desktop-session.ts +11 -3
  266. package/remote-computer-agent/src/e2e-server.ts +81 -0
  267. package/remote-computer-agent/src/pairing-page.ts +35 -0
  268. package/remote-computer-agent/src/protocol.ts +25 -25
  269. package/remote-computer-agent/src/secure-pairing.ts +105 -0
  270. package/remote-computer-agent/src/store.ts +20 -5
  271. package/remote-computer-agent/src/transport.ts +39 -15
package/README.zh.md CHANGED
@@ -1,364 +1,409 @@
1
- # DSH Bot · 模型路由
2
-
3
- [English](README.md) · [简体中文](README.zh.md)
4
-
5
- [![Bot npm](https://flat.badgen.net/npm/v/@ljwei-stak/dsh-model-route-bot)](https://www.npmjs.com/package/@ljwei-stak/dsh-model-route-bot) [![npm 版本](https://flat.badgen.net/npm/v/@ljwei-stak/dsh-model-router)](https://www.npmjs.com/package/@ljwei-stak/dsh-model-router) [![dshfind](https://dshfind.com/api/badge/Alice-Marx/dsh-model-router?lang=zh)](https://dshfind.com/zh/plugins/Alice-Marx/dsh-model-router?ref=badge) [![dshfind](https://dshfind.com/api/badge/Alice-Marx/dsh-model-router?metric=downloads&lang=zh)](https://dshfind.com/zh/plugins/Alice-Marx/dsh-model-router?ref=badge) [![已收录至 DSH 插件目录](https://dsh-plugin.org/badges/listed.svg)](https://dsh-plugin.org/plugins/alice-marx/dsh-model-router) [![Awesome DSH Plugin](https://awesome-dsh-plugin.com/badge.svg)](https://awesome-dsh-plugin.com)
6
-
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
-
9
- ![DSH Bot · 模型路由——模型调度、Bot 协作与远程桌面](https://raw.githubusercontent.com/Alice-Marx/dsh-model-router/main/.github/assets/readme-cover-v2.png)
10
-
11
- **面向 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) 的模型路由与持久化 Bot 工作区。**
12
-
13
- 将任务转化为可审查的执行计划,为不同环节选择合适的已配置模型或原生 CLI 工具,并集中跟踪结果。完整 Bot 版本进一步提供长期对话、多 Bot 分工、私有资料库,以及用户自有 Windows 电脑的连接与操作。
14
-
15
- 本项目是社区插件,复用 Harness 的模型配置和 Host 服务;各模型供应商与 CLI 使用各自的账户及访问权限。
16
-
17
- **当前正式版:0.66.4 · Windows Remote Agent:0.1.1**
18
-
19
- [选择版本](#editions) · [安装](#install) · [第一个任务](#quick-evaluation) · [Bot 分工](#bot-routing) · [远程电脑](#computers) · [问题反馈](#troubleshooting)
20
-
21
- <a id="editions"></a>
22
-
23
- ## 选择适合的工作区
24
-
25
- | 版本 | 在「插件 → 添加插件」中输入 | 安装内容 |
26
- | --- | --- | --- |
27
- | **DSH Bot + 模型路由** | `@ljwei-stak/dsh-model-route-bot` | 完整 Bot 工作区、模型路由工作台、Bot 分工、远程电脑、私有资料库与例行任务。 |
28
- | **模型路由** | `@ljwei-stak/dsh-model-router` | 在 Harness 原有界面增加「模型路由」入口,提供路线规划、工具、执行与核算,不安装 DS Bot。 |
29
-
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 |
49
-
50
- <a id="install"></a>
51
-
52
- ## 安装
53
-
54
- 1. 在 Harness Desktop 打开 **插件 → 添加插件**,输入以下包名之一:
55
- - 完整工作区:`@ljwei-stak/dsh-model-route-bot@0.66.4`
56
- - 仅模型路由:`@ljwei-stak/dsh-model-router@0.66.4`
57
- 2. 启用后,**连同托盘进程一起完全退出 Harness**,再重新启动,让 Host 加载已安装版本。
58
- 3. 在 Harness 官方 **模型** 设置中配置 Provider 凭据和模型。完整版本进入 Bot 工作区;纯路由版本从侧栏打开 **模型路由**。
59
-
60
- 也可使用 DSH CLI,按所需版本选择一条命令:
61
-
62
- ```powershell
63
- # 完整 Bot 工作区
64
- dsh plugin --profile desktop add @ljwei-stak/dsh-model-route-bot@0.66.4
65
-
66
- # 仅模型路由
67
- dsh plugin --profile desktop add @ljwei-stak/dsh-model-router@0.66.4
68
- ```
69
-
70
- 离线安装可从 [GitHub Releases](https://github.com/Alice-Marx/dsh-model-router/releases/latest) 导入对应 `.tgz`。本地解压安装时,选择同时包含 `package.json` 与 `.dsh-plugin` 的内层 `package` 目录。仅全局安装 npm 包不会将其注册为 Harness 插件。
71
-
72
- <a id="quick-evaluation"></a>
73
-
74
- ## 完成第一个任务
75
-
76
- 两种版本均可使用模型路由工作台;完整 Bot 工作区通过 **高级工作台** 进入。
77
-
78
- 1. **准备模型。** 在 Harness 中添加可用的 Provider/模型;进入 **模型配置** 刷新路线,填写已知价格和能力,未知信息留空。
79
- 2. **写清结果。** 在 **任务与执行** 选择 **项目检查**、**整理说明** 或 **方案比较** 模板,再修改任务与验收标准。**撤销模板** 可恢复原文。
80
- 3. **查看预览。** 点击 **下一步:预览执行**,再点击 **预览执行计划**,核对模型/工具、工作区、权限及 API 费用或订阅用量估算。
81
- 4. **确认启动。** 阅读确认项,点击 **全部确认并执行**。填写任务、生成建议和预览都不会调用模型;确认执行才会启动。
82
- 5. **检查结果。** 打开 **执行记录** 查看输出、收据、状态、取消和受支持的重试操作,再检查所要求的产物是否达成。
83
-
84
- 当前应用界面使用中文;英文文档提供对应控件的操作解释。
85
-
86
- ![当前工作台:可编辑任务模板与清晰的下一步引导](https://raw.githubusercontent.com/Alice-Marx/dsh-model-router/main/.github/assets/workbench-task.png)
87
-
88
- *截图来自当前真实工作台组件,使用离线演示数据;其中模型、价格、用量和路径均为示例。*
89
-
90
- <a id="workbench"></a>
91
-
92
- ## 模型路由工作台
93
-
94
- | 页面 | 主要用途 |
95
- | --- | --- |
96
- | **任务与执行** | 填写任务、选择规划模式,按需比较或分配工作包,再预览和确认执行。 |
97
- | **模型配置** | 管理已配置的准确路线、价格、质量证据、计费偏好及 CLI 模型映射。 |
98
- | **官方工具** | 查看安装、登录与执行模式就绪状态,管理工具安装和终端。 |
99
- | **预算与安全** | 设置 API 限额和执行策略,核对实际支出、预占与订阅用量。 |
100
- | **执行记录** | 查看任务输出、收据、中断/未知状态、取消及受支持的恢复操作。 |
101
-
102
- 选择 **单任务** 使用一条路线,选择 **团队分工** 生成带依赖的工作包,或通过 **指定模型** 使用准确的已配置路线。**比较路由** 是可选步骤;比较后可保留算法建议,也可为每个工作包手动选择 API 模型或工具。
103
-
104
- 路由/预算与执行选项按需展开。页面重新挂载时,任务文字、模式、所选模型及本次显式估算保留在**当前窗口内存**中;关闭应用或重载客户端会清除草稿。**需要你处理** 面板可用 **×** 关闭,再由顶部入口恢复,当前设备会记住显示偏好。失败提醒会直接打开对应执行记录。
105
-
106
- ![执行预览:工作包分配、估算、工作区与执行确认](https://raw.githubusercontent.com/Alice-Marx/dsh-model-router/main/.github/assets/workbench-execution-preview.png)
107
-
108
- *离线预览示例,未调用模型;实际工作区在确认后才启动所选模型或受支持的 CLI。*
109
-
110
- 模型路由执行只读分析。需要修改文件时,选择 **团队分工 → 官方工具协作 → 编辑文件**,核对执行预览后启动。独立工作树用于归集改动,不限制工作树以外的系统访问。
111
-
112
- <a id="official-tools"></a>
113
- <a id="session-tools"></a>
114
- <a id="team-lifecycle"></a>
115
-
116
- ### 使用各工具自己的账户与能力
117
-
118
- 工具注册表包含 **Kimi Code、Claude Code、Codex、MiniMax Code、MiMo Code、Grok Build、Gemini、OpenCode、StepCode、Pi、Hermes、ZCode 和 DSH TUI**。在 **官方工具** 中检测工具,选择可用安装方式,完成厂商登录,再检查所需执行模式的就绪状态。
119
-
120
- 交互终端提供已安装工具自身的工作方式与能力;托管单工具和团队执行使用受支持的适配器。安装或登录成功,仍需核对具体模式与模型是否可用。厂商原生进程使用当前系统用户权限;Provider 凭据和 coding-plan 端点保留在 Harness 设置中。
121
-
122
- <a id="daily-work"></a>
123
-
124
- ## 建立持久化 Bot 工作区
125
-
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.4。** 在 **任务** 页面按 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)。
150
-
151
- <a id="bot-routing"></a>
152
-
153
- ## 由 Main Bot 分配任务给执行 Bot
154
-
155
- **适用于完整 Bot 版本。** 模型路由选择模型路线;Bot 路由选择已配置的 Bot 并向它真实派发任务。
156
-
157
- 路由使用每个 Bot 自己保存的价格,即使多个 Bot 使用相同模型也分别读取。无效的价格或质量评分保留为未知;评分相同时,优先选择价格已知的 Bot,再按 Bot ID 排序。
158
-
159
- 修改任务、刷新候选或切换宿主后,原预览会失效。展开 **查看比较依据** 可检查候选评分与未知信息。创建任务需要当前有效的预览;取得受理记录后会显示计划编号并停用重复创建按钮。若提交响应丢失或不完整,请先刷新任务记录、核对原提交,再决定是否创建另一项任务。窄屏下可横向滚动表格查看全部列。
160
-
161
- **核对原提交** 只读取原请求对应的持久计划和操作编号,不会重发任务、授予权限或调用模型。暂未查到只表示当前查询结果,原请求仍可能完成。同一窗口内切换页面后提醒会保留,并且只在内存保存提交引用;重新加载应用会清除。自行核对记录后,可显式清除本窗口提醒;清除不会停止原任务,也不会创建另一项任务。
162
-
163
- 重载前可展开 **保存提交核对码** 并复制核对码;重载后连接原宿主,在 **核对已保存的提交** 中粘贴,即可查询原记录。核对码只包含原 Bot 与请求编号,不含任务正文或登录凭据,也不能授予执行权限。无效核对码会在本地拦截;剪贴板不可用时可选中后手动复制。核对失败会按原因提示重新登录、更新宿主、核对不一致记录或恢复连接,并保留原引用供再次查询。
164
-
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
- ```
176
-
177
- *示例团队结构。请先创建相应 Bot 并提交权限,再路由工作。*
178
-
179
- 1. 为 Main 和执行 Bot 配置实际使用的模型、允许工具、电脑/工作区授权及资金设置。
180
- 2. 打开 **任务 → Bot 路由**,启用路由,选择 **省钱优先**、**均衡** 或 **效果优先** 并保存策略。
181
- 3. 输入任务,选择自动路由或指定 Bot;按需选择电脑/目录和操作类型。**预览路由** 会解释选中者、缺失条件、落选原因及拟新增绑定。
182
- 4. 点击 **按此路由创建任务** 才会派发;跟踪真实任务记录并检查产物。已受理的计划 ID 表示已提交,不代表已完成。
183
-
184
- Main Bot 也可调用 `bot_route_task` 或同义工具 `bot_dispatch`;两者默认派发,显式 `preview: true` 仅预览。`bot_task_plan_status` 返回实际计划/任务状态。执行 Bot 的每次模型调用分别进行预算准入,并生成关联父任务的收据。角色说明本身不授予工具或电脑权限。
185
-
186
- <a id="computers"></a>
187
-
188
- ## 连接自己的 Windows 或云电脑
189
-
190
- **适用于完整 Bot 版本。** 使用用户自备的 **Windows x64 电脑或云桌面**;向导生成本地 Agent 配置与配对文件。Host 需能通过已配置的网络、VPN 或隧道访问 Agent。
191
-
192
- **在被控制的电脑上:**
193
-
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 密码;再次运行会保留已有配置。
196
-
197
- **在 Harness 中:**
198
-
199
- 3. 打开 **远程电脑 → 添加电脑**,导入 `private/pairing.private.json`,核对自动填写的地址与授权,选择允许的 Bot 后配对/探测。该配对文件需私下保管。
200
- 4. 在 **Bot 绑定** 保存该 Bot 的电脑与工具权限,打开 **电脑操作** 或电脑页面,选择显示器并点击 **连接桌面**,先观看画面。
201
- 5. 点击 **取得控制权**,等待确认后发送键盘、鼠标、滚轮或文字输入。**仅观看** 会归还控制并释放按住的输入;通过 **放大** 或观看时双击查看大画面,结束后断开连接。
202
-
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 或语义索引。
225
-
226
- <a id="costs"></a>
227
-
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>
254
-
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
- | 金额或用量未知 | 检查实际模型身份、配置价格和已报告用量,缺失数据不是零。 |
269
-
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
- ## 技术参考:费用核算与路由算法
277
-
278
- ### 实际费用与规划估计
279
-
280
- 下面公式用于 API 计费结果。算法中的路线价格比较是规划输入,不会把订阅变成 API 账单;执行预览分别显示 API 金额和订阅预估 token。
281
-
282
- 对 API 计费结果,有效的 CLI 报告美元金额(包括明确的零)优先于 token × 单价计算。否则,按 token 核算 CLI 费用要求完整、归一化的用量,已知非负价格,以及报告的实际模型匹配计价路线或其显式 CLI 映射:
283
-
284
- <!-- formula:actual-cost -->
285
- ```math
286
- C_a = \frac{I_u p_i+O p_o+R p_r+W p_w}{10^6}
287
- ```
288
-
289
- $`C_a`$ 对应 `actualUsd`;$`I_u`$、$`O`$、$`R`$、$`W`$ 分别对应 `inputTokens`、`outputTokens`、`cacheReadTokens`、`cacheWriteTokens`,$`p_i`$、$`p_o`$、$`p_r`$、$`p_w`$ 分别为输入、输出、缓存读取和缓存写入单价,单位为美元/百万 token。
290
-
291
- 经适配器归一化后,这些账本计数互不重叠;不要把缓存 token 再加到已包含缓存的输入计数中。缺少可选缓存单价时,使用输入单价。用量不完整、价格缺失或身份未知/不匹配时,金额保持 `null`,不是零。完整的终态证据可在失败、取消、超时后保留;部分事件标记为 `usageIncomplete`。
292
-
293
- 例如,完整 API 结果含 1,000 个未缓存输入 token(\$1/百万)和 500 个输出 token(\$5/百万),费用为 \$0.0035。订阅结果记录已报告 token 和调用次数,不折算成 API 金额。API 尝试中厂商报告的 \$0 是该次尝试的明确证据,不能证明先前费用未知的尝试免费。实际厂商账单为准。官方团队模式不自动回退 API,但厂商 CLI 使用自身 API 凭据时仍产生 API 计费。
294
-
295
- <a id="routing"></a>
296
-
297
- ### 路由算法
298
-
299
- 手动分配:生成任务建议后,可选择按算法推荐执行,或逐包指定模型 API / 官方工具。参见[工作台操作说明](#workbench)。
300
-
301
- 规划器是确定性的本地启发式算法,不是训练得到的成功率预测器。它对文本分类、估计复杂度、创建适当的分析/执行/验证/汇总工作包,发现精确的已配置路线,叠加路线配置,并应用能力/质量约束。显式指定路线会跳过与其他路线的比较。目录质量/延迟/风险提示是实验性先验,不是实测成功概率或厂商实时报价。执行当前以文本为主;vision 标签不能证明已有端到端多模态流水线。
302
-
303
- #### Token 与价格估计
304
-
305
- 没有匹配资源证据时,基础输入 token 为 $`\max(80,\lceil n/3.7\rceil)`$,再乘以工作包阶段系数。基础输出为 900,按阶段/推理强度调整,最少 220。其中 $`n`$ 对应 JavaScript 的 `text.length`。这是按文本长度估算,不是厂商 tokenizer。匹配的完整历史记录达到样本门槛后,改用经验 P90 资源估计,不再重复乘档位和阶段系数。令 $`I`$ 为估计输入总数,$`R`$/$`W`$ 为缓存读取/写入部分,$`O`$ 为输出,价格单位为美元/百万 token:
306
-
307
- <!-- formula:planning-cost -->
308
- ```math
309
- C = \frac{(I-R-W)p_i+O p_o+R p_r+W p_w}{10^6}
310
- ```
311
-
312
- <!-- formula:cost-utility -->
313
- ```math
314
- U_c = \frac{1}{1+C/\max(C_{\mathrm{ref}},10^{-12})}
315
- ```
316
-
317
- $`U_c`$ 对应 `costUtility`,单价符号与上文一致。$`C_{\mathrm{ref}}`$ 使用固定参考价(输入 1、输出 5、缓存读取/写入 1 美元/百万),不是厂商报价。固定尺度防止一个无关的昂贵候选把所有费用惩罚压平。未知价格的公开估计为 `null`,费用效用为 0。内部无预算约束搜索使用费用哨兵值 0,但有限预算分配会排除价格未知候选;哨兵值绝不代表执行免费。
318
-
319
- #### 候选目标与质量下限
320
-
321
- 使用归一化质量 $`q`$,以及归一化延迟、领域匹配、推理匹配和风险代理值:
322
-
323
- <!-- formula:latency-utility -->
324
- ```math
325
- L = \begin{cases}
326
- \dfrac{1}{1+t/10\,000}, & t\text{ known}, \\
327
- 1-\min(1,\max(0,\ell e_\ell)), & \text{otherwise}.
328
- \end{cases}
329
- ```
330
-
331
- <!-- formula:candidate-utility -->
332
- ```math
333
- 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
334
- ```
335
-
336
- <!-- formula:assignment-score -->
337
- ```math
338
- S = \sum_{j=1}^{n}u_j - 0.015\sum_{(i,j)\in E}\mathbf{1}[\rho_i\ne\rho_j]
339
- ```
340
-
341
- $`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。
342
-
343
- 质量优先使用足量且匹配的任务客观证据,再回退对应任务类别的 LiveBench 分数、整体 LiveBench、路线配置/目录估值。至少两个 API 档位各有可用任务证据时,才联合比较模型与档位;经验耗时可替换延迟代理项。公共数据刷新默认关闭,需主动启用。人工评分仅影响有界的 `preferenceAdjustment`,不能提高客观质量或满足质量下限。
344
-
345
- | 工作包基础类型 | 质量 | 费用 | 延迟 | 领域 | 推理 | 风险 |
346
- | --- | --- | --- | --- | --- | --- | --- |
347
- | 简单 | 0.28 | 0.45 | 0.14 | 0.04 | 0.07 | 0.02 |
348
- | 均衡 | 0.40 | 0.26 | 0.10 | 0.09 | 0.10 | 0.05 |
349
- | 复杂 | 0.48 | 0.14 | 0.06 | 0.14 | 0.11 | 0.07 |
350
- | 汇总 | 0.58 | 0.08 | 0.04 | 0.08 | 0.16 | 0.06 |
351
-
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]。均衡不作倾斜。
353
-
354
- #### 候选裁剪与分配搜索
355
-
356
- 1. 优先保留达到各工作包质量下限的候选。若没有合格候选,保留质量最高的至多三个回退候选,并报告约束放宽。
357
- 2. 每包最多保留 **12 个候选**,包含最低已知费用、最大效用与最高质量的锚点。存在依赖时禁用局部 Pareto 裁剪,因为路线身份会影响交接。
358
- 3. 验证工作包 ID 唯一且依赖按拓扑排序。保留候选的笛卡尔空间大小不超过 **4,096** 时精确搜索;否则采用 **beam width 256**。搜索按未来依赖的模型边界压缩被支配前缀,并用未来交接的乐观估计排序。剩余最小费用用于裁剪不可行前缀;有限预算时,beam 会保护最便宜的可行前缀。
359
- 4. 按字典序比较分配:更少放宽包、更小质量缺口、更高效用、更低费用、更少路线切换,最后稳定的路线顺序。最小费用模式先比较费用,再比较效用。每条跨越 `provider/model` 路线的依赖边从效用中扣除 0.015。
360
- 5. 报告搜索元数据与可行性。正预算下若不存在可行分配,仍可返回最小费用备选,但标记 `budgetFeasible: false`。显示了计划不代表预算已满足。
361
-
362
- “精确”仅适用于保留下来的候选空间与代理目标。候选上限和 beam 裁剪意味着不保证在所有已配置模型中全局最优;请在预览中核对所选路线与是否放宽了质量下限。
363
-
364
- 路线档案支持匹配的资源证据、回退条件、推理档位与可选 JSON 验收升级。验收升级默认关闭,启用后仍需通过计费与预算检查,最多增加一次普通 API 调用。
1
+ # DSH Bot · 模型路由
2
+
3
+ [English](README.md) · [简体中文](README.zh.md)
4
+
5
+ [![Bot npm](https://flat.badgen.net/npm/v/@ljwei-stak/dsh-model-route-bot)](https://www.npmjs.com/package/@ljwei-stak/dsh-model-route-bot) [![npm 版本](https://flat.badgen.net/npm/v/@ljwei-stak/dsh-model-router)](https://www.npmjs.com/package/@ljwei-stak/dsh-model-router) [![dshfind](https://dshfind.com/api/badge/Alice-Marx/dsh-model-router?lang=zh)](https://dshfind.com/zh/plugins/Alice-Marx/dsh-model-router?ref=badge) [![dshfind](https://dshfind.com/api/badge/Alice-Marx/dsh-model-router?metric=downloads&lang=zh)](https://dshfind.com/zh/plugins/Alice-Marx/dsh-model-router?ref=badge) [![已收录至 DSH 插件目录](https://dsh-plugin.org/badges/listed.svg)](https://dsh-plugin.org/plugins/alice-marx/dsh-model-router) [![Awesome DSH Plugin](https://awesome-dsh-plugin.com/badge.svg)](https://awesome-dsh-plugin.com)
6
+
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
+
9
+ ![DSH Bot · 模型路由——模型调度、Bot 协作与远程桌面](https://raw.githubusercontent.com/Alice-Marx/dsh-model-router/main/.github/assets/readme-cover-v2.png)
10
+
11
+ **面向 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) 的模型路由与持久化 Bot 工作区。**
12
+
13
+ 将任务转化为可审查的执行计划,为不同环节选择合适的已配置模型或原生 CLI 工具,并集中跟踪结果。完整 Bot 版本进一步提供长期对话、多 Bot 分工、私有资料库,以及用户自有 Windows 电脑的连接与操作。
14
+
15
+ 本项目是社区插件,复用 Harness 的模型配置和 Host 服务;各模型供应商与 CLI 使用各自的账户及访问权限。
16
+
17
+ **当前正式版:0.67.0 · Windows Remote Agent:0.1.2**
18
+
19
+ **0.67.0 正式版。** 本版提供以 Bot 联系人与聊天为中心的工作空间、安全设备配对、持久团队委派和原生工具活动记录。本地验收使用隔离数据与离线模型;全部 OpenMausBot 功能对齐、真实用户 Host 与设备验收仍未完成。
20
+
21
+ **工作空间界面:**完整 Bot 版本新增重新设计的工作空间总览、任务待办、可搜索的团队目录、任务看板和工作空间搜索(产品页内 **Ctrl/Cmd K**)。目标会带入已有的预览与确认流程;外观支持跟随宿主、浅色、深色和紧凑布局。[实现与验证说明](https://gitlab.com/Alice_marx/dsh-model-router/-/blob/main/docs/implementation/20261107-workspace-upgrade.md)。
22
+
23
+ 正在进行的 [OpenMausBot 迁移](https://gitlab.com/Alice_marx/dsh-model-router/-/blob/main/docs/implementation/20261107-openmaus-full-migration.md)以 Bot 联系人和聊天为主界面,在会话中提供模型、电脑、记忆、语音、任务和资料入口。本版加入两分钟二维码设备邀请、六位确认码、公钥固定的 Noise 加密,以及经过 Host 的网页和原生客户端桌面通道。桌面支持审阅后发送文字、组合键、双指滚动、适应/原始比例与全屏;例行录制会保留已确认的输入释放步骤。请使用下方配套的 Agent 0.1.2。协议、安装目录运行及隔离桌面测试见[配对实现记录](https://gitlab.com/Alice_marx/dsh-model-router/-/blob/main/docs/implementation/20261107-secure-pairing.md),真实远程桌面和上游完整功能集尚未完成验收。付费云桌面订阅不迁入。 导入邀请须手输目标电脑显示的确认码;凭据保存中断时先核对原记录,再继续登记。
24
+
25
+ 本版还接通联系人底部的实时任务待办角标,新增按日期、Bot、来源和状态筛选收据、分组与 CSV 导出。未加载完整的任务和未知金额会明确标注,收据日期按 Host 时区计算。[收据分析与验证说明](https://gitlab.com/Alice_marx/dsh-model-router/-/blob/main/docs/implementation/20261108-receipt-explorer.md)。
26
+
27
+ 产品重构进一步采用 OpenMausBot 的 Bot 配置流程,增加独立官方工具模块。通知中心可回到原 Bot、任务和执行尝试,在 Host 保存已读状态;按 Bot 隔离的数据导入、SQL、图表和 CSV 导出也在接入与加固中。[当前实现与验证边界](https://gitlab.com/Alice_marx/dsh-model-router/-/blob/main/docs/implementation/20261108-openmaus-product-direction.md)。
28
+
29
+ Bot 对话引擎与任务 CLI 工具分别迁移。源码目录已记录上游全部 26 个驱动。本版可将 Host 明确配置的 Claude 文字订阅会话登记到模型目录,并通过原 Bot 设置绑定;整条产品离线子进程测试已覆盖保留回合、已提交个性、私有凭据与每次请求的一份收据。独立聊天现在支持生成文字预览和显式新建会话:保留旧消息及未发送草稿,下一回合只使用新上下文,旧进程退休结果不明时须先核对。真实 CLI/账号验收和其余引擎仍在推进。[引擎配置与实现状态](packages/bot-engines/README.md)。
30
+
31
+ 聊天侧边的 Bot 设置分为**模型与工具**和**身份与个性**。可以留在当前聊天中编辑名称、简短职责和长期对话指令;切换分类会保留未保存的输入。资料修改须点击保存,发生编辑冲突时会拒绝覆盖,也不会因此发送消息或启动模型回复。独立模式会在每次模型请求时读取已保存的身份与对话指令。当前预览支持这三个文本字段,OpenMausBot 的其余身份功能仍在迁移范围内。
32
+
33
+ 模型控件会区分“宿主已选模型”和“最近应用模型”,两者不一致时给出提示。未保存的选择仍是草稿;应用记录不代表某一条回复的实际响应模型已获核验。
34
+
35
+ 团队委派持久保存任务并将结果返回原始会话。每个目标使用自己的已保存模型、权限与资金;Main 可使用多条已保存模型路线并拥有全部已提交 Host 权限。两种聊天均展示有界的原生工具活动、取消请求与真实停止确认,未知结果不会显示成成功。
36
+
37
+ 外观菜单还提供标准、宽屏、铺满三种聊天宽度,以及彩色、素色用户消息气泡。显示偏好会在刷新后保留,不改变执行设置。
38
+
39
+ 输入草稿按宿主、Bot、群聊和线程分别保存。确认发送后只清除对应草稿;发送结果未知时保留文字,并提供明确的恢复与清除操作。草稿恢复目前只支持文字。固定网页会显示在联系人侧栏,确认修改后即时更新。真实 Host 现场验收尚未完成。
40
+
41
+ 独立会话会保存每条回复的模型来源,并准确关联工具调用与结果。切换 Bot 模型不会改写旧回复的来源;旧记录缺少模型来源或工具批次结果未确认时,会作为有明确标记的历史上下文保留,不会重放工具。
42
+
43
+ 本版为独立 Bot 增加了联系人与聊天页面,支持文字草稿、完整历史分页和请求停止。每次发送先保存在 Host 再确认接收;刷新或重试同一请求只核对已有结果,不会再次发送。工具列表跟随 Bot 的实时授权,文件写入沿用现有持久任务账本。已联测真正安装的 SDK、已认证拥有者通道、隔离 SQLite 和回环远端 Agent;真实 Host 现场验收,以及上游完整消息、附件和工具能力仍待完成。
44
+
45
+ 独立聊天通过 Host 渲染 Markdown、代码高亮、表格和数学公式。可以复制代码块或整条消息原文,界面明确反馈成功或失败;展开已记录的工具调用与结果不会再次执行工具。
46
+
47
+ 回复生成期间,独立聊天轮询显示明确标注“尚未完成”的文字预览。窗口尺寸变化时会跟随最新内容;向上阅读时保持原位置。预览不会存成正式回答或浏览器草稿,失败、取消或 Host 重启后会消失;刷新只核对原请求,不会重新发送。每次调用还会使用 Bot 已提交的思考强度,清除后恢复模型默认值。模型不支持已保存的强度时,会在发送前拒绝;调用参数不能覆盖拥有者已保存的选择。
48
+
49
+ API 资金调用需要 Host 提供模型容量信息。保存的输入额度需覆盖模型声明的完整上下文窗口,准入时按该输入额度预占。请求输出超过额度时,需要先降低实际请求上界,或授予更高额度;无法修改的请求会被拒绝。模型容量信息缺失会明确报告。调用准备与发送前后会重新核验已提交的适配器身份,不兼容的配置变更将被拒绝。
50
+
51
+ 聊天头部可切换 Bot 的线程与默认聊天,线程内保留该 Bot 的模型、记忆、电脑、语音和附件入口。已归档或撤销授权的线程会拒绝新的模型调用。线程目录保存遇到短暂共享锁会重试本次本地提交,写入失败则回滚;目录不可读时停止发送并说明恢复方式,不会重复创建会话。
52
+
53
+ [选择版本](#editions) · [安装](#install) · [第一个任务](#quick-evaluation) · [Bot 分工](#bot-routing) · [远程电脑](#computers) · [问题反馈](#troubleshooting)
54
+
55
+ <a id="editions"></a>
56
+
57
+ ## 选择适合的工作区
58
+
59
+ | 版本 | 在「插件 → 添加插件」中输入 | 安装内容 |
60
+ | --- | --- | --- |
61
+ | **DSH Bot + 模型路由** | `@ljwei-stak/dsh-model-route-bot` | 完整 Bot 工作区、模型路由工作台、Bot 分工、远程电脑、私有资料库与例行任务。 |
62
+ | **模型路由** | `@ljwei-stak/dsh-model-router` | 在 Harness 原有界面增加「模型路由」入口,提供路线规划、工具、执行与核算,不安装 DS Bot。 |
63
+
64
+ 同一个 Harness profile **选择一种版本**。两者共用路由配置;切换时,在插件管理中移除原包入口,再在同一 profile 添加另一个版本,保留数据目录并沿用已配置的 Bot home。[纯路由版本操作说明](packages/model-router-plugin/README.zh.md)。
65
+
66
+ <a id="capabilities"></a>
67
+
68
+ ## 功能概览
69
+
70
+ | 工作流 | 可用能力 | 适用版本 |
71
+ | --- | --- | --- |
72
+ | 任务驱动的模型路由 | 从任务模板起步,比较省钱、均衡或效果优先方案;支持单路线、带依赖的团队分工及指定准确模型。 | 两种版本 |
73
+ | 可审查的执行 | 确认前检查模型、工具、工作区、权限与估算;集中跟踪进度、结果、取消状态和受支持的重试。 | 两种版本 |
74
+ | 原生 CLI 工具 | 检测与安装已登记工具,检查登录及执行模式就绪状态,打开交互终端。 | 两种版本 |
75
+ | 预算与反馈 | 设置 API 限额,核对预占和收据,独立查看订阅调用/token,并使用可选复核与显式评分。 | 两种版本 |
76
+ | 持久化 Bot 对话 | 每个 Bot 独立配置模型、角色、工作目录、私有对话与权限;支持侧聊、提问和审批卡片。 | 完整 Bot |
77
+ | 群聊与共享上下文 | 使用提及、分阶段群目标、交接、对话搜索/检查点,以及带变更历史的 Bot/群/团队记忆。 | 完整 Bot |
78
+ | 浏览器与文档工作 | 每 Bot 浏览器分区、支持的 Office 读取/预览、连接器、密钥卡片、头像与团队外观设置。 | 完整 Bot |
79
+ | 定时工作 | 通过 Host 的 Automation tasks 服务为目标 Bot 或群设置定时任务。 | 完整 Bot |
80
+ | Bot 之间的任务路由 | Main Bot 根据已提交的模型、工具、电脑与资金配置选择符合条件的执行 Bot,真实派发任务。 | 完整 Bot |
81
+ | Windows 电脑与例行任务 | 配对自有电脑、观看或接管桌面、录制已确认输入,并回放保存的例行任务。 | 完整 Bot |
82
+ | 私有文件资料库 | 按 Bot 管理文件夹、二进制上传下载、文本编辑及返回行号的私有文本检索。 | 完整 Bot |
83
+ | 会话线程 | 让同一个 Bot 拥有多条彼此独立的对话:命名、切换、归档与恢复,并可直接在聊天中打开。 | 完整 Bot |
84
+ | 固定网页面板 | 把常用的仪表盘与看板固定下来,列表保存在宿主、重启后仍在,可内嵌显示或在浏览器中打开。 | 完整 Bot |
85
+ | 显示偏好 | 选择聊天宽度与气泡样式,刷新后仍然保留,且不触碰任何对话内容。 | 完整 Bot |
86
+
87
+ <a id="install"></a>
88
+
89
+ ## 安装
90
+
91
+ 1. 在 Harness Desktop 打开 **插件 → 添加插件**,输入以下包名之一:
92
+ - 完整工作区:`@ljwei-stak/dsh-model-route-bot@0.67.0`
93
+ - 仅模型路由:`@ljwei-stak/dsh-model-router@0.67.0`
94
+ 2. 启用后,**连同托盘进程一起完全退出 Harness**,再重新启动,让 Host 加载已安装版本。
95
+ 3. 在 Harness 官方 **模型** 设置中配置 Provider 凭据和模型。完整版本进入 Bot 工作区;纯路由版本从侧栏打开 **模型路由**。
96
+
97
+ 也可使用 DSH CLI,按所需版本选择一条命令:
98
+
99
+ ```powershell
100
+ # 完整 Bot 工作区
101
+ dsh plugin --profile desktop add @ljwei-stak/dsh-model-route-bot@0.67.0
102
+
103
+ # 仅模型路由
104
+ dsh plugin --profile desktop add @ljwei-stak/dsh-model-router@0.67.0
105
+ ```
106
+
107
+ 离线安装可从 [GitHub Releases](https://github.com/Alice-Marx/dsh-model-router/releases/latest) 导入对应 `.tgz`。本地解压安装时,选择同时包含 `package.json` 与 `.dsh-plugin` 的内层 `package` 目录。仅全局安装 npm 包不会将其注册为 Harness 插件。
108
+
109
+ <a id="quick-evaluation"></a>
110
+
111
+ ## 完成第一个任务
112
+
113
+ 两种版本均可使用模型路由工作台;完整 Bot 工作区通过 **高级工作台** 进入。
114
+
115
+ 1. **准备模型。** 在 Harness 中添加可用的 Provider/模型;进入 **模型配置** 刷新路线,填写已知价格和能力,未知信息留空。
116
+ 2. **写清结果。** 在 **任务与执行** 选择 **项目检查**、**整理说明** 或 **方案比较** 模板,再修改任务与验收标准。**撤销模板** 可恢复原文。
117
+ 3. **查看预览。** 点击 **下一步:预览执行**,再点击 **预览执行计划**,核对模型/工具、工作区、权限及 API 费用或订阅用量估算。
118
+ 4. **确认启动。** 阅读确认项,点击 **全部确认并执行**。填写任务、生成建议和预览都不会调用模型;确认执行才会启动。
119
+ 5. **检查结果。** 打开 **执行记录** 查看输出、收据、状态、取消和受支持的重试操作,再检查所要求的产物是否达成。
120
+
121
+ 当前应用界面使用中文;英文文档提供对应控件的操作解释。
122
+
123
+ ![当前工作台:可编辑任务模板与清晰的下一步引导](https://raw.githubusercontent.com/Alice-Marx/dsh-model-router/main/.github/assets/workbench-task.png)
124
+
125
+ *截图来自当前真实工作台组件,使用离线演示数据;其中模型、价格、用量和路径均为示例。*
126
+
127
+ <a id="workbench"></a>
128
+
129
+ ## 模型路由工作台
130
+
131
+ | 页面 | 主要用途 |
132
+ | --- | --- |
133
+ | **任务与执行** | 填写任务、选择规划模式,按需比较或分配工作包,再预览和确认执行。 |
134
+ | **模型配置** | 管理已配置的准确路线、价格、质量证据、计费偏好及 CLI 模型映射。 |
135
+ | **官方工具** | 查看安装、登录与执行模式就绪状态,管理工具安装和终端。 |
136
+ | **预算与安全** | 设置 API 限额和执行策略,核对实际支出、预占与订阅用量。 |
137
+ | **执行记录** | 查看任务输出、收据、中断/未知状态、取消及受支持的恢复操作。 |
138
+
139
+ 选择 **单任务** 使用一条路线,选择 **团队分工** 生成带依赖的工作包,或通过 **指定模型** 使用准确的已配置路线。**比较路由** 是可选步骤;比较后可保留算法建议,也可为每个工作包手动选择 API 模型或工具。
140
+
141
+ 路由/预算与执行选项按需展开。页面重新挂载时,任务文字、模式、所选模型及本次显式估算保留在**当前窗口内存**中;关闭应用或重载客户端会清除草稿。**需要你处理** 面板可用 **×** 关闭,再由顶部入口恢复,当前设备会记住显示偏好。失败提醒会直接打开对应执行记录。
142
+
143
+ ![执行预览:工作包分配、估算、工作区与执行确认](https://raw.githubusercontent.com/Alice-Marx/dsh-model-router/main/.github/assets/workbench-execution-preview.png)
144
+
145
+ *离线预览示例,未调用模型;实际工作区在确认后才启动所选模型或受支持的 CLI。*
146
+
147
+ 模型路由执行只读分析。需要修改文件时,选择 **团队分工 → 官方工具协作 → 编辑文件**,核对执行预览后启动。独立工作树用于归集改动,不限制工作树以外的系统访问。
148
+
149
+ <a id="official-tools"></a>
150
+ <a id="session-tools"></a>
151
+ <a id="team-lifecycle"></a>
152
+
153
+ ### 使用各工具自己的账户与能力
154
+
155
+ 工具注册表包含 **Kimi Code、Claude Code、Codex、MiniMax Code、MiMo Code、Grok Build、Gemini、OpenCode、StepCode、Pi、Hermes、ZCode 和 DSH TUI**。在 **官方工具** 中检测工具,选择可用安装方式,完成厂商登录,再检查所需执行模式的就绪状态。
156
+
157
+ 交互终端提供已安装工具自身的工作方式与能力;托管单工具和团队执行使用受支持的适配器。安装或登录成功,仍需核对具体模式与模型是否可用。厂商原生进程使用当前系统用户权限;Provider 凭据和 coding-plan 端点保留在 Harness 设置中。
158
+
159
+ <a id="daily-work"></a>
160
+
161
+ ## 建立持久化 Bot 工作区
162
+
163
+ **适用于完整 Bot 版本。** 新建 Bot,选择准确的已配置模型,设置角色和工作目录;在 **Bot 绑定** 中为执行 Bot 提交工具、电脑/工作区权限和资金配置。本版中,**Main** 拥有宿主全部已接入模型路线与工具权限,并继承已配对电脑核验过的访问范围。Main 绑定配置默认模型、工作区、资金和官方工具执行方式,普通 Bot 的能力勾选不会缩减 Main 权限。实际可执行能力仍取决于模型支持、资金配置、工具安装和配对撤销状态。
164
+
165
+ 在 **Main → 模型与工具 → 配置多条模型路线** 中,按提供商和模型添加路线并启用对应资金范围。API 路线共用金额预算,订阅路线共用调用次数,每条 API 路线可分别配置单价与请求上界。选定一条已启用路线作为默认模型后,一次保存全部配置。宿主聊天会话可选择另一条已启用路线,保留已保存的默认模型。集成模式下切换到 Claude 订阅路线时,已完成的文本历史可作为原生进程的私有参考上下文,进程只接收本轮的新用户输入。历史中含附件、工具调用或未确认回合时,请在这条路线开启新对话。
166
+
167
+ Host 的 Claude 对话引擎配置可启用 `hostTools: true`,通过私有 MCP 连接使用配对电脑的文件、已批准容器命令、浏览器、桌面、操作、附件与 Task 工具,集成和独立聊天均支持。Main 继承已配对电脑的核验范围,普通 Bot 沿用已提交授权。文件写入和命令会生成持久 Task;浏览器与桌面调用保留当前会话的操作记录,结果未知时,须核对原 Agent 操作后才能继续修改。截图以有限额的 MCP PNG 图片传入。工具调用须处于活动回合,重复桥接请求会被拒绝。获得数据分析权限的 Bot 还可使用 `data_load`、`data_describe`、`data_sql`、`data_show`、`data_export`,复用自身数据库和资料库,API 独立聊天也可使用这些工具。目前支持 CSV/TSV/JSON、SQLite、柱状/折线/面积图和 CSV 导出,已保存结果可在数据面板打开。取消会中断数据 worker,并阻止已取消的资料库读取在稍后开始写表;已经提交的改动可能保留,重复取消或超时的写入前须先检查现有数据。其他数据格式继续迁移。[Claude 配置说明](packages/bot-engines/README.md)。
168
+
169
+ 本版在两种聊天中展示原生工具活动,按当前 Bot 和会话隔离,可从活动入口查看更早记录。“已返回”表示 CLI 返回了结果,操作是否成功以对应 Task 或远程操作收据为准。取消请求与已确认的进程停止分别显示;未确认回合保持待核对,记录失败也会明确显示。
170
+
171
+ 本版新增团队协作。Main 可通过 `coordinate_bots` 委派任务;普通 Bot 需要已提交的团队协作权限。委派保留原会话、工作线程和请求身份,目标使用自己的模型、权限与资金。咨询任务不能执行工具,状态和线程列表遵循调用者的访问范围;执行或回传不确定时须核对原记录。恢复后的工作沿用原委派祖先链检查循环和深度。本地验证使用真实 SDK/SQLite、离线模型与受控原生 CLI 夹具;真实用户 Host 和供应商账户仍待验收。
172
+
173
+ | 要做的事 | 操作方式 |
174
+ | --- | --- |
175
+ | 私有对话 | 在侧栏选择 Bot,发送消息,按需处理提问或审批卡片。 |
176
+ | 多 Bot 群聊 | 从聊天选择器建立群聊,设置成员/管理员与回答规则,用 `@` 指定 Bot;长任务可设置分阶段目标。 |
177
+ | 长期上下文 | 搜索对话,使用检查点/分段,编辑 Bot、群或团队记忆;审核后接受技能/项目规则学习提议。 |
178
+ | 网页与文档 | 打开当前 Bot 浏览器面板管理页面;附加支持的 Office 文档读取/预览;按需配置连接器并通过密钥卡片输入凭据。 |
179
+ | 定时执行 | 开启 Host 的 Automation tasks 服务,选择目标 Bot/群、任务和时间规则,保存后检查下次执行状态。Host 与相关 Agent 需保持运行。 |
180
+ | 工作区外观 | 独立管理头像与团队外观;头像库与私有文件资料库分别使用。 |
181
+
182
+ 集成模式复用 Harness Sessions;可选独立运行时拥有自己的会话存储。切换时需显式转移运行时所有权,同一 Bot 同时由一个运行时服务。
183
+
184
+ <a id="task-progress"></a>
185
+
186
+ ## 多 Bot 任务进度与待处理
187
+
188
+ **适用于完整 Bot 版本 0.67.0。** 在 **任务** 页面按 Bot 查看任务数量,通过 **全部 / 进行中 / 待处理 / 已结束** 筛选,或搜索任务名称及任务、计划、操作编号。计数和筛选针对已加载记录;资金准入检查属于进行中,等待预算属于待处理。
189
+
190
+ **需要你处理** 显示完整数量,超过六项时可展开全部。每项都能打开原任务;等待审批时可进入对应 Bot 私聊查看原请求。打开任务后可查看 **任务时间线**,了解排队、资金准入、执行、停止请求及收据核对,并展开每次尝试的原编号。日志读取不会重新派发任务或调用模型;停止请求仍需等待确认。旧宿主未提供时间线时,页面保留现有收据详情。
191
+
192
+ 宿主最多加载 **512 条任务**,优先待处理与进行中的记录,再显示较新的历史任务;超出时明确显示加载数量和总数。时间线按需读取最近 **80 条事件**,截断时显示实际总数。这些数量是持久任务记录的范围,不包括全部私聊消息或厂商实时输出。
193
+
194
+ 本轮参考 [Agents Anywhere](https://github.com/anywhere-labs/Agents-Anywhere) 的时间线与按能力开放操作的方式;实现与验证说明见 [任务工作区说明](https://gitlab.com/Alice_marx/dsh-model-router/-/blob/main/docs/integration/agents-anywhere-tasks.md)。
195
+
196
+ <a id="bot-routing"></a>
197
+
198
+ ## 由 Main Bot 分配任务给执行 Bot
199
+
200
+ **适用于完整 Bot 版本。** 模型路由选择模型路线;Bot 路由选择已配置的 Bot 并向它真实派发任务。
201
+
202
+ 路由使用每个 Bot 自己保存的价格,即使多个 Bot 使用相同模型也分别读取。无效的价格或质量评分保留为未知;评分相同时,优先选择价格已知的 Bot,再按 Bot ID 排序。
203
+
204
+ 修改任务、刷新候选或切换宿主后,原预览会失效。展开 **查看比较依据** 可检查候选评分与未知信息。创建任务需要当前有效的预览;取得受理记录后会显示计划编号并停用重复创建按钮。若提交响应丢失或不完整,请先刷新任务记录、核对原提交,再决定是否创建另一项任务。窄屏下可横向滚动表格查看全部列。
205
+
206
+ **核对原提交** 只读取原请求对应的持久计划和操作编号,不会重发任务、授予权限或调用模型。暂未查到只表示当前查询结果,原请求仍可能完成。同一窗口内切换页面后提醒会保留,并且只在内存保存提交引用;重新加载应用会清除。自行核对记录后,可显式清除本窗口提醒;清除不会停止原任务,也不会创建另一项任务。
207
+
208
+ 重载前可展开 **保存提交核对码** 并复制核对码;重载后连接原宿主,在 **核对已保存的提交** 中粘贴,即可查询原记录。核对码只包含原 Bot 与请求编号,不含任务正文或登录凭据,也不能授予执行权限。无效核对码会在本地拦截;剪贴板不可用时可选中后手动复制。核对失败会按原因提示重新登录、更新宿主、核对不一致记录或恢复连接,并保留原引用供再次查询。
209
+
210
+ ```mermaid
211
+ flowchart LR
212
+ U["任务与验收标准"] --> M["Main Bot"]
213
+ M --> R["检查可用 Bot 并预览路由"]
214
+ R --> A["研究 Bot · 已配置模型/工具"]
215
+ R --> B["执行 Bot · 已配置模型/工具"]
216
+ R --> C["复核 Bot · 已配置模型/工具"]
217
+ A --> E["任务记录、产物与收据"]
218
+ B --> E
219
+ C --> E
220
+ ```
221
+
222
+ *示例团队结构。请先创建相应 Bot 并提交权限,再路由工作。*
223
+
224
+ 1. 为 Main 和执行 Bot 配置实际使用的模型、允许工具、电脑/工作区授权及资金设置。
225
+ 2. 打开 **任务 → Bot 路由**,启用路由,选择 **省钱优先**、**均衡** 或 **效果优先** 并保存策略。
226
+ 3. 输入任务,选择自动路由或指定 Bot;按需选择电脑/目录和操作类型。**预览路由** 会解释选中者、缺失条件、落选原因及拟新增绑定。
227
+ 4. 点击 **按此路由创建任务** 才会派发;跟踪真实任务记录并检查产物。已受理的计划 ID 表示已提交,不代表已完成。
228
+
229
+ Main Bot 也可调用 `bot_route_task` 或同义工具 `bot_dispatch`;两者默认派发,显式 `preview: true` 仅预览。`bot_task_plan_status` 返回实际计划/任务状态。执行 Bot 的每次模型调用分别进行预算准入,并生成关联父任务的收据。角色说明本身不授予工具或电脑权限。
230
+
231
+ <a id="computers"></a>
232
+
233
+ ## 连接自己的 Windows 或云电脑
234
+
235
+ **适用于完整 Bot 版本。** 使用用户自备的 **Windows x64 电脑或云桌面**;向导生成本地 Agent 配置与配对文件。Host 需能通过已配置的网络、VPN 或隧道访问 Agent。
236
+
237
+ **在被控制的电脑上:**
238
+
239
+ 1. 下载 [Windows Agent 0.1.2 完整包](https://github.com/Alice-Marx/dsh-model-router/releases/download/v0.67.0/dsh-remote-agent-0.1.2-windows-x64.zip),解压到长期保留的目录,运行 `start.cmd`,并保持 Windows 交互用户已登录。
240
+ 2. 在向导中设置可访问的地址、端口、允许工作目录及可选命令/浏览器能力。向导为当前用户注册 Agent 与桌面 helper,生成 `private/pairing.private.json`,不保存 Windows 密码;再次运行会保留已有配置。
241
+
242
+ **在 Harness 中:**
243
+
244
+ 3. 打开 **远程电脑 → 添加电脑**,导入 `private/pairing.private.json`,核对自动填写的地址与授权,选择允许的 Bot 后配对/探测。该配对文件需私下保管。
245
+ 4. 在 **Bot 绑定** 保存该 Bot 的电脑与工具权限,打开 **电脑操作** 或电脑页面,选择显示器并点击 **连接桌面**,先观看画面。
246
+ 5. 点击 **取得控制权**,等待确认后发送键盘、鼠标、滚轮或文字输入。**仅观看** 会归还控制并释放按住的输入;通过 **放大** 或观看时双击查看大画面,结束后断开连接。
247
+
248
+ 桌面采用自适应 JPEG 传输和原生输入确认,界面显示实测帧率;真人接管会阻止冲突的 Bot 桌面自动化。当前支持已登录且可用的 Windows 交互桌面,性能取决于分辨率和网络;安全/UAC 桌面不在采集范围内。电脑配对用于配置访问权限,云主机开通和网络连通由用户自行准备。
249
+
250
+ <a id="routines"></a>
251
+
252
+ ## 录制与回放例行任务
253
+
254
+ **适用于完整 Bot 版本。** 将演示过的桌面操作私下保存给选定 Bot。
255
+
256
+ 1. 连接桌面并取得控制权,将应用恢复到已知起始状态,输入任务名并点击 **开始录制**。
257
+ 2. 演示操作。只有成功确认的输入进入录制;连续鼠标移动按 200 毫秒采样为路径点。
258
+ 3. 点击 **结束并保存**,等待输入队列处理及按键/按钮释放确认;输入文字也会保存到录制中。
259
+ 4. 打开 **例行任务**,选择 Bot/电脑,恢复相同起始布局后回放,检查结果及停止位置。
260
+
261
+ 每个任务最多保留 **200 步**,停顿最多 **60 秒**,并核对显示器、物理分辨率、坐标系和录制 DPI。回放遵循坐标与时序,应用或布局变化时可能需要重新录制。输入可能生效但确认丢失时,结果记为 **unknown / 结果未知**;先检查真实桌面并填写核对说明,再解除下一次运行的阻塞。停止请求需等待实际停止确认。
262
+
263
+ <a id="library"></a>
264
+
265
+ ## 为每个 Bot 管理私有资料
266
+
267
+ **适用于完整 Bot 版本。** 打开 **资料库**,选择 Bot 和文件夹,上传/下载文件、新建目录或编辑支持的文本。名称筛选用于当前目录;**搜索文本** 在选定 Bot 的私有文本中返回文件路径、行号和匹配内容,打开结果后可编辑并显式保存。
268
+
269
+ 二进制传输保留原始字节,**单文件最多 16 MiB**;文本读取/编辑**单文件最多 1 MiB**。同名上传会被拒绝。获授权的 `bot_library_search` 使用调用 Bot 自己的库。PDF/Office 上传后作为文件保存;这里的文本检索不提供通用 OCR 或语义索引。
270
+
271
+ <a id="costs"></a>
272
+
273
+ ## 理解执行与费用核算
274
+
275
+ - **本地规划。** 路线比较和执行预检不调用模型;确认执行会将所选任务/上下文发送给供应商或 CLI,并可能产生费用。
276
+ - **API 预算。** 单次估算与日/月限额共同检查已记录支出和其他预占。有限预算下,未知价格或金额需相应确认;估算用于规划控制,实际账单以供应商为准。
277
+ - **订阅单独核对。** 调用次数和已报告的输入/输出/缓存 token 与 API 金额分别记账。缺失用量保持未知,不视为零,也不据此推算厂商剩余总额度。
278
+ - **选择回退策略。** 可优先订阅、仅订阅或仅 API;订阅转 API 需重新估算、预算准入及必要确认。托管可编辑/单工具/团队运行不会自动在 API 上重试。
279
+ - **依据记录恢复。** 保留执行尝试、收据、预占和未知影响证据;中断后先核对再重试,经过时间或发出停止请求不能证明远程操作已停止。
280
+ - **有依据地优化选择。** 可选更强模型复核会增加调用。显式评分只调整有界偏好,不提高客观质量分或绕过质量下限;可禁用学习、撤回评分或重置学习起点。
281
+
282
+ <a id="architecture"></a>
283
+ <a id="data"></a>
284
+
285
+ ## 集成方式、数据与兼容性
286
+
287
+ Host 管理已提交的模型、工具、电脑、资金及操作身份。Bot 委派、模型工具调用和工作台主人操作遵循同一权限依据;独立工作树用于整理代码改动,厂商原生进程使用当前用户的系统访问权限。
288
+
289
+ Provider 凭据和认证会话由 Harness 管理。路由状态、收据、Bot 绑定、私有资料库和例行任务账本位于 `<DSH_HOME>/model-router/`;已配置 Bot home 保留上游对话、记忆、浏览器状态与团队文件。Agent 配置和配对凭据留在被控电脑。切换运行时所有者前备份这些位置;配对文件、录制、日志和私有资料不应出现在公开问题报告中。
290
+
291
+ | 组件 | 当前范围 |
292
+ | --- | --- |
293
+ | Harness 集成 | 声明的宿主版本见 [package.json](package.json);集成验证使用实际 Harness SDK **0.2.1-rc.4**。 |
294
+ | Bot 基础 | 固定 [DS Bot](https://github.com/Fei2411/DS-Bot) **0.2.7**,叠加本项目集成与产品扩展。 |
295
+ | 远程桌面 | Windows x64 Agent **0.1.2**,需要可用且已登录的交互桌面。 |
296
+ | 工具执行 | 以工作台显示的本机平台、CLI 安装、账户、准确模型与执行适配器支持情况为准。 |
297
+
298
+ <a id="troubleshooting"></a>
299
+
300
+ ## 常见问题与反馈
301
+
302
+ | 现象 | 检查方式 |
303
+ | --- | --- |
304
+ | 更新后仍是旧界面 | 完全退出托盘 Host,确认已安装包及版本后重启。 |
305
+ | 没有路线或符合条件的执行 Bot | 检查准确模型、允许工具、授权、可用性及路由预览中的落选原因。 |
306
+ | 工具已安装但不能执行 | 检查登录、模型权益、具体模式的就绪状态、工作区和已提交权限。 |
307
+ | Agent 可访问但没有桌面 | 检查 Windows 登录会话、Agent/helper 任务、显示器和原生日志。 |
308
+ | 新 Bot 无法使用已配对电脑 | 检查配对的 Bot 名单/托管 Bot 上限,再保存新 Bot 的电脑和工具授权。 |
309
+ | 能观看但不能接管 | 检查桌面输入权限、写入授权和当前控制权占用。 |
310
+ | 中断、结果未知或停止待确认 | 核对执行记录与真实远程结果,再处理后续尝试。 |
311
+ | 例行任务提示显示器变化 | 恢复原显示器、分辨率、DPI 和应用布局,或重新录制。 |
312
+ | 资料库拒绝上传或编辑 | 检查文件大小及同名冲突;二进制传输与文本编辑的限额不同。 |
313
+ | 金额或用量未知 | 检查实际模型身份、配置价格和已报告用量,缺失数据不是零。 |
314
+
315
+ 通过 [GitHub Issues](https://github.com/Alice-Marx/dsh-model-router/issues) 提交可复现问题,通过 [GitHub Releases](https://github.com/Alice-Marx/dsh-model-router/releases/latest) 获取安装文件。反馈时附上安装版本、插件/Host 版本、平台、复现步骤和脱敏截图或错误;移除凭据、配对文件和私有任务内容。
316
+
317
+ ## 许可与致谢
318
+
319
+ 本项目扩展采用 [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 基础。
320
+
321
+ ## 技术参考:费用核算与路由算法
322
+
323
+ ### 实际费用与规划估计
324
+
325
+ 下面公式用于 API 计费结果。算法中的路线价格比较是规划输入,不会把订阅变成 API 账单;执行预览分别显示 API 金额和订阅预估 token。
326
+
327
+ 对 API 计费结果,有效的 CLI 报告美元金额(包括明确的零)优先于 token × 单价计算。否则,按 token 核算 CLI 费用要求完整、归一化的用量,已知非负价格,以及报告的实际模型匹配计价路线或其显式 CLI 映射:
328
+
329
+ <!-- formula:actual-cost -->
330
+ ```math
331
+ C_a = \frac{I_u p_i+O p_o+R p_r+W p_w}{10^6}
332
+ ```
333
+
334
+ $`C_a`$ 对应 `actualUsd`;$`I_u`$、$`O`$、$`R`$、$`W`$ 分别对应 `inputTokens`、`outputTokens`、`cacheReadTokens`、`cacheWriteTokens`,$`p_i`$、$`p_o`$、$`p_r`$、$`p_w`$ 分别为输入、输出、缓存读取和缓存写入单价,单位为美元/百万 token。
335
+
336
+ 经适配器归一化后,这些账本计数互不重叠;不要把缓存 token 再加到已包含缓存的输入计数中。缺少可选缓存单价时,使用输入单价。用量不完整、价格缺失或身份未知/不匹配时,金额保持 `null`,不是零。完整的终态证据可在失败、取消、超时后保留;部分事件标记为 `usageIncomplete`。
337
+
338
+ 例如,完整 API 结果含 1,000 个未缓存输入 token(\$1/百万)和 500 个输出 token(\$5/百万),费用为 \$0.0035。订阅结果记录已报告 token 和调用次数,不折算成 API 金额。API 尝试中厂商报告的 \$0 是该次尝试的明确证据,不能证明先前费用未知的尝试免费。实际厂商账单为准。官方团队模式不自动回退 API,但厂商 CLI 使用自身 API 凭据时仍产生 API 计费。
339
+
340
+ <a id="routing"></a>
341
+
342
+ ### 路由算法
343
+
344
+ 手动分配:生成任务建议后,可选择按算法推荐执行,或逐包指定模型 API / 官方工具。参见[工作台操作说明](#workbench)。
345
+
346
+ 规划器是确定性的本地启发式算法,不是训练得到的成功率预测器。它对文本分类、估计复杂度、创建适当的分析/执行/验证/汇总工作包,发现精确的已配置路线,叠加路线配置,并应用能力/质量约束。显式指定路线会跳过与其他路线的比较。目录质量/延迟/风险提示是实验性先验,不是实测成功概率或厂商实时报价。执行当前以文本为主;vision 标签不能证明已有端到端多模态流水线。
347
+
348
+ #### Token 与价格估计
349
+
350
+ 没有匹配资源证据时,基础输入 token 为 $`\max(80,\lceil n/3.7\rceil)`$,再乘以工作包阶段系数。基础输出为 900,按阶段/推理强度调整,最少 220。其中 $`n`$ 对应 JavaScript 的 `text.length`。这是按文本长度估算,不是厂商 tokenizer。匹配的完整历史记录达到样本门槛后,改用经验 P90 资源估计,不再重复乘档位和阶段系数。令 $`I`$ 为估计输入总数,$`R`$/$`W`$ 为缓存读取/写入部分,$`O`$ 为输出,价格单位为美元/百万 token:
351
+
352
+ <!-- formula:planning-cost -->
353
+ ```math
354
+ C = \frac{(I-R-W)p_i+O p_o+R p_r+W p_w}{10^6}
355
+ ```
356
+
357
+ <!-- formula:cost-utility -->
358
+ ```math
359
+ U_c = \frac{1}{1+C/\max(C_{\mathrm{ref}},10^{-12})}
360
+ ```
361
+
362
+ $`U_c`$ 对应 `costUtility`,单价符号与上文一致。$`C_{\mathrm{ref}}`$ 使用固定参考价(输入 1、输出 5、缓存读取/写入 1 美元/百万),不是厂商报价。固定尺度防止一个无关的昂贵候选把所有费用惩罚压平。未知价格的公开估计为 `null`,费用效用为 0。内部无预算约束搜索使用费用哨兵值 0,但有限预算分配会排除价格未知候选;哨兵值绝不代表执行免费。
363
+
364
+ #### 候选目标与质量下限
365
+
366
+ 使用归一化质量 $`q`$,以及归一化延迟、领域匹配、推理匹配和风险代理值:
367
+
368
+ <!-- formula:latency-utility -->
369
+ ```math
370
+ L = \begin{cases}
371
+ \dfrac{1}{1+t/10\,000}, & t\text{ known}, \\
372
+ 1-\min(1,\max(0,\ell e_\ell)), & \text{otherwise}.
373
+ \end{cases}
374
+ ```
375
+
376
+ <!-- formula:candidate-utility -->
377
+ ```math
378
+ 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
379
+ ```
380
+
381
+ <!-- formula:assignment-score -->
382
+ ```math
383
+ S = \sum_{j=1}^{n}u_j - 0.015\sum_{(i,j)\in E}\mathbf{1}[\rho_i\ne\rho_j]
384
+ ```
385
+
386
+ $`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。
387
+
388
+ 质量优先使用足量且匹配的任务客观证据,再回退对应任务类别的 LiveBench 分数、整体 LiveBench、路线配置/目录估值。至少两个 API 档位各有可用任务证据时,才联合比较模型与档位;经验耗时可替换延迟代理项。公共数据刷新默认关闭,需主动启用。人工评分仅影响有界的 `preferenceAdjustment`,不能提高客观质量或满足质量下限。
389
+
390
+ | 工作包基础类型 | 质量 | 费用 | 延迟 | 领域 | 推理 | 风险 |
391
+ | --- | --- | --- | --- | --- | --- | --- |
392
+ | 简单 | 0.28 | 0.45 | 0.14 | 0.04 | 0.07 | 0.02 |
393
+ | 均衡 | 0.40 | 0.26 | 0.10 | 0.09 | 0.10 | 0.05 |
394
+ | 复杂 | 0.48 | 0.14 | 0.06 | 0.14 | 0.11 | 0.07 |
395
+ | 汇总 | 0.58 | 0.08 | 0.04 | 0.08 | 0.16 | 0.06 |
396
+
397
+ 简单/均衡/复杂任务的基础质量下限分别为 **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]。均衡不作倾斜。
398
+
399
+ #### 候选裁剪与分配搜索
400
+
401
+ 1. 优先保留达到各工作包质量下限的候选。若没有合格候选,保留质量最高的至多三个回退候选,并报告约束放宽。
402
+ 2. 每包最多保留 **12 个候选**,包含最低已知费用、最大效用与最高质量的锚点。存在依赖时禁用局部 Pareto 裁剪,因为路线身份会影响交接。
403
+ 3. 验证工作包 ID 唯一且依赖按拓扑排序。保留候选的笛卡尔空间大小不超过 **4,096** 时精确搜索;否则采用 **beam width 256**。搜索按未来依赖的模型边界压缩被支配前缀,并用未来交接的乐观估计排序。剩余最小费用用于裁剪不可行前缀;有限预算时,beam 会保护最便宜的可行前缀。
404
+ 4. 按字典序比较分配:更少放宽包、更小质量缺口、更高效用、更低费用、更少路线切换,最后稳定的路线顺序。最小费用模式先比较费用,再比较效用。每条跨越 `provider/model` 路线的依赖边从效用中扣除 0.015。
405
+ 5. 报告搜索元数据与可行性。正预算下若不存在可行分配,仍可返回最小费用备选,但标记 `budgetFeasible: false`。显示了计划不代表预算已满足。
406
+
407
+ “精确”仅适用于保留下来的候选空间与代理目标。候选上限和 beam 裁剪意味着不保证在所有已配置模型中全局最优;请在预览中核对所选路线与是否放宽了质量下限。
408
+
409
+ 路线档案支持匹配的资源证据、回退条件、推理档位与可选 JSON 验收升级。验收升级默认关闭,启用后仍需通过计费与预算检查,最多增加一次普通 API 调用。