跳到正文
FunCoding

搜索

搜索文档、Skill 和 MCP

退出码与自动化诊断

区分认证、输入、沙箱、配置和轮数限制错误,结合结构化输出判断结果。

自动化应同时检查进程退出状态和输出中的错误信息。不能只看 stdout 是否有模型文本,因为部分失败之前仍可能产生输出。

官方排障页列出的专用状态

退出码错误类型检查方向
41FatalAuthenticationError认证流程失败
42FatalInputError输入缺失或无效,非交互模式
44FatalSandboxErrorDocker、Podman、Seatbelt 等沙箱环境失败
52FatalConfigErrorsettings.json 配置无效或存在错误
53FatalTurnLimitedError达到会话最大轮数,非交互模式

无头模式文档另外给出 0 表示成功、1 表示一般错误,并强调 42 和 53。因此不应将“所有非零都为 1”硬编码为 CLI 唯一错误契约,也不要假设任意工具失败都直接映射为上述进程退出码。

处理顺序

先根据状态区分配置/认证等启动问题与任务执行问题。输入格式、缺少认证、无效配置和轮数限制通常需要修正条件,再运行任务;重复同一请求不会自动修好这些条件。

需要机器可读结果时,采用结构化输出,同时核对最终结果或错误事件。Shell 脚本还应保留 CLI 自身状态,避免只读取后续管道处理程序的成功码。

收集诊断

CLI 支持 --debug,交互模式下 F12 打开调试控制台。先用最小输入复现,再记录版本、认证方式、退出码和相关错误。认证与 TLS 见登录排障,其他运行时问题见运行环境排障。