🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

递归语言模型 tkellogg/dsh-rlm

DeepSeek Harness
tkellogg32 天前有提交已提供中文文档扫描:含敏感能力

用常驻 Python REPL 处理超长上下文并派生子代理

31.4/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/4 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查有告警:未发布到 npm registry,仅可从源码安装;安装清单取自 project/plugin/package.json。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add tkellogg/dsh-rlm
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · chat
装得上吗
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 32 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
⚠︎ 实装验证未通过(unknown · 2026/10/31) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意

未发布到 npm registry,仅可从源码安装;安装清单取自 project/plugin/package.json

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包@dsh-rlm/plugin(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=22 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/11 22:14:22

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 24 处,展示前 24 条)
  • 写入本地文件
    launcher/cli.mjs:19
    try { await writeFile(path, content, { flag: 'wx', mode: 0o600 }); }
  • 写入本地文件
    launcher/cli.mjs:23
    await mkdir(config.profile, {recursive:true,mode:0o700});
  • 写入本地文件
    launcher/cli.mjs:24
    await mkdir(config.state, {recursive:true,mode:0o700});
  • 执行外部命令来自配置/变量
    launcher/cli.mjs:36
    const child=spawn(command,args,{stdio:'inherit',...options});
  • 读取本地文件
    launcher/cli.mjs:48
    const manifest=JSON.parse(await readFile(join(root,'release.json'),'utf8'));
  • 读取本地文件
    launcher/cli.mjs:58
    try{await access(path,constants.R_OK);console.log(`OK ${label}: ${path}`)}catch{good=false;console.log(`MISSING ${label}: ${path}`)}
  • 执行外部命令来自配置/变量
    launcher/cli.mjs:60
    const probe=spawnSync(config.python,['-c','import dsh_rlm, dill, pydantic; print("Python runtime imports OK")'],{encoding:'utf8'});
  • 读取本地文件
    launcher/cli.mjs:72
    for(const path of [config.node,config.python,config.dsh,config.patch])await access(path,constants.R_OK);
  • 删除本地文件递归
    launcher/cli.test.mjs:14
    const dir=await mkdtemp(join(tmpdir(),'rlm-launch-'));t.after(()=>rm(dir,{recursive:true,force:true}));
  • 读取本地文件
    launcher/cli.test.mjs:16
    assert.deepEqual(JSON.parse(await readFile(join(c.profile,'package.json'),'utf8')).dsh.profile.bundles,['@deepseek-ai/dsh-base','@deepseek-ai/dsh-web-
  • 读取本地文件
    launcher/cli.test.mjs:17
    await writeFile(join(c.profile,'cordis.patch.yml'),'# user\n[]\n');await prepare(c);assert.equal(await readFile(join(c.profile,'cordis.patch.yml'),'ut
  • 写入本地文件
    launcher/cli.test.mjs:17
    await writeFile(join(c.profile,'cordis.patch.yml'),'# user\n[]\n');await prepare(c);assert.equal(await readFile(join(c.profile,'cordis.patch.yml'),'ut
  • 读取本地文件
    project/client/build.mjs:3
    const source = await readFile(new URL("./src/client.bundle.js", import.meta.url), "utf8");
  • 写入本地文件
    project/client/build.mjs:5
    await mkdir(new URL("./lib/", import.meta.url), { recursive: true });
  • 写入本地文件
    project/client/build.mjs:6
    await writeFile(new URL("./lib/client.js", import.meta.url), source);
  • 写入本地文件
    project/client/build.mjs:7
    await writeFile(new URL("./lib/index.js", import.meta.url), "/** Host half is intentionally empty; UI is in ./client.js. */\nexport const name = '@dsh
  • 写入本地文件
    project/client/build.mjs:8
    await writeFile(new URL("./lib/index.d.ts", import.meta.url), "export declare const name: string;\nexport declare function apply(): void;\n");
  • 读取本地文件
    project/onboarding/build.mjs:3
    const source = await readFile(new URL('./src/client.bundle.js', import.meta.url), 'utf8');
  • 读取本地文件
    project/onboarding/build.mjs:4
    const host = await readFile(new URL('./src/index.js', import.meta.url), 'utf8');
  • 写入本地文件
    project/onboarding/build.mjs:6
    await mkdir(new URL('./lib/', import.meta.url), { recursive: true });
  • 写入本地文件
    project/onboarding/build.mjs:7
    await writeFile(new URL('./lib/client.js', import.meta.url), source);
  • 写入本地文件
    project/onboarding/build.mjs:8
    await writeFile(new URL('./lib/index.js', import.meta.url), host);
  • 发起网络请求
    project/onboarding/lib/index.js:64
    async fetch(request) {
  • 发起网络请求
    project/onboarding/src/index.js:64
    async fetch(request) {
扫描于 2026/11/4(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 常驻PythonREPL
  • 处理超长上下文
  • 派生子代理

面向 RLM 与程序化智能体的 DeepSeek Harness 插件

README

由 DeepSeek 最新模型翻译生成
DSH RLM 与 Program Agent 一组 DeepSeek Harness(DSH)插件,默认启用 RLM,并引入一种新的子代理类型:Program Agent。 什么是 RLM 与 Program Agent 标准 DSH、Claude Code 和 Codex 大体都遵循「模型 → 工具 → 结果」循环(下图是简化后的 ReAct 风格示意): flowchart TD subgraph ReACT["ReACT (Claude Code & Codex)"] ctx[(Context)] --> LLM -->|write| tool[Tool Calls] tool -->|append| ctx tool -->|eval| results[Tool Results] -->|append| ctx end 在 DSH RLM 中,LLM 的工作方式更像数据科学家:它操作一个常驻的 Python REPL,类似 Jupyter notebook。变量把状态保存在模型对话上下文之外;不需要安装 Jupyter。
展开完整文档(README 剩余 1 节)
DSH RLM 与 Program Agent

一组 DeepSeek Harness(DSH)插件,默认启用 RLM,并引入一种新的子代理类型:Program Agent。

什么是 RLM 与 Program Agent

标准 DSH、Claude Code 和 Codex 大体都遵循「模型 → 工具 → 结果」循环(下图是简化后的 ReAct 风格示意):

flowchart TD
subgraph ReACT["ReACT (Claude Code & Codex)"]
ctx[(Context)] --> LLM -->|write| tool[Tool Calls]
tool -->|append| ctx
tool -->|eval| results[Tool Results] -->|append| ctx
end

在 DSH RLM 中,LLM 的工作方式更像数据科学家:它操作一个常驻的 Python REPL,类似 Jupyter notebook。变量把状态保存在模型对话上下文之外;不需要安装 Jupyter。

flowchart TD
subgraph RLM
ctx[(Context)] --> LLM -->|write code| block[Code Block] -->|hit Enter| repl[(Python REPL)]
block -->|append code| ctx
repl -->|append stdout| ctx
end

所以 RLM 能用 Python 代码处理超大的上下文。代码可以在 REPL 单元之间复用(比如创建可复用的函数)。

RLM API 不是一组扁平的工具,而是功能丰富的 Python API,带类、方法、函数。它支持各种能力,包括消息传递、定时器、基于 Python asyncio 的并行等等。

flowchart TD
ctx[Huge Context] --> root
root --> sub1[Subagent]
root --> sub2[Subagent]
root --> sub3[Subagent]
root --> sub4[Subagent]
sub4 -->|"yo! I'm done"| root

RLM 代码块会变得非常大。代码块越大,智能体在回到 LLM 之前能做的事就越多。

如果智能体永远不回到 LLM 呢?

于是就有了 program agent:

flowchart TD
subgraph rlm[RLM]
RLM
end

RLM[Parent RLM] -->|edit, restart| code
code[Program Agent] -->|report error| RLM

subgraph program[Program Agents]
code
end

code --> s1[Subagent]
code --> s2[Subagent]
code --> s3[Subagent]
code --> s4[Subagent]

Program agent 运行一个异步 Python 函数,可以访问其权限允许的运行时 API。它没有自主的 LLM 循环:它能持续运行确定性代码,需要帮助时给父 RLM 发消息。程序主动请求模型时,它也能显式调用模型。

Program agent 是活跃 Python 进程里的协作式任务,不是独立的持久服务。它们可以比启动它们的 REPL 单元活得更久,但活跃任务和句柄熬不过解释器恢复;父级必须重新创建它们。

用 uv 运行

实验性版本: 已在 PyPI 发布,支持 macOS(Apple Silicon 和 Intel)以及 glibc Linux(ARM64 和 x86-64)。各平台的运行时包托管在 GitHub Releases。

uvx dsh-rlm

想在 PATH 上留一个常驻命令:

uv tool install dsh-rlm
dsh-rlm
需要先装 uv?照着 uv 安装指南 做就行。
uv 负责管理 Python 环境。首次启动时,dsh-rlm 会从 GitHub Releases 下载一个预构建的 Node + DSH 应用,带校验和,版本也匹配。你不需要已有的 DSH、全局 Node、npm 登录、Git clone,也不用从源码构建。之后每次启动都复用那个版本的应用包。Python 包更新后,会选一个新的、匹配的应用包;随包附带的 DSH 版本不会在启动时自行更新。

uvx dsh-rlm setup # Launch setup; use Settings → Setup to revisit
uvx dsh-rlm doctor # Diagnose without downloading the application
uvx --upgrade dsh-rlm # Upgrade uvx's package and launch
uv tool upgrade dsh-rlm # Upgrade a persistent tool installation

在你的项目目录里启动。凭据、会话和 Python 检查点都存在 uv 的一次性工具缓存之外,与普通 DSH 分开。首次运行的安装流程会提供已安装的服务商适配器,不强制要求 DeepSeek key;认证方式取决于你选的适配器和账号。新会话默认使用 RLM Mode。

已发布的平台:macOS arm64/x86-64 和 glibc Linux arm64/x86-64。同一个 Python 包和命令会自动选出匹配的运行时包。目前不支持 Windows 和 Alpine/musl。
构建、存储和发布细节见分发指南。

四个平台的包都通过了 CI 构建和迁移安装冒烟测试。浏览器引导另外在 macOS Apple Silicon 的 Chrome 上测过;这些冒烟测试不覆盖真实的服务商登录和推理。

运行时能力

这套工作系统提供:

- 一个可分发的 DSH Agent Preset,名为 RLM Mode;
- 一个根控制器,模型能看到的唯一工具是 execute_python;
- 一个持久化的 CPython 命名空间,支持顶层 await;
- 从 Python 调用由宿主支持的 runtime.tools 和 runtime.models;
- RLM 子级会继承持久化的 Python 控制平面,而 Standard 父级仍保留 Standard 子级;
- 原生 asyncio 任务和有界本地邮箱;
- 尽力而为的检查点,并强制发送中断通知;以及
- 每个存活的 RLM 智能体对应一个受管理的 Python 进程。

DSH 仍然负责服务商路由、权限、审批、会话、工具执行、子进程生命周期和外层智能体循环。RLM 插件把 Python 作为控制器的工作状态,并把嵌套操作路由回这些宿主服务。

目录结构

- project/python/ —— 经过测试的 Python 运行时、REPL、检查点存储和 JSONL 桥接。
- project/plugin/ —— Cordis bundle、RLM preset、原生工具和宿主回调分发器。
- research/ —— 设计决策和固定的 DSH 集成发现。

发布构建默认解析 DSH 的 npm latest,可在构建时用 DSH_VERSION 覆盖。发布版 0.1.2 捆绑 DSH 0.1.5-rc.3,并且订阅 0.9.4。RLM 宿主插件也已在开发版宿主 0.1.6-alpha.2 上测试过;那不是 0.1.2 里附带的宿主。
构建、安装和启动说明见 project/plugin/README.md。有界检查、任务可见性和活动单元格投递的实操示例,见 RLM runtime cookbook。
预览分享卡片长什么样 ↓tkellogg/dsh-rlm
分享 · DeepSeek Harness Hub
tkellogg/dsh-rlm

用常驻 Python REPL 处理超长上下文并派生子代理

这是你的仓库?认领条目

回到顶部