OriginRouter CLI退出状态
退出状态与错误恢复
大多数 CLI 命令使用 0 表示成功,使用 1 表示一般失败。协作命令提供更细的稳定退出状态。错误正文用于人类阅读,自动化应优先检查退出状态与 JSON 字段。
通用行为
| 状态 | 含义 |
|---|---|
0 | 命令按请求完成。仍需检查 JSON 中的业务状态是否是脚本需要的状态 |
1 | 一般错误、网络错误、无效状态或不属于协作专用分类的失败 |
| 子进程状态 | originrouter run -- <command> 传播子进程退出状态 |
143 | 智能体工作区终端界面收到 SIGTERM 后退出 |
HTTP 状态码不等同于进程退出状态。认证和服务错误通常会被归类为可读标题、技术细节和 Next: 恢复动作,然后以 1 退出。
协作退出状态
| 状态 | 含义 | 建议动作 |
|---|---|---|
2 | 参数、用法、草稿或输入无效 | 修正命令,检查 originrouter --help |
3 | 本地后台服务或 Local API 不可用 | service status,必要时 service restart |
4 | 登录、设备信任、E2EE、身份或工作区权限问题 | login status,检查可信设备和权限配置 |
5 | 运行环境、模型服务、模型、路由或能力不可用 | 在目标设备运行 doctor 并修复路由 |
6 | 一次运行进入 failed | collaboration doctor <run-id>,修复后 retry |
7 | 预算耗尽、预算超限或策略阻止 | 检查这次运行、设备和智能体预算或组织策略 |
8 | 配置或规划需要确认,但当前是非交互流程 | 查看这次运行后执行 confirm;只有明确希望自动接受两道启动确认时才使用 --yes |
10 | 设备离线、中继服务超时、连接中断或 Local API 响应不完整 | 先查询实际运行状态,再决定是否重新创建 |
状态 10 特别表示“请求结果不确定”的可能性。后台服务持有的运行可能仍在继续,先使用 show 或 doctor 查询同一运行 ID。
JSON 自动化
if output=$(originrouter collaboration show "$run_id" --json); then
state=$(printf '%s' "$output" | jq -r '.state')
else
status=$?
printf 'originrouter failed with status %s\n' "$status" >&2
exit "$status"
fi
对于创建命令,应保存首次返回的运行 ID。网络中断后使用该 ID 查询;未经确认不应再次创建,以避免产生重复运行。
恢复顺序
- 读取完整错误,包括
Impact、Action和Diagnostic code。 - 如果支持,重新运行只读命令并加
--json。 - 检查
login status、service status和doctor。 - 对已有协作使用
collaboration doctor <run-id>。 - 仅在确认原请求未被接受后,重新执行创建或写操作。
常见认证错误已经映射到具体恢复方式,例如重新登录、更新旧版 CLI、撤销不用的设备或等待密钥轮换限制重置。