RLM工具
您的AI编码代理仅将其大部分代币预算用于 *阅读* 你的代码——而不是推理。每个grep、文件读取和glob结果都会被转储到对话中。在大型代码库中,这相当于模型永远不需要看到的原始数据上消耗了25-35%的上下文(和成本)。
RLM Tools为您的代理提供了一个持久的沙盒来探索其中的代码。数据保持在服务器端。只有结论才会回来。
# Install in one line (Claude Code)
claude mcp add rlm-tools -- uvx rlm-tools
# Or Codex
codex mcp add rlm-tools -- uvx rlm-tools就是这样。你的代理会自动使用沙盒进行探索。无配置,无提示更改。
改变
没有RLM工具 --代理greps import UIKit,将500个匹配项转储到上下文中。读取10个文件,将其所有内容作为令牌刻录。上下文窗口已满。特工忘记了自己在做什么。
使用RLM工具 --代理在服务器端Python沙箱中运行相同的探索。数据保留在沙盒内存中。唯有 print() 输出进入上下文:
matches = grep("import UIKit")
by_module = {}
for m in matches:
module = m["file"].split("/")[0]
by_module.setdefault(module, []).append(m)
for module, ms in sorted(by_module.items(), key=lambda x: -len(x[1]))[:5]:
print(f"{module}: {len(ms)} files")500行grep结果变成了5行摘要。代理人看到了它需要什么,仅此而已。
现实世界影响
在典型的编码工作流程中: 上下文减少25-35%。 这意味着您的代理可以在达到上下文限制之前探索大约40-50%的代码。
在繁重的探索任务中(读取许多文件、进行广泛搜索),节省的成本要高得多:
| 场景 | 标准工具 | RLM工具 | 已保存 |
|---|---|---|---|
| 在整个应用程序中快速浏览 | 40045个字符 | 1644个字符 | 95.9% |
| 读取10个大文件 | 1493720个字符 | 13588个字符 | 99.1% |
| 多步探索 | 136102个字符 | 5285个字符 | 96.1% |
| 然后读取匹配项 | 340408个字符 | 6022个字符 | 98.2% |
| 查找模式的所有用法 | 13478个字符 | 3691个字符 | 72.6% |
| 理解一个模块 | 94745个字符 | 16925个字符 | 82.1% |
完整的基准方法和复制步骤: docs/benchmarks.md
运作原理
三个MCP工具。这就是整个API:
| 工具 | 目的 |
|---|---|
rlm_start(path, query) | 在目录中打开会话 |
rlm_execute(session_id, code) | 在沙盒中运行Python |
rlm_end(session_id) | 关闭会话,免费资源 |
沙盒提供了内置的助手:
read_file(path)/read_files(paths)--将文件读入变量(跨调用缓存)grep(pattern)/grep_summary(pattern)/grep_read(pattern)--搜索glob_files(pattern)--按模式查找文件tree(path, max_depth)--目录结构llm_query(prompt, context)-Sub-LLM分析(可选,需要API密钥)
变量持续存在 rlm_execute 会话内的呼叫。代理可以逐步建立理解——搜索、过滤、读取、分析——而无需任何中间数据接触上下文窗口。
兼容
RLM工具是标准配置 主控程序 服务器。它适用于任何兼容MCP的客户端: 克劳德代码, 法典, 光标以及其他。
Other installation methods
JSON MCP配置(游标、Windsurf等)
{
"mcpServers": {
"rlm-tools": {
"command": "uvx",
"args": ["rlm-tools"]
}
}
}直接运行
uvx rlm-tools来源
git clone https://github.com/stefanoshea/rlm-tools.git
cd rlm-tools
uv sync
uv run rlm-tools然后将您的MCP客户端指向 command: uv, args: ["--directory", "/path/to/rlm-tools", "run", "rlm-tools"].
配置
复制 .env.example 到 .env 定制。所有设置都是可选的——RLM工具可以在零配置的情况下开箱即用。
核心探索功能(read、grep、glob、tree)不需要API密钥。可选 llm_query() 助手调用Anthropic API在沙箱中进行语义分析-这是唯一需要密钥的功能。
| 变量 | 默认值 | 描述 |
|---|---|---|
ANTHROPIC_API_KEY | -- | 必需 llm_query() 只有。使用Anthropic的API(Claude)。 |
RLM_SUB_MODEL | claude-haiku-4-5-20251001 | 克劳德模型用于 llm_query() |
RLM_MAX_SESSIONS | 5 | 最大并发会话数 |
RLM_SESSION_TIMEOUT | 10 | 会话超时(分钟) |
安全
沙盒是只读和受限的:
- 进口:仅安全的stdlib(re、json、集合、数学等)
- 内置:块exec、eval、compile、,
__import__,断点 - 文件访问:只读,作用域为会话目录,路径遍历被阻止
- 执行:可配置每次呼叫超时(默认30秒)
- 费率限制:每个会话可配置的最大呼叫数
背景
RLM工具实现了 RLM风格 探索循环:将原始数据保存在工具端内存中,只向模型发送压缩输出。建立在 模型上下文协议.
发展
git clone https://github.com/stefanoshea/rlm-tools.git
cd rlm-tools
uv sync --dev
pytest tests运行比较基准测试(需要本地项目检查):
RLM_EVAL_PROJECT_PATH=/path/to/project pytest evals -q -s许可证
麻省理工学院

