前言¶
DSH 的插件機制可以把新增能力掛到運行流程中。對 LLM 流式響應來說,一個實際問題是:模型輸出按 token 粒度分片到達,單個 delta 可能看起來很短、很普通,但組合後可能包含控制字符、協議標記、異常腳本或垃圾關鍵詞。
dsh-llm-injection-filter 面向這個問題。它掛載在 llm/stream waterfall 上,在模型流式響應進入 agent 之前,對響應做檢測和處置,不改動任何運行時源碼。
這是什麼¶
下面介紹這個插件的基本定位。
- 插件名:
dsh-llm-injection-filter - 維護者:
XiaoYuOvO - 許可證:
MIT - 運行環境:
Node >=18 - 交付形態:動態插件 / npm 包,純 JS、無 import、無運行時依賴
- 作用範圍:掛載於
llm/streamwaterfall,對所有適配器生效 - 核心目標:檢測疑似提示詞注入 / 污染內容,並按配置處置
它通過 dsh.bundle.patch 自動加入 dsh.profile.bundles,安裝後隨 DSH 插件機制掛載。
核心功能¶
軌道 A:罕見腳本硬性阻斷¶
軌道 A 處理的是腳本層面的異常。
當模型輸出中出現不屬於允許腳本集合的 Unicode 字符時,插件會直接中斷。軌道 A 是最高優先級,命中時不做 strip / reject,直接中斷響應流。
默認允許腳本爲:
Latin
Han
Common
Inherited
Greek
也就是說,默認允許集合不含日文假名、韓文諺文、俄文西里爾等腳本。如果合法輸出包含這些腳本,會被軌道 A 硬阻斷。可以通過 allowedScripts 放行相應腳本。
maxScanLen 只約束軌道 B 的逐段掃描 / 替換,軌道 A 不設上限。
軌道 B:評分規則處置¶
軌道 B 基於評分規則處理內容。規則類型包括:
CTRL
PROTO
SCRIPT
KW
同時支持組合加成。觸發閾值爲 minScore,默認值爲:
100
軌道 B 的處置模式支持:
audit
strip
reject
其中有兩條限制:
KW永不單獨觸發;SCRIPT必須與至少一個PROTO/CTRL同現才計入總分。
reject 模式依賴 block-end 攜帶完整 arguments。在不發 block-end 的 delta-only 流中,tool-call 參數無法整塊改寫,此時僅審計。
審計與 WebUI¶
插件會輸出結構化審計日誌,規則類型爲:
HARD_BLOCK | CTRL | PROTO | SCRIPT | KW
攔截記錄不落盤,隨插件 fiber 輸出到結構化日誌通道,進程內環形緩衝受 maxRecords 限制。
WebUI 中可以在:
設置 → LLM 注入過濾器
進行查詢和配置調整。設置頁支持實時調整配置,改動即時生效,無需重啓。
需要注意,配置狀態持久化在 localStorage。Host 重啓後配置會回到默認值,需要在設置頁重新保存。
停止 / 卸載插件時,監聽器隨插件 fiber 自動清理,無定時器 / 全局訂閱殘留。
安裝與啓用¶
下面給出幾種安裝方式。
從 GitHub 默認分支安裝¶
dsh plugin --profile web add github:XiaoYuOvO/dsh-llm-injection-filter
按 tag 安裝¶
按 tag 安裝可以鎖定已驗證版本。
dsh plugin --profile web add github:XiaoYuOvO/dsh-llm-injection-filter#v1.1.0
本地 link 安裝¶
dsh plugin --profile web add "link:G:/DEEPSE~1/data/dsh/plugins/LLM-IN~1"
驗證安裝¶
安裝後執行:
dsh --profile web --dump-config
這一步用於確認插件已經進入當前 profile 的配置 / bundle 組合。
典型用法¶
安裝後,可以先打開 WebUI 設置頁查看配置。
設置 → LLM 注入過濾器
可以調整的配置項包括:
CFG.enabled
CFG.hardBlockRareScripts
CFG.allowedScripts
CFG.mode
CFG.minScore
CFG.applyToProviders
CFG.applyToModels
CFG.skipProviders
CFG.skipModels
CFG.maxRecords
CFG.extraKeywords
CFG.maxScanLen
CFG.maxSampleLen
CFG.recordMaxLen
常見調整路徑如下:
- 先確認
CFG.enabled是否開啓。 - 如果合法輸出包含日文、韓文、俄文等腳本,在
CFG.allowedScripts中追加相應腳本。 - 如果只想觀察不改輸出,把
CFG.mode設爲audit。 - 如果需要提高觸發門檻,調整
CFG.minScore。 - 如果只想檢查部分 provider / model,可以配置
CFG.applyToProviders、CFG.applyToModels。 - 如果需要跳過某些 provider / model,可以配置
CFG.skipProviders、CFG.skipModels。 - 在 WebUI 查詢最近攔截記錄,確認規則命中情況。
適用場景與注意¶
這個插件適合使用 DSH 的 LLM 流式響應,並希望在響應進入 agent 之前做一層安全過濾的用戶。
使用前需要注意:
- 插件以當前 DSH 進程權限運行,安裝前應檢查源碼與許可證。
- 軌道 A 的默認允許腳本比較嚴格,默認不含日文假名、韓文諺文、俄文西里爾等腳本。
- 軌道 B 只有總分達到
minScore纔會觸發。 KW不會單獨觸發,SCRIPT需要與PROTO/CTRL同現才計入。reject模式依賴完整arguments,對某些 delta-only 流只能審計。- 攔截記錄不落盤,只保留在進程內環形緩衝中,受
maxRecords限制。 - WebUI 配置保存在
localStorage,Host 重啓後需要重新保存配置。
結尾¶
dsh-llm-injection-filter 提供的是 DSH LLM 響應流層面的注入 / 污染過濾能力。它的核心是軌道 A 的罕見腳本硬阻斷,以及軌道 B 的評分規則處置,並配合結構化審計日誌和 WebUI 設置頁。
GitHub 倉庫地址:
https://github.com/XiaoYuOvO/dsh-llm-injection-filter
如需在 DSH 社區目錄查找,可搜索插件名:
dsh-llm-injection-filter