当前源码不是经典 Python Open Interpreter,而是 Rust/Codex 兼容分叉
核心目录、crate、app-server 协议和 Python/TypeScript SDK 仍以 codex/openai-codex 命名;Open Interpreter 通过 Product::OpenInterpreter、interpreter/i 入口、.openinterpreter HOME 和 open-interpreter 包变体建立产品身份。
它不是在旧 Python 循环上继续打补丁,而是把一套 Codex 级 Rust Harness 换了产品入口,再加入自己的多 Harness 能力。
评估时必须把它与同批次的 openai/codex 分开:共享基座很多,但 Open Interpreter 的差异主要落在品牌、provider/harness 选择和协议仿真。
45 /// Product channel information used by branded package variants.
46 #[derive(Debug, Clone, Copy, PartialEq, Eq)]
47 pub enum Product {
48 Codex,
49 OpenInterpreter,
50 }
51
52 impl Product {
53 /// A binary shipped inside an Open Interpreter package is Open
54 /// Interpreter unconditionally — identity must never depend on what the
55 /// executable happens to be named or aliased to. The argv0 and env-var
56 /// checks only exist for development builds run straight out of the
57 /// cargo target directory.
58 pub fn current() -> Self {
59 if std::env::var_os(OPEN_INTERPRETER_BRAND_ENV_VAR).is_some()
60 || is_open_interpreter_argv0()
61 || is_open_interpreter_install()
62 {
63 Self::OpenInterpreter
64 } else {
65 Self::Codex
66 }
67 }
68
69 pub fn display_name(self) -> &'static str {
70 match self {
71 Product::Codex => "OpenAI Codex",
72 Product::OpenInterpreter => "Open Interpreter",
73 }
74 }
75
76 pub fn command_name(self) -> &'static str {
77 match self {
78 Product::Codex => "codex",
79 Product::OpenInterpreter => "interpreter",为什么相信这条结论?查看 3 处证据
- implementation
codex-rs/product-info/src/lib.rs:45–79Codex/OpenInterpreter 产品检测与显示名/命令名。 - implementation
scripts/install/install-open-interpreter.sh:13–25interpreter/i、release asset 与 .openinterpreter HOME 映射到共用安装器。 - config
scripts/codex_package/targets.py:60–85open-interpreter 包变体。