Pluck:让 AI 编程 Agent 减少 84% 代码读取 Token 的 MCP-native 检索引擎

AI 编程 Agent 用 catgrep 读取代码时,上下文窗口在一次次文件 dump 中悄然耗尽——重复的 import 声明、相邻函数、工具输出里的堆栈噪声,每一字节都在吃 Token。pluck 做的事很简单:把 catgrep 替换为一套 MCP-native 的代码检索引擎,让 Agent 只获取它真正需要的那段代码。核心数字非常直接:Smart Outline 模式减少 84-88% 的读取 Token,CI 日志压缩 71%,热搜索延迟 0.07ms——所有数据均对标基准测试文件,无虚构百分比。

功能与原则

pluck 是一个本地 Rust 守护进程,通过 Model Context Protocol(MCP)向 AI 编程 Agent 暴露一套符号感知的代码读取和搜索接口。设计原则只有一条:Agent 发起的每一次检索调用默认走 pluck,Bash 是 fallback 而非默认

核心能力矩阵:

  • Smart Outline(pluck.read):不再一股脑 dump 整个文件,只返回符号签名 + 迷你内联辅助体,Agent 按需获取大函数体
  • Session Dedup:同一会话中跨查询重叠的代码块替换为 [already-shown: ...] 单 Token 占位符
  • Lossless Default:不去注释、不丢类型,所有精简模式均为显式 opt-in
  • 100% 能力保证:每个工具均提供 --raw fallback,与原始 cat/grep 字节等价

检索工具集:

MCP 工具 替代 使用场景
mcp__pluck__read cat 读取代码文件(智能大纲模式)
mcp__pluck__search BM25 + 语义混合排名检索
mcp__pluck__grep grep/rg 精确字符串、正则、TODO
mcp__pluck__symbol cat + 滚动 只读某个函数/类体
mcp__pluck__peek 签名 + 直接调用者
mcp__pluck__expand 多次 cat 符号 + N 跳调用链
mcp__pluck__impact grep + 读每个调用者 逆向调用图
mcp__pluck__deps grep imports + 读每个文件 文件级依赖图
mcp__pluck__digest 管道式 cat 压缩 cargo/npm/pytest 日志
mcp__pluck__plan 推测性搜索/读取循环 任务规划推荐

认可度

截至 2026-09-02,GitHub 数据:

  • Stars:40(创建于 2026-05-15)
  • Forks:0
  • 语言:Rust
  • License:MIT
  • 最新版本:v0.2.0(crates.io 首版发布)、v0.3.0(语义搜索)、v0.4.0(进行中,Java 支持)
  • MCP crates.io 包(pluck-mcp)已有 1.6K SLoC,51.4 KiB

pluck 目前 star 数量有限,但属于极具技术护城河的早期项目,进入了 aidev-index 等 AI 开发者工具目录的代码检索垂直分类(40 AI 信号排名),crates.io 有稳定下载量。技术 benchmark 质量远超市面大多数同类工具。

链接

GitHub:https://github.com/hunhee98/pluck

crates.io:https://crates.io/crates/pluck-mcp

原作者

hunhee98(GitHub:https://github.com/hunhee98),独立开发者,专注 Rust + AI 基础设施。

介绍

AI 编程 Agent 在真实代码库里做检索时,标准 catgrep 暴露了一个系统性问题:每一次文件读取都是全量输出,Agent 为找到目标代码要反复穿越无关区域,重复为 import 块、标准库声明、中等大小辅助函数支付 Token——这被作者称为”cat tax”。

pluck 的解决方案建立在 AST(抽象语法树)分块之上。使用 Tree-sitter 对 20+ 语言(Rust、TypeScript、Python、Go、Java、Swift、Ruby、PHP、C、C++、HTML、CSS、JSON、YAML、TOML、SQL 等)做语法树级分块,而非简单按行切割。分块后,检索层采用 BM25F 关键词匹配 + 语义向量混合排名(两阶段 cascade),query 膨胀技术用嵌入空间最近邻扩展自然语言 query 的词汇覆盖,保证”payment flow”这类概念搜索也能召回精确符号。

Session Dedup 是另一个关键创新:同一个任务会话内,Agent 先后搜索”auth”和”token”时,重叠的代码块在第二次被替换为 1 Token 占位符。benchmark 显示,5-query 场景下可节省 23% 的 Token。

特点

  • Token 节省可量化:Smart Outline 在真实场景(5 函数 / 120 行)下从 929 Token 降至 116 Token(-88%),大场景(25 函数 / 600 行)从 4,549 降至 556(-88%),均有 benchmark JSON 文件可查
  • 热搜索 < 0.07ms:持久化守护进程 + 内存映射索引,中型代码库热搜索 P50 仅 0.07ms
  • 无损保真:所有 --raw 模式与原始 cat/grep 字节等价,Agent 永远不会因降级丧失能力
  • 增量化索引:文件变更后 171ms P50 即可搜索,无需全量重建
  • CI 日志压缩:pluck.digest 压缩 cargo build / pytest / GitHub Actions 日志,保留错误/panic 原文,进度行折叠,节省 71% 长度
  • 多 Agent 支持:官方支持 Claude Code、Codex、Cursor,通过 pluck init --target <name> 一键配置 MCP 连接和检索策略

使用方法

安装(Rust 生态 / Homebrew):

# via Cargo
cargo install pluck-mcp pluck-cli

# via Homebrew
brew tap hunhee98/pluck && brew install pluck

初始化到 Claude Code

pluck init --target claude --mode aggressive
# 等价:claude mcp add --transport stdio --scope project pluck -- pluckd --repo .

初始化到 Cursor

pluck init --target cursor --mode strong

初始化到 Codex

pluck init --target codex --mode strong

手动 MCP 配置示例(Claude Code project config):

{
  "mcpServers": {
    "pluck": {
      "command": "pluckd",
      "args": ["--repo", "."]
    }
  }
}

核心命令速查

# 索引仓库
pluck index .

# 语义检索
pluck search "auth flow" --repo .

# 智能读取(默认 outline 模式)
pluck read src/auth/login.ts

# 原始读取(= cat)
pluck read src/auth/login.ts --raw

# 查看符号调用者
pluck impact validate_token --depth 3

# 压缩 CI 日志
pluck digest < cargo-build.log

使用场景与人群

适用场景:

  • 大型代码库(500+ 文件)的 AI 编程 Agent 上下文管理
  • 多 Agent 并行开发中的 Token 预算控制
  • CI/CD 日志分析和 Agent 对接
  • 需要跨文件调用链追踪的重构任务

目标用户:

  • 使用 Claude Code、Codex、Cursor 等编程 Agent 的开发者
  • AI 工程团队,需要优化 Agent Token 消耗
  • MCP 工具链开发者,构建 Agent 基础设施
  • Rust/Tree-sitter 爱好者

输入与输出案例

案例 1:fix-auth-token-expiry 任务

同一 JIRA 风格任务,对比两种工作流:

工作流 Token 消耗
bash(rg -l + 多轮 cat) 1,248 tokens
pluck(search + read + symbol) 931 tokens(−25%

两者最终修复代码完全一致。

案例 2:读取中型代码库文件

读取方式 Token 消耗 节省
cat(5 函数 / 120 行文件) 929
pluck.read outline 模式 116 −88%

Agent 获取文件符号地图 + 小辅助函数体,直接决定是否需要按需拉取大函数体,无需处理整个文件上下文。


GitHub: https://github.com/hunhee98/pluck

评论区

0 条评论

登录后可评论。

Skill超级捕获手 12 阅读