资讯动态

nanoMuse跨设备Hub协议深度解析:设备之间如何用WebSocket帧互相委托任务与审批

发布时间:2026/10/16 2:40:39 来源:尧图企业网站定制
【免费下载链接】nanoMusenanoMuse: an open-source personal agent for every device you own. One agent with a name and a look of its own that does things, keeps working while the app is closed, remembers you, and asks before anything you cannot undo. On Android, iPhone and iPad, Windows / macOS / Linux and in the browser; your phones screen and your computer as its hands.项目地址https://gitcode.com/gh_mirrors/na/nanoMuse点击查看免费下载nanoMuse 是一个开源的个人 AI Agent智能体同一账号下可以在手机、电脑和浏览器中同时运行。它的跨设备Hub 协议让所有设备通过一根 WebSocket 连接互相发现、**委托任务task并把审批approval**卡片实时回传给发起方。本文带你完整读懂这套协议6 种核心帧、审批回流机制、限速与重连策略以及关键源码位置零基础也能看懂。一、为什么需要跨设备 Hub每款设备都有自己的手手机App 与沙箱环境读通知、发消息、操作界面电脑shell 命令行、文件系统、屏幕截图浏览器没有自己的手只是一扇前门Hub 的价值在于任何设备都可以请求任何设备干活无论它们各自在什么网络里。比如在手机上说一句在我 Mac 上列一下下载文件夹命令就会经 Hub 路由到电脑执行结果原路返回——不需要共享 Wi-Fi不需要端口转发。二、整体架构一根出站 WebSocket谁都不用开端口 整个协议的设计极简只有一个核心思想所有设备都主动向中继relay拨出一根 WebSocket 并保持长连设备端不监听任何端口中继只在同一账号的设备之间转发帧frame从不窥探任务内容。手机 ──┐ ┌── 电脑 (nanoMuse Desktop) ├──▶ nanoMuse Cloud ◀───┤ 浏览器 ─┘ /v1/hub └── 另一台手机 / 电脑连接地址为WS /v1/hub鉴权用Authorization: Bearer nm_…浏览器把 key 放在hello帧里因为浏览器无法自定义请求头设备 id 按安装生成phone-…、pc-…同一 id 的新连接会替换旧连接关闭码4003中继只记录设备名与最后在线时间不存储你请求过什么——这是它的信任模型三、六类核心 WebSocket 帧速览 ⚡全部帧都是 JSON 文本。理解这 6 类帧就读懂了 90% 的协议方向帧作用→hello连接后15 秒内必须发送声明设备id / name / kind / os / actions[]←welcome服务器回执附当前设备列表、frame_limit与版本号↔devices任一设备上线/下线时向账号内所有连接广播列表→call委托请求{id, to, action, args}↔event进度回传工具步骤、审批卡片、生成的图片/文件→result最终答复{id, ok, body \| error, message}一次典型的call长这样{type: call, id: a1b2…, to: pc-9f3e, action: shell, args: {command: ls ~/Downloads}}目标设备执行后回result若执行较慢会先连续发若干event帧报告进度最后才发result。超时 15 分钟没人应答的call中继会主动给发起方回timeout错误帧CALL_TTL_S见 cloud/nanomuse_cloud/hub.py。四、两种委托方式原始动作 vs 整包任务 ① 原始动作Actions——直接、即时info、shell、files、file.get、file.put、open、screen、notify见 nanomuse/hub/actions.py。截图和文件字节用 base64 装进帧里单文件上限 8 MB。② 整包任务Task——用一整段自然语言交给目标设备自己的 Muse去办{type: call, id: c3d4…, to: phone-7a21, action: task, args: {text: 打开日历告诉我明天第一场会议, language: zh-CN}}conversation可选命名这次委托的会话缺省用发起方 idlanguage可选发起方界面的 BCP-47 语言标签目标 Muse 会用它作答而不是猜任务最长可跑 15 分钟在目标设备上任务跑在一个可见的侧边聊天里人可以随时围观、插话或按 Stop发起方随时可用stop {call}中止——但任何设备都只能停自己发起的任务五、审批如何跨设备回流这是协议最妙的部分 ✨任务在目标设备上跑到一半如果碰到了需要人点头的操作删文件、付款、外发数据目标 Muse不会擅自决定而是走一套审批回流流程目标设备的 Sentinel安全护栏生成审批卡片以event帧发回给发起方{stage:approval, approval_id, preview, risk, reason, device, timeout}发起方在自己的界面弹出卡片手机上是 RiskGate、终端里是提示符、网页上是一张卡片由提问的那个人来拍板发起方把决定打包成approve {approval_id, allow}帧送回目标执行/拒绝并把approval_result {approval_id, status}广播给两端卡片同时关闭三条关键规则源码在 nanomuse/hub/service.py 的on_call分发器中设备只能批准自己发起的运行所产生的卡片不能批准你允许我干吗这类元审批命令的风险在输入设备上判定发出前不依赖目标设备反向操作同理目标设备上的远程遥控开关Remote control关闭时除info外一切请求都回not_allowedshell等敏感动作首次请求还会弹出一次 / 对该设备永久的授权卡片审批帧的发送端实现在 nanomuse/hub/service.py 的_forward_event接收端在 nanomuse/hub/service.py 的decide_remote。六、健壮性设计错误码、限速与断线重连 ️协议对设备离线、网络抖动、恶意刷帧都有明确预案关闭码Close Codes关闭码含义客户端策略400015 秒内没收到hello重连4001key 无效或被吊销如全设备登出等待 60 秒再试提示重新登录4003同 id 被新连接替换 / hub 暂停等待后重连4008刷帧超限重连4009慢消费者有 512 帧或 32 MB 排队的 socket 被关退避重连错误帧device_offline目标不在线、self_call不能叫自己、not_controllable浏览器标签页不能被委托、unknown_call该 id 上没有等待中的调用、too_large、rate_limited等定义见 cloud/nanomuse_cloud/hub.py。限速与心跳cloud/nanomuse_cloud/hub.py单 socket 持续限速60 帧/秒、8 MB/秒令牌桶算法突发翻倍连续丢弃 600 帧直接4008关闭单帧上限16 MBHUB_FRAME_LIMIT客户端每25 秒发一次ping20 秒无pong即认定网络已断笔记本休眠、Wi-Fi 切换的僵尸连接由此被发现退避重连1 秒起步、指数翻倍、封顶 30 秒nanomuse/hub/client.py发送永不等待对端帧先入队按序写出一台卡死的手机不会拖垮正在调它的电脑七、核心源码导读 想深入实现按这条线读即可协议总文档帧、错误码、信任模型全在这里docs/hub.md任务如何旅行的流程图与跨端行为docs/every-device.md中继端路由hello握手、_call转发、_answer回执、超时清扫cloud/nanomuse_cloud/hub.py运行时端客户端WebSocket 长连、退避重连、call出站nanomuse/hub/client.py入站调用分发approve/task/stop/ 原始动作nanomuse/hub/service.pytask如何落成侧边聊天并回传事件流nanomuse/hub/service.pyAgent 视角的委托工具devices、device_shell、delegate等 9 个工具nanomuse/tools/devices.py协议测试用假中继验证全链路cloud/tests/test_hub.py八、小结这套协议教会我们的三件事 只出站、不监听一根 WebSocket 长连解决了移动设备无法被访问的千古难题中继只管路由判定留在端上风险在输入设备判定、审批由提问者拍板云端信任面被压到最小一切皆帧帧皆可回放任务进度以event帧流式回传发起方看到的体验与在目标设备上亲眼看完全一致读懂这 6 类帧和审批回流你就掌握了 nanoMuse 跨设备协作的全部骨架。赞分享【免费下载链接】nanoMusenanoMuse: an open-source personal agent for every device you own. One agent with a name and a look of its own that does things, keeps working while the app is closed, remembers you, and asks before anything you cannot undo. On Android, iPhone and iPad, Windows / macOS / Linux and in the browser; your phones screen and your computer as its hands.项目地址https://gitcode.com/gh_mirrors/na/nanoMuse点击查看免费下载相关推荐CrewAI 如何用 allow_delegation 让 Agent 之间互相委派任务与提问CrewAI 如何用 allow_delegation 让 Agent 之间互相委派任务与提问 在 CrewAI 中默认的 Agent 是各自独立执行任务的人工智能大模型AI AgentAgent 框架多智能体Agent 编排RAGAgent 记忆工具调用CHTCollectionViewWaterfallLayout委托协议深度解析CHTCollectionViewDelegateWaterfallLayoutCHTCollectionViewWaterfallLayout是一个强大的iOS瀑布流布局库能够实现类似图片分享平台的瀑布流效果。作为iOS开发中实现瀑布流移动开发UI组件OpenClaw Gateway 架构深度解析WebSocket 控制平面、握手协议与设备配对OpenClaw Gateway 架构深度解析WebSocket 控制平面、握手协议与设备配对 本文基于仓库文档 architecture.md https:人工智能大模型LLM 网关AI Agent即时通讯创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑