Back to home@goldgish

dsh-gamepad-approval

Xbox 手柄硬件审批插件 for DeepSeek Harness (dsh) — Agent 高危工具调用需物理按键确认,A 批准 / B 驳回

Stars
0
Language
TypeScript
Created
Aug 30, 2026
Updated
Aug 30, 2026
GitHub repo

Introduction

🎮 dsh-gamepad-approval

让 AI 的每一个高危操作,都过你手柄这一关

Xbox 手柄硬件审批插件 · for DeepSeek Harness (dsh)

npm version npm downloads dsh plugin platform license


📖 这是什么

当 Agent 想执行 rm -rfgit push --force、格式化磁盘这类高危操作时——

你的手柄会震动两下,然后等你表态:

🟢 A 键🔴 B 键
批准,放行驳回,拒绝执行

审批信号走的是物理按键——不在键盘上,不在浏览器里,不在网络上。

键盘输入可以被键盘记录器窃取,屏幕点击可以被远程控制伪造, 但没有人能隔空按下你手里的手柄


⚡ 30 秒上手

dsh plugin --profile default add dsh-gamepad-approval

装完即生效。Agent 碰到高危命令 → 手柄震两下 → 你按 A 或 B,就这么简单。


🔐 为什么「物理审批」有效

攻击面传统软件审批手柄审批
键盘记录器❌ 可被记录✅ XInput 协议,不走键盘
远程桌面操控❌ 可被模拟点击✅ 需要物理按压
恶意脚本自动确认❌ 可伪造弹窗事件✅ 硬件层信号,无法注入
钓鱼 / UI 劫持❌ 可伪造界面✅ 震动来自你自己的手柄

设计哲学:fail-closed

无手柄、超时、断连、读不到输入——一律驳回。 宁可打断 Agent,绝不放过风险。


🛡️ 内置 18 条权限规则

覆盖常见高危操作,命中即触发手柄审批:

类别示例风险
文件删除rm -rfRemove-Itemdel /f🔴 critical
系统关机shutdownStop-Computer🔴 critical
磁盘操作formatdiskpartdd if=🔴 critical
系统配置reg addschtaskssystemctl🔴 critical
数据库破坏DROP TABLETRUNCATE🔴 critical
远程脚本执行curl … | sh🔴 critical
Git 破坏性操作push --forcereset --hard🟠 high
密钥访问cat *.pemecho $*_KEY🟠 high
防火墙iptablesnetsh firewall🟠 high
进程终止taskkill /fkill -9🟠 high
全局安装npm i -gchoco install🟡 medium
脚本执行npxnpm runbash -c🟡 medium

🧩 工作原理

flowchart LR
    A[🤖 Agent 发起 tool-call] --> B{命中高危规则?}
    B -- 否 --> E[✅ 直接放行]
    B -- 是 --> C[🎮 手柄震动两下]
    C --> D{等待物理按键}
    D -- A 键 --> F[✅ 批准<br/>委托 dsh 后续安全门]
    D -- B 键 / 超时 / 断连 --> G[🛑 驳回<br/>fail-closed]

插件挂载在 dsh 的 tools/pre-execute 管道上,通过 PowerShell 直连手柄(XInput),不经过浏览器或任何网络层

硬件批准只是「加一道门」——放行后仍会走 dsh 自带的全部安全策略,不会绕过其他防线。


⚙️ 配置

- insert:
  - id: gamepad-approval
    name: dsh-gamepad-approval
    config:
      timeoutSeconds: 120   # 等待手柄按键的超时秒数(超时即驳回)
      minRiskLevel: medium  # 触发审批的最低风险等级: low | medium | high | critical

嫌打扰太多?把 minRiskLevel 调成 high,只对真正危险的操作震动手柄。


❓ FAQ

Q: 必须是 Xbox 手柄吗? 任何 XInput 协议的 PC 手柄都可以——包括北通、飞智、八位堂等国产手柄的 Xbox 模式。

Q: 不插手柄会怎样? 高危操作会被直接驳回(fail-closed)。Agent 会收到明确的拒绝原因,普通操作不受影响。

Q: 和浏览器里的审批弹窗有什么区别? 弹窗跑在软件层,理论上可被同权限的恶意代码模拟;手柄按键是硬件信号,攻击者需要物理出现在你面前

Q: 和 trea-gamepad(MCP 版)什么关系? 同一个创意的两个实现:trea-gamepad 面向 Trae(MCP 协议),本插件面向 dsh(cordis 插件体系),核心逻辑与手柄脚本完全一致。


📄 License

MIT © goldgish

如果这个项目有意思,欢迎点一个 ⭐ Star