@eddyskywalker/dsh-chatgpt-subscription 0.46.1 → 0.48.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 (104) hide show
  1. package/CHANGELOG.md +63 -0
  2. package/README.md +22 -1
  3. package/lib/client.js +2639 -571
  4. package/lib/client.js.map +1 -1
  5. package/lib/index.js +15598 -5902
  6. package/lib/plan-mode-pipeline.js +419 -0
  7. package/lib/plan-mode.js +783 -0
  8. package/lib/tool-result-pruner.js +400 -0
  9. package/lib/types/client/hub/brand-icons.d.ts +1 -1
  10. package/lib/types/client/hub/brand-icons.d.ts.map +1 -1
  11. package/lib/types/client/hub/brand-svg.d.ts +4 -0
  12. package/lib/types/client/hub/brand-svg.d.ts.map +1 -1
  13. package/lib/types/client/hub/providers.d.ts.map +1 -1
  14. package/lib/types/client/index.d.ts +2 -0
  15. package/lib/types/client/index.d.ts.map +1 -1
  16. package/lib/types/client/locales-ru/index.d.ts.map +1 -1
  17. package/lib/types/client/locales-ru/progress-updates.d.ts.map +1 -1
  18. package/lib/types/client/locales-ru/workbuddy.d.ts +10 -0
  19. package/lib/types/client/locales-ru/workbuddy.d.ts.map +1 -0
  20. package/lib/types/client/progress-updates/locales.d.ts +23 -5
  21. package/lib/types/client/progress-updates/locales.d.ts.map +1 -1
  22. package/lib/types/client/progress-updates/settings-binding.d.ts +13 -1
  23. package/lib/types/client/progress-updates/settings-binding.d.ts.map +1 -1
  24. package/lib/types/client/progress-updates/settings-section.d.ts +1 -1
  25. package/lib/types/client/progress-updates/settings-section.d.ts.map +1 -1
  26. package/lib/types/client/workbuddy/WorkBuddyComposerQuota.d.ts +34 -0
  27. package/lib/types/client/workbuddy/WorkBuddyComposerQuota.d.ts.map +1 -0
  28. package/lib/types/client/workbuddy/WorkBuddySection.d.ts +91 -0
  29. package/lib/types/client/workbuddy/WorkBuddySection.d.ts.map +1 -0
  30. package/lib/types/client/workbuddy/locales.d.ts +768 -0
  31. package/lib/types/client/workbuddy/locales.d.ts.map +1 -0
  32. package/lib/types/client/workbuddy/styles.d.ts +21 -0
  33. package/lib/types/client/workbuddy/styles.d.ts.map +1 -0
  34. package/lib/types/client/workbuddy/useWorkBuddySection.d.ts +149 -0
  35. package/lib/types/client/workbuddy/useWorkBuddySection.d.ts.map +1 -0
  36. package/lib/types/compat.d.ts +1 -1
  37. package/lib/types/entry-plan-mode-pipeline.d.ts +206 -0
  38. package/lib/types/entry-plan-mode-pipeline.d.ts.map +1 -0
  39. package/lib/types/entry-plan-mode.d.ts +353 -0
  40. package/lib/types/entry-plan-mode.d.ts.map +1 -0
  41. package/lib/types/entry-tool-result-pruner.d.ts +255 -0
  42. package/lib/types/entry-tool-result-pruner.d.ts.map +1 -0
  43. package/lib/types/host/agent-preset.d.ts.map +1 -1
  44. package/lib/types/host/cache-warmup/contracts.d.ts +5 -1
  45. package/lib/types/host/cache-warmup/contracts.d.ts.map +1 -1
  46. package/lib/types/host/cache-warmup/install.d.ts.map +1 -1
  47. package/lib/types/host/cache-warmup/projection.d.ts.map +1 -1
  48. package/lib/types/host/cache-warmup/retrieval-intent.d.ts +18 -0
  49. package/lib/types/host/cache-warmup/retrieval-intent.d.ts.map +1 -0
  50. package/lib/types/host/cache-warmup/settings.d.ts +9 -2
  51. package/lib/types/host/cache-warmup/settings.d.ts.map +1 -1
  52. package/lib/types/host/common/capabilities.d.ts.map +1 -1
  53. package/lib/types/host/common/model-request-control.d.ts +1 -1
  54. package/lib/types/host/common/model-request-control.d.ts.map +1 -1
  55. package/lib/types/host/common/request-diagnostics.d.ts +1 -1
  56. package/lib/types/host/common/request-diagnostics.d.ts.map +1 -1
  57. package/lib/types/host/compaction-policy-guard.d.ts +58 -0
  58. package/lib/types/host/compaction-policy-guard.d.ts.map +1 -0
  59. package/lib/types/host/compaction-prompt.d.ts +129 -0
  60. package/lib/types/host/compaction-prompt.d.ts.map +1 -0
  61. package/lib/types/host/plan-mode-cache-guard.d.ts +16 -0
  62. package/lib/types/host/plan-mode-cache-guard.d.ts.map +1 -0
  63. package/lib/types/host/preset-sync.d.ts.map +1 -1
  64. package/lib/types/host/ptc-sdk-cache-guard.d.ts +80 -0
  65. package/lib/types/host/ptc-sdk-cache-guard.d.ts.map +1 -0
  66. package/lib/types/host/tool-result-pruner-guard.d.ts +34 -0
  67. package/lib/types/host/tool-result-pruner-guard.d.ts.map +1 -0
  68. package/lib/types/host/workbuddy/account-pool.d.ts +389 -0
  69. package/lib/types/host/workbuddy/account-pool.d.ts.map +1 -0
  70. package/lib/types/host/workbuddy/adapter.d.ts +249 -0
  71. package/lib/types/host/workbuddy/adapter.d.ts.map +1 -0
  72. package/lib/types/host/workbuddy/atrest.d.ts +98 -0
  73. package/lib/types/host/workbuddy/atrest.d.ts.map +1 -0
  74. package/lib/types/host/workbuddy/checkin.d.ts +150 -0
  75. package/lib/types/host/workbuddy/checkin.d.ts.map +1 -0
  76. package/lib/types/host/workbuddy/client.d.ts +214 -0
  77. package/lib/types/host/workbuddy/client.d.ts.map +1 -0
  78. package/lib/types/host/workbuddy/dsml.d.ts +55 -0
  79. package/lib/types/host/workbuddy/dsml.d.ts.map +1 -0
  80. package/lib/types/host/workbuddy/guardrails.d.ts +111 -0
  81. package/lib/types/host/workbuddy/guardrails.d.ts.map +1 -0
  82. package/lib/types/host/workbuddy/identity.d.ts +71 -0
  83. package/lib/types/host/workbuddy/identity.d.ts.map +1 -0
  84. package/lib/types/host/workbuddy/mapper.d.ts +238 -0
  85. package/lib/types/host/workbuddy/mapper.d.ts.map +1 -0
  86. package/lib/types/host/workbuddy/model-catalog.d.ts +217 -0
  87. package/lib/types/host/workbuddy/model-catalog.d.ts.map +1 -0
  88. package/lib/types/host/workbuddy/oauth.d.ts +47 -0
  89. package/lib/types/host/workbuddy/oauth.d.ts.map +1 -0
  90. package/lib/types/host/workbuddy/outbound-identity.d.ts +139 -0
  91. package/lib/types/host/workbuddy/outbound-identity.d.ts.map +1 -0
  92. package/lib/types/host/workbuddy/routes.d.ts +56 -0
  93. package/lib/types/host/workbuddy/routes.d.ts.map +1 -0
  94. package/lib/types/host/workbuddy/token-store.d.ts +370 -0
  95. package/lib/types/host/workbuddy/token-store.d.ts.map +1 -0
  96. package/lib/types/host/workbuddy/types.d.ts +179 -0
  97. package/lib/types/host/workbuddy/types.d.ts.map +1 -0
  98. package/lib/types/index.d.ts +35 -0
  99. package/lib/types/index.d.ts.map +1 -1
  100. package/lib/types/shared/workbuddy-contracts.d.ts +531 -0
  101. package/lib/types/shared/workbuddy-contracts.d.ts.map +1 -0
  102. package/package.json +14 -2
  103. package/presets/dispatch/README.md +57 -3
  104. package/presets/dispatch/agent.cordis.yml +63 -3
package/CHANGELOG.md CHANGED
@@ -2,6 +2,69 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.48.0 - 2026-10-30
6
+
7
+ - **[dispatch / plan-mode] Fork 计划模式服务(`./plan-mode`)并新增宿主跨预设缓存守卫,进出计划模式零前缀重建,恢复完整四段式规划指引**
8
+ - 新增 `src/entry-plan-mode.ts`(导出 `@eddyskywalker/dsh-chatgpt-subscription/plan-mode`)替代 `dispatch` 预设中的 `@deepseek-ai/dsh-plan-mode`:不注册随状态翻转的动态 `plan:policy` 系统提示词分节;`exit_plan_mode` 无条件常驻注册(不挂 `{ when }`),使 native `tools` 与 PTC `tools:sdk` 在进出计划模式时保持逐字节恒定;部署配置的 `section` 改由 `agent/pre-step` 尾部通知消息(`plan-mode-notice`)单次追加,因此恢复 `0.47.0` 之前完整的 2627 字符四段式指引而不再产生每步重发开销;自动协商 `plan` 投影的 `stateVersion`(兼容 ≤0.2.1-rc.5 的 v3 与 ≥0.2.2-alpha 的 v4)。
9
+ - 新增 `src/host/plan-mode-cache-guard.ts`,在宿主层通过 `system-prompt/assemble`、`agent/pre-step` 与 `tools.register` 将内置 `standard` / `ptc` / `cordis` 预设的计划模式同步压平为零前缀重建。
10
+
11
+ - **[dispatch / compaction] Fork 工具结果修剪器(`./tool-result-pruner`)并新增宿主跨预设守卫,恢复非 Kimi 线路修剪、整场跳过 `kimi-code`**
12
+ - 新增 `src/entry-tool-result-pruner.ts`(导出 `@eddyskywalker/dsh-chatgpt-subscription/tool-result-pruner`)重新挂载回 `dispatch` 预设的 `compaction` 隔离组(恢复 `isolate.toolResultPruner`):对 `kimi-code` 会话整场跳过修剪(返回空结果、不触发 `surfaceOp: replace` 历史改写),对 Codex / Claude / OpenDesign 等其他线路照常执行 `8192 / 4096 / 1024` 码点修剪与 `compaction/prune` 影子计价。
13
+ - 新增 `src/host/tool-result-pruner-guard.ts`,在宿主 reflect store 与 `agent.ctx.get('toolResultPruner')` 两处自动包装内置预设的修剪器实例。
14
+
15
+ - **[kimi-code] 新增 PTC `tools:sdk` 冻结守卫与 `compaction-basic` 专属压缩策略守卫**
16
+ - 新增 `src/host/ptc-sdk-cache-guard.ts`:对 `kimi-code` 会话忽略 `tools.definitions(scope, toolSet)` 的步骤级 `toolSet` 过滤并按未过滤工具集指纹缓存 `tools:sdk` 系统段,消除条件工具显隐导致的 `systemPrompt` 重建,同时保留 `tools.executable` 的步骤准入拦截。
17
+ - 新增 `src/host/compaction-policy-guard.ts`:跨预设改写 `compaction-basic` 引擎配置,为 `kimi-code` 注入专属压缩预算(`retainTokens: 8192`、`thresholdRatio: 0.85`、`headroomTokens: 32768`、`maxTokens: 32768`),将压缩后保留尾巴的重算开销从 ~41k tokens 压至 ~8k tokens,并在引擎 `summarize` 接缝原生替换交接式压缩提示词。
18
+
19
+ - **[docs / test] 同步更新 `dsh-harness-upgrade` 维护技能并补齐 85 条专属单测**
20
+ - `.dsh/skills/dsh-harness-upgrade/SKILL.md` 新增 §2 seam 行与 §3a 跨代升级核查清单;`preset-sync.ts` 将两个新子路径加入 `OPTIONALLY_ABSENT_PACKAGES`;新增 `test/plan-mode-fork.test.ts`(36 例)、`test/tool-result-pruner.test.ts`(23 例)、`test/kimi-cache-guards.test.ts`(26 例)。
21
+
22
+ ## 0.47.0 - 2026-10-30
23
+
24
+ - **[agent-preset] dispatch 预设新增计划模式管线:访谈收敛后 `enter_plan_mode`,计划在计划模式内写、经 `exit_plan_mode` 审批**
25
+ - 新增 loader 行 `@eddyskywalker/dsh-chatgpt-subscription/plan-mode-pipeline`(`src/entry-plan-mode-pipeline.ts`),在 `planning` 隔离组内注册 `enter_plan_mode` / `leave_plan_mode`,与 `plan-mode` 共用同一个 `planMode` realm、排在其后。缺 `planMode` 或 `tools` 服务时零注册、不抛错,preset 里别的行照常挂载。开关 `planModePipeline` 默认开;设置页「进展更新」卡片新增同名开关行,缺键读成开(与宿主 `default(true)` 一致)。
26
+ - persona 新增 R9 段与反模式 21/22:只有 L2 且 R-G 访谈收敛后才可调用;进入这一步只完成进入,下一步才只读探索并写出 decision-complete 计划,`exit_plan_mode` 是该轮唯一且最后的调用;`leave_plan_mode` 是放弃计划的出口,不是审批出口。
27
+ - 存活根校验改为三级降级:`agents` 缺失 → 放行;有 `agents` 但 `roots` 不可用 → 只判存活后放行;`roots` 可用且不含该 agent → 抛 `DELEGATED_CALLER`(该错误码唯一的抛出点)。R9 的子代理条款据此改写为分级口径(新代拒绝、老代放行),并写明「不要依赖这道拒绝」——子代理无论如何都要把未决决定带回调度者,不得自行进入计划模式或提交计划。
28
+ - `preset-sync` 把本行模块说明符加入 `OPTIONALLY_ABSENT_PACKAGES`:插件版本缺少该 subpath 导出时只禁用这一行,不再让整份 preset 被判 broken。
29
+ - 计划模式提示词的常驻开销压掉约 88%:`plan-mode` 的 `section` 从 2627 字符压到 309 字符(单行、五条护栏),只读探索与「批准前不实施」两条因为**手动 `/plan` 路径没有工具返回兜底**而必须留在 section 里;决策完备清单、唯一最后调用、打回循环搬进 `enter_plan_mode` 的返回文本(工具结果是末尾追加,不破坏前缀)。两个工具描述从 772/424 压到 352/196。进入计划模式那一次 system 前缀重建仍不可避免;工具表那半在声明 `dynamically_loaded_tools` 的 K3 上本就不重写顶层列表。
30
+ - 测试:新增 `test/plan-mode-pipeline.test.ts`(25 例,假 ctx 覆盖零注册、开关关闭、三级降级、两个工具的返回值与错误码);`test/agent-preset.test.ts`、`test/preset-sync.test.ts`、`test/progress-updates-client.test.tsx` 同步更新断言。
31
+
32
+ - **[compaction] 摘要提示词改为面向交接,语言、结构与保真度对齐官方 kimi-code**
33
+ - DSH 的压缩指令是 `compaction-basic` 的私有常量,不是设置项,任何预设都改不了;本插件在 `llm/stream` 瀑布上把它就地替换(`src/host/compaction-prompt.ts`)。只改**最后一条** user 消息,前面每条消息按引用原样传下去——这是 DSH 复用前缀缓存的前提,改任何更早的消息都会让整段缓存失效。
34
+ - 三处对齐官方 `MoonshotAI/kimi-code` 的 `fullCompaction/compaction-instruction.md`:① 要求用对话原本的语言写,不再强制「concise English engineering prose」;② 不强制九个固定小节标题,让形状跟随任务;③ 要求保留**命令返回的值**而不只是命令本身,否则下一轮会重跑一遍,而文件可能已经变了。
35
+ - 保留 DSH 原有的一条规则:遇到已有的 `<compacted-summary>` 块要折叠而不是照抄,否则每次压缩都会复述上一份 checkpoint。
36
+ - 匹配用首句前缀而不是全文,harness 改词时安静回退到它自己的文案;请求对象被冻结时也保持原样并记一条 warning,而不是强行改写。
37
+ - 影响面:所有线路的压缩请求(`purpose: 'compaction'`),不限于 Kimi。新增 12 条测试。
38
+
39
+ - **[agent-preset] dispatch 预设不再挂载 tool-result pruner,剪裁让位给摘要压缩**
40
+ - 结果剪裁会改写**历史里**的工具结果(`surfaceOp: replace`),而内容前缀缓存从被改写的那条起整段失效。真实 838k token 会话实测:一次剪裁移除约 418k token 上下文,但下一次请求为此付了 414k 全价 input token,当次净省不足 4k。
41
+ - 同一会话内 5 次摘要压缩的实测重建代价只有 20k–28k token——因为摘要把整段历史换成一小段 checkpoint,断点之后要重读的内容只剩几万;剪裁只砍中间几条,前缀却从历史 1% 处就断了。
42
+ - 因此从 `DISPATCH_PRESET`(`src/host/agent-preset.ts`)与随包 `presets/dispatch/agent.cordis.yml` 中移除 `tool-result-pruner` 行,并同步移除 `isolate.toolResultPruner`。`compaction-basic` 对缺失剪裁器完全容错(压力路径 `if (prune !== undefined)`、溢出路径 `?.`),这是 DSH 原生支持的降级路径。
43
+ - 影响面仅限 dispatch 预设;宿主平面与 `liangshen` 预设各自持有自己的剪裁配置,不受影响。`test/agent-preset.test.ts` 的两处断言同步更新。
44
+
45
+ - **【WorkBuddy】恢复整条订阅线路并移植当前上游的 11128、双协议与风控修复**
46
+ - 从 `2d125f40^` 恢复双区登录、桌面登录态采纳、账号池、目录/配额、签到、护栏、设置 UI、composer、文档与专属测试;保留 `workbuddy-subscription`、旧凭证/设置路径和 Windows DPAPI 兼容,全部共享注册点按末尾追加接线。
47
+ - 默认身份升级为桌面 WorkBuddy 5.9.3 / CLI 2.165.0,旧 `cli` 默认经带版本号的幂等迁移切换;请求带每账号会话/turn id、X-Agent/X-Stainless 与 gzip。国区 Claude 新增 `/v1/messages`,支持 signed thinking、工具流、output_config.effort 和互斥 usage 计数。
48
+ - 11128 采用「窄改写 → 一次 systemAsUser 搬移重试 → 最多 256 项提示记忆」;其它 11128 不误重试。401 按 accountId 重读并只续期/重放一次,成功续期后真正 continue 到重放;修复 Messages 后续 output-only usage 帧重复扣缓存、11140 未 await 落盘及 401 跨账号 token 串用风险。
49
+ - 11140 首个账号持久化停用,30 分钟内第二个不同账号受限时整池暂停 30 分钟;暂停到期仅恢复整池。无静态 API Key、无伪造 X-Device-Token。协议与维护依据记录于 `docs/workbuddy-line-plan.md` 和 `docs/workbuddy-upstream-hardening.md`。
50
+ - **验证**:恢复前基线 typecheck 0、全量 5166 passed / 9 skipped / 0 failed;恢复后强制三工程 typecheck 0、全量 **5587 passed / 9 skipped / 0 failed**(新增 421 条);`npm run build`、`npm ci --dry-run` 与发布包检查通过(832 个文件,WorkBuddy host/client/shared 声明齐全)。用户选择不重启当前 Host,因此 live probe 未执行,不把离线结果写成上游实测。
51
+
52
+ - **[progress-updates] 设置页三行副标题补上线路归属:缓存预热与检索结果投影标注「Kimi Code 专用」**
53
+ - 「缓存预热」「检索结果投影」两行补上「Kimi Code 专用」与「非 Kimi 线路开关无影响」:这两个开关的生效范围由 `cache-warmup/install.ts` 的 `CACHE_WARMUP_PROVIDER = 'kimi-code'` 写死,其他线路上开关开着关着都一样。
54
+ - 「进展更新」按事实写「本插件的所有线路都可用」:`progress_update` 工具、提示词分节与催促都挂在插件自己的 loader 行上,不看线路,因此不写 Kimi 专用。
55
+ - 三语(zh/en/ru)界面文案与设置 schema 描述(`src/index.ts`、`src/host/cache-warmup/settings.ts`)同步改写,避免设置页与设置卡说法不一致。
56
+
57
+ - **[kimi-code] 新增默认开启的检索型结果投影,并将缓存开关统一放入「进展更新」设置页**
58
+ - `cacheWarmupRetrieval` 独立控制 `read` / `web_fetch` / `grep` / `glob`:只有明确导航任务才考虑投影;文件保留完整顶层声明及行号,网页保留完整 title/heading 大纲,编辑、审查、验证与未知意图保持原决策和原文。
59
+ - 兼容 PTC 把 `read` 包在 `run_code` 里的规范 JSON Envelope;只解析连续、唯一、完整的 lines 数组,混合输出和契约仍保持原文。
60
+ - 跳过真实请求后的 reminder-only `user/message`,继续向前识别最近一条真实用户意图;绝对路径仅作可选元数据,函数内局部变量不再挤占大纲预算。
61
+ - 运行时验收:真实文件生成 `strategy=file-outline`(8 个顶层声明、12,472 字符原文及 ref);审查请求后无新增大纲,读取结果保留原始 JSON。
62
+ - 「进展更新」设置页新增「缓存预热」与「检索结果投影」两行,沿用现有卡片、开关、三语和保存失败状态;配置字段仍留在核心入口,未声明该字段的旧 profile 默认开启新行为,显式 false 仍关闭。
63
+ - 真实 Kimi 四次请求对照:两组续写均读取 512 cached tokens,原始结果新增 1251 fresh tokens,大纲结果新增 317 fresh tokens;仅证明该受控样本,不外推所有任务。
64
+
65
+ - **[cache-warmup] `npm notice` 文件清单不再把 `stream-error.d.ts` 误计为构建错误**
66
+ - Shell 判定与错误集构造同步忽略 npm 打包元数据;真正的 `npm ERR!` 与编译错误仍完整保留。
67
+
5
68
  ## 0.46.1 - 2026-10-29
6
69
 
7
70
  - **[codex-chatgpt] Codex 请求在 TLS 握手/连接建立前失败时最多重试两次**
package/README.md CHANGED
@@ -22,6 +22,7 @@
22
22
  - [Cline Pass(OAuth 订阅)线路](#cline-passoauth-订阅线路)
23
23
  - [Qoder(订阅)线路](#qoder订阅线路)
24
24
  - [OpenDesign(订阅,API Key / 浏览器授权)线路](#opendesign订阅api-key--浏览器授权线路)
25
+ - [WorkBuddy(CodeBuddy 订阅)线路](#workbuddycodebuddy-订阅线路)
25
26
  - [子代理模型授权](#子代理模型授权0215-起032-起强制指定模型)
26
27
  - [随包分发的 Agent Preset](#随包分发的-agent-preset)
27
28
  - [本机登录](#本机登录)
@@ -33,7 +34,7 @@
33
34
 
34
35
  ## 线路总览
35
36
 
36
- 本插件同时接入 **11 条订阅线路**,每条各自独立注册 Provider、独立登录、独立额度卡片。
37
+ 本插件同时接入 **13 条订阅线路**,每条各自独立注册 Provider、独立登录、独立额度卡片。
37
38
 
38
39
  | Provider ID | 订阅 | 协议 | 登录方式 | 模型目录来源 |
39
40
  | --- | --- | --- | --- | --- |
@@ -48,6 +49,7 @@
48
49
  | `cline-pass` | Cline Pass | OpenAI Chat Completions | **浏览器设备码 OAuth**(WorkOS,账号入池、自动续期);API Key 仅作兼容回退 | 随包表兜底 + 官方 `recommended-models` / models.dev / 上游网关目录补全 |
49
50
  | `qoder` | Qoder 订阅(全球区 qoder.com / 中国站 qoder.com.cn) | Qoder 自有(COSY 签名 + 信封 SSE) | **浏览器设备流**(仅全球区)/ 手工粘贴 PAT(两区)/ 只读导入本机 `~/.qoder/.auth/user` | **实时运行时发现**(COSY 签名 GET)+ 随包能力兜底表 |
50
51
  | `opendesign` | OpenDesign 订阅(Go / Plus / Pro / Max) | OpenAI Chat Completions | **浏览器设备授权**(AMR 设备流,签发控制 Key + 运行时 Key);粘贴 Cloud 控制台的 API Key 作回退 | 随包表兜底(源自官方公开价目)+ 实时 `GET /v1/models` |
52
+ | `workbuddy-subscription` | WorkBuddy(CodeBuddy 订阅,国区 / 国际区) | OpenAI Chat Completions;国区 Claude 走 Anthropic Messages | 浏览器轮询授权,或只读采纳 CodeBuddy 桌面登录态 | 实时 `/v3/config` + 本地快照与随包兜底 |
51
53
 
52
54
  > **只有 minimax-code 是硬编码目录,而且是有意的**:该端点的 `GET /v1/models` **未对订阅流量开放**(返回 503 `direct_route_not_configured`),任何「实时目录」都只会是一个必然失败的请求。其取值转录自本机官方客户端的 `config.yaml`。
53
55
  >
@@ -98,6 +100,15 @@
98
100
  - 可选 composer 快捷用量徽标,按当前 `codex-chatgpt` 模型显示最紧张窗口的剩余额度。
99
101
 
100
102
 
103
+ ### WorkBuddy(CodeBuddy 订阅)线路
104
+
105
+ - 注册 `workbuddy-subscription` Provider,设置卡片与 `/workbuddy/api/*` 路由同时恢复;支持国区 `copilot.tencent.com` 与国际区 `www.workbuddy.ai`,区域由凭据的 domain 决定,不能靠换端点跨区调用。
106
+ - 登录沿用浏览器 state/token 轮询,也可只读采纳桌面端现有登录态;桌面账号只能隐藏,插件不会删除它们。自管账号进入同一账号池,支持轮换、配额、credits 倍率、上下文覆盖、每日签到(仅国区)与本地用量护栏。
107
+ - 普通模型走 `/v2/chat/completions`,国区 Claude 走 `/v1/messages` 并保留 signed thinking 与 `output_config.effort`;国际区 Claude 仍走 Chat Completions。请求使用当前桌面客户端身份、每账号会话头与 gzip,目录来自 `/v3/config` 而非不存在的 `/v1/models`。
108
+ - 对上游 11128 渠道校验,先仅改写已核实的窄指纹;仍有拒绝时只允许一次把头部 system 搬进首条 user 的 `<instructions>`,并记住该提示文本,后续会话直接走搬移路径。其它 11128(缺会话头、首消息形状)不会误触发这条重试。
109
+ - 401 只按当前账号续期并重放一次;11140 立即停用该账号并持久化,30 分钟内第二个不同账号也受限时整池暂停 30 分钟,暂停到期后受限账号仍需重新登录。**不新增静态 API Key,不伪造 X-Device-Token。**
110
+ - **风险须知**:该线路依赖非官方、逆向得出的上游行为,WorkBuddy 仍可能继续收紧渠道校验和账号风控;实时可用性以本机最小 live probe 为准,离线测试不承诺上游永久兼容。实施证据与未验证边界见 `docs/workbuddy-line-plan.md` 和 `docs/workbuddy-upstream-hardening.md`。
111
+
101
112
  ### Command Code 线路
102
113
 
103
114
  - 注册 `command-code` Provider,使用 Command Code 的 Provider API 与账户 API;模型 id 决定线路:`claude-*` 走 Anthropic Messages(`/provider/v1/messages`),其余模型走 OpenAI Chat Completions(`/provider/v1/chat/completions`),因为该 API 会拒绝把模型发到格式不符的端点;
@@ -543,6 +554,16 @@ DSH 的 Agent Teams(bundle `@deepseek-ai/dsh-experimental-agent-team-profile`
543
554
 
544
555
  不想让插件写 home 目录时,可把 `syncAgentPresets` 设为 `false`,再自行拷贝包内的 `presets/dispatch/` 到 `<dshHome>/.agent-presets/dispatch/`。
545
556
 
557
+ ### 计划模式管线(R9)
558
+
559
+ 调度模式多给主代理两个工具,把「进入计划模式」和「出计划」拆成两步:
560
+
561
+ 1. **澄清收敛才进入** —— 只有判定 L2 且 R-G 访谈收敛(前沿为空 + 用户明确确认)时才调 `enter_plan_mode`。进入这一步只完成进入:不做只读探索、不写计划、不派发。
562
+ 2. **下一步出计划** —— 下一步在计划模式内只读探索并写出 decision-complete 计划,然后以 `exit_plan_mode` 作为该轮**唯一且最后的**工具调用提交审批。`leave_plan_mode` 是**放弃计划**的出口,不是审批出口。
563
+ 3. **被打回**就留在计划模式内按反馈修订,再走 `exit_plan_mode`;放弃计划必须由用户明确表示。
564
+
565
+ 两个工具由 preset 的 `planning` 组内 `plan-mode-pipeline` 行注册(与 `plan-mode` 同一个 realm、排在其后),只属于挂载了本 preset 的会话。开关 `planModePipeline` **默认开启**;关闭后它们不再出现在模型可见的工具列表里(新代按逐步准入隐藏;老代的注册面不接受准入参数,此时调用直接返回 `active: false` / `transition: 'disabled'`),调度模式退化为用一次 `ask_user_question` 请用户手动输入 `/plan`,然后按已配置的 `plan-mode` section 继续——不得把计划贴在普通回复里代替审批。设置页「进展更新」卡片里有同名开关,保存即生效。
566
+
546
567
  ## 子代理模型授权(0.2.15 起,0.3.2 起强制指定模型)
547
568
 
548
569
  DSH 设置页的「Subagent」卡片会把勾选的模型写成会话级的允许列表(会话日志事件 `subagent/model-selection-policy`)。DSH 内置委派工具只拒绝**模型显式填写**且不在列表内的路由;调用里不写 `provider`/`model` 时,子代理会继承父级模型,于是白名单之外的主模型(例如 `deepseek-official/deepseek-flash`)仍会被子代理使用。