Open Interpreter(Rust 版):面向低成本模型的终端编码代理——安装、Harness 切换与 Codex SDK 兼容实战
Open Interpreter 是 OpenAI Codex 的一个 Rust 重写分支,其定位是"为低成本模型优化的编码代理"。本篇基于仓库西班牙语版 README(README_ES.md)梳理其完整使用路径:从一行命令安装、启动 i/interpreter 会话,到通过 /harness 在 10 余种内置 Harness 之间切换、通过 interpreter acp 接入 ACP 编辑器、以及仅改一行代码即用 OpenAI Codex TypeScript SDK 驱动本项目的实践。读完后你可以直接搭建一个可运行、可嵌入编辑器的低成本模型编码代理环境。
一、安装与启动
Open Interpreter 为 macOS、Linux 和 Windows 提供了安装脚本,README 中给出的官方入口如下。
macOS 与 Linux:
curl -fsSL https://www.openinterpreter.com/install | sh
Windows(PowerShell):
irm https://www.openinterpreter.com/install.ps1 | iex
安装完成后,在终端输入 i 或 interpreter 即可启动一个交互式会话。
安装脚本做了什么
仓库内附带的安装脚本 scripts/install/install.sh 可以直接对照阅读,其中几个关键变量说明了安装的落点与默认行为:
COMMAND_NAME="${CODEX_COMMAND_NAME:-interpreter}" # 主命令名
ALIAS_COMMAND_NAMES="${CODEX_ALIAS_COMMAND_NAMES:-i}" # 别名 i
BIN_DIR="${OPEN_INTERPRETER_INSTALL_DIR:-${CODEX_INSTALL_DIR:-$HOME/.local/bin}}"
CODEX_HOME_DIR="${INTERPRETER_HOME:-${CODEX_HOME:-$HOME/.openinterpreter}}"
RELEASE_TAG_PREFIX="${CODEX_RELEASE_TAG_PREFIX:-rust-v}"
从源码结构看可以确认:
- 二进制被安装到
~/.local/bin/interpreter,同时注册了别名i; - 配置与会话状态统一保存在
~/.openinterpreter(可通过环境变量INTERPRETER_HOME或CODEX_HOME覆盖); - 独立(standalone)发布包解压到
~/.openinterpreter/packages/standalone,并通过releases/<版本>与current软链接管理版本切换,脚本内置安装锁(install.lock,10 分钟视为陈旧)防止并发安装互相破坏; - 版本号形如
x.y.z[-alpha[.N]|-beta[.N]],前缀rust-v表明这是 Rust 线的发布。
Windows 侧对应脚本为 scripts/install/install-open-interpreter.ps1,并配有自动化测试 scripts/install/test_install_ps1.ps1 与 scripts/install/test_install_sh.py。
二、Harness 模拟:一个二进制,多套代理骨架
Open Interpreter 的核心设计理念是 Harness 模拟:它 fork 自 Codex,目标是复现"在低成本模型上表现最好的那套代理 harness(系统提示词 + 工具集 + 请求整形)",让不同厂商的模型都能以各自官方 CLI 的方式被驱动。
在 TUI 中输入 /harness 即可列出当前可选 harness 并切换,README 中展示的清单为:
> /harness
native
claude-code
claude-code-bare
zcode
kimi-code
kimi-cli
qwen-code
deepseek-tui
swe-agent
minimal
源码中的完整 Harness 枚举
TUI 展示的是常用子集。核心枚举定义在 codex-rs/tools/src/harness.rs,实际支持的取值更多:
pub enum Harness {
#[default]
Native,
ClaudeCode,
ClaudeCodeBare,
DeepSeekTui,
KimiCode,
KimiCli,
ZCode,
LittleCoder,
MiniSweAgent,
OpenCode,
Pi,
QwenCode,
SweAgent,
Terminus2,
Minimal,
Other(String),
}
其中:
Native是默认值(from_config_name(None)或空字符串时解析为Native),即 Codex 原生的提示词与工具面;Other(String)分支允许配置中出现未列举的名称,为后续扩展留出空间;is_claude_code()同时覆盖claude-code与claude-code-bare,二者共享整形原语但系统提示词与工具集不同。
每个 harness 的实现集中在 codex-rs/core/src/harness/ 目录下,每个文件对应一套独立的提示词资产,例如:
| Harness | 实现文件 | 关联提示词/工具资产 |
|---|---|---|
| kimi-code | kimi_code.rs | kimi_code_system_prompt.md、kimi_code_tools.json |
| kimi-cli | kimi_cli.rs | kimi_cli_prompt.md、kimi_cli_compaction_prompt.md |
| qwen-code | qwen_code.rs | qwen_code_prompt.md |
| swe-agent | swe_agent.rs | 同目录 |
| minimal | minimal.rs | 同目录 |
README 特别提到 Kimi K3:供应商推荐的 Kimi Code harness 已被用 Rust 重新实现,以获得 K3 的最佳表现与类 Codex 的交互界面,登录流程对应 codex-rs/login/src/kimi_code.rs,相关中文文档见 docs/zh/kimi-k3.md。
路由层:Harness 如何影响请求
Harness 不只是换一份系统提示词。codex-rs/core/src/harness/routing.rs 中的 resolve_stream_transport_route(wire_api, harness) 会根据"线上 API 类型 × harness"组合决定流式传输路线:
pub(crate) enum StreamTransportRoute {
ResponsesApi,
ChatCompletionsCompat,
ChatHarness(ChatHarnessRoute),
MessagesHarness(MessagesHarnessRoute),
/// claude-code shaping carried over the Responses wire (`/responses`).
ClaudeCodeResponses(ClaudeCodeProfileRoute),
/// claude-code shaping carried over the chat-completions wire
ClaudeCodeChat(ClaudeCodeProfileRoute),
}
也就是说 claude-code/claude-code-bare 的整形(Full/Bare 两种 profile)既能跑在 Responses 线上,也能经由 chat-wire-compat 转换器跑在 Chat Completions 线上;deepseek-tui、kimi-code、swe-agent 等则走 ChatHarness 路线。claude-code 与 claude-code-bare 的差别正体现在 ClaudeCodeProfileRoute::{Full, Bare} 上:共享工具整形原语,但系统提示词与工具集不同。
三、ACP 协议与 Codex SDK 兼容
作为 ACP 代理接入编辑器
Open Interpreter 可以作为 Agent Client Protocol 代理运行:把编辑器的 ACP 客户端指向 interpreter acp 即可。仓库中文档为 docs/acp.md,Rust 侧实现位于 codex-rs/acp-server/,另有测试客户端 codex-rs/app-server-test-client/ 可用于本地联调。
一行代码替换 Codex SDK 的二进制
如果你已经在用 OpenAI 的 Codex TypeScript SDK,可以保留 SDK、只把二进制指向 interpreter:
-const codex = new Codex();
+const codex = new Codex({ codexPathOverride: "interpreter" });
这与 README 的说明一致:Open Interpreter 实现了与 Codex 相同的 exec 协议,因此 SDK 无需改动其他代码。仓库提供了一条本地兼容性检查脚本 scripts/test-codex-sdk-compat.sh,其流程是:
- 要求
interpreter可执行(或通过环境变量INTERPRETER_BIN指定); - 用 pnpm 安装并构建
@openai/codex-sdk(sdk/typescript/); - 以
CODEX_EXEC_PATH=$interpreter_bin运行 SDK 的集成测试tests/run.test.ts中 "resumes thread by id" 用例——该用例只涉及会话恢复,不依赖任何模型供应商凭据; - 通过则打印
Codex SDK compatibility passed with <bin>。
SDK 使用文档见 docs/sdk.md。
四、计算机使用(QA 技能)
Open Interpreter 内置一套 QA 技能,让任何模型都能"真的操作并测试"自己改动的界面:Web 应用通过 agent-browser 驱动真实浏览器,原生桌面应用通过 trycua 的 cua-driver 驱动。技能定义在 codex-rs/skills/src/assets/samples/qa-testing/SKILL.md,其工作流程要点:
- 先检查网络:
curl -fsI https://github.com不通时,技能会要求用户先用/permissions放行网络,因为沙箱默认可能阻断出站流量; - Web 应用:按
uname组合(darwin/linux × arm64/x86_64)下载对应平台的 agent-browser 预编译二进制到~/.local/bin,再执行agent-browser install与agent-browser skills get core;Windows 侧走包安装器下载匹配的原生二进制; - 桌面原生应用:走 cua-driver CLI 通道。
这些外部工具不是静态捆绑的,而是"按需通过宿主机的常规命令审批流安装",这与仓库的沙箱/审批模型一致,更多权限细节可参考 docs/sandbox.md。
五、功能总览与状态管理
README 列出的能力清单与仓库的对应关系:
- 命令执行的沙箱隔离:覆盖 macOS、Linux、Windows 三个平台,Linux 侧实现位于 codex-rs/linux-sandbox/,策略引擎见 codex-rs/execpolicy/ 与 codex-rs/execpolicy-legacy/;
/model切换供应商与模型:供应商目录是自动生成的,从codex-rs下执行python3 scripts/write_provider_catalog.py可刷新全部托管供应商,重复--provider <provider-id>可只刷新选定供应商;活模型源需要供应商凭据。目录文件为 codex-rs/model-provider-info/provider_catalog.json,模型管理见 codex-rs/models-manager/;/harness检查与切换 Rust 原生 harness:即本文第二节的Harness枚举;- 内置 QA 技能:即第四节的 qa-testing 技能;
interpreter acp:ACP 编辑器接入;- 配置与会话状态保存在
~/.openinterpreter:安装脚本中的CODEX_HOME_DIR默认值印证了这一点,配置参考文档见 docs/config.md; - 兼容
exec、MCP、技能、hooks、权限与AGENTS.md:MCP 服务见 codex-rs/mcp-server/ 与 docs/mcp.md,hooks 见 codex-rs/hooks/ 与 docs/hooks.md,AGENTS.md 约定见 docs/agents_md.md。
六、版本说明与许可
需要注意版本区分:当前仓库是基于 Codex 的 Rust 新版 Open Interpreter;原 Python 版项目以社区维护的 fork 形式继续演进(endolith/open-interpreter),两者并非同一条代码线。
项目采用 Apache-2.0 许可(见 LICENSE),发布线以 rust-v 标签管理,配套中文文档位于 docs/zh/,其中 docs/zh/harness.md 与 docs/zh/providers.md 分别对应本文第二、三节提到的 harness 与供应商配置指南。
小结
- 安装:
curl -fsSL https://www.openinterpreter.com/install | sh(macOS/Linux)或irm https://www.openinterpreter.com/install.ps1 | iex(Windows),启动命令为i或interpreter,状态目录~/.openinterpreter; - Harness:
/harness在native、claude-code、kimi-code、deepseek-tui、swe-agent、minimal等之间切换,源码层由 codex-rs/tools/src/harness.rs 的枚举与 codex-rs/core/src/harness/routing.rs 的传输路由共同实现; - 集成:
interpreter acp接入 ACP 编辑器;Codex SDK 仅需codexPathOverride: "interpreter"一行即可复用,可用 scripts/test-codex-sdk-compat.sh 做免供应商的本地兼容校验; - 能力面:三平台沙箱执行、内置 QA 技能(agent-browser / trycua)、MCP、hooks、权限与
AGENTS.md全量兼容。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0624
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
