前言¶
在 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 起不再使用共通的pluginkind)。
安装与启用¶
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