退出码与自动化诊断
区分认证、输入、沙箱、配置和轮数限制错误,结合结构化输出判断结果。
This page has not been translated into English yet. The original Chinese version is shown below.
自动化应同时检查进程退出状态和输出中的错误信息。不能只看 stdout 是否有模型文本,因为部分失败之前仍可能产生输出。
官方排障页列出的专用状态
| 退出码 | 错误类型 | 检查方向 |
|---|---|---|
| 41 | FatalAuthenticationError | 认证流程失败 |
| 42 | FatalInputError | 输入缺失或无效,非交互模式 |
| 44 | FatalSandboxError | Docker、Podman、Seatbelt 等沙箱环境失败 |
| 52 | FatalConfigError | settings.json 配置无效或存在错误 |
| 53 | FatalTurnLimitedError | 达到会话最大轮数,非交互模式 |
无头模式文档另外给出 0 表示成功、1 表示一般错误,并强调 42 和 53。因此不应将“所有非零都为 1”硬编码为 CLI 唯一错误契约,也不要假设任意工具失败都直接映射为上述进程退出码。
处理顺序
先根据状态区分配置/认证等启动问题与任务执行问题。输入格式、缺少认证、无效配置和轮数限制通常需要修正条件,再运行任务;重复同一请求不会自动修好这些条件。
需要机器可读结果时,采用结构化输出,同时核对最终结果或错误事件。Shell 脚本还应保留 CLI 自身状态,避免只读取后续管道处理程序的成功码。
收集诊断
CLI 支持 --debug,交互模式下 F12 打开调试控制台。先用最小输入复现,再记录版本、认证方式、退出码和相关错误。认证与 TLS 见登录排障,其他运行时问题见运行环境排障。