SuperAPI AI 工具集

qwen-mm-plugins-mhs

智能体与模型

查看项目

更新于 10-16 09:53

技能介绍

用途:让模型通过固定的六个 MCP 工具操作真实硬件,适配器由硬件拥有者运行,不学习每台设备的专属 API,而是询问设备能做什么。新硬件加入后工具面不增长,只需有人为其启动适配器即可在 mhs_discover 中出现。

六个工具与使用顺序:mhs_discover 始终先调用,设备 id 形如 <adapter>/<device_id>,只在唯一适配器有该 id 时可省略前缀;mhs_meta_info 在首次 mhs_write 前调用,获取能力参数、单位、允许范围及哪些写入需确认;mhs_read 读取传感器值、当前设置和相机帧,相机帧以可直接查看的图像返回,只读、可安全重复;mhs_write 是唯一改变物理世界的工具;mhs_health_check 在出现异常后或一串命令前调用,不缓存,不带 device_id 可全面巡检;mhs_reset 的 soft 清错并回到空闲,estop 立即停止。

写入注意事项:先读元数据,范围与单位按设备声明,无通用值。被硬性安全限制拒绝表示该值不安全,不要绕过,confirm=true 无法覆盖硬限制。confirm=true 用于需确认的能力或有理由突破软限制的刻意操作,不用于重试。写入失败不自动重试,先 mhs_health_check,在错误状态重复命令可能损坏执行器。应如实报告设备 id、能力、发送值和设备回应。异常或不确定命令是否生效时,先用 mode="estop" 停止再诊断,设备不支持 reset 时工具会说明,即无法通过本工具停止该设备。

配置:适配器列于 ~/.qwen-mm-plugins/mhs-devices.json,可用 QWEN_MM_MHS_DEVICES 覆盖,格式为 {"adapters": [{"name": "lab-cam", "url": "http://192.168.1.20:8800"}]}。文件缺失时工具会提示并给出创建形状。每次调用都会重新加载并查询所有适配器,设备列表与健康状态永不缓存,空适配器列表有效。QWEN_MM_MHS_CACHE_TTL 默认 60 秒,仅作用于元数据,发现和重置也会使其失效。

无硬件时可用模拟适配器:python3 -m pip install "msgpack>=1.1,<2",再运行 python3 references/mock_adapter.py --port 8800,它提供带曝光硬限制和增益软限制的模拟相机,以及电源写入需确认的灯,足以跑通整个循环。

自建适配器:适配器是任意语言的普通 HTTP 服务器,注册只需注册表一行。协议见 references/adapter_protocol.md,示例实现见 references/mock_adapter.py,共享 HTTP 与 MessagePack 层见 references/adapter_server.py。先用 python3 -m qwen_mm_plugins_mhs.verify http://127.0.0.1:8800 校验(只读,不写入不重置),修复所有 ✗ 并阅读 ! 提示。注册时保留已有适配器,先写临时文件再原子替换,避免并发读到半写文件。自建适配器应保持只读声明直到用户确认要驱动设备,声明真实 safety_limits,对重要写入标记 requires_confirm: true,不得伪造成功,写入与重置仅在接受时返回 ok: true,不支持重置返回 405,使用前告知用户所建适配器的目标设备、暴露能力及哪些会改变物理状态,且其未经审查。

与其他能力的关系:mhs_read 的相机帧是普通图像,可用 qwen-mm-plugins-api 分析或 qwen-mm-plugins-core 标注;纯文本主机(QWEN_MM_NATIVE_MODE=0)下帧以生成字幕形式返回,循环不变。本能力不读文件、不调用云 API,仅与已配置适配器通信。