返回AI问答
codex exec 在 CI 里不改文件?默认只读是关键

codex exec 在 CI 里不改文件?默认只读是关键

AI问答 Admin 1 次浏览

codex exec 在 CI 中能分析代码却不产生修改,先检查沙箱:非交互模式默认只读。需要它生成补丁或修改工作区时,明确传入 --sandbox workspace-write,并确保启动目录是已检出的 Git 仓库。

最小可写命令怎么写

codex exec \
  --sandbox workspace-write \
  -C "$GITHUB_WORKSPACE" \
  "运行测试,修复失败项,只修改必要文件,然后重新运行测试"

workspace-write 只允许写当前工作区,不等于控制整台 runner。不要因一次失败就改用 --yolodanger-full-access;只有外部已严格隔离且任务确实需要时,才扩大权限。旧脚本里的 --full-auto 已是兼容参数,新流水线应直接声明沙箱。

仍然不改文件,查这三个位置

  1. 仓库检查失败:确认 checkout 成功,再检查 pwdgit status。安全的非仓库临时目录可使用 --skip-git-repo-check
  2. 命令需要交互批准:CI 无法弹出新的审批窗口,需要临时授权的动作会失败并返回错误。应提前设定沙箱和审批策略。
  3. 提示词只要求分析:明确写出“修改文件、运行验证、保留 diff”。结束后检查 Git diff 或生成 patch artifact,不要只看最终文字。

让流水线拿到可解析结果

需要消费完整事件流时使用 JSONL:

codex exec --json "检查仓库并给出风险列表" > codex-events.jsonl

只需要最终回答时,用 -o 写到文件;需要固定字段时配合 --output-schema。认证也要缩小暴露范围:只在执行 codex exec 的步骤注入 CODEX_API_KEY,不要让整个 job、依赖脚本或不受信任代码读取密钥。

推荐工具

更多