返回 MCP 目录
public公开dns本地运行

rlm-tools

RLM Tools是一个MCP服务器工具,为AI编程代理提供持久化沙箱环境,允许在服务器端探索和分析代码,仅将结论返回给模型,大幅减少上下文窗口占用和成本。

article

README

🚀 RLM Tools

RLM Tools 是一款能为 AI 编码代理提供持久沙盒环境以探索代码的工具。在大型代码库中,AI 编码代理大部分的令牌预算都花费在读取代码上,而非对代码进行推理。而 RLM Tools 能让数据留在服务器端,仅将结论返回,有效减少上下文占用,提升编码效率。

🚀 快速开始

你可以使用以下命令一键安装 RLM Tools:

# 使用 Claude Code 安装
claude mcp add rlm-tools -- uvx rlm-tools

# 或者使用 Codex 安装
codex mcp add rlm-tools -- uvx rlm-tools

安装完成后,代理会自动使用沙盒进行代码探索,无需额外配置或更改提示。

✨ 主要特性

减少上下文占用

在典型的编码工作流程中,使用 RLM Tools 可减少 25 - 35% 的上下文占用,这意味着代理在达到上下文限制之前可以探索大约多 40 - 50% 的代码。在大量探索任务(如读取多个文件、广泛搜索)中,节省的效果更为显著: | 场景 | 标准工具 | RLM Tools | 节省比例 | | --- | ---: | --- | --- | | 全应用 grep 搜索 | 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

高效探索代码

RLM Tools 提供了一个服务器端的 Python 沙盒,代理可以在其中运行探索代码,数据保留在沙盒内存中,仅将 print() 输出传递到上下文中。例如,在搜索 import UIKit 时,原本 500 行的 grep 结果可以简化为 5 行摘要:

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")

📦 安装指南

一键安装

# 使用 Claude Code 安装
claude mcp add rlm-tools -- uvx rlm-tools

# 或者使用 Codex 安装
codex mcp add rlm-tools -- uvx rlm-tools

其他安装方法

其他安装方法

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: uvargs: ["--directory", "/path/to/rlm-tools", "run", "rlm-tools"]

💻 使用示例

基础用法

使用 RLM Tools 的三个核心 MCP 工具: | 工具 | 用途 | | --- | --- | | 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) — 子 LLM 分析(可选,需要 API 密钥)

变量在会话内的 rlm_execute 调用之间保持持久化,代理可以逐步建立理解,进行搜索、过滤、读取和分析,而无需将任何中间数据放入上下文窗口。

📚 详细文档

配置

复制 .env.example.env 进行自定义配置。所有设置都是可选的,RLM Tools 无需配置即可直接使用。

| 变量 | 默认值 | 描述 | | --- | --- | --- | | ANTHROPIC_API_KEY | — | 仅 llm_query() 需要。使用 Anthropic 的 API(Claude) | | RLM_SUB_MODEL | claude-haiku-4-5-20251001 | llm_query() 使用的 Claude 模型 | | RLM_MAX_SESSIONS | 5 | 最大并发会话数 | | RLM_SESSION_TIMEOUT | 10 | 会话超时时间(分钟) |

安全

沙盒是只读且受限的:

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

🔧 技术细节

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 许可证。

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端