oh-my-opencode-cohub 1.12.11-beta.0 → 1.12.13-beta.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.
package/README.md CHANGED
@@ -114,9 +114,9 @@ npm install oh-my-opencode-cohub
114
114
  | 代理 | 角色 | 推理强度 | variant 建议 | 模型偏好 |
115
115
  |------|------|---------|-------------|---------|
116
116
  | co-orchestrator | 纯调度者,编排任务、委派执行 | **重型** | max / xhigh | pro、max、sonnet、opus 等强推理模型 |
117
- | co-oracle | 战略顾问,架构审查、复杂调试 | **重型** | max / xhigh | 同上 |
118
- | co-planner | 方案制定,综合信息输出任务分解 | **重型** | max / xhigh | 同上 |
119
- | co-council | 多模型共识,跨多个 LLM 综合 | **重型** | high / xhigh | 同上 |
117
+ | co-oracle | 战略顾问,架构审查、复杂调试 | **轻型** | low / medium | flash、mini、haiku 等轻量快速模型 |
118
+ | co-planner | 方案制定,综合信息输出任务分解 | **轻型** | low / medium | 同上 |
119
+ | co-council | 多模型共识,跨多个 LLM 综合 | **轻型** | low / medium | 同上 |
120
120
  | co-librarian | 研究员,查文档、搜 GitHub、Web 搜索 | **轻型** | low / medium | flash、mini、haiku 等轻量快速模型 |
121
121
  | co-explorer | 代码探索者,grep/glob 搜索定位 | **轻型** | low / medium | 同上 |
122
122
  | co-fixer | 执行者,代码修改、编译、测试 | **轻型** | low / medium | 同上 |
@@ -166,7 +166,7 @@ council 是内置的多模型共识机制,会将同一个问题发给 3 个 co
166
166
 
167
167
  - 从 opencode.json 读取已配置的 provider,按上表规则为每个代理分配 model 和 variant
168
168
  - 只有 1 个 provider:所有代理都用它,variant 按表格建议选不同档位
169
- - 有多个 provider:重型代理优先选最强推理 provider,轻型选最快 provider
169
+ - 有多个 provider:co-orchestrator 优先选最强推理 provider,其余代理选最快 provider
170
170
  - council 的 alpha/beta/gamma 优先选 3 个不同 provider;不够 3 个时用同一 provider 的不同 model
171
171
  - opencode.json 无任何 provider 时,生成占位配置并在 `_comment` 字段提示用户先配置
172
172
 
@@ -288,17 +288,17 @@ bunx oh-my-opencode-cohub install
288
288
  | 代理 | 默认模型 | 职责 | 读取源 |
289
289
  |------|----------|------|--------|
290
290
  | co-orchestrator | `deepseek/deepseek-v4-pro` | 纯调度:规划→委派→验证 | — |
291
- | co-oracle | `deepseek/deepseek-v4-pro` | 架构审查/代码审查(含 Superpowers skills) | — |
291
+ | co-oracle | `deepseek/deepseek-v4-flash` | 架构审查/代码审查(含 Superpowers skills) | — |
292
292
  | co-librarian | `deepseek/deepseek-v4-flash` | 外部文档/API 研究 | — |
293
293
  | co-explorer | `deepseek/deepseek-v4-flash` | 代码库搜索定位 | — |
294
294
  | co-designer | `minimax/MiniMax-M3` | UI/UX 设计与实现 | — |
295
295
  | co-fixer | `deepseek/deepseek-v4-flash` | 代码修改执行(含 TDD skill) | — |
296
296
  | co-observer | `codermxtest/gpt-5.5` | 图片/PDF 分析 | — |
297
- | co-council | `deepseek/deepseek-v4-pro` | 多模型共识 | — |
297
+ | co-council | `deepseek/deepseek-v4-flash` | 多模型共识 | — |
298
298
  | co-rule-user | `deepseek/deepseek-v4-flash` | 用户级规范分析 | `~/.config/opencode/AGENTS.md` |
299
299
  | co-rule-project | `deepseek/deepseek-v4-flash` | 项目级规范分析 | 项目 `AGENTS.md` |
300
300
  | co-rule-app | `deepseek/deepseek-v4-flash` | 应用规则分析 | `.opencode/rules/*.md` |
301
- | co-planner | `deepseek/deepseek-v4-pro` | 方案制定 | 综合需求+信息+规则 |
301
+ | co-planner | `deepseek/deepseek-v4-flash` | 方案制定 | 综合需求+信息+规则 |
302
302
 
303
303
  > 模型可通过下文「配置文件」或「自定义模型」章节覆盖。
304
304
 
@@ -311,17 +311,17 @@ CLI 安装后自动创建 `~/.config/opencode/oh-my-opencode-cohub.json`,这
311
311
  "$schema": "https://unpkg.com/oh-my-opencode-cohub@latest/oh-my-opencode-cohub.schema.json",
312
312
  "agents": {
313
313
  "co-orchestrator": { "model": "deepseek/deepseek-v4-pro", "variant": "max" },
314
- "co-oracle": { "model": "deepseek/deepseek-v4-pro", "variant": "max" },
314
+ "co-oracle": { "model": "deepseek/deepseek-v4-flash", "variant": "low" },
315
315
  "co-librarian": { "model": "deepseek/deepseek-v4-flash", "variant": "low" },
316
316
  "co-explorer": { "model": "deepseek/deepseek-v4-flash", "variant": "low" },
317
317
  "co-designer": { "model": "minimax/MiniMax-M3", "variant": "medium" },
318
318
  "co-fixer": { "model": "deepseek/deepseek-v4-flash", "variant": "high" },
319
319
  "co-observer": { "model": "codermxtest/gpt-5.5", "variant": "low" },
320
- "co-council": { "model": "deepseek/deepseek-v4-pro", "variant": "high" },
320
+ "co-council": { "model": "deepseek/deepseek-v4-flash", "variant": "low" },
321
321
  "co-rule-user": { "model": "deepseek/deepseek-v4-flash", "variant": "medium" },
322
322
  "co-rule-project":{ "model": "deepseek/deepseek-v4-flash", "variant": "medium" },
323
323
  "co-rule-app": { "model": "deepseek/deepseek-v4-flash", "variant": "medium" },
324
- "co-planner": { "model": "deepseek/deepseek-v4-pro", "variant": "high" }
324
+ "co-planner": { "model": "deepseek/deepseek-v4-flash", "variant": "low" }
325
325
  }
326
326
  }
327
327
  ```
@@ -480,6 +480,7 @@ npm run build
480
480
 
481
481
  | 版本 | 日期 | 主要变更 |
482
482
  |------|------|---------|
483
+ | [v1.12.12](https://github.com/Mr-cjf/oh-my-opencode-cohub/releases/tag/v1.12.12) | 2026-08-04 | 子代理模型降级 Flash(适配 DeepSeek-V4-Flash 2026-07-31 增强),仅 orchestrator 保留 Pro;Board 会话复用修复 |
483
484
  | [1.12.10-beta.1](https://github.com/Mr-cjf/oh-my-opencode-cohub/releases/tag/v1.12.10-beta.1) | 2026-07-30 | 调度策略优化、四阶段并行决策框架 |
484
485
  | [1.12.9](https://github.com/Mr-cjf/oh-my-opencode-cohub/releases/tag/v1.12.9) | 2026-07-29 | 安装架构修复、配置双保险回退、prerelease 发布 |
485
486
  | [1.12.0](https://github.com/Mr-cjf/oh-my-opencode-cohub/releases/tag/v1.12.0) | 2026-07-28 | AI 配置文案、智能模型匹配、配置外化管理 |
package/dist/cli/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  // package.json
3
- var version = "1.12.11-beta.0";
3
+ var version = "1.12.13-beta.0";
4
4
 
5
5
  // src/cli/config-io.ts
6
6
  import * as fs from "node:fs";
@@ -155,7 +155,7 @@ var HEAVY_KEYWORDS = ["pro", "preview", "opus", "max", "sonnet", "gpt-5.6"];
155
155
  var LIGHT_KEYWORDS = ["flash", "mini", "haiku", "gpt-5.4", "gpt-5.3"];
156
156
  var DESIGN_KEYWORDS = ["minimax", "m3", "sonnet", "claude"];
157
157
  var OBSERVER_KEYWORDS = ["gpt-5.5", "gpt-5.4", "vision", "flash"];
158
- var HEAVY_TYPES = new Set(["orchestrator", "oracle", "planner", "council"]);
158
+ var HEAVY_TYPES = new Set(["orchestrator"]);
159
159
  function pickBestVariant(variants, agentType) {
160
160
  if (!variants || variants.length === 0)
161
161
  return;
@@ -227,17 +227,17 @@ function writeDefaultConfig() {
227
227
  }
228
228
  const agentSpecs = [
229
229
  { name: "co-orchestrator", keywords: HEAVY_KEYWORDS, agentType: "orchestrator" },
230
- { name: "co-oracle", keywords: HEAVY_KEYWORDS, agentType: "oracle" },
230
+ { name: "co-oracle", keywords: LIGHT_KEYWORDS, agentType: "oracle" },
231
231
  { name: "co-librarian", keywords: LIGHT_KEYWORDS, agentType: "librarian" },
232
232
  { name: "co-explorer", keywords: LIGHT_KEYWORDS, agentType: "explorer" },
233
233
  { name: "co-designer", keywords: DESIGN_KEYWORDS, agentType: "designer" },
234
234
  { name: "co-fixer", keywords: LIGHT_KEYWORDS, agentType: "fixer" },
235
235
  { name: "co-observer", keywords: OBSERVER_KEYWORDS, agentType: "observer" },
236
- { name: "co-council", keywords: HEAVY_KEYWORDS, agentType: "council" },
236
+ { name: "co-council", keywords: LIGHT_KEYWORDS, agentType: "council" },
237
237
  { name: "co-rule-user", keywords: LIGHT_KEYWORDS, agentType: "rule-user" },
238
238
  { name: "co-rule-project", keywords: LIGHT_KEYWORDS, agentType: "rule-project" },
239
239
  { name: "co-rule-app", keywords: LIGHT_KEYWORDS, agentType: "rule-app" },
240
- { name: "co-planner", keywords: HEAVY_KEYWORDS, agentType: "planner" }
240
+ { name: "co-planner", keywords: LIGHT_KEYWORDS, agentType: "planner" }
241
241
  ];
242
242
  const agents = {};
243
243
  let matched = 0;
@@ -250,7 +250,7 @@ function writeDefaultConfig() {
250
250
  }
251
251
  const usedProviders = new Set;
252
252
  const councilSlots = [
253
- { key: "alpha", keywords: HEAVY_KEYWORDS, agentType: "council" },
253
+ { key: "alpha", keywords: LIGHT_KEYWORDS, agentType: "council" },
254
254
  { key: "beta", keywords: LIGHT_KEYWORDS, agentType: "council" },
255
255
  { key: "gamma", keywords: DESIGN_KEYWORDS, agentType: "council" }
256
256
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAyHlD,QAAA,MAAM,WAAW,EAAE,MAyflB,CAAC;AAEF,eAAO,MAAM,MAAM,QAAc,CAAC;AAClC,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAyHlD,QAAA,MAAM,WAAW,EAAE,MA4flB,CAAC;AAEF,eAAO,MAAM,MAAM,QAAc,CAAC;AAClC,eAAe,WAAW,CAAC"}
package/dist/index.js CHANGED
@@ -2012,13 +2012,17 @@ var CoHubPlugin = async (input, options) => {
2012
2012
  if (output.messages) {
2013
2013
  for (let d = 0;d < output.messages.length; d++) {
2014
2014
  const msg = output.messages[d];
2015
+ if (msg.info?.role !== "user")
2016
+ continue;
2015
2017
  const parts = msg.parts;
2016
2018
  if (!parts || !Array.isArray(parts) || parts.length === 0) {
2017
- appendLog("messages.transform", `⚠️ 消息[${d}] role=${msg.info?.role ?? "?"} parts为空`);
2019
+ msg.parts = [{ type: "text", text: " " }];
2020
+ appendLog("messages.transform", `⚠️ 消息[${d}] role=user parts为空,已推入占位text part`);
2018
2021
  } else {
2019
2022
  const hasTextPart = parts.some((p) => p.type === "text");
2020
- if (!hasTextPart && msg.info?.role === "user") {
2021
- appendLog("messages.transform", `⚠️ 消息[${d}] role=user parts无text类型, types=[${parts.map((p) => p.type).join(",")}]`);
2023
+ if (!hasTextPart) {
2024
+ msg.parts.push({ type: "text", text: " " });
2025
+ appendLog("messages.transform", `⚠️ 消息[${d}] role=user parts无text类型(types=[${parts.map((p) => p.type).join(",")}]),已推入占位text part`);
2022
2026
  }
2023
2027
  }
2024
2028
  }
package/dist/tui.js CHANGED
@@ -96,17 +96,17 @@ function loadAgentConfig() {
96
96
  function DEFAULT_AGENTS() {
97
97
  const list = [
98
98
  ["co-orchestrator", "deepseek/deepseek-v4-pro"],
99
- ["co-oracle", "deepseek/deepseek-v4-pro"],
99
+ ["co-oracle", "deepseek/deepseek-v4-flash"],
100
100
  ["co-librarian", "deepseek/deepseek-v4-flash"],
101
101
  ["co-explorer", "deepseek/deepseek-v4-flash"],
102
102
  ["co-designer", "minimax/MiniMax-M3"],
103
103
  ["co-fixer", "deepseek/deepseek-v4-flash"],
104
104
  ["co-observer", "codermxtest/gpt-5.5"],
105
- ["co-council", "deepseek/deepseek-v4-pro"],
105
+ ["co-council", "deepseek/deepseek-v4-flash"],
106
106
  ["co-rule-user", "deepseek/deepseek-v4-flash"],
107
107
  ["co-rule-project", "deepseek/deepseek-v4-flash"],
108
108
  ["co-rule-app", "deepseek/deepseek-v4-flash"],
109
- ["co-planner", "deepseek/deepseek-v4-pro"]
109
+ ["co-planner", "deepseek/deepseek-v4-flash"]
110
110
  ];
111
111
  return list.map(([name, fullModel]) => {
112
112
  const parts = fullModel.split("/");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oh-my-opencode-cohub",
3
- "version": "1.12.11-beta.0",
3
+ "version": "1.12.13-beta.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/Mr-cjf/oh-my-opencode-cohub.git"