mcpField
R
RLM Tools

RLM Tools

本地服务
github.com开发工具837 周前更新

关于 RLM Tools

RLM Tools 是供 AI 编码 Agent 探索代码库的持久化 Python 沙箱,原始数据留在服务端,仅将代码执行结果返回对话。它适用于需要搜索和读取大量代码的工作,并以只读、受限的文件访问方式运行。

主要功能

  1. 01持久化 Python 沙箱会话
  2. 02读取、搜索和筛选代码文件
  3. 03文件树与模式匹配
  4. 04只读且限定目录的访问

适用场景

  1. 01汇总大型 grep 搜索结果
  2. 02跨文件读取并提炼代码信息
  3. 03逐步探索项目模块
  4. 04在沙箱中执行可选语义分析

MCP 相关

该 MCP 服务提供会话创建、Python 代码执行和会话关闭三个工具,并内置文件读取、搜索和目录浏览辅助函数。可选的 llm_query 使用 Anthropic API 进行沙箱内语义分析。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"stefanoshea-rlm-tools": {
"command": "uvx",
"args": [
"rlm-tools"
]
}
}
}
启动命令uvx rlm-tools

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypirlm-tools0.1.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

RLM Tools

AI 编码 Agent 的大部分令牌预算都花在了读取代码上,而不是分析代码。每次 grep、读取文件和 glob 的结果都会被全部塞进对话中。在大型代码库中,这会让 25-35% 的上下文(和成本)耗费在模型根本不需要看到的原始数据上。

RLM Tools 为 Agent 提供了一个持久沙箱,用于探索代码。数据留在服务端,只有结论会返回。

# Install in one line (Claude Code)
claude mcp add rlm-tools -- uvx rlm-tools

# Or Codex
codex mcp add rlm-tools -- uvx rlm-tools

就是这样。Agent 会自动使用沙箱进行探索。无需配置,也无需修改提示词。

有何变化

不使用 RLM Tools——Agent grep import UIKit,500 条匹配结果全部被塞进上下文。读取 10 个文件,所有内容都消耗令牌。上下文窗口被填满,Agent 忘了自己正在做什么。

使用 RLM Tools——Agent 在服务端 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 行摘要。Agent 只看到所需内容,不多不少。

实际效果

在典型的编码工作流中:上下文减少 25-35%。 这意味着 Agent 在达到上下文限制前,可以多探索约 40-50% 的代码。

在大量探索任务中(读取多个文件、大范围搜索),节省效果会更显著:

场景标准工具RLM Tools节省
搜索整个应用40,045 个字符1,644 个字符95.9%
读取 10 个大型文件1,493,720 个字符13,588 个字符99.1%
多步骤探索136,102 个字符5,285 个字符96.1%
先 grep 再读取匹配项340,408 个字符6,022 个字符98.2%
查找某个模式的所有用法13,478 个字符3,691 个字符72.6%
理解一个模块94,745 个字符16,925 个字符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) — 子大模型分析(可选,需 API 密钥)

变量会在同一会话中的多次 rlm_execute 调用间持久保留。Agent 可以逐步建立理解——搜索、筛选、读取、分析——中间数据无需进入上下文窗口。

兼容

RLM Tools 是标准的 MCP 服务。它兼容任何支持 MCP 的客户端:Claude Code、Codex、Cursor 等。

其他安装方式
JSON MCP 配置(Cursor、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 Tools 无需任何配置即可开箱即用。

核心探索功能(读取、grep、glob、tree)无需 API 密钥。可选的 llm_query() 助手函数会调用 Anthropic API,在沙箱内进行语义分析;这是唯一需要密钥的功能。

变量默认值说明
ANTHROPIC_API_KEY—仅 llm_query() 需要。使用 Anthropic 的 API(Claude)。
RLM_SUB_MODELclaude-haiku-4-5-20251001llm_query() 使用的 Claude 模型
RLM_MAX_SESSIONS5最大并发会话数
RLM_SESSION_TIMEOUT10会话超时时间(分钟)

安全性

沙箱为只读且受到限制:

  • 导入:仅允许安全的标准库(re、json、collections、math 等)
  • 内置函数:禁止使用 exec、eval、compile、__import__、breakpoint
  • 文件访问:只读,范围限定在会话目录内,并阻止路径遍历
  • 执行:可配置每次调用的超时时间(默认 30s)
  • 速率限制:可配置每个会话的最大调用次数

背景

RLM Tools 实现了一个 RLM 风格的探索循环:将原始数据保留在工具端内存中,仅向模型发送精简的输出。基于 Model Context Protocol 构建。

开发

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

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。