oh-my-opencode-cohub 1.0.15 → 1.0.17
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 +85 -24
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +125 -3
- package/dist/prompts/orchestrator.d.ts +1 -1
- package/dist/prompts/orchestrator.d.ts.map +1 -1
- package/dist/task-manager/tracker.d.ts +10 -1
- package/dist/task-manager/tracker.d.ts.map +1 -1
- package/dist/task-manager/types.d.ts +1 -0
- package/dist/task-manager/types.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -72,47 +72,106 @@ CLI 会精确清理所有 `co-*` 代理和相关配置,不影响其他插件
|
|
|
72
72
|
- 可用代理列表中出现 12 个 `co-*` 前缀代理(`co-orchestrator`、`co-oracle`、`co-librarian`、`co-explorer`、`co-designer`、`co-fixer`、`co-observer`、`co-council`、`co-rule-user`、`co-rule-project`、`co-rule-app`、`co-planner`)
|
|
73
73
|
- Orchestrator 自动进入纯调度模式(只做规划、委派、验证,不直接操作文件)
|
|
74
74
|
|
|
75
|
+
### 从源码安装(本地开发)
|
|
76
|
+
|
|
77
|
+
如果需要修改源码或使用开发版本:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
# 1. 克隆项目
|
|
81
|
+
git clone <repo-url> && cd oh-my-opencode-cohub
|
|
82
|
+
|
|
83
|
+
# 2. 安装依赖
|
|
84
|
+
npm install
|
|
85
|
+
|
|
86
|
+
# 3. 构建(需要系统已安装 Bun)
|
|
87
|
+
npm run build
|
|
88
|
+
|
|
89
|
+
# 4. 方式 A:npm link 全局链接(推荐)
|
|
90
|
+
npm link
|
|
91
|
+
bunx oh-my-opencode-cohub install
|
|
92
|
+
# 重启 OpenCode 即可。之后修改源码只需重新 npm run build
|
|
93
|
+
|
|
94
|
+
# 4. 方式 B:手动配置绝对路径
|
|
95
|
+
# 编辑 ~/.config/opencode/opencode.json,在 plugin 数组中写入项目绝对路径:
|
|
96
|
+
# { "plugin": ["/absolute/path/to/oh-my-opencode-cohub"] }
|
|
97
|
+
# 然后手动运行 CLI 注册代理:
|
|
98
|
+
# node dist/cli/index.js install
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
> **构建依赖**:`npm run build` 使用 `bun build` 和 `tsc`。系统需安装 [Bun](https://bun.sh)(构建工具)和 Node.js(类型声明生成)。所有 `@opencode-ai/*`、`@opentui/*`、`zod` 均为 external,不打包进 `dist/`。
|
|
102
|
+
|
|
75
103
|
## 代理一览
|
|
76
104
|
|
|
77
105
|
### 代理(12 个,全中文提示词)
|
|
78
106
|
|
|
79
|
-
| 代理 |
|
|
80
|
-
|
|
81
|
-
| orchestrator |
|
|
82
|
-
| oracle |
|
|
83
|
-
| librarian |
|
|
84
|
-
| explorer |
|
|
85
|
-
| designer |
|
|
86
|
-
| fixer |
|
|
87
|
-
| observer |
|
|
88
|
-
| council |
|
|
89
|
-
| rule-user |
|
|
90
|
-
| rule-project |
|
|
91
|
-
| rule-app |
|
|
92
|
-
| planner |
|
|
93
|
-
|
|
94
|
-
>
|
|
107
|
+
| 代理 | 默认模型 | 职责 | 读取源 |
|
|
108
|
+
|------|----------|------|--------|
|
|
109
|
+
| co-orchestrator | `deepseek/deepseek-v4-pro` | 纯调度:规划→委派→验证 | — |
|
|
110
|
+
| co-oracle | `deepseek/deepseek-v4-pro` | 架构审查/代码审查(含 Superpowers skills) | — |
|
|
111
|
+
| co-librarian | `deepseek/deepseek-v4-flash` | 外部文档/API 研究 | — |
|
|
112
|
+
| co-explorer | `deepseek/deepseek-v4-flash` | 代码库搜索定位 | — |
|
|
113
|
+
| co-designer | `minimax/MiniMax-M3` | UI/UX 设计与实现 | — |
|
|
114
|
+
| co-fixer | `deepseek/deepseek-v4-flash` | 代码修改执行(含 TDD skill) | — |
|
|
115
|
+
| co-observer | `codermxtest/gpt-5.5` | 图片/PDF 分析 | — |
|
|
116
|
+
| co-council | `deepseek/deepseek-v4-pro` | 多模型共识 | — |
|
|
117
|
+
| co-rule-user | `deepseek/deepseek-v4-flash` | 用户级规范分析 | `~/.config/opencode/AGENTS.md` |
|
|
118
|
+
| co-rule-project | `deepseek/deepseek-v4-flash` | 项目级规范分析 | 项目 `AGENTS.md` |
|
|
119
|
+
| co-rule-app | `deepseek/deepseek-v4-flash` | 应用规则分析 | `.opencode/rules/*.md` |
|
|
120
|
+
| co-planner | `deepseek/deepseek-v4-pro` | 方案制定 | 综合需求+信息+规则 |
|
|
121
|
+
|
|
122
|
+
> 模型可通过下文「配置文件」或「自定义模型」章节覆盖。
|
|
123
|
+
|
|
124
|
+
## 配置文件
|
|
125
|
+
|
|
126
|
+
CLI 安装后自动创建 `~/.config/opencode/oh-my-opencode-cohub.json`,这是 CoHub 的专用配置文件,结构如下:
|
|
127
|
+
|
|
128
|
+
```json
|
|
129
|
+
{
|
|
130
|
+
"$schema": "https://unpkg.com/oh-my-opencode-cohub@latest/oh-my-opencode-cohub.schema.json",
|
|
131
|
+
"agents": {
|
|
132
|
+
"co-orchestrator": { "model": "deepseek/deepseek-v4-pro", "variant": "max" },
|
|
133
|
+
"co-oracle": { "model": "deepseek/deepseek-v4-pro", "variant": "max" },
|
|
134
|
+
"co-librarian": { "model": "deepseek/deepseek-v4-flash", "variant": "low" },
|
|
135
|
+
"co-explorer": { "model": "deepseek/deepseek-v4-flash", "variant": "low" },
|
|
136
|
+
"co-designer": { "model": "minimax/MiniMax-M3", "variant": "medium" },
|
|
137
|
+
"co-fixer": { "model": "deepseek/deepseek-v4-flash", "variant": "high" },
|
|
138
|
+
"co-observer": { "model": "codermxtest/gpt-5.5", "variant": "low" },
|
|
139
|
+
"co-council": { "model": "deepseek/deepseek-v4-pro", "variant": "high" },
|
|
140
|
+
"co-rule-user": { "model": "deepseek/deepseek-v4-flash", "variant": "medium" },
|
|
141
|
+
"co-rule-project":{ "model": "deepseek/deepseek-v4-flash", "variant": "medium" },
|
|
142
|
+
"co-rule-app": { "model": "deepseek/deepseek-v4-flash", "variant": "medium" },
|
|
143
|
+
"co-planner": { "model": "deepseek/deepseek-v4-pro", "variant": "high" }
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
直接编辑此文件即可修改任意代理的模型和变体。`$schema` 提供 IDE 自动补全支持。
|
|
149
|
+
|
|
150
|
+
> **注意**:同一目录 `~/.config/opencode/oh-my-opencode-cohub/` 下也可放置 `{agent}.md` 提示词覆盖文件(见「自定义提示词」章节),与 JSON 配置文件共存。
|
|
95
151
|
|
|
96
152
|
## 工作流
|
|
97
153
|
|
|
98
154
|
```
|
|
99
155
|
1. 理解需求
|
|
100
|
-
2. 信息收集(@explorer / @librarian / @observer)
|
|
101
|
-
3. 规范分析(并行 @rule-user / @rule-project / @rule-app)
|
|
102
|
-
4. 制定方案 → @planner
|
|
103
|
-
5. 调度执行(@fixer / @designer 等)
|
|
104
|
-
6. 验证(@oracle / @designer)
|
|
156
|
+
2. 信息收集(@co-explorer / @co-librarian / @co-observer)
|
|
157
|
+
3. 规范分析(并行 @co-rule-user / @co-rule-project / @co-rule-app)
|
|
158
|
+
4. 制定方案 → @co-planner
|
|
159
|
+
5. 调度执行(@co-fixer / @co-designer 等)
|
|
160
|
+
6. 验证(@co-oracle / @co-designer)
|
|
105
161
|
```
|
|
106
162
|
|
|
107
163
|
## 依赖
|
|
108
164
|
|
|
109
|
-
- OpenCode
|
|
110
|
-
- `@opencode-ai/plugin
|
|
165
|
+
- [OpenCode](https://opencode.ai) ≥ 1.17
|
|
166
|
+
- `@opencode-ai/plugin@^1.17`(运行时依赖)
|
|
167
|
+
- `@opencode-ai/sdk@^1.3`(运行时依赖)
|
|
111
168
|
- 无其他外部插件依赖
|
|
112
169
|
|
|
113
170
|
## 自定义模型
|
|
114
171
|
|
|
115
|
-
|
|
172
|
+
**推荐**:直接编辑 `~/.config/opencode/oh-my-opencode-cohub.json`(见「配置文件」章节),修改对应代理的 `model` 和 `variant` 即可。
|
|
173
|
+
|
|
174
|
+
**备选**:通过 `opencode.json` 的 plugin config 覆盖:
|
|
116
175
|
|
|
117
176
|
```json
|
|
118
177
|
{
|
|
@@ -130,6 +189,8 @@ CLI 会精确清理所有 `co-*` 代理和相关配置,不影响其他插件
|
|
|
130
189
|
}
|
|
131
190
|
```
|
|
132
191
|
|
|
192
|
+
> 注意:plugin config 中的 key 使用无 `co-` 前缀的短名(如 `orchestrator`);JSON 配置文件使用完整的 `co-` 前缀名(如 `co-orchestrator`)。
|
|
193
|
+
|
|
133
194
|
## 自定义提示词
|
|
134
195
|
|
|
135
196
|
### 方式一:通过 plugin config 覆盖(推荐)
|
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;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,
|
|
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,MAkRlB,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -19,6 +19,47 @@ var ORCHESTRATOR_PROMPT = `<角色>
|
|
|
19
19
|
|
|
20
20
|
</子代理>
|
|
21
21
|
|
|
22
|
+
### @council vs @oracle 选择指南
|
|
23
|
+
|
|
24
|
+
**一句话判断**:\`@co-oracle\` = 深度推理(快、便宜、单视角),\`@co-council\` = 多模型背书的共识(慢、贵、多视角)。
|
|
25
|
+
|
|
26
|
+
| 维度 | @co-oracle | @co-council |
|
|
27
|
+
|------|-----------|-------------|
|
|
28
|
+
| 模式 | 单模型深度推理 | 多模型并行共识 |
|
|
29
|
+
| 适用场景 | 错了还能改的决策 | 错了就完了的决策 |
|
|
30
|
+
| 典型用例 | 代码审查、架构建议、bug 根因、YAGNI 简化、文案审查、重构方向 | 数据迁移方案、API 破坏性变更、安全合规审计、选型代价极大、多方案择优 |
|
|
31
|
+
| 输出形式 | 直接建议 + 推理 | 多专家观点 → 综合共识 → 信心评级(一致/多数/分歧) |
|
|
32
|
+
| 误用代价 | 低:建议错了可以讨论纠正 | 高:浪费 N 次调用成本,拖延决策 |
|
|
33
|
+
| 成本 | 1 次 LLM 调用 | 3–5 次并行 LLM 调用 |
|
|
34
|
+
|
|
35
|
+
**决策规则**:
|
|
36
|
+
1. **可逆性优先判断**:操作错了能无代价回滚?→ \`@co-oracle\`(如代码修改、lint 修复)。操作错了数据丢失/API 不兼容?→ \`@co-council\`(如 DROP TABLE、公共 API 签名变更)。
|
|
37
|
+
2. **异议价值判断**:需要单一深度分析?→ \`@co-oracle\`。需要多个独立判断互相验证?→ \`@co-council\`。
|
|
38
|
+
3. **默认倾向**:不确定时优先 \`@co-oracle\`(更快更便宜)。只有满足以下**至少 2 条**时才用 \`@co-council\`:
|
|
39
|
+
- 决策不可逆或回滚代价极高
|
|
40
|
+
- 影响范围跨多个模块/团队/服务
|
|
41
|
+
- 单一判断出错会造成安全事故/线上故障/数据损坏
|
|
42
|
+
- 存在多种合理方案且选错代价大
|
|
43
|
+
|
|
44
|
+
**典型场景对照**:
|
|
45
|
+
|
|
46
|
+
| 场景 | 用谁 | 理由 |
|
|
47
|
+
|------|------|------|
|
|
48
|
+
| PR 代码审查 | @co-oracle | 错了还能改,审查意见可讨论 |
|
|
49
|
+
| 重构建议 | @co-oracle | 方案可迭代调整 |
|
|
50
|
+
| 单文件 bug 修复思路 | @co-oracle | 低风险,快速反馈 |
|
|
51
|
+
| 数据库 Schema 迁移(含删列/改类型) | @co-council | 数据不可逆,需要多模型背书 |
|
|
52
|
+
| 公共 API 签名废弃/变更 | @co-council | 下游影响不可控 |
|
|
53
|
+
| 安全漏洞修复方案 | @co-council | 错了可能被利用 |
|
|
54
|
+
| 第三方库选型(如 ORM/状态管理) | @co-council | 迁移成本极高 |
|
|
55
|
+
| 文案/提示词修改 | @co-oracle | 错了能改,低风险 |
|
|
56
|
+
| 多方案架构决策(各有利弊) | @co-council | 需要多方面权衡 |
|
|
57
|
+
|
|
58
|
+
**反面教材——不要这样用**:
|
|
59
|
+
- ❌ 用 \`@co-council\` 审查一个简单的 lint 修复(杀鸡用牛刀)
|
|
60
|
+
- ❌ 用 \`@co-oracle\` 决定是否删除生产数据库的某个表(赌单模型判断)
|
|
61
|
+
- ❌ 用 \`@co-council\` 做日常代码格式化建议(纯浪费)
|
|
62
|
+
|
|
22
63
|
<核心规则>
|
|
23
64
|
|
|
24
65
|
## 硬性规则——不可违反
|
|
@@ -443,11 +484,12 @@ class TaskTracker {
|
|
|
443
484
|
const label = typeof args.description === "string" ? args.description : alias;
|
|
444
485
|
this.jobs.set(alias, {
|
|
445
486
|
alias,
|
|
446
|
-
sessionId: "",
|
|
487
|
+
sessionId: args.task_id ?? "",
|
|
447
488
|
parentSessionId,
|
|
448
489
|
agent,
|
|
449
490
|
label,
|
|
450
491
|
status: "running",
|
|
492
|
+
background: args.background ?? false,
|
|
451
493
|
terminalReconciled: false,
|
|
452
494
|
createdAt: Date.now()
|
|
453
495
|
});
|
|
@@ -462,11 +504,24 @@ class TaskTracker {
|
|
|
462
504
|
}
|
|
463
505
|
}
|
|
464
506
|
if (latest) {
|
|
507
|
+
if (latest.background) {
|
|
508
|
+
if (sessionId)
|
|
509
|
+
latest.sessionId = sessionId;
|
|
510
|
+
return;
|
|
511
|
+
}
|
|
465
512
|
latest.status = status;
|
|
466
513
|
if (sessionId)
|
|
467
514
|
latest.sessionId = sessionId;
|
|
468
515
|
}
|
|
469
516
|
}
|
|
517
|
+
updateByChildSessionId(sessionId, status) {
|
|
518
|
+
for (const job of this.jobs.values()) {
|
|
519
|
+
if (job.sessionId === sessionId && job.background && job.status === "running") {
|
|
520
|
+
job.status = status;
|
|
521
|
+
return;
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
}
|
|
470
525
|
getBoardText(parentSessionId) {
|
|
471
526
|
const pid = parentSessionId || this._currentParentSessionId;
|
|
472
527
|
const activeJobs = [];
|
|
@@ -513,6 +568,14 @@ class TaskTracker {
|
|
|
513
568
|
job.terminalReconciled = true;
|
|
514
569
|
}
|
|
515
570
|
}
|
|
571
|
+
cleanupStaleJobs(timeoutMs) {
|
|
572
|
+
const now = Date.now();
|
|
573
|
+
for (const job of this.jobs.values()) {
|
|
574
|
+
if (job.background && job.status === "running" && now - job.createdAt > timeoutMs) {
|
|
575
|
+
job.status = "errored";
|
|
576
|
+
}
|
|
577
|
+
}
|
|
578
|
+
}
|
|
516
579
|
isReusable(alias) {
|
|
517
580
|
const job = this.jobs.get(alias);
|
|
518
581
|
return job?.status === "completed" && job.terminalReconciled;
|
|
@@ -732,6 +795,46 @@ var CoHubPlugin = async (input, options) => {
|
|
|
732
795
|
}
|
|
733
796
|
}
|
|
734
797
|
syncAgentConfig();
|
|
798
|
+
function extractChildSessionId(output) {
|
|
799
|
+
if (!output || typeof output !== "object")
|
|
800
|
+
return;
|
|
801
|
+
const o = output;
|
|
802
|
+
const meta = o.metadata;
|
|
803
|
+
if (meta) {
|
|
804
|
+
if (typeof meta.sessionId === "string")
|
|
805
|
+
return meta.sessionId;
|
|
806
|
+
if (typeof meta.taskId === "string")
|
|
807
|
+
return meta.taskId;
|
|
808
|
+
if (typeof meta.task_id === "string")
|
|
809
|
+
return meta.task_id;
|
|
810
|
+
if (typeof meta.id === "string")
|
|
811
|
+
return meta.id;
|
|
812
|
+
}
|
|
813
|
+
const text = typeof o.output === "string" ? o.output : "";
|
|
814
|
+
const m = text.match(/\b(session|task)[_\s]?(?:id|ID)[:\s]+(\S+)/i);
|
|
815
|
+
if (m)
|
|
816
|
+
return m[2];
|
|
817
|
+
return;
|
|
818
|
+
}
|
|
819
|
+
function extractSessionIdFromEvent(props) {
|
|
820
|
+
if (!props || typeof props !== "object")
|
|
821
|
+
return;
|
|
822
|
+
const p = props;
|
|
823
|
+
const info = p.info;
|
|
824
|
+
if (info?.id)
|
|
825
|
+
return info.id;
|
|
826
|
+
if (typeof p.sessionID === "string")
|
|
827
|
+
return p.sessionID;
|
|
828
|
+
if (typeof p.sessionId === "string")
|
|
829
|
+
return p.sessionId;
|
|
830
|
+
return;
|
|
831
|
+
}
|
|
832
|
+
const STALE_TIMEOUT_MS = 30 * 60 * 1000;
|
|
833
|
+
const cleanupTimer = setInterval(() => {
|
|
834
|
+
try {
|
|
835
|
+
tracker.cleanupStaleJobs(STALE_TIMEOUT_MS);
|
|
836
|
+
} catch {}
|
|
837
|
+
}, 30000);
|
|
735
838
|
const agentConfigs = {};
|
|
736
839
|
for (const agent of agents) {
|
|
737
840
|
agentConfigs[agent.name] = {
|
|
@@ -767,14 +870,30 @@ var CoHubPlugin = async (input, options) => {
|
|
|
767
870
|
}
|
|
768
871
|
} catch {}
|
|
769
872
|
},
|
|
770
|
-
"tool.execute.after": async (input2,
|
|
873
|
+
"tool.execute.after": async (input2, output) => {
|
|
771
874
|
try {
|
|
772
875
|
if (input2.tool === "task") {
|
|
773
|
-
|
|
876
|
+
const childSessionId = extractChildSessionId(output);
|
|
877
|
+
tracker.updateAfterTask(input2.sessionID, "completed", childSessionId);
|
|
774
878
|
syncTrackerState(input2.sessionID ?? "");
|
|
775
879
|
}
|
|
776
880
|
} catch {}
|
|
777
881
|
},
|
|
882
|
+
event: async (input2) => {
|
|
883
|
+
try {
|
|
884
|
+
const e = input2.event;
|
|
885
|
+
const sessionId = extractSessionIdFromEvent(e.properties);
|
|
886
|
+
if (!sessionId)
|
|
887
|
+
return;
|
|
888
|
+
if (e.type === "session.idle") {
|
|
889
|
+
tracker.updateByChildSessionId(sessionId, "completed");
|
|
890
|
+
syncTrackerState(tracker.currentParentSessionId);
|
|
891
|
+
} else if (e.type === "session.deleted" || e.type === "session.error") {
|
|
892
|
+
tracker.updateByChildSessionId(sessionId, "errored");
|
|
893
|
+
syncTrackerState(tracker.currentParentSessionId);
|
|
894
|
+
}
|
|
895
|
+
} catch {}
|
|
896
|
+
},
|
|
778
897
|
"experimental.chat.messages.transform": async (_input, output) => {
|
|
779
898
|
try {
|
|
780
899
|
const board = tracker.getBoardText();
|
|
@@ -799,6 +918,9 @@ var CoHubPlugin = async (input, options) => {
|
|
|
799
918
|
},
|
|
800
919
|
"experimental.chat.system.transform": async (_input, output) => {
|
|
801
920
|
output.system.push(CHINESE_LANGUAGE_INSTRUCTION);
|
|
921
|
+
},
|
|
922
|
+
dispose: async () => {
|
|
923
|
+
clearInterval(cleanupTimer);
|
|
802
924
|
}
|
|
803
925
|
};
|
|
804
926
|
};
|
|
@@ -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 \u5236\u5B9A\u65B9\u6848 \u2192 \u8C03\u5EA6\u5B50\u4EE3\u7406\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\u552F\u4E00\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/* \u7EA6\u675F\u3002\u59D4\u6D3E\uFF1A\u65B9\u6848\u9700\u5BF9\u7167\u5B89\u5168/\u6D4B\u8BD5/\u6570\u636E\u5E93\u7B49\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<\u6838\u5FC3\u89C4\u5219>\n\n## \u786C\u6027\u89C4\u5219\u2014\u2014\u4E0D\u53EF\u8FDD\u53CD\n\n### \u89C4\u5219 1\uFF1A\u7406\u89E3\u9700\u6C42\u540E\u5FC5\u987B\u5148\u8F93\u51FA\u65B9\u6848\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\u8F93\u51FA\u53EF\u9A8C\u8BC1\u7684\u4EFB\u52A1\u5206\u89E3\u65B9\u6848\uFF0C\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\n### \u89C4\u5219 2\uFF1A\u6240\u6709\u5DE5\u5177\u64CD\u4F5C\u5FC5\u987B\u59D4\u6D3E\u2014\u2014\u65E0\u4F8B\u5916\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\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\n</\u6838\u5FC3\u89C4\u5219>\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\n\n## 3. \u5236\u5B9A\u65B9\u6848\n\u7EFC\u5408\u4FE1\u606F\u2192\u5B50\u4EFB\u52A1\u5206\u89E3\u2192\u59D4\u6D3E\u5BF9\u8C61\u2192\u5E76\u884C\u7B56\u7565\u2192todowrite \u8BB0\u5F55\u2192\u7528\u6237\u786E\u8BA4\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";
|
|
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 \u5236\u5B9A\u65B9\u6848 \u2192 \u8C03\u5EA6\u5B50\u4EE3\u7406\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\u552F\u4E00\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/* \u7EA6\u675F\u3002\u59D4\u6D3E\uFF1A\u65B9\u6848\u9700\u5BF9\u7167\u5B89\u5168/\u6D4B\u8BD5/\u6570\u636E\u5E93\u7B49\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\u5355\u89C6\u89D2\uFF09\uFF0C`@co-council` = \u591A\u6A21\u578B\u80CC\u4E66\u7684\u5171\u8BC6\uFF08\u6162\u3001\u8D35\u3001\u591A\u89C6\u89D2\uFF09\u3002\n\n| \u7EF4\u5EA6 | @co-oracle | @co-council |\n|------|-----------|-------------|\n| \u6A21\u5F0F | \u5355\u6A21\u578B\u6DF1\u5EA6\u63A8\u7406 | \u591A\u6A21\u578B\u5E76\u884C\u5171\u8BC6 |\n| \u9002\u7528\u573A\u666F | \u9519\u4E86\u8FD8\u80FD\u6539\u7684\u51B3\u7B56 | \u9519\u4E86\u5C31\u5B8C\u4E86\u7684\u51B3\u7B56 |\n| \u5178\u578B\u7528\u4F8B | \u4EE3\u7801\u5BA1\u67E5\u3001\u67B6\u6784\u5EFA\u8BAE\u3001bug \u6839\u56E0\u3001YAGNI \u7B80\u5316\u3001\u6587\u6848\u5BA1\u67E5\u3001\u91CD\u6784\u65B9\u5411 | \u6570\u636E\u8FC1\u79FB\u65B9\u6848\u3001API \u7834\u574F\u6027\u53D8\u66F4\u3001\u5B89\u5168\u5408\u89C4\u5BA1\u8BA1\u3001\u9009\u578B\u4EE3\u4EF7\u6781\u5927\u3001\u591A\u65B9\u6848\u62E9\u4F18 |\n| \u8F93\u51FA\u5F62\u5F0F | \u76F4\u63A5\u5EFA\u8BAE + \u63A8\u7406 | \u591A\u4E13\u5BB6\u89C2\u70B9 \u2192 \u7EFC\u5408\u5171\u8BC6 \u2192 \u4FE1\u5FC3\u8BC4\u7EA7\uFF08\u4E00\u81F4/\u591A\u6570/\u5206\u6B67\uFF09 |\n| \u8BEF\u7528\u4EE3\u4EF7 | \u4F4E\uFF1A\u5EFA\u8BAE\u9519\u4E86\u53EF\u4EE5\u8BA8\u8BBA\u7EA0\u6B63 | \u9AD8\uFF1A\u6D6A\u8D39 N \u6B21\u8C03\u7528\u6210\u672C\uFF0C\u62D6\u5EF6\u51B3\u7B56 |\n| \u6210\u672C | 1 \u6B21 LLM \u8C03\u7528 | 3\u20135 \u6B21\u5E76\u884C LLM \u8C03\u7528 |\n\n**\u51B3\u7B56\u89C4\u5219**\uFF1A\n1. **\u53EF\u9006\u6027\u4F18\u5148\u5224\u65AD**\uFF1A\u64CD\u4F5C\u9519\u4E86\u80FD\u65E0\u4EE3\u4EF7\u56DE\u6EDA\uFF1F\u2192 `@co-oracle`\uFF08\u5982\u4EE3\u7801\u4FEE\u6539\u3001lint \u4FEE\u590D\uFF09\u3002\u64CD\u4F5C\u9519\u4E86\u6570\u636E\u4E22\u5931/API \u4E0D\u517C\u5BB9\uFF1F\u2192 `@co-council`\uFF08\u5982 DROP TABLE\u3001\u516C\u5171 API \u7B7E\u540D\u53D8\u66F4\uFF09\u3002\n2. **\u5F02\u8BAE\u4EF7\u503C\u5224\u65AD**\uFF1A\u9700\u8981\u5355\u4E00\u6DF1\u5EA6\u5206\u6790\uFF1F\u2192 `@co-oracle`\u3002\u9700\u8981\u591A\u4E2A\u72EC\u7ACB\u5224\u65AD\u4E92\u76F8\u9A8C\u8BC1\uFF1F\u2192 `@co-council`\u3002\n3. **\u9ED8\u8BA4\u503E\u5411**\uFF1A\u4E0D\u786E\u5B9A\u65F6\u4F18\u5148 `@co-oracle`\uFF08\u66F4\u5FEB\u66F4\u4FBF\u5B9C\uFF09\u3002\u53EA\u6709\u6EE1\u8DB3\u4EE5\u4E0B**\u81F3\u5C11 2 \u6761**\u65F6\u624D\u7528 `@co-council`\uFF1A\n - \u51B3\u7B56\u4E0D\u53EF\u9006\u6216\u56DE\u6EDA\u4EE3\u4EF7\u6781\u9AD8\n - \u5F71\u54CD\u8303\u56F4\u8DE8\u591A\u4E2A\u6A21\u5757/\u56E2\u961F/\u670D\u52A1\n - \u5355\u4E00\u5224\u65AD\u51FA\u9519\u4F1A\u9020\u6210\u5B89\u5168\u4E8B\u6545/\u7EBF\u4E0A\u6545\u969C/\u6570\u636E\u635F\u574F\n - \u5B58\u5728\u591A\u79CD\u5408\u7406\u65B9\u6848\u4E14\u9009\u9519\u4EE3\u4EF7\u5927\n\n**\u5178\u578B\u573A\u666F\u5BF9\u7167**\uFF1A\n\n| \u573A\u666F | \u7528\u8C01 | \u7406\u7531 |\n|------|------|------|\n| PR \u4EE3\u7801\u5BA1\u67E5 | @co-oracle | \u9519\u4E86\u8FD8\u80FD\u6539\uFF0C\u5BA1\u67E5\u610F\u89C1\u53EF\u8BA8\u8BBA |\n| \u91CD\u6784\u5EFA\u8BAE | @co-oracle | \u65B9\u6848\u53EF\u8FED\u4EE3\u8C03\u6574 |\n| \u5355\u6587\u4EF6 bug \u4FEE\u590D\u601D\u8DEF | @co-oracle | \u4F4E\u98CE\u9669\uFF0C\u5FEB\u901F\u53CD\u9988 |\n| \u6570\u636E\u5E93 Schema \u8FC1\u79FB\uFF08\u542B\u5220\u5217/\u6539\u7C7B\u578B\uFF09 | @co-council | \u6570\u636E\u4E0D\u53EF\u9006\uFF0C\u9700\u8981\u591A\u6A21\u578B\u80CC\u4E66 |\n| \u516C\u5171 API \u7B7E\u540D\u5E9F\u5F03/\u53D8\u66F4 | @co-council | \u4E0B\u6E38\u5F71\u54CD\u4E0D\u53EF\u63A7 |\n| \u5B89\u5168\u6F0F\u6D1E\u4FEE\u590D\u65B9\u6848 | @co-council | \u9519\u4E86\u53EF\u80FD\u88AB\u5229\u7528 |\n| \u7B2C\u4E09\u65B9\u5E93\u9009\u578B\uFF08\u5982 ORM/\u72B6\u6001\u7BA1\u7406\uFF09 | @co-council | \u8FC1\u79FB\u6210\u672C\u6781\u9AD8 |\n| \u6587\u6848/\u63D0\u793A\u8BCD\u4FEE\u6539 | @co-oracle | \u9519\u4E86\u80FD\u6539\uFF0C\u4F4E\u98CE\u9669 |\n| \u591A\u65B9\u6848\u67B6\u6784\u51B3\u7B56\uFF08\u5404\u6709\u5229\u5F0A\uFF09 | @co-council | \u9700\u8981\u591A\u65B9\u9762\u6743\u8861 |\n\n**\u53CD\u9762\u6559\u6750\u2014\u2014\u4E0D\u8981\u8FD9\u6837\u7528**\uFF1A\n- \u274C \u7528 `@co-council` \u5BA1\u67E5\u4E00\u4E2A\u7B80\u5355\u7684 lint \u4FEE\u590D\uFF08\u6740\u9E21\u7528\u725B\u5200\uFF09\n- \u274C \u7528 `@co-oracle` \u51B3\u5B9A\u662F\u5426\u5220\u9664\u751F\u4EA7\u6570\u636E\u5E93\u7684\u67D0\u4E2A\u8868\uFF08\u8D4C\u5355\u6A21\u578B\u5224\u65AD\uFF09\n- \u274C \u7528 `@co-council` \u505A\u65E5\u5E38\u4EE3\u7801\u683C\u5F0F\u5316\u5EFA\u8BAE\uFF08\u7EAF\u6D6A\u8D39\uFF09\n\n<\u6838\u5FC3\u89C4\u5219>\n\n## \u786C\u6027\u89C4\u5219\u2014\u2014\u4E0D\u53EF\u8FDD\u53CD\n\n### \u89C4\u5219 1\uFF1A\u7406\u89E3\u9700\u6C42\u540E\u5FC5\u987B\u5148\u8F93\u51FA\u65B9\u6848\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\u8F93\u51FA\u53EF\u9A8C\u8BC1\u7684\u4EFB\u52A1\u5206\u89E3\u65B9\u6848\uFF0C\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\n### \u89C4\u5219 2\uFF1A\u6240\u6709\u5DE5\u5177\u64CD\u4F5C\u5FC5\u987B\u59D4\u6D3E\u2014\u2014\u65E0\u4F8B\u5916\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\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\n</\u6838\u5FC3\u89C4\u5219>\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\n\n## 3. \u5236\u5B9A\u65B9\u6848\n\u7EFC\u5408\u4FE1\u606F\u2192\u5B50\u4EFB\u52A1\u5206\u89E3\u2192\u59D4\u6D3E\u5BF9\u8C61\u2192\u5E76\u884C\u7B56\u7565\u2192todowrite \u8BB0\u5F55\u2192\u7528\u6237\u786E\u8BA4\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";
|
|
2
2
|
//# sourceMappingURL=orchestrator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/prompts/orchestrator.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/prompts/orchestrator.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,+nWA2G/B,CAAC"}
|
|
@@ -13,9 +13,14 @@ export declare class TaskTracker {
|
|
|
13
13
|
registerBeforeTask(parentSessionId: string, args: TaskArgs): string;
|
|
14
14
|
/**
|
|
15
15
|
* 在 tool.execute.after 中调用,更新任务完成状态
|
|
16
|
-
*
|
|
16
|
+
* 非背景任务:立即标 completed;背景任务:不更新(等 session.idle 事件)
|
|
17
17
|
*/
|
|
18
18
|
updateAfterTask(parentSessionId: string, status: TaskStatus, sessionId?: string): void;
|
|
19
|
+
/**
|
|
20
|
+
* 根据子 session ID 更新任务状态(供 event hook 使用)
|
|
21
|
+
* 当背景任务的 session 变为 idle 时调用
|
|
22
|
+
*/
|
|
23
|
+
updateByChildSessionId(sessionId: string, status: TaskStatus): void;
|
|
19
24
|
/**
|
|
20
25
|
* 生成 Background Job Board 文本
|
|
21
26
|
*/
|
|
@@ -24,6 +29,10 @@ export declare class TaskTracker {
|
|
|
24
29
|
* 标记任务已调和(不再显示在 Unreconciled 中)
|
|
25
30
|
*/
|
|
26
31
|
reconcileJob(alias: string): void;
|
|
32
|
+
/**
|
|
33
|
+
* 清理超时的背景任务(超过 timeoutMs 仍 running 的标为 errored)
|
|
34
|
+
*/
|
|
35
|
+
cleanupStaleJobs(timeoutMs: number): void;
|
|
27
36
|
/**
|
|
28
37
|
* 检查任务是否可复用
|
|
29
38
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../../src/task-manager/tracker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE/D,qBAAa,WAAW;IACtB,OAAO,CAAC,IAAI,CAAgC;IAC5C,OAAO,CAAC,QAAQ,CAA6B;IAC7C,yCAAyC;IACzC,OAAO,CAAC,uBAAuB,CAAM;IAErC,IAAI,sBAAsB,IAAI,MAAM,CAEnC;IAED,mDAAmD;IACnD,OAAO,CAAC,KAAK;IAOb;;OAEG;IACH,kBAAkB,CAAC,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM;
|
|
1
|
+
{"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../../src/task-manager/tracker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE/D,qBAAa,WAAW;IACtB,OAAO,CAAC,IAAI,CAAgC;IAC5C,OAAO,CAAC,QAAQ,CAA6B;IAC7C,yCAAyC;IACzC,OAAO,CAAC,uBAAuB,CAAM;IAErC,IAAI,sBAAsB,IAAI,MAAM,CAEnC;IAED,mDAAmD;IACnD,OAAO,CAAC,KAAK;IAOb;;OAEG;IACH,kBAAkB,CAAC,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM;IAqBnE;;;OAGG;IACH,eAAe,CAAC,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAwBtF;;;OAGG;IACH,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI;IASnE;;OAEG;IACH,YAAY,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IA4CrD;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAOjC;;OAEG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IASzC;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAKlC,2BAA2B;IAC3B,gBAAgB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,EAAE;IAUnD,uBAAuB;IACvB,eAAe,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM;CASjD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/task-manager/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,WAAW,CAAC;AAE3E,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,CAAC;IACnB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/task-manager/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,WAAW,CAAC;AAE3E,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB"}
|