十个官方 CLI,十套提示词工程,凭什么各锁各家
2026 年的 coding agent 市场有个荒诞局面:Claude Code、OpenAI Codex、Kimi Code、DeepSeek TUI、Qwen Code、SWE-agent……每个官方 CLI 都有一套精心调过的系统提示词 + 工具定义 + 消息格式(合称 harness),但都只服务自家模型。DeepSeek 用户想用 Claude Code 那套「先思考再动手」的提示词工程?门都没有。Kimi K3 的官方 harness 是 Moonshot 花了大价钱调的,但只能配 K3 用。
Open Interpreter 干的事一句话概括:把这些官方 harness 全部抄进一个 Rust 二进制,做成可切换模块,任何模型都能套任何壳。它现在是 OpenAI Codex 的一个 fork(Rust 重写,68,015 Star,Apache-2.0),README 定位一句话:「A coding agent optimized for low-cost models」——专门为 Kimi K3 / DeepSeek / Qwen / GLM 这些便宜模型榨性能。
这个选题的巧劲在于:它跟这个工坊写过的所有 agent 都不同。opencode 是多 provider 但只有自己的 harness;qwen-code、kimi-code-cli 是官方 CLI 但各锁一家;learn-claude-code 拆解了 Claude Code 的机制——而 Open Interpreter 是第一个把「harness 本身」当可插拔资产的工具。
它是什么:Codex 的壳,换芯的心
2023 年 7 月建仓的 Open Interpreter 本来是「自然语言操作电脑」的 Python 项目,老用户可能还记得。2026 年它重构成 Rust,明说「This is the new Rust version of Open Interpreter, based on Codex」,老 Python 版移交社区 fork(endolith/open-interpreter)维护。所以现在的它:Codex 的完整执行内核(sandbox、approval、hooks、MCP、sessions)+ Open Interpreter 的 harness 仿真层。
官方文档把架构拆成三层,这是全文最重要的概念:
| 层 | 管什么 | 例子 |
|---|---|---|
| Provider | 请求发到哪、怎么认证、走哪种 wire 协议 | deepseek(DEEPSEEK_API_KEY)、moonshotai、ollama、openai |
| Model | 发给端点的模型 ID | kimi-k3、deepseek-v4-pro、gpt-5.6-sol |
| Harness | Agent 的提示词、工具面、消息塑形(本文主角) | claude-code、kimi-code、qwen-code |
换句话说:harness 决定「Agent 长什么样」,provider 决定「模型从哪来」,两者彻底解耦。你可以在 config 里写「DeepSeek 的模型 + Kimi Code 的壳」,也可以「Ollama 本地模型 + Claude Code 的壳」。
核心机制:harness 到底是什么,怎么做到「换壳」
看源码(codex-rs/core/src/harness/)就清楚了:每个 harness 是一组系统提示词模板 + 工具定义 + 消息塑形逻辑。比如 kimi_code_system_prompt.md 是 Moonshot 官方提示词原样搬进来,kimi_code_tools.json 是官方工具 schema,kimi_code.rs 负责把请求塑形成 Kimi Code 期望的格式——包括 prompt-cache key 和 thinking 配置这种细节。工具调用仍然走 Open Interpreter 自己的 Rust 运行时,不会真的去调 Kimi 的可执行文件。
传输层(wire)和塑形层(harness)分开路由,这是架构上最值得抄的点:
- Responses wire —— OpenAI Responses API 风格(Codex 原生、Bedrock、Ollama、LM Studio)
- Chat wire —— OpenAI 兼容 Chat Completions(绝大多数第三方 provider + 各 chat harness)
- Messages wire —— Anthropic Messages API(claude-code harness 原生线,zcode 也要求这条线)
最骚的是 claude-code 和 claude-code-bare 两个壳:它们可以架在任意一条 wire 上——你的 provider 是 Responses 就走 Responses,是 Chat 就做 chat-wire 转换,是 Anthropic 就走原生 Messages。Claude Code 的提示词工程因此成了通用资产,不绑 Anthropic。而 kimi-cli / kimi-code 只支持 Chat wire,配 Messages 会直接报 InvalidRequest(routing.rs 里写死的)。
官方默认绑定规则(不手动配时自动选):
| 模型 / Provider | 自动选的 harness | 说明 |
|---|---|---|
| Anthropic / Messages 线 / claude 模型 | claude-code | 完整 Claude Code 提示词 + 工具面 |
| DeepSeek | claude-code-bare | Claude Code 的「精简版 profile」——DeepSeek 官方钦定搭配 |
| Kimi K3 / Moonshot | kimi-code | Moonshot 官方 Kimi Code harness 的 Rust 复刻,K3 性能最大化 |
| Z.AI / GLM / Zhipu | Generic Chat 或 zcode | zcode 需要 Messages 端点 |
十套 harness 各改什么
| Harness | 来源 | 塑形要点 |
|---|---|---|
claude-code | Anthropic | 完整 Claude Code 系统提示词 + thinking 配置 + 上下文管理 + 标题生成;工具含 Bash/Read/Write/Edit/TodoWrite/Glob/Grep/web 搜索/LSP/定时唤醒/子代理 |
claude-code-bare | Anthropic 精简版 | 更小的 prompt/profile,不同输出默认值;DeepSeek 自动选它 |
kimi-code | Moonshot(现行版) | 现行 Kimi Code 提示词 + 工具 + prompt-cache key + thinking 配置;K3 默认壳 |
kimi-cli | Moonshot(已退休 Python 版) | 老 Kimi CLI 壳,含 AGENTS.md 加载、skill 发现;仅兼容老会话用 |
deepseek-tui | DeepSeek TUI / CodeWhale | turn 元数据、仓库上下文、自动生成项目说明;工具含 shell/apply patch/checklist/plan |
qwen-code | 阿里 Qwen Code | Qwen Code 启动上下文,开头注入一段「日期/OS/目录/文件列表」的合成 setup 交换 |
swe-agent | Princeton SWE-agent | 不走工具 schema,走「讨论/命令」循环:解析回复里的 shell 命令执行,默认 30 秒超时 |
zcode | Z.AI | ZCode 提示词 + 工具 + todo/plan + skills,要求 Messages wire |
minimal | 自研 | 紧凑通用提示词,函数工具平铺成普通 chat 工具列表——兜底用 |
native | Codex 原生 | 不塑形,原样走 Codex 的 Responses 线 |
源码里还埋着没写进 README 的壳:opencode、pi、little-coder、terminus-2、mini-swe-agent(codex-rs/core/src/harness/ 下每个一个 rs 文件)——OpenCode 和 Pi 我们工坊都写过,它们的提示词工程也被抄进来了,只是还没进官方 /harness 菜单。
跟 Codex、官方 CLI、Claude Code 比一比
| 维度 | Open Interpreter(68K★) | OpenAI Codex | 官方 CLI(Kimi/DeepSeek/Qwen) | Claude Code |
|---|---|---|---|---|
| 底层 | Codex fork(Rust) | Rust 原生 | 各家自研 | Node/自研 |
| Harness 数 | 10 个官方壳可切换(+5 个源码里) | 1 个原生 | 1 个自家 | 1 个自家 |
| 模型锁定 | 不锁:任意 provider 套任意壳 | OpenAI | 各锁自家 | Anthropic |
| 低价模型优化 | 主打(K3/DeepSeek/Qwen 官方壳复刻) | 无 | 只优化自家 | 无 |
| ACP(编辑器接入) | interpreter acp | 部分 | 少数 | 有 |
| 生态中立 | AGENTS.md / .agents/skills / MCP / Codex exec 协议全兼容 | Codex 生态 | 各官方生态 | Anthropic 生态 |
| 本地模型 | ollama / lmstudio 内置 provider | 有 | 无 | 无 |
| 许可 | Apache-2.0 | — | — | — |
一句话:Codex 用户多拿一套 harness 仿真,官方 CLI 用户少装九个二进制,Claude Code 用户发现自己的壳成了「通用资产」。
上手:十分钟跑起来(实测)
# 0. 安装(macOS/Linux 一键脚本,实测装出 0.0.38)
curl -fsSL https://www.openinterpreter.com/install | sh
# 装完终端里敲 i 或 interpreter 进交互 TUI
# 1. 体检
interpreter --version # interpreter 0.0.38
interpreter doctor
# 2. 交互式:换壳、换模型(核心卖点都在 TUI 里)
# > /harness # 列出 10 个 harness,回车切换
# > /model # 选 provider → 认证/设 env → 选模型,自动配默认 harness
# 3. 非交互跑任务(exec,Codex 同款)
interpreter exec "给这个仓库补个 README"
# 4. 当 ACP agent 接进编辑器(Zed / VS Code 等 ACP 客户端)
interpreter acp
# 5. 当 MCP server 给别的 agent 用
interpreter mcp-server
# 6. 本地模型(ollama / lmstudio,一个 key 都不要)
interpreter --oss --local-provider ollama
# 7. 已有 Codex SDK 代码?一行换内核
# const codex = new Codex({ codexPathOverride: "interpreter" });
配低价模型的 config 例子(官方文档原样):
# ~/.openinterpreter/config.toml
model_provider = "moonshotai"
model = "kimi-k3"
harness = "kimi-code"
[model_providers.moonshotai]
name = "Moonshot AI"
base_url = "https://api.moonshot.ai/v1"
env_key = "MOONSHOT_API_KEY"
wire_api = "chat"
实际体验的几个坑(本文实测踩到)
- 默认 provider 是 OpenAI,没 key 就 401 重连循环(我实测踩到)——毕竟 fork 自 Codex,
interpreter exec默认model: gpt-5.6-sol, provider: openai,没配凭据就连wss://api.openai.com/v1/responses,打一次 401 重连一次,Reconnecting... 2/5循环,不是干脆报错。想体验「低价模型」必须显式配 provider(KIMI_API_KEY / MOONSHOT_API_KEY / DEEPSEEK_API_KEY / ollama…),文档说得很清楚,但默认值会骗你 --oss不是「免费模型」,是 ollama / lmstudio 本地服务——没装本地服务直接报Error: No default OSS provider configured. Use --local-provider=provider or set oss_provider to one of: lmstudio, ollama。它的「开源」指的是本地跑的开源模型,不是云端免费 API- Linux 沙箱依赖 bubblewrap,容器/受限环境直接挂(我实测踩到)——
interpreter sandbox echo hi报bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted。bwrap 要建网络命名空间,没 CAP_NET_ADMIN 的容器里起不来;它会 fallback 到内置 bwrap,但同样缺权限。本机跑没问题,CI 容器里要先确认 - exec 默认要求 git 仓库——在 /tmp 裸目录跑报
Not inside a trusted directory and --skip-git-repo-check was not specified,加--skip-git-repo-check或进仓库再跑 - harness 和 wire 有兼容矩阵,配错直接 InvalidRequest——zcode 必须 Messages 线;kimi-code / kimi-cli 不支持 Messages 线(源码 routing.rs 写死 Err)。第三方 provider 大多是 chat 线,想套 zcode 壳得先确认端点支持 Messages
- kimi-cli 是退休壳——它是老 Python Kimi CLI 的兼容模式,新 Kimi 会话官方明确要用
kimi-code。别照着老教程配 kimi-cli - help 文案还残留 Codex 痕迹——
--help里写配置从~/.codex/config.toml加载、命令名写 codex,实际安装脚本把家目录指到~/.openinterpreter(interpreter doctor会告诉你真相)。fork 改名的过渡期产物,报错信息别全信
跟我们写过的工具有什么关系
这个工坊之前写过 opencode(197K Star,多 provider agent)——它俩赛道最接近,但差异明确:opencode 是多模型一个壳,Open Interpreter 是多壳一个二进制。opencode 的提示词工程是它自己的,而 Open Interpreter 直接复刻官方壳,还把它们当商品陈列(/harness 菜单)。
qwen-code 和 kimi-code-cli 那两篇写的是「官方 CLI 各锁一家」,这篇是它们的反面:你装一个 Open Interpreter 就能用上全部官方壳。learn-claude-code 那篇拆了 Claude Code 的机制,这篇正好演示了「机制可以被抄走」——Claude Code 的壳现在能套在 DeepSeek 上,这是 Anthropic 自己都没想到的用法。
如果你在用低价模型:装完配好 key,先跑 interpreter 进 TUI,/model 选 DeepSeek,然后 /harness 从 claude-code-bare 切到 kimi-code 再切到 swe-agent,同一个模型三个壳各跑一个小任务——这是唯一能直观感受「提示词工程 vs 模型能力」各自贡献多少的实验。
适合谁用
- 用 Kimi K3 / DeepSeek / Qwen / GLM 的人——官方壳的 Rust 复刻 + Codex 内核,便宜模型的上限被拉满了
- 不想装 N 个官方 CLI 的人——一个二进制,十套壳,
/harness随时换 - 想把 Agent 接进 ACP 编辑器的人——
interpreter acp是现成的 ACP agent,Zed 之类直接连 - 本地模型玩家——ollama / lmstudio 内置 provider,零 key 成本
- 研究 harness 原理的人——源码就是提示词工程教科书:每个官方壳的 prompt 和工具定义都摊开在
codex-rs/core/src/harness/里
总结
Open Interpreter 3 年 68K Star 的曲线背后是一次彻底的重生:从「自然语言操作电脑」的玩具,变成「harness 仿真层 + Codex 执行内核」的组合体。它最大的贡献不是又一个 agent,而是证明了提示词工程是可以解耦、移植、商品化的资产——大厂花大价钱调的 harness,从此不再锁死自家模型。
它的代价也诚实:默认 OpenAI 的坑要绕、各家 API key 要配、Linux 沙箱要 bwrap、fork 改名期的文档残留要认。但对「想用便宜模型 + 大厂提示词工程」的人来说,这是目前唯一一个把两边都给你、还让你自己自由组合的开源方案。
项目地址:github.com/openinterpreter/openinterpreter(文档:openinterpreter.com/docs/terminal · 博客:openinterpreter.com/blog/open-interpreter)