Rust 写的 AI 代码搜索,快到你怀疑人生

📅 2026年05月19日 · 技术

Rust 写的 AI 代码搜索,快到你怀疑人生

在 AI 编程时代,一个普遍的痛点:AI Agent 读取代码库太慢、太贵。grep 不能理解语义,cat 会塞爆上下文窗口,ls -R 在稍大的项目中输出几万甚至几十万 token。有没有一种工具,既快、又准、还省 token?

有。semble_rs 就是答案。

💡 一句话概括:semble_rs 是一个用 Rust 编写的 AI 代码搜索工具,专为 AI 编程代理设计。它返回 Agent 所需的精确代码块,打印 token 极省的代码树替代 ls -R,并将 3MB 的 CI 日志压缩到 35KB。单二进制文件,无需守护进程,无需 API 密钥,无需 GPU。

安装:一条命令的事

git clone https://github.com/johunsang/semble_rs.git && cd semble_rs
cargo install --path .

编译后二进制文件位于 ~/.cargo/bin/semble_rs。首次运行时,默认嵌入模型 minishlab/potion-code-16M(约 60 MB)会从 HuggingFace 自动下载。

一句话用起来

# 用代码树代替 ls -R
semble_rs tree ./my-project --symbols

# 按语义搜索代码(代替 grep + cat)
semble_rs search "项目里怎么处理鉴权" ./my-project --outline

# 压缩构建输出后再喂给 AI
cargo build 2>&1 | semble_rs digest
gh run view <id> --log-failed | semble_rs digest

核心特性

🚀 极速索引

22 个文件的仓库约 150ms 完成索引,1600 个文件约 10 秒。静态嵌入器意味着查询时不需要跑 Transformer 前向传播——查询速度和本地一样快。

💰 Token 极致省

🔍 混合检索

BM25 + Model2Vec 静态嵌入融合 RRF(倒数排序融合),再用定义/标识符-词干/文件一致性进行重排序,并加入噪声惩罚。既有关键词搜索的精确性,又有语义搜索的灵活性。

🔗 依赖图

deps / impact 命令显示文件导入和导出了什么,以及修改它会影响到哪些文件。可选的 Graphviz --dot 输出。

📦 构建/CI 压缩

digest 自动识别 cargo、pnpm/npm/yarn/bun、tsc、pytest、go test、gradle、ruff、mypy、clang/gcc/cmake/make/swiftc、GitHub Actions。错误、file:line:col、回溯、panic 堆栈和失败步骤体始终保留——只有进度行被压缩为计数。

搜索模式详解

semble_rs search "auth flow" ./my-project --outline    # 第一遍:结构概览
semble_rs search "loginWithEmail" ./my-project --compact # 第二遍:匹配行
semble_rs search "save model" https://github.com/MinishLab/model2vec  # 支持 git URL

输出模式

💡 推荐流程:先 --outline 概览 → --compact 精确定位 → 仅在需要代码体时用 --json --strip

find-related:找相关代码

给定一个 file:line(来自之前的搜索结果),返回与该位置语义相似的代码块。

semble_rs find-related src/auth.rs 42 ./my-project

plan:AI 不知道从哪下手时

当 Agent 不知道从何开始时,plan 运行一个小搜索并打印推荐的命令序列:

semble_rs plan "修复登录页的 bug" ./my-project -k 5

代码树:告别 ls -R 的 Token 灾难

实测数据:

semble_rs tree                              # 当前目录
semble_rs tree -d                           # 仅目录
semble_rs tree --max-depth 2                # 限制深度
semble_rs tree --symbols                    # 每个文件附加顶层符号
semble_rs tree --lang rust,python           # 按语言过滤

Digest:把 3MB 日志压成 35KB

实测数据(15 个真实夹具):

Agent 集成

将以下内容追加到项目根目录的 CLAUDE.mdAGENTS.md 中,即可在任何 AI Agent 中使用:

## Code search and exploration

Use `semble_rs` instead of `ls -R`, `grep`, `cat`:

semble_rs tree . --symbols                         # 代码库地图(极省 token)
semble_rs search "<feature or symbol>" . --outline  # 第一遍
semble_rs search "<feature or symbol>" . --compact  # 第二遍
semble_rs deps   <file> .                           # 文件导入/定义
semble_rs impact <file> .                           # 修改影响哪些文件

Compress noisy command output before reading it:

cargo build 2>&1 | semble_rs digest
pnpm install 2>&1 | semble_rs digest
gh run view <id> --log-failed | semble_rs digest
⚠️ 注意事项:支持 Claude Code、Codex、Cursor(.cursorrules)、Aider 和 OpenHands。也适用于项目级 CLINE 规则或任何支持工具调用的 AI Agent。可以执行 semble_rs savings 查看过去搜索中节省的预估 token 数。

适用场景

参考来源

🔧 在线开发者工具 — JSON格式化 · Base64 · UUID生成 · 正则测试 等80+免费工具