retro: Xuan paperclip 首跑失败复盘(codex 适配器默认选错 + glmplan 模型名规则)
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
# 事故复盘 — Xuan paperclip 首个 agent 首跑失败(适配器默认选错 + 模型名无效)
|
||||
|
||||
> 迭代周期:2026-10-06 单事故(装机当天)
|
||||
> 方法:Loong Workflow 复盘清单(DATA / ANAL / ACT / LOOP / SAFE)
|
||||
> 复盘人:kenyang + ZCode Agent
|
||||
> 环境:Xuan(阿里云上海 16C/30G),paperclipai 2026.1001.0,opencode_local 适配器,GLM 编程计划(glmplan)
|
||||
|
||||
---
|
||||
|
||||
## 1. 数据(DATA)
|
||||
|
||||
**现象**:agent(CEO)雇用后首次唤醒连续失败 2 次(13:43、13:52),`heartbeat_runs.error_code = configuration_incomplete`。
|
||||
|
||||
**报错原文**:
|
||||
|
||||
```
|
||||
configuration incomplete: no Codex credentials available for managed home
|
||||
".../companies/<id>/codex-home". Sign in to Codex on the host with a ChatGPT
|
||||
subscription, or bind a per-agent OPENAI_API_KEY secret for this agent.
|
||||
```
|
||||
|
||||
**时间线**:
|
||||
|
||||
| 时刻 | 事件 |
|
||||
|---|---|
|
||||
| 13:42 | 界面雇用 CEO agent,适配器默认落在 codex_local |
|
||||
| 13:43 / 13:52 | 两次运行失败(缺 Codex 凭据) |
|
||||
| 15:23 | 手工改为 opencode_local,但模型填 `glm/glm-4-flash`(provider 不存在) |
|
||||
| 15:4x | 模型改为 `glmplan/glm-5.3-flash` 后运行 **succeeded**,链路恢复 |
|
||||
|
||||
## 2. 根因(ANAL)
|
||||
|
||||
两层叠加,且错误信息只暴露第一层:
|
||||
|
||||
1. **雇用向导默认适配器是 codex_local**——它要求 ChatGPT 订阅凭证或 OPENAI_API_KEY;我们的大模型栈(GLM 编程计划)不在 codex 上,首跑必挂。
|
||||
2. 人工改选 opencode_local 后,**模型 ID 填错**:有效 provider 是 `glmplan`(opencode 配置文件里定义的 key),模型全名必须是 `glmplan/glm-5.3-flash`;写成 `glm/glm-4-flash` 这类想当然的名字,opencode 侧解析不到。
|
||||
3. 报错文案指向 "Codex credentials",第一次排障时容易误判为"要去搞 OpenAI 凭据",实际是适配器选错——**错误信息描述的是被选错的路径,不是该走的路径**。
|
||||
|
||||
## 3. 行动(ACT)— 正确配置清单
|
||||
|
||||
雇用任何 agent 时固定两步:
|
||||
|
||||
- [ ] 适配器选 **opencode_local**(本机 GLM 栈唯一正确选项;codex_local/claude_local 需要各自订阅凭证,当前没有)
|
||||
- [ ] 模型选 **`glmplan/glm-5.3-flash`**(或 `glmplan/glm-5.3`)——严格用 `glmplan/` 前缀,不要手输 `glm/...`
|
||||
|
||||
支撑层已就位并验证(变更时保持同步):
|
||||
|
||||
- opencode 全局配置 `~/.config/opencode/opencode.json`(paperclip 服务用户与 root 双份):定义 glmplan provider,baseURL `https://open.bigmodel.cn/api/coding/paas/v4`(编程计划专用端点;普通 `/api/paas/v4` 端点对编程计划 key 报余额不足),key 按服务器各用各的(Xuan/Loong 各一把团队 key)
|
||||
- opencode 默认模型已设 `glmplan/glm-5.3-flash`(不带 `-m` 裸跑 `opencode run` 验证过)
|
||||
- 全局指令 `~/.config/opencode/AGENTS.md`:默认简体中文工作
|
||||
|
||||
## 4. 预防(LOOP / SAFE)
|
||||
|
||||
1. **把"适配器+模型"写进雇用入口的可见提示**:任何人在界面雇 agent 前先看本清单第 3 节两行,可消除该类事故。
|
||||
2. **报错先查配置归属,再按报错文案行动**:configuration_incomplete 类错误先 `select adapter_type, adapter_config->>'model' from agents` 对一眼,别急着按报错去申请凭据。
|
||||
3. **模型名以 `opencode models` 输出为准**:provider 前缀来自 opencode 配置,不靠记忆猜。
|
||||
4. 验证手段:`curl :3100/api/agents/<id>/wakeup` 触发一次按需运行,查 `heartbeat_runs.status`,succeeded 即链路通。
|
||||
|
||||
---
|
||||
|
||||
*证据:本机 postgres `heartbeat_runs` 表两次 failed 记录与修复后 succeeded 记录;journalctl `paperclipai` 用户单元日志。*
|
||||
Reference in New Issue
Block a user