OpenAI 用 Rust 重写了 AI 编程工具
17611538698
webmaster@21cto.com

OpenAI 用 Rust 重写了 AI 编程工具

图片
近日,OpenAI 已使用 Rust 重写了其即将推出的 AI 命令行编码工具 Codex CLI,其理由是其性能和安全性有所提高,同时避免了对 Node.js 的依赖,因为 Node.js 可能会“让某些用户感到沮丧或受到阻碍”。

Codex 是一个实验性的编码代理,可以通过 ChatGPT 中的 Web 浏览器运行,也可以使用 Codex CLI 在本地环境中运行。

它拥有基于聊天的用户界面,CLI 可以以交互方式运行(以 codex 命令开头的提示符),也可以以非交互的静默模式运行,该模式可用于持续交付流水线,例如生成变更日志。

值得一提的是,请勿将当前的 Codex 与 2021 年推出的一款产品(也叫 Codex,但已于 2023 年 3 月弃用)相混淆。

Codex CLI在 GitHub 上开源。地址如下:

https://github.com/openai/codex

可通过 WSL(适用于 Linux 的 Windows 子系统)在 MacOS、Linux 或 Windows 上运行。其源代码主要使用 TypeScript 编写,并运行在 Node.js 上,但团队现已使用 Rust 进行了重写

维护者 Fouad Matin 如此表示,至少在 Rust 版本达到“体验和功能对等”之前,仍会针对 TypeScript 实现合并错误修复。

为什么要重写?Matin 表示,尽管当前基于 React 和 TypeScript 的版本“易于开发和集成”,但 Rust 的改进主要有四个关键原因。

  • 第一个是零依赖安装,而当前对 Node.js 22 或更高版本的要求可能会对某些用户造成阻碍。
  • 其次是沙盒的必要性。在 macOS 上,Codex CLI 的命令由 Apple Seatbelt(名为 sandbox-exec 的命令)所包装,该命令在可配置的沙盒环境中运行进程。在 Linux 上,Codex CLI 默认不进行沙盒处理,OpenAI 建议在容器中运行它。不过,OpenAI 已经创建了一种对 Rust 命令进行沙盒处理的方法,在 macOS 上仍然使用 sandbox-exec,在 Linux 上使用 Landlock [https://docs.kernel.org/userspace-api/landlock.html]。
  • 第三是优化性能,无需运行时垃圾收集,并且内存要求非常的低。 
  • 第四是能够使用现有的 Rust MCP(模型上下文协议)实现。Codex CLI 既可以作为 MCP 客户端,也可以作为 MCP 服务器运行。

Rust 被设计为一种系统语言,本质上比在 Node.js 使用的 V8 JavaScript 引擎上运行的代码更高效。然而,Rust 的编程难度更高,因此效率可能低于编写 TypeScript 或 JavaScript。

根据大多数调查,JavaScript 和 Python 是最受欢迎的编程语言,而 Rust 的知名度则低得多。基于 Rust 的 Codex CLI 仍然可以扩展,支持其他语言的代码,目前已经包括 JavaScript 和 Python。

OpenAI 并非唯一一个认为 Rust 的效率值得额外投入的机构。

Vue.js 的创建者尤雨溪 Evan You发布了Rolldown-Vite 的介绍,这是 Vite 本地开发服务器和构建工具的新版本。Vite 目前在底层使用名为 Rollup.js 的打包工具,但将其替换为基于 Rust 的 Rolldown 后,可以“将生产构建时间从 1/3 缩短到 1/16,并将构建过程中的内存使用量减少高达 1/100”,他这样表示。

编辑:行动中的大雄

评论