☰
Windows WSL Codex CLI 全自动运行配置:config.toml 与 PATH 一次改到 TaoToken
2026/10/1 7:07:53 网站建设 项目流程

1. Windows WSL 里 Codex CLI 为什么总在等确认

在 Windows 上跑 Codex CLI,多数人是把它装进 WSL 里用的,因为 Linux 环境对 Node、Python、各种构建工具更友好。但装好之后你会发现一个很烦的问题:它每做一步都要停下来问你一句「是否允许执行这条命令」「是否应用这个补丁」。写个小脚本还好,一旦让它连续改十几个文件、跑几轮测试,你就变成了一个不停按 y 的确认机器。

这个问题的根源在于 Codex CLI 默认是「保守模式」。它把每一次 shell 调用、每一次文件写入都当成潜在风险操作,需要人类点头。设计初衷没错,但当你已经在一个隔离的 WSL 发行版里、面对的是一个自己可控的仓库时,这种确认就纯属打断节奏。

我试过几种放权方式,从最简单的 alias,到包装脚本,再到直接改~/.config/codex/config.toml配合 PATH 做彻底自动化。这篇就把这几条路一次讲清楚,重点放在config.toml和 PATH 这两个关键点上,最后用一个完整流程验证:改完之后它真的不再弹确认了。

适合谁看:已经在 Windows 上装了 WSL、装了 Codex CLI,想让它全自动跑重构、批量生成、跑测试的人。如果你还没装 Codex CLI,也能跟着走,但重心在配置而不是安装。

先说清楚一个前提:全自动意味着它可以在你的 WSL 里直接执行命令、直接改文件。请务必在专用发行版或专用目录里做,别拿它去操作你唯一的生产仓库。下面所有配置都基于这个前提。

2. TaoToken 前置:把 Base URL、Key、Model ID 三件套备齐

Codex CLI 要能跑起来,得先有一个能对话的模型端点。这里用 TaoToken 作为接入方,它的 API 地址是https://taotoken.net/api,兼容常见的 OpenAI 风格调用。你需要准备三样东西,我把它叫「三件套」:

  • Base URL:https://taotoken.net/api
  • API Key:在控制台里生成,形如sk-...
  • Model ID:你打算用的模型标识,比如某个 coding 专用模型

这三件套缺一不可。很多人配置失败,不是 config.toml 写错,而是 Key 没生效或者 Model ID 拼错。先去控制台把 Key 建好,路径是 API Keys 页面:

https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite

生成之后复制出来,先别急着关页面。接着确认你要用的模型 ID,可以在模型对话页面试一条消息,看它返回是否正常:

https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=model_chat&utm_campaign=rewrite

如果你打算长期用它做编码和 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

三件套备齐后,先在 WSL 里用环境变量验证一次,别直接写进配置文件。打开 WSL 终端:

export OPENAI_BASE_URL="https://taotoken.net/api" export OPENAI_API_KEY="sk-你的key"

注意这里用的是OPENAI_BASE_URL和OPENAI_API_KEY这两个变量名,Codex CLI 和很多 OpenAI 兼容工具都认它们。如果你用的是 Anthropic 风格的接入,变量名会不同,Claude Code 那条线可以看这个入口:

https://taotoken.net/claude-code-anthropic?utm_source=taotoken_aicg_blog_end&utm_content=claude_code&utm_campaign=rewrite

验证环境变量是否生效:

echo $OPENAI_BASE_URL echo $OPENAI_API_KEY | head -c 8

第二条只打印前 8 个字符,确认不是空值就行,别把完整 Key 打到屏幕上。这一步过了,再往下写 config.toml,否则你会分不清是 Key 的问题还是配置的问题。

3. 可复制配置:config.toml 与 PATH 一次改到位

这一节是核心。Codex CLI 的配置文件默认在~/.config/codex/config.toml。如果目录不存在,先建:

mkdir -p ~/.config/codex

然后编辑这个文件。下面是一份可以直接抄的config.toml,重点在放权和自动应用补丁两块:

# ~/.config/codex/config.toml # 模型接入三件套 model = "你的ModelID" model_provider = "taotoken" [model_providers.taotoken] name = "TaoToken" base_url = "https://taotoken.net/api" env_key = "OPENAI_API_KEY" # 放权:允许直接执行 shell 命令 [shell] environment_policy = "permissive" # 自动应用补丁,不再每次问 yes/no [editing] apply_patches_automatically = true # 沙箱模式:全自动场景下放宽 sandbox_mode = "danger-full-access" approval_policy = "never"

几个字段解释一下,别照抄完不知道自己在改什么:

model_provider指向下面定义的taotoken段,base_url就是https://taotoken.net/api,env_key告诉它从哪个环境变量读 Key。这样 Key 不写进文件,更安全。

[shell]段的environment_policy = "permissive"是让 Codex 在执行命令时不要层层拦截。

[editing]段的apply_patches_automatically = true是解决「每次改文件都问你」的关键。

sandbox_mode和approval_policy是更上层的开关,approval_policy = "never"表示不再请求人工批准。这两个字段在不同版本里名字可能略有差异,如果你的版本报「unknown field」,就把不认识的那行注释掉,用命令行参数兜底。

接下来处理 PATH。为什么要动 PATH?因为我们要放一个包装脚本进去,让「全自动模式」和「安全模式」能随时切换。先建目录并加进 PATH:

mkdir -p ~/bin

编辑~/.bashrc(如果你用 zsh 就改~/.zshrc):

nano ~/.bashrc

在文件末尾加两行:

export PATH="$HOME/bin:$PATH" export OPENAI_BASE_URL="https://taotoken.net/api" export OPENAI_API_KEY="sk-你的key"

把 Key 直接写进 shell 配置是为了省事,但更稳妥的做法是单独放一个~/.config/codex/env文件,然后source它。保存后生效:

source ~/.bashrc

现在写包装脚本,让全自动版本单独成一个命令:

cat > ~/bin/codex-auto << 'EOF' #!/usr/bin/env bash codex --dangerously-bypass-approvals-and-sandbox "$@" EOF chmod +x ~/bin/codex-auto

到这里,PATH、config.toml、包装脚本三件都齐了。codex还是安全模式,codex-auto走全自动。你也可以反过来,把 alias 直接覆盖codex:

alias codex='codex --dangerously-bypass-approvals-and-sandbox'

但我更推荐保留两个命令,日常开发用安全的,批量重构时用codex-auto,出问题好回退。

4. 验证请求:跑一次完整自动执行流程

配置写完不验证等于没写。这一节用一个真实的小任务,看它是否还会弹确认。

先确认命令能找到:

which codex-auto codex-auto --version

which应该输出/home/你的用户名/bin/codex-auto。如果输出为空,说明 PATH 没生效,回去检查~/.bashrc里那行export PATH有没有拼错,然后重新source。

接着建一个测试目录,放一个故意写得不规范的文件,让 Codex 去改:

mkdir -p ~/codex-test && cd ~/codex-test cat > demo.py << 'EOF' def add(a,b): return a+b print( add(1,2) ) EOF

现在用全自动模式让它格式化并加类型注解:

codex-auto "把 demo.py 格式化成 PEP8 风格,并给 add 函数加上类型注解,直接改文件"

观察终端输出。如果配置生效,它会直接读取文件、生成补丁、写入文件,全程不出现Allow? (y/n)这类提示。跑完后看结果:

cat demo.py

你应该看到类似这样的内容,缩进规范了、注解加上了:

def add(a: int, b: int) -> int: return a + b print(add(1, 2))

再验证一次 shell 执行权限。让它跑一条命令:

codex-auto "在当前目录执行 python demo.py 并把输出告诉我"

如果它直接执行并返回3,说明[shell]段的放权也生效了。整个过程没有任何确认弹窗,这就是我们要的结果。

如果你用的是 Claude Code 那条线,验证方式类似,但配置入口不同,参考文档:

https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite

验证通过后,建议把~/codex-test删掉,别留着占地方:

cd ~ && rm -rf ~/codex-test

5. 本篇常见错排查:401、local proxy failed、reading choices

配置过程中最容易撞的几个报错,我按出现频率排一下,对照着查。

401 Unauthorized。这是 Key 的问题,不是 config.toml 的问题。先确认环境变量:

echo $OPENAI_API_KEY | head -c 8

如果是空的,说明~/.bashrc没生效或者变量名写错。Codex CLI 读的是env_key指定的那个变量,你在 config.toml 里写的是env_key = "OPENAI_API_KEY",那环境里就必须有OPENAI_API_KEY。两者对不上就会 401。另外确认 Key 没有多余空格,复制时容易带上换行。

local proxy failed / connection refused。这个通常出现在你本地设了代理变量,但代理没开。检查:

env | grep -i proxy

如果有http_proxy之类的残留,先清掉:

unset http_proxy https_proxy all_proxy

然后重试。WSL 的网络和 Windows 主机是打通的,正常情况下直连https://taotoken.net/api就行,不需要额外代理设置。

reading choices / unexpected response shape。这个报错说明请求发出去了,但返回的结构不是 Codex 期望的。常见原因是base_url写错,比如漏了/api或者多写了/v1。确认你的配置是:

base_url = "https://taotoken.net/api"

而不是https://taotoken.net或https://taotoken.net/api/v1。路径不对,返回的就是网页而不是 JSON,解析自然失败。

OAuth 相关报错。如果你之前登录过官方账号,本地可能残留了 OAuth 凭据,和现在的 Key 模式冲突。清掉旧凭据再试:

rm -rf ~/.config/codex/auth.json

然后重新用环境变量方式跑。Codex 的auth.json和config.toml是两套机制,混用容易出问题,二选一即可。

unknown field 报错。说明你的 Codex 版本不认识 config.toml 里某个字段。把报错里提到的那行注释掉,改用命令行参数:

codex-auto --dangerously-bypass-approvals-and-sandbox .

命令行参数优先级高于配置文件,兜底很管用。

排查顺序建议:先看 Key(401),再看网络(proxy),再看 base_url(choices),最后看版本字段兼容性。按这个顺序走,基本都能定位。

6. 长期跑自动化的接入建议

全自动配置跑通之后,真正影响体验的是稳定性和额度。Codex CLI 在批量重构、连续跑测试时调用很密集,如果 Key 或端点不稳定,中途断掉比手动确认还烦。

我的做法是把三件套固定下来:Base URL 用https://taotoken.net/api,Key 单独放一个 env 文件不写进仓库,Model ID 按任务选——日常改动用通用模型,大批量重构用 coding 专用模型。这样切换成本低,也不会因为改配置把环境搞乱。

如果你打算把 Codex CLI 当成常驻的编码助手,长期高频调用,可以看一下 Coding Plan,额度上比按次更划算:

https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite

Key 管理和新建入口在这里:

https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite

接入字段对不上时查文档:

https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite

最后提醒一句:--dangerously-bypass-approvals-and-sandbox这个名字里的 dangerously 不是吓唬人。它真的会跳过所有确认。请只在你能承受「它改错文件」的目录里用,重要仓库先git commit再让它动手,出问题一条git checkout .就能回退。把这条习惯养成,全自动才敢放心开。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询