故障排查

常见问题及其修复办法,汇集自 Takuto Core 引擎和 Takuto CLI 两边。自托管模型的 问题参见 自托管模型;provisioning 的问题参见 扩展 Takuto Core

网络与 egress

npm ci 失败 / “Exit handler never called”

你的 npm registry 被 egress 防火墙拦住了。查看调试日志:

docker exec -u takuto <container> tail -30 /home/takuto/.npm/_logs/*-debug-0.log

把该 registry 域名加进 config.toml[network] extra_egress_hosts 并重启。

Claude Code “api_retry error: unknown”

提供商的 API 端点被拦住了。egress 防火墙会自动放行 [agent].available_providers 中每一个 提供商的主机,所以先确认你正在使用的提供商已列在那里。然后从 container 内部验证可达性:

docker exec -u takuto <container> curl -s -o /dev/null -w "%{http_code}" https://api.anthropic.com

如果某个主机仍然访问不到(例如某个会轮换 IP 的厂商端点,或一个自托管网关),把它加进 [network] extra_egress_hosts

数据库

“Database backend unreachable” / pool timed out

[database] connection 里的外部数据库无法从 Takuto container 内部访问到,于是它回退 到旧版 SQLite(或者,若 fail_fast = true,则中止)。常见原因出在连接主机上:如果数据库 跑在某个 container 里,连接串必须使用数据库的 container 名及其内部端口(例如 takuto_db:5432)—— 而不是 localhost 或宿主发布的端口(例如 localhost:5433),并且 两个 container 必须共享一个网络。完整的操作指引以及各引擎的连接串见 外部数据库

认证

重新构建或重启后找不到认证

认证存在 Docker 卷里。如果卷被删了,重新跑一遍 setup 流程:

# With the CLI
takuto auth

# Running the engine directly
docker compose run --rm -it takuto setup

takuto start / docker compose up 在 “Egress rules applied” 之后卡住

认证预检正在运行。卡在这里通常是 agent status 在没有 TTY 的情况下阻塞。对 Cursor, 在 takuto.env 里设置 CURSOR_API_KEY 以跳过交互式检查;否则重新构建镜像。

Cursor Agent 登录错误

这些都意味着你停在了一个过时的镜像层上。重新构建:

# With the CLI
docker compose -f takuto.yml build --no-cache

# Running the engine directly
docker compose build --no-cache

重新构建能修复的症状:

  • bad option: --use-system-ca(旧层用的是 Node 20;当前镜像带的是更新的 Node)。
  • /usr/local/bin/node: No such file or directory(旧层里的 Node 二进制被移除了)。
  • Cannot find module '/usr/local/bin/index.js'(cursor-agent 目录树不完整)。

项目工具版本(mise)

镜像会安装 mise,并在首次运行时构建工具;安装内容会持久保留在 mise-datamise-cache 卷里。用 .mise.toml.tool-versions 文件按仓库锁定 运行时(例如 Node、Python、Ruby)。

Podman

带 SELinux 的 Linux

docker-compose.yml 设了 security_opt: [label=disable]。如果你必须保留 SELinux 标签,就从宿主用 bind mount 上的 :z / :Z 给卷重新打标签。

container 名称冲突

podman stop -a && podman rm -f $(podman ps -aq) 2>/dev/null
podman pod rm -f $(podman pod ls -q) 2>/dev/null

macOS 内存耗尽

Podman 的 VM 在 workflow 之外还需要分走自己的一份内存。启动前给它多一点:

podman machine stop && podman machine set --memory 12288 --cpus 4 && podman machine start

日志

按 workflow 的日志文件存在 container 内部:

docker exec <container> cat /workspace/logs/<TICKET-KEY>.log

仪表盘也会在每张 workflow 卡片上实时输出终端日志,按条目的日志保留时长由 [general] work_item_log_retention_days 控制。

还是卡住?

Takuto Core 处于 beta 阶段 —— 如果你撞上了这里没覆盖的问题,我们真心欢迎你的 反馈。如何联系作者参见 FAQ,某项设置背后的确切键则查阅 配置参考