不敢让 Codex 直接改代码?我先让它只读分析一个 Node.js 项目
不敢让 Codex 直接改代码?我先让它只读分析一个 Node.js 项目
上一篇我把 Codex CLI 的版本、帮助、doctor 和功能列表都检查了一遍。环境能用了,这次开始进项目。
但我没有马上把写权限交给 Codex。我准备了一个很小的 Node.js 项目,让它先读目录、README、npm 脚本和源码,再把自己看到的东西说清楚。
这次是真实运行:npm test 通过 2 项,Codex CLI 0.147.0 返回了完整分析,最终退出码是 0。运行前后 5 个示例文件的 SHA-256 哈希一致。
示例项目:5 个文件,0 个第三方依赖
项目叫 tiny-books-api,目录如下:
源码地址:https://gitee.com/heihei_66/codex-example-project
example-project/
├── README.md
├── package.json
├── src/
│ ├── books.js
│ └── server.js
└── test/
└── server.test.js
它只有两个 GET 接口:
/health返回服务状态。/api/books返回内存中的两本书。

图 1:根据真实目录整理,示例项目一共 5 个文件,不包含 Key 和第三方依赖。
先跑测试,别把项目自己的错误算给 Codex
进入示例项目后先执行:
npm test

图 2:本次运行 2 项通过、0 项失败,总耗时约 241 毫秒。
测试覆盖 /health 和 /api/books。这一步先确认项目本身能跑,再看 Codex 能不能读懂。
用 read-only 执行 Codex 分析
本机 codex exec --help 已确认当前版本支持:
--sandbox read-only:限制项目写入。--skip-git-repo-check:允许在独立示例目录中运行。--ephemeral:不保留本次会话文件。
我最开始让 Codex 自己运行 rg --files,但当前 Windows 沙箱启动子 PowerShell 时返回 1312。后来我把 5 个无密钥文件通过标准输入交给 Codex,并明确要求它不要调用工具。
先准备文件内容:
$root = (Get-Location).Path
$files = Get-ChildItem -Recurse -File | Sort-Object FullName
$bundle = ($files | ForEach-Object {
$relative = [System.IO.Path]::GetRelativePath($root, $_.FullName)
"`n=== FILE: $relative ===`n"
Get-Content -Raw -LiteralPath $_.FullName
}) -join "`n"
再执行只读分析:
$prompt = @'
下面的标准输入包含当前 Node.js 项目的全部文件。
不要调用任何工具,不要创建、修改或删除文件,只根据标准输入分析。
请说明文件职责、npm 脚本、第三方依赖、GET /api/books 的调用路径,
并列出 3 个有文件依据的缺口。不要补全文件里没有的信息。
'@
$bundle | codex exec --sandbox read-only --skip-git-repo-check --ephemeral $prompt

图 3:本次成功使用的命令。输入只包含示例项目的 5 个无密钥文件。
Codex 实际分析出了什么
Codex 正确识别了 5 个文件的职责:
package.json:项目元数据、启动和测试脚本。README.md:接口、命令和端口说明。src/books.js:内存图书数据。src/server.js:HTTP 服务和路由。test/server.test.js:两个 GET 接口测试。
它确认启动命令是 npm start,测试命令是 npm test,项目没有第三方依赖。
GET /api/books 的调用路径也说对了:
http.createServer
→ 匹配 GET /api/books
→ 读取 books
→ JSON.stringify
→ response.end
Codex 还列出三个有源码依据的缺口:
request.url使用精确匹配,/api/books?limit=1会返回 404。- 非 GET 的
/api/books仍返回 404,没有区分 405。 - 测试只检查状态码和数组长度,没有检查响应内容、
Content-Type和未知路由。

图 4:真实 Codex 输出节选,模型、Provider、会话 ID、本机路径和服务地址已经隐藏。
怎么确认它没有改文件
我在运行前后分别计算了 5 个文件的 SHA-256 哈希。最终结果是:
CODEX_EXIT=0
FILES_UNCHANGED=True
read-only 参数和实际文件结果是一致的。它返回了分析,但没有修改项目。
使用 llapi.org 时的边界
示例项目本身不需要 Key,但 Codex 调用模型仍需要已经配置好的认证和服务入口。
如果你的 Codex 使用 llapi.org,可以到 llapi.org 创建账号并申请自己的 API Key。Base URL、模型名称、价格和服务规则以官网当前页面为准。
文章、截图和仓库里都不要放真实 Key、Authorization 头或后台页面。只使用类似 <YOUR_LLAPI_API_KEY> 的占位符。
这次只读分析完成以后,我才愿意进入下一步:让 Codex 修改一个小问题,再用 git diff 检查它到底动了什么。
你第一次让 Codex 读项目时,更担心它看错目录、依赖,还是权限?
更多推荐



所有评论(0)