核心用法
MagicPay 是一个专为敏感用户工作流设计的 CLI 工具,主要处理登录、身份验证、结账、捐赠、订阅和支付等需要显式用户批准的场景。其核心架构采用"产品会话优先"模式:首先通过 magicpay start-session 创建受保护的工作流会话,然后绑定浏览器子资源,最后执行 Memory 填充和敏感操作。
关键工作流程包括:
- 预检配置:
magicpay status检查 API 密钥和 CLI 状态 - 启动会话:
magicpay start-session [name]创建产品工作流根会话 - 绑定浏览器:
magicpay launch [url]或magicpay attach <cdp-url>在会话内创建浏览器子资源 - Memory 规划与填充:
magicpay plan-fill生成无值的字段匹配计划,magicpay apply-fill实例化已批准的值并填充表单 - 敏感操作授权:
authorize-payment、sign-message、confirm-action等带类型的显式批准命令 - 会话管理:
magicpay end-session完成工作流,magicpay close清理浏览器子资源
MagicPay Memory 系统存储用户批准的登录信息、身份数据、支付卡、钱包和可复用资料字段。关键安全设计是原始值永不经过 LLM 提示:plan-fill 阶段仅传递无值的描述符和模糊引用,apply-fill 阶段才在受保护通道内实例化实际值。
显著优点
1. 强数据隔离:敏感原始值(密码、支付卡号、私钥等)对调用模型完全不可见,通过 fieldRef 和 itemRef 等模糊引用操作
2. 显式授权机制:所有后果性操作(支付提交、登录、身份验证、账户变更)都需要匹配的带类型用户批准,防止意外执行
3. 灵活的批准渠道:支持 MagicPay UI、OTP 等多种批准方式,非强制单一渠道
4. 与浏览器工具解耦:MagicPay 专注保护工作流,通用页面导航由原生浏览器自动化工具处理,架构清晰
5. 细粒度的 Memory 管理:支持创建、更新、删除 Memory 条目和字段,区分公开字段和秘密字段的显示/日志行为
6. CAPTCHA 恢复支持:内置 solve-captcha 命令处理验证挑战,作为工作流的恢复机制
潜在缺点与局限性
1. 依赖受信执行环境:MagicPay 不使不受信运行时变安全;浏览器、操作系统或 shell 被入侵时无法保护数据
2. 无法保护已泄露的聊天输入:用户已在代理聊天中输入的敏感信息不在 MagicPay 保护范围内
3. 功能范围受限:仅处理批准的工作流场景,不适合通用网页自动化;需要与浏览器工具配合使用
4. 配置依赖:需要有效的 MagicPay API 密钥和特定 npm 包安装,存在供应商锁定
5. CDP 端点安全风险:attach 命令需要用户明确批准的私有 CDP 端点,共享或受损环境存在隐患
6. Memory 匹配的不确定性:依赖语义匹配而非确定性规则,可能因页面变化导致匹配失败
7. 支付卡特殊限制:提供商支持的支付卡需要预授权才能显示句柄,流程较复杂
适合人群
- 需要自动化敏感用户工作流的 AI 代理开发者:如自动结账、订阅管理、身份验证流程
- 注重数据隐私的终端用户:希望密码、支付信息等敏感数据隔离于 AI 模型上下文
- 企业合规场景:需要显式审计跟踪和用户批准记录的金融、医疗等敏感操作
- 已有 Mercuryo/MagicPay 生态的用户:已拥有 API 密钥和 Memory 数据基础
常规风险
| 风险类别 | 描述 | 缓解措施 |
|---------|------|---------|
| 密钥泄露 | `MAGICPAY_API_KEY`、配置文件、CDP 端点泄露 | 禁止打印/日志/分享;受损环境立即轮换密钥 |
| 内存引用暴露 | `itemRef`、`fieldRef` 被暴露给用户或外部工具 | 仅用于 MagicPay 命令间传递,不入报告 |
| 越权执行 | 未经 `authorize-payment` 等批准执行支付 | 严格遵循"后果性操作需匹配类型批准"规则 |
| 会话状态混淆 | 未先 `start-session` 直接 `launch` 浏览器 | 强制执行"产品会话优先"顺序 |
| CAPTCHA 误用 | 将 `solve-captcha` 用于通用等待 | 仅确认真实 CAPTCHA 存在时调用 |
| 值穿透 | 试图将原始值传入 `plan-fill` 或聊天记录 | 使用 `--secret-*` 标志,禁止原始值过提示 |
| OTP 处理不当 | 在日志/报告中记录 OTP 数字 | OTP 仅用于 `confirm-otp` 命令,不入任何记录 |