dsh-dream-rsi:在 DeepSeek Harness 中做 replay 驱动的探索策略实验

前言

在 DeepSeek Harness(DSH)里做 coding agent 时,常见做法是固定一套探索顺序或手工调参,很难系统化地比较「这一轮该先扩哪条分支、下一轮策略该怎么改」。Dream-RSI 一类思路强调从已生成的发现树出发,用 replay 评估策略、再修订参数形成闭环;若要在 Harness 里试这类流程,需要插件把 agent、工具和状态目录接好。

下面介绍社区插件 dsh-dream-rsi(维护者 CharlesXu-HQ,SkillHub 分类为工作流):在 DSH 中注册 coding agent 与策略修订 agent,并通过工具 dream_rsi_cycle 执行一轮「复制候选 → 探索与评测 → 冻结树 → prefix-only replay → 修订策略 → 晋级策略」的实验循环。它是独立 TypeScript / Cordis 插件,不依赖 Pi、也不要求 DGX Spark,仍依赖已安装的 DeepSeek Harness。

这是什么

  • 仓库: CharlesXu-HQ/dsh-dream-rsi
  • 目录页: SkillHub 插件页
  • 版本(package.json):0.1.0,MIT 许可证;README 标明为非官方社区实现,不代表 DeepSeek 或 Dream-RSI 论文作者。
  • 定位:Experimental replay-based exploration-policy plugin for DeepSeek Harness——用 replay 在历史发现树上比较策略,并受限地修订线性排序类策略参数,而非完整复现论文中任意可执行策略代码。

每次调用 dream_rsi_cycle 执行一个循环:从种子工作区复制候选 → agent 探索并由固定 evaluator 评分 → 冻结 discovery tree → 对历史全部树做 prefix-only replay → agent 修订策略参数 → 将 replay 平均分最高的策略用于下一轮;当前策略也参与比较,因此在已记录历史树上的 replay 分数不会下降——这不是新任务上的性能保证。

核心功能

插件通过 ctx.agents 创建固定的 coding agent 和策略修订 agent,通过 ctx.tools 暴露 dream_rsi_cycle。

  1. 在线探索:策略 agent 只看到已生成节点;合法父节点为根或当前叶子,每轮最多 maxWidth 个候选。工作区从父节点快照复制,同一轮候选可并行运行。
  2. Prefix-only replay:从仅含根的前缀开始;叶子打开其唯一历史子节点,根打开最早尚未揭示的历史子节点。此阶段不调用 coding agent 或 evaluator。得分为 bestScore - beta1 × N + beta2 × N / max(1, rounds)。
  3. 策略修订:目前是受限的线性排序程序参数(根/分数/深度/年龄权重、batch 大小、停滞轮数等),用于检验「改进探索策略」的闭环,不能表达复杂策略结构。
  4. 状态持久化:stateDir/state.json 保存 world pool 与当前策略;每个 cycle-* 目录保存根与子节点工作区。stateDir 必须与 seedDir 分离且互不包含。

安装与启用

需要 Node.js 22.19+ 和已安装的 DeepSeek Harness CLI。仓库声明了 dsh.bundle 与 cordis.patch.yml,可作为插件包装入 Web profile。在插件源码根目录执行构建、测试并加入 Web profile:

npm install
npm test
dsh plugin --profile web add .
dsh --profile web --dump-config

独立安装包发布后可用 dsh plugin --profile web add dsh-dream-rsi;目前尚未发布到 npm。

安装后,在任务 patch 中配置目标工作区与固定评测器,将 /ABS/PATH 换为真实绝对路径:

- id: dream-rsi
  config:
    seedDir: '/ABS/PATH/dsh-dream-rsi/examples/toy/seed'
    stateDir: '/ABS/PATH/dsh-dream-rsi/.dream-rsi-state'
    taskPrompt: 'Edit candidate.json so value approaches 42.'
    evaluatorCommand:
      - node
      - '/ABS/PATH/dsh-dream-rsi/examples/toy/evaluate.mjs'
    provider: deepseek
    model: deepseek-chat
    maxRounds: 5
    replayRounds: 10
    maxWidth: 2
    revisions: 2
    beta1: 0.01
    beta2: 0.01

运行:

dsh web --patch /ABS/PATH/my-task.patch.yml

在会话中要求 agent 调用 dream_rsi_cycle。未配置任务时插件可加载,但调用工具会报缺少配置。所选 profile 还须具备 coding agent 所需的文件编辑工具与模型凭据。

Evaluator 约定:命令在候选工作区下运行,最后一个参数为该工作区绝对路径;须从 stdout 输出 JSON,例如 {"score": 0.8, "feedback": "tests passed"}。评测器固定,不能被策略 agent 改写。

质量检查:npm test 覆盖在线树、prefix-only replay、非法动作与策略晋级语义;npm run check 做类型检查。示例可单独运行 node examples/toy/evaluate.mjs examples/toy/seed 验证。

典型用法

经过上面的配置,一次 Web 会话中的典型路径是:启动带 patch 的 dsh web → 在对话里让 agent 调用 dream_rsi_cycle → 插件按轮次写入 stateDir 与 cycle-* 工作区 → 根据 replay 结果晋级策略,进入下一轮循环(受 maxRounds、replayRounds 等配置约束)。

Toy 示例的 seedDir 与 evaluate.mjs 在仓库 examples/toy 下,适合先验证 evaluator 与路径是否正确,再换成自己的种子目录与评测命令。

适用场景与注意

适合:已在 DSH Web profile 下跑 coding agent、希望实验「发现树 + replay 评分 + 策略参数修订」工作流的研究或集成开发者;需要可重复的 stateDir 与固定 evaluator 的场景。

边界与风险(来自 README):

  • 尚无论文领域适配、原始超参数/提示词、外部 holdout 评测和大规模实验结果;未宣称复现论文收益。
  • evaluatorCommand 在宿主机运行,插件不提供安全沙箱。只应在可信工作区、可信评测命令和已隔离的 Harness 环境中使用;不要将模型生成的策略代码直接 eval 或加载到宿主进程。
  • 安装插件前建议阅读源码与 MIT 许可证;插件以当前 dsh 进程权限运行。SkillHub 为社区目录站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-dream-rsi 把 Dream-RSI 思路里「探索—冻结—replay—改策略」的一轮循环接到 DSH 的 agent 与工具面上,适合在可控 toy 或自有任务上验证闭环,再决定是否扩展 evaluator 与策略参数空间。进一步发布与会话验证步骤见仓库 docs/release.md。

  • 目录页:https://www.skillhub.cn/plugins/CharlesXu-HQ/dsh-dream-rsi
  • GitHub:https://github.com/CharlesXu-HQ/dsh-dream-rsi
羽毛球分组比赛记分
小程序二维码

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

Xiaoye