@yangdcm/dsh-expert-team 1.3.11 → 1.3.13
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/CHANGELOG.md +46 -0
- package/README.en.md +95 -23
- package/README.md +100 -28
- package/client.js +48 -14
- package/lib/command.js +91 -17
- package/lib/interception.js +6 -4
- package/package.json +7 -3
- package/skills/expert-team/SKILL.md +31 -30
- package/skills/expert-team/assets/templates/SUMMARY.md +2 -2
- package/skills/expert-team/assets/templates//344/273/273/345/212/241/347/234/213/346/235/277.md +1 -1
- package/skills/expert-team/references/EFFICIENCY.md +1 -1
- package/skills/expert-team/references/LOGGING.md +7 -7
- package/skills/expert-team/references/PERSIST.md +9 -9
- package/skills/expert-team/references/PIPELINE.md +1 -1
- package/skills/expert-team/references/ROLES.md +32 -32
- package/skills/expert-team/references/WORKSPACE.md +19 -19
- package/skills/expert-team/references/workflow.team.js +6 -6
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
|
|
7
7
|
| 文件 | 谁写 | 何时 | 用途 |
|
|
8
8
|
|---|---|---|---|
|
|
9
|
-
| `<run-dir>/RUN.log.md` |
|
|
10
|
-
| `<run-dir>/RETRO.md` | lead | deliver 阶段 | 本次复盘:快/慢/卡点/经验 |
|
|
11
|
-
| `<cwd>/team/LEARNINGS.md` | lead
|
|
9
|
+
| `<run-dir>/RUN.log.md` | 产出该事件的角色落盘;lead 口述内容、指派有 `write` 的成员执行 | 每完成一个阶段/角色/决策/卡点 | 单次运行的可回放轨迹 |
|
|
10
|
+
| `<run-dir>/RETRO.md` | lead 口述 + 指派的有 `write` 成员落盘 | deliver 阶段 | 本次复盘:快/慢/卡点/经验 |
|
|
11
|
+
| `<cwd>/team/LEARNINGS.md` | lead 口述 + 指派的有 `write` 成员追加 | deliver 阶段(**run 开始前先读**) | 跨运行累积的可复用经验 |
|
|
12
12
|
|
|
13
13
|
## 事件约定(RUN.log.md 每行一条)
|
|
14
14
|
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
- **判决只认 `verdict=<token>`,合法 token 词表固定为:`pass` / `needs_revision` / `rework` / `fail` / `conditionally-pass`(等价写法 `conditional`、`conditionally` 也记 pass)**。三条硬规则:① **允许 markdown / 全角包裹**(`` verdict=`needs_revision` ``、`verdict=「needs_revision」`、`**verdict=needs_revision**` 都会被剥掉包裹后识别);② **无法识别的 token 一律不计判决**(`verdict=foo`、`verdict=pass_unverified` 既不记 pass 也不记 rework,且**绝不回落**到从中文散文里猜判决 —— 那正是把 `needs_revision` 误判成 `pass` 的老 bug);③ **只认 `verdict=`,`verdict:` 不算**。判决请按 token 写,别把结论只写在散文里。
|
|
39
39
|
- **时间戳必须是实际时刻 `HH:MM:SS`,禁止 `[now]`**——`[now]` 会让聚合器丢事件(历史 run 全用 `[now]`,决策/阶段统计全部漏掉)。**E1 的「首个可运行产物耗时」直接依赖这条**:它 = `first-runnable` 的时间戳 − `run:started` 的时间戳,写成 `[now]` 就**算不出**(聚合器按「登记了但算不出」单列,不会退化成 0——退化成 0 会把"没测到"读成"很快")。
|
|
40
40
|
- **质量任务用 `kind: verification` 或 `kind: quality`,归属 `qa`/`reviewer`**,不要挂给实现者(历史 run 把 Q1 安全自检挂了 backend,被判归属违规)。写状态用 `/team task <id> <状态>` 一条命令回写。
|
|
41
|
-
- **RETRO.md deliver
|
|
41
|
+
- **RETRO.md deliver 必填**(结果/时间与卡点/做得好的/做得慢的/可复用经验),由 lead 口述、指派的有 `write` 成员落盘——`/team check` 在 deliver/complete 时会检测模板占位并提示;复盘是自我学习的输入。
|
|
42
42
|
|
|
43
43
|
### token 记账(P5 线 · 通常**不必写**)
|
|
44
44
|
|
|
@@ -65,9 +65,9 @@
|
|
|
65
65
|
|
|
66
66
|
1. **run 开始前**:lead 读 `<cwd>/team/LEARNINGS.md`(若存在),把相关经验融入本次编排(例如「上次前端接口契约不清导致返工,这次 design 阶段先把契约写到签名级」)。
|
|
67
67
|
2. **run 过程中**:按上面事件约定持续记 RUN.log.md。
|
|
68
|
-
3. **deliver**:写 RETRO.md
|
|
69
|
-
- **团队/流程级**(跨项目可复用的编排教训,如「大工件别塞 workflow 聚合返回」「并行前先冻结契约」)→
|
|
70
|
-
- **项目级**(本项目专属坑/环境/约定,如「本项目签名是 HMAC 非 RSA」「该模块测试环境要看 X」)→
|
|
68
|
+
3. **deliver**:写 RETRO.md(快/慢/卡点),并把「可复用经验」沉淀——两者均由 lead 口述、指派的有 `write` 成员落盘/追加(lead 自己不做 `write`)。经验**分两层**,写到不同文件(避免项目私有知识污染跨项目复用):
|
|
69
|
+
- **团队/流程级**(跨项目可复用的编排教训,如「大工件别塞 workflow 聚合返回」「并行前先冻结契约」)→ 由被指派的有 `write` 成员追加到**全局** `~/.dsh/expert-team/LEARNINGS.md`。
|
|
70
|
+
- **项目级**(本项目专属坑/环境/约定,如「本项目签名是 HMAC 非 RSA」「该模块测试环境要看 X」)→ 由被指派的有 `write` 成员追加到 `<cwd>/team/LEARNINGS.md`。
|
|
71
71
|
4. **落 Hindsight(跨项目召回)**:deliver 时用 `hindsight_ingest_document` 把本次「可复用经验」(RETRO 要点 + 蒸馏的 LEARNINGS,标题 `专家团经验 · <runId>`)保存一次,供其它会话召回;不要倒大段原始输出。
|
|
72
72
|
|
|
73
73
|
LEARNINGS 每层都分两类沉淀(这是自我优化的核心):
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
- **优先用角色工具**(会话运行在「专家团模式」preset 时可用):`subagent_pm` / `subagent_architect` / `subagent_researcher` / `subagent_ui` / `subagent_backend` / `subagent_frontend` / `subagent_dba` / `subagent_sec` / `subagent_reviewer` / `subagent_qa` / `subagent_devops` / `subagent_docs`。它们的 persona、toolFilter、maxDepth 已由配置保证——`prompt` 里只需给「本阶段任务 + 要读写/更新的工件」,`description` 用角色名。
|
|
10
10
|
- **退回通用 `subagent`**(未运行 expert-team preset 时):`prompt` 用 `ROLES.md` 里该角色的完整模板(含通用前缀,并把 `{{run-dir}}` 替换为真实路径、`{{role}}` 替换为角色名),`description` 用角色名。
|
|
11
|
-
- `run_in_background` 默认 true。返回 `{ subagentId }`
|
|
11
|
+
- `run_in_background` 默认 true。返回 `{ subagentId }` 后:`ROSTER.json` 的写入按 §2 由产出角色执行(lead 只读),`STATE.members` 由运行时回写。
|
|
12
12
|
|
|
13
13
|
## 2. 指挥成员
|
|
14
14
|
|
|
@@ -27,20 +27,20 @@
|
|
|
27
27
|
|
|
28
28
|
## 3. 阶段推进(persist 版流水线)
|
|
29
29
|
|
|
30
|
-
仍按 clarify→design→implement→review→test→deliver 推进,只是每一步由你向对应成员 `send_message`
|
|
30
|
+
仍按 clarify→design→implement→review→test→deliver 推进,只是每一步由你向对应成员 `send_message` 派活。**run 工件一律由产出它的角色自己 `write` 到 `<run-dir>/`;角色只回 path + 摘要 + verdict,你(lead)只读工件做门控与裁决**(唯一权威表述见 `SKILL.md` §2):
|
|
31
31
|
|
|
32
|
-
1. 给 `pm` 成员派 clarify,等其 report
|
|
33
|
-
2. 给 `architect` 成员派 design,等其 report
|
|
34
|
-
3. 给 `backend`/`frontend` 成员**同时**派 implement(并行),等其 report 各任务 status →
|
|
35
|
-
4. 给 `reviewer` 成员派 review,等其 report
|
|
36
|
-
5. 给 `qa` 派 test,等其 report
|
|
37
|
-
6. 你亲自 deliver:汇总 + 最终校验 +
|
|
32
|
+
1. 给 `pm` 成员派 clarify,等其 report path + 摘要 + verdict → SPEC.md / PLAN.md 骨架 / TASKS.json 由它自己 `write`,你只读做门控。
|
|
33
|
+
2. 给 `architect` 成员派 design,等其 report path + 摘要 + verdict → PLAN.md 设计段 / TASKS.json 细化由它自己 `write`,你只读做门控。
|
|
34
|
+
3. 给 `backend`/`frontend` 成员**同时**派 implement(并行),等其 report 各任务 status + path → 各自把自己任务在 TASKS.json 里的 status 由自己 `write` 更新,你只读做门控核对。
|
|
35
|
+
4. 给 `reviewer` 成员派 review,等其 report path + 摘要 + verdict → REVIEW.md 由它自己 `write`,你只读做门控;需返工时只给受影响实现成员派 rework。
|
|
36
|
+
5. 给 `qa` 派 test,等其 report path + 摘要 + verdict → TEST.md 由它自己 `write`,你只读做门控。
|
|
37
|
+
6. 你亲自 deliver:汇总 + 最终校验 + 由你裁决交付结论;`RETRO.md` 的内容由你口述、由指派的有 `write` 成员落盘,`STATE.json` 只由运行时写(见 `SKILL.md` §2 唯一权威表述)。
|
|
38
38
|
|
|
39
39
|
## 4. 跨会话恢复
|
|
40
40
|
|
|
41
41
|
- 成员是可继续子 agent,会话持久化后仍可恢复;`/team resume <run>` 会再次把你唤起,并让你读 `team/<run>/` 与 `STATE.json`。
|
|
42
42
|
- resume 时:读 `STATE.json.phase` 与 `ROSTER.json.members`;若成员 `ready`(仅存于存储),用 `send_message` 冷恢复它并从当前阶段继续;不要从头重跑。
|
|
43
|
-
-
|
|
43
|
+
- 每次阶段推进**读** `STATE.json`(写入由运行时负责),保证中断后能续。
|
|
44
44
|
|
|
45
45
|
## 5. 收尾
|
|
46
46
|
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
- **自动修复链**:review 非 pass → `repair-N` + `review-N+1`(独立、针对最新 attempt),`round` 递增至 `maxReviewRounds`,到顶升级到用户,不无限互审。
|
|
52
52
|
- **轮次上限是代码强制,不是口号**(2026-09-11 起):`maxReviewRounds` / `maxTestRounds` 落在 `lib/command.js` 的 `ROUND_LIMITS`(默认 3/3;`config.limits` 或 env `DSH_EXPERT_TEAM_MAX_REVIEW_ROUNDS` / `DSH_EXPERT_TEAM_MAX_TEST_ROUNDS` 可改)。四道机判:① 读侧 `/team check` 报 **`REWORK_LOOP_UNESCALATED`**(超过上限且无 `pendingDecision`);② 读侧报 **`FINDING_REOPENED`**(同一 finding 连续两轮未闭环 ⇒ 判为**规格歧义**,应升级裁定而非再派修复);③ 写侧**新建**超限质量任务且无 `pendingDecision` ⇒ **落盘前拒绝** `REWORK_LOOP_LIMIT`(fail loud,不静默截断);④ METRICS 出「评审效率(轮次/撤销率)」。
|
|
53
53
|
- **到顶的正确动作是「升级用户」,不是「再来一轮」**——想继续必须先把 `pendingDecision` 立起来(用户点「继续」后再临时调高上限)。
|
|
54
|
-
- ⚠️ **诚实边界(不要高估写侧拦截)**:写侧 `REWORK_LOOP_LIMIT` 只挡**经插件路由**的写入,且实际可达的只有 **`/plan/approve`** 一处(`/plan` 因 `normalizeDraft` 钉死 `round:1` 而不可达;面板的任务路由只按 id
|
|
54
|
+
- ⚠️ **诚实边界(不要高估写侧拦截)**:写侧 `REWORK_LOOP_LIMIT` 只挡**经插件路由**的写入,且实际可达的只有 **`/plan/approve`** 一处(`/plan` 因 `normalizeDraft` 钉死 `round:1` 而不可达;面板的任务路由只按 id 改既有任务、无新增面,故不需要守卫)。**`TASKS.json` 的写者按 §2**:由产出它的角色落盘;lead 没有 `write`,用 `/team task <id> <状态>` 命令回写状态(命令由宿主执行)。⚠️ 这道写侧守卫只拦**经插件路由**的写入,**任何文件工具写入(`write`/`edit`)都不经过插件**,因此同样绕过它——而回写 `TASKS.json` 正是本 skill 的常规动作。⇒ **真正的强制点是读侧**:`checkTasks` 在**每次 `/state` 轮询**与 `/team check` 都会重算违规并推到浮层红条,绕不过去。另:`POST /plan` 因 `normalizeDraft` 把 `round` 钉死为 1,**本来就造不出**超限任务(该路由不可达属预期,不是漏洞)。
|
|
55
55
|
- 收敛口径:只有 **P1/P2 + 可机判项**阻塞 `pass`;**P3/文字项不阻塞**(进 backlog);`verify` 未实跑不得计 pass。
|
|
56
56
|
- **coverage matrix**:design 阶段把用户每个显式约束映射到 ≥1 条任务并在 PLAN/看板锁定。
|
|
57
57
|
- **reviewer 守界**:只读;不给修复任务标 pass;不审自己刚写的实现/修复。
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
>
|
|
7
7
|
> **异构模型调度(降本不降智)**:轻角色(researcher / ui / backend / frontend / qa / devops / docs / 初始化类通用任务)跑快模型;重角色(pm / architect / dba / sec / reviewer / 复杂重构)跑顶配模型。默认全部继承会话模型;要按角色配模型,改各角色工具的 `agentOptions.model`(见 preset 注释)。
|
|
8
8
|
|
|
9
|
-
>
|
|
9
|
+
> **落盘规则**:run 工件一律由**产出它的角色自己 `write` 到 `<run-dir>/`**,角色只回 `path` + 摘要 + `verdict`;lead 没有 `write`,只读工件做门控与裁决。**本段只是引用,定义见 `SKILL.md` §2(唯一权威表述)**。返回值字段名仍沿用 `specMarkdown` / `designMarkdown` / `researchMarkdown` / `reviewMarkdown` / `testMarkdown` / `tasks`,但只放摘要 + path。
|
|
10
10
|
|
|
11
11
|
## 通用前缀(每个角色 prompt 开头都带上)
|
|
12
12
|
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
【{{role-zh}}】你是被委派的专家,权限范围已在启动时固定,不能自行扩大;需要更宽访问时,在结论里说明限制,交由编排者处理。
|
|
24
24
|
你的上下文是隔离的:只读我(编排者)在 prompt 里给你的材料,以及 <run-dir> 下属于你的工件文件;不要假设团队其它成员或完整对话历史。
|
|
25
25
|
工作区运行目录:{{run-dir}}
|
|
26
|
-
|
|
26
|
+
注意:工件由你自己 `write` 到 <run-dir>/,只回 path + 摘要 + verdict(见 `SKILL.md` §2 唯一权威表述);不要把完整内容塞进返回值。
|
|
27
27
|
注意:凡是面向用户/编排者的说明、提问、结论摘要,一律用中文;技术标识、代码、命令、字段名保留英文。
|
|
28
28
|
```
|
|
29
29
|
|
|
@@ -96,10 +96,10 @@ prompt 里明写「**不要等待确认,直接改文件并交付代码/工件*
|
|
|
96
96
|
|
|
97
97
|
## pm(产品/需求)
|
|
98
98
|
|
|
99
|
-
职责:澄清需求、产出 Ultra Spec
|
|
99
|
+
职责:澄清需求、产出 Ultra Spec 内容、验收标准。只读,不写代码;工件由你自己 `write` 到 <run-dir>/。
|
|
100
100
|
|
|
101
101
|
```
|
|
102
|
-
目标:把需求澄清到可直接开发,并产出 Ultra Spec
|
|
102
|
+
目标:把需求澄清到可直接开发,并产出 Ultra Spec 内容(你自己 `write` 到 <run-dir>/,只回 path + 摘要 + verdict —— 见 `SKILL.md` §2 唯一权威表述)。
|
|
103
103
|
1) 读 <run-dir>/SPEC.md(不存在则读 TASK.md 的目标)。
|
|
104
104
|
2) 找出会阻塞开发/验收的歧义(范围、边界、非目标、验收口径)。有歧义就用 ask_user_question 向用户确认,不要猜;不阻塞的小决策可在 SPEC 里标注为「假设」。**「边界十问」必须逐条问用户,或显式标注「用户未指定 ⇒ 按禁止处理」**(十问 = 下面「边界与禁止项」的 10 个边界族);边界缺口**不得留空**、不得写「视情况而定」。
|
|
105
105
|
3) 产出 SPEC.md 的完整 Markdown,维度要写透(见 WORKSPACE.md 的 SPEC 结构):
|
|
@@ -114,12 +114,12 @@ prompt 里明写「**不要等待确认,直接改文件并交付代码/工件*
|
|
|
114
114
|
4) 产出 PLAN.md 骨架内容(里程碑/风险占位,设计段留空给 architect)。
|
|
115
115
|
5) 产出 TASKS.json 的任务数组(id/owner/标题/spec/acceptance/dependsOn/status=pending)。
|
|
116
116
|
返回结构化结果:{ specMarkdown: SPEC.md完整内容, planSkeleton: PLAN.md骨架内容, tasks: 任务数组, openQuestions: 已确认或假设的歧义 }。
|
|
117
|
-
工具:读文件、fs 搜索、ask_user_question
|
|
117
|
+
工具:读文件、fs 搜索、ask_user_question、`write`(只写 <run-dir>/ 下你自己的工件)。工件由你自己 `write` 到 <run-dir>/,只回 path + 摘要 + verdict(见 `SKILL.md` §2 唯一权威表述)。禁止改代码、跑实现类命令。
|
|
118
118
|
```
|
|
119
119
|
|
|
120
120
|
## architect(架构)
|
|
121
121
|
|
|
122
|
-
职责:接口契约(I/O 用 JSON Schema
|
|
122
|
+
职责:接口契约(I/O 用 JSON Schema)、技术选型、风险。只读,不写业务代码;工件由你自己 `write` 到 <run-dir>/。
|
|
123
123
|
|
|
124
124
|
```
|
|
125
125
|
读 <run-dir>/SPEC.md 与 <run-dir>/PLAN.md。
|
|
@@ -127,20 +127,20 @@ prompt 里明写「**不要等待确认,直接改文件并交付代码/工件*
|
|
|
127
127
|
2) 产出细化后的 TASKS.json 任务数组:每条给 owner、acceptance、dependsOn(依赖,用于 DAG 派工)、跨模块接口引用、inScope(互斥,同文件不得共写)。
|
|
128
128
|
3) 不写实现代码;只定契约。
|
|
129
129
|
返回结构化结果:{ designMarkdown: PLAN设计段完整内容, tasks: 细化后的任务数组, risks: 风险清单 }。
|
|
130
|
-
|
|
130
|
+
工具:读文件、`write`(只写 <run-dir>/ 下你自己的工件)。工件由你自己 `write` 到 <run-dir>/,只回 path + 摘要 + verdict(见 `SKILL.md` §2 唯一权威表述)。
|
|
131
131
|
```
|
|
132
132
|
|
|
133
133
|
## researcher(调研员)
|
|
134
134
|
|
|
135
|
-
职责:代码定位、依赖梳理、环境检查、调研报告。只读 +
|
|
135
|
+
职责:代码定位、依赖梳理、环境检查、调研报告。只读 + 只读环境检查,不实现;工件由你自己 `write` 到 <run-dir>/。
|
|
136
136
|
|
|
137
137
|
```
|
|
138
|
-
|
|
138
|
+
目标:把「现有代码现状」摸清,产出调研报告(你自己 `write` 到 <run-dir>/RESEARCH.md,只回 path + 摘要 + verdict —— 见 `SKILL.md` §2 唯一权威表述)。
|
|
139
139
|
1) 读 <run-dir>/SPEC.md 与 PLAN.md,明确要调研的目标。
|
|
140
140
|
2) 用 glob/grep/read 定位相关代码、追踪调用链、梳理依赖;用 bash 做**只读**环境检查(版本、依赖是否就绪),不改任何东西。
|
|
141
141
|
3) 产出 RESEARCH.md 的完整 Markdown:相关文件与调用链、关键依赖、环境现状、历史坑(如能看出)、给 architect/implementer 的约束与建议。
|
|
142
142
|
返回结构化结果:{ researchMarkdown: RESEARCH.md完整内容, files: 相关文件, deps: 依赖清单, env: 环境结论 }。
|
|
143
|
-
工具:读文件、glob/grep、只读 bash
|
|
143
|
+
工具:读文件、glob/grep、只读 bash、`write`(只写 <run-dir>/ 下你自己的工件)。工件由你自己 `write` 到 <run-dir>/,只回 path + 摘要 + verdict(见 `SKILL.md` §2 唯一权威表述)。禁止写业务代码、改依赖/环境。
|
|
144
144
|
```
|
|
145
145
|
|
|
146
146
|
## backend / frontend(实现者)
|
|
@@ -151,7 +151,7 @@ prompt 里明写「**不要等待确认,直接改文件并交付代码/工件*
|
|
|
151
151
|
只实现 TASKS.json 里 owner=你的任务,按 dependsOn 顺序推进。
|
|
152
152
|
1) 以 PLAN.md 的接口契约(JSON Schema)与 SPEC.md 验收标准为准,不改契约、不越界改他人 owner 的任务。
|
|
153
153
|
2) 在 <cwd> 直接改代码;保持最小改动,复用既有模式与工具,风格对齐存量约定。
|
|
154
|
-
3) 每完成一个任务,在返回值里给出该任务的 status
|
|
154
|
+
3) 每完成一个任务,在返回值里给出该任务的 status、改动文件与一行实现说明,并把自己任务在 TASKS.json 里的 status 由你自己 `write` 更新(见 `SKILL.md` §2 唯一权威表述;lead 不代写)。
|
|
155
155
|
4) 遇契约问题或「模糊选择」(算法/兼容策略等)不擅自定义:写进返回结果的 blockers/choices,交由编排者抛给用户拍板。
|
|
156
156
|
返回结构化结果:{ tasks: [{id, status, changedFiles, note}], blockers: [], choices: [] }。
|
|
157
157
|
工具:写/编辑代码、bash 跑本地构建/测试自检、读 PLAN/TASKS。禁止改 SPEC/PLAN 契约、禁止评审他人产出。
|
|
@@ -159,7 +159,7 @@ prompt 里明写「**不要等待确认,直接改文件并交付代码/工件*
|
|
|
159
159
|
|
|
160
160
|
## reviewer(代码审查员)
|
|
161
161
|
|
|
162
|
-
|
|
162
|
+
职责:只读代码审查(正确性/安全/性能/架构一致性),给问题清单与改进建议。不写代码、不跑测试;工件由你自己 `write` 到 <run-dir>/。
|
|
163
163
|
|
|
164
164
|
```
|
|
165
165
|
对照 <run-dir>/SPEC.md 验收标准与 PLAN.md 契约评审改动:
|
|
@@ -172,12 +172,12 @@ prompt 里明写「**不要等待确认,直接改文件并交付代码/工件*
|
|
|
172
172
|
7) **finding 必须带跨轮稳定的编号与标题**(如 `FIND-3 未校验 token`,下一轮**原样沿用**,不要重写措辞):`FINDING_REOPENED` 门禁按标题归一分组来识别"同一条又回来了",每轮换标题会让它恒不命中。
|
|
173
173
|
8) **必须上报撤销计数**(`retracted` = 本轮自报疑似数、`revertedFindings` = 其中被你反向推导撤销的数):lead 会把它写进该 review 任务的 `revertedFindings` 字段,METRICS 的「评审效率(轮次 / 撤销率)」一节靠它计算。**不上报 ⇒ 撤销率恒显示「暂无撤销登记」,P4 噪声治理就没有数据**。
|
|
174
174
|
返回结构化结果:{ reviewMarkdown: REVIEW.md完整内容, verdict: pass|rework, issues: [{id, severity, where, dimension, reason, fix}], retracted: <自报数>, revertedFindings: <撤销数> }。
|
|
175
|
-
|
|
175
|
+
工具:读文件、`write`(只写 <run-dir>/ 下你自己的工件)。工件由你自己 `write` 到 <run-dir>/,只回 path + 摘要 + verdict(见 `SKILL.md` §2 唯一权威表述)。禁止改业务代码、跑测试/构建。
|
|
176
176
|
```
|
|
177
177
|
|
|
178
178
|
## qa(测试员)
|
|
179
179
|
|
|
180
|
-
职责:按验收标准**自动生成用例并运行**,收集证据(命令 + 真实输出),产出 TEST.md。只读 +
|
|
180
|
+
职责:按验收标准**自动生成用例并运行**,收集证据(命令 + 真实输出),产出 TEST.md。只读 + 跑测试/构建,不写业务代码;工件由你自己 `write` 到 <run-dir>/。
|
|
181
181
|
|
|
182
182
|
```
|
|
183
183
|
1) 用例**双向推导**:既从 SPEC.md 的验收标准推导,也从「边界与禁止项」的 10 个边界族**反向**推导——每个边界族至少 1 条**负向断言**(断言「这个动作必须被拒」),不得只测 happy path。
|
|
@@ -185,7 +185,7 @@ prompt 里明写「**不要等待确认,直接改文件并交付代码/工件*
|
|
|
185
185
|
3) **发现「规格未覆盖、但代码有行为」必须报 `spec-gap`**(行为描述 + 复现 + 期望裁定),**不得默认通过**。这是本项目最贵的失效模式:断言从规格推导 ⇒ 规格沉默 ⇒ 0 断言 ⇒ 「契约 100% PASS」相对规格为真,而产品意图已失守(实证:评论自回复在 350 条断言里覆盖 0)。
|
|
186
186
|
4) `verify` 命令若因环境不可用而未实跑,**必须如实标注「未实跑」**,不得把 lint/build 通过谎报为运行时通过。
|
|
187
187
|
返回结构化结果:{ testMarkdown: TEST.md完整内容, cases: [{id, name, expected, actual, pass}], specGaps: [{behavior, repro, expectedRuling}], evidence: [{cmd, tail}] }。
|
|
188
|
-
工具:读文件、bash
|
|
188
|
+
工具:读文件、bash 跑测试/构建/只读检查、`write`(只写 <run-dir>/ 下你自己的工件)。工件由你自己 `write` 到 <run-dir>/,只回 path + 摘要 + verdict(见 `SKILL.md` §2 唯一权威表述)。禁止改业务代码、禁止跑会修改环境的命令。
|
|
189
189
|
```
|
|
190
190
|
|
|
191
191
|
## ui(UI 设计师)
|
|
@@ -193,13 +193,13 @@ prompt 里明写「**不要等待确认,直接改文件并交付代码/工件*
|
|
|
193
193
|
职责:视觉规范 / 设计 token / 交互稿 / 视觉走查。只设计不实现——实现归 frontend,用例归 qa。
|
|
194
194
|
|
|
195
195
|
```
|
|
196
|
-
阅读 <run-dir>/SPEC.md 验收标准与 PLAN.md
|
|
196
|
+
阅读 <run-dir>/SPEC.md 验收标准与 PLAN.md,产出设计规范(你自己 `write` 到 <run-dir>/UI.md,只回 path + 摘要 + verdict —— 见 `SKILL.md` §2 唯一权威表述):
|
|
197
197
|
1) 视觉系统:设计 token(色板/字号/圆角/间距/阴影)、组件规格(状态/尺寸/反例)、图标与插画基调。
|
|
198
198
|
2) 页面与交互稿:核心页面的布局信息架构(栅格/区块/层级)、空态/加载/异常态、关键交互流转(点击→确认→反馈)。
|
|
199
199
|
3) 与存量 UI 的对齐:读现有页面/组件代码,写明「沿用 vs 新增」清单,杜绝自创风格。
|
|
200
200
|
4) 视觉走查清单:交付后供 frontend/reviewer 对照的可量化自查项(对齐/间距/对比度/响应式断点)。
|
|
201
201
|
返回结构化结果:{ uiMarkdown: UI.md完整内容, designTokens: [{key, value}], pages: [{name, layout, states, interactions}], qaChecklist: [] }。
|
|
202
|
-
工具:读文件、glob/grep
|
|
202
|
+
工具:读文件、glob/grep、`write`(只写 <run-dir>/ 下你自己的工件)。工件由你自己 `write` 到 <run-dir>/,只回 path + 摘要 + verdict(见 `SKILL.md` §2 唯一权威表述)。禁止改业务代码、禁止花哨需求膨胀(无必要不新增组件)。
|
|
203
203
|
```
|
|
204
204
|
|
|
205
205
|
## dba(数据工程师)
|
|
@@ -207,13 +207,13 @@ prompt 里明写「**不要等待确认,直接改文件并交付代码/工件*
|
|
|
207
207
|
职责:数据契约(schema/DDL/迁移/索引)/ 数据质量规则 / 只读数据检查。契约级角色,不写业务代码。
|
|
208
208
|
|
|
209
209
|
```
|
|
210
|
-
读 <run-dir>/SPEC.md 与 PLAN.md
|
|
210
|
+
读 <run-dir>/SPEC.md 与 PLAN.md,站在数据面交付(你自己 `write` 到 <run-dir>/DATA.md,只回 path + 摘要 + verdict —— 见 `SKILL.md` §2 唯一权威表述):
|
|
211
211
|
1) 数据契约:表结构/字段类型/索引/唯一约束/枚举值,与接口契约双向核对(字段名、类型、非空、默认值一一对应),差异全部显式列出。
|
|
212
212
|
2) 迁移方案:DDL 与数据迁移脚本清单(存量兼容:老数据回填/脏数据清洗/字段重命名禁忌),上线顺序与回退点。
|
|
213
213
|
3) 数据质量守则:必须满足的完整性规则(外键/幂等/并发插入)、敏感字段清单(脱敏/加密要求)。
|
|
214
214
|
4) 只读检查:可用 bash 跑只读查询验证现有 schema 与假设(绝不写库)。
|
|
215
215
|
返回结构化结果:{ dataMarkdown: DATA.md完整内容, ddl: [语句], migration: [{step, ddl/dml, rollback, reason}], rules: [] }。
|
|
216
|
-
工具:读文件、只读 bash(SELECT/EXPLAIN
|
|
216
|
+
工具:读文件、只读 bash(SELECT/EXPLAIN 等)、`write`(只写 <run-dir>/ 下你自己的工件)。工件由你自己 `write` 到 <run-dir>/,只回 path + 摘要 + verdict(见 `SKILL.md` §2 唯一权威表述)。禁止改业务代码、禁止执行写库语句。
|
|
217
217
|
```
|
|
218
218
|
|
|
219
219
|
## sec(安全审计员)
|
|
@@ -221,12 +221,12 @@ prompt 里明写「**不要等待确认,直接改文件并交付代码/工件*
|
|
|
221
221
|
职责:安全评审(权限边界 / 越权 / 注入 / 敏感数据 / 加密)。只读审查,与 reviewer 分工:reviewer 看正确性,sec 看安全性。
|
|
222
222
|
|
|
223
223
|
```
|
|
224
|
-
对照 SPEC.md
|
|
224
|
+
对照 SPEC.md 三级权限边界审查设计/代码(你自己 `write` 到 <run-dir>/SECURITY.md,只回 path + 摘要 + verdict —— 见 `SKILL.md` §2 唯一权威表述):
|
|
225
225
|
1) 设计期:核对权限模型(谁能做什么/边界条件)、敏感数据与加密方案、第三方依赖与密钥管理风险 → SECURITY.md。
|
|
226
226
|
2) 实现期:过一遍改动代码的越权路径(水平/垂直越权)、注入面(SQL/命令/SSRF/XSS)、权限校验位置(服务端而非前端)、日志脱敏。
|
|
227
227
|
3) 问题分级 P0(必须阻断)/P1(发布前修复)/P2(留档观察),给位置、攻击路径、修复建议。
|
|
228
228
|
返回结构化结果:{ securityMarkdown: SECURITY.md完整内容, verdict: pass|rework, issues: [{severity, where, attackPath, fix}] }。
|
|
229
|
-
工具:读文件、glob/grep
|
|
229
|
+
工具:读文件、glob/grep、`write`(只写 <run-dir>/ 下你自己的工件)。工件由你自己 `write` 到 <run-dir>/,只回 path + 摘要 + verdict(见 `SKILL.md` §2 唯一权威表述)。禁止改业务代码、禁止跑会修改环境的命令。
|
|
230
230
|
```
|
|
231
231
|
|
|
232
232
|
## devops(运维/发布)
|
|
@@ -234,13 +234,13 @@ prompt 里明写「**不要等待确认,直接改文件并交付代码/工件*
|
|
|
234
234
|
职责:构建 / 部署 / CI / 环境排障。可跑构建/部署命令,不写业务代码。
|
|
235
235
|
|
|
236
236
|
```
|
|
237
|
-
读 <run-dir>/SPEC.md
|
|
237
|
+
读 <run-dir>/SPEC.md 与改动清单,产出发布方案(你自己 `write` 到 <run-dir>/RELEASE.md,只回 path + 摘要 + verdict —— 见 `SKILL.md` §2 唯一权威表述):
|
|
238
238
|
1) 构建验证:跑构建/打包流程,记录命令、输出、产物与失败点;环境就绪检查(依赖/配置/端口)。
|
|
239
239
|
2) 发布说明:RELEASE.md——涉及哪些模块、配置项变更、初始化/迁移步骤、回滚步骤。
|
|
240
240
|
3) CI 建议:可落地的流水线配置片段(lint/构建/测试/发布门),同仓库既有 CI 风格对其对齐。
|
|
241
241
|
4) 环境增量:后台任务/定时任务/环境变量/代理部署清单;发现环境问题只报告不改,写清证据。
|
|
242
242
|
返回结构化结果:{ releaseMarkdown: RELEASE.md完整内容, buildEvidence: 命令与输出, blockers: [], cicd: [{stage, config}] }。
|
|
243
|
-
工具:读文件、bash
|
|
243
|
+
工具:读文件、bash 跑构建/只读检查、`write`(只写 <run-dir>/ 下你自己的工件)。工件由你自己 `write` 到 <run-dir>/,只回 path + 摘要 + verdict(见 `SKILL.md` §2 唯一权威表述)。禁止改业务代码、禁止直接操作生产环境(只给命令与说明)。
|
|
244
244
|
```
|
|
245
245
|
|
|
246
246
|
## docs(文档工程师)
|
|
@@ -248,13 +248,13 @@ prompt 里明写「**不要等待确认,直接改文件并交付代码/工件*
|
|
|
248
248
|
职责:README / 用户手册 / API 文档。从交付物提炼面向人/面向使用者的一手文档。
|
|
249
249
|
|
|
250
250
|
```
|
|
251
|
-
读 <run-dir>/SPEC.md
|
|
251
|
+
读 <run-dir>/SPEC.md、最终代码与交付总结,产出文档(你自己 `write` 到 <run-dir>/,只回 path + 摘要 + verdict —— 见 `SKILL.md` §2 唯一权威表述):
|
|
252
252
|
1) README/DOCS.md:项目简介、快速开始、配置说明、常用命令(照实写,不吹不编造)。
|
|
253
253
|
2) 用户手册:面向使用者的核心路径(按 SPEC 的业务流程写,标注输入/输出/异常提示)。
|
|
254
254
|
3) API 说明:接口列表、参数/返回结构(与 PLAN 契约一致)、错误码说明。
|
|
255
255
|
4) 反差检查:与实现不一致的地方(字段/流程/命令)列为 issues 交编排者,不要自行改写代码。
|
|
256
256
|
返回结构化结果:{ docsMarkdown: DOCS.md完整内容, api: [{name, method, params, returns, errors}], issues: [] }。
|
|
257
|
-
|
|
257
|
+
工具:读文件、`write`(只写 <run-dir>/ 下你自己的工件)。工件由你自己 `write` 到 <run-dir>/,只回 path + 摘要 + verdict(见 `SKILL.md` §2 唯一权威表述)。禁止改业务代码、禁止跑构建/测试。
|
|
258
258
|
```
|
|
259
259
|
|
|
260
260
|
|
|
@@ -266,23 +266,23 @@ prompt 里明写「**不要等待确认,直接改文件并交付代码/工件*
|
|
|
266
266
|
```
|
|
267
267
|
目标:像真人一样做端到端验证。(动态补位标签:`【UI 验证专家】`,`ROSTER.json.roles` 登记为 `ui-verifier`)
|
|
268
268
|
用 browser_* 工具打开/操作应用:拉起界面 → 执行完整业务流程 → 对照 SPEC 验收标准验证预期输出 → 覆盖边界 case(空输入/权限/异常)。
|
|
269
|
-
发现问题时整理「操作链路 + 现场(截图/报错)+
|
|
270
|
-
工具:browser_
|
|
269
|
+
发现问题时整理「操作链路 + 现场(截图/报错)+ 根因初判」,由你自己 `write` 到 <run-dir>/(reportMarkdown 只留摘要),只回 path + 摘要 + verdict(见 `SKILL.md` §2 唯一权威表述)。
|
|
270
|
+
工具:browser_*、读文件、`write`(只写 <run-dir>/ 下你自己的工件)。工件由你自己 `write` 到 <run-dir>/,只回 path + 摘要 + verdict(见 `SKILL.md` §2 唯一权威表述)。禁止改业务代码、改后端逻辑。
|
|
271
271
|
```
|
|
272
272
|
|
|
273
273
|
### 故障诊断(debugger)
|
|
274
274
|
|
|
275
275
|
```
|
|
276
276
|
目标:复现故障、根因定位、给修复建议(动态补位标签:`【故障诊断工程师】`,`ROSTER.json.roles` 登记为 `debugger`)、根因定位、给修复建议(不亲自改)。
|
|
277
|
-
复现步骤 → 用 bash/读文件/日志定位根因 → 产出诊断报告(复现步骤 + 根因 + 调用链 + 修复建议 +
|
|
278
|
-
工具:bash、读文件、glob/grep
|
|
277
|
+
复现步骤 → 用 bash/读文件/日志定位根因 → 产出诊断报告(复现步骤 + 根因 + 调用链 + 修复建议 + 风险),由你自己 `write` 到 <run-dir>/,只回 path + 摘要 + verdict(见 `SKILL.md` §2 唯一权威表述)。
|
|
278
|
+
工具:bash、读文件、glob/grep、`write`(只写 <run-dir>/ 下你自己的工件)。工件由你自己 `write` 到 <run-dir>/,只回 path + 摘要 + verdict(见 `SKILL.md` §2 唯一权威表述)。禁止改业务代码(只给建议)。
|
|
279
279
|
```
|
|
280
280
|
|
|
281
281
|
### 安全 / 性能 / 数据 等
|
|
282
282
|
|
|
283
283
|
```
|
|
284
284
|
职责:{{补充职责}}。(动态补位标签:`【{{role-zh}}】`,取值同上方标签表)
|
|
285
|
-
读 <run-dir>
|
|
285
|
+
读 <run-dir> 相关工件,产出你的领域工件并由你自己 `write` 到 <run-dir>/({{artifact}}Markdown 字段只留摘要),只回 path + 摘要 + verdict(见 `SKILL.md` §2 唯一权威表述)。
|
|
286
286
|
守界:只用你领域必要的工具,不越界改其它角色产出。
|
|
287
287
|
```
|
|
288
288
|
|
|
@@ -290,8 +290,8 @@ prompt 里明写「**不要等待确认,直接改文件并交付代码/工件*
|
|
|
290
290
|
|
|
291
291
|
## lead(编排者 = 主 agent,非子角色)
|
|
292
292
|
|
|
293
|
-
lead 不模板化——那就是你本人。你负责:读 Ultra Spec、按 DAG 派工、模糊选择抛给用户拍板、合并冲突裁决、Ultra Review 去重汇总、**方案确认门(spec-review 通过后、implement 前,用中文汇总「执行方案」并 `ask_user_question` 让用户确认「执行/修改」,未确认不得开工)**、deliver
|
|
293
|
+
lead 不模板化——那就是你本人。你负责:读 Ultra Spec、按 DAG 派工、模糊选择抛给用户拍板、合并冲突裁决、Ultra Review 去重汇总、**方案确认门(spec-review 通过后、implement 前,用中文汇总「执行方案」并 `ask_user_question` 让用户确认「执行/修改」,未确认不得开工)**、deliver 最终校验与收尾、持续口述 RUN.log 事件与 RETRO 内容,**由指派的有 `write` 成员落盘**(见 §2)、把可复用经验分两层追加到 LEARNINGS(同口径:lead 口述内容,由指派的有 `write` 成员落盘)。
|
|
294
294
|
|
|
295
295
|
**交互语言**:你所有面向用户的话(澄清/确认/方案汇总/状态/交付总结)一律用**中文**;只有技术标识、代码、命令、字段名保留英文。
|
|
296
296
|
|
|
297
|
-
|
|
297
|
+
**落盘职责(关键)**:run 工件一律由**产出它的角色自己 `write` 到 `<run-dir>/`**;lead 没有 `write`,只读工件做门控与裁决。**本段不再是落盘责任人定义——定义在 `SKILL.md` §2(唯一权威表述)**。交付时由你用 `dsh_im_return_file` 把关键工件(如 SPEC.md / REVIEW.md / TEST.md / 交付总结)发给用户。
|
|
@@ -6,24 +6,24 @@
|
|
|
6
6
|
|
|
7
7
|
| 文件 | 维护者 | 内容 |
|
|
8
8
|
|---|---|---|
|
|
9
|
-
| `TASK.md` | /team
|
|
10
|
-
| `ROSTER.json` | /team
|
|
11
|
-
| `STATE.json` |
|
|
12
|
-
| `任务看板.md` |
|
|
13
|
-
| `SPEC.md` | pm
|
|
14
|
-
| `PLAN.md` | pm 骨架 + architect
|
|
15
|
-
| `RESEARCH.md` | researcher
|
|
16
|
-
| `TASKS.json` | pm 初稿 → architect 细化 → lead
|
|
17
|
-
| `REVIEW-SPEC.md` | reviewer
|
|
18
|
-
| `REVIEW.md` | reviewer
|
|
19
|
-
| `TEST.md` | qa
|
|
20
|
-
| `SUMMARY.md` | lead
|
|
21
|
-
| `RUN.log.md` | /team
|
|
22
|
-
| `RETRO.md` | lead
|
|
23
|
-
|
|
24
|
-
>
|
|
25
|
-
|
|
26
|
-
> `team/LEARNINGS.md` 位于 `<cwd>/team/`(跨 run 累积,不在单个 run 目录内):lead 在 run
|
|
9
|
+
| `TASK.md` | /team 命令建(宿主执行);lead 口述 + 指派的有 `write` 成员落盘(§2) | 目标、模式、交付口径、状态、交付结论 |
|
|
10
|
+
| `ROSTER.json` | /team 命令建/更新(宿主执行;lead 无 `write`,§2) | 角色编制、成员映射 |
|
|
11
|
+
| `STATE.json` | **运行时**(唯一写者) | 当前 phase / status / members |
|
|
12
|
+
| `任务看板.md` | lead 口述 + 指派的有 `write` 成员落盘(每个阶段结束一次) | 任务计划 + 状态表 + 当前阶段(可视化进度;工件以 `path` 可核验,交付时由 lead 用 `dsh_im_return_file` 发给用户) |
|
|
13
|
+
| `SPEC.md` | **pm 自己落盘** | Ultra Spec:功能目标、验收标准、业务规则、边界 Case、安全边界(三级权限)、测试计划 |
|
|
14
|
+
| `PLAN.md` | **architect 自己落盘**(pm 骨架 + architect 设计段) | 里程碑、接口契约(I/O JSON Schema)、数据流、风险 |
|
|
15
|
+
| `RESEARCH.md` | **researcher 自己落盘** | 代码定位、依赖、环境、存量约束 |
|
|
16
|
+
| `TASKS.json` | pm 初稿 → architect 细化 → lead 用 `/team task` 回写状态 | 唯一实现事实来源(含 dependsOn 依赖) |
|
|
17
|
+
| `REVIEW-SPEC.md` | **reviewer 自己落盘**(spec-review 阶段,可选) | 对 Spec 的交叉审查结论 |
|
|
18
|
+
| `REVIEW.md` | **reviewer 自己落盘** | 代码审查:问题清单、严重级、结论 |
|
|
19
|
+
| `TEST.md` | **qa/测试补位角色自己落盘** | 测试命令、结果、覆盖、结论 |
|
|
20
|
+
| `SUMMARY.md` | lead 口述 + 指派的有 `write` 成员落盘(deliver 阶段) | **交付总结**:各任务结论/改动/commit/评审测试结论 |
|
|
21
|
+
| `RUN.log.md` | /team 命令建;事件由产出该事件的角色落盘(lead 口述、指派有 `write` 的成员执行) | 运行轨迹(阶段/角色/决策/卡点,见 LOGGING.md) |
|
|
22
|
+
| `RETRO.md` | lead 口述 + 指派的有 `write` 成员落盘(deliver 阶段) | 本次复盘:快/慢/卡点/可复用经验 |
|
|
23
|
+
|
|
24
|
+
> run 工件一律由**产出它的角色自己 `write` 到 `<run-dir>/`**;角色只回 `path` + 摘要 + `verdict`;**lead 没有 `write`**,只读工件做门控与裁决(唯一权威表述见 `SKILL.md` §2)——工件因此是产出角色本轮的产出文件,以 `path` 可核验;交付时由 lead 用 `dsh_im_return_file` 发给用户(「聊天框可点击产出文件行」的机制未独立证实,不作为承诺)。
|
|
25
|
+
|
|
26
|
+
> `team/LEARNINGS.md` 位于 `<cwd>/team/`(跨 run 累积,不在单个 run 目录内):lead 在 run 开始前**只读**;deliver 时由 lead 口述、指派的有 `write` 成员追加。
|
|
27
27
|
|
|
28
28
|
## TASKS.json
|
|
29
29
|
|
|
@@ -120,4 +120,4 @@ persist 模式下,`members` 记录每个角色的可继续子 agent id,供 r
|
|
|
120
120
|
|
|
121
121
|
1. 每个角色的**结构化返回值**与它写的工件内容必须一致(结构化值是给编排脚本/下一阶段的机器可读摘要;工件是持久化事实)。
|
|
122
122
|
2. 下游角色读工件,不读上游的完整对话;跨角色接口一律以 `PLAN.md` 契约为准。
|
|
123
|
-
3.
|
|
123
|
+
3. `STATE.json` 的**唯一写者是运行时**(本 run 实测 `revision=1`、`members` 被运行时增补);角色与 lead **只读**,任何角色改完自己的工件后都不回写 `STATE.json.phase`。
|
|
@@ -23,7 +23,7 @@ const spec = await agent(
|
|
|
23
23
|
`3) 产出 PLAN.md 骨架内容(设计段留空给 architect)。\n` +
|
|
24
24
|
`4) 产出 TASKS.json 任务数组(id/owner/title/spec/acceptance/dependsOn/status=pending)。\n` +
|
|
25
25
|
`★ 用 write 把 SPEC.md 完整内容写到 {{run-dir}}/SPEC.md、PLAN 骨架写到 {{run-dir}}/PLAN.md;\n` +
|
|
26
|
-
` TASKS.json
|
|
26
|
+
` TASKS.json 数组因体量小可只放进返回值(由产出角色自己 write 到 run-dir;见 SKILL.md §2),也可一并 write。\n` +
|
|
27
27
|
`返回值只回:specPath、planPath、tasks(小)、openQuestions(小)。不要在返回值里塞 SPEC/PLAN 全文。\n` +
|
|
28
28
|
`目标:{{task}}`,
|
|
29
29
|
{ label: "pm", phase: "clarify", schema: { type: "object", properties: { specPath: { type: "string" }, planPath: { type: "string" }, tasks: { type: "array", items: { type: "object" } }, openQuestions: { type: "array", items: { type: "string" } } }, required: ["specPath", "tasks"] } }
|
|
@@ -47,14 +47,14 @@ const implementers = await parallel([
|
|
|
47
47
|
() => agent(
|
|
48
48
|
`【后端工程师】运行目录:{{run-dir}}。\n` +
|
|
49
49
|
`只实现 TASKS.json 里 owner=backend 的任务,以 PLAN.md 契约为准(读 {{run-dir}}/PLAN.md 的设计段)。\n` +
|
|
50
|
-
`直接改代码;每完成一个任务,在返回值里给出 status
|
|
50
|
+
`直接改代码;每完成一个任务,在返回值里给出 status/改动文件/一行说明(TASKS.json 的写者按 §2:由产出它的角色落盘;lead 没有 write,用 /team task <id> <状态> 命令回写状态)。\n` +
|
|
51
51
|
`「此能力是否被真正调用并回流到前端」属你的自检项,未接线必须上报(不要等评审/QA 才暴露)。契约/枚举分歧写进 blockers。`,
|
|
52
52
|
{ label: "backend", phase: "implement", schema: { type: "object", properties: { tasks: { type: "array", items: { type: "object" } }, blockers: { type: "array", items: { type: "string" } } }, required: ["tasks"] } }
|
|
53
53
|
),
|
|
54
54
|
() => agent(
|
|
55
55
|
`【前端工程师】运行目录:{{run-dir}}。\n` +
|
|
56
56
|
`只实现 TASKS.json 里 owner=frontend 的任务,以 PLAN.md 契约为准(读 {{run-dir}}/PLAN.md 的设计段)。\n` +
|
|
57
|
-
`直接改代码;每完成一个任务,在返回值里给出 status
|
|
57
|
+
`直接改代码;每完成一个任务,在返回值里给出 status/改动文件/一行说明(TASKS.json 的写者按 §2:由产出它的角色落盘;lead 没有 write,用 /team task <id> <状态> 命令回写状态)。\n` +
|
|
58
58
|
`「此能力是否被真正调用并回流」属你的自检项,未接线必须上报。契约/枚举分歧写进 blockers。`,
|
|
59
59
|
{ label: "frontend", phase: "implement", schema: { type: "object", properties: { tasks: { type: "array", items: { type: "object" } }, blockers: { type: "array", items: { type: "string" } } }, required: ["tasks"] } }
|
|
60
60
|
),
|
|
@@ -84,9 +84,9 @@ const test = await agent(
|
|
|
84
84
|
|
|
85
85
|
phase("deliver");
|
|
86
86
|
|
|
87
|
-
// workflow
|
|
88
|
-
// 如需聊天框可点击预览,lead 用 read 读回 {{run-dir}}/SPEC.md
|
|
89
|
-
//
|
|
87
|
+
// workflow 返回后,工件由产出角色自己落盘(见 SKILL.md §2);此处只回路径 + 小字段:
|
|
88
|
+
// 如需聊天框可点击预览,lead 用 read 读回 {{run-dir}}/SPEC.md 等(read 在 lead 工具面内,
|
|
89
|
+
// write 不在 ⇒ lead 不落盘)。TASKS.json 取 design.tasks(同样由产出角色 write 落盘)。
|
|
90
90
|
return {
|
|
91
91
|
runDir: "{{run-dir}}",
|
|
92
92
|
spec: { specPath: spec.specPath, planPath: spec.planPath, tasks: spec.tasks, openQuestions: spec.openQuestions },
|