dsh-gamepad-approval
v0.1.4
Published
Xbox 手柄硬件审批 dsh 插件 — Agent 高危工具调用需物理按键确认(A 批准 / B 驳回)
Downloads
211
Maintainers
Readme
dsh-gamepad-approval
Xbox 手柄硬件审批插件 for DeepSeek Harness (dsh)
Agent 执行高危工具调用时必须通过物理按键确认:手柄震动两下提醒,A 键批准 / B 键驳回。审批决策物理隔离,远程攻击无法模拟。
与 trea-gamepad (MCP 版) 功能相同,本插件运行在 dsh 的
tools/pre-execute管道内。
特性
- 物理隔离 — 审批决策必须通过 Xbox 手柄按键(XInput 直连,不经过浏览器)
- fail-closed — 无手柄 / 超时 / 断连 / 读不到输入时一律驳回
- 只加门不拆门 — 硬件批准后仍委托 dsh 后续安全门(
next()),不会绕过其他策略 - 18 条权限规则 — 覆盖文件删除、系统命令、防火墙、磁盘、git 破坏性操作、密钥访问等
- 可配置风险阈值 —
minRiskLevel控制触发审批的最低风险等级 - 取消感知 — 工具调用被中止时立即终止等待,不挂起
前提条件
- Windows 系统
- dsh ≥ 0.1.0-rc.8
- Xbox 兼容手柄(XInput 协议,大多数 PC 手柄都支持)
安装
dsh plugin --profile default add dsh-gamepad-approval或从本地目录安装(开发模式):
dsh plugin --profile default add ./dsh-plugin使用流程
- 插件加载时自动探测手柄(日志中会显示连接状态)
- Agent 发起高危工具调用(如
rm -rf、git push --force)时:- 手柄震动两下提醒
- 按 A 键批准(升调"叮-叮↑")/ 按 B 键驳回(降调"咚-咚↓")
- 超时(默认 120 秒)自动驳回
配置
在 dsh 的 cordis.yml 或 patch 中:
- insert:
- id: gamepad-approval
name: dsh-gamepad-approval
config:
timeoutSeconds: 120 # 等待手柄按键的超时秒数
minRiskLevel: medium # 触发审批的最低风险等级: low | medium | high | critical权限规则覆盖
| 类别 | 示例 | 风险 |
|------|------|------|
| 文件删除 | rm -rf, Remove-Item, del /f | critical |
| 系统关机 | shutdown, Stop-Computer | critical |
| 磁盘操作 | format, diskpart, dd if= | critical |
| 系统配置 | reg add, schtasks, systemctl | critical |
| 数据库破坏 | DROP TABLE, TRUNCATE | critical |
| 远程脚本执行 | curl ... | sh | critical |
| Git 破坏性 | push --force, reset --hard | high |
| 密钥访问 | cat *.pem, echo $*_KEY | high |
| 防火墙 | iptables, netsh firewall | high |
| 进程终止 | taskkill /f, kill -9 | high |
| 全局安装 | npm i -g, choco install | medium |
| 脚本执行 | npx, npm run, bash -c | medium |
技术实现
插件监听 dsh 工具管道的 tools/pre-execute waterfall 事件:
模型发起 tool-call
→ tools/pre-execute(本插件)
命中规则 → PowerShell XInput 直连手柄:震动 + 等待 A/B
A 键 → next()(委托后续安全门后放行)
其他 → deny(fail-closed)
→ dsh 原有 guard / execute / post-execute 管道License
MIT
