interval-injector:Periodically inject context into conversations at fixed steps or time intervals.

前言

在 DSH / Cordis 里跑 agent 时,system prompt 每轮都会重送,但它始终固定在整段对话的最前面。对话一长,后面的 user / assistant 内容会把前面的指示「挤」到注意力边缘,模型更容易偏离最初约束。常见补救是缩短会话、手动粘贴提醒,或把规则写进每轮 user 消息——要么打断工作流,要么维护成本高。

interval-injector 是维护者 rainfishs 发布的通用注入器:在 agent 运行过程中,按「步数」或「时间间隔」(先到先触发)把一段可配置文字,以 user 角色插入对话历史,并尽量靠近即将生成的模型回答位置。换 text 即可换用途,不绑定某一种业务场景。

这是什么

interval-injector(仓库 rainfishs/dsh-interval-injector)面向 DSH 0.2 及以上与 Cordis agent 插件体系。它解决的是长对话里 system 指示被稀释的问题,用周期性 user 消息把同一段上下文重新推到模型附近。

套件在 package.json 中声明 dsh.bundle.patch,安装后成为 profile 上的一层组合包:cordis.patch.yml 会插入 interval-injector 一行,所有 session 都会生效。0.1 时代需挂在 agent preset 的 row;0.2 起安装完即生效,不必再手改 preset。

当前 package 版本为 0.2.0,许可证 MIT,运行时要求 Node ^22.19.0 || >=24.0.0。

核心功能

下面介绍插件在资料中明确描述的行为。

触发条件

  • everyNSteps:每隔若干个「进入步数」注入一次;设为 0 表示关闭该条件。
  • refreshIntervalMs:距上次注入超过指定毫秒数则注入;设为 0 表示关闭该条件。
  • 两个条件哪个先到就先注入一次;若两者均为 0,整支插件等效关闭。

注入方式

  • 监听 agent/pre-step(waterfall),在 next() 之后把消息接在尾端,并以 { prepend: true } 注册,排在最靠近模型回答的位置。
  • 注入内容来自 config.text;空字符串时插件不作用。
  • 空回合与被拒绝的回合不注入,避免无请求却多出一条 user 消息。
  • 每个 agent 用 WeakMap 单独计数,session 结束可回收;停用插件时监听随 fiber 移除。
  • 零依赖:消息结构自行构建(randomUUID + 递归冻结),纯 JS,无需 build。
  • 消息 source 使用 { kind: 'interval-injector', form: 'notice', summary }(0.2 起不再使用共通的 plugin kind)。

安装与启用

DSH 0.2 以上在目标 profile 下执行:

dsh plugin --profile web add github:rainfishs/dsh-interval-injector

将 --profile 后的 web 换成你要挂载的 profile 名。也可在 GUI 插件页粘贴 https://github.com/rainfishs/dsh-interval-injector,或本机绝对路径安装。

安装后由组合包 patch 生效,无需再在 preset 里单独挂 row。

配置说明

插件自带的 row 没有内置 config;文字与节奏属于部署侧,应在 profile 自己的 cordis.patch.yml 里覆盖同一行。注意:config 是整块取代,不是深度合并,覆盖时必须写全需要的字段。

- id: interval-injector
  name: interval-injector
  config:
    everyNSteps: 20
    refreshIntervalMs: 1800000
    text: |
      (想定期重贴的内容)
字段 默认 说明
text (必填) 每次注入的文字;空字符串则插件不作用。
everyNSteps 12 每隔几个「进入步数」注入一次;0 关闭。
refreshIntervalMs 600000 距上次注入超过的毫秒数;0 关闭。
summary 定期注入 对话列表收合时的单行说明。

典型用法

1、确定要在长会话中反复提醒模型的内容(规范、任务摘要、工具约束等),写入 text 多行字符串。

2、按会话密度选 everyNSteps:交互频繁时可设小一些;若更关心「多久没提醒就补一次」,调大 refreshIntervalMs(例如 README 示例中的 1800000,即 30 分钟)。

3、保存 profile 的 cordis.patch.yml 后重启或按你的 DSH 流程 reload,新开或继续 session 观察对话列是否出现带 summary 的注入条目。

用途完全由 text 决定:同一插件可充当「定期重申 system 要点」「滚动任务清单」等,资料未限定单一场景。

适用场景与注意

适合需要在不结束 session 的前提下,周期性把同一段上下文推回模型附近的 DSH / Cordis 开发者。不适合期望改 system prompt 位置或做一次性注入的场景——本插件刻意把内容做成 user 消息插在历史中间。

安装前请自行查看 GitHub 源码与 MIT 许可证。插件以当前 DSH 进程的权限运行,注入内容会进入对话历史并参与后续推理,请勿在 text 中放入 secrets 或未审核的第三方指令。

DSH 生态强调「一切皆插件」;社区目录 SkillHub 插件页 为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

interval-injector 用步数与时间双轨触发,把可配置文字定期插入对话、靠近模型输出位置,缓解长对话里指示被稀释的问题。细节与更新以仓库 README 为准。

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

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

Xiaoye