diff --git a/docs/design/13-toolchain-and-dev-workflow.md b/docs/design/13-toolchain-and-dev-workflow.md index dd402cc..2f4acc2 100644 --- a/docs/design/13-toolchain-and-dev-workflow.md +++ b/docs/design/13-toolchain-and-dev-workflow.md @@ -1185,19 +1185,26 @@ async def handle_gitea_webhook(event: dict, x_gitea_event: str = Header(...)): ```python # 在 daemon ticker 中 async def check_stale_flows(): - """扫描超时未回复的 Mail""" + """扫描超时未回复的 Mail,按个性化 deadline 判断""" # 1. 查所有 type=request 且无 in_reply_to 回复的 Mail - stale_mails = queries.find_stale_requests(deadline_hours=4) + # 每个 Mail 创建时在 metadata 中记录 deadline(基于 Mail 模板的时限) + pending_mails = queries.find_pending_requests() - for mail in stale_mails: - hours_overdue = (now() - mail.created_at).total_seconds() / 3600 + for mail in pending_mails: + deadline_hours = mail.meta.get("deadline_hours", 8) # 默认 8 小时 + hours_elapsed = (now() - mail.created_at).total_seconds() / 3600 - if hours_overdue < 8: + if hours_elapsed < deadline_hours: + continue # 未超时,跳过 + + hours_overdue = hours_elapsed - deadline_hours + + if hours_overdue < 4: # 轻度:重发 Mail 提醒 await send_mail(to=mail.to, title=f"提醒: {mail.title}", text=f"此任务已超时 {hours_overdue:.0f} 小时,请尽快处理。") - elif hours_overdue < 24: + elif hours_overdue < 16: # 中度:spawn 庞统介入 await spawn_agent("pangtong-fujunshi", f"流程卡住: Mail {mail.id} '{mail.title}' 超时 {hours_overdue:.0f} 小时未回复。请介入协调。")