什么是 CometixCode?
CometixCode 是一个基于终端的 AI 编程助手,使用 Rust 编写。它是对 Anthropic Claude Code 终端界面的独立、逐文件重实现,并非 Anthropic 官方产品。
CometixCode 是非官方项目,与 Anthropic 没有隶属关系,也未获得 Anthropic 的认可或支持。Claude 和 Claude Code 是 Anthropic, PBC 的商标。
原版 Claude Code 终端 UI 使用 TypeScript、React 和 Ink。CometixCode 使用 CometixTUI 在 Rust 中重现这一结构。CometixTUI 是 iocraft 保留模式终端 UI 框架的一个分支。TypeScript 组件对应 Rust 组件,钩子对应钩子,架构上的有意差异会在源代码中记录。
该项目仍在开发中。交互循环、工具执行、权限、模型上下文协议集成和斜杠命令的大部分功能已经实现,但部分领域仍不完整。
主要功能与架构
- 基于 Rust 的终端 UI:界面采用 React 风格的组件和钩子模型实现。
- 紧密的架构移植:项目逐文件遵循 Claude Code 已发布的 CLI 结构,而不是采用全新设计。
- 交互式编程工作流:助手循环和工具执行系统的主要部分已经实现。
- 权限与命令:权限处理和斜杠命令支持已基本实现。
- MCP 支持:项目包含模型上下文协议功能,但整体仍在开发中。
- 增强的终端基础功能:CometixTUI 提供行级差异更新、事件传播、SIGCONT 恢复、IME 光标支持、括号粘贴和网格布局。
- 外部文件搜索:CometixCode 使用独立的 ripgrep 可执行文件,而不是将 ripgrep 编译进自身的二进制文件。
前置条件
构建 CometixCode 之前,请安装以下依赖:
- Rust 1.87 或更高版本,使用 Rust 2024 edition。
- ICU4C,
rust_icu_*crate 通过pkg-config使用它。
在 macOS 上安装 ICU4C
Homebrew 会将 ICU4C 安装为仅 keg 可用的软件包。安装后,将其 pkgconfig 目录添加到查找路径:
brew install icu4c
export PKG_CONFIG_PATH="$(brew --prefix icu4c)/lib/pkgconfig"请在构建 CometixCode 的 shell 中执行 export。如果经常参与项目开发,请将该变量添加到相应的 shell 配置文件中。
在 Debian 或 Ubuntu 上安装 ICU4C
sudo apt install libicu-dev pkg-config构建 CometixCode
在仓库根目录打开终端,并创建优化后的发布版本构建:
cargo build --release生成的二进制文件名为 cometix。发布版本构建启用了 Rust 的发布优化,适合日常使用。
运行助手
使用 Cargo 构建并启动 CometixCode:
cargo run --release这会使用发布配置文件启动终端界面。由于项目仍在积极开发中,即使主要的交互、工具、权限、MCP 和命令功能已经具备,部分工作流仍可能不完整。
基本诊断命令
在 CometixCode 中,使用以下斜杠命令检查已配置的环境,包括当前使用的 ripgrep 可执行文件:
/doctor当文件搜索不可用,或需要确认 CometixCode 使用的是随包提供的还是主机已安装的 rg 二进制文件时,这一命令尤其有用。
配置用于文件搜索的 ripgrep
CometixCode 将文件搜索委托给 rg,即 ripgrep 命令行工具。ripgrep 可执行文件作为外部资源保留,永远不会被编译进 cometix 可执行文件。
CometixCode 按以下顺序查找 ripgrep:
- 可执行文件旁的
vendor/ripgrep/<arch>-<os>/rg,发布归档使用此路径。 - 源代码树中的
vendor/ripgrep/<arch>-<os>/rg,开发期间使用此路径。 - 主机系统中通过
PATH可用的rg命令。
因此,你可以将固定版本的 ripgrep 构建放入匹配的 vendor/ripgrep/ 平台目录,或者在主机上安装 ripgrep,并确保 rg 位于 PATH 中。
强制使用主机 ripgrep 二进制文件
当你希望 CometixCode 跳过随附的 ripgrep 资源并使用主机上的可执行文件时,将 USE_BUILTIN_RIPGREP 设置为 0:
USE_BUILTIN_RIPGREP=0 cargo run --release启动后运行 /doctor,确认所选的二进制文件。
正确运行测试套件
CometixCode 具有进程级状态,包括环境变量和 OnceLock 缓存。在一个进程中以线程方式运行所有测试,可能导致状态在测试之间泄漏,因此对于此 crate,直接运行 cargo test 不被视为有效的质量门禁。
项目改用通过 just 调用的 cargo-nextest。这样每个测试都拥有独立进程,并会固定测试可能以其他方式继承的主机状态。
运行完整测试套件
just test这是项目要求的完整测试门禁。
运行匹配模式的测试
just t <pattern>将 <pattern> 替换为用于筛选要执行测试的子字符串。
快速检查代码
just check此命令会执行类型检查和借用检查,但不会进行链接,因此在编辑 Rust 代码时可用于快速获取反馈。
高级开发技巧
- 日常使用时优先采用发布模式: 使用
cargo run --release运行项目文档中指定的优化构建。 - 先检查 ICU 的发现配置: 在 macOS 上,涉及 ICU 的构建失败可能表明
PKG_CONFIG_PATH未包含 Homebrew 的 ICU4C 元数据目录。 - 使用
/doctor诊断文件搜索: 在修改 vendored 文件或系统配置之前,确认实际选中的 ripgrep 可执行文件。 - 需要可复现性时固定 ripgrep 版本: 将指定的二进制文件放在平台专用的
vendor/ripgrep/路径下,而不要依赖系统全局安装的版本。 - 不要用
cargo test替代项目检查流程: 使用just test,以便测试获得代码库所要求的进程隔离。 - 查阅 justfile 了解测试依据: 其文件头记录了所选测试策略背后的测量结果。
许可证注意事项
CometixCode 采用 AGPL-3.0-only 许可证发布。该许可证包含网络使用条款:如果你将修改后的版本作为网络服务运行,其用户有权获得相应的修改后源代码。
结语
CometixCode 使用 CometixTUI,以 Rust 为基础复现了 Claude Code 的终端架构。准备好 Rust、ICU4C 和适用的 ripgrep 可执行文件后,你可以使用 Cargo 构建并启动它,通过 /doctor 检查搜索配置,并使用项目的进程隔离 just test 工作流验证更改。
