@te-river/opencode-team-mode 1.4.6 → 1.4.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -24,7 +24,7 @@ Instead of one agent trying to do everything, you get:
24
24
  | 🏗️ **Architect** | System designer | Design docs, module structure, API contracts |
25
25
  | 💻 **Implementer** | Code writer | Building features, writing production code |
26
26
  | 🔍 **Reviewer** | Dimension-focused auditor | Single-dimension review (completeness / correctness / impact) — the lead runs 3 in parallel |
27
- | 🧪 **Tester** | Test engineer | Unit tests, integration tests, edge-case coverage, UI verification |
27
+ | 🧪 **Tester** | Test engineer | Unit tests, integration tests, edge-case coverage, static verification (build / typecheck / lint / API tests) |
28
28
  | 🔎 **Researcher** | Knowledge finder | Library evaluation, API docs, best practices |
29
29
 
30
30
  ---
@@ -187,43 +187,43 @@ types into a fresh chat:
187
187
  > `src/legacy/`.
188
188
 
189
189
  ```text
190
- team Breaking this down: design → implement → review → test.
191
- Task board: .git/opencode-team/20260831-143012/rate-limiter/ (session folder + board inside .git/, auto-swept after idle TTL)
190
+ team Route: product behavior change → implementer → tester → reviewer
191
+ (3 dispatches → approval gate applies)
192
192
 
193
- ▸ @architect — designing (writes 01-architect-design.md)
194
- ✓ in-memory token bucket, per-user key, 429 + Retry-After
195
- summary above, full design on the board
193
+ Research: read README, src/app.ts, src/middleware/*
194
+ Blocking questions: none — 1 assumption listed below
196
195
 
197
- ▸ @implementer — building (Reads: 01; writes 02-implementer-middleware.md)
198
- ✓ src/middleware/rateLimit.ts (new), wired into src/app.ts (+3 lines)
196
+ PLAN
197
+ Goal: token-bucket limiter, 100 req/min/user, 429 + Retry-After
198
+ Scope: src/middleware/rateLimit.ts (new), src/app.ts (+3 lines)
199
+ Pipeline: implementer → tester → reviewer (correctness)
200
+ Assumption: in-memory bucket, not Redis — say the word to change
201
+ Boundary: src/legacy/** untouched
202
+ Approve to proceed?
199
203
 
200
- ▸ @reviewer — auditing the diff (Reads: 01, 02; writes 03-reviewer-findings-r1.md)
201
- ⚠ 1 MAJOR — bucket refill does read-modify-write in two steps;
202
- races under concurrent requests
203
- → converted to a fix task; dispatched to @implementer with the
204
- finding text (the user was not asked to approve this step)
204
+ user approved, go
205
205
 
206
- ▸ @implementer r2 — fixing the race (Reads: 03-r1 §MAJOR; writes 04-implementer-r2.md)
207
- ✓ refill restructured to single atomic update
206
+ team ▸ @implementer — STATUS: done
207
+ CHANGES: src/middleware/rateLimit.ts (new) · src/app.ts (+3)
208
+ HANDOFF: bucket {tokens, lastRefill}; refill() is a single atomic pass
209
+ EVIDENCE: tsc clean (output above)
208
210
 
209
- ▸ @reviewer r2 — re-review of fixed scope only
210
- ✓ clean — r1 finding resolved, no regressions
211
+ ▸ @tester — STATUS: done · VERDICT: pass (14/14)
212
+ FINDINGS: burst edge, window expiry, concurrent refill covered;
213
+ src/legacy/** byte-identical
214
+ EVIDENCE: vitest 14 passed
211
215
 
212
- ▸ @tester — covering limiter + boundaries (writes 05-tester-report.md)
213
- ✓ 14/14 pass — burst edge, window expiry, concurrent refill,
214
- src/legacy/** byte-identical (user boundary verified in tests)
216
+ ▸ @reviewer — STATUS: done · VERDICT: approve (correctness)
217
+ FINDINGS: no Critical/Major; 1 Minor (log line noise) noted
215
218
 
216
219
  team Done.
217
220
  rate limiter shipped: rateLimit.ts (new) · app.ts (+3) · 14 tests green
218
- review loop: 1 major found → fixed → clean
219
- assumption: in-memory only — say the word if you want Redis
220
- src/legacy/ untouched
221
- task board left in place — TTL sweep will reclaim it
221
+ review: approve · assumption: in-memory only · src/legacy/ untouched
222
222
  ```
223
223
 
224
- The only message the user typed was the first one. The reviewer's finding
225
- became the implementer's work order without a prompt; every artifact stayed
226
- out of chat and on the board, read only by the dispatch that needed it.
224
+ The only message the user typed was the task and "approved, go". The
225
+ pipeline was a routing-table lookup, execution waited for plan approval,
226
+ and every handoff traveled as a structured skeleton — no file ceremony.
227
227
 
228
228
  ### Desktop-specific features
229
229
 
@@ -266,60 +266,68 @@ opencode-team-mode/
266
266
 
267
267
  ---
268
268
 
269
- ## 🗂️ Shared Blackboard (with automatic cleanup)
270
-
271
- Sub-agents cannot message each other live (platform limitation), so TeamMode coordinates them through a **file blackboard** with strict ownership:
272
-
273
- - **Session isolation:** every conversation owns ONE timestamped session
274
- folder, and each multi-agent task gets its own directory inside it:
275
- `<repo>/.git/opencode-team/<session-key>/<task-slug>/` — inside `.git/`,
276
- so your working tree and commits are **never polluted**. (Non-git
277
- workspaces fall back to the OS temp dir.) Since boards now linger until
278
- the TTL sweep, the session layer keeps a fresh conversation from bumping
279
- into — or reading stale artifacts from — a not-yet-swept board (timestamps
280
- are second-granular, so overlap needs two conversations starting in the
281
- same second).
282
- - **File ownership:** every artifact is one topic-sized file written by
283
- exactly one agent (`01-architect-auth-design.md`, `03-reviewer-auth-r1.md`).
284
- ~100 lines max per file — split topics instead of letting files balloon.
285
- - **Writes are frozen:** a revision is a new round-suffixed file
286
- (`…-r2.md`); nothing is ever appended to or later agents reading stale rounds.
287
- - **The Team Lead is the router:** every dispatch carries a manifest —
288
- `Task:` (self-contained brief), `Reads:` (only the files that work package
289
- needs), `Write to:` (the one file the agent owns). Specialists read nothing
290
- that isn't listed, so long tasks never drown sub-agents in unnecessary context.
291
- - **`MANIFEST.md` is the lead's state board:** a file index plus a ≤50-line
292
- `## Current state` section (phase, decisions still valid, next steps),
293
- updated every converged round — the lead's compressed memory across long tasks.
294
- - The Team Lead also enforces a review/test **feedback loop**: Critical/Major
295
- findings and product bugs automatically become tracked fix tasks until the
296
- deliverable converges.
297
-
298
- ### Ultra Review, pipeline gates & evidence (v1.4.6)
299
-
300
- - **Ultra Review:** every non-trivial change is reviewed by three parallel
301
- Reviewer dispatches, one dimension each — completeness (requirements
302
- coverage), correctness (logic & security), impact (regressions & blast
303
- radius) — each told to ignore the other two. The lead merges the three
304
- reports into one severity-grouped list before the fix loop starts.
305
- Trivial changes may skip review with a one-line reason.
306
- - **Pipeline gates:** research completes before planning; design before
307
- code; code before verify; verify before review; user-visible frontend
308
- changes get UI verification before "done"; the final report waits for
309
- every agent and a truthful todo board. Skipping a phase on a trivial task
310
- costs one line of rationale.
311
- - **Evidence standard:** "done / fixed / passed" claims need verifiable
312
- evidence — command output, logs, diffs, screenshots. Narratives are
313
- progress notes, not proof (enforced on specialists and the lead alike).
314
- - **README-first:** the lead reads the project's README (plus AGENTS.md /
315
- CLAUDE.md) before planning, and restates binding conventions in every
316
- dispatch; specialists treat listed project conventions as binding.
317
- - **Verbatim contracts:** parallel implementers that must interoperate get
318
- the exact data contract (endpoints, field names, types) pasted verbatim
319
- into every affected dispatch — mismatches are the #1 source of
320
- integration bugs.
321
- - **CHANGELOG care:** delivered changes append an entry to the project's
322
- CHANGELOG.md (Keep a Changelog style) when one exists.
269
+ ## 🗂️ Coordination: structured handoffs first, files second (hybrid)
270
+
271
+ Sub-agents cannot message each other live (platform limitation), so TeamMode
272
+ coordinates them through a **structured reply skeleton**, with a file
273
+ blackboard reserved for oversized output:
274
+
275
+ - **Reply skeleton (primary channel):** every specialist's final reply starts
276
+ with `STATUS: / CHANGES: / FINDINGS: / EVIDENCE: / HANDOFF:` and stays ≤50
277
+ lines. Deliverables at that size travel inline — zero file I/O, nothing to
278
+ fall out of sync. The lead relays `HANDOFF` verbatim into the next
279
+ dispatch and machine-checks the skeleton (missing → one retry with it
280
+ inline, then downgrade and note the violation).
281
+ - **Board files (exception only):** when a full deliverable exceeds ~50 lines
282
+ (e.g. a complete architecture doc), the dispatch names ONE file:
283
+ `<repo>/.git/opencode-team/<session-key>/<task-slug>/NN-<role>-<topic>.md`
284
+ — inside `.git/`, so your working tree and commits are **never polluted**
285
+ (non-git workspaces fall back to the OS temp dir). Writes are frozen: a
286
+ revision is a new round-suffixed file (`…-r2.md`); session folders keep a
287
+ fresh conversation from touching a not-yet-swept board.
288
+ - **No MANIFEST.md:** the lead's state memory is its todo list.
289
+ - **Feedback loop:** Critical/Major findings and product bugs automatically
290
+ become tracked fix tasks until the deliverable converges (max 2 loops,
291
+ then escalate to you).
292
+
293
+ ### Deterministic routing, approval gate & adaptive review (v1.4.7)
294
+
295
+ - **Routing table:** the lead picks a fixed pipeline row by task shape —
296
+ question → direct answer; docs-only → implementer; product behavior
297
+ change → implementer → tester → reviewer; multi-module feature →
298
+ architect → implementer → tester → reviewer(s); unknown external tech →
299
+ researcher first. Pipelines have fixed minimums: a product change routed
300
+ below 3 dispatches is a routing bug, and splitting one request into
301
+ sub-3-dispatch pieces to dodge the gate is a protocol violation.
302
+ - **Approval gate (count-based):** ≥3 planned dispatches → the lead
303
+ researches (reading the repo itself; a researcher dispatch only for
304
+ unknown external tech), presents a ≤30-line plan, and **waits for your
305
+ approval** before executing anything. 0-2 dispatches run with a 1-2 line
306
+ notice. A task that grows a third dispatch mid-run pauses for approval.
307
+ Blocking uncertainties are batched and asked immediately — never guessed,
308
+ never drip-fed.
309
+ - **Adaptive review:** default is ONE reviewer dispatch (correctness);
310
+ three parallel dimensions (completeness / correctness / impact) only for
311
+ high-risk profiles — auth/security surface, cross-module data contracts,
312
+ public APIs across ≥3 files.
313
+ - **Static verification:** testers verify via build, typecheck, static
314
+ analysis, and API/unit tests. Improvised browser automation (headless
315
+ screenshots, DOM stubs) is banned; user-visible frontend changes end with
316
+ `UI NOT VERIFIED: <what needs manual checking>` unless the project
317
+ already ships real browser-test tooling.
318
+ - **No-ceremony fast path:** a root cause the lead has already verified
319
+ (file:line evidence) goes straight to the implementer as a fix spec —
320
+ investigation dispatches serve unknowns, not ritual.
321
+ - **Brevity discipline:** route selection is a table lookup; user-visible
322
+ planning text stays ≤5 lines.
323
+ - **Evidence standard (kept):** "done / fixed / passed" claims need
324
+ verifiable evidence — command output, logs, diffs. Narratives are
325
+ progress notes, not proof.
326
+ - **Verbatim contracts (kept):** parallel implementers that must
327
+ interoperate get the exact data contract (endpoints, field names, types)
328
+ pasted verbatim into every affected dispatch.
329
+ - **CHANGELOG care (kept):** delivered changes append an entry to the
330
+ project's CHANGELOG.md (Keep a Changelog style) when one exists.
323
331
 
324
332
  ### Triage — questions don't become code edits
325
333
 
package/README.zh-CN.md CHANGED
@@ -24,7 +24,7 @@ TeamMode 将 OpenCode 桌面版从一个单 Agent 编码助手,升级为**一
24
24
  | 🏗️ **Architect** | 系统设计师 | 设计文档、模块结构、API 契约 |
25
25
  | 💻 **Implementer** | 代码实现者 | 编写生产代码、实现功能 |
26
26
  | 🔍 **Reviewer** | 单维审查员 | 单维度审查(完整性 / 正确性 / 影响面)——lead 三路并行后合并 |
27
- | 🧪 **Tester** | 测试工程师 | 单元测试、集成测试、边界覆盖、UI 验证 |
27
+ | 🧪 **Tester** | 测试工程师 | 单元测试、集成测试、边界覆盖、静态验证(构建 / 类型检查 / lint / API 测试) |
28
28
  | 🔎 **Researcher** | 知识调研员 | 库评估、API 文档、最佳实践调研 |
29
29
 
30
30
  ---
@@ -108,7 +108,7 @@ npm link
108
108
 
109
109
  > 💡 **提示:** 修改 `opencode.json` 后,请**重启 OpenCode 桌面版**使更改生效。
110
110
 
111
- > ⚠️ **模型选择很重要。** 工作流里的每一个判断——分诊、拆解、派发清单、
111
+ > ⚠️ **模型选择很重要。** 工作流里的每一个判断——分诊、拆解、派单、
112
112
  > 整合、审查/测试闭环裁决——都经过 **Team Lead**。这个位置上放弱模型,
113
113
  > 专家再强也救不回整条流水线。如需自定义,还请给你的 `team` agent 钉上你能负担的最强
114
114
  > 推理模型(配方见下方「自定义」节)。
@@ -183,41 +183,42 @@ TeamMode 为 OpenCode 添加了六个斜杠命令,在聊天输入框中输入
183
183
  > 超限返回 429。不要动 `src/legacy/` 下的任何东西。
184
184
 
185
185
  ```text
186
- team 拆解任务:设计 → 实现 → 审查 → 测试。
187
- 任务黑板:.git/opencode-team/20260831-143012/rate-limiter/(会话目录 + 任务板,都在 .git/ 内,闲置超 TTL 自动清理)
186
+ team 路由:产品行为变更 → implementer → tester → reviewer
187
+ (3 次派发 → 触发审批门)
188
188
 
189
- ▸ @architect — 设计中(写入 01-architect-design.md)
190
- ✓ 内存令牌桶、按用户键控、429 + Retry-After
191
- 聊天里只有摘要,设计全文在黑板上
189
+ 调研:已读 README、src/app.ts、src/middleware/*
190
+ 阻塞性问题:无 —— 1 条假设列在下方
192
191
 
193
- ▸ @implementer — 实现中(Reads: 01;写 02-implementer-middleware.md)
194
- ✓ src/middleware/rateLimit.ts(新增),接入 src/app.ts(+3 行)
192
+ 计划
193
+ 目标:令牌桶限流,100 请求/分/用户,429 + Retry-After
194
+ 范围:src/middleware/rateLimit.ts(新增)、src/app.ts(+3 行)
195
+ 流水线:implementer → tester → reviewer(correctness)
196
+ 假设:内存桶而非 Redis —— 要改说一声
197
+ 边界:src/legacy/** 不动
198
+ 批准后开工?
195
199
 
196
- ▸ @reviewer — 审查改动(Reads: 01、02;写 03-reviewer-findings-r1.md)
197
- ⚠ 1 个 MAJOR — 桶回充分两步读-改-写,并发下有竞态
198
- → 已自动转为修复任务,发现原文随任务书派给 @implementer
199
- (这一步没有要求用户拍板)
200
+ 用户 批准,开始
200
201
 
201
- ▸ @implementer r2 — 修竞态(Reads: 03-r1 §MAJOR;写 04-implementer-r2.md)
202
- ✓ 回充重构为单次原子更新
202
+ team ▸ @implementer — STATUS: done
203
+ CHANGES: src/middleware/rateLimit.ts(新增)· src/app.ts(+3)
204
+ HANDOFF: bucket {tokens, lastRefill};refill() 单次原子完成
205
+ EVIDENCE: tsc 无错误(输出见上)
203
206
 
204
- ▸ @reviewer r2 — 只复审改动范围
205
- ✓ 通过 — r1 发现已解决,无回归
207
+ ▸ @tester — STATUS: done · VERDICT: pass(14/14)
208
+ FINDINGS: 覆盖突发边界、窗口过期、并发回充;
209
+ src/legacy/** 逐字节未变
210
+ EVIDENCE: vitest 14 passed
206
211
 
207
- ▸ @tester — 覆盖限流器与边界(写 05-tester-report.md)
208
- ✓ 14/14 通过 — 突发边界、窗口过期、并发回充、
209
- src/legacy/** 逐字节未变(用户边界写进了测试断言)
212
+ ▸ @reviewer — STATUS: done · VERDICT: approve(correctness)
213
+ FINDINGS: 无 Critical/Major;1 条 Minor(日志噪音)已记录
210
214
 
211
215
  team 完成。
212
216
  限流器已交付:rateLimit.ts(新增)· app.ts(+3)· 14 测试全绿
213
- 审查闭环:1 个 major → 已修 → 清零
214
- 假设:仅内存存储——要接 Redis 说一声
215
- src/legacy/ 未动
216
- 任务黑板留在原地,TTL 到期自动回收
217
+ 审查:通过 · 假设:仅内存存储 · src/legacy/ 未动
217
218
  ```
218
219
 
219
- 用户输入的消息只有第一条。reviewer 的发现直接变成 implementer 的下一张
220
- 工单;每份制品都留在黑板上而不是聊天里,只被需要它的那次派发读取。
220
+ 用户只输入了任务本身和"批准,开始"。流水线是路由表查表的结果;执行在
221
+ 计划获批前一步不动;每次交接都是结构化骨架——零文件仪式。
221
222
 
222
223
  ### 桌面版专属特性
223
224
 
@@ -260,44 +261,52 @@ opencode-team-mode/
260
261
 
261
262
  ---
262
263
 
263
- ## 🗂️ 共享黑板(带自动清理)
264
-
265
- 子代理之间无法实时互发消息(平台限制),TeamMode 通过**严格所有权的文件黑板**让它们协作:
266
-
267
- - **会话隔离:** 每个会话拥有一个时间戳会话目录,多 Agent 任务在其内再各自
268
- 独立建任务目录:`<repo>/.git/opencode-team/<session-key>/<task-slug>/` ——
269
- 位于 `.git/` 内,**绝不污染**你的工作区和 commit(非 git 工作区自动回退到系统临时目录)。
270
- 正因为黑板现在会留到 TTL 清扫才消失,会话层让新对话几乎不可能撞上(或误读到)
271
- 上一场还没被收走的旧黑板 —— 时间戳精确到秒,理论上只有同一秒开跑的两个会话才会重名。
272
- - **文件所有权**:每个制品是一个"一主题一文件",只由一个 Agent 写
273
- (`01-architect-auth-design.md`、`03-reviewer-auth-r1.md`)。单文件约 ≤100 行,
274
- 超长就拆主题文件而不是任其膨胀。
275
- - **写入即冻结**:修订 = 新的轮次后缀文件(`…-r2.md`);绝不追加旧文件,
276
- 后续 Agent 也永远读不到过时轮次。
277
- - **Team Lead 是路由器**:每次 dispatch 携带清单——`Task:`(自包含任务书)、
278
- `Reads:`(仅列出该工作包需要的文件)、`Write to:`(该 Agent 本次拥有的唯一文件)。
279
- 子代理不读清单之外的任何东西,超长任务因此不会把无关上下文灌进子代理。
280
- - **`MANIFEST.md` 是 lead 的状态板**:文件索引 + 顶部 ≤50 行的 `## Current state`
281
- 节(阶段、仍然有效的决策、下一步),每轮闭环后更新——lead 跨长任务的压缩记忆。
282
- - Team Lead 同时强制执行审查/测试**反馈闭环**:Critical/Major 问题和产品 bug
283
- 自动转化为跟踪的修复任务,直到交付物收敛。
284
-
285
- ### Ultra Review、流水线门禁与证据标准(v1.4.6)
286
-
287
- - **Ultra Review**:每个非平凡变更由**三个并行 Reviewer 派单**审查,各管一个
288
- 维度——完整性(需求覆盖)/ 正确性(逻辑与安全)/ 影响面(回归与波及面)——
289
- 且各自被明令忽略其余两维。Lead 先把三份报告合并去重成一份按严重度分组的
290
- 清单,再进入修复闭环。平凡变更可跳过审查,但须一行理由。
291
- - **流水线门禁**:调研全部完成才定计划;设计先行于实现;实现归队才测试;
292
- 测试通过才审查;用户可见的前端改动必须通过 UI 验证才算完成;最终报告
293
- 等所有代理收工、看板状态属实。平凡任务跳过阶段须一行理由。
294
- - **证据标准**:"完成 / 修复 / 通过"的声明必须附可验证证据——命令输出、
295
- 日志、diff、截图。纯叙述只是进度说明,不是证明(对子代理和 lead 同样生效)。
296
- - **README 优先**:lead 在规划前先读项目 README(及 AGENTS.md / CLAUDE.md),
297
- 并把有约束力的约定复述进每次派单;子代理对清单内项目约定视同强制。
298
- - **逐字契约**:需要互通的并行实现代理,其数据契约(端点、字段名、类型)只写
299
- 一份并**逐字**贴进每个相关派单——契约错配是集成 bug 之首。
300
- - **CHANGELOG 维护**:项目带有 CHANGELOG.md 时,交付的改动会按
264
+ ## 🗂️ 协作机制:结构化交接优先,文件其次(混合制)
265
+
266
+ 子代理之间无法实时互发消息(平台限制),TeamMode 通过**结构化回复骨架**协调它们,
267
+ 文件黑板只保留给超大产出:
268
+
269
+ - **回复骨架(主通道)**:每个专家的最终回复以
270
+ `STATUS: / CHANGES: / FINDINGS: / EVIDENCE: / HANDOFF:` 开头,全文 ≤50 行。
271
+ 这个尺寸的产出直接内联传递——零文件 I/O,没有"文件没写上"这种故障面。
272
+ Lead 把 `HANDOFF` 原文转贴进下一次派单,并对骨架做机器校验
273
+ (缺失 → 带 skeleton 原文重试一次 → 仍违规则降级记入报告)。
274
+ - **黑板文件(仅例外)**:完整产出确实超过 ~50 行时(如完整架构设计文档),
275
+ 派单点名唯一文件:
276
+ `<repo>/.git/opencode-team/<session-key>/<task-slug>/NN-<role>-<topic>.md`
277
+ ——位于 `.git/` 内,**绝不污染**工作区和 commit(非 git 工作区回退系统临时目录)。
278
+ 写入即冻结:修订 = 新的轮次后缀文件(`…-r2.md`);会话目录层让新对话
279
+ 不会撞上尚未清扫的旧黑板。
280
+ - **没有 MANIFEST.md**:lead 的状态记忆就是它的 todo list。
281
+ - **反馈闭环**:Critical/Major 发现和产品 bug 自动转化为跟踪的修复任务,
282
+ 直到交付物收敛(最多 2 轮,之后升级给用户)。
283
+
284
+ ### 确定性路由、审批门与自适应评审(v1.4.7)
285
+
286
+ - **路由表**:lead 按任务形状查固定流水线行——提问 → 直接回答;纯文档 →
287
+ implementer;产品行为变更 → implementer → tester → reviewer;多模块/跨接口
288
+ 功能 → architect → implementer → tester → reviewer(s);未知外部技术 →
289
+ researcher 前置。流水线有固定下限:产品变更路由到少于 3 次派发即是路由 bug;
290
+ 把一个请求拆成多个 <3 派发的子任务以规避审批门 = 协议违规。
291
+ - **审批门(按计数触发)**:预计派发 ≥3 → lead 先调研(亲自读仓库;仅未知外部
292
+ 技术才派 researcher),呈交 ≤30 行计划,然后**等待你的批准**才执行任何东西。
293
+ 0-2 次派发的小任务以 1-2 行通报直接开工。执行中发现需要第 3 次派发 →
294
+ 暂停等批准。阻塞性不确定**立即批量问一次**——不猜测、不挤牙膏。
295
+ - **自适应评审**:默认 1 个 reviewer 派单(correctness 维度);仅高风险画像
296
+ ——鉴权/安全面、跨模块数据契约、≥3 文件的公共 API 变更——才升级为
297
+ 3 维并行(完整性 / 正确性 / 影响面)。
298
+ - **静态验证**:tester 通过构建、类型检查、静态分析、API/单元测试验证。
299
+ 禁止即兴发明浏览器自动化(headless 截图、DOM stub);用户可见前端改动
300
+ 以 `UI NOT VERIFIED: <待人工检查项>` 如实收尾,除非项目本身已带真实
301
+ 浏览器测试设施。
302
+ - **无仪式捷径**:lead 已亲自验证的根因(file:line 证据)直接变成修复规格
303
+ 派给 implementer——调查性派单服务于未知,不服务于仪式感。
304
+ - **简明纪律**:路由选择是查表;用户可见的计划性文字 ≤5 行。
305
+ - **证据标准(保留)**:"完成 / 修复 / 通过"的声明必须附可验证证据——命令
306
+ 输出、日志、diff。纯叙述只是进度说明,不是证明。
307
+ - **逐字契约(保留)**:需要互通的并行实现代理,其数据契约(端点、字段名、
308
+ 类型)逐字贴进每个相关派单——契约错配是集成 bug 之首。
309
+ - **CHANGELOG 维护(保留)**:项目带有 CHANGELOG.md 时,交付的改动按
301
310
  Keep a Changelog 风格追加条目。
302
311
 
303
312
  ### Triage —— 提问不会变成代码修改
@@ -361,7 +370,7 @@ Team-as-default 出厂行为。若你在 v1.4.4 期间加过 `{ "defaultAgent":
361
370
 
362
371
  ### Team Lead 的模型最关键
363
372
 
364
- Lead 是编排大脑:它给每条消息分类、把工作切成包、写每份派发清单、裁决
373
+ Lead 是编排大脑:它给每条消息分类、按路由表查流水线、写每份派单、裁决
365
374
  reviewer/tester 的发现、合成最终交付。这里的质量问题会**沿流水线放大**——
366
375
  平庸的 Lead 拆错任务、给专家的指令含糊、放走劣质产出;没有任何专家能
367
376
  救回一份从一开始就派错的工单。
package/dist/agents.d.ts CHANGED
@@ -6,15 +6,21 @@
6
6
  * Users see them in the agent picker of OpenCode Desktop and can invoke
7
7
  * them with `@agent-name` or via the `/team-*` commands.
8
8
  *
9
- * Prompt design principles (v1.2):
10
- * - TodoList discipline is a hard rule for the Team Lead (plan-first for
11
- * medium+ tasks, live status updates).
12
- * - Explicit failure-classification retry policy.
13
- * - Mandatory feedback loop: review findings and test failures are
14
- * converted into tracked fix tasks before "done" can be declared.
15
- * - Context-relay rule: sub-agents cannot talk to each other, so every
16
- * dispatch embeds the relevant prior outputs.
17
- * - Research findings carry confidence tags and critical ones are verified.
9
+ * Prompt design principles (v1.4.7 — "subtraction" release):
10
+ * - Deterministic routing table replaces free-form scheduling deliberation
11
+ * (fixes the lead's "inner monologue" — route selection is a lookup).
12
+ * - Structured reply skeleton (STATUS/CHANGES/FINDINGS/EVIDENCE/HANDOFF)
13
+ * is the primary inter-agent channel; the file blackboard is demoted to
14
+ * an oversized-deliverable exception (>~50 lines). MANIFEST.md is gone.
15
+ * - Approval gate is a mechanical dispatch count (>=3 -> plan + wait);
16
+ * blocking uncertainties are batched and asked immediately.
17
+ * - Verified root causes go straight to the implementer — no ceremonial
18
+ * research dispatches.
19
+ * - Verification defaults to static checks; improvised browser automation
20
+ * is explicitly banned.
21
+ * - Adaptive review: one reviewer by default, three dimensions only for
22
+ * high-risk profiles.
23
+ * - All agents run at temperature 0.2 for format discipline.
18
24
  */
19
25
  import type { AgentConfig } from "./types.js";
20
26
  export declare const agents: Record<string, AgentConfig>;
@@ -1 +1 @@
1
- {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AA2jB7C,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAO9C,CAAA"}
1
+ {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AA4hB7C,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAO9C,CAAA"}