Add review driver, handoff primitive, and group-chat driver (Q2 WP3) #44

Merged
weichen merged 1 commits from feature/q2-review-handoff-groupchat-wp3 into main 2026-10-08 01:13:54 +00:00
Owner

Why

Q2 验收二:review 拓扑须与今天的 backend runReview 等价(并行找问题、逐条验证、丢掉未验证);handoff 与 group_chat 点亮后 12 内置拓扑达 11/12(task_board 属 WP4)。

What

  • review 驱动(squad/review.go):finder = 计划步骤(semaphore-3 真并发,走完整工作区/事件/HITL 机制)→ 宽松 JSON 解析(首 [ 末 ],丢空 issue)→ (location,issue) 去重上限 10 → 每条独立 verifier(直接 Execute,落盘 reviews/verify_NN 留痕;尾行 VERDICT: PASS/FAIL/PARTIAL)→ 只留 PASS(fail-closed)→ severity 稳定排序 → 报告恒带「已丢弃 N 条未验证」。解析/去重/判定/排序/文案与 backend review.go 同格式串逐段移植(计划 §一.5:以报告字节形态为等价判据)。verify 角色先行解析 fail-fast;finder 非关键失败宽容(backend spawn-err 同款)收口降级。
  • handoff 原语(squad/handoff.go):StepSpec.Handoff 消费——启动前目标角色 fail-closed 校验;完成即记录所有权转移(Handoffs 持久化)+ 主产出快照;目标角色下一步骤一次性接收「移交上下文」(过滤历史:只带移交方主产出,不带全量转录);finalize 汇总交付物取链尾角色产出。
  • group_chat 驱动(squad/groupchat.go):蓝图步骤=参与者名册(driver 标记 skipped 接管);共享转录(transcript.md 全量 + BB 近端快照进下轮 TASK.md);发言人策略仅轮转/主持人两种(脚本可判定,LLM 选人不进库);预算停机(max_turns 默认 8)+ [close] 标记收口;主持人 JSON 决策(next/close),未知角色/非法 JSON fail-closed;挂起恢复安全(未完 gc 步骤续跑优先,轮次按已完成数重建)。
  • RunOptions 增 GroupChatPolicy/Moderator/MaxTurns、ReviewVerifyRole/ReviewTarget;engine 增 driver 拓扑分发(Run + resumeAfterHold)。

Evidence

  • wp3_conformance_test.go 与 backend review_test.go 同款断言:finder 真并发(release 门)、去重后 verify 调用数=5=unique 数、只留 PASS、已丢弃 3 条计数、severity 序(SELF,本地)
  • handoff:转移记录/过滤历史/链尾交付物/未知角色 fail-closed;group_chat:轮转预算/收口标记/主持人流/未知指名 fail-closed(SELF)
  • 全套 GOWORK=off go test ./... -count=1 + -race 绿(SELF);CI 为权威(GATE)

Refs

  • Q2 计划:modules/documents docs/proposals/2026-10-07-agent-stack-q2q3-plans.md WP3
  • 任务卡:Dev 仓 .task/feature-agent-stack-q2.md
## Why Q2 验收二:review 拓扑须与今天的 backend runReview 等价(并行找问题、逐条验证、丢掉未验证);handoff 与 group_chat 点亮后 12 内置拓扑达 11/12(task_board 属 WP4)。 ## What - **review 驱动**(squad/review.go):finder = 计划步骤(semaphore-3 真并发,走完整工作区/事件/HITL 机制)→ 宽松 JSON 解析(首 `[` 末 `]`,丢空 issue)→ (location,issue) 去重上限 10 → 每条独立 verifier(直接 Execute,落盘 reviews/verify_NN 留痕;尾行 VERDICT: PASS/FAIL/PARTIAL)→ 只留 PASS(fail-closed)→ severity 稳定排序 → 报告恒带「已丢弃 N 条未验证」。解析/去重/判定/排序/文案与 backend review.go **同格式串逐段移植**(计划 §一.5:以报告字节形态为等价判据)。verify 角色先行解析 fail-fast;finder 非关键失败宽容(backend spawn-err 同款)收口降级。 - **handoff 原语**(squad/handoff.go):StepSpec.Handoff 消费——启动前目标角色 fail-closed 校验;完成即记录所有权转移(Handoffs 持久化)+ 主产出快照;目标角色下一步骤一次性接收「移交上下文」(过滤历史:只带移交方主产出,不带全量转录);finalize 汇总交付物取链尾角色产出。 - **group_chat 驱动**(squad/groupchat.go):蓝图步骤=参与者名册(driver 标记 skipped 接管);共享转录(transcript.md 全量 + BB 近端快照进下轮 TASK.md);发言人策略仅轮转/主持人两种(脚本可判定,LLM 选人不进库);预算停机(max_turns 默认 8)+ [close] 标记收口;主持人 JSON 决策(next/close),未知角色/非法 JSON fail-closed;挂起恢复安全(未完 gc 步骤续跑优先,轮次按已完成数重建)。 - RunOptions 增 GroupChatPolicy/Moderator/MaxTurns、ReviewVerifyRole/ReviewTarget;engine 增 driver 拓扑分发(Run + resumeAfterHold)。 ## Evidence - wp3_conformance_test.go 与 backend review_test.go **同款断言**:finder 真并发(release 门)、去重后 verify 调用数=5=unique 数、只留 PASS、已丢弃 3 条计数、severity 序(SELF,本地) - handoff:转移记录/过滤历史/链尾交付物/未知角色 fail-closed;group_chat:轮转预算/收口标记/主持人流/未知指名 fail-closed(SELF) - 全套 `GOWORK=off go test ./... -count=1` + `-race` 绿(SELF);CI 为权威(GATE) ## Refs - Q2 计划:modules/documents docs/proposals/2026-10-07-agent-stack-q2q3-plans.md WP3 - 任务卡:Dev 仓 .task/feature-agent-stack-q2.md
weichen added 1 commit 2026-10-08 01:12:13 +00:00
Add review driver, handoff primitive, and group-chat driver (Q2 WP3)
ci / vet-and-test (pull_request) Successful in 34s
ci / docker-checkout-hostgateway (pull_request) Successful in 2s
c88100967d
Why: Q2 acceptance 2 requires the squad review topology to be equivalent to
today's backend runReview flow (parallel finders, per-finding verification,
drop unverified); handoff and group_chat complete 11 of 12 builtin topologies.

Evidence: wp3_conformance_test.go mirrors backend review_test.go assertions
(true finder concurrency via release gate, verify calls = 5 unique after
dedupe, only PASS kept, dropped-count line, severity order); handoff records
ownership transfer, target receives filtered history, finalize takes
chain-tail output, unknown target role fails closed; group-chat rotate /
close-marker / moderator conformance with budget stop and fail-closed
unknown nominee. Full suite green with -race.

Impact: review/group_chat drivers lit in the topology registry (task_board
remains fail-closed until WP4); RunState gains Handoffs (persisted);
RunOptions gains GroupChat*/Review* knobs; runOneStep validates handoff
targets and injects handoff context; finalize prefers chain-tail deliverable.
Parse/dedupe/verdict/severity/report formats ported verbatim from backend
internal/runtime/review.go for byte-level report equivalence.

Refs: Q2 plan WP3 (2026-10-07-agent-stack-q2q3-plans.md); task card
.task/feature-agent-stack-q2.md
weichen merged commit aec2a4aa0f into main 2026-10-08 01:13:54 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: weichen/Agent-Squad#44