news 2026/10/23 1:56:01

Agnes Harness MHS设备协议全解析:AI Agent如何安全连接机器人、传感器等物理设备

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Agnes Harness MHS设备协议全解析:AI Agent如何安全连接机器人、传感器等物理设备

【免费下载链接】agnes-harness

Agnes Harness: A pluggable agent harness for Forward Deployed Engineering (FDE). Built for trust. Made for the real world.

项目地址:https://gitcode.com/gh_mirrors/ag/agnes-harness
点击查看免费下载

Agnes Harness 的 MHS(Model Hardware Standard)设备协议,是 AI Agent 安全连接机器人、传感器、相机等物理设备的标准接口。这篇文章用通俗的语言讲清 MHS 的设计思路:双通道通信、安全机制、AI 可用的 7 个设备工具,并展示如何不接硬件直接试用。

什么是 MHS:AI Agent 的"身体"接口

Agnes Harness 把整个系统比喻成一个人:LLM 是大脑,Jev 是小脑,Harness 是记忆,而MHS 就是身体——AI 与物理世界能力之间的接口。

设备(机器人、传感器、相机)提供真实的能力,Agnes Harness 提供任务编排、人工确认和完整记录。三者分工明确:

  • 设备(Device):一台物理机器,或一个替硬件"代言"的桥接进程(比如用厂商 SDK 控制机械臂的电脑)。设备拥有自己的工具、状态、数据源,并自己负责自己的安全。
  • AgnesHub:设备连接的枢纽。它验证并转发每一次调用、接收和分发数据、随时可以叫停设备。
  • 大脑(AI Agent):永远不直接和硬件对话,只通过 AgnesHub 行事,AgnesHub 会用设备注册时声明的能力来核对每一个调用。

💡 Agnes MHS 借鉴了 MCP(Model Context Protocol)的 JSON-RPC 2.0 消息格式和工具声明方式,但补充了物理设备真正需要的东西:随时可停、人工接管、实时状态、流式传感器数据。它是 Agnes 自己的协议,与 Anthropic 的同名标准相互独立。

协议完整定义见 packages/mhs/spec/mhs-spec.md,入门指南见 docs/guide/mhs.md。

双通道设计:命令和数据为什么分开

MHS 最重要的架构决策:每个设备开两条 WebSocket 通道,且都由设备主动拨出(设备不需要公网地址或开放端口)。

通道地址传什么原则
命令通道/ws/mhs注册、状态、工具调用、进度、停止、暂停消息不能丢
Nerve 通道/ws/nerve摄像头画面、视频、扫描、遥测、人工操作输入最新的数据最重要,旧数据可以丢

分开的意义很直观:一串视频画面再大,也不会延迟一个stop指令的送达。Nerve 通道由配套标准 MOS(Model Observation Standard) 定义,见 packages/mhs/spec/mos-spec.md。

设备连上后发第一条消息mhs/register,一次性自我介绍:我是谁、能做什么(工具)、报告哪些状态、传感器有哪些、能否人工遥控。注册完成后,AgnesHub 保存它的最新状态,任何人都可以随时读取,而不必"叫醒"设备。

五大安全机制:设备安全从不依赖网络

这是 MHS 与普通"设备 API"最大的区别。协议假设枢纽、网络甚至 Agent 都可能在任何时刻坏掉,而设备必须依然安全(安全要求章节)。

1. 停止是一个永远成功的"协议消息",而不是工具

mhs/stop不是某个设备自己实现的工具,而是协议规定设备在任何时间、任何状态下都必须接受的指令:先让所有执行器零速,再打断进行中的运动调用,并在 2 秒内回复"我停下了哪些动作"。注册还没完成时收到stop,也得照办。

2. 断线自动停车

命令通道断开后,设备必须在 1 秒内停止所有运动,并且重连后不得自动恢复断线前的动作。换句话说:网线一拔,机器人自己就站住了——这不依赖 AgnesHub 是否还活着。

3. 调用先"秒级应答",再异步执行

设备收到mhs/call后必须在 2 秒内给出接受或拒绝(理由如busy、unsafe、invalid),不能边干活边回复。之后可以上报进度,最终以恰好一个结果结束:done(完成)、interrupted(被叫停)、error(失败)。

4. 人工接管带"死人开关"(Deadman)

支持手动遥控的设备声明控制轴(前进、转向、升降等)和deadman_s:只要超过这个时间没收到输入,设备自动停止所有人工指令的运动。而且规范要求死人开关独立于协议进程运行(推荐独立看门狗)——即使跑 MHS 的进程卡死了,摇杆松手照样能刹住。

5. 参数越界时"钳制"而非报错

参数范围声明的是设备的物理和安全极限。Hub 和设备都会校验:数值超出minimum/maximum时会被钳制到边界执行,并在结果的notes里说明("移动了 2 米——允许的最大值"),这对 Agent 来说比干脆拒绝更有用。设备还必须对 Hub 发的每一个指令再次强制执行自己的限制([SAFE-4])。

MOS 数据通道:传感器数据如何流向 AI

如果关心的是"当前值"(模式、电量、门锁开关),那是状态(State)——设备变化时上报,Hub 保存,随取随读。如果关心的是"随时间变化的流"(摄像头画面、电机温度曲线),那是 MOS 的数据源(Source)。

每个数据源都有类型化声明:种类(image、video、scan、values…)、安装位置mount、视场角、单位、告警阈值、标准角色role(如battery、temperature)。这意味着**一个从未见过该设备的 Hub 或模型,也能识别出"这是电机温度"**并知道它超温了。

两个设计细节值得新手注意:

  • 按需流式:Hub 根据"谁在看、谁在录、谁在算"决定每个源的频率和码率。一个有十个传感器但没人关注的设备,几乎不传数据。
  • 派生感知格式统一:目标检测、轨迹、定位、转写这类"算出来的结果",无论由设备端计算还是由 Hub 计算,格式完全一致。

地图与"地点"(maps和places)也是 MOS 的一部分:机器人可以声明一张带命名地点的地图(充电桩、门口、某个房间),于是 Agent 能说"去充电桩"而不是只处理坐标。固定安装的设备(墙上相机、房间传感器)声明localization: fixed和安装位置,Hub 会把它画在地图上。

无硬件试用:4 台示例设备开箱即用

🚀 没有机器人也能完整体验 MHS。开发枢纽dev-hub内置四台示例设备:robot-01(带相机、办公室地图和手动遥控的移动机器人)、lamp-01(可写状态的小台灯)、env-01(房间传感器)、arm-01(带可开关麦克风的机械臂)。

从仓库根目录运行:

pnpm --filter @agnes/mhs build:plugin pnpm --filter @agnes/mhs dev-hub

打开http://127.0.0.1:4191/就能看到 Devices(设备卡片)、Flow(Hub 与设备间的调用和数据流)、World(带区域和地标的地图)三个标签页。在终端输入health robot-01 hot或pose robot-01 lost,还能人为制造设备的健康异常和定位丢失,观察整个系统的反应。

想要更大的世界,仓库还内置了examples/mars-world:一座火星基地,浏览器里运行11 台虚拟 MHS 设备——漫游车、火箭跳伞器、实验舱机械臂、气闸、天气站,连"救援宇航员"的完整剧情都可以演练,所有设备都用真实 MHS 协议通信,见 examples/mars-world/README.md。

从 Agnes 里使用设备:7 个设备工具

AgnesHub 以可选插件@agnes/mhs的形式运行在 Agnes 内部(默认监听127.0.0.1:4180)。在插件管理页打开开关后,大脑获得 7 个工具:

工具作用
list_devices列出所有设备:id、类型、可用性、健康、正在做什么
read_device读取设备状态、健康、位置,以及指定数据源的最新数据(返回图片,相机画面能直接进模型)
call_device调用设备的某个工具,等待最多 50 秒;长任务结束后会唤醒会话
set_device修改可写状态(如音量)
stop_device停止一台设备,或全部设备
watch_device/unwatch_device等待条件(如读数越过某个阈值),触发时唤醒会话

注意一个刻意的设计:设备工具不需要人工审批。因为设备安全不依赖 Hub 和审批流——设备的自保护(断线停车、死人开关、自有限制)才是安全底线,Hub 只在其之上叠加检查。

设备自身的工具作为call_device的参数传入,所以设备来了又走,大脑的工具列表永远不变。每轮对话开始时大脑还会拿到一份地图与设备的快照;会话中每次设备工具调用都会显示为一张卡片,完整时间轴可以回放审查:

AgnesHub 的完整客户端接口(非标准,仅供大脑、面板等使用)见 packages/mhs/server/hub-api.md。

合规性检查:mhs-check 测试枢纽

"设备说它安全"不等于安全。MHS 提供了自动化的合规套件 mhs-conformance.md:

  • 每条消息都有 JSON Schema(2020-12 版本)约束;
  • mhs-check是一个测试枢纽(端口 8800):它读取设备的注册信息,自动判断适用哪些档案(Core、Motion、Manual、Pause、Perception、Streaming、Video…),逐一跑场景,对每条需求编号(如[CTL-3])报告pass/fail/warn/skip/manual。
cd packages/mhs/python uv run python -m agnes_mhs.check # 启动测试枢纽 uv run python examples/sensor.py # 另开终端,接入被测设备

最小可运行的示例设备就是packages/mhs/python/examples/sensor.py(房间传感器)和camera.py(H.264 测试图案视频);TypeScript 版最小设备见packages/mhs/device/example.ts(一盏台灯)。用设备库(Pythonagnes_mhs或@agnes/mhs/device)写自己的设备,注册、重连、参数钳制、死人开关等协议细节都由库代劳,见 docs/guide/mhs-device.md。

⚠️ 但要明白它的边界:通过 mhs-check 只说明设备在受测条件下遵循协议,并不等于给设备"安全认证"。

安全边界与网络建议

最后提醒新手三条红线(来自 MHS 第 14 节):

  1. MHS 1.0 自身没有认证和加密。能连到 Hub 的人就能注册设备,流媒体(包括摄像头和麦克风)不加密。
  2. 它的设计场景是可信的局域网:实验室、工坊、家庭。Hub 和设备应隔离在独立网络或 VLAN,共享网络用wss://,永远不要把 AgnesHub 暴露到互联网。
  3. 停止一个 Agnes 任务 ≠ 确认设备安全停下了。stop_device的回复只告诉你设备停下了什么;断线或结果缺失后,先读取设备状态再重复任何结果未知的动作。

延伸阅读

资料路径
MHS 协议主文档packages/mhs/spec/mhs-spec.md
MOS 观测标准packages/mhs/spec/mos-spec.md
合规套件与 mhs-checkpackages/mhs/spec/mhs-conformance.md
消息 JSON Schemapackages/mhs/schema/mhs-v1.json
MHS 用户指南docs/guide/mhs.md
设备库开发指南docs/guide/mhs-device.md
AgnesHub 客户端 APIpackages/mhs/server/hub-api.md
火星基地示例(11 台虚拟设备)examples/mars-world/README.md
MHS 包总览packages/mhs/README.md

MHS 的核心思想一句话总结:模型从不碰硬件,设备永远自己兜底——双通道让控制不被数据淹没,而断线停车、死人开关和自有限制保证即使 AI 和网络全部失灵,物理世界依然安全。

【免费下载链接】agnes-harness

Agnes Harness: A pluggable agent harness for Forward Deployed Engineering (FDE). Built for trust. Made for the real world.

项目地址:https://gitcode.com/gh_mirrors/ag/agnes-harness
点击查看免费下载

相关推荐

上一篇:Python高级编程终极指南:10个Fluent Python代码优化与重构技巧
下一篇:终极技术面试反问指南:10个关键问题助你快速评估公司技术实力

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/23 1:54:01

一文读懂神经网络:从基础概念到实际应用(入门友好版)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/23 1:53:39

GLM-5.3-Flash vs GLM-5.2 vs Claude Opus 4.8:基准测试横向对比与选型建议

【免费下载链接】GLM-5.3-Flash 项目地址: https://ai.gitcode.com/hf_mirrors/unsloth/GLM-5.3-Flash 点击查看 免费下载 本文直接对比 GLM-5.3-Flash、GLM-5.2 与 Claude Opus 4.8 三大模型在 Coding、Agent、多模态等核心基准测试上的表现,并结合 RE…

作者头像 李华
网站建设 2026/10/23 1:52:44

第三章 强化学习助力优化

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华