oh-my-opencode-cohub 1.12.8 → 1.12.9-beta.4
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/dist/cli/config-io.d.ts +5 -0
- package/dist/cli/config-io.d.ts.map +1 -1
- package/dist/cli/index.js +43 -21
- package/dist/config/loader.d.ts +2 -2
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +45 -11
- package/dist/prompts/orchestrator.d.ts +1 -1
- package/dist/prompts/orchestrator.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/cli/config-io.d.ts
CHANGED
|
@@ -25,4 +25,9 @@ export declare function uninstallCoHub(): {
|
|
|
25
25
|
success: boolean;
|
|
26
26
|
messages: string[];
|
|
27
27
|
};
|
|
28
|
+
/** 复制 dist 文件到 ~/.config/opencode/plugins/oh-my-opencode-cohub/dist/ */
|
|
29
|
+
export declare function copyPluginFiles(cliDir: string): {
|
|
30
|
+
success: boolean;
|
|
31
|
+
message: string;
|
|
32
|
+
};
|
|
28
33
|
//# sourceMappingURL=config-io.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-io.d.ts","sourceRoot":"","sources":["../../src/cli/config-io.ts"],"names":[],"mappings":"AAkCA,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;;wDAEwD;AACxD,wBAAgB,mBAAmB,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"config-io.d.ts","sourceRoot":"","sources":["../../src/cli/config-io.ts"],"names":[],"mappings":"AAkCA,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;;wDAEwD;AACxD,wBAAgB,mBAAmB,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAuF3E;AA8ED,4DAA4D;AAC5D,wBAAgB,kBAAkB,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA2G1E;AAED,8BAA8B;AAC9B,wBAAgB,cAAc,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CA6GzE;AAgBD,wEAAwE;AACxE,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAsBrF"}
|
package/dist/cli/index.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// src/cli/index.ts
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
import * as path2 from "node:path";
|
|
2
6
|
// package.json
|
|
3
|
-
var version = "1.12.
|
|
7
|
+
var version = "1.12.9-beta.4";
|
|
4
8
|
|
|
5
9
|
// src/cli/config-io.ts
|
|
6
10
|
import * as fs from "node:fs";
|
|
@@ -98,7 +102,6 @@ function registerCoHubAgents() {
|
|
|
98
102
|
delete config.agent;
|
|
99
103
|
}
|
|
100
104
|
}
|
|
101
|
-
const hubConfig = loadHubConfig();
|
|
102
105
|
const TEMPLATE_AGENTS = [
|
|
103
106
|
{ name: "co-orchestrator", mode: "primary", description: "纯调度者——编排任务、委派执行" },
|
|
104
107
|
{ name: "co-oracle", mode: "subagent", description: "战略顾问——架构审查、复杂调试" },
|
|
@@ -117,16 +120,12 @@ function registerCoHubAgents() {
|
|
|
117
120
|
const agentTarget = config.agent;
|
|
118
121
|
for (const tpl of TEMPLATE_AGENTS) {
|
|
119
122
|
const existing = agentTarget[tpl.name];
|
|
120
|
-
const hubOverride = hubConfig[tpl.name];
|
|
121
|
-
const base = { mode: tpl.mode, description: tpl.description };
|
|
122
|
-
if (hubOverride?.model)
|
|
123
|
-
base.model = hubOverride.model;
|
|
124
|
-
if (hubOverride?.variant)
|
|
125
|
-
base.variant = hubOverride.variant;
|
|
126
123
|
if (existing) {
|
|
127
|
-
|
|
124
|
+
existing.mode = tpl.mode;
|
|
125
|
+
if (!existing.description)
|
|
126
|
+
existing.description = tpl.description;
|
|
128
127
|
} else {
|
|
129
|
-
agentTarget[tpl.name] =
|
|
128
|
+
agentTarget[tpl.name] = { mode: tpl.mode, description: tpl.description };
|
|
130
129
|
}
|
|
131
130
|
}
|
|
132
131
|
needUpdate = true;
|
|
@@ -146,17 +145,6 @@ function registerCoHubAgents() {
|
|
|
146
145
|
return { success: true, message: `✓ ${msgParts.join(",")}` };
|
|
147
146
|
}
|
|
148
147
|
var COHUB_CONFIG_PATH = path.join(os.homedir(), ".config", "opencode", "oh-my-opencode-cohub.json");
|
|
149
|
-
function loadHubConfig() {
|
|
150
|
-
try {
|
|
151
|
-
if (!fs.existsSync(COHUB_CONFIG_PATH))
|
|
152
|
-
return {};
|
|
153
|
-
const raw = fs.readFileSync(COHUB_CONFIG_PATH, "utf-8");
|
|
154
|
-
const data = JSON.parse(raw);
|
|
155
|
-
return data.agents ?? {};
|
|
156
|
-
} catch {
|
|
157
|
-
return {};
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
148
|
var HEAVY_KEYWORDS = ["pro", "preview", "opus", "max", "sonnet", "gpt-5.6"];
|
|
161
149
|
var LIGHT_KEYWORDS = ["flash", "mini", "haiku", "gpt-5.4", "gpt-5.3"];
|
|
162
150
|
var DESIGN_KEYWORDS = ["minimax", "m3", "sonnet", "claude"];
|
|
@@ -415,14 +403,48 @@ function uninstallCoHub() {
|
|
|
415
403
|
messages.push("✅ CoHub 卸载完成。完全关闭 OpenCode 后重新打开即可。");
|
|
416
404
|
return { success: true, messages };
|
|
417
405
|
}
|
|
406
|
+
function copyRecursive(src, dest) {
|
|
407
|
+
fs.mkdirSync(dest, { recursive: true });
|
|
408
|
+
for (const entry of fs.readdirSync(src)) {
|
|
409
|
+
const srcPath = path.join(src, entry);
|
|
410
|
+
const destPath = path.join(dest, entry);
|
|
411
|
+
if (fs.statSync(srcPath).isDirectory()) {
|
|
412
|
+
copyRecursive(srcPath, destPath);
|
|
413
|
+
} else {
|
|
414
|
+
fs.copyFileSync(srcPath, destPath);
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
function copyPluginFiles(cliDir) {
|
|
419
|
+
try {
|
|
420
|
+
const distDir = path.resolve(cliDir, "..");
|
|
421
|
+
const pluginDir = path.join(os.homedir(), ".config", "opencode", "plugins", PACKAGE_NAME);
|
|
422
|
+
const targetDir = path.join(pluginDir, "dist");
|
|
423
|
+
if (fs.existsSync(targetDir)) {
|
|
424
|
+
fs.rmSync(targetDir, { recursive: true, force: true });
|
|
425
|
+
}
|
|
426
|
+
copyRecursive(distDir, targetDir);
|
|
427
|
+
const pkgSrc = path.resolve(distDir, "..", "package.json");
|
|
428
|
+
const pkgDest = path.join(pluginDir, "package.json");
|
|
429
|
+
if (fs.existsSync(pkgSrc)) {
|
|
430
|
+
fs.copyFileSync(pkgSrc, pkgDest);
|
|
431
|
+
}
|
|
432
|
+
return { success: true, message: `✓ 已复制 dist 文件到 ${targetDir}` };
|
|
433
|
+
} catch (e) {
|
|
434
|
+
return { success: false, message: `⚠ 复制 dist 失败: ${e.message}` };
|
|
435
|
+
}
|
|
436
|
+
}
|
|
418
437
|
|
|
419
438
|
// src/cli/index.ts
|
|
439
|
+
var __dirname2 = path2.dirname(fileURLToPath(import.meta.url));
|
|
420
440
|
async function main() {
|
|
421
441
|
const args = process.argv.slice(2);
|
|
422
442
|
const command = args[0];
|
|
423
443
|
if (command === "install") {
|
|
424
444
|
console.log(`\uD83D\uDE80 oh-my-opencode-cohub v${version} 安装中...
|
|
425
445
|
`);
|
|
446
|
+
const r0 = copyPluginFiles(__dirname2);
|
|
447
|
+
console.log(r0.message);
|
|
426
448
|
const r1 = addPluginToOpenCodeConfig();
|
|
427
449
|
console.log(r1.message);
|
|
428
450
|
const r2 = addPluginToTuiConfig();
|
package/dist/config/loader.d.ts
CHANGED
|
@@ -27,7 +27,7 @@ export interface CoHubConfig {
|
|
|
27
27
|
council?: CouncilConfig;
|
|
28
28
|
context?: Partial<ContextConfig>;
|
|
29
29
|
}
|
|
30
|
-
/**
|
|
31
|
-
export declare function loadCoHubConfig(): CoHubConfig;
|
|
30
|
+
/** 加载用户配置(项目级优先覆盖用户级) */
|
|
31
|
+
export declare function loadCoHubConfig(projectDir?: string): CoHubConfig;
|
|
32
32
|
export { DEFAULT_CONTEXT_CONFIG };
|
|
33
33
|
//# sourceMappingURL=loader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,uBAAuB;AACvB,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,CAAC,cAAc,EAAE,MAAM,GAAG,gBAAgB,CAAC;CAC5C;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yBAAyB,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC;IAClD,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,oBAAoB;AACpB,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACvC,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;CAClC;AAKD,
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,uBAAuB;AACvB,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,CAAC,cAAc,EAAE,MAAM,GAAG,gBAAgB,CAAC;CAC5C;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yBAAyB,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC;IAClD,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,oBAAoB;AACpB,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACvC,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;CAClC;AAKD,yBAAyB;AACzB,wBAAgB,eAAe,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,WAAW,CAoBhE;AAYD,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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,MAkiBlB,CAAC;AAEF,eAAO,MAAM,MAAM,QAAc,CAAC;AAClC,eAAe,WAAW,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// src/prompts/orchestrator.ts
|
|
2
2
|
var ORCHESTRATOR_PROMPT = `<角色>
|
|
3
|
-
你是纯调度者(Orchestrator
|
|
3
|
+
你是纯调度者(Orchestrator)。唯一职责:分析需求 → 委派信息收集 → 委派 @co-planner 制定方案 → 审核 → 调度执行 → 委派验证。**绝不亲自使用任何文件/代码操作工具**(read、grep、glob、bash、edit、write 等)。可使用的工具是调度工具(task、todowrite)。
|
|
4
4
|
</角色>
|
|
5
5
|
|
|
6
6
|
<子代理>
|
|
@@ -58,7 +58,7 @@ orchestrator 委派时可参考上述原则。不确定时,co-oracle 自身会
|
|
|
58
58
|
<rule priority="1" name="先方案后执行">
|
|
59
59
|
### 规则 1:理解需求后必须先输出方案
|
|
60
60
|
|
|
61
|
-
**⚠️ 长会话警告:这是最容易被遗忘的规则。无论会话多长、已经执行了多少步、之前分析过什么,每次收到新需求时,必须重新从头执行:分析需求 → 委派 @co-planner 制定方案 → 审核 → todowrite → 提供选项供用户选择 → 委派执行。禁止"前面分析过了这次直接改"、"改着改着就忘了"。**
|
|
61
|
+
**⚠️ 长会话警告:这是最容易被遗忘的规则。无论会话多长、已经执行了多少步、之前分析过什么,每次收到新需求时,必须重新从头执行:分析需求 → 委派信息收集 → 委派 @co-planner 制定方案 → 审核 → todowrite → 提供选项供用户选择 → 委派执行。禁止"前面分析过了这次直接改"、"改着改着就忘了"。**
|
|
62
62
|
|
|
63
63
|
收到需求后(涉及代码或文件修改时),**禁止立即执行**。必须先分析需求,委派 @co-planner 制定方案,orchestrator 审核后输出可验证的任务分解方案,**末尾提供选项(如"立即执行 / 修改方案")供用户决定**。方案包含:
|
|
64
64
|
(纯信息性问题可直接回答,无需方案。)
|
|
@@ -1136,12 +1136,32 @@ class ContextEngine {
|
|
|
1136
1136
|
import * as fs from "node:fs";
|
|
1137
1137
|
import * as path from "node:path";
|
|
1138
1138
|
import * as os from "node:os";
|
|
1139
|
-
var
|
|
1140
|
-
function loadCoHubConfig() {
|
|
1139
|
+
var USER_CONFIG_PATH = path.join(os.homedir(), ".config", "opencode", "oh-my-opencode-cohub.json");
|
|
1140
|
+
function loadCoHubConfig(projectDir) {
|
|
1141
|
+
const base = readJSON(USER_CONFIG_PATH);
|
|
1142
|
+
if (!projectDir)
|
|
1143
|
+
return base;
|
|
1144
|
+
const projectPath = path.join(projectDir, ".opencode", "oh-my-opencode-cohub.json");
|
|
1145
|
+
const project = readJSON(projectPath);
|
|
1146
|
+
if (!project || Object.keys(project).length === 0)
|
|
1147
|
+
return base;
|
|
1148
|
+
const merged = { ...base };
|
|
1149
|
+
if (project.agents) {
|
|
1150
|
+
merged.agents = { ...base.agents, ...project.agents };
|
|
1151
|
+
}
|
|
1152
|
+
if (project.council) {
|
|
1153
|
+
merged.council = project.council;
|
|
1154
|
+
}
|
|
1155
|
+
if (project.context) {
|
|
1156
|
+
merged.context = { ...base.context, ...project.context };
|
|
1157
|
+
}
|
|
1158
|
+
return merged;
|
|
1159
|
+
}
|
|
1160
|
+
function readJSON(filePath) {
|
|
1141
1161
|
try {
|
|
1142
|
-
if (!fs.existsSync(
|
|
1162
|
+
if (!fs.existsSync(filePath))
|
|
1143
1163
|
return {};
|
|
1144
|
-
const raw = fs.readFileSync(
|
|
1164
|
+
const raw = fs.readFileSync(filePath, "utf-8");
|
|
1145
1165
|
return JSON.parse(raw);
|
|
1146
1166
|
} catch {
|
|
1147
1167
|
return {};
|
|
@@ -1661,6 +1681,7 @@ var CoHubPlugin = async (input, options) => {
|
|
|
1661
1681
|
};
|
|
1662
1682
|
});
|
|
1663
1683
|
fs3.writeFileSync(AGENT_CONFIG_FILE, JSON.stringify({ updatedAt: Date.now(), agents: configs }), "utf-8");
|
|
1684
|
+
appendLog("syncAgentConfig", `已同步 ${configs.length} 个 agent: ${JSON.stringify(configs.map((c) => ({ name: c.name, model: c.model, variant: c.variant })))}`);
|
|
1664
1685
|
} catch {}
|
|
1665
1686
|
}
|
|
1666
1687
|
const agents = [
|
|
@@ -1725,7 +1746,7 @@ var CoHubPlugin = async (input, options) => {
|
|
|
1725
1746
|
config: { mode: "subagent", prompt: PLANNER_PROMPT }
|
|
1726
1747
|
}
|
|
1727
1748
|
];
|
|
1728
|
-
const userConfig = loadCoHubConfig();
|
|
1749
|
+
const userConfig = loadCoHubConfig(projectDir);
|
|
1729
1750
|
if (userConfig.agents) {
|
|
1730
1751
|
for (const agent of agents) {
|
|
1731
1752
|
const override = userConfig.agents[agent.name];
|
|
@@ -1746,13 +1767,12 @@ var CoHubPlugin = async (input, options) => {
|
|
|
1746
1767
|
agent.config.prompt = resolvePrompt(agent.config.prompt, override.replace, override.append);
|
|
1747
1768
|
}
|
|
1748
1769
|
}
|
|
1749
|
-
const
|
|
1750
|
-
const criticalRulesMatch = orchestratorAgent?.config.prompt?.match(/<critical_rules>([\s\S]*?)<\/critical_rules>/);
|
|
1751
|
-
const coreRulesInjectionText = criticalRulesMatch ? `
|
|
1770
|
+
const coreRulesInjectionText = ORCHESTRATOR_PROMPT ? `
|
|
1752
1771
|
|
|
1753
1772
|
--- 核心规则提醒(本轮注入,不持久化) ---
|
|
1754
|
-
|
|
1773
|
+
${ORCHESTRATOR_PROMPT}
|
|
1755
1774
|
--- 注入结束 ---` : null;
|
|
1775
|
+
appendLog("critical_rules", coreRulesInjectionText ? `已注入完整提示词: 长度=${ORCHESTRATOR_PROMPT.length}` : "⚠️ ORCHESTRATOR_PROMPT 为空,注入跳过");
|
|
1756
1776
|
const DEFAULT_COUNCIL_CONFIG = {
|
|
1757
1777
|
default_preset: "default",
|
|
1758
1778
|
timeout: 180000,
|
|
@@ -1849,6 +1869,17 @@ var CoHubPlugin = async (input, options) => {
|
|
|
1849
1869
|
} catch (err) {
|
|
1850
1870
|
appendLog("config", "双重注册写入文件失败", err);
|
|
1851
1871
|
}
|
|
1872
|
+
appendLog("config.hook", `config hook 注入完成: ${JSON.stringify(Object.entries(agentConfigs).map(([name, cfg2]) => {
|
|
1873
|
+
const c2 = cfg2;
|
|
1874
|
+
const prompt = typeof c2.prompt === "string" ? c2.prompt : "";
|
|
1875
|
+
return {
|
|
1876
|
+
name,
|
|
1877
|
+
promptLen: prompt.length,
|
|
1878
|
+
promptPreview: prompt.slice(0, 120),
|
|
1879
|
+
hasModel: !!c2.model,
|
|
1880
|
+
hasVariant: !!c2.variant
|
|
1881
|
+
};
|
|
1882
|
+
}))}`);
|
|
1852
1883
|
},
|
|
1853
1884
|
"tool.execute.before": async (input2, output) => {
|
|
1854
1885
|
try {
|
|
@@ -2015,6 +2046,9 @@ var CoHubPlugin = async (input, options) => {
|
|
|
2015
2046
|
break;
|
|
2016
2047
|
}
|
|
2017
2048
|
}
|
|
2049
|
+
appendLog("messages.transform", `已注入 orchestrator 完整提示词: 长度=${coreRulesInjectionText.length}, 内容预览=${coreRulesInjectionText.slice(0, 200)}`);
|
|
2050
|
+
} else {
|
|
2051
|
+
appendLog("messages.transform", "⚠️ orchestrator 提示词为空,注入跳过");
|
|
2018
2052
|
}
|
|
2019
2053
|
{
|
|
2020
2054
|
let userContent = "";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const ORCHESTRATOR_PROMPT = "<\u89D2\u8272>\n\u4F60\u662F\u7EAF\u8C03\u5EA6\u8005\uFF08Orchestrator\uFF09\u3002\u552F\u4E00\u804C\u8D23\uFF1A\u7406\u89E3\u9700\u6C42 \u2192 \u59D4\u6D3E\u4FE1\u606F\u6536\u96C6 \u2192 \u59D4\u6D3E\u65B9\u6848\u5236\u5B9A \u2192 \u5BA1\u6838\u65B9\u6848 \u2192 \u8C03\u5EA6\u6267\u884C \u2192 \u59D4\u6D3E\u9A8C\u8BC1\u3002**\u7EDD\u4E0D\u4EB2\u81EA\u4F7F\u7528\u4EFB\u4F55\u6587\u4EF6/\u4EE3\u7801\u64CD\u4F5C\u5DE5\u5177**\uFF08read\u3001grep\u3001glob\u3001bash\u3001edit\u3001write \u7B49\uFF09\u3002\u53EF\u4F7F\u7528\u7684\u5DE5\u5177\u662F\u8C03\u5EA6\u5DE5\u5177\uFF08task\u3001todowrite\uFF09\u3002\n</\u89D2\u8272>\n\n<\u5B50\u4EE3\u7406>\n\n@co-explorer - \u53EA\u8BFB\u3002Grep/Glob/AST \u641C\u7D22\u5B9A\u4F4D\u3002\u59D4\u6D3E\uFF1A\u53D1\u73B0\u4EE3\u7801\u5E93\u5185\u5BB9\u65F6\u3002\n@co-librarian - \u53EA\u8BFB+Web\u3002\u5B98\u65B9\u6587\u6863/API/GitHub \u7814\u7A76\u3002\u59D4\u6D3E\uFF1A\u4E0D\u719F\u6089\u7684\u5E93/\u8FB9\u7F18\u60C5\u51B5\u3002\n@co-oracle - \u53EA\u8BFB\u3002\u67B6\u6784\u51B3\u7B56/\u4EE3\u7801\u5BA1\u67E5/YAGNI \u7B80\u5316/\u590D\u6742\u8C03\u8BD5\u3002\u59D4\u6D3E\uFF1A\u9AD8\u98CE\u9669\u51B3\u7B56/\u53CD\u590D bug/\u5B89\u5168\u5BA1\u67E5\u3002\n@co-designer - \u8BFB\u5199\u3002UI/UX \u8BBE\u8BA1/\u89C6\u89C9\u6DA6\u8272/\u54CD\u5E94\u5F0F\u5E03\u5C40\u3002\u59D4\u6D3E\uFF1A\u9700\u8981\u6DA6\u8272\u7684\u754C\u9762/UX \u7EC4\u4EF6\u3002\n@co-fixer - \u8BFB\u5199+Bash\u3002\u4EE3\u7801\u4FEE\u6539\u6267\u884C(\u65E0\u8BBA\u591A\u5C0F)\u3002\u59D4\u6D3E\uFF1A\u6240\u6709\u6587\u4EF6\u7F16\u8F91/\u5199\u5165/\u5220\u9664\u3002\n@co-observer - \u53EA\u8BFB\u3002\u56FE\u7247/PDF/\u622A\u56FE\u89C6\u89C9\u5206\u6790\u3002\u59D4\u6D3E\uFF1A\u591A\u5A92\u4F53\u6587\u4EF6\u5206\u6790\u65F6(\u542B\u5B8C\u6574\u8DEF\u5F84)\u3002\n@co-council - \u53EA\u8BFB\u3002\u591A\u6A21\u578B\u5E76\u884C\u5171\u8BC6\u3002\u59D4\u6D3E\uFF1A\u591A\u4E13\u5BB6\u89C6\u89D2/\u4E0D\u53EF\u9006\u51B3\u7B56\uFF08\u6570\u636E\u8FC1\u79FB/API \u53D8\u66F4\uFF09\u3002\u9519\u4E86\u8FD8\u80FD\u6539\u2192@co-oracle\uFF0C\u9519\u4E86\u5C31\u5B8C\u4E86\u2192@co-council\u3002\n@co-rule-user - \u53EA\u8BFB\u3002\u5206\u6790\u7528\u6237\u7EA7 AGENTS.md(~/.config/opencode/AGENTS.md)\u7EA6\u675F\u3002\u59D4\u6D3E\uFF1A\u65B9\u6848\u9700\u5BF9\u7167\u7528\u6237\u89C4\u5219\u65F6\u3002\n@co-rule-project - \u53EA\u8BFB\u3002\u5206\u6790\u9879\u76EE AGENTS.md \u7EA6\u675F\u3002\u59D4\u6D3E\uFF1A\u65B9\u6848\u9700\u5BF9\u7167\u9879\u76EE\u89C4\u5219\u65F6\u3002\n@co-rule-app - \u53EA\u8BFB\u3002\u5206\u6790 .opencode/rules/*.md \u5E94\u7528\u89C4\u5219\u3002**\u5E76\u884C\u7B56\u7565**\uFF1A\u5F53 rules \u76EE\u5F55\u4E0B\u6709 N \u4E2A\u6587\u4EF6\u65F6\uFF0C\u5E76\u884C\u542F\u52A8 N/2\uFF08\u5411\u4E0A\u53D6\u6574\uFF09\u4E2A @co-rule-app \u5B9E\u4F8B\uFF0C\u6BCF\u4E2A\u5B9E\u4F8B\u8D1F\u8D23 1-2 \u4E2A\u89C4\u5219\u6587\u4EF6\uFF08\u5728 prompt \u4E2D\u660E\u786E\u6307\u5B9A\u6587\u4EF6\u5217\u8868\uFF09\u3002\u6240\u6709\u5B9E\u4F8B\u5B8C\u6210\u540E\uFF0COrchestrator \u6C47\u603B\u5EFA\u8BAE\u3002\u59D4\u6D3E\uFF1A\u65B9\u6848\u9700\u5BF9\u7167\u5B89\u5168/\u6D4B\u8BD5/\u6570\u636E\u5E93\u7B49\u5E94\u7528\u89C4\u5219\u65F6\u3002\n@co-planner - \u53EA\u8BFB\u3002\u7EFC\u5408\u9700\u6C42+\u4FE1\u606F+\u89C4\u8303\uFF0C\u8F93\u51FA\u7ED3\u6784\u5316\u4EFB\u52A1\u5206\u89E3\u65B9\u6848\u3002\u59D4\u6D3E\uFF1A\u4FE1\u606F\u6536\u96C6\u548C\u89C4\u8303\u5206\u6790\u5B8C\u6210\u540E\u3002\n\n</\u5B50\u4EE3\u7406>\n\n### @council vs @oracle \u9009\u62E9\u6307\u5357\n\n**\u4E00\u53E5\u8BDD\u5224\u65AD**\uFF1A`@co-oracle` = \u6DF1\u5EA6\u63A8\u7406\uFF08\u5FEB\u3001\u4FBF\u5B9C\u3001\u53EF\u9006\u5224\u65AD\uFF09\uFF0C`@co-council` = \u591A\u6A21\u578B\u80CC\u4E66\u5171\u8BC6\uFF08\u6162\u3001\u8D35\u3001\u4E0D\u53EF\u9006\u51B3\u7B56\uFF09\u3002\n\norchestrator \u59D4\u6D3E\u65F6\u53EF\u53C2\u8003\u4E0A\u8FF0\u539F\u5219\u3002\u4E0D\u786E\u5B9A\u65F6\uFF0Cco-oracle \u81EA\u8EAB\u4F1A\u5728\u5BA1\u67E5\u65F6\u5224\u65AD\u662F\u5426\u9700\u8981\u5347\u7EA7\u5230 council\u3002\n\n<\u5DE5\u4F5C\u6D41>\n\n## 1. \u7406\u89E3\u9700\u6C42\n\u7EAF\u77E5\u8BC6\u95EE\u7B54\u76F4\u63A5\u56DE\uFF0C\u4EE3\u7801\u9700\u6C42\u7EE7\u7EED\u3002\n\n## 2. \u4FE1\u606F\u6536\u96C6\uFF08\u59D4\u6D3E\u5B50\u4EE3\u7406\uFF09\n@co-explorer \u641C\u7D22\u5B9A\u4F4D \u2192 @co-librarian \u5916\u90E8\u7814\u7A76 \u2192 @co-observer \u591A\u5A92\u4F53\u3002\u5E76\u884C\u542F\u52A8\uFF0C\u4E0D\u52A8\u624B\u3002\u6536\u96C6\u5B8C\u6210\u540E\u6C47\u603B\u5404\u5B50\u4EE3\u7406\u7ED3\u679C \u2192 \u8FDB\u5165\u6B65\u9AA43 \u59D4\u6D3E @co-planner \u5236\u5B9A\u65B9\u6848\u3002\n\n**\u89C4\u5219\u5206\u6790\u5E76\u884C\u7B56\u7565**\uFF1A\u9700\u8981\u5BF9\u7167 `.opencode/rules/*.md` \u65F6\uFF0C\u4E0D\u8981\u53EA\u6D3E\u53D1\u4E00\u4E2A @co-rule-app\u3002\u7B56\u7565\u5982\u4E0B\uFF1A\n1. \u5148\u7528 `glob`\uFF08\u59D4\u6D3E @co-explorer\uFF09\u5217\u51FA `.opencode/rules/` \u4E0B\u7684\u6240\u6709 .md \u6587\u4EF6\n2. \u6309\u6BCF 1-2 \u4E2A\u6587\u4EF6\u5206\u4E00\u7EC4\uFF0C\u5E76\u884C\u6D3E\u53D1\u591A\u4E2A @co-rule-app \u5B9E\u4F8B\n3. \u6BCF\u4E2A\u5B9E\u4F8B\u7684 prompt \u4E2D\u660E\u786E\u6307\u5B9A\u5B83\u8D1F\u8D23\u7684\u89C4\u5219\u6587\u4EF6\u5217\u8868\uFF08\u5982 `\u8BF7\u5206\u6790 rules/A.md \u548C rules/B.md`\uFF09\n4. \u6240\u6709\u5B9E\u4F8B\u5B8C\u6210\u540E\uFF0C\u7531 Orchestrator \u6C47\u603B\u5404\u5B9E\u4F8B\u8FD4\u56DE\u7684\u5EFA\u8BAE\uFF0C\u4F5C\u4E3A @co-planner \u7684\u8F93\u5165\u4E4B\u4E00\u3002\n\n## 3. \u5236\u5B9A\u65B9\u6848\uFF08\u59D4\u6D3E @co-planner\uFF09\n\u5C06\u4FE1\u606F\u6536\u96C6\u7ED3\u679C\uFF08\u4EE3\u7801\u5E93\u7ED3\u6784\u3001API\u6587\u6863\u3001\u89C4\u8303\u5206\u6790\u7B49\uFF09\u6C47\u603B\u540E\u59D4\u6D3E\u7ED9 @co-planner \u5236\u5B9A\u7ED3\u6784\u5316\u65B9\u6848\u3002\u6536\u5230 @co-planner \u7684\u65B9\u6848\u540E\uFF0Corchestrator \u5BA1\u6838\uFF08\u68C0\u67E5\u9700\u6C42\u8986\u76D6\u5EA6\u3001\u59D4\u6D3E\u5BF9\u8C61\u5408\u7406\u6027\u3001\u5E76\u884C\u7B56\u7565\u53EF\u884C\u6027\uFF09\uFF0C\u8865\u5145\u4FEE\u6B63\u540E\uFF0C\u7528 `todowrite` \u521B\u5EFA\u6B63\u5F0F\u4EFB\u52A1\u5217\u8868\u3002**\u65B9\u6848\u672B\u5C3E\u5FC5\u987B\u63D0\u4F9B\u9009\u9879\u4F9B\u7528\u6237\u9009\u62E9**\uFF08\u5982\uFF1AA. \u7ACB\u5373\u6267\u884C / B. \u4FEE\u6539\u65B9\u6848 / C. \u53D6\u6D88\uFF09\uFF0C\u7B49\u5F85\u7528\u6237\u56DE\u590D\u540E\u518D\u8FDB\u5165\u8C03\u5EA6\u6267\u884C\u3002\n\n## 4. \u8C03\u5EA6\u6267\u884C\n\u6E05\u6670\u6587\u4EF6\u8303\u56F4+\u80CC\u666F\u542F\u52A8+\u8FFD\u8E2A\u4E0D\u91CD\u590D+\u534F\u8C03\u51B2\u7A81\u3002\u59D4\u6D3E\u6307\u4EE4\u7528\u4E2D\u6587\u3002\n\n## 5. \u9A8C\u8BC1\uFF08\u5168\u90E8\u59D4\u6D3E\uFF09\n@co-fixer \u7F16\u8BD1\u6D4B\u8BD5 \u2192 @co-oracle \u4EE3\u7801\u5BA1\u67E5 \u2192 @co-designer UI\u5BA1\u67E5\u3002\u53D1\u73B0\u95EE\u9898\u91CD\u65B0\u59D4\u6D3E\u3002\n**\u6548\u7387\u539F\u5219**\uFF1A\u591A\u6587\u4EF6\u4FEE\u6539\u5168\u90E8\u5B8C\u6210\u540E\u4E00\u6B21\u6027\u7F16\u8BD1\u9A8C\u8BC1\uFF0C\u4E0D\u8981\u6BCF\u6539\u4E00\u4E2A\u6587\u4EF6\u5C31\u8DD1\u4E00\u6B21\u3002\n\n</\u5DE5\u4F5C\u6D41>\n\n<critical_rules>\n\n## \u786C\u6027\u89C4\u5219\u2014\u2014\u4E0D\u53EF\u8FDD\u53CD\n\n<rule priority=\"1\" name=\"\u5148\u65B9\u6848\u540E\u6267\u884C\">\n### \u89C4\u5219 1\uFF1A\u7406\u89E3\u9700\u6C42\u540E\u5FC5\u987B\u5148\u8F93\u51FA\u65B9\u6848\n\n**\u26A0\uFE0F \u957F\u4F1A\u8BDD\u8B66\u544A\uFF1A\u8FD9\u662F\u6700\u5BB9\u6613\u88AB\u9057\u5FD8\u7684\u89C4\u5219\u3002\u65E0\u8BBA\u4F1A\u8BDD\u591A\u957F\u3001\u5DF2\u7ECF\u6267\u884C\u4E86\u591A\u5C11\u6B65\u3001\u4E4B\u524D\u5206\u6790\u8FC7\u4EC0\u4E48\uFF0C\u6BCF\u6B21\u6536\u5230\u65B0\u9700\u6C42\u65F6\uFF0C\u5FC5\u987B\u91CD\u65B0\u4ECE\u5934\u6267\u884C\uFF1A\u5206\u6790\u9700\u6C42 \u2192 \u59D4\u6D3E @co-planner \u5236\u5B9A\u65B9\u6848 \u2192 \u5BA1\u6838 \u2192 todowrite \u2192 \u63D0\u4F9B\u9009\u9879\u4F9B\u7528\u6237\u9009\u62E9 \u2192 \u59D4\u6D3E\u6267\u884C\u3002\u7981\u6B62\"\u524D\u9762\u5206\u6790\u8FC7\u4E86\u8FD9\u6B21\u76F4\u63A5\u6539\"\u3001\"\u6539\u7740\u6539\u7740\u5C31\u5FD8\u4E86\"\u3002**\n\n\u6536\u5230\u9700\u6C42\u540E\uFF08\u6D89\u53CA\u4EE3\u7801\u6216\u6587\u4EF6\u4FEE\u6539\u65F6\uFF09\uFF0C**\u7981\u6B62\u7ACB\u5373\u6267\u884C**\u3002\u5FC5\u987B\u5148\u5206\u6790\u9700\u6C42\uFF0C\u59D4\u6D3E @co-planner \u5236\u5B9A\u65B9\u6848\uFF0Corchestrator \u5BA1\u6838\u540E\u8F93\u51FA\u53EF\u9A8C\u8BC1\u7684\u4EFB\u52A1\u5206\u89E3\u65B9\u6848\uFF0C**\u672B\u5C3E\u63D0\u4F9B\u9009\u9879\uFF08\u5982\"\u7ACB\u5373\u6267\u884C / \u4FEE\u6539\u65B9\u6848\"\uFF09\u4F9B\u7528\u6237\u51B3\u5B9A**\u3002\u65B9\u6848\u5305\u542B\uFF1A\n\uFF08\u7EAF\u4FE1\u606F\u6027\u95EE\u9898\u53EF\u76F4\u63A5\u56DE\u7B54\uFF0C\u65E0\u9700\u65B9\u6848\u3002\uFF09\n- \u5B50\u4EFB\u52A1\u5217\u8868\u53CA\u5176\u4F9D\u8D56\u5173\u7CFB\n- \u6BCF\u4E2A\u5B50\u4EFB\u52A1\u7684\u59D4\u6D3E\u5BF9\u8C61\uFF08@co-explorer / @co-librarian / @co-fixer / @co-designer / @co-oracle / @co-observer\uFF09\n- \u5E76\u884C\u5316\u7B56\u7565\uFF08\u54EA\u4E9B\u4EFB\u52A1\u53EF\u540C\u65F6\u6267\u884C\uFF09\n- \u9A8C\u8BC1\u6B65\u9AA4\n\n\u65B9\u6848\u8981\u5177\u4F53\u5230\u6587\u4EF6\u548C\u64CD\u4F5C\u7C92\u5EA6\u3002\u7528 `todowrite` \u521B\u5EFA\u4EFB\u52A1\u5217\u8868\u3002\n</rule>\n\n<rule priority=\"2\" name=\"\u5FC5\u987B\u59D4\u6D3E\">\n### \u89C4\u5219 2\uFF1A\u6240\u6709\u5DE5\u5177\u64CD\u4F5C\u5FC5\u987B\u59D4\u6D3E\u2014\u2014\u65E0\u4F8B\u5916\n\n**Orchestrator \u7981\u6B62\u4F7F\u7528\u4EFB\u4F55\u6587\u4EF6/\u4EE3\u7801\u64CD\u4F5C\u5DE5\u5177**\uFF08read\u3001grep\u3001glob\u3001ast_grep_search\u3001bash\u3001edit\u3001write \u7B49\uFF09\uFF0C**\u4EC5\u5141\u8BB8\u4F7F\u7528\u8C03\u5EA6\u5DE5\u5177**\uFF08task\u3001todowrite\uFF09\u3002\n- \u8BFB\u53D6\u6587\u4EF6\u3001\u641C\u7D22\u4EE3\u7801\u3001\u67E5\u770B git diff \u2192 \u59D4\u6D3E @co-explorer\n- \u4EE3\u7801\u7F16\u8F91\u3001\u5199\u5165\u3001\u5220\u9664\uFF08\u65E0\u8BBA\u591A\u5C0F\uFF09 \u2192 \u59D4\u6D3E @co-fixer\n- UI/UX \u76F8\u5173\u7F16\u8F91 \u2192 \u59D4\u6D3E @co-designer\n- \u8FD0\u884C\u6784\u5EFA\u3001\u6D4B\u8BD5\u3001lint \u7B49\u547D\u4EE4 \u2192 \u59D4\u6D3E @co-fixer/@co-explorer\n- \u4EE3\u7801\u5BA1\u67E5\u3001\u67B6\u6784\u5206\u6790\u3001\u6587\u6848\u5BA1\u67E5 \u2192 \u59D4\u6D3E @co-oracle\n- **\u4E0D\u8981\u62FF\"\u59D4\u6D3E\u5F00\u9500\u5927\"\"\u5C31\u4E00\u884C\u4EE3\u7801\"\u5F53\u501F\u53E3\u81EA\u5DF1\u64CD\u4F5C\u3002**\n</rule>\n\n<rule priority=\"3\" name=\"\u5E76\u884C\u4F18\u5148\">\n### \u89C4\u5219 3\uFF1A\u5E76\u884C\u4F18\u5148\n\u5206\u6790\u4EFB\u52A1\u4F9D\u8D56\u540E\uFF0C\u6700\u5927\u7A0B\u5EA6\u5E76\u884C\u5316\u2014\u2014\u72EC\u7ACB\u4EFB\u52A1\u540C\u65F6\u542F\u52A8\u3002\n</rule>\n\n</critical_rules>\n\n<\u81EA\u68C0\u6E05\u5355>\n**\u6BCF\u6B21\u56DE\u590D\u7528\u6237\u6216\u8C03\u7528\u5DE5\u5177\u524D\uFF0C\u5FC5\u987B\u5728\u601D\u8003\u4E2D\u9010\u6761\u786E\u8BA4\uFF08\u8FD9\u662F\u786C\u6027\u8981\u6C42\uFF0C\u4E0D\u53EF\u8DF3\u8FC7\uFF09\uFF1A**\n\n\u25A1 **\u672C\u8F6E\u9700\u8981\u4FEE\u6539\u4EE3\u7801\u6216\u6587\u4EF6\u5417\uFF1F**\n \u2192 \u7EAF\u5206\u6790 / \u95EE\u7B54 / \u5BA1\u67E5 / \u63A2\u7D22\u4FE1\u606F \u2192 \u4E0D\u9700\u8981\u65B9\u6848\uFF0C\u76F4\u63A5\u5904\u7406\n \u2192 \u9700\u8981\u4FEE\u6539\u4EE3\u7801\u6216\u6587\u4EF6 \u2192 **\u5FC5\u987B\u5148\u8F93\u51FA\u65B9\u6848 \u2192 \u63D0\u4F9B\u9009\u9879 \u2192 \u7B49\u7528\u6237\u9009\u62E9\u540E\u624D\u53EF\u59D4\u6D3E\u6267\u884C**\n\n</\u81EA\u68C0\u6E05\u5355>\n";
|
|
1
|
+
export declare const ORCHESTRATOR_PROMPT = "<\u89D2\u8272>\n\u4F60\u662F\u7EAF\u8C03\u5EA6\u8005\uFF08Orchestrator\uFF09\u3002\u552F\u4E00\u804C\u8D23\uFF1A\u5206\u6790\u9700\u6C42 \u2192 \u59D4\u6D3E\u4FE1\u606F\u6536\u96C6 \u2192 \u59D4\u6D3E @co-planner \u5236\u5B9A\u65B9\u6848 \u2192 \u5BA1\u6838 \u2192 \u8C03\u5EA6\u6267\u884C \u2192 \u59D4\u6D3E\u9A8C\u8BC1\u3002**\u7EDD\u4E0D\u4EB2\u81EA\u4F7F\u7528\u4EFB\u4F55\u6587\u4EF6/\u4EE3\u7801\u64CD\u4F5C\u5DE5\u5177**\uFF08read\u3001grep\u3001glob\u3001bash\u3001edit\u3001write \u7B49\uFF09\u3002\u53EF\u4F7F\u7528\u7684\u5DE5\u5177\u662F\u8C03\u5EA6\u5DE5\u5177\uFF08task\u3001todowrite\uFF09\u3002\n</\u89D2\u8272>\n\n<\u5B50\u4EE3\u7406>\n\n@co-explorer - \u53EA\u8BFB\u3002Grep/Glob/AST \u641C\u7D22\u5B9A\u4F4D\u3002\u59D4\u6D3E\uFF1A\u53D1\u73B0\u4EE3\u7801\u5E93\u5185\u5BB9\u65F6\u3002\n@co-librarian - \u53EA\u8BFB+Web\u3002\u5B98\u65B9\u6587\u6863/API/GitHub \u7814\u7A76\u3002\u59D4\u6D3E\uFF1A\u4E0D\u719F\u6089\u7684\u5E93/\u8FB9\u7F18\u60C5\u51B5\u3002\n@co-oracle - \u53EA\u8BFB\u3002\u67B6\u6784\u51B3\u7B56/\u4EE3\u7801\u5BA1\u67E5/YAGNI \u7B80\u5316/\u590D\u6742\u8C03\u8BD5\u3002\u59D4\u6D3E\uFF1A\u9AD8\u98CE\u9669\u51B3\u7B56/\u53CD\u590D bug/\u5B89\u5168\u5BA1\u67E5\u3002\n@co-designer - \u8BFB\u5199\u3002UI/UX \u8BBE\u8BA1/\u89C6\u89C9\u6DA6\u8272/\u54CD\u5E94\u5F0F\u5E03\u5C40\u3002\u59D4\u6D3E\uFF1A\u9700\u8981\u6DA6\u8272\u7684\u754C\u9762/UX \u7EC4\u4EF6\u3002\n@co-fixer - \u8BFB\u5199+Bash\u3002\u4EE3\u7801\u4FEE\u6539\u6267\u884C(\u65E0\u8BBA\u591A\u5C0F)\u3002\u59D4\u6D3E\uFF1A\u6240\u6709\u6587\u4EF6\u7F16\u8F91/\u5199\u5165/\u5220\u9664\u3002\n@co-observer - \u53EA\u8BFB\u3002\u56FE\u7247/PDF/\u622A\u56FE\u89C6\u89C9\u5206\u6790\u3002\u59D4\u6D3E\uFF1A\u591A\u5A92\u4F53\u6587\u4EF6\u5206\u6790\u65F6(\u542B\u5B8C\u6574\u8DEF\u5F84)\u3002\n@co-council - \u53EA\u8BFB\u3002\u591A\u6A21\u578B\u5E76\u884C\u5171\u8BC6\u3002\u59D4\u6D3E\uFF1A\u591A\u4E13\u5BB6\u89C6\u89D2/\u4E0D\u53EF\u9006\u51B3\u7B56\uFF08\u6570\u636E\u8FC1\u79FB/API \u53D8\u66F4\uFF09\u3002\u9519\u4E86\u8FD8\u80FD\u6539\u2192@co-oracle\uFF0C\u9519\u4E86\u5C31\u5B8C\u4E86\u2192@co-council\u3002\n@co-rule-user - \u53EA\u8BFB\u3002\u5206\u6790\u7528\u6237\u7EA7 AGENTS.md(~/.config/opencode/AGENTS.md)\u7EA6\u675F\u3002\u59D4\u6D3E\uFF1A\u65B9\u6848\u9700\u5BF9\u7167\u7528\u6237\u89C4\u5219\u65F6\u3002\n@co-rule-project - \u53EA\u8BFB\u3002\u5206\u6790\u9879\u76EE AGENTS.md \u7EA6\u675F\u3002\u59D4\u6D3E\uFF1A\u65B9\u6848\u9700\u5BF9\u7167\u9879\u76EE\u89C4\u5219\u65F6\u3002\n@co-rule-app - \u53EA\u8BFB\u3002\u5206\u6790 .opencode/rules/*.md \u5E94\u7528\u89C4\u5219\u3002**\u5E76\u884C\u7B56\u7565**\uFF1A\u5F53 rules \u76EE\u5F55\u4E0B\u6709 N \u4E2A\u6587\u4EF6\u65F6\uFF0C\u5E76\u884C\u542F\u52A8 N/2\uFF08\u5411\u4E0A\u53D6\u6574\uFF09\u4E2A @co-rule-app \u5B9E\u4F8B\uFF0C\u6BCF\u4E2A\u5B9E\u4F8B\u8D1F\u8D23 1-2 \u4E2A\u89C4\u5219\u6587\u4EF6\uFF08\u5728 prompt \u4E2D\u660E\u786E\u6307\u5B9A\u6587\u4EF6\u5217\u8868\uFF09\u3002\u6240\u6709\u5B9E\u4F8B\u5B8C\u6210\u540E\uFF0COrchestrator \u6C47\u603B\u5EFA\u8BAE\u3002\u59D4\u6D3E\uFF1A\u65B9\u6848\u9700\u5BF9\u7167\u5B89\u5168/\u6D4B\u8BD5/\u6570\u636E\u5E93\u7B49\u5E94\u7528\u89C4\u5219\u65F6\u3002\n@co-planner - \u53EA\u8BFB\u3002\u7EFC\u5408\u9700\u6C42+\u4FE1\u606F+\u89C4\u8303\uFF0C\u8F93\u51FA\u7ED3\u6784\u5316\u4EFB\u52A1\u5206\u89E3\u65B9\u6848\u3002\u59D4\u6D3E\uFF1A\u4FE1\u606F\u6536\u96C6\u548C\u89C4\u8303\u5206\u6790\u5B8C\u6210\u540E\u3002\n\n</\u5B50\u4EE3\u7406>\n\n### @council vs @oracle \u9009\u62E9\u6307\u5357\n\n**\u4E00\u53E5\u8BDD\u5224\u65AD**\uFF1A`@co-oracle` = \u6DF1\u5EA6\u63A8\u7406\uFF08\u5FEB\u3001\u4FBF\u5B9C\u3001\u53EF\u9006\u5224\u65AD\uFF09\uFF0C`@co-council` = \u591A\u6A21\u578B\u80CC\u4E66\u5171\u8BC6\uFF08\u6162\u3001\u8D35\u3001\u4E0D\u53EF\u9006\u51B3\u7B56\uFF09\u3002\n\norchestrator \u59D4\u6D3E\u65F6\u53EF\u53C2\u8003\u4E0A\u8FF0\u539F\u5219\u3002\u4E0D\u786E\u5B9A\u65F6\uFF0Cco-oracle \u81EA\u8EAB\u4F1A\u5728\u5BA1\u67E5\u65F6\u5224\u65AD\u662F\u5426\u9700\u8981\u5347\u7EA7\u5230 council\u3002\n\n<\u5DE5\u4F5C\u6D41>\n\n## 1. \u7406\u89E3\u9700\u6C42\n\u7EAF\u77E5\u8BC6\u95EE\u7B54\u76F4\u63A5\u56DE\uFF0C\u4EE3\u7801\u9700\u6C42\u7EE7\u7EED\u3002\n\n## 2. \u4FE1\u606F\u6536\u96C6\uFF08\u59D4\u6D3E\u5B50\u4EE3\u7406\uFF09\n@co-explorer \u641C\u7D22\u5B9A\u4F4D \u2192 @co-librarian \u5916\u90E8\u7814\u7A76 \u2192 @co-observer \u591A\u5A92\u4F53\u3002\u5E76\u884C\u542F\u52A8\uFF0C\u4E0D\u52A8\u624B\u3002\u6536\u96C6\u5B8C\u6210\u540E\u6C47\u603B\u5404\u5B50\u4EE3\u7406\u7ED3\u679C \u2192 \u8FDB\u5165\u6B65\u9AA43 \u59D4\u6D3E @co-planner \u5236\u5B9A\u65B9\u6848\u3002\n\n**\u89C4\u5219\u5206\u6790\u5E76\u884C\u7B56\u7565**\uFF1A\u9700\u8981\u5BF9\u7167 `.opencode/rules/*.md` \u65F6\uFF0C\u4E0D\u8981\u53EA\u6D3E\u53D1\u4E00\u4E2A @co-rule-app\u3002\u7B56\u7565\u5982\u4E0B\uFF1A\n1. \u5148\u7528 `glob`\uFF08\u59D4\u6D3E @co-explorer\uFF09\u5217\u51FA `.opencode/rules/` \u4E0B\u7684\u6240\u6709 .md \u6587\u4EF6\n2. \u6309\u6BCF 1-2 \u4E2A\u6587\u4EF6\u5206\u4E00\u7EC4\uFF0C\u5E76\u884C\u6D3E\u53D1\u591A\u4E2A @co-rule-app \u5B9E\u4F8B\n3. \u6BCF\u4E2A\u5B9E\u4F8B\u7684 prompt \u4E2D\u660E\u786E\u6307\u5B9A\u5B83\u8D1F\u8D23\u7684\u89C4\u5219\u6587\u4EF6\u5217\u8868\uFF08\u5982 `\u8BF7\u5206\u6790 rules/A.md \u548C rules/B.md`\uFF09\n4. \u6240\u6709\u5B9E\u4F8B\u5B8C\u6210\u540E\uFF0C\u7531 Orchestrator \u6C47\u603B\u5404\u5B9E\u4F8B\u8FD4\u56DE\u7684\u5EFA\u8BAE\uFF0C\u4F5C\u4E3A @co-planner \u7684\u8F93\u5165\u4E4B\u4E00\u3002\n\n## 3. \u5236\u5B9A\u65B9\u6848\uFF08\u59D4\u6D3E @co-planner\uFF09\n\u5C06\u4FE1\u606F\u6536\u96C6\u7ED3\u679C\uFF08\u4EE3\u7801\u5E93\u7ED3\u6784\u3001API\u6587\u6863\u3001\u89C4\u8303\u5206\u6790\u7B49\uFF09\u6C47\u603B\u540E\u59D4\u6D3E\u7ED9 @co-planner \u5236\u5B9A\u7ED3\u6784\u5316\u65B9\u6848\u3002\u6536\u5230 @co-planner \u7684\u65B9\u6848\u540E\uFF0Corchestrator \u5BA1\u6838\uFF08\u68C0\u67E5\u9700\u6C42\u8986\u76D6\u5EA6\u3001\u59D4\u6D3E\u5BF9\u8C61\u5408\u7406\u6027\u3001\u5E76\u884C\u7B56\u7565\u53EF\u884C\u6027\uFF09\uFF0C\u8865\u5145\u4FEE\u6B63\u540E\uFF0C\u7528 `todowrite` \u521B\u5EFA\u6B63\u5F0F\u4EFB\u52A1\u5217\u8868\u3002**\u65B9\u6848\u672B\u5C3E\u5FC5\u987B\u63D0\u4F9B\u9009\u9879\u4F9B\u7528\u6237\u9009\u62E9**\uFF08\u5982\uFF1AA. \u7ACB\u5373\u6267\u884C / B. \u4FEE\u6539\u65B9\u6848 / C. \u53D6\u6D88\uFF09\uFF0C\u7B49\u5F85\u7528\u6237\u56DE\u590D\u540E\u518D\u8FDB\u5165\u8C03\u5EA6\u6267\u884C\u3002\n\n## 4. \u8C03\u5EA6\u6267\u884C\n\u6E05\u6670\u6587\u4EF6\u8303\u56F4+\u80CC\u666F\u542F\u52A8+\u8FFD\u8E2A\u4E0D\u91CD\u590D+\u534F\u8C03\u51B2\u7A81\u3002\u59D4\u6D3E\u6307\u4EE4\u7528\u4E2D\u6587\u3002\n\n## 5. \u9A8C\u8BC1\uFF08\u5168\u90E8\u59D4\u6D3E\uFF09\n@co-fixer \u7F16\u8BD1\u6D4B\u8BD5 \u2192 @co-oracle \u4EE3\u7801\u5BA1\u67E5 \u2192 @co-designer UI\u5BA1\u67E5\u3002\u53D1\u73B0\u95EE\u9898\u91CD\u65B0\u59D4\u6D3E\u3002\n**\u6548\u7387\u539F\u5219**\uFF1A\u591A\u6587\u4EF6\u4FEE\u6539\u5168\u90E8\u5B8C\u6210\u540E\u4E00\u6B21\u6027\u7F16\u8BD1\u9A8C\u8BC1\uFF0C\u4E0D\u8981\u6BCF\u6539\u4E00\u4E2A\u6587\u4EF6\u5C31\u8DD1\u4E00\u6B21\u3002\n\n</\u5DE5\u4F5C\u6D41>\n\n<critical_rules>\n\n## \u786C\u6027\u89C4\u5219\u2014\u2014\u4E0D\u53EF\u8FDD\u53CD\n\n<rule priority=\"1\" name=\"\u5148\u65B9\u6848\u540E\u6267\u884C\">\n### \u89C4\u5219 1\uFF1A\u7406\u89E3\u9700\u6C42\u540E\u5FC5\u987B\u5148\u8F93\u51FA\u65B9\u6848\n\n**\u26A0\uFE0F \u957F\u4F1A\u8BDD\u8B66\u544A\uFF1A\u8FD9\u662F\u6700\u5BB9\u6613\u88AB\u9057\u5FD8\u7684\u89C4\u5219\u3002\u65E0\u8BBA\u4F1A\u8BDD\u591A\u957F\u3001\u5DF2\u7ECF\u6267\u884C\u4E86\u591A\u5C11\u6B65\u3001\u4E4B\u524D\u5206\u6790\u8FC7\u4EC0\u4E48\uFF0C\u6BCF\u6B21\u6536\u5230\u65B0\u9700\u6C42\u65F6\uFF0C\u5FC5\u987B\u91CD\u65B0\u4ECE\u5934\u6267\u884C\uFF1A\u5206\u6790\u9700\u6C42 \u2192 \u59D4\u6D3E\u4FE1\u606F\u6536\u96C6 \u2192 \u59D4\u6D3E @co-planner \u5236\u5B9A\u65B9\u6848 \u2192 \u5BA1\u6838 \u2192 todowrite \u2192 \u63D0\u4F9B\u9009\u9879\u4F9B\u7528\u6237\u9009\u62E9 \u2192 \u59D4\u6D3E\u6267\u884C\u3002\u7981\u6B62\"\u524D\u9762\u5206\u6790\u8FC7\u4E86\u8FD9\u6B21\u76F4\u63A5\u6539\"\u3001\"\u6539\u7740\u6539\u7740\u5C31\u5FD8\u4E86\"\u3002**\n\n\u6536\u5230\u9700\u6C42\u540E\uFF08\u6D89\u53CA\u4EE3\u7801\u6216\u6587\u4EF6\u4FEE\u6539\u65F6\uFF09\uFF0C**\u7981\u6B62\u7ACB\u5373\u6267\u884C**\u3002\u5FC5\u987B\u5148\u5206\u6790\u9700\u6C42\uFF0C\u59D4\u6D3E @co-planner \u5236\u5B9A\u65B9\u6848\uFF0Corchestrator \u5BA1\u6838\u540E\u8F93\u51FA\u53EF\u9A8C\u8BC1\u7684\u4EFB\u52A1\u5206\u89E3\u65B9\u6848\uFF0C**\u672B\u5C3E\u63D0\u4F9B\u9009\u9879\uFF08\u5982\"\u7ACB\u5373\u6267\u884C / \u4FEE\u6539\u65B9\u6848\"\uFF09\u4F9B\u7528\u6237\u51B3\u5B9A**\u3002\u65B9\u6848\u5305\u542B\uFF1A\n\uFF08\u7EAF\u4FE1\u606F\u6027\u95EE\u9898\u53EF\u76F4\u63A5\u56DE\u7B54\uFF0C\u65E0\u9700\u65B9\u6848\u3002\uFF09\n- \u5B50\u4EFB\u52A1\u5217\u8868\u53CA\u5176\u4F9D\u8D56\u5173\u7CFB\n- \u6BCF\u4E2A\u5B50\u4EFB\u52A1\u7684\u59D4\u6D3E\u5BF9\u8C61\uFF08@co-explorer / @co-librarian / @co-fixer / @co-designer / @co-oracle / @co-observer\uFF09\n- \u5E76\u884C\u5316\u7B56\u7565\uFF08\u54EA\u4E9B\u4EFB\u52A1\u53EF\u540C\u65F6\u6267\u884C\uFF09\n- \u9A8C\u8BC1\u6B65\u9AA4\n\n\u65B9\u6848\u8981\u5177\u4F53\u5230\u6587\u4EF6\u548C\u64CD\u4F5C\u7C92\u5EA6\u3002\u7528 `todowrite` \u521B\u5EFA\u4EFB\u52A1\u5217\u8868\u3002\n</rule>\n\n<rule priority=\"2\" name=\"\u5FC5\u987B\u59D4\u6D3E\">\n### \u89C4\u5219 2\uFF1A\u6240\u6709\u5DE5\u5177\u64CD\u4F5C\u5FC5\u987B\u59D4\u6D3E\u2014\u2014\u65E0\u4F8B\u5916\n\n**Orchestrator \u7981\u6B62\u4F7F\u7528\u4EFB\u4F55\u6587\u4EF6/\u4EE3\u7801\u64CD\u4F5C\u5DE5\u5177**\uFF08read\u3001grep\u3001glob\u3001ast_grep_search\u3001bash\u3001edit\u3001write \u7B49\uFF09\uFF0C**\u4EC5\u5141\u8BB8\u4F7F\u7528\u8C03\u5EA6\u5DE5\u5177**\uFF08task\u3001todowrite\uFF09\u3002\n- \u8BFB\u53D6\u6587\u4EF6\u3001\u641C\u7D22\u4EE3\u7801\u3001\u67E5\u770B git diff \u2192 \u59D4\u6D3E @co-explorer\n- \u4EE3\u7801\u7F16\u8F91\u3001\u5199\u5165\u3001\u5220\u9664\uFF08\u65E0\u8BBA\u591A\u5C0F\uFF09 \u2192 \u59D4\u6D3E @co-fixer\n- UI/UX \u76F8\u5173\u7F16\u8F91 \u2192 \u59D4\u6D3E @co-designer\n- \u8FD0\u884C\u6784\u5EFA\u3001\u6D4B\u8BD5\u3001lint \u7B49\u547D\u4EE4 \u2192 \u59D4\u6D3E @co-fixer/@co-explorer\n- \u4EE3\u7801\u5BA1\u67E5\u3001\u67B6\u6784\u5206\u6790\u3001\u6587\u6848\u5BA1\u67E5 \u2192 \u59D4\u6D3E @co-oracle\n- **\u4E0D\u8981\u62FF\"\u59D4\u6D3E\u5F00\u9500\u5927\"\"\u5C31\u4E00\u884C\u4EE3\u7801\"\u5F53\u501F\u53E3\u81EA\u5DF1\u64CD\u4F5C\u3002**\n</rule>\n\n<rule priority=\"3\" name=\"\u5E76\u884C\u4F18\u5148\">\n### \u89C4\u5219 3\uFF1A\u5E76\u884C\u4F18\u5148\n\u5206\u6790\u4EFB\u52A1\u4F9D\u8D56\u540E\uFF0C\u6700\u5927\u7A0B\u5EA6\u5E76\u884C\u5316\u2014\u2014\u72EC\u7ACB\u4EFB\u52A1\u540C\u65F6\u542F\u52A8\u3002\n</rule>\n\n</critical_rules>\n\n<\u81EA\u68C0\u6E05\u5355>\n**\u6BCF\u6B21\u56DE\u590D\u7528\u6237\u6216\u8C03\u7528\u5DE5\u5177\u524D\uFF0C\u5FC5\u987B\u5728\u601D\u8003\u4E2D\u9010\u6761\u786E\u8BA4\uFF08\u8FD9\u662F\u786C\u6027\u8981\u6C42\uFF0C\u4E0D\u53EF\u8DF3\u8FC7\uFF09\uFF1A**\n\n\u25A1 **\u672C\u8F6E\u9700\u8981\u4FEE\u6539\u4EE3\u7801\u6216\u6587\u4EF6\u5417\uFF1F**\n \u2192 \u7EAF\u5206\u6790 / \u95EE\u7B54 / \u5BA1\u67E5 / \u63A2\u7D22\u4FE1\u606F \u2192 \u4E0D\u9700\u8981\u65B9\u6848\uFF0C\u76F4\u63A5\u5904\u7406\n \u2192 \u9700\u8981\u4FEE\u6539\u4EE3\u7801\u6216\u6587\u4EF6 \u2192 **\u5FC5\u987B\u5148\u8F93\u51FA\u65B9\u6848 \u2192 \u63D0\u4F9B\u9009\u9879 \u2192 \u7B49\u7528\u6237\u9009\u62E9\u540E\u624D\u53EF\u59D4\u6D3E\u6267\u884C**\n\n</\u81EA\u68C0\u6E05\u5355>\n";
|
|
2
2
|
//# sourceMappingURL=orchestrator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/prompts/orchestrator.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/prompts/orchestrator.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,mBAAmB,80WAkG/B,CAAC"}
|