在 Win10 系统上为 Codex 这类本地 AI 工具链配置环境变量时,最令人头疼的问题莫过于敏感信息的管理。数据库密码、API 密钥等关键凭据,绝不能硬编码到源码中,更不能提交至 Git 仓库——一旦泄露,后果将极为严重。此外,开发环境与生产环境的配置通常各不相同,必须确保两者能独立加载、互不干扰。其实,只要方法得当,这个问题并不复杂。

创建并加载 .env 文件
操作步骤非常直观:在项目根目录下新建一个名为 .env 的纯文本文件,使用记事本或 VS Code 打开,按照 KEY=VALUE 的格式逐行写入配置项即可。示例如下:
OPENAI_API_KEY=sk-xxx
DB_URL=sqlite://./dev.db
LOG_LEVEL=debug
有一个细节必须牢记:务必将 .env 添加到 .gitignore 文件中,否则一旦提交到远程仓库,密钥就等于公开了。如果不小心已经被 Git 追踪,请先执行 git rm --cached .env,然后再提交。
让应用自动读取 .env
不同的编程语言生态有对应的标准加载库,千万不要依赖手动 set 命令临时生效——那种方式只对当前 CMD 窗口有效,窗口关闭后配置就会消失,对 Codex 启动脚本毫无作用。
Node.js: 安装 dotenv 包,在入口文件顶部添加一行 require('dotenv').config()。如果需要加载指定路径的 .env 文件,可以传入参数 { path: './config/prod.env' }。
Python: 安装 python-dotenv,在启动脚本开头写上 from dotenv import load_dotenv; load_dotenv()。若要加载非默认位置的文件,调用 load_dotenv('.env.production') 即可。
PowerShell 启动场景: 可以在启动 Codex 的 .ps1 脚本中手动解析 .env,通过 Get-Content .env | ForEach-Object { if ($_ -match '^([^#].+?)=(.*)$') { Set-Item Env:$($matches[1].Trim()) $matches[2].Trim() } } 注入变量。但这种方法不推荐用于生产环境——它缺乏值转义和空格处理能力,容易引发意外问题。
区分开发与生产配置
第一步:在项目根目录下新建两个文件:.env.development 和 .env.production,分别存放对应环境的配置变量。
第二步:修改启动命令,让运行时根据 NODE_ENV 或 PYTHON_ENV 自动选择加载哪个文件。例如,对于 Node.js 项目,可以在 package.json 的 scripts 字段中这样配置:
"start:dev": "NODE_ENV=development node index.js",
"start:prod": "NODE_ENV=production node index.js"
第三步:在代码中判断环境变量并加载对应的 .env 文件。Node.js 示例:
const env = process.env.NODE_ENV || 'development';
require('dotenv').config({ path: `.env.${env}` });
这里有一个容易被忽略的坑:Windows CMD 根本不支持 NODE_ENV=xxx 这种语法,必须改用 cross-env 工具或者直接使用 PowerShell 启动,否则环境变量无法被子进程继承。
第四步:生产环境服务器上只需保留 .env.production 和 .env(用于覆盖通用项),切勿将 .env.development 也部署上去。万一误加载了开发配置,数据库连接地址可能会指向本地测试库,后果不堪设想。
