前言¶
在 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