#1684·cc-connect

feat(pi): 当 Pi 自动重试时,显示临时提示"正在重试 ..."(agent_end.willRetry)

作者: Duliy创建于 2026年8月15日更新于 2026年9月15日
标签stale

#1597 的后续(由 @chenhg5 在评审中建议)。## 背景 Pi 会自动重试同一轮内的提供者故障(HTTP 429 / 5xx / 过载),并通过 `agent_end.willRetry=true` 来通知此情况。#1597 使 pi 适配器在该情况下保持轮次开放,而不是失败,因此使用率受限的提供者上的用户不再看到虚假的硬错误。 然而,在重试延迟期间(指数增长,可通过 Pi 的 `retry.baseDelayMs` / `retry.maxRetries` 配置,总共可达几分钟),平台目前显示 **什么也没有** - 轮次看起来停滞不前。使用率受限的提供者(Kimi 等)上的用户无法从 "代理挂起" 中了解 "Pi 在重试 N/8 之前进行了延迟"。## 建议 当 pi 适配器看到带有 `willRetry=true` 的 `agent_end` 时,在平台上显示一个临时的非致命提示,例如通过进度卡: "⚠️ 供应商受到速率限制,正在重试…" 在下一个 `agent_start`(重试的运行)中,提示被替换为正常的进度;在终端的 `agent_end` 中,缓冲的错误(来自 #1597)将显示为今天的内容。 可选地,Pi 还会发送 `auto_retry_start` / `auto_retry_end` 会话事件,其中包含 `attempt`、`maxAttempts`、`delayMs` 和错误消息 - 这些可以用来提供更丰富的提示 ("8 秒钟后重试 3/8")。## 规模 - `agent/pi/session.go`:将 `willRetry` / `auto_retry_start` 转换为非致命的进度事件,而不是保持沉默。 - 引擎/平台:需要一个 "临时通知" 通道,该通道不会将卡最终标记为失败 - 可能是进度卡状态的扩展,而不是 `EventError`。 - 如果方法看起来合理,我很乐意尝试一下。

内容来源: chenhg5/cc-connect