故障排查
常见问题及修复方法。
"agent 发了请求但 dashboard 是空的"
先确认你的 agent 真的打到了代理,而不是直连上游 provider。最简单:curl http://localhost:8080/v1/models,应该返回 .env 里配置的模型列表。
如果请求到了代理但没被记录,最常见的原因是缺 x-acg-project header。没有 project 标签的请求仍会被记录,但落到"未打标"分桶,dashboard 默认隐藏。在项目选择器里勾选"显示未打标"。
"我的 agent 跑一半被 auto-stop 拦了"
这是网关在按设计工作。两个选项:
- 在 dashboard 给这个 project 提高预算,新上限立即生效。
- 关掉这个 project 的 auto-stop,只用告警。项目列表的 auto-stop 列有一键开关。
我们不推荐全局关掉 auto-stop。"拦下请求而不是醒来看到 $500 账单"是默认值,也是正确的。
"上游 provider 返 401"
ai-cost-gate 用你在 .env 里设的 upstream credential 转发 Authorization header,不是你 client 发的那个。看到 401:
- 检查
UPSTREAM_OPENAI_API_KEY设了且以sk-开头。 - 确认 key 能访问你请求的模型。有些模型需要特定 project 或 org。
- 上游状态:
https://status.openai.com/。
"SQLite database is locked"
同一时间只有一个进程能写 SQLite 文件。出现这个,说明你有两个 ai-cost-gate 实例指向同一个文件。停一个。
"我访问不到 dashboard"
默认监听 0.0.0.0:3000。访问不到的话:
- 检查
LISTEN_HOST和LISTEN_PORT。 - Docker 后面的话,确认
-p 3000:3000设了。 - nginx/Caddy 后面,看反向代理日志的具体错误。
"dashboard 很慢"
几乎都是 generation_history 表太大了。跑内置清理:
docker exec ai-cost-gate aicg cleanup --older-than 30d会删掉 30 天前的请求行。attribution 里的成本合计保留。