dsh-lesson-loop:DSH 会话中的自演化规则循环

前言

在使用 DeepSeek Harness(DSH)进行智能体开发时,模型会因配置不当、意图偏差或安全边界问题反复产生相同的错误。修复这些问题通常需要人工介入:先找出错误场景,整理成规则,再手动配置到模型中。随着项目演进,这类规则会越来越多,手动维护的成本也随之上升。

DSH 的插件体系允许通过 lessonLoop 服务收集各类报告(如拒绝、失败、人工点踩),将它们聚合成候选规则卡片,由人工确认后重新注入到新会话中。dsh-lesson-loop 插件实现了这个闭环:提供统一的「课程总线」,让报告不再散落在各个插件中,并提供规则卡片的人机交互界面。

插件定位

dsh-lesson-loop 是 DSH 的一个插件,由维护者 JayYuen666 开发。它不提供任何模型工具或 HTTP 路由,而是作为 DSH 生态中「课程总线」的中间件,接收其他插件(如安全守护、质量门禁、会话救援)的报告,将其聚合成规则卡片,并支持人工确认、降级、归档等操作。

核心价值在于:将一次性的错误处理过程固化为可复用的规则,并在后续会话中自动注入,减少重复排查成本。

核心功能

统一的「课程总线」

插件通过可选的 lessonLoop 服务接收报告。其他插件只需调用该服务,将报告发送到事件流中;未安装本插件的 profile 不会影响这些插件运行,只是丢弃报告。

插件提供两个部分:
- 主机端:提供 lessonLoop 服务
- 客户端:渲染 Web 卡片,展示规则审核台和开关

规则收集与聚合

每个报告追加一行到事件流,按 (project, category, signature) 键合并到候选卡片。当满足 promoteThreshold 条件时,该卡片标记为待审核。

人机确认的规则注入

只有人类可以执行 arm 操作,将规则状态设为 armed(就绪)。机器不会自动提升规则。规则一旦确认,会在每个项目的根会话启动时,将所有 armed 规则的完整文本注入到 agent/created 端点,供模型使用。

统计与衰减

规则卡片维护三个计数器:
- violation:场景触发且被违反的次数
- suppressed:场景触发但遵守的次数(由 pass 触发)
- samples:规则存在且未被违反的次数(会话曝光,不计入分母)

唯一的比率是 violation / (violation + suppressed),samples 仅用于判断是否满足降级所需的样本数。

降级与归档

当满足降级条件时,可通过 reject、demote、archive、edit、revive 等操作管理规则状态。降级需要同时满足:
- suppressed 为正
- violation 达到 demoteThreshold
- 样本数达到 demoteMinSamples
- 比率在 demoteRatio 以下

对于从未有过合规命中且持续触发的场景,插件无法判断其有效性,保持 armed 状态,等待人工处理。

安装与启用

安装命令如下:

dsh plugin --profile web add @jayyuen66/dsh-lesson-loop

卸载时使用:

dsh plugin --profile web remove @jayyuen66/dsh-lesson-loop

插件发布在公共 npm 仓库,安装无需凭证。

环境要求

  • Node.js >= 22.12
  • DSH 版本 >= 0.2.1-rc.3

插件在 package.json 中声明了 engines.dsh 字段(^0.2.1-rc.3),由 DSH 主机自行决定兼容性。实测 0.2.0-rc.2 和 0.2.1-rc.1 会被拒绝,0.2.1-rc.3 和 0.2.2 通过,0.3.0 被拒绝。

版本兼容注意

如果 profile 中通过 pnpm 的 overrides 锁定了 @jayyuen66/dsh-plugin-shared,该版本号必须大于等于本插件声明的版本。否则运行时会报告导出未激活或缺少导出名称。

验证插件运行

确认插件已正确加载,可以通过以下步骤:

  1. 检查配置加载
    运行 dsh --profile web --dump-config,在输出末尾应看到:
   # == @jayyuen66/dsh-lesson-loop
   - id: lesson-loop

该命令会修改 profile 的根组装文件,需注意同时检查 stdout 和 stderr,因为未匹配的补丁目标只会出现在 stderr。

  1. 检查卡片渲染
    在 DSH 的 Web 界面中,规则审核卡片的头部应显示当前候选规则、已就绪规则的数量等实时数据。

数据与隐私

插件的数据平面使用 DSH 官方的 Typert Remote 命名空间 lessonLoopRules,通过主机 /api 网关访问。插件本身不直接暴露 HTTP 路由,也不向外部发送数据。

已知边界

  • 插件不提供任何模型工具或 HTTP 路由。
  • 子会话不会接收 armed 规则的注入,仅根会话接收。
  • samples 计数对同一会话只计一次,即使会话被恢复也不会重复统计。

适用场景

适合需要长期维护规则库、希望从错误中自动沉淀经验的 DSH 项目。特别是涉及安全守护、质量门禁、会话救援等需要持续优化的场景。

注意事项

  • 插件以当前 DSH 进程的权限运行,安装前建议查看源码与许可证。
  • 插件依赖 @jayyuen66/dsh-plugin-shared 的特定版本,若 profile 中已有锁定的 overrides,需确保版本兼容。

结语

dsh-lesson-loop 将 DSH 生态中的各类报告转化为可确认的规则,并通过「课程总线」实现统一管理。人工确认后的规则会在新会话中自动注入,形成从错误到经验的闭环。插件本身轻量,不引入额外模型工具或 HTTP 路由,适合希望构建自演化规则库的项目。

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

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

Xiaoye