跳到主要内容
AI教程

构建并运行 CometixCode:Rust 终端 AI 编程助手

了解如何使用 Rust 和 ICU4C 构建 CometixCode、启动其终端界面、配置 ripgrep 路径解析、诊断当前使用的搜索二进制文件,并正确运行项目的隔离测试流程。

构建并运行 CometixCode:Rust 终端 AI 编程助手

什么是 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:

  1. 可执行文件旁的 vendor/ripgrep/<arch>-<os>/rg,发布归档使用此路径。
  2. 源代码树中的 vendor/ripgrep/<arch>-<os>/rg,开发期间使用此路径。
  3. 主机系统中通过 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 工作流验证更改。