dsh-prompt-antivirus:DeepSeek Harness 全局防提示注入插件

前言

提示注入是 LLM 智能體的核心弱點:模型分不清「指令」與「數據」。藏在網頁檢索結果、文件內容、[CRON TASK] / [SCHEDULE REMINDER] 等文本里的惡意指令,可以悄悄改寫行爲、外傳數據或執行破壞性操作,即「上下文病毒感染」。

dsh-prompt-antivirus 是一個全局防提示注入/上下文病毒感染插件。它在數據進入模型前後各加一道防線,覆蓋 dsh 全部預設與子代理。插件由 QinpanWan 維護,遵循 MIT 許可證,純 JS 實現,無原生依賴。

核心功能

插件在四個關鍵節點掛載攔截邏輯:

  1. 工具參數掃描 (tools/pre-execute)

    • 掃描工具調用參數中的惡意指令。
    • 高危命中直接 deny。
    • 高危 + 危險工具(如 send_email / apply_patch / delete_*)觸發 ask(人工審批)。
  2. 工具結果掃描 (tools/post-execute)

    • 掃描工具返回結果中的惡意內容。
    • block 模式下將結果轉爲錯誤狀態。
    • quarantine 模式下替換命中片段。
  3. 進入模型前消息掃描 (agent/pre-step)

    • 掃描即將發送給模型的提示詞。
    • 高危消息進入前進行隔離或替換。
    • 每會話注入一次「金絲雀守衛」消息。
  4. 出站文本消毒 (llm/stream)

    • 掃描模型生成的回覆。
    • 命中金絲雀守衛時中斷輸出(block 模式)。
    • 替換出站文本中的惡意片段。

防禦模式

插件提供三種運行模式,默認爲 quarantine:

  • quarantine(隔離模式)
    • 行爲:可原地改寫的路徑(工具結果 / 消息 / 出站文本)會替換命中片段;工具參數無法原地改寫,直接拒絕並說明。
  • block(阻斷模式)
    • 行爲:同隔離模式,另加「金絲雀命中即中斷輸出」與更嚴格的拒絕策略。
  • monitor(監控模式)
    • 行爲:只記錄審計日誌,不干預執行。

可演進簽名庫

簽名庫不寫死在代碼裏,而是磁盤化存儲,支持熱更新。

  • 存儲路徑:默認 rules/virus-signatures.(可通過環境變量 PROMPT_ANTIVIRUS_RULES_PATH 覆蓋)。
  • 自動初始化:首次啓動自動落盤默認庫。
  • 維護命令:
    • _antivirus_learn <sample> [category]:把漏網攻擊樣本提煉成簽名並持久化。
    • _antivirus_rules_export:導出當前病毒庫爲 JSON 字符串,用於共享。
    • _antivirus_rules_import <rules>:合併外部病毒庫(按正則源去重)。
    • _antivirus_status:查看當前配置與最近 20 條審計。

安裝與啓用

使用官方命令安裝插件,隨後重啓 dsh web 使配置生效。

dsh plugin --profile web add github:QinpanWan/dsh-prompt-antivirus

安裝完成後,重啓 dsh web。啓動日誌中應出現 [prompt-antivirus] 已加載。插件掛載在 profile 層,對所有預設與子代理全局生效。

典型用法

  • 掃描文本:
    _antivirus_scan "some input"
  • 學習攻擊樣本:
    _antivirus_learn "malicious sample" "attack_type"
  • 查看狀態:
    _antivirus_status
  • 導出/導入病毒庫:
    _antivirus_rules_export
    _antivirus_rules_import <rules>

注意事項與侷限

  • 侷限性:簽名掃描本質是「打地鼠」,能可靠命中已知措辭,但改寫後的攻擊可能漏過。請配合最小權限工具集與危險操作人工確認(高危 + 危險工具默認走審批通道)。
  • 審計日誌:默認落盤至 ~/.dsh/task-board/prompt-antivirus-audit.l。
  • 依賴:依賴 @deepseek-ai/dsh-tools 和 @deepseek-ai/dsh-llm(peerDependencies)。

參考資源

羽毛球分组比赛记分
小程序二维码

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

小夜