ESC
开源 1 分钟阅读

CometixCode:用 Rust 逐行复刻 Anthropic Claude Code 终端 UI 的非官方开源项目

CometixCode 是一个非官方开源项目,用 Rust 基于 React 风格 TUI 框架 iocraft,对 Anthropic Claude Code 终端 UI 进行 1:1 重新实现。项目仅需 Rust 1.88+,无系统库依赖,支持 Windows 交叉编译为独立 exe。交互循环、工具执行、权限、MCP 和斜杠命令等大部分功能已实现,其余部分开发中。项目采用 AGPL-3.0 协

来源:GitHub

CometixCode

English | 简体中文

Rust License

一个基于终端的 AI 编程助手,用 Rust 编写,是 Anthropic Claude Code 的 1:1 重新实现。

非官方项目,与 Anthropic 无关联。 这是一个通过研读已发布的 Claude Code CLI 构建的独立重实现项目。“Claude” 和 “Claude Code” 是 Anthropic, PBC 的商标。本项目未获得 Anthropic 的任何认可或支持。

项目简介

Claude Code 的终端 UI 基于 TypeScript 的 React + Ink 构建。CometixCode 则在 Rust 上基于 iocraft 复现它——iocraft 是一个 React 风格的保留模式 TUI 框架,在结构上与 Ink 对应:组件、hooks、声明式元素一应俱全。该移植逐文件跟随原版实现,而非重新发明架构:TypeScript 组件映射为 Rust 组件,hook 对应 hook,所有有意的偏离都会在源码中的相应位置记录说明。

项目基于 [CometixTUI] 构建,这是 iocraft 的一个 fork,包含本次移植所需的底层能力(行级 diff、事件传播、SIGCONT 自恢复、IME 光标、括号粘贴、网格布局)。

项目仍在开发中。交互循环、工具执行、权限、MCP 和斜杠命令的大部分功能已实现,其他部分尚在进行中。

构建

前提条件

Rust 1.88+(edition 2024)。除此之外无其他依赖——不需要系统库,也不需要 pkg-config。Unicode 分词与排序基于 ICU4X 实现,其数据已编译进二进制文件。

构建与运行

cargo build --release
cargo run --release

生成的二进制文件为 cometix。

交叉编译 Windows 版本

rustup target add x86_64-pc-windows-gnu
cargo build --release --target x86_64-pc-windows-gnu

PATH 中需要安装 mingw-w64 工具链:有四个依赖项需要编译 C 或汇编代码(onig_sys、ring、tree-sitter、tree-sitter-bash)。它们均采用静态链接,因此生成的 .exe 无需附带任何 DLL。

ripgrep

文件搜索通过调用外部 rg 命令实现。Claude Code 在其 npm 包中内置了打包好的 ripgrep 并执行该路径;CometixCode 保持了相同的结构——ripgrep 二进制是外部资产,从不编译进可执行文件。

查找顺序:

  1. 可执行文件旁的 vendor/ripgrep/<arch>-<os>/rg(发布归档)
  2. 源码树中的 vendor/ripgrep/<arch>-<os>/rg(开发环境)
  3. 主机 PATH 上的 rg

因此,既可以在 vendor/ripgrep/ 下放置指定版本的 ripgrep,也可以直接安装 rg。/doctor 命令会报告当前使用的是哪一个。设置 USE_BUILTIN_RIPGREP=0 可强制使用主机上的二进制。

测试

just test          # 通过 cargo-nextest 运行完整测试套件——质量门禁
just t <pattern>   # 子串过滤
just check         # 仅类型/借用检查,不进行链接

cargo test 不是本 crate 的有效质量门禁。它会在单个进程中以线程方式运行整个测试套件,而本代码库存在进程级状态(环境变量、OnceLock 缓存),会导致状态在测试之间泄漏。just test 在 cargo-nextest 下运行,为每个测试提供独立进程,并固定测试本应继承的主机状态。justfile 文件头部解释了这些措施背后的考量。

社区

QQ 群 telegram LINUX DO

致谢

  • [ClaudeCodeRev] —— 本移植所依据的分析成果。此处的每个行为细节都来自通过它对 Claude Code 的逆向研究。
  • [CometixTUI] —— 本项目所基于的 TUI 框架,是 iocraft 的一个 fork,包含移植所需的与 Ink 对齐的底层能力。
  • [marked-rs] —— marked 的 Rust 移植版,Claude Code 使用它解析 Markdown。
  • [anthropic-sdk-rs] —— @anthropic-ai/sdk 的 Rust 移植版,用作 API 客户端。
  • [nucleo] —— 来自 Helix 编辑器项目,是文件、命令和 agent 补全背后的模糊匹配器。

许可证

AGPL-3.0-only。