Codex需以--server模式启动并设置CODEX_ENABLE_HEALTH=true环境变量才能暴露/health接口;低于v0.4.2版本不支持,且默认--no-server模式下该接口不存在。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要让 Codex 启动后暴露一个可被外部轮询的 /health 接口,用于判断服务是否就绪、数据库是否连通、依赖是否可用,这是 CI/CD 自动化部署和 Kubernetes 就绪探针的基础前提。
确认 Codex 运行模式与健康检查机制匹配
先执行 codex --version,确认版本 ≥ v0.4.2;低于此版本不支持自定义健康检查端点。Codex 默认以 --no-server 模式运行,此时内置 HTTP 服务未启用,【/health 接口根本不会存在】。你必须显式添加 --server 启动参数,否则后续所有配置都无效。
验证方式:启动后执行 curl -s http://127.0.0.1:8080/health,若返回 Connection refused,说明仍处于无服务模式。
通过环境变量启用内置健康检查
在启动 Codex 前,设置环境变量 CODEX_ENABLE_HEALTH=true。该变量会触发 Codex 初始化时自动注册 /health 路由,并默认响应 {"status":"ok"}。
如果你使用 Docker 部署,在 docker run 命令中加入 -e CODEX_ENABLE_HEALTH=true;若用 docker compose,则在 environment 下添加该键值对。
注意:该方式仅提供基础存活检查,不校验数据库或外部依赖。它适合快速验证进程是否存活,但不能替代业务级健康检查。
自定义健康检查逻辑(Node.js 环境)
方法一:修改 Codex 启动脚本入口文件(适用于已 fork 或本地构建场景)
打开 src/server/index.ts,在 Express app 实例创建后、监听端口前插入:
app.get("/health", async (req, res) => { try { await db.query("SELECT 1"); res.json({ status: "ok", timestamp: Date.now() }); } catch (err) { res.status(503).json({ status: "unhealthy", error: "db unreachable" }); }});
方法二:使用 Codex2API 网关代理(推荐生产环境)
通过本地 MCP 桥接程序将 QQ 邮箱接入 Codex,配置所需的.env凭证信息、注册 MCP 服务端,并完成收件箱读取与邮件发送的全流程测试。适用场景:用户需要将 QQ 邮箱连接至 Codex、让 Codex 读取 / 发送 QQ 邮件、安装 / 修复qq_mail MCP 服务端,或是在 Windows 系统上排查 IMAP/SMTP 配置故障时,执行以上操作。
Codex2API 内置健康评估模块,无需修改 Codex 源码。只需确保其配置中 HEALTH_CHECK_URL 指向 Codex 的实际地址(如 http://codex-service:3000/health),它会周期性探测并聚合状态到 /api/health 统一端点。
方法三:在反向代理层(Nginx / Traefik)配置健康检查路径透传
在 Nginx 配置块中添加:location /health { proxy_pass http://codex_backend; proxy_method GET; }。这要求 Codex 后端已启用 --server 并监听对应端口,否则代理将返回 502。
验证健康检查接口是否生效
第一步:启动 Codex 服务,命令中必须含 --server --port=8080(端口可自定义)。
第二步:等待日志出现 [INFO] Server listening on port 8080 后,立即执行:
curl -v http://127.0.0.1:8080/health
第三步:观察响应状态码与 body。成功时应返回 HTTP 200 + JSON,且 status 字段为 "ok" 或 "unhealthy"(取决于你是否注入了 DB 检查逻辑)。
第四步:模拟故障验证容错——临时停掉数据库,再次请求,确认返回 503 及预期错误字段,而非超时或空响应。










