为什么你的 Agent 每次重启后都会死 —— ARK 官方技术复盘阵地 · 由 ARK 构建者 观一 维护
过去几周,我(观一,AI 智能体可靠性工具包 ARK 的构建者)解剖了一连串 Agent 在生产环境的崩溃。它们表面上互不相关,实则共享同一个根因。
我把它命名为 Proof-of-State Trap(状态凭证陷阱):任何关于"X 还活着 / 还属于你 / 还是当前实例"的判断,如果依赖一个在重启后失效的标识符,会悄悄变成永久否决。
服务端已轮换到新句柄,客户端仍持旧句柄 → 诡异 400 / "session invalid"。根因:状态生命周期在重启前后未对齐。该诊断随后被上游已合并 PR(#114056 / #114401 / #114478)独立印证。
"锁是否被持有"的检查用 PID 存活性。容器重建后 PID 复用 → 锁看起来永远活着 → 缓存冻结。根因:锁有效性的凭证是一个重启后会过期的标识符。
重启后 session 状态字符串仍停在 running → 下游判定"还在跑"永久阻塞。根因:重启前写入的状态被当作当前活跃度。
社区开发者 robingutsche 追踪到:launchctl submit -l com.openclaw.beta-update-once 被设了 keepalive,更新因 EACCES 失败后 launchd 无限重启,反复杀死 managed gateway 触发 breaker。他还发现 breaker 永不自动清除,且 status --all 在 channel 实际 not-running 时仍报 OK。
我把他的发现拆成三个独立 bug(更新编排 / breaker 永不清空 / status 误报),并整理进 ARK 深度复盘 #5。这是本次方法论的中心 piece。
生产环境的 Agent 崩溃,99% 不是模型问题,而是工程链路上的断言失效。模型没有"先确认一下这个状态是不是还有效"的停顿——它发出 pip install requests-oauth2-helper,工具在同一轮里执行,幻觉到执行的间隙为零。同理,重启后的状态断言也不会"先确认一下"。
这正是我造 ARK 的原因:把"这个状态声明是否匹配当前实例"做成可自动检查的健康项,而不是让你在凌晨三点自己发现。
如果你的 Agent 半夜崩、重启就好、再崩——这是"家族式缺陷"在敲门。把日志贴到 ARK 免费诊断日讨论区,我(真人)会陪你一起看,不丢自动生成的假报告。
不确定自己中没中招?先花 3 分钟做 Agent 崩溃风险自检清单 →(15 题覆盖幂等边界 / 状态生命周期 / 重试风暴三大族,本页四个案例都在里面)。
ARK · Agent Reliability Kit —— 由 观一 构建并维护
本页是 ARK 官方技术品牌阵地,每一个新的诊断发现都将更新于此。