realtime-interact-overlay
v1.0.0实时交互浮窗技能。在需要用户确认、输入或交互的场景中,通过浮窗方式在当前操作界面旁边进行交互, 而不是回到OpenClaw聊天窗口。适用于:(1) 评论内容需要用户确认后执行,(2) 删除文件前需要用户确认, (3) 购物付款时需要输入密码,(4) 任何需要即时交互的场景。支持系统级浮窗和浏览器内浮窗。
Security Scan
OpenClaw
Benign
high confidencePurpose & Capability
技能名称/描述(实时交互浮窗)与包含的脚本相符:scripts/macos_dialog.py 提供 macOS 系统级对话框,scripts/browser_modal.py 生成注入到页面的 JS,scripts/interact.py 根据模式选择两者之一。没有请求与功能无关的环境变量、外部服务凭据或额外二进制。
Instruction Scope
SKILL.md 的运行指令仅描述在本地显示浮窗或返回需要注入到浏览器的 JS,脚本也只产生/执行 AppleScript 和返回 JS 代码;没有读取用户主目录中敏感配置或上传数据到网络的步骤。但需注意两点:1) 文档和示例鼓励用于“支付/输入密码”场景——将密码通过浮窗返回给调用方会把敏感数据交给 AI/调用流程,用户应谨慎;2) macOS 的 hidden/password 支持在代码中标注了兼容性问题,代码并未实现一个明确的、安全的密码掩码/密钥链存储流程。
Install Mechanism
无安装脚本或远程下载;这是 instruction-only(包含本地脚本文件)的包格局,没有从不信任 URL 下载或在安装时执行远端代码的行为。
Credentials
技能不要求任何环境变量、密钥或配置路径。脚本在执行 AppleScript 时显式将 env 置为空(subprocess.Popen(..., env={})),反而是一个降低泄露风险的做法。
Persistence & Privilege
技能没有设置 always:true、也不修改其它技能或全局代理配置。SKILL.md 提醒用户需要授予 macOS 辅助功能权限(这在显示系统界面时是合理且可解释的)。
Assessment
这个技能在功能和实现上是一致的:它仅在本地显示浮窗或返回需要注入的 JS,并未向外部服务器发送数据,也不请求额外凭据。但在决定安装/使用前请考虑:
- 不要在不信任的技能或未审核的环境中通过浮窗输入高敏感凭证(如银行密码、2FA 密钥)。该技能会把用户输入返回给调用方(AI/脚本),输入将被上层流程处理;如果上层流程不可信,密码可能被滥用。
- macOS 的“隐藏输入/密码模式”在代码里标注了兼容性问题,当前实现并非等同于系统安全密码输入或钥匙串存储;对高度敏感的密码请使用系统信任的输入方式或密码管理器。
- 浏览器内浮窗需要将生成的 JS 注入到页面,这通常需要用户或额外工具的参与:仅在受信任页面/会话中注入,避免在他人控制或可被脚本劫持的页面上自动注入。
- 虽然代码没有外联网行为,最好在本地审阅脚本(尤其 macOS 的 osascript 片段)并确认其只执行对话框展示逻辑后再授予辅助功能权限。
总体建议:如果你信任作者并且只是用于确认/简短输入场景(非高敏感凭证),可以使用;如果计划处理支付等敏感信息,请谨慎并优先使用更安全的密码输入/钥匙串方案。Like a lobster shell, security has layers — review code before you run it.
latest
Realtime Interact - 实时交互浮窗
在用户当前操作界面旁边弹出浮窗进行交互,提供流畅的确认/输入体验。
快速开始
浮窗类型
| 场景 | 使用方式 |
|---|---|
| 确认框(是/否) | interact.confirm(title, message) |
| 输入框 | interact.input(title, message, default) |
| 选择框 | interact.select(title, options) |
| 自定义HTML | interact.html(title, html_content) |
基础示例
1. 评论前确认
用户:帮我评论这条朋友圈
AI:准备评论内容后,调用浮窗确认
→ 浮窗弹出:显示"写的评论内容"
→ 用户点击"确认"
→ AI执行评论
2. 删除文件确认
用户:帮我删除这个文件
AI:准备删除操作后,调用浮窗确认
→ 系统浮窗弹出:"确定删除 xxx 吗?"
→ 用户点击"确认删除"
→ AI执行删除
3. 密码输入
用户:帮我完成支付
AI:准备支付后,调用输入框
→ 浮窗弹出:密码输入框
→ 用户输入密码
→ AI执行支付
技术实现
方式一:macOS 系统浮窗(本地操作)
适用于:删除文件、执行命令等本地操作
python3 ~/.openclaw/skills/realtime-interact-1.0.0/scripts/macos_dialog.py \
--type confirm \
--title "确认删除" \
--message "确定要删除文件 /path/to/file 吗?"
参数:
--type: confirm | input | select--title: 浮窗标题--message: 浮窗内容--default: 默认值(input类型需要)--options: 选项(select类型需要,用逗号分隔)
方式二:浏览器内浮窗(网页操作)
适用于:网页评论、购物等浏览器内操作
# 在当前浏览器页面注入浮窗
python3 ~/.openclaw/skills/realtime-interact-1.0.0/scripts/browser_modal.py \
--action show \
--type confirm \
--title "评论确认" \
--message "确认发送这条评论吗?"
方式三:Canvas 覆盖层(通用)
使用 OpenClaw canvas 绘制覆盖层:
// 通过 JavaScript 注入创建浮窗
// 见 scripts/inject_modal.js
浮窗样式
浮窗采用现代美观设计:
- 🎨 毛玻璃效果背景
- 📐 居中弹出,带阴影
- 🔘 圆角按钮
- ✨ 流畅动画过渡
交互流程
1. 用户发起请求(如:评论朋友圈)
2. AI 准备交互内容(评论文案、操作指令等)
3. 判断场景类型:
- 本地操作 → macOS 浮窗
- 浏览器操作 → 浏览器内浮窗
- 不确定 → 优先浏览器浮窗
4. 弹出浮窗展示内容
5. 用户确认/输入
6. 返回结果给 AI
7. AI 执行实际操作
8. 反馈结果给用户
错误处理
- 用户取消:返回
{"result": "cancel"} - 超时(默认60秒):返回
{"result": "timeout"} - 执行失败:返回
{"result": "error", "message": "..."}
扩展功能
语音交互(未来)
计划支持:
- 语音输入
- 语音确认("好的"、"确认")
- 语音播报结果
注意:首次使用需要授权 macOS 辅助功能权限(系统偏好设置 → 安全性与隐私 → 辅助功能)
Comments
Loading comments...
