关于 LeanToken
LeanToken 是面向编码 Agent 的只读代码库发现与检索层,按明确的 token 预算返回代码。其 MCP 工具帮助 Agent 定位相关文件和证据,不取代编辑、构建或测试工具。
主要功能
- 01按任务排序代码库内容
- 02检查路径、符号和精确范围
- 03按 token 预算限制源码返回量
- 04追踪 Git 修订版间的符号
- 05通过回执复用已有证据
适用场景
- 01在代码库排查中帮助 Agent 快速定位
- 02为故障寻找实现和测试负责人
- 03审阅不同 Git 修订版之间的变更
- 04编辑前检索相关代码片段
MCP 相关
LeanToken 向 MCP 客户端提供代码库发现与检索工具,包括 context、search、files、outline、read 和 history。其设置 CLI 可配置受支持的编码 Agent 客户端来启动 MCP 服务。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
LeanToken
为 Agent 提供代码智能:找到关键代码,让上下文窗口保持精简,节省令牌。
- MCP 注册表名称:
mcp-name: io.github.morluto/leantoken
实测令牌节省量: 在一项受控的 60 次运行研究中,与 Agent 内置工具进行有限的仓库探索相比,LeanToken 使用的模型输入令牌减少了 20.1%;与这些工具进行广泛探索相比,减少了 37.6%。 查看测量方法,了解测量的具体方式。
快速开始
将 LeanToken 添加到 Claude Code、Cursor、OpenCode、Codex、Gemini CLI 或 Antigravity:
npx leantoken setup
设置行为与安全性
当前版本在 npx 解析到过时的项目本地安装或上级目录安装时,会在写入前停止设置,并提示使用
npx leantoken@latest setup。早于此检查的旧版本可以直接通过该版本化命令
完成引导安装。
交互式设置向导会预先选中检测到的受支持客户端;你可以在继续之前 更改所选项。随后,向导会显示确切的配置路径和 MCP 启动器,并要求你 单独进行最终确认。自动化流程绝不会将检测结果视为同意。基于 npx 的设置会固定运行设置的 LeanToken 确切版本,因此重启客户端不会悄然升级到更新的版本。
全局设置绝不会存储设置时所在的代码仓库。OpenCode 会获得一个相对于工作区的工作目录; 其他受支持的客户端则从宿主选择的工作区 cwd 启动 LeanToken。如果宿主改为从主目录或文件系统根目录启动, LeanToken 默认会拒绝索引这个范围过广的根目录。
重启或重新加载已配置的客户端,然后从代码仓库验证连接和首次 检索:
npx leantoken doctor
尝试一个范围较广的任务,例如:编辑前,查找与请求取消相关的代码。 LeanToken 可帮助 Agent 从 leantoken.context 开始,
同时仍可使用其常规工具进行编辑、构建和测试。
检查 LeanToken 观测到的仓库本地令牌用量统计:
npx leantoken savings
|
默认在本地运行 源代码会在你的设备上编入本地数据库。LeanToken 是一个只读的发现与检索层。 |
明确的令牌预算 每个响应都有明确的令牌上限,因此大型文件不会占满请求。 |
专为 Agent 工作流打造 通过专用工具查找文件、搜索代码、检查结构、读取指定范围、追踪历史记录、 查询 JSON 并跟踪令牌用量。 |
高级设置与版本管理
若要跳过向导,请明确选择客户端,或配置所有受支持的 客户端:
npx leantoken setup --claude --codex --yes
npx leantoken setup --all --yes
日常使用时,推荐使用 --private-runtime 启动器:它会将确切的包原生可执行文件复制到按版本和完整 BLAKE3 摘要命名的应用数据目录中,因此客户端可直接启动一个经过验证的进程,
无需持久化的 npm/Node 包装器。同一版本的不同源代码构建可以共存。setup --refresh --private-runtime 会固定当前确切的制品;
其他已引用的制品仍可使用。此功能默认不启用,因此零安装路径不会增加应用数据写入。使用
--dry-run 预览其路径和摘要。
自动化流程绝不会将检测结果视为同意:--yes 必须配合明确的客户端标志、
--all,或用于 LeanToken 已管理条目的 --refresh。预览同一解析后的计划,但不更改文件:
npx leantoken setup --codex --cursor --dry-run
设置只会在所选宿主使用的目录中添加 leantoken MCP 条目和一个自带的小型发现技能:Claude Code 使用 ~/.claude,而
Codex 和其他受支持的宿主使用 ~/.agents。该技能提供路由元数据;
不会重复工具架构、添加规则或安装 shell 钩子。设置会将新添加的 MCP 启动器标记为受管理条目;若存在同名的手动配置条目,则会拒绝替换,除非你检查试运行结果并传入
--force-unmanaged。使用以下命令移除自带集成:
npx leantoken remove
升级私有运行时后,检查保留的制品,并在应用清理前预览不会影响现有引用的清理方案:
npx leantoken runtime list
npx leantoken runtime prune --dry-run
npx leantoken runtime prune --yes
明确选择新版本后,仅刷新现有的 LeanToken MCP 条目;也可以使用旧版本回滚:
npx --yes leantoken@latest setup --refresh --yes
npx --yes [email protected] setup --refresh --yes --allow-outdated
LeanToken 最适合作为一个小型证据循环,而不是一次性倾倒整个代码库:
- 通过一次调用为自主分流提供方向。 遇到不确定的宽泛任务时,以
context和plan_only: false开始,然后直接使用已整理好的证据。 只有在覆盖情况指出了具体缺失实现或回归测试负责人时,才进行至多一次 有针对性的后续调用。 - 继续处理,无需重新发送源代码。 在下一次 context 调用中传入之前的
receipt_id,或将返回的片段哈希作为known_hashes传入。响应会报告 确切及重叠的遗漏,而不会悄悄对相同证据再次计费。 - 调查已观察到的故障。 使用
investigation工作流,并在workflow_evidence中仅提供直接观察到的failure_traces、路径、符号或 测试意图。随后针对证据指出的负责人,进行精确的search、outline或read调用。 - 审查变更。 使用
review工作流,将base_revision设为BASE..HEAD,并将strict_changed_paths: true。如果其他 Agent 需要一份 精简清单,其中包含所选哈希、变更路径、假设和已完成的验证,而不含复制的 源代码正文,请求handoff。
这套单次调用约定适用于自主代码库分流,并不限制实现 Agent。在物化之前,
人工审查和控制平面工作流仍可通过 plan_only: true 预览成本较高或风险较大的
检索。
重复的多 Agent context 测试套件
发现,迭代式 LeanToken 配置的总输入量比精简原生方式多 50.9%,而冻结的
「一次 context 加可选的一次 search」配置节省了 20.1%,并在 20 次中有 15 次
取得路径集合成功。这些结果涵盖四项固定的分流任务,并不能证明存在普遍适用的
实现工作流。
明确的关注范围约束是一种契约。当请求提供 focus_paths、精确的
focus_symbols 和 minimum_fragments_per_focus_path 时,LeanToken 会在
文档规定的单文件范围内生成候选项;如果不同代码范围无法满足最低要求,则会
报告覆盖失败。Explain 配置文件计划和物化后的响应还会指出生成、预留、选中或
抑制每个关注候选项的有界分配边界,同时不改变排序。
为什么选择 LeanToken
大多数 Agent 一开始会广泛搜索并阅读整个文件。LeanToken 会分阶段缩小范围:
| 典型的代码库探索 | 使用 LeanToken |
|---|---|
| 扫描宽泛的目录列表 | 在精简目录树中查找相关路径 |
| 阅读整个文件以了解结构 | 查看定义和导入,而无需加载整个文件 |
| 每轮对话后再次发送相同代码 | 避免重复发送未变更的证据 |
| 任由大文件占满请求 | 将返回的源代码控制在精确的源代码令牌预算内,并单独报告响应开销 |
| 猜测哪些文件重要 | 按与任务的可能相关性为代码排序 |
你的编码 Agent 仍负责编辑、命令、测试和对话。 LeanToken 会查找并返回这些任务所需的代码。
LeanToken 不会创建一个巨大的提示词文件,而是在 Agent 需要时响应有针对性的搜索和 读取请求。
示例
对于修复关机期间的请求取消这类任务,示意性的有界结果可能如下:
Budget: 1,200 source tokens
Selected evidence:
src/services/executor.rs lines 137-147, 251-259
src/services/reconciliation.rs lines 148-175, 257-272
Agent 收到的是这些代码范围,而不是两个完整文件。如果预算过小,响应还会说明 省略了哪些内容。路径、分数、回执、JSON 和 MCP 传输封装不计入此源代码令牌预算; 测量边界请参阅令牌统计。
可用工具
| 工具 | 用途 |
|---|---|
leantoken.context | 自主进行广泛初步筛查时,默认作为首次调用并返回已物化的内容;也可供人工或控制平面审查时预览。 |
leantoken.search | 排名搜索优先使用此工具,而非 grep/rg;穷尽式文本/正则调用可明确记录或复用完整查询覆盖范围。 |
leantoken.files | 紧凑且能遵循忽略规则的路径发现优先使用此工具,而非 find/ls/glob。 |
leantoken.outline | 检查定义、签名、导入和范围,无需读取整个文件。 |
leantoken.read | 读取单个确切符号或包含首尾的行范围时,优先使用此工具,而非 cat/head/sed。 |
leantoken.history | 在不可变的 Git 修订版本之间读取、批量比较差异或追踪解析后的符号。 |
leantoken.json | 查询、汇总或比较范围受限的实时 JSON,并提供分页键和类型化诊断信息。 |
leantoken.receipt_rebase | 仅将路径、坐标和哈希均相同的证据明确迁移到更新的已完成代次。 |
leantoken.savings | 报告观测到的响应统计、哈希抑制、失败情况和明确的观测限制。 |
高级检索控制
每个基于索引的检索工具(包括 receipt_rebase)都接受
consistency: "reconcile_working_tree",用于在查询前协调已完成的编辑。
默认值
"indexed_generation" 会返回最新的已完成索引代次,不会扫描或等待文件系统变更;它不是 Git 修订版本边界。
leantoken.history 读取不可变的 Git 对象,而 leantoken.json 读取精确的
实时文件,因此两者都不接受索引一致性模式。若要将上下文限制在不可变历史范围内,请将 BASE..HEAD 作为
leantoken.context.base_revision 传入,并设置 strict_changed_paths: true。
自主进行广泛初步筛查时,设置 plan_only: false 并直接使用已物化的证据。只有在执行成本高或风险较高的检索前需要人工或控制平面审查时,才使用 plan_only: true:它会返回范围受限的候选项排名元数据,不含源代码片段,也不会修改收据。获批后,使用 plan_only: false 重复相同请求。设置 response_profile: "compact" 可获得最精简且会明确报告失败的响应,保留默认的 "balanced" 格式,或使用 "explain" 获取范围受限的单项省略信息、维度和差异证据。响应会通过 effective_response_profile 报告最终采用的选项。
目录有意保持精简,因为每个工具描述和架构定义也会占用模型上下文。
CLI 用法
通过 npx 直接运行 LeanToken:
npx leantoken status
npx leantoken savings
npx leantoken doctor
npx leantoken --root /path/to/repo search handle_request
或使用全局安装的二进制文件:
npm install --global leantoken@latest
leantoken --root /path/to/repo index
leantoken --root /path/to/repo search handle_request --mode identifier --max-tokens 800
leantoken --root /path/to/repo context \
--task "fix request cancellation during shutdown" \
--budget 2000
无需打开仓库索引,即可审计现有的脱敏实验记录或主机报告:
leantoken episode audit \
--adapter multi-agent-suite-v1 \
--input benchmarks/reports/multi-agent-context-suite-v1-codex-0.144.1.json
默认输出为 Markdown;添加全局选项 --json 可使用稳定的标准化 JSON 架构。该审计器在本地运行,范围受限,且不会修改输入。它会保留产物哈希,而不保留原始提示词、源代码、工具参数或工具输出。
npm install leantoken 会将命令安装到当前项目的
node_modules/.bin;它不会将 leantoken 添加到 shell 的 PATH。调用项目本地安装的命令时,请使用 npx leantoken、包脚本或
./node_modules/.bin/leantoken。
通过 stdio 手动运行 MCP 服务:
leantoken --root /path/to/repo mcp
手动配置 MCP 客户端
{
"mcpServers": {
"leantoken": {
"command": "leantoken",
"args": ["--root", "/path/to/repo", "mcp"]
}
}
}
对于 Cargo 发行版,请安装已发布的 crate,并将 MCP 客户端指向生成的可执行文件:
cargo install leantoken --version VERSION
leantoken --root /path/to/repo mcp
官方 MCP Registry 条目为 io.github.morluto/leantoken。支持 Cargo 包的 Registry
客户端可以安装对应版本的 leantoken,并使用上述 mcp 命令。
安装选项
npm 包包含适用于以下平台的原生二进制文件:
- ARM64 和 x64 架构的 macOS
- ARM64 和 x64 架构的 glibc Linux
- x64 架构的 Windows
安装不会运行生命周期脚本,也不会通过 postinstall 钩子下载可执行文件。其他目标平台(包括 musl Linux)必须从源代码构建。
安装 Rust 1.95 或更高版本以及原生 C/C++ 工具链,然后运行:
cargo install --locked --git https://github.com/morluto/leantoken leantoken
更新
通过 npx 创建的 MCP 条目会固定为配置时使用的确切 LeanToken 版本。
请显式更新现有客户端集成:
npx --yes leantoken@latest setup --refresh --yes
对于全局安装或通过 Cargo 安装的 CLI:
leantoken upgrade --check
leantoken upgrade --yes
update 是 upgrade 的别名。对于项目本地的 npm 安装:
npm install leantoken@latest
固定的 MCP 条目绝不会悄悄切换到 @latest。如果本地或在线无法获取确切的软件包版本,启动将失败,而不会选择其他版本。
更新 CLI 不会更改现有 MCP 条目。回滚、缓存管理和版本详情请参阅使用指南。
缓存管理
检查本地仓库缓存,或在清理前预览清理内容:
leantoken cache list
leantoken cache list --summary
leantoken cache list --incompatible-with-current
leantoken cache prune --incompatible-with-current
leantoken cache compact --id v15-0123456789abcdef --dry-run
leantoken cache prune --older-than 30 --dry-run
leantoken cache prune --max-total-bytes 1073741824 --yes
有关缓存状态、分页和清理安全规则,请参阅使用指南。
工作原理
repository
│
▼
file discovery ──► code structure extraction ──► local search index
│
▼
agent request ──► ranked / exact retrieval ──► focused code within a token budget
LeanToken 会为源代码建立一次索引,然后提供精简路径、排序匹配结果、结构大纲、精确源代码范围和针对特定任务的上下文。它避免在多轮交互中重复发送未更改的依据。
依赖繁重的工作区可以选择启用独立且具有缓存标识的一方索引,而不改变默认的全仓库行为:
leantoken --index-include 'src/**' --index-include 'tests/**' index
状态信息和每次检索都会说明当前索引是完整索引还是范围索引,因此不会将范围索引的空结果误报为整个仓库中不存在。有关边界、缓存标识和 MCP 注册示例,请参阅使用指南。
LeanToken 的目标是用更少的输入词元,返回 Agent 所需的代码。
文档
| 指南 | 内容 |
|---|---|
| 使用指南和工具参考 | 命令、MCP 工具、请求选项和示例 |
| 架构与可靠性 | 组件、数据流、存储和故障行为 |
| 路线图 | 当前方向和计划中的工作 |
| 开发与测试 | 本地设置、验证和发布工作流 |
| 基准测试方法 | 词元经济性测量及其解读 |
| 测量工具 | 实验、传输成本和性能分析工具 |
许可证
可由你选择依据以下任一许可证授权:
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。