gsudo — AI Agent 图形化提权前端
零依赖、跨平台的 GUI 提权代理,让 AI Coding Agent 在后台安全执行特权命令。
解决什么问题
AI Agent 在非 root 终端中运行时,sudo 需要交互式 tty 输入密码——但 Agent 的 subprocess 环境里没有 tty。结果:命令失败、Agent 卡死或产生幻觉。
gsudo 在 Agent 和系统之间插入一个 GUI 确认层:Agent 调用 gsudo,用户通过图形窗口确认并输入密码,命令以 root 执行,输出返回 Agent。
核心设计
stdout/stderr 分离
stdout → 命令原始输出(Agent 可直接 parse)
stderr → gsudo 横幅 + 状态(给人看的)
Agent 调用 gsudo whoami,capture_output=True 拿到的 stdout 就是 root。不需要正则解析包装文本。
为什么自绘 Tkinter 而不是用 pkexec
| gsudo (sudo -S + Tkinter) | pkexec | |
|---|---|---|
| 命令预览 | ✅ 完整展示命令和 AI 生成的原因 | ❌ 不可定制 |
| 跨平台 | ✅ Linux/macOS/Windows | ❌ Linux only |
| 环境变量 | ✅ 完整保留 | ❌ 严格清理 |
| 依赖 | 零(Python stdlib) | 需安装 PolicyKit |
sudo -S 从 stdin 管道读密码,subprocess.run 直接传。不需要 root 权限运行 gsudo 本身。
跨平台自适应
| Linux | macOS | Windows | |
|---|---|---|---|
| 提权机制 | sudo -S | sudo -S | Start-Process -Verb RunAs |
| GUI 交互 | 密码框 | 密码框 | 确认按钮 |
| 系统弹窗 | 无 | 无 | UAC(安全桌面,不可绕过) |
| 密码 | ✅ | ✅ | ❌(UAC 设计为意图确认,非身份验证) |
Windows 上 PowerShell 命令通过 base64 编码传递,防止注入。
多实例并发
不加全局锁。几个 Agent 同时需要提权,就同时弹窗——用户自己决定先处理哪个。锁反而让后面的实例在终端里卡住不动。
不缓存密码
sudo 有自己的 timestamp,gsudo 不做额外缓存。提权操作每次都应该让用户确认。
技术栈
- Python 3.6+
- Tkinter (ttk) — 标准库,零安装
- Linux/macOS:
sudo -Sstdin 密码管道 - Windows: PowerShell + base64 编码 → UAC
快速开始
# 依赖(Linux only)
# 安装
# 作为 Agent Skill 注册
验证状态
| 平台 | 状态 |
|---|---|
| Linux | ✅ 实机测试通过 |
| macOS | ❌ 无设备 |
| Windows | ❌ 无桌面环境 |
项目链接
- GitHub: CNCSMonster/gsudo
Comments