匹配挂在 Agent 提交采集结果那个 HTTP 请求的 context 上。AI 匹配要几十秒到几分钟, Agent 先超时断开,ctx 被取消,匹配当场中断,采购员还得手动点一次「一键匹配」。 线上 2026-09-16 实测六个商品里四个是这样死的(#294 的日志第一次派上用场): shopee 28111/8544/5250/5259: archive spec match failed: context canceled shopee 9214/26680: 成功——只是 Agent 尚未超时 - 用 context.WithoutCancel 派生,保留请求携带的值(trace 不断链),只切断取消 信号,再加 10 分钟上限兜底。 - 新增 specMatchAborted,与 unavailable 分开。ctx 取消是本端调度问题不是 Provider 故障,重试用的是同一个已死的 ctx,毫无意义。此前被归成「AI 匹配服务暂时不可用」, 线上出现过 unavailable=7 而 AI 服务完全正常,会一直误导排查。 - 全档案匹配遇到 aborted 立即早停,不再刷出一串同样的失败。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NTDbDcwbDw1TSAcE6wfh2F