核心用法
Approvals UI 是 OpenClaw 生态的官方 Web 管理仪表盘,采用 Flask + Socket.IO 构建,提供设备配对、频道审批和交互式终端三大核心模块。用户将项目部署至 ~/.openclaw/workspace/projects/p1 后,通过 python3 server.py 启动服务,默认监听 9100 端口,凭 Drinnas/admin 初始账户登录即可使用。
显著优点
1. 零数据库依赖:直接读取 OpenClaw 原生状态文件(pending.json、paired.json、*-pairing.json),与 CLI 保持数据一致性
2. 实时交互:Socket.IO 驱动频道审批状态即时同步,xterm.js 实现浏览器内完整终端体验
3. 即开即用:内置默认凭证、环境变量配置覆盖、一键复制网关令牌等运维友好设计
4. 模块化扩展:设备配对/频道审批/终端三大功能独立成页,便于后续功能解耦
潜在缺点与局限性
- 安全基线薄弱:默认硬编码凭证(Drinnas/admin)、Flask 开发密钥占位、无 HTTPS 强制,生产暴露存在重大风险
- 权限模型单一:仅支持单管理员账户,无角色分级或多用户体系
- 耦合 OpenClaw 路径:强依赖
~/.openclaw目录结构,跨平台或非标准安装兼容性受限 - 无审计日志:审批/拒绝对作仅透传 CLI,未留存操作记录
适合人群
- 需要可视化替代 CLI 的 OpenClaw 自托管用户
- 本地/内网环境快速调试设备配对与频道接入的技术管理员
- 希望一站式查看终端输出的轻量级运维场景
常规风险
| 风险点 | 说明 |
|--------|------|
| 凭证泄露 | 未修改默认密码即暴露公网将导致未授权访问 |
| 路径遍历 | 服务端文件读取逻辑若未校验,可能受恶意构造路径影响 |
| WebSocket 劫持 | Socket.IO 未启用额外认证层,依赖会话 Cookie 单一机制 |
| 终端逃逸 | xterm.js 后端若未隔离权限,存在命令注入或越权执行隐患 |
建议生产部署前:强制修改凭证、配置反向代理 HTTPS、启用环境变量密钥、限制监听范围。