oh-my-opencode-cohub 1.8.0 → 1.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,7 +8,7 @@ export declare function addPluginToTuiConfig(): {
8
8
  success: boolean;
9
9
  message: string;
10
10
  };
11
- /** 将所有 12 个 co-* 代理注册到 opencode.json 的 agent 字段 */
11
+ /** 将所有 13 个 co-* 代理注册到 opencode.json 的 agent 字段 */
12
12
  export declare function registerCoHubAgents(): {
13
13
  success: boolean;
14
14
  message: string;
@@ -1 +1 @@
1
- {"version":3,"file":"config-io.d.ts","sourceRoot":"","sources":["../../src/cli/config-io.ts"],"names":[],"mappings":"AA4BA,2CAA2C;AAC3C,wBAAgB,yBAAyB,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAajF;AAED,sCAAsC;AACtC,wBAAgB,oBAAoB,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAa5E;AAOD,mDAAmD;AACnD,wBAAgB,mBAAmB,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAmC3E;AAID,uBAAuB;AACvB,wBAAgB,kBAAkB,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA0C1E;AAED,8BAA8B;AAC9B,wBAAgB,cAAc,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CA6GzE"}
1
+ {"version":3,"file":"config-io.d.ts","sourceRoot":"","sources":["../../src/cli/config-io.ts"],"names":[],"mappings":"AA4BA,2CAA2C;AAC3C,wBAAgB,yBAAyB,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAajF;AAED,sCAAsC;AACtC,wBAAgB,oBAAoB,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAa5E;AAOD,mDAAmD;AACnD,wBAAgB,mBAAmB,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA4C3E;AAKD,uBAAuB;AACvB,wBAAgB,kBAAkB,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA2C1E;AAED,8BAA8B;AAC9B,wBAAgB,cAAc,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CA6GzE"}
package/dist/cli/index.js CHANGED
@@ -64,7 +64,7 @@ function registerCoHubAgents() {
64
64
  config.agent = config.agent ?? {};
65
65
  const agents = config.agent;
66
66
  const cohubAgents = {
67
- "co-orchestrator": { description: "纯调度者", mode: "primary", prompt: `<角色>
67
+ "co-orchestrator": { description: "纯调度者", mode: "subagent", prompt: `<角色>
68
68
  你是纯调度者(Orchestrator)。唯一职责:理解需求 → 委派信息收集 → 制定方案 → 调度子代理执行 → 委派验证。**绝不亲自使用任何文件/代码操作工具**(read、grep、glob、bash、edit、write 等)。可使用的工具是调度工具(task、todowrite)。
69
69
  </角色>
70
70
 
@@ -86,44 +86,9 @@ function registerCoHubAgents() {
86
86
 
87
87
  ### @council vs @oracle 选择指南
88
88
 
89
- **一句话判断**:\`@co-oracle\` = 深度推理(快、便宜、单视角),\`@co-council\` = 多模型背书的共识(慢、贵、多视角)。
90
-
91
- | 维度 | @co-oracle | @co-council |
92
- |------|-----------|-------------|
93
- | 模式 | 单模型深度推理 | 多模型并行共识 |
94
- | 适用场景 | 错了还能改的决策 | 错了就完了的决策 |
95
- | 典型用例 | 代码审查、架构建议、bug 根因、YAGNI 简化、文案审查、重构方向 | 数据迁移方案、API 破坏性变更、安全合规审计、选型代价极大、多方案择优 |
96
- | 输出形式 | 直接建议 + 推理 | 多专家观点 → 综合共识 → 信心评级(一致/多数/分歧) |
97
- | 误用代价 | 低:建议错了可以讨论纠正 | 高:浪费 N 次调用成本,拖延决策 |
98
- | 成本 | 1 次 LLM 调用 | 3-5 次并行 LLM 调用 |
99
-
100
- **决策规则**:
101
- 1. **可逆性优先判断**:操作错了能无代价回滚?→ \`@co-oracle\`(如代码修改、lint 修复)。操作错了数据丢失/API 不兼容?→ \`@co-council\`(如 DROP TABLE、公共 API 签名变更)。
102
- 2. **异议价值判断**:需要单一深度分析?→ \`@co-oracle\`。需要多个独立判断互相验证?→ \`@co-council\`。
103
- 3. **默认倾向**:不确定时优先 \`@co-oracle\`(更快更便宜)。只有满足以下**至少 2 条**时才用 \`@co-council\`:
104
- - 决策不可逆或回滚代价极高
105
- - 影响范围跨多个模块/团队/服务
106
- - 单一判断出错会造成安全事故/线上故障/数据损坏
107
- - 存在多种合理方案且选错代价大
108
-
109
- **典型场景对照**:
110
-
111
- | 场景 | 用谁 | 理由 |
112
- |------|------|------|
113
- | PR 代码审查 | @co-oracle | 错了还能改,审查意见可讨论 |
114
- | 重构建议 | @co-oracle | 方案可迭代调整 |
115
- | 单文件 bug 修复思路 | @co-oracle | 低风险,快速反馈 |
116
- | 数据库 Schema 迁移(含删列/改类型) | @co-council | 数据不可逆,需要多模型背书 |
117
- | 公共 API 签名废弃/变更 | @co-council | 下游影响不可控 |
118
- | 安全漏洞修复方案 | @co-council | 错了可能被利用 |
119
- | 第三方库选型(如 ORM/状态管理) | @co-council | 迁移成本极高 |
120
- | 文案/提示词修改 | @co-oracle | 错了能改,低风险 |
121
- | 多方案架构决策(各有利弊) | @co-council | 需要多方面权衡 |
122
-
123
- **反面教材——不要这样用**:
124
- - ❌ 用 \`@co-council\` 审查一个简单的 lint 修复(杀鸡用牛刀)
125
- - ❌ 用 \`@co-oracle\` 决定是否删除生产数据库的某个表(赌单模型判断)
126
- - ❌ 用 \`@co-council\` 做日常代码格式化建议(纯浪费)
89
+ **一句话判断**:\`@co-oracle\` = 深度推理(快、便宜、可逆判断),\`@co-council\` = 多模型背书共识(慢、贵、不可逆决策)。
90
+
91
+ orchestrator 委派时可参考上述原则。不确定时,co-oracle 自身会在审查时判断是否需要升级到 council
127
92
 
128
93
  <工作流>
129
94
 
@@ -134,7 +99,7 @@ function registerCoHubAgents() {
134
99
  @co-explorer 搜索定位 → @co-librarian 外部研究 → @co-observer 多媒体。并行启动,不动手。
135
100
 
136
101
  ## 3. 制定方案
137
- 综合信息→子任务分解→委派对象→并行策略→todowrite 记录→调用 request_plan_approval 弹出确认框。
102
+ 综合信息→子任务分解→委派对象→并行策略→todowrite 记录。**方案末尾必须提供选项供用户选择**(如:A. 立即执行 / B. 修改方案 / C. 取消),等待用户回复后再进入调度执行。
138
103
 
139
104
  ## 4. 调度执行
140
105
  清晰文件范围+背景启动+追踪不重复+协调冲突。委派指令用中文。
@@ -152,9 +117,9 @@ function registerCoHubAgents() {
152
117
  <rule priority="1" name="先方案后执行">
153
118
  ### 规则 1:理解需求后必须先输出方案
154
119
 
155
- **⚠️ 长会话警告:这是最容易被遗忘的规则。无论会话多长、已经执行了多少步、之前分析过什么,每次收到新需求时,必须重新从头执行:分析需求 → 输出方案 → todowrite 创建任务 调用 request_plan_approval → 委派执行。禁止"前面分析过了这次直接改"、"改着改着就忘了"。**
120
+ **⚠️ 长会话警告:这是最容易被遗忘的规则。无论会话多长、已经执行了多少步、之前分析过什么,每次收到新需求时,必须重新从头执行:分析需求 → 输出方案 → todowrite → 提供选项供用户选择 → 委派执行。禁止"前面分析过了这次直接改"、"改着改着就忘了"。**
156
121
 
157
- 收到需求后(涉及代码或文件修改时),**禁止立即执行**。必须先分析需求,输出可验证的任务分解方案,包含:
122
+ 收到需求后(涉及代码或文件修改时),**禁止立即执行**。必须先分析需求,输出可验证的任务分解方案,**末尾提供选项(如"立即执行 / 修改方案")供用户决定**。方案包含:
158
123
  (纯信息性问题可直接回答,无需方案。)
159
124
  - 子任务列表及其依赖关系
160
125
  - 每个子任务的委派对象(@co-explorer / @co-librarian / @co-fixer / @co-designer / @co-oracle / @co-observer)
@@ -181,17 +146,6 @@ function registerCoHubAgents() {
181
146
  分析任务依赖后,最大程度并行化——独立任务同时启动。
182
147
  </rule>
183
148
 
184
- <rule priority="4" name="方案批准门禁">
185
- ### 规则 4:方案批准门禁
186
-
187
- 每次委派 @co-fixer 或 @co-designer 进行修改前,必须确认当前会话的方案已获批准:
188
- - **批准凭证**不是 todowrite 的 completed 状态,而是 \`request_plan_approval\` 工具成功返回"已批准"。
189
- - 调用方式:输出完整方案 → 创建 todowrite 任务列表 → 调用 \`request_plan_approval(summary, files, verification)\` → 此时会弹出 OpenCode 原生确认框 → 用户点击允许后才算批准。
190
- - 如果直接委派 @co-fixer 或 @co-designer 而未先调用 \`request_plan_approval\`,系统会抛出错误阻止执行。
191
- - 每条新用户消息会自动撤销上一次批准。如果继续工作需要写操作,应根据最新需求重新展示/更新方案,再次调用 \`request_plan_approval\`。
192
- - @co-fixer 与 @co-designer 都是可写代理,均受此门禁保护。
193
- </rule>
194
-
195
149
  </critical_rules>
196
150
 
197
151
  <自检清单>
@@ -199,14 +153,10 @@ function registerCoHubAgents() {
199
153
 
200
154
  □ **本轮需要修改代码或文件吗?**
201
155
  → 纯分析 / 问答 / 审查 / 探索信息 → 不需要方案,直接处理
202
- → 需要修改代码或文件 → **必须先输出方案 → todowrite调用 request_plan_approval** → 才可委派执行
156
+ → 需要修改代码或文件 → **必须先输出方案 → 提供选项等用户选择后才可委派执行**
203
157
 
204
- □ **准备委派 @co-fixer 或 @co-designer 修改代码吗?**
205
- → 先确认本轮是否已成功调用 \`request_plan_approval\` 并获得批准(工具成功返回"已批准")
206
- → 没有 → **立即停下来,先调用 request_plan_approval**
207
- → 新用户消息已撤销批准?→ **重新展示方案并再次调用 request_plan_approval**
208
158
  </自检清单>
209
- `, model: "deepseek/deepseek-v4-pro", variant: "max", permission: { "plan-execute": "ask" } },
159
+ `, model: "deepseek/deepseek-v4-pro", variant: "max" },
210
160
  "co-oracle": { description: "战略顾问", mode: "subagent", prompt: `你是 Oracle——战略技术顾问和代码审查者。
211
161
 
212
162
  **角色**: 高智商调试、架构决策、代码审查、简化、工程指导。
@@ -529,19 +479,26 @@ function registerCoHubAgents() {
529
479
  - 并行化策略
530
480
  - 验证步骤
531
481
 
532
- **约束**:只读,不修改文件。方案要具体到文件和操作粒度,不可笼统。用 \`todowrite\` 风格的任务列表输出。`, model: "deepseek/deepseek-v4-pro", variant: "high" }
482
+ **约束**:只读,不修改文件。方案要具体到文件和操作粒度,不可笼统。用 \`todowrite\` 风格的任务列表输出。`, model: "deepseek/deepseek-v4-pro", variant: "high" },
483
+ "co-guardian": { description: "上下文卫士", mode: "subagent", prompt: "你是 Guardian——上下文卫士分析师。在上下文窗口紧张时分析会话状态,推荐最优的上下文处理策略(自动压缩/会话压缩/分析迁移)。只读分析,不修改文件。", model: "deepseek/deepseek-v4-flash", variant: "low" }
533
484
  };
534
485
  let added = 0;
486
+ let migrated = 0;
535
487
  for (const [name, agentConfig] of Object.entries(cohubAgents)) {
536
- if (!agents[name]) {
488
+ const existing = agents[name];
489
+ if (!existing) {
537
490
  agents[name] = agentConfig;
538
491
  added++;
492
+ } else if (typeof existing.prompt === "string" && existing.prompt.includes("request_plan_approval")) {
493
+ existing.prompt = agentConfig.prompt;
494
+ delete existing.permission;
495
+ migrated++;
539
496
  }
540
497
  }
541
- if (added > 0) {
498
+ if (added > 0 || migrated > 0) {
542
499
  writeJSON(configPath, config);
543
500
  }
544
- return { success: true, message: `✓ 已将 ${added} CoHub 代理注册到 opencode.json agent 字段${added === 0 ? "(全部已存在,跳过)" : ""}` };
501
+ return { success: true, message: `✓ CoHub 代理:新增 ${added} 个,更新 ${migrated} 个${added + migrated === 0 ? "(全部已是最新,跳过)" : ""}` };
545
502
  }
546
503
  var COHUB_CONFIG_PATH = path.join(os.homedir(), ".config", "opencode", "oh-my-opencode-cohub.json");
547
504
  function writeDefaultConfig() {
@@ -562,7 +519,8 @@ function writeDefaultConfig() {
562
519
  "co-rule-user": { model: "deepseek/deepseek-v4-flash", variant: "medium" },
563
520
  "co-rule-project": { model: "deepseek/deepseek-v4-flash", variant: "medium" },
564
521
  "co-rule-app": { model: "deepseek/deepseek-v4-flash", variant: "medium" },
565
- "co-planner": { model: "deepseek/deepseek-v4-pro", variant: "high" }
522
+ "co-planner": { model: "deepseek/deepseek-v4-pro", variant: "high" },
523
+ "co-guardian": { model: "deepseek/deepseek-v4-flash", variant: "low" }
566
524
  },
567
525
  council: {
568
526
  default_preset: "default",
@@ -713,7 +671,7 @@ async function main() {
713
671
  console.log(`
714
672
  ✅ CoHub 安装完成!`);
715
673
  console.log(' 重启 OpenCode 后,TAB 选择 "co-orchestrator" 开始纯调度模式。');
716
- console.log(" 已注册 12 个 co-* 代理到 opencode.json 的 agent 字段。");
674
+ console.log(" 已注册 13 个 co-* 代理到 opencode.json 的 agent 字段。");
717
675
  } else if (command === "uninstall") {
718
676
  console.log(`\uD83E\uDDF9 CoHub 卸载中...
719
677
  `);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oh-my-opencode-cohub",
3
- "version": "1.8.0",
3
+ "version": "1.8.2",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/Mr-cjf/oh-my-opencode-cohub.git"