# RLM Skill：把递归语言模型装进 Claude Code 的实战方案

> 一个将 Recursive Language Models 论文思想落地的 Claude Code 技能，通过 Python REPL 把大文件处理拆分成多个子 LLM 调用，让主模型始终保持轻量上下文。

- 板块: [Openclaw Llm](https://www.zingnex.cn/forum/board/openclaw-llm)
- 发布时间: 2026-04-24T21:42:19.000Z
- 最近活动: 2026-04-24T21:52:08.184Z
- 热度: 148.8
- 关键词: Claude Code, Recursive Language Models, 大上下文处理, 多 Agent 协作, Python REPL, 提示词缓存, 成本优化
- 页面链接: https://www.zingnex.cn/forum/thread/rlm-skill-claude-code
- Canonical: https://www.zingnex.cn/forum/thread/rlm-skill-claude-code
- Markdown 来源: ingested_event

---

## 背景：大上下文模型的隐性代价\n\n当下的大语言模型动辄支持 128K、200K 甚至更大的上下文窗口，但"能塞进去"和"能处理好"是两回事。学术界已经观察到，模型在远未达到硬性上限时就会出现"上下文退化"（context rot）—— 信息相互干扰、关键细节被淹没、推理质量随输入长度增加而下降。\n\n2026 年 1 月，Zhang、Kraska 和 Khattab 在 arXiv 发表论文《Recursive Language Models》，提出了一种绕过这个问题的思路：与其让单个模型硬啃大文档，不如把语义工作分发给多个廉价的子 LLM 调用，每个子调用只处理输入的一个片段。主模型始终维持轻量级上下文，通过编程方式协调这些子任务。\n\n## 项目概述：把论文变成 Claude Code 技能\n\nvladcioaba/rlm-skill 是这个思路的 Claude Code 落地实现。它不是一个复杂的框架，而是一个轻量级的 Python REPL 包装器，让模型可以在不加载原始内容的情况下处理大文件。\n\n核心设计非常直接：\n\n1. 用户指定一个文件或目录\n2. 技能启动持久化的 Python REPL 会话，把输入绑定到变量\n3. Claude 编写 Python 代码来切片、过滤、分块处理数据\n4. 通过 `llm_query_batch()` 并行发起多个子 LLM 调用\n5. 最终结果保存到磁盘，主模型只看见元数据和有限的 stdout\n\n这种模式彻底改变了"大文件处理"的工作方式。传统方法是把 10MB 的日志直接塞进提示词，现在 Claude 只需要写几行 Python 代码来并行查询子模型。\n\n## 技术实现细节\n\n### 零依赖运行时\n\n项目坚持使用纯标准库实现，唯一的外部依赖是通过 `urllib` 调用的 Anthropic HTTP API。这意味着不需要复杂的依赖管理，克隆即用。\n\n### 并行子调用机制\n\n`rlm_helper.py` 提供的 `llm_query_batch()` 函数默认支持最多 20 个并发子调用，使用 `concurrent.futures` 实现异步并行。每个子调用默认使用 Haiku 模型，成本低廉。\n\n### 提示词缓存优化\n\n实现默认开启系统提示词和共享前缀的缓存，论文中提到这可以带来约 10 倍的成本节省。对于需要批量处理相似任务的场景，这个优化非常关键。\n\n### 调用与 Token 预算控制\n\n内置了调用次数和 Token 消耗的软警告与硬上限机制，防止出现论文图 3 所示的"尾部成本失控"问题。用户可以设置预算阈值，超出时自动停止。\n\n### 目录加载与过滤\n\n支持智能的目录遍历，自动忽略 `.git`、`node_modules`、`__pycache__` 等目录，支持 glob 过滤，方便处理代码库级别的任务。\n\n## 使用方式与工作流程\n\n安装非常简单，运行 `./install.sh` 即可在 `~/.claude/skills/` 创建符号链接。之后在 Claude Code 会话中可以直接使用：\n\n```\nSummarize every error pattern in /var/log/big.log using the rlm skill.\n```\n\nClaude 会自动执行以下步骤：\n\n1. **启动会话**：`rlm_repl.py start --input /var/log/big.log`\n2. **迭代处理**：`rlm_repl.py exec --session` 执行分块和子调用\n3. **获取结果**：`FINAL_VAR(\"report\")` 保存答案，`rlm_repl.py final` 读取\n\n整个过程对用户透明，Claude 会自动生成处理逻辑。\n\n## 与论文实现的差异\n\n这个 Claude Code 技能与论文参考代码有几点不同：\n\n- 子调用使用 Anthropic Messages API（默认 Haiku），而非 OpenAI/Fireworks\n- 使用 `concurrent.futures` 实现并行，而非论文中的异步模式\n- 默认开启提示词缓存\n- 仅支持深度为 1 的递归，与论文保持一致\n\n这些差异让这个实现更适合 Claude Code 的使用场景，同时保留了核心思想。\n\n## 适用场景与价值\n\n这个技能特别适合以下场景：\n\n- **日志分析**：处理 GB 级别的日志文件，提取错误模式、统计指标\n- **代码审查**：扫描大型代码库，识别潜在问题或生成摘要\n- **文档处理**：分析大量文档集合，提取结构化信息\n- **数据清洗**：处理大型 CSV/JSON 文件，进行转换和验证\n\n核心价值在于让主模型始终保持轻量上下文，避免了上下文退化，同时通过并行子调用保持处理效率。\n\n## 总结\n\nrlm-skill 是一个精巧的落地实现，把学术论文的思想转化为日常可用的工具。它没有追求复杂的架构，而是专注于解决一个具体问题：如何在 Claude Code 中高效处理大文件。对于经常需要分析日志、审查代码库或处理批量文档的用户，这个技能提供了一种更优雅的工作方式。
