From 8ca1ce1f97e8ba2e2548558d7db47eec77ed0155 Mon Sep 17 00:00:00 2001 From: JianFeeeee Date: Mon, 21 Sep 2026 06:34:08 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5:=20=E9=82=A3=20116=20=E5=B0=81?= =?UTF-8?q?=E4=B8=8D=E6=98=AF"=E5=8E=86=E5=8F=B2=E8=B4=A6"=EF=BC=8C?= =?UTF-8?q?=E6=98=AF**=E6=B4=BB=E7=9A=84=E9=87=8D=E6=8A=95=E6=BA=90**=20?= =?UTF-8?q?=E2=80=94=E2=80=94=2085=20=E5=B0=81=E4=BC=9A=E8=A2=AB=20catchUp?= =?UTF-8?q?=20=E9=80=89=E4=B8=AD=EF=BC=9B=E4=B8=94=E5=88=AB=E9=A1=BA?= =?UTF-8?q?=E6=89=8B=E6=89=A9=E5=9B=9E=E5=A1=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 接上一笔:`status='unread'` 且"收件人回过"且无 read 行的 116 封里, **85 封**在 `sessions.status <> 'archived'` 的会话里 ⇒ 会出现在 `?status=unread`、会被 `catchUp` 选中重投: pi 67 / dsh 8 / zcode 8 / opencode 1 / homeagent 1 ⇒ **只落回填不动部署,重投不会停**:回填清的是 (b)(`markReadFor` 漏写), 而把这些信持续留成"未读"的是 (a)(`read_mail` 本就不标已读 ⇒ 契约 T-12 对此沉默)。 (a) 是**契约缺口**不是可修的 bug ⇒ 这些信**永远**是未读,每天 04:00 按 limit=20 捞一批重投。 ⚠️ 同时记一条**反向警告**:**别顺手把回填扩到 `status='unread'`**。 那 116 封有"收件人回过"作证;其余 `unread` 的**分不出**"读过没记上"与"压根没读" ⇒ 扩下去就是**把没读的标成已读**。要扩只能按可证的子集扩,并写明判据只覆盖**充分**证据那部分。 --- docs/API.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/API.md b/docs/API.md index f17daca..d69a193 100644 --- a/docs/API.md +++ b/docs/API.md @@ -541,6 +541,16 @@ curl -X POST {host}/api/v1/mail/read -H "Authorization: Bearer $AGENT_KEY" "收件人回过"只是**充分**证据,真实漏记量 ≥ 248)。 **"补完 40 行"与"历史账平了"是两件事** —— 这正是本节开头那条"A 对不代表 B 对"的同一个形状。 + ★ **而且这不是"历史账"问题,是活的重投源**:那 116 封里 **85 封**在 + `sessions.status <> 'archived'` 的会话里 ⇒ **会出现在 `?status=unread` 里、会被 `catchUp` 选中重投** + (按收件人:pi 67 / dsh 8 / zcode 8 / opencode 1 / homeagent 1)。 + ⇒ **只落回填不动部署,重投不会停**:回填清的是 (b),而把这些信持续留成"未读"的是 (a) + (`read_mail` 本就不标已读,契约 T-12 对此沉默 ⇒ 这是**契约缺口**、不是可修的 bug)。 + ⇒ 于是它们**永远**是"未读",每天 04:00 被按 `limit=20` 捞一批出来重投。 + ⚠️ 反过来说:**别顺手把回填扩到 `status='unread'`** —— 那 116 封有"收件人回过"作证, + 但其余 `unread` 的信**分不出**"读过没记上"与"压根没读",扩下去就是**把没读的标成已读**。 + 要扩只能按可证的子集扩,并写明判据只覆盖**充分**证据那一部分。 + ### 每个 Agent 可用的模型范围 ```