FEATURED · 精选文章

Open Interpreter 非交互模式完全指南:用 `interpreter exec` 在脚本、CI 与流水线中驱动编码 Agent

发布时间 / 2026/9/7 2:21:15
来源 / 创域科博编辑部
栏目 / 资讯中心
Open Interpreter 非交互模式完全指南:用 `interpreter exec` 在脚本、CI 与流水线中驱动编码 Agent Open Interpreter 非交互模式完全指南用interpreter exec在脚本、CI 与流水线中驱动编码 Agent【免费下载链接】openinterpreterA coding agent for open models like Kimi K3 and GLM 5.3项目地址: https://gitcode.com/GitHub_Trending/op/openinterpreterinterpreter exec是 Open Interpreter 面向自动化场景提供的非交互执行入口把一次完整的编码任务分析 diff、修 bug、跑代码审查以单条命令 单次运行到结束的方式交付无需打开全屏 TUI。本文以仓库文档 docs/zh/exec.md 为主体骨架结合codex-rs/exec的源码实现讲解 exec 的输入方式、全部常用标志、JSON 事件协议、结构化输出、会话恢复、代码审查子命令以及在 CI 中的落地模式。读完你可以在 shell 脚本、GitHub Actions 类流水线和本地自动化工具里稳定地驱动一个编码 Agent。说明本文命令按仓库中文文档统一写作interpreter exec如 docs/zh/cli-reference.md 所示其底层实现位于本仓库codex-rs/execcrate对应命令的内部 usage 字符串仍保留codex exec见 exec 的 CLI 定义两者指向同一套 exec 子命令。一、什么是非交互模式当你希望某个任务在不启动全屏 TUI 的情况下完整执行时使用interpreter execinterpreter exec summarize the changes in the last commit这条命令会把总结最近一次提交的变更作为一个完整的回合交给 Agent 处理进程在任务结束后自行退出。可读的最终答案会打印到stdout进度和诊断信息使用stderr除非你选择 JSON 输出。这种 stdout/stderr 分离不是约定而是被源码强制的契约。在 codex-rs/exec/src/lib.rs 顶部注释写得很明确在默认输出模式下写入 stdout 的唯一内容必须是最终消息在--json模式下stdout 必须是合法的 JSONL每行一个事件其余所有输出必须写到 stderr。实现层面对应的约束是 crate 级#![deny(clippy::print_stdout)]并在 run_main 的启动逻辑 中按是否开启--json选择两种事件处理器默认的EventProcessorWithHumanOutput人类可读输出与EventProcessorWithJsonOutputJSONL 输出。诊断日志则交给 tracing 层写往 stderr默认过滤级别为error可通过RUST_LOG环境变量调整见 exec 的 stderr 过滤逻辑。这样的设计让 exec 天然适合被程序捕获脚本只需要读取 stdout 拿到最终答案把 stderr 当作旁路诊断。二、prompt 的五种输入形态interpreter exec接收的提示文本来自多个来源且支持组合。1. 作为位置参数直接传入interpreter exec find one bug in src/parser.rs这是最直接的用法适合命令较短、无需转义换行的场景。2. 从 stdin 读取提示-哨兵cat task.md | interpreter exec -显式使用-时提示内容完全从 stdin 读取。对应源码中的StdinPromptBehavior::Forced分支即无条件把 stdin 当作 prompt见 codex-rs/exec/src/lib.rs。3. 把上下文通过管道并入提示git diff | interpreter exec explain this diff and flag risky changes当既提供了位置参数 prompt、stdin 又处于管道输入状态时stdin 不会被当作独立的 prompt 覆盖而是作为追加的上下文块合并进提示。CLI 参数注释把这一点写得很清楚stdin 管道内容会作为stdin代码块追加见 cli.rs 的 prompt 字段注释。这是给 Agent 喂 diff / 日志 / 报表最常用的姿势相当于把文本上下文交给模型后再下达指令。4. 为第一个提示附加图片interpreter exec -i screenshot.png describe the UI problem-i/--image是一个全局共享参数支持一次传多张、并以逗号分隔见 共享 CLI 参数 SharedCliOptions。图片会先于文本被组装进首条用户输入源码中将图片路径映射为UserInput::LocalImage随后再 push 文本输入见 首条消息的组装逻辑。5. 恢复会话时继续追加输入恢复resume子命令同样接受 prompt 与-i图片见下文恢复 Exec 工作一节。三、常用标志一览以下是文档给出的常用标志总表docs/zh/exec.md标志用途--json输出换行分隔的 JSON 事件。--output-schema file要求最终答案符合 JSON Schema。--output-last-message, -o file将最终的助手消息写入文件。--color always\|never\|auto控制 ANSI 颜色。--sandbox mode覆盖沙箱模式。--ask-for-approval mode覆盖批准策略。--profile name使用指定的配置文件。--ephemeral不持久化会话记录。--skip-git-repo-check允许在非 Git 仓库中运行。--ignore-user-config跳过本次运行的用户配置。--ignore-rules跳过 execpolicy 规则。--verify在退出前额外运行一次完成检查。--timeout seconds在运行期间发送剩余时间提醒。逐个拆解其底层行为结合 exec 的 clap 参数定义这些标志大多是global全局参数可放在 prompt 前后任意位置--json把事件处理器切换为 JSONL 输出。该参数还有一个历史别名--experimental-json见 cli.rs自动化代码中两种写法都兼容。--output-schema file指向一个 JSON Schema 文件路径运行时解析后作为output_schema字段随turn/start请求一并发送约束模型的最终响应结构。读取逻辑在 load_output_schema。--output-last-message, -o file最终助手消息会被写入指定文件。该文件句柄会注入两种事件处理器human / JSONL便于脚本在主流程之外稳定取到最终答复不受 stdout/stderr 重定向影响。--color接受always/never/auto三值枚举定义见 Color。auto默认会检测 stdout/stderr 各自是否接终端来决定是否输出 ANSI 颜色见 颜色判定逻辑。--sandbox mode覆盖配置文件中的沙箱策略例如 CI 里收敛为read-only见SharedCliOptions的 sandbox_mode。--ask-for-approval mode覆盖批准策略。特别地headless 模式默认会强制为永不询问AskForApproval::Never只在自动审查评审员AutoReview场景重建覆盖见 overrides 组装。--profile name把$CODEX_HOME/name.config.toml作为一层配置叠加到基础用户配置之上实现不同任务如 code review 与日常开发使用不同参数集。--ephemeral本次会话不落盘不会在会话存储中留下记录。--skip-git-repo-check默认情况下若不在 Git 仓库内运行exec 会直接报错退出Not inside a trusted directory and --skip-git-repo-check was not specified见 lib.rs 的仓库检查。--dangerously-bypass-approvals-and-sandbox别名--yolo开启时也会跳过该检查因为它假定外部环境已自行沙箱化。--ignore-user-config跳过$CODEX_HOME/config.toml的加载但认证信息仍从CODEX_HOME读取见 cli.rs。--ignore-rules不加载用户级与项目级的 execpolicy.rules文件适用于无需规则约束的纯受信任务。--verify在正常回合结束后再额外跑一次完成检查回合用于长任务结束时核对结果是否达标。--timeout seconds为超长运行设置倒计时期间 Agent 会周期性地收到剩余时间提醒从而主动收敛到可在时限内交付的方案。更多共享参数自动化高频搭配exec 还继承了整套共享 CLI 参数定义于 shared_options.rs包括-m, --model model指定本次使用的模型--oss/--local-provider lmstudio|ollama切换到开源本地推理提供商-C, --cd DIR指定工作根目录等价于在目标目录下执行--add-dir DIR在主工作区之外追加可写目录--approve-for-me把批准请求路由到自动评审等价于使用workspace-write沙箱的自动审查见 shared_options.rs。四、JSON 事件把运行过程变成可消费的数据流自动化场景请使用--jsoninterpreter exec --json list the files this task would touch每一行都是一个 JSON 事件表示进度、工具调用、文件更改、推理摘要或最终消息。由于 stdout 只承载 JSONL配合jq、流式解析器或按行读取即可在外部管道中重建整个执行过程。事件协议类型顶层事件是一个带type判别字段的枚举见 exec_events.rs 的 ThreadEvent当前实现包含type含义thread.started新线程启动携带thread_id——该 ID 可用来在之后resume恢复这条线程。turn.started向模型发送新 prompt 后开启一个回合。turn.completed回合完成通常紧跟助手最终回复事件内含 tokenusage。turn.failed回合以错误结束携带error信息。item.started/item.updated/item.completed线程条目item的生命周期事件。error事件流层面不可恢复的致命错误。其中turn.completed携带的usage统计了input_tokens、cached_input_tokens、cache_write_input_tokens、output_tokens与reasoning_output_tokens等明细见 Usage 结构可用于成本核算与额度监控。线程条目item通过内层type继续细分ThreadItemDetailsagent_message自然语言答复或结构化输出模式下的 JSON 字符串、reasoning推理摘要、command_executionAgent 发起的命令执行及其退出码、file_change补丁应用结果、以及 MCP 工具调用等。消费示例interpreter exec --json list the files this task would touch events.jsonl # 仅查看最终助手消息 jq select(.type agent_message) | .item.text events.jsonl # 查看回合的 token 用量 jq select(.type turn.completed) | .usage events.jsonl五、结构化输出约束最终答案必须符合 JSON Schema配合--output-schema使用模式文件可以让 Agent 的最终输出直接变成程序可解析的结构化数据。先用一个 schema 文件描述期望的字段{ type: object, properties: { risk: { type: string }, recommended_fix: { type: string } }, required: [risk, recommended_fix] }interpreter exec --output-schema schema.json \ inspect the current diff and return the highest risk开启结构化输出后schema 会被封装进首回合请求TurnStartParams.output_schema见 lib.rs 的回合启动模型的最终消息会以符合该 schema 的 JSON 字符串形式产出agent_message条目在结构化输出模式下承载 JSON见 exec_events.rs 的注释说明。由于是纯 JSON Schema 约束而非代码层强校验建议 schema 中的required字段设置完整、类型声明严格并在下游使用jq或反序列化器做容错解析。若还需要把最终消息落盘供后续步骤读取可与-o/--output-last-message组合使用。六、恢复 Exec 工作让长任务可以被续跑非交互会话是持久化的如果任务超时、中途中断或你想让 Agent 在一个已理清上下文的会话里继续干活可以用resume子命令源码层面它经thread/listthread/resume完成见 lib.rs 的 resume 流程。继续最近的非交互会话interpreter exec resume --last now apply the plan或恢复指定的会话 IDinterpreter exec resume SESSION_ID continue两个要点会话 ID 既可以是 UUID也可以是线程名UUID 优先级更高省略 ID 时配合--last自动选择最近记录的会话见 ResumeArgs 定义。--last与位置参数存在特殊语义当使用--last且没有显式 prompt 时位置参数会被重新解释为prompt而不是会话 ID因此exec resume --last now apply the plan中最后的字符串是下一步指令该重解释逻辑在 cli.rs 的 From 实现 中完成。添加--all可搜索当前工作目录之外的会话。默认情况下会话搜索会按当前工作目录cwd过滤跨目录续跑旧任务时必须加--all。七、来自 Exec 的审查无 TUI 的自动代码审查在不打开 TUI 的情况下运行代码审查是 exec 子命令中与resume并列的另一个一等公民操作interpreter exec review --uncommitted interpreter exec review --base main interpreter exec review --commit abc123三种目标选择见 ReviewArgs参数审查范围互斥关系--uncommitted已暂存 未暂存 未跟踪的全部变更与--base、--commit、prompt 互斥--base BRANCH相对指定基准分支的全部变更与--uncommitted、--commit、prompt 互斥--commit SHA某一次提交引入的变更与--uncommitted、--base、prompt 互斥对于自定义审查指令可传入文本或使用-从 stdin 读取interpreter exec review --uncommitted focus on concurrency bugs and API misuse审查同样支持--json、--sandbox等全局参数。底层它会构造ReviewRequest并走 app-server 的review/start请求见 lib.rs 的 Review 分支审查内容与可读输出均与文档 auto-review 描述的能力一致。八、CI 模式流水线里的标准姿势exec 就是为无头环境设计的。推荐的 CI 模式是使用 API Key 认证并保持沙箱范围窄防止模型在审查/分析过程中改动仓库内容。- name: Review patch env: OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} run: | interpreter exec --json --sandbox read-only \ review this pull request diff for regressions \ pr.diff review.jsonl这条命令的要点拆解OPENAI_API_KEY环境变量headless 运行不使用交互式登录通过 API Key 完成认证。exec 进程内会启用enable_codex_api_key_env读取环境变量见 lib.rs 的启动参数。--sandbox read-only把模型可执行命令的沙箱收敛为只读。模型可以读源码、分析 diff但无法写文件——在 CI 里这是把会写代码的 Agent约束成纯分析器的关键开关。 pr.diff review.jsonl把 PR diff 通过 stdin 作为stdin上下文喂给提示对应前面讲的管道输入同时把结构化事件流落到review.jsonl供后续步骤解析或归档。退出码exec 会跟踪服务端上报的致命错误并以非零码退出为自动化提供失败可感知的信号见 lib.rs 的注释。审查类任务跑完后最稳妥的取值姿势是-o review-result.json--output-schema组合先让审查结论以固定 JSON 结构返回并落盘再用jq提取风险等级与建议决定流水线是否继续。九、实战建议与相关文档综合源码与文档把 exec 用好还有几条经验确认最终答案只从 stdout 读取默认模式 stdout 只有最终消息--json模式 stdout 是纯 JSONL。任何进程级日志都走 stderr不会污染你的捕获结果。长任务优先--json-oJSONL 保证中途进度可观测-o保证最终消息在进程异常退出前也有副本落盘。审查、编辑类任务主动收紧沙箱read-only纯分析与workspace-write允许在工作区内改代码分别对应只读审查与允许修改两类 CI 阶段。resume 语义注意--last的位置参数重解释--last后跟的字符串会被当作新 prompt 而非会话 ID。跨目录续跑加--all脱离 Git 仓库运行加--skip-git-repo-check或确认外部环境已沙箱化。interpreter exec与仓库其他部分配合紧密可继续阅读命令行全貌与其余子命令docs/zh/cli-reference.mdexec 内部 CLI/参数/子命令实现codex-rs/exec/src/cli.rs、codex-rs/exec/src/lib.rsJSON 事件与 item 类型定义codex-rs/exec/src/exec_events.rs共享全局参数模型、OSS、沙箱、目录等codex-rs/utils/cli/src/shared_options.rs沙箱模式与批准策略docs/zh/sandbox.md、docs/zh/permissions.mdexecpolicy 规则--ignore-rules影响的加载项docs/zh/execpolicy.md会话持久化与resume/--ephemeral的行为边界docs/zh/sessions.md自动代码审查交互式/review与 exec review 的关系docs/zh/auto-review.mdGitHub Action 场景下的interpreter exec --json用法docs/zh/github-action.md【免费下载链接】openinterpreterA coding agent for open models like Kimi K3 and GLM 5.3项目地址: https://gitcode.com/GitHub_Trending/op/openinterpreter创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻