十个官方 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发给端点的模型 IDkimi-k3、deepseek-v4-pro、gpt-5.6-sol
HarnessAgent 的提示词、工具面、消息塑形(本文主角)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)分开路由,这是架构上最值得抄的点:

最骚的是 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 提示词 + 工具面
DeepSeekclaude-code-bareClaude Code 的「精简版 profile」——DeepSeek 官方钦定搭配
Kimi K3 / Moonshotkimi-codeMoonshot 官方 Kimi Code harness 的 Rust 复刻,K3 性能最大化
Z.AI / GLM / ZhipuGeneric Chat 或 zcodezcode 需要 Messages 端点

十套 harness 各改什么

Harness来源塑形要点
claude-codeAnthropic完整 Claude Code 系统提示词 + thinking 配置 + 上下文管理 + 标题生成;工具含 Bash/Read/Write/Edit/TodoWrite/Glob/Grep/web 搜索/LSP/定时唤醒/子代理
claude-code-bareAnthropic 精简版更小的 prompt/profile,不同输出默认值;DeepSeek 自动选它
kimi-codeMoonshot(现行版)现行 Kimi Code 提示词 + 工具 + prompt-cache key + thinking 配置;K3 默认壳
kimi-cliMoonshot(已退休 Python 版)老 Kimi CLI 壳,含 AGENTS.md 加载、skill 发现;仅兼容老会话用
deepseek-tuiDeepSeek TUI / CodeWhaleturn 元数据、仓库上下文、自动生成项目说明;工具含 shell/apply patch/checklist/plan
qwen-code阿里 Qwen CodeQwen Code 启动上下文,开头注入一段「日期/OS/目录/文件列表」的合成 setup 交换
swe-agentPrinceton SWE-agent不走工具 schema,走「讨论/命令」循环:解析回复里的 shell 命令执行,默认 30 秒超时
zcodeZ.AIZCode 提示词 + 工具 + todo/plan + skills,要求 Messages wire
minimal自研紧凑通用提示词,函数工具平铺成普通 chat 工具列表——兜底用
nativeCodex 原生不塑形,原样走 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"

实际体验的几个坑(本文实测踩到)

跟我们写过的工具有什么关系

这个工坊之前写过 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 模型能力」各自贡献多少的实验。

适合谁用

总结

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)