# @draht/rlm 中文文档

规范地址：https://npmcn.com/package/%40draht/rlm/

版本：2026\.11\.5
npm 元数据更新时间：2026-11-06T09:11:07.442Z
中文译文更新时间：2026-11-13T03:26:49.441Z
软件包许可：未声明

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40draht/rlm
原文对照：https://npmcn.com/package/%40draht/rlm/?lang=original

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：329 kB，44 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：3 个
- 首次发布：2026-07-12T20:33:31.451Z
- 最新版本发布：2026-11-06T09:11:07.272Z
- 近 30 天下载量：2380（2026-10-13 至 2026-11-11，npm 官方下载统计）
- 已发布版本数：24（近 12 个月 24 个）

## 中文简介

递归语言模型——根-LLM-出品-代码-/REPL-executes-structed-stdout scolfold

## 安装

```sh
npm install @draht/rlm
```

也可以使用：`pnpm add @draht/rlm`、`yarn add @draht/rlm`、`bun add @draht/rlm`

## README

# @draht/rlm (英语)

递归语言模型 (RLM)——张作霖的推论-时间脚手架,,, 克拉斯卡、克塔布(2026年), _递归语言模型_ (arXiv:2512.24601) (中文(简体) ) root-LLM-出品-代码-REPL-执行-截取-出品-历史-附录- 最后检查。 让根模型解答关于输入量的问题远远大于 通过写 Python 来检查、块和搜索它自己的上下文窗口 从沙盒中的 REPL 内容,可选择重现为 次级`llm_query` 电话,而不是呼叫者 永远装入原始内容 进入一个提示.

## 何时选择 RLM 而不是普通代理

当输入真的不符合模型的背景时, 联系 RLM 窗口,或仅通过切换可能很重要的内容来适应:

-   日志文件,数据集堆放,或输出为 10 个或 数百兆字节——从任何模型的窗口过后的数量级.
-   源文件的目录/ glob 太大, 无法完整读取而不驱逐 之前的对话背景 .
-   任何你不得不猜测哪个前缀/后缀/样本的情况 要切入的输入,错误的猜测意味着缺少答案.

当输入在模型中已经舒适地匹配时,不要到达 RLM 上下文窗口 — 普通读取速度快, 费用更低, 并且更容易调试 。 RLM 语言 将一个直接读作若干次额外的模拟往返(见下文) 贸易只有在替代品为短线引起的信息时才有回报 损失,不只是"这个文件有点长"

## 费用封套

一个正常的读取是一通呼叫:整个输入进入了即时,模型 答过一次 RLM为 **没有** 普罗万象比那便宜.. 不同贸易:

-   根模型每个REPL步骤发出一个呼叫(一小到几十个) 每个步骤的 Python 本身可能叫做 `llm_query(...)`,这是 _第二届_ 型号调用(一般改为较小) “rlm-sub”角色——见 `router-session.ts`是因为 `RlmRole`费用,包括 钱.
-   RLM的总成本是 `sum(root-step costs) + sum(sub-call costs)` 对 一个基线的单调。 RLM在基线单调时获胜 否则要求要么彻底失败(投入根本不适合),要么 支付大得多的上下文窗口/ 重新读取输入复数 为了补偿短篇小说——而不是在 一般情况.
-   **别猜了 量度.** `src/cost-comparison.ts`是因为 `compareCost()` 计算一个轨迹的两个数字: `rlmCostUsd` 从轨道上 自己登录的费用条目(`readCostLog`编号 :`getSessionCosts` 从 `@draht/router`过滤 `trajectoryId`),以及 `baselineCostUsd` 作为 估计费用 `@draht/router`是因为 `estimateCost`只有一个呼叫 将相同的内容切入目标模型的上下文窗口 (第一——N——特征——那——适合——一个简单,命名的策略,而不是声称 这是最聪明的短跑。 对照真实的轨道ID运行 假设 RLM 是您更便宜(或更昂贵)的选择 具体投入/模式配对; `.draht/rlm/cost-comparison-report.json` 实值 比较时写报告.

## 可观察性:轨迹日志和重放

每个 `createRouterBackedSession` 运行写入新线限制的 JSON 轨迹日志到 `.draht/rlm/<trajectoryId>.jsonl` (单位:千美元)`src/trajectory.ts`(b) —— 一个 `TrajectoryStepEntry` 每个 REPL 步骤( 其代码、 已截断的 stdout, 错误, 如果 {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}加一个航站楼 {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}那台台阶的自负 `TrajectoryFinalEntry` 一旦会议决定. `trajectoryId` 一样 ID 已经用于标记会话的 `@draht/router` 成本记录条目,所以 轨迹日志及其成本核算总是与同一键相关.

因为整个运行都在磁盘上,所以可以用 **零 LLM 电话**数字 :

```bash
draht rlm replay <trajectory-id>
```

读取 JSONL 日志通过 `readTrajectory()` 并打印最后答案(添加a) 动词旗表示完整的分步跟踪)——没有路由器,没有模型,没有 在那个代码路径上的网络访问。 用于审计什么会话 实际上,调试一个没有达到的跑步 `FINAL`,或审查费用 没有重新运行任何东西.

这个 `test/s-niah.test.ts` 在 10x 和 100x a 时召回回归套件 模拟根模型的上下文窗口(合成针入海斯塔克 ~4M和 ~ 40M 字符, 对脚本模拟器 `rootLlm` ——没有真正的模型呼叫)作为 脚手架上还找到一个规模的针头.

## 工作实例

说 `deploy.log` 是一个40 MB 的部署日志,您需要知道是什么原因 埋在其中某处的断气 太大了 无法粘贴成正常的快感. 同样的问题,有三个方法:

**交互式 `/rlm` 命令** (a内) `draht` 会议:

```
/rlm deploy.log What caused the outage around the 03:00 UTC deploy?
```

**`draht rlm` 国 际** (可说明,一发:

```bash
draht rlm --input ./deploy.log --query "What caused the outage around the 03:00 UTC deploy?"
```

**`rlm_query` 工具** (代理人推迟阅读本身,即会中,取而代之) 将日志装入自身上下文中:

```json
{
  "tool": "rlm_query",
  "input": {
    "input": "deploy.log",
    "query": "What caused the outage around the 03:00 UTC deploy?"
  }
}
```

三者同道同道入盖下: `parseInputArg`编号 :`loadInput` 页:1 `deploy.log` 输入内容, `createRouterBackedSession` 包装为 反应 `context` 与问题准备为标题,和根 模型将 Python 写入 grep/ chunk/ search `context` - 重现为 `llm_query` 视需要对个别块进行子调用——直至呼叫 `FINAL(...)`编号 :`FINAL_VAR(...)` 带着答案. `--input`编号 :`input` 还接受 缩略语( o)`"src/**/*.ts"`页:1 `http(s)://` URL,或者说 `knowledge:<client-slug>` 给一个有名的客户知识库.

为了查查这次跑步是否值得 成本上看 `trajectoryId` 联 合 国 `.draht/rlm/<trajectoryId>.jsonl` 日志( 或匹配) `trajectoryId` 输入 `.draht/cost-log.jsonl`并把它输入 `compareCost()` (见上文费用封套)而不是假设 向上转.

## 沙盒要求

Linux RLM 会话需要 `unshare` 或者说 `bwrap`,一个64位 x86 或 ARM Python 解释器, seccomp 过滤, 和一个启用的 Landlock ABI 3 或更新 。 这个 python 模块路径的读取权限,系统库 目录( 包括 Nix 商店, 当存在时), 驱动程序, 以及运行时间 支持文件。 常规文件写作仅限于会话工作目录; `/dev/null` 也可以写。 进程执行、联网和文件系统 拒绝元数据更改。 名称和大小等文件元数据不是 藏起来.

如果这些内核限制无法安装,驱动程序不会运行. macOS 继续使用 `sandbox-exec`。两个平台运行一个沙盒启动 在接受模型生成的 Python 之前检查.

喜欢的 `unshare` 路径将 Python 保存在 PID 内存监控 用途。 与 `bwrap` 倒计时,RSS的民调目前观察包装 进程;会话的RSS上限在该路径上并不可靠.

## 发展

```bash
npm install          # from repo root, resolves this workspace package
cd packages/rlm
npx tsc --noEmit     # typecheck
npm test             # vitest
```

## 软件包布局

-   `src/session.ts` —— 说 `RlmSession` 根循环(步/跑, `FINAL`编号 :`FINAL_VAR` 哨兵,恒大历史.
-   `src/router-session.ts` —— 说 `createRouterBackedSession`,生产 `@draht/router`\- 辅助工厂(即时选择、成本记录、, 轨迹记录).
-   `src/trajectory.ts` ——轨迹 JSONL 附加/读取(此阶段).
-   `src/cost-comparison.ts` - RLM-vs-基线成本控制(这一阶段).
-   `src/loaders.ts` —— 说 `--input`编号 :`/rlm <input>` 源装入器(文件, glob, URL( URL) , (英语), `knowledge:<slug>`) (中文(简体) ).
-   `src/prompts.ts` ——分级系统即时模板,由根选择 模型的上下文窗口.
-   `python/repl_driver.py` ——沙箱Python RePL驱动.
-   `packages/coding-agent/src/rlm-cli.ts` —— 说 `draht rlm` CLI 子命令 .
-   `packages/rlm-agent/` —— 说 `/rlm` 命令 + `rlm_query` 工具扩展名 正常代理会话.

## 一般事务人员(其他职等)

RLM是一种交叉编码代理能力,不是任何单一的属性 生成项目堆栈——无 `packages/templates/src/*.md`是因为 每层模板(Astro、Go/gRPC、SST TypeScript)是用于一个 "何时使用 RLM" 注释,和这个 repo 自己的根 `AGENTS.md` 是一个 贡献- 工作流程 doc, 不是特征引用 。 这个读取器是 rLM 的主要文档表面; 没有修改模板 .

## 常见问题

### @draht/rlm 是什么？

递归语言模型——根-LLM-出品-代码-/REPL-executes-structed-stdout scolfold

### 如何安装 @draht/rlm？

在项目目录运行 npm install @draht/rlm，或使用 pnpm add / yarn add / bun add。

### @draht/rlm 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @draht/rlm 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @draht/rlm 可以商用吗？

@draht/rlm 使用 未声明 许可。package\.json 没有声明许可证。没有许可证的代码默认保留全部权利，商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括，不构成法律意见，请以许可原文为准。

### @draht/rlm 的下载量有多少？

根据 npm 官方下载统计，@draht/rlm 在 2026/10/13 – 2026/11/11 这 30 天内被下载 2,380 次，日均约 79 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @draht/rlm 还在维护吗？

最新版本 2026\.11\.5 发布于 2026/11/06（7 天前）；至今共发布 24 个版本，其中过去 12 个月发布了 24 个；首次发布于 2026/07/13。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

