dsh-prime-agent:DeepSeek Harness 的持久 TypeScript REPL 插件

前言

DSH 的插件模型中,普通会话通常继续使用官方 one-shot 语义:一次工具调用处理一次任务,多次调用之间不容易保留顶层变量、函数和对象。dsh-prime-agent 为选中 Prime preset 的会话提供另一个入口:只有一个模型可见工具 repl,唯一参数是 { code },执行一个持久 TypeScript REPL cell。上一个 cell 声明的普通变量、函数和对象,在下一个 cell 中可以直接使用;DSH 的其他工具不进入模型 schema,而是作为 toolsagentsjobs 绑定预加载进 cell。

这个插件由 yoke233 维护,GitHub 地址为 https://github.com/yoke233/dsh-prime-agent,目录页地址为 https://www.skillhub.cn/plugins/yoke233/dsh-prime-agent

这是什么

dsh-prime-agent 是面向 DeepSeek Harness 的 RLM-first 控制面。它面向 DSH 的插件和会话模型,为选中 Prime preset 的会话提供一个持久的 TypeScript REPL 工具。

核心变化是:

  • 模型可见工具收敛为 repl
  • repl 的唯一参数是 { code }
  • 每次调用执行一个持久 TypeScript REPL cell。
  • 上一 cell 声明的普通变量、函数和对象,下一 cell 可以直接使用。
  • DSH 的其他工具不进入模型 schema,而是作为 toolsagentsjobs 绑定预加载进 cell。
  • 非 Prime 会话继续使用官方 one-shot 语义。
  • 官方 code-runtime row 原样保留,新增 dsh-prime-agent/runtime host row。

核心能力

持久 TypeScript REPL cell

Prime preset 会话中,模型只需要调用一个工具:

repl({ code: `...` })

每次调用都会执行一个持久 TypeScript REPL cell。上一 cell 声明的普通变量、函数和对象,在下一 cell 中仍然可以继续使用。

其他 DSH 工具进入 cell 预加载

DSH 的其他工具不直接进入模型 schema。插件把相关能力作为 toolsagentsjobs 绑定预加载进 cell。

已核实的能力包括:

  • agents.*spawnforklistsendinterrupt
  • jobs.*listoutputkill
  • Profile 显式安装的 DSH Host MCP client 会把 server tools 注册进统一 catalog,repl 单元自动获得对应 tools.* 绑定。

直接调用其他工具会被 guard 拒绝。这些能力应以 cell 内预加载绑定的形式出现。

本地组合能力

插件注册本地组合能力:

tools.apply_patch({ patch })

它用于处理相关的多 hunk、多文件变更。

官方持久 Terminal

Prime preset 挂载 DSH 官方持久 Terminal:

  • POSIX 使用 Bash
  • Windows 使用 PowerShell

工具结果呈现

工具结果配置 12KB best-effort spill 阈值。模型看到的是无类型外壳的 notebook 文本。

成功的非 undefined completion 会自动保留在 generation-local 单槽中,并可通过 $_ 访问。

持久任务文件

持久任务文件用于承载:

  • 大型输入。
  • 重要结果。
  • 跨重启检查点。

Realm 是 live-only 的:aborttimeoutOOM 会 hard-kill Worker 并丢失 namespace。跨重启需要保留的状态,应由程序显式写入持久任务文件。

refine

refine 用于稳定路由与行为经验,具备:

  • 证据化。
  • 乐观并发。
  • 事务历史。
  • 安全回滚。

多 TUI 进程共享

多个 TUI 进程可以共享 Prime 持久状态,并同时运行不同 Session。

同一 Session 的 live Realm 同时只允许一个进程持有。owner 退出后,另一进程以空 namespace 接管。

安装与启用

插件以当前 dsh 进程权限运行。安装前应检查源码与许可证。已核实资料未给出具体许可证类型,package.jsonfiles 列表中包含 LICENSE

Web profile 安装

先做依赖安装和检查,再添加插件:

npm install
npm run check:all
dsh plugin --profile web add ./dsh-prime-agent https://github.com/yoke233/dsh-tool-monitor/archive/9b6aac3701560309ac4e3befcf646a1eca920e77.tar.gz

这一步会完成依赖安装、运行 check:all,并在 web profile 中添加本地 dsh-prime-agent 以及指定的 dsh-tool-monitor 归档。

TUI profile 安装

TUI 场景下,先执行 npm pack,再把生成的 $primePackage 传给 dsh plugin --profile tui add

npm pack
dsh plugin --profile tui add $primePackage https://github.com/yoke233/dsh-tool-monitor/archive/9b6aac3701560309ac4e3befcf646a1eca920e77.tar.gz

安装后用配置转储核验组合结果:

dsh --profile tui --dump-config

确认组合结果中存在:

  • agent-presets
  • prime-code-runtime
  • monitor-jobs
  • tool-monitor
  • 官方 tool-subagent-report
  • tui

然后运行:

dsh --profile tui

Headless 运行

当前 DSH headless bundle 不会挂载 agent preset。因此 headless 场景需要同时安装仓库内的 prime-headless-shim,并在 headless profile 中启用 Prime preset。

已核实资料中后续完整命令不完整,这里不展开完整安装步骤。若需要 headless 运行,应使用隔离的 DSH_HOME,避免影响日常 profile。

典型用法

下面的示例展示同一个会话中的两次 repl 调用。第一次 cell 建立 lookupreview,第二次 cell 复用它们。

repl({ code: `
const lookup = new Map(records.map(item => [item.id, item]))
const review = async (id) => tools.review_item({ item: lookup.get(id) })
lookup.size
` })

下一次调用继续复用同一个持久 cell 状态:

repl({ code: `await review('a') // Map 和函数都还活着` })

使用 repl 时注意:

  • 工具参数使用 TypeScript 对象字面量。
  • 完整 cell 会在执行前解析。
  • 语法失败不会执行其中任何代码或 tool call。
  • 语法失败后应修正并重试。
  • 不要对 tools.* 返回值盲目再次 JSON.parse

状态与生命周期

状态层 用途 保留边界
Realm live namespace 普通顶层变量、函数、对象、Map 和索引 同一 Worker 内的 cell 间保留;hard kill 后丢失
Latest completion 最新非 undefined cell 结果,经 $_ 访问 下一个非 undefined completion 会替换;hard kill 或 generation 换代后丢失
持久任务文件 大型输入、重要结果与跨重启检查点 由文件系统承载,进程重启后仍可恢复
refine 稳定路由与行为经验 证据化、乐观并发、事务历史和安全回滚

运行边界与注意

  • Prime preset 会话只有一个模型可见工具 repl
  • 非 Prime 会话继续使用官方 one-shot 语义。
  • 路由依赖可信 exec.agent.id。插件从共享 realm-identity 存储解析稳定的不透明 Realm id,并交给 host 侧 ctx.primeRealmRuntime.run(...)
  • 缺少可信执行上下文或无法解析 Realm id 时明确失败,绝不降级。
  • 直接调用其他工具会被 guard 拒绝。
  • Prime preset 不挂载 DSH Plan Mode。
  • Compaction 保持 DSH 默认策略。
  • Host runtime 会监控启动它的直接父进程。Windows 父 shell 被强制终止,或 macOS/POSIX 子进程被重新托管时,插件会释放整个 Cordis tree、Realm Worker 与该进程持有的 Realm leases,随后退出。
  • 它面向前台 dsh 生命周期,不支持把宿主有意脱离父进程作为 daemon 运行。
  • 已核实资料未提供星标数量和分类字段;具体许可证类型资料不足,只能确认 package.jsonfiles 列表包含 LICENSE

结尾

dsh-prime-agent 的价值在于把 DeepSeek Harness 的会话工具调用收拢到一个持久 TypeScript REPL cell 中:模型通过唯一的 repl 工具编写连续程序,复用顶层状态,调用预加载的 toolsagentsjobs,并把需要跨重启保留的内容写入持久任务文件。

目录页:https://www.skillhub.cn/plugins/yoke233/dsh-prime-agent

GitHub:https://github.com/yoke233/dsh-prime-agent

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜