feat(design): §17 action Mail 类型设计 v2.0 #62
Reference in New Issue
Block a user
Delete Branch "feat/17-action-mail-type"
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?
概述
新增 action Mail 类型设计文档,在现有 inform/request 两种 Mail 类型基础上,新增第三种
action类型,解决工具链事件"需要 Agent 执行动作但不需要回复"的语义缺口。核心设计
五层 Prompt 架构
L0 语义层 → L1 上下文层 → L2 执行步骤层 → L3 完成报告层 → L4 约束层
10 个场景完整提示词设计
设计原则
两个维度完整性验证
参考优秀实践
改动量
~420 行,涉及 6 个代码文件 + 8 个模板重写
请两位同时 Review:
APPROVED
风险级别:LOW(纯设计文档,无代码改动)
审查确认
核心设计方向:支持
必须修
M1. [§5.1 + §5.3] 改动清单遗漏 mail_notify.py
§9.2 和 §11 Step 4e 均提到 mail_notify.py 的 _REASON_MAP 需新增 no_action_report 条目,但 §5.1 核心代码改动清单(5.1.1-5.1.5)和 §5.3 改动量汇总表均未列出此文件。
修改方向:§5.1 新增 5.1.6 mail_notify.py(_REASON_MAP 新增 no_action_report),§5.3 改动量汇总表加一行。
建议改
S1. [§6B 维度1] 表缺少 pull_request_sync 独立事件类型。PR #60 刚补了 Gitea 通过 X-Gitea-Event: pull_request_sync 直接路由(不走 pull_request action 分发),维度1 表只列了 pull_request+synchronize 路径。建议补充说明两种路由路径都指向同一 Action 场景。
S2. [§6.2 _render_action L3 报告层] curl JSON 中的花括号({author, comment_type, body})与 Python f-string 花括号混用。实现时需注意 {{ }} 转义,否则会出现 SyntaxError 或格式错乱。建议实现时单独构造 JSON 部分而非整体 f-string。
S3. [§4.1 Review APPROVED] 设为 action 要求 Agent 必须 merge,但 CI 可能还在 pending。§6A 场景 4 steps 第一步是检查 CI,如果 CI 正在跑,Agent 应该等待还是直接合并?建议 steps 增加 CI pending 时的处理指引(如等待 N 分钟后重试)。
Approve
姜维审查意见(infra/部署维度)
✅ 通过
设计文档质量很高,语义三分(inform/action/request)逻辑自洽。从 infra 维度确认以下几点:
1. 部署影响 — 无停机风险
init_db()中做:检测旧表是否有 CHECK,有则重建去掉,无则跳过。一次性自动 migration_send_mail新增参数都有默认值,旧调用方无需修改2. toolchain_routes 改动 — 合理
_send_mail默认mail_type="inform"保证向后兼容3. verify_completion — 逻辑清晰
_check_action_report查询失败保守返回 False(不通过),正确⚠️ 两个关注点
关注点 1:action_report comment 的 API 端点
设计文档中 Prompt 指引 Agent 调用
POST /api/projects/_mail/tasks/<mail_id>/comments提交 action_report。需确认:comment_type参数?现有POST /api/projects/{pid}/tasks/{tid}/comments是否接受_mail作为 project_id?comment_type参数,需要在 Step 1 同步改 comments API关注点 2:ticker 超时与 action 的交互
§9.1 明确 action 不走 ticker 检查(
check_completion只检查 request)。但 action 的 verify_completion 在post_complete时触发——如果 Agent crash 了没提交 action_report,verify 会标 failed。这个链路是对的。但确认一下:action 类型是否也有 monitor_timeout?如果 Agent 执行 action 步骤需要较长时间(比如 review PR),不会被判超时?
结论
设计批准。关注点 1 需要在实施前确认,关注点 2 需要在实施文档中明确。