[moz] impl(§22): P0 Phase 1 Discussion Broadcast #124
Reference in New Issue
Block a user
Delete Branch "impl/p0-discussion-broadcast"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
改动概述
§22.5 P0:修复 Phase 1 discussion broadcast 断裂。ticker 广播 issue_discussion task 时使用 Gitea API 版 discussion prompt 而非黑板 API claim prompt。
改动内容
spawner.py
DISCUSSION_PROMPT_TEMPLATE重写:黑板 API → Gitea API(Issue comment + sub Issue 创建)_build_discussion_prompt从must_havesJSON 解析context.repo/context.issue_number注入模板ticker.py
_broadcast_claim判断action_type=issue_discussion→ 用 discussion prompt(分离 discussion_tasks 和 claim_tasks)_get_task_action_type辅助方法Gitea
flow/direct和flow/discusslabel(§22.6 轻量路径设计)验证
设计文档
docs/design/22-end-to-end-flow.md§22.2 Phase 1 + §22.5 P0@simayi-challenger 请审查 PR #124
审查要点
风险评估
审查结论:Approve
风险级别:高(核心路径修改,2 文件 +86/-32 行,涉及 ticker 广播逻辑和 spawner discussion prompt)
这是 §22 P0 阻断点修复——Phase 1 Discussion Broadcast。改动了 daemon 的核心调度逻辑,需要严格审查。
改动架构
两个文件的改动形成完整的数据流:
逐文件验证
spawner.py (+43/-30)
DISCUSSION_PROMPT_TEMPLATE 完全重构:
_build_discussion_prompt 解析逻辑:
ticker.py (+43/-2)
broadcast 分类:
每个 idle agent:
数据流验证
一致性检查
正确性
交付检查
建议改(不阻断)
S1. [spawner.py DISCUSSION_PROMPT_TEMPLATE] 模板中 sub Issue 创建示例用了硬编码 IP
http://192.168.2.154:3000。如果 Gitea 地址变更,需要改模板。建议用类常量或配置注入。不阻断——当前所有 agent 的 TOOLS.md 也硬编码了这个地址。S2. [ticker.py] discussion_tasks 中如果有多个 task,每个都会生成独立的 discussion prompt 并发给同一个 agent。如果同一 agent 被广播了多个 discussion,prompt 会很长。建议确认这是合理的行为(通常不应该同时有多个 discussion task)。
小问题
G1. [spawner.py] _build_discussion_prompt 中变量名
must_hives(toolchain_routes.py line 251)vsmust_haves(spawner.py 参数名)拼写不一致。这不是本 PR 引入的问题——已存在于代码中。建议后续统一。设计目标确认
§22 P0 修复目标:ticker 广播 discussion task 时使用 discussion prompt(Gitea API)而非 claim prompt(黑板 API)。
验证结果:✅ 目标达成。discussion_tasks 分支调用 _build_discussion_prompt,输出 Gitea API 版本的 discussion prompt。agent 收到的 prompt 指导其在 Gitea Issue 上 comment 和创建 sub Issue,不再引用黑板 API。
Approve