终端里缺一套发现机制
浏览器生态用 EIP-6963 解决了「页面上插了多个钱包扩展时该找谁」的问题(见 网页怎么在一堆钱包扩展里找对的那个:EIP-6963 与多钱包共存),但命令行是另一番景象:部署脚本、API 客户端、AI 代理需要签名时,往往硬编码对接某一家钱包,用户想换选择就得改代码。一份 2026 年 2 月提交到 CAIPs 仓库、尚在评审草稿目录里的 CLI Wallet Protocol(CWP)草案提议补上这块空白。注意它此刻还没有获得正式编号,一切字段都可能变动。

git 凭证助手的搬法
草案的灵感来自 git credential-<name> 这类凭证助手:钱包厂商发布名为 wallet-<name> 的可执行文件(名字只允许小写字母、数字和连字符),放进用户的 PATH;一个中央 wallet 调度器扫描 PATH 发现各家提供者,把操作转发给它们。与所有进程间通信的老规矩一致:参数从标准输入读 JSON(避免 shell 转义事故),结果写到标准输出,进度和状态只许走标准错误,提供者两次调用之间必须无状态,会话状态落盘。
操作清单与时间预算
操作共九项:info 报告名称、版本、能力与支持的链命名空间;accounts 列账户;sign-message、sign-typed-data、sign-transaction 三种签名;send-transaction 发送;再加会话三件套。每项都规定硬时间预算:info 三秒、accounts 十秒,三个签名操作 120 秒——这个数字是给硬件钱包现场确认留的,意味着规范默认有人在键盘前。声明支持 grant-session 的提供者必须同时声明 revoke-session 与 get-session。
退出码的语义
退出码被赋予固定语义:0 成功,1 一般错误,2 该提供者不支持此操作,3 用户拒绝,4 超时,5 无活动连接,6 会话相关错误。非零退出时标准输出必须给一个 JSON 错误对象,带 code 字段如 USER_REJECTED。对脚本作者,这意味着「钱没签」有三种截然不同的路径——拒了、超时了、还是根本没有会话——分别要处理,而不是统一重试。
info 输出与能力声明
调度器发现提供者的第一步是跑 info:标准输入留空,三秒内必须返回一个 JSON——name 与 semver 格式的 version、可选的 rdns 反向域名标识(与 网页怎么在一堆钱包扩展里找对的那个:EIP-6963 与多钱包共存 讲的 EIP-6963 用的是同一族标识法)、capabilities 能力数组,以及用 CAIP-2 命名空间书写的 chains 列表(eip155、solana、cosmos 这类取值)。调度器被建议先查能力再派活,因为每个操作都有专属退出码,能力没声明却硬派,换来的是退出码 2 而不是结果。accounts 的返回里每个账户带 address、CAIP-2 风格的 chain 和可选的显示名,跨链账户在这张表里各归各链,与 同一助记词在多条 EVM 链:地址相同,余额、nonce 和签名各归各链 讲的「同助记词多链各管各账」口径一致。
会话:一次授权,限额内自主
草案专门回应 AI 代理场景:代理不可能每笔操作都等人在硬件钱包上按键,但裸 --yes 自动批准又没有护栏。方案是 grant-session:人审批一次带作用域的授权信封——比如「这个账户在这条链上,对某个合约,单笔不超过固定金额、每小时不超过固定次数,到期时间戳为某」,策略类型是 value-limit 与 rate-limit 这类可机读约束——之后范围内的操作凭会话标识免人工执行。会话标识遵循编号 171 的会话标识规范,权限模型则借鉴了浏览器侧的 给钱包发通行证:ERC-7715 执行权限请求;撤销动作被设计为十秒内完成且不需要人再次确认,逃生门要比重物门快。这延续了 CAIP-25钱包会话如何申请最小权限? 讨论的最小权限申请思路,只是把主体从网站换成了终端进程。
与相邻生态的分工
浏览器端有 EIP-6963 的注册事件,桌面端这份草案对应的是 PATH 扫描:两者的发现单元不同(扩展与可执行文件),但风险同构——自报的身份可仿冒,rdns 与可执行文件名都不是信任凭证,签名最终仍要落到钱包自己的确认界面。会话限额则与浏览器侧的执行权限请求互补:那边弹窗里的人类审批仍在,这边的会话机制把一部分审批前移成策略。对运维来说,落地顺序也应如此:先让 info 与 accounts 两个只读操作跑通,确认 PATH 上没有冒名的 wallet-*,再考虑开 grant-session。
用户侧的安全边界
如果你的机器上出现 wallet-* 可执行文件,值得像审计任何 PATH 上的二进制一样审计它:来源、权限、会话落盘位置。会话机制的实质是把「事后逐笔确认」换成「事前一次限额确认」,限额字段每个都该按最坏情况填。本文为草案机制说明,不构成任何投资建议。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。