1. 为什么要在本地用 Codex 驱动 OpenClaw 自动化安装
OpenClaw 是一个面向本地开发环境的开源智能体框架,它能读取文件、执行命令、串联多步任务,适合做自动化脚本编排和本地工具调用。而 Codex 是 OpenAI 官方推出的命令行编码助手,支持通过自定义model_provider接入兼容 OpenAI 协议的模型服务。把两者结合起来,你就能让 Codex 在终端里直接驱动 OpenClaw 完成安装、初始化和认证配置,省去手动改文件、反复试错的麻烦。
这个流程适合谁?三类人最受益:一是刚接触 OpenClaw、不想被环境变量和配置文件绕晕的新手;二是已经在用 Codex 做日常编码、希望把 OpenClaw 纳入同一套工作流的开发者;三是需要在内网或本地机器上快速复现一套智能体环境、又不想每次手动填 Key 的运维同学。
核心检索词先明确:Codex 自动化安装 OpenClaw,本质是让 Codex 通过config.toml和auth.json两个文件完成模型服务指向,再让 OpenClaw 复用这套认证去调用模型。整个链路里最容易出问题的不是安装本身,而是安装后的认证配置——auth.json写错、Base URL 少写/v1、Model ID 对不上,都会导致请求 401 或reading choices报错。
我实测下来,把认证配置一次性写对,后面基本不会再碰它。下面按“前置准备 → 可复制配置 → 验证请求 → 排错 → 分流”的顺序拆开讲,每一步都给完整命令和预期输出,你可以直接照着做。
先说你需要在本地准备什么:Node.js 18 以上、npm 或 pnpm、一个可用的模型服务 API Key。模型服务这里我用 TaoToken 做示例,它的接口兼容 OpenAI 协议,Base URL 是https://taotoken.net/api,Codex 和 OpenClaw 都能直接对接。官网入口在https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=,需要看文档或拿 Key 可以从这里进。
安装 Codex 本身只有一行命令,但很多人卡在“装完之后怎么让它认我的模型服务”。默认 Codex 会走 OpenAI 官方端点,你要做的是覆盖model_provider,把base_url指到自己的服务,再把 Key 写进auth.json。这两步做完,Codex 才能正常发请求,OpenClaw 也才能复用同一套配置。
还有一个容易被忽略的点:OpenClaw 安装后默认可能去读环境变量或自己的配置文件,如果你希望它和 Codex 共用认证,就要保证两边指向同一个 Base URL 和同一个 Key。最省事的做法是让 OpenClaw 读取 Codex 的配置目录,或者把 Key 导出成环境变量供两者共用。下面会给出具体做法。
2. TaoToken 前置准备:拿 Key、认端点、装 Codex
在动 OpenClaw 之前,先把 TaoToken 这边的准备工作做完。你需要三样东西:API Key、Base URL、Model ID。这三件套是后面所有配置的基础,缺一个都会报错。
第一步,获取 API Key。进入控制台的 API Keys 页面创建一个新 Key,复制下来先存到安全的地方。这个 Key 只会完整显示一次,关掉页面就看不到了。控制台入口:https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite。如果你还没决定用哪个模型,可以先到模型对话页面试一下,确认模型能正常响应再写进配置:https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=model_chat&utm_campaign=rewrite。
第二步,确认 Base URL。TaoToken 的 API 端点是https://taotoken.net/api,注意这里不带 UTM 参数,配置里就写这个。Codex 的base_url需要带/v1后缀,也就是https://taotoken.net/api/v1,这一点后面配置片段里会体现。很多人 401 就是因为 Base URL 写成了不带/v1的形式,或者多写了一个斜杠。
第三步,安装 Codex。打开终端执行:
npm i -g @openai/codex装完后验证版本:
codex --version预期输出类似codex-cli 0.x.x。如果提示command not found,检查 npm 全局 bin 目录是否在 PATH 里,或者改用pnpm add -g @openai/codex。
第四步,确认配置目录。Codex 在 macOS/Linux 下读取~/.codex/,Windows 下读取用户目录的.codex\。如果目录不存在就手动建:
mkdir -p ~/.codexWindows 用户建议在 WSL 里操作,路径兼容性更好,避免反斜杠和权限问题。WSL 下同样是~/.codex/。
到这里前置准备就完成了。你手里应该有:一个 API Key、Base URLhttps://taotoken.net/api/v1、一个 Model ID(比如gpt-5.4或你实际要用的模型)。接下来进入配置环节。
需要提醒的是,Key 不要硬编码进会提交到 Git 的文件里。auth.json建议加进.gitignore,或者用环境变量注入。下面给的片段是本地开发用的最简形式,生产环境请换成密钥管理方案。
3. 可复制配置:config.toml 与 auth.json 完整片段
这一节是全文的核心,两个文件写对,Codex 和 OpenClaw 就都能跑起来。先给 Codex 侧的配置,再给 OpenClaw 复用的方式。
先看~/.codex/config.toml。这个文件定义模型提供方、默认模型和项目信任级别:
model_provider = "taotoken" model = "gpt-5.4" [model_providers.taotoken] name = "TaoToken" base_url = "https://taotoken.net/api/v1" wire_api = "responses" [projects."/root/dev/openclaw"] trust_level = "trusted"逐行说明:model_provider指向下面定义的 provider 名,两边要一致;model是默认调用的 Model ID,必须和你实际可用的模型对上;base_url带/v1;wire_api用responses表示走 Responses API 风格,如果你的模型服务只支持 chat completions,可以改成chat;projects段把 OpenClaw 的工作目录标记为 trusted,避免每次执行命令都弹确认。
再看~/.codex/auth.json:
{ "OPENAI_API_KEY": "sk-你的TaoToken密钥" }把sk-你的TaoToken密钥替换成你在控制台创建的真实 Key。这个文件权限建议收紧:
chmod 600 ~/.codex/auth.json接下来是 OpenClaw 侧。OpenClaw 安装后一般会读自己的配置或环境变量。最省事的复用方式是导出环境变量,让 Codex 和 OpenClaw 共用同一个 Key 和 Base URL:
export OPENAI_API_KEY="sk-你的TaoToken密钥" export OPENAI_BASE_URL="https://taotoken.net/api/v1"把这两行写进~/.bashrc或~/.zshrc,新开终端自动生效。如果你希望 OpenClaw 直接读 Codex 的配置,可以在 OpenClaw 的配置里把 provider 指向同一个base_url,Model ID 保持一致。
三件套对照表,方便你核对:
| 配置项 | Codex 位置 | OpenClaw 位置 | 值 |
|---|---|---|---|
| Base URL | config.toml 的 base_url | 环境变量或配置文件 | https://taotoken.net/api/v1 |
| API Key | auth.json 的 OPENAI_API_KEY | OPENAI_API_KEY 环境变量 | sk-你的密钥 |
| Model ID | config.toml 的 model | 配置文件或启动参数 | gpt-5.4 |
配置写完后,用 Codex 做一次最小验证:
codex exec "print hello"如果返回正常文本,说明 Codex 侧通了。这一步不通,先别急着装 OpenClaw,回到第 5 节排错。
关于 Coding Plan:如果你打算长期用 Codex 做编码和 Agent 任务,可以了解下 Coding Plan,额度更划算,入口在https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite。接入文档在https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite,配置项有疑问可以对照文档核对。
4. 验证请求:OpenClaw 安装与连通性检查
配置就绪后,开始装 OpenClaw 并验证服务连通。这里给的是通用流程,具体包名以你实际使用的为准。
第一步,安装 OpenClaw。用 npm 全局安装:
npm i -g openclaw装完验证:
openclaw --version预期输出类似openclaw 0.x.x。如果报EACCES权限错误,不要用sudo硬装,改用npm config set prefix ~/.npm-global再重装,或者用 nvm 管理 Node 版本。
第二步,初始化 OpenClaw 配置。多数版本支持交互式初始化:
openclaw init按提示填入 Base URL 和 Model ID。如果它问 API Key,填你的 TaoToken Key。初始化完成后会生成一个配置文件,通常在~/.openclaw/config.json或项目目录下。打开确认base_url是https://taotoken.net/api/v1,model和 Codex 里写的一致。
第三步,启动 OpenClaw 服务:
openclaw serve预期输出会打印监听地址,类似listening on http://127.0.0.1:8080。保持这个终端不关,另开一个终端做连通性检查。
第四步,发一个测试请求。用 curl 直接打 OpenClaw 的本地端点:
curl -s http://127.0.0.1:8080/health预期返回{"status":"ok"}或类似结构。再发一个模型调用请求:
curl -s http://127.0.0.1:8080/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{"model":"gpt-5.4","messages":[{"role":"user","content":"ping"}]}'预期返回包含choices字段的 JSON,choices[0].message.content里有模型回复。如果返回 401,说明 Key 没传对;如果返回reading choices相关错误,说明响应结构不符合预期,多半是 Base URL 或 wire_api 配错。
第五步,让 Codex 驱动 OpenClaw 跑一个自动化任务。在 OpenClaw 项目目录下执行:
codex exec "run openclaw health check and report status"Codex 会读取当前目录上下文,调用模型生成命令并执行。预期看到它输出健康检查结果。这一步成功,说明 Codex 和 OpenClaw 已经打通,认证配置生效。
如果你用的是 Claude Code 做类似接入,配置思路一致,Base URL 和 Key 三件套不变,文档在https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite。Claude Code 相关入口:https://taotoken.net/claude-code?utm_source=taotoken_aicg_blog_end&utm_content=claudecode&utm_campaign=rewrite。
5. 本篇常见错排查:401、local proxy failed、reading choices
这一节按真实报错来,遇到哪个查哪个。
报错一:401 Unauthorized。最常见。原因通常是auth.json里的 Key 写错、Key 已失效、或者环境变量覆盖了文件配置。排查顺序:先cat ~/.codex/auth.json确认 Key 完整;再echo $OPENAI_API_KEY看环境变量是否指向了旧 Key;如果两者不一致,以环境变量为准,因为多数工具优先读环境变量。修复方式是统一成同一个 Key,或者清掉环境变量只留文件配置。
报错二:local proxy failed。这个报错通常出现在 Codex 尝试走本地代理但代理没起来,或者base_url指向了127.0.0.1但服务没监听。检查config.toml里的base_url是不是误写成了本地地址。正确值应该是https://taotoken.net/api/v1。如果你确实需要本地代理做转发,确认代理进程在跑且端口对得上。另外检查系统代理设置,有时候环境里的HTTP_PROXY会干扰请求,临时unset HTTP_PROXY HTTPS_PROXY再试。
报错三:reading choices 相关错误。完整报错类似error reading choices: unexpected response structure。这说明请求发出去了、也返回了,但返回的 JSON 里没有choices字段。原因一般是wire_api配错——服务返回的是 Responses API 结构,但你配了chat,或者反过来。把config.toml里的wire_api在responses和chat之间切换试一次。另一个可能是 Base URL 少了/v1,导致打到了错误的端点。
报错四:OAuth 相关报错。如果你看到OAuth token expired或failed to refresh token,说明 Codex 在尝试走官方 OAuth 流程,而不是用你的auth.json。这通常是因为model_provider没覆盖成功,或者auth.json格式不对。确认config.toml里model_provider的值和[model_providers.xxx]段名完全一致,大小写敏感。确认auth.json是合法 JSON,可以用python -m json.tool ~/.codex/auth.json校验。
报错五:OpenClaw 启动后请求超时。检查 OpenClaw 配置文件里的base_url是否和 Codex 一致。如果 OpenClaw 读的是自己的配置而不是环境变量,改它的配置文件。另外确认本机网络能访问taotoken.net,用curl -I https://taotoken.net/api/v1看是否返回 200 或 401(401 说明网络通、只是没带 Key)。
报错六:Model ID 不存在。报错类似model not found。检查config.toml的model和 OpenClaw 配置里的 Model ID 是否拼写一致,是否是你账号下实际可用的模型。到模型对话页面确认一下当前可用的模型名。
排错时建议开一个终端专门看日志:Codex 加--verbose,OpenClaw 看它的日志输出。日志里通常会直接告诉你请求打到了哪个 URL、返回了什么状态码,比猜快得多。
6. 后续怎么用:把 Codex 和 OpenClaw 串进日常工作流
配置跑通之后,日常使用就简单了。你可以在 OpenClaw 项目目录下直接用 Codex 驱动任务,比如让它读日志、生成修复脚本、执行并验证。Codex 负责理解意图和生成命令,OpenClaw 负责在本地执行和串联多步操作,两者共用同一套 TaoToken 认证,不用来回切 Key。
一个实用技巧:把常用的 OpenClaw 任务写成脚本,用 Codex 触发。比如建一个tasks/health.sh,里面调用 OpenClaw 的健康检查端点,然后codex exec "run tasks/health.sh and summarize output"。这样每次检查环境只要一句话。
另一个技巧是给不同项目配不同的trust_level。在config.toml的[projects."路径"]段里,把常用项目设为trusted,避免每次执行都确认;不熟悉的目录保持默认,安全一些。
如果你还要接其他工具,比如 Cline MCP 或 Codex 的auth.json复用,记住三件套始终是 Base URL、Key、Model ID,三者一致就能通。Cline MCP 的配置入口在https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite,需要新建 Key 时从这里进。
最后提醒一句:auth.json和任何含 Key 的文件都不要提交到公开仓库。用.gitignore排除,或者改用环境变量注入。本地开发图方便可以写文件,但养成好习惯能省掉很多麻烦。配置一次写对,后面就是重复使用,不用再折腾认证。