DSH Command Quarantine

August 15, 2026 · View on GitHub

背景

Agent 直接执行命令存在真实风险:

  • 命令写错可能导致误删、误覆盖
  • 通配符展开错误可能影响比预期更大的范围
  • 模型可能被 prompt injection 诱导执行恶意命令

本项目在 Agent 与命令行工具之间增加一层强制隔离,让命令不能直接执行,必须先经过审查。

核心目标

  • 命令文本的唯一来源是隔离区
  • 执行器只接受 command_id,不接受调用方传入的命令字符串
  • 审查子 Agent 没有任意执行能力
  • 所有命令执行过程完整审计

架构

Agent 想执行命令
  → submit_command 写入隔离区
  → request_review 审查
  → APPROVED:自动执行
  → RISKY:弹窗人工确认
  → REJECTED:返回理由

组成

Host 半

运行在 DSH 服务器进程,负责:

  • 拦截命令工具
  • 管理隔离区文件
  • 确定性审查
  • 派发 LLM 审查员
  • 执行命令
  • 写审计日志

Client 半

运行在浏览器,负责:

  • 设置卡片 UI
  • CQ 审计页签
  • 人工审批弹窗

隔离区

每条命令一个目录,保存:

  • 命令原文
  • 元数据
  • 审查结论
  • 执行审计
  • 标准输出/错误

审查

  • 确定性审查:语法检查 + 静态危险规则
  • 可选 LLM 审查:
    • 普通审查员:判断命令作用与危险程度
    • 项目审查员:额外分析对项目的影响
  • 危险命令统一弹窗人工确认

范围

本插件只隔离命令行执行,不接管 DSH 自带的 write / edit 文件工具;文件读写空间由 DSH 权限沙箱负责。