Secure Autofill — 安全自动填充
v0.1.0通过 vault_suggest/vault_fill (插件工具)实现 1Password 背书的凭证填充。
运行时依赖
安装命令
点击复制技能文档
secure-autofill 本技能文档介绍如何使用 secure-autofill 插件工具: vault_suggest — 查找可能的 1Password 项 vault_fill — 用秘密填充浏览器 DOM 字段(代理不会看到凭证) 架构 代理协调;插件处理秘密。代理提供来自浏览器快照的元素引用;插件将秘密输入页面。 先决条件 工具可用(如果使用工具允许列表): vault_suggest、vault_fill 在 WSL 上工作的非 headless Chrome(许多网站阻止 headless) 网关环境具有所需的环境变量 具体检查: 命令 -v google-chrome 或命令 -v google-chrome-stable 配置(可移植) 机器特定的环境不应在此文档中硬编码。 示例(请勿编辑): ~/.openclaw/skills/secure-autofill/config.env.example 实际(机器特定): ~/.openclaw/skills/secure-autofill/config.env 网关环境文件(推荐目标): ~/.config/openclaw/env 典型键: DISPLAY、WAYLAND_DISPLAY、OP_SERVICE_ACCOUNT_TOKEN(不提交;不粘贴到聊天中) 初始化/安装/入门(WSL) 首选(聊天优先) 由于主要接口是聊天(Telegram),首选入门流程是: 询问 Boss 哪些值需要设置(DISPLAY、WAYLAND_DISPLAY、是否设置 OP_SERVICE_ACCOUNT_TOKEN)。 编写/更新实际技能本地环境文件:config.env。 可选地更新网关环境文件(~/.config/openclaw/env)并确认每个键。 如果适用,检测是否由 systemctl --user 管理 openclaw-gateway 并提供重启选项。 可选(终端) 如果您在实际终端中运行,可以使用交互式入门脚本: ~/.openclaw/skills/secure-autofill/scripts/onboard.sh 1)安装 Google Chrome(.deb) Ubuntu 22.04 将 Chromium 移动到 snap 中,这在 WSL 中不太适用。直接安装 Chrome: # 添加 Google apt 源 wget -qO- https://dl.google.com/linux/linux_signing_key.pub \ | sudo gpg --dearmor -o /usr/share/keyrings/google-linux-signing-keyring.gpg echo "deb [arch=amd64 signed-by=/usr/share/keyrings/google-linux-signing-keyring.gpg] http://dl.google.com/linux/chrome/deb/ stable main" \ | sudo tee /etc/apt/sources.list.d/google-chrome.list # 安装 sudo apt update && sudo apt install -y google-chrome-stable 2)配置网关环境(非 headless + 1Password 令牌) 创建/更新 ~/.config/openclaw/env。 运行入门脚本以生成实际环境文件(技能本地): ~/.openclaw/skills/secure-autofill/scripts/onboard.sh 将所需变量从技能本地配置文件(config.env)复制到网关环境文件(~/.config/openclaw/env)中。 确保网关服务加载环境文件: mkdir -p ~/.config/systemd/user/openclaw-gateway.service.d cat > ~/.config/systemd/user/openclaw-gateway.service.d/override.conf << 'EOF' [Service] EnvironmentFile=%h/.config/openclaw/env EOF systemctl --user daemon-reload systemctl --user restart openclaw-gateway 3)工具允许列表(如果配置) 在 ~/.openclaw/openclaw.json 中添加: "tools": { "alsoAllow": ["vault_fill", "vault_suggest"] } 工具 vault_suggest — 列出 1Password 项(查找可用凭证) vault_fill — 用秘密填充 DOM 字段(代理提供引用,插件输入秘密) vault_fill API vault_fill({ item_title: "X", // 1Password 项标题 fields: { username: { ref: "e3" }, // 字段类型 → DOM 引用 password: { ref: "e5" }, otp: { ref: "e7" } // 可选 }, retry_mode: "simple", // "simple" | "next_candidate" | "reset" targetId: "..." // 从浏览器快照中获取 }) // 返回:{ ok: true, filled: ["username", "password"], item_title: "X", has_more_candidates: false } 字段类型 username → 1Password "username" 字段 password → 1Password "password" 字段 email → 1Password "email" 字段(回退到 username) otp → 1Password TOTP(新代码) 重试模式 simple — 相同凭证,相同引用(在消除阻塞器后使用) next_candidate — 尝试下一个匹配的 1Password 项(错误凭证) reset — 清除重试状态并重新开始 计时注意 vault_fill 之后总是等待 ~1 秒,然后再点击提交。 插件使用异步 CLI 调用,这需要一段时间来完成输入。 vault_fill(...) // 立即返回 等待 1000ms // 让输入完成 点击提交 登录工作流(代理驱动)
- 导航到登录页面
- 循环直到登录或达到最大重试次数:
- 消除它
- 继续循环
- 从快照引用中构建字段映射
- 调用 vault_fill 以映射
- 点击提交按钮
- 继续循环
- 完成!
- 决定:retry_mode="simple" 或 "next_candidate"
- 继续循环