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)。

参考资源

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

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

小夜