rlm
让大模型像程序员一样递归调用自身处理超长上下文的推理范式库
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
让大模型像程序员一样递归调用自身处理超长上下文的推理范式库
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一个场景:你在研究一个大数据文件,里面藏着一个秘密数字——但你不知道它在哪,也不知道它长什么样。传统的大语言模型(LLM)会试图靠「记忆」来推断,而 Recursive Language Models(RLM) 告诉你:不如让模型自己写代码去找到它。
RLM 是 MIT OASYS 实验室提出的一个推理新范式,其核心理念大胆而直接——让语言模型不仅能处理文本,还能通过代码环境来编程式地探索、分解和递归调用子模型。与传统的 tool-calling 不同,RLM 将上下文本身作为变量注入到 REPL(Read-Eval-Print Loop)执行环境中,模型可以自由地编写代码、执行代码、调用子 LLM,形成一种「自我递归」的推理链条。
这一想法来自 Alex Zhang 等研究者在 2025 年发布的博客文章,并在随后的 arXiv 论文(2512.24601)中得到了系统性验证。

图1:RLM 论文预览,展示了递归调用的核心架构
一句话概括:RLM 是一个通用的、即插即用推理库,让语言模型在 REPL 环境中以编程方式处理近乎无限长度的上下文。
传统的 llm.completion(prompt, model) 被替换为 rlm.completion(prompt, model),模型不再只是接收一段文字然后输出文字,而是获得了一个完整的 Python 执行环境,可以:
llm_query() 或 rlm_query(),子模型同样可以在自己的环境中递归执行把传统 LLM 想象成一本百科全书,你问它问题,它翻书回答。而 RLM 则像是一个研究员,手里不仅有百科全书,还有一个能实际动手做实验的实验室。遇到复杂问题,它可以在实验室里设计实验、执行、观察结果,再决定下一步——这比单纯「翻书」强大得多。
from rlm import RLM
rlm = RLM(
backend="openai",
backend_kwargs={"model_name": "gpt-5-nano"},
verbose=True,
)
print(rlm.completion("打印前100个2的幂次方,每行一个。").response)
安装也极为简单:
pip install rlms
或使用 uv(推荐):
uv init && uv venv --python 3.12
uv pip install -e .
RLM 支持多种 REPL 运行环境,从轻量到安全逐级递增:
| 环境 | 隔离级别 | 说明 |
|---|---|---|
| local | 无 | 同进程执行,适合本地快速实验 |
| ipython | 中 | IPython session,支持内核隔离 |
| docker | 高 | Docker 容器隔离,需本地安装 Docker |
| modal | 极高 | Modal 云端沙箱,完全隔离 |
| prime | 极高 | Prime Intellect 云端沙箱 |
| daytona | 极高 | Daytona 云端沙箱 |
| e2b | 极高 | E2B 云端沙箱 |
# 使用 Docker 环境
rlm = RLM(
backend="openai",
environment="docker",
environment_kwargs={"image": "python:3.11-slim"},
)
# 使用 Modal 云端沙箱
rlm = RLM(
environment="modal",
environment_kwargs={"timeout_minutes": 30},
)
RLM 不绑定任何单一模型服务商,目前已支持:OpenAI(GPT-4o、GPT-5-nano 等)、Anthropic(Claude 系列)、Google Gemini、Azure OpenAI、Portkey(多路由网关)、OpenRouter、vLLM(本地模型)、Vercel AI SDK。
# 使用 Anthropic
rlm = RLM(
backend="anthropic",
backend_kwargs={"model_name": "claude-sonnet-4-20250514"},
)
# 使用 Portkey 路由
rlm = RLM(
backend="portkey",
backend_kwargs={
"model_name": "@openai/gpt-5-nano",
"api_key": os.getenv("PORTKEY_API_KEY"),
},
)
除了子模型调用,RLM 还支持将任意 Python 函数注册为「工具」,供模型在代码中直接使用:
def fetch_stock_price(symbol: str) -> dict:
"""获取股票价格数据"""
return {"AAPL": {"price": 178.50, "change": 2.3}}
rlm = RLM(backend="openai", ...)
rlm.register_tool("stock_price", fetch_stock_price, description="获取股票实时价格")
当对话轮次增多导致上下文接近 token 限制时,RLM 内置的 compaction 机制会自动将历史执行轨迹压缩为摘要,模型仍然可以通过查询 history 变量访问压缩前的轨迹:
rlm = RLM(
compaction_threshold_pct=0.85, # 上下文超过85%时触发压缩
...
)
RLM 配套提供了一个 Next.js 可视化工具,可以将完整的推理轨迹以交互式图形展示:
cd visualizer && npm run dev
# 打开 http://localhost:3000

图2:RLM 轨迹可视化界面,展示每一步代码执行和子模型调用
除了推理,RLM 仓库还提供了基于 PrimeIntellect 的 prime-rl 的训练工具,允许用户从头训练自己的 RLM 策略模型。训练过程不依赖云端沙箱,使用 local 环境运行 rollouts,直接接入 RL pipeline。
rlm/
├── core/
│ ├── rlm.py # 核心 RLM 引擎(约42KB)
│ ├── types.py # 类型定义
│ └── lm_handler.py # LM 调用封装
├── clients/
│ ├── base_lm.py # 抽象基类
│ ├── openai.py # OpenAI 适配器
│ ├── anthropic.py # Anthropic 适配器
│ ├── gemini.py # Gemini 适配器
│ ├── azure_openai.py # Azure OpenAI 适配器
│ └── portkey.py # Portkey 路由适配器
├── environments/
│ ├── base_env.py # 抽象基类 + 工具解析
│ ├── local_repl.py # 本地 REPL
│ ├── ipython_repl.py # IPython 环境
│ ├── docker_repl.py # Docker 隔离
│ ├── modal_repl.py # Modal 沙箱
│ ├── prime_repl.py # Prime 沙箱
│ ├── daytona_repl.py # Daytona 沙箱
│ └── e2b_repl.py # E2B 沙箱
├── logger/
│ └── rlm_logger.py # 轨迹日志(支持 JSONL)
└── utils/
├── parsing.py # 代码块解析
├── prompts.py # 提示词模板
├── token_utils.py # Token 计数
└── exceptions.py # 异常定义
设计亮点:
get_client() 工厂函数动态加载后端,新增后端只需实现 BaseLM 抽象类BaseEnvcontext、llm_query 等保留名称不可被自定义工具覆盖,防止命名冲突LocalREPL 在同进程中执行模型生成的代码,这意味着恶意提示词可能导致本地系统被篡改。作者在文档中明确标注:「不应在生产环境中使用 local 环境」。若需真正隔离,必须配置 Modal/Prime/Docker 等云端沙箱。
递归调用子模型带来了显著的 token 和时间开销。每次 rlm_query() 都会启动一个完整的子 RLM,包含自己的 REPL 初始化和推理过程。在 Prime 沙箱环境中,目前存在运行速度较慢的已知问题(Prime Intellect 团队已在追踪)。
RLM 不是一个开箱即用的产品,而是一个面向研究者和开发者的框架。用户需要:自己准备 API Key(OpenAI/Anthropic/Portkey 等),对 Python >= 3.11 环境有基本了解,若使用云端沙箱需额外注册对应服务商账号,且无 Docker 支持,不能一键部署完整隔离环境。
RLM 代表了一个明确的趋势——从「prompt 工程」走向「程序化推理」。CodeAct(将 LLM 动作表达为代码)方向已经在多项研究中证明了其优越性,而 RLM 在此基础上更进一步:不仅让模型写代码,还让模型通过子模型调用来实现递归推理。
从增长数据来看,4899+ stars 的关注度表明学界和工业界都在关注这一方向。MIT OASYS 实验室背书、arXiv 论文支撑、与 PrimeIntellect 的训练合作,都让 RLM 具备持续发展的动力。
如果你是 AI 研究者:RLM 提供了标准化的推理和训练接口,是实验新推理策略的理想脚手架。
如果你是开发者:需要谨慎评估安全边界,local 环境仅限实验,云端沙箱是生产级部署的必要条件。
如果你是 AI 爱好者:pip install rlms + 一行代码就能体验 RLM 的强大,是理解「模型如何自我递归」的最佳起点。