Coding agent 一直活在屏幕里;现在它开始长出第一批物理外设。Claude Desktop Buddy 的价值篇+协议篇两篇,是这类外设目前最完整的一份公开案例:一篇讲一个真实的开发者痛点,一篇讲这个痛点底下的 BLE 比特流。单独读是两条线,串起来读是同一件事的两面——Anthropic 用一颗 25 美元的桌宠,第一次把 agent 审批从「点一下弹窗」变成「按一下物理键」。这篇故事线借这个案例,读的是这一整类外设背后共通的产品判断与协议判断,也可以直接从任何一幕跳进原文。
Claude Code 跑长任务时,最烦的不是等——是弹窗。
刚进状态,approve: Bash 跳出来,切窗口、点按钮、切回编辑器,刚才脑子里那条线断了。单次不痛,叠起来很痛。越敢放权给 agent,弹窗越多;不放权 agent 又跑不动。
Anthropic 开源的 claude-desktop-buddy 做的事很简单:把「切回 Claude 窗口点按钮」变成「余光看设备、伸手按一下」。听起来省的是两秒,实际省的是注意力上下文的切换——这也是它区别于「又一个桌面宠物玩具」的地方:解决的是一个具体、真实、每天发生几十次的开发者痛点。
A/B 两个物理键的含义随场景切换——平时切屏、看宠物页切下一只、审批页秒变「批准 / 拒绝」
模态弹窗 + 鼠标约 8 秒且打断心流;键盘快捷键约 3 秒;Buddy 物理按钮约 1 秒且不需要切焦点
不止是桌面宠物:Claude Desktop Buddy 对开发者意味着什么 — § 01–03:它解决的真问题、设备的 7 种状态与按键语义、一天的实际使用叙事、注意力损耗对照条形图。
价值篇讲完「这颗宠物解决了什么」,协议篇往下挖了一层:这件小事到底用什么协议实现,为什么这么实现。
claude-desktop-buddy 仓库其实是两件东西:一份 BLE 协议规范,加一份跑在 M5StickC Plus 上的参考固件。协议本身只有 4 层——物理层 BLE、传输层 Nordic UART Service、帧层 \n 分隔的 JSON 行、应用语义层 5 种消息族(心跳、权限审批、Turn 事件、状态 ack、Folder Push)。你甚至不需要仓库里的任何代码就能接入——文档原话是"Building your own device? You don't need any of the code here."
更值得注意的是这份协议在 Anthropic 自己的谱系里的位置:到 2026 年,Anthropic 已经有 MCP、Skills、Hooks、Permissions、Remote Control 五份对外协议,每份对应 agent 工作流的一层。Buddy 是第六份——也是其中唯一的物理近场协议:前五份都是软件接口或网络协议,Buddy 第一次划定了 agent 与「实体硬件」之间的合约。
仓库只有 1 位 contributor(Felix Rieseberg,Electron 核心维护者、前 Slack 桌面客户端主作者)、全仓库仅 2 个 commit,却有 1.6k Stars——这不是有机生长的开源项目,是一个内部项目清理后开源的清白版本。
选 BLE 而不是 WiFi/USB/UWB,选事实标准 Nordic UART 而不是自研 GATT profile——每一步都在说同一件事:协议的新意全部投入应用语义层,基础设施尽量复用生态。这和 MCP 用 JSON-RPC over stdio/SSE 的取舍如出一辙。
Buddy 协议深潜:从 BLE 比特流看 Agent 硬件通信的未来 — PROLOGUE、§ 01 仓库考古、PART I 比特流层(§ 03–07)、PART III 协议栈定位(§ 12):Anthropic 六份协议横向对比表。
协议篇拆到权限审批消息时发现一个反直觉的设计:Buddy 的 decision 字段只有两个合法值——once 或 deny。没有 always,没有 forever,没有 whitelist。
Claude Code 桌面版本身有"始终允许"模式,Buddy 故意不让设备触发它。多数协议设计者会想「提供给客户端,让客户端自己选要不要用」——Buddy 反过来:禁止客户端拥有这个选择。物理摩擦是 feature,不是 bug:如果允许在 Buddy 上点一次永久允许 git push,设备就从「审批员」退化成「麻木盖章机」,产品价值直接垮掉。
这种克制不是孤例。Turn 事件被硬性截到 4 KB——不是为了让设备完整复制对话,只是为了触发「Claude 说话了」这个动画;协议至今没有版本字段,因为设计者显然清楚现在的简单是用未来 v2 的破坏性升级换来的。串起来看,六个关键决策有一个共同模式:在「现在简单」和「未来灵活」之间,Buddy 反复倒向「现在简单」——这是早期产品的合理选择,代价留给了以后。
物理摩擦保护审批的严肃性;一旦允许 always,「瞥一眼 + 按一次」的产品价值就不成立了
一个 ack/n 字段同时承担确认、进度条数据源、流控三种用途——比拆成三个字段干净得多
Buddy 协议深潜 — PART II 设计分析(§ 08–11):六个关键决策、四个值得注意的设计、五个明显缺口、威胁模型与 LE Secure Connections 的取舍。
两篇合起来读,指向一个更大的判断:agent 审批正在从「一块屏幕上的对话框」,变成「桌上一个可以摸的东西」。
协议篇把 Buddy 摆进 Anthropic 六份协议的坐标系里对比过:MCP 让 agent 主动调工具,Buddy 让桌面主动推状态;Remote Control 靠云中转、全球范围、认证走 claude.ai 账号,Buddy 本地直连、约 10 米范围、认证靠 BLE 配对——两者互补,一条解决「我不在电脑前」,一条解决「我在电脑前但不想被打断」。Computer Use 让 agent 看见屏幕,Buddy 让桌面看见 agent——方向正好相反,组合起来才是完整形态。
更远一层,协议篇给出了三个「应该存在但还没人做」的协议提案:Agent Wake(给 agent 一个物理语音唤醒入口)、Distributed Approval / Quorum(高风险操作要 N 中 M 个设备同时批准,Yubikey 的 agent 形态)、Agent-to-Agent BLE(同一个房间里两个 agent 的局域网协作)。三个提案的共同前提,都是「物理近场」已经被 Buddy 当作一个值得投入的产品维度。
价值篇讲的是一个真实的开发者痛点被一个 25 美元的物件解决了;协议篇讲的是这个物件背后,Anthropic 用协议的克制把一个产品判断焊死进了硬件接口。两条线合起来才是完整的故事:coding agent 审批第一次有了一个专门为它设计的物理位置,而这个位置现在还是空的——Anthropic 只是用 Buddy 先占住了坐标,把这个新品类剩下的内容留给了社区去填。
首次发布 2026-08-19