oh-my-opencode-cohub 1.0.3 → 1.0.5

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,8 +8,8 @@ export declare function addPluginToTuiConfig(): {
8
8
  success: boolean;
9
9
  message: string;
10
10
  };
11
- /** co-orchestrator 注册到 opencode.json 的 agent 字段(TAB 切换必需——插件系统无法设 primary) */
12
- export declare function registerCoOrchestratorToAgent(): {
11
+ /** 将所有 12 个 co-* 代理注册到 opencode.json 的 agent 字段 */
12
+ export declare function registerCoHubAgents(): {
13
13
  success: boolean;
14
14
  message: string;
15
15
  };
@@ -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,gFAAgF;AAChF,wBAAgB,6BAA6B,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAuBrF;AAID,uBAAuB;AACvB,wBAAgB,kBAAkB,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA6B1E;AAED,8BAA8B;AAC9B,wBAAgB,cAAc,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAuGzE"}
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,CA6B1E;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
@@ -55,7 +55,7 @@ function addPluginToTuiConfig() {
55
55
  function getOhMyConfigPath() {
56
56
  return path.join(os.homedir(), ".config", "opencode", "oh-my-opencode-slim.json");
57
57
  }
58
- function registerCoOrchestratorToAgent() {
58
+ function registerCoHubAgents() {
59
59
  const configPath = getOpencodeConfigPath();
60
60
  let config = readJSON(configPath);
61
61
  if (!config) {
@@ -63,17 +63,31 @@ function registerCoOrchestratorToAgent() {
63
63
  }
64
64
  config.agent = config.agent ?? {};
65
65
  const agents = config.agent;
66
- if (agents["co-orchestrator"]) {
67
- return { success: true, message: "co-orchestrator 已存在于 opencode.json agent 字段,跳过" };
68
- }
69
- agents["co-orchestrator"] = {
70
- description: "纯调度者——理解需求→委派→方案→执行→验证",
71
- mode: "primary",
72
- prompt: "你是 CoHub 纯调度者(Orchestrator)。唯一职责:理解需求 委派信息收集 制定方案 调度子代理执行 委派验证。用中文思考和回复。",
73
- model: "deepseek/deepseek-v4-pro"
66
+ const cohubAgents = {
67
+ "co-orchestrator": { description: "纯调度者", mode: "primary", prompt: "你是 CoHub 纯调度者。用中文回复。", model: "deepseek/deepseek-v4-pro", variant: "max" },
68
+ "co-oracle": { description: "战略顾问", mode: "subagent", prompt: "你是战略顾问。用中文回复。", model: "deepseek/deepseek-v4-pro", variant: "max" },
69
+ "co-librarian": { description: "研究员", mode: "subagent", prompt: "你是研究员。用中文回复。", model: "deepseek/deepseek-v4-flash", variant: "low" },
70
+ "co-explorer": { description: "代码探索者", mode: "subagent", prompt: "你是代码探索者。用中文回复。", model: "deepseek/deepseek-v4-flash", variant: "low" },
71
+ "co-designer": { description: "设计师", mode: "subagent", prompt: "你是设计师。用中文回复。", model: "minimax/MiniMax-M3", variant: "medium" },
72
+ "co-fixer": { description: "执行者", mode: "subagent", prompt: "你是执行者。用中文回复。", model: "deepseek/deepseek-v4-flash", variant: "high" },
73
+ "co-observer": { description: "观察者", mode: "subagent", prompt: "你是观察者。用中文回复。", model: "codermxtest/gpt-5.5", variant: "low" },
74
+ "co-council": { description: "多模型共识", mode: "subagent", prompt: "你是多模型共识协调者。用中文回复。", model: "deepseek/deepseek-v4-pro", variant: "high" },
75
+ "co-rule-user": { description: "用户规范分析", mode: "subagent", prompt: "你是用户规范分析代理。用中文回复。", model: "deepseek/deepseek-v4-flash", variant: "medium" },
76
+ "co-rule-project": { description: "项目规范分析", mode: "subagent", prompt: "你是项目规范分析代理。用中文回复。", model: "deepseek/deepseek-v4-flash", variant: "medium" },
77
+ "co-rule-app": { description: "应用规则分析", mode: "subagent", prompt: "你是应用规则分析代理。用中文回复。", model: "deepseek/deepseek-v4-flash", variant: "medium" },
78
+ "co-planner": { description: "方案制定", mode: "subagent", prompt: "你是方案制定代理。用中文回复。", model: "deepseek/deepseek-v4-pro", variant: "high" }
74
79
  };
75
- writeJSON(configPath, config);
76
- return { success: true, message: "✓ 已将 co-orchestrator (primary) 注册到 opencode.json 的 agent 字段" };
80
+ let added = 0;
81
+ for (const [name, agentConfig] of Object.entries(cohubAgents)) {
82
+ if (!agents[name]) {
83
+ agents[name] = agentConfig;
84
+ added++;
85
+ }
86
+ }
87
+ if (added > 0) {
88
+ writeJSON(configPath, config);
89
+ }
90
+ return { success: true, message: `✓ 已将 ${added} 个 CoHub 代理注册到 opencode.json 的 agent 字段${added === 0 ? "(全部已存在,跳过)" : ""}` };
77
91
  }
78
92
  var COHUB_CONFIG_PATH = path.join(os.homedir(), ".config", "opencode", "oh-my-opencode-cohub.json");
79
93
  function writeDefaultConfig() {
@@ -126,9 +140,15 @@ function uninstallCoHub() {
126
140
  }
127
141
  if (config.agent && typeof config.agent === "object") {
128
142
  const agents = config.agent;
129
- if (agents["co-orchestrator"]) {
130
- delete agents["co-orchestrator"];
131
- messages.push("✓ 已从 opencode.json 的 agent 字段移除 co-orchestrator");
143
+ let removedAny = false;
144
+ for (const key of Object.keys(agents)) {
145
+ if (key.startsWith("co-")) {
146
+ delete agents[key];
147
+ removedAny = true;
148
+ }
149
+ }
150
+ if (removedAny) {
151
+ messages.push("✓ 已从 opencode.json 的 agent 字段移除所有 co-* 代理");
132
152
  }
133
153
  if (Object.keys(agents).length === 0) {
134
154
  delete config.agent;
@@ -219,14 +239,14 @@ async function main() {
219
239
  console.log(r1.message);
220
240
  const r2 = addPluginToTuiConfig();
221
241
  console.log(r2.message);
222
- const r3 = registerCoOrchestratorToAgent();
242
+ const r3 = registerCoHubAgents();
223
243
  console.log(r3.message);
224
244
  const r4 = writeDefaultConfig();
225
245
  console.log(r4.message);
226
246
  console.log(`
227
247
  ✅ CoHub 安装完成!`);
228
248
  console.log(' 重启 OpenCode 后,TAB 选择 "co-orchestrator" 开始纯调度模式。');
229
- console.log(" 右侧面板可查看 12 个代理的运行状态。");
249
+ console.log(" 已注册 12 个 co-* 代理到 opencode.json 的 agent 字段。");
230
250
  } else if (command === "uninstall") {
231
251
  console.log(`\uD83E\uDDF9 CoHub 卸载中...
232
252
  `);
@@ -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;AAqClD,wBAAwB;AACxB,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAalD,CAAC;AAwEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,wrBAA+B,CAAC;AAEhE,QAAA,MAAM,WAAW,EAAE,MAsMlB,CAAC;AAEF,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;AAqClD,wBAAwB;AACxB,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAalD,CAAC;AAwEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,wrBAA+B,CAAC;AAEhE,QAAA,MAAM,WAAW,EAAE,MAuMlB,CAAC;AAEF,eAAe,WAAW,CAAC"}
package/dist/index.js CHANGED
@@ -736,6 +736,9 @@ var CoHubPlugin = async (input, options) => {
736
736
  description: agent.description
737
737
  };
738
738
  }
739
+ try {
740
+ fs2.writeFileSync(path2.join(STATE_DIR, "config-hook-ran.json"), JSON.stringify({ ran: true, count: agents.length }));
741
+ } catch {}
739
742
  },
740
743
  "tool.execute.before": async (input2, output) => {
741
744
  try {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oh-my-opencode-cohub",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "description": "OpenCode 中文智能体编排插件 CoHub - 纯调度模式 / 全中文提示词 / 规范分析代理 / 方案制定代理 / 独立运行",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",