
【免费下载链接】muse-gadget-sdkOpen source SDK to build Muse gadgets项目地址https://gitcode.com/gh_mirrors/mu/muse-gadget-sdk点击查看免费下载本文以仓库中的社区设备技能 skills/gadget-epson-printers/SKILL.md 为主体讲解 Muse 设备Gadget如何通过 Home Link 使用 IPP/IPPS 完成打印、通过 eSCL 完成扫描。读完后你将掌握该技能的触发条件、设备识别与前置条件、IPP 打印与 eSCL 扫描的完整工作流、结果校验方法以及技能明确划定的能力边界并能在 skills/CATALOG.md 的社区技能体系中找到它与 Brother、HP 等打印类技能的关系。技能定位社区技能按需触发该技能属于 skills/README.md 所描述的社区设备技能Community Device Skills这些技能是社区贡献的设备接入指南并非官方集成且可能最终在 Muse 产品中以更正式的形式提供。README 给出两种试用方式把仓库链接发给你的 Muse 设备让它在聊天中自行找到所需技能或在 skills/CATALOG.md 目录中查到设备后把对应的SKILL.md直接粘贴给 Muse 设备同时附上它引用的共享技能。技能的 YAML 前置元数据明确了两点关键约束name: gadget-epson-printers与目录名一致符合 README 中gadget-device-name/SKILL.md的命名规范description中特别强调只有当精确型号在发现结果中广播了对应的打印或扫描服务时才使用本技能IPP 本身不构成扫描支持。正文的开头再次强调触发条件当已确认的 Epson 打印机广播 IPP/IPPS或某台精确的 Epson 多功能机暴露了有文档记录的 eSCL 扫描服务时才使用该技能。这意味着技能是服务发现驱动而非品牌驱动的——不是看到 Epson 就接管而是看到具体广播的服务才行动。核心设计原则打印与扫描是两种独立广播的服务技能在Identify the Device识别设备一节给出两条识别规则以当前发现结果与打印/扫描能力响应为准匹配厂商/型号打印与扫描视为相互独立的服务广播了 IPP 不代表机器带扫描仪sane-airscan 的兼容列表覆盖了某台 Epson 设备也不代表这台设备用的就是 eSCL 而非其他扫描协议。这一原则与技能Sources一节引用的两份行业资料呼应sane-airscanairscan 协议实现的设备文档中列出的是这些设备支持某种扫描协议的兼容表而不区分具体走 eSCL 还是别的通道因此不能直接当成本设备的扫描协议判定依据。这与仓库中 Home Link 设备发现的实现是一致的。从源码结构看ESP32 侧的发现模块 esp32/main/net_discovery.c 会同时监听多种来源ARP、mDNSUDP 5353、SSDP1900、WSD3702、SNMP、NetBIOS每种来源用一个位标志区分SRC_MDNS、SRC_SSDP、SRC_WSD、SRC_SNMP等。打印机通常通过 mDNS 的_ipp._tcp/_ipps._tcp服务条目被发现而技能反复强调的以广播的服务条目为准正对应这个多协议发现机制发现结果里出现什么服务类型才主张什么能力。前置条件网络规则、端点与客户端技能的Prerequisites一节要求先阅读并遵循 Home Link 的网络与安全规则文档原文写作~/docs/devices/home_link.md指设备侧的 Home Link 约定当前仓库不包含该文件的本地副本因此以设备侧文档为准并明确列出执行动作前的三项必备条件条件说明实际的服务端点设备发现得到的真实 IPP/eSCL 端点IP、端口、资源路径设备认证与用户授权打印机配置的认证/TLS 信任对要打印的文档或实体扫描操作的用户许可客户端工具打印需要一个二进制 IPP 客户端扫描还需要一个支持 eSCL 的客户端以及该台设备广播的 eSCL base path注意最后一条里the exact devices advertised eSCL base path——eSCL 服务路径是逐设备广播的不能从其他 Epson 设备套用。打印工作流能力查询先行作业闭环技能 Workflow 的前两步描述 IPP 打印的完整闭环先查后打使用Get-Printer-Attributes读取打印机支持的格式、介质media、单/双面sides、分辨率、支持的操作operations以及当前状态。这一步的目的是把文档参数约束在设备实际广播的能力内——介质、分辨率、色彩、双面都要与广播能力对齐而不是按习惯默认值发送。提交并留痕用Print-Job以设备广播的格式提交文档并保留返回的作业 IDjob ID。第 2 步要求持续监控Get-Job-Attributes与打印机的 reasons原因码并且在重发之前先解决提交状态不确定的情况。这条规则解决的是局域网打印最典型的事故场景提交请求超时后直接重发导致同一份文档被打印两次。与之呼应的是同目录下的 Brother 打印技能它的Verify the Result一节给出了更细的表述——若提交超时重发前应先检查已有作业以避免重复打印。两个技能共享同一套 IPP 作业闭环思路只是 Epson 技能额外覆盖了扫描链路。这些操作依据的是 IPP 协议的作业与状态语义技能 Sources 引用了 RFC 8011本文不输出外部链接此处只说明其角色定义printer-state、job-state、printer-state-reasons等属性以及 Get/Print-Job 操作的行为。仓库中兄弟技能 Brother 打印明确给出了可用工具CUPS 的ipptool、imagetoraster/rastertopwg等Epson 技能未绑定具体工具名只要求二进制 IPP 客户端因此实操时按环境选用 ipptool 等成熟工具即可。扫描工作流eSCL 的四步受控流程对于广播了 eSCL 服务的精确型号技能给出五步中属于扫描的后三步构成一条严格的 eSCL 扫描流程读能力与状态在该 eSCL 服务 base 之下读取ScannerCapabilities与ScannerStatus然后只选择其支持的进纸来源input source、尺寸、分辨率、色彩模式与输出格式。与打印同理参数空间以设备响应为唯一依据。建作业把文档放入所选的送纸器或平板platen上用 eSCL XML 创建ScanJobs作业随后按设备协议要求跟踪返回的 jobLocation并拉取NextDocument如果网络目的地发生变化先取得授权再继续。取完即止取回所有请求的页面处理送纸器空feeder-empty与作业完成job-complete两类响应必要时关闭或取消该扫描作业本身扫描产物保存在用户批准的存储位置。其中authorize any changed network destination first一句对应 eSCL 协议中设备端可改写目标地址的行为设备返回的文档拉取地址可能与最初请求的地址不同技能要求先授权再接受避免扫描件落到未批准的目的地。整条流程与打印流程共享同一条设计逻辑先读能力、再发请求、再跟 Location/状态、最后验证终态。结果校验HTTP 状态与作业被接受都不算数技能的Verify the Result一节给出了两条反直觉但关键的校验原则打印检查 IPP 状态与打印作业的终态terminal job state而不是只看 HTTP 状态码。HTTP 200 只代表请求被设备接受不代表纸张已出来需要看job-state到达完成终态。扫描验证下载下来的媒体类型、图像/文档可读性、页数与请求设置是否一致一个被接受的扫描作业不是一个已取回的扫描件an accepted scan job is not a retrieved scan。这两条把协议层面成功与物理/内容层面成功明确区分开是本技能与通用网络操作技能最大的差别也是把该技能交给 LLM Agent 执行时最重要的护栏Agent 很容易在收到成功响应后就宣告任务完成而技能强制它继续读到终态。能力边界技能明确不做的事Limits一节划定了三条硬边界不对整个 Epson 产品线做承诺不承诺 eSCL、双面扫描duplex scanning或免认证访问——这些能力逐机验证以广播为准范围外协议WSD-only 扫描、SNMP/UDP 发现与控制、浏览器自动化、固件修改均不属于本技能。这里可以结合仓库源码看到一个有趣的对照Home Link 的发现模块 esp32/main/net_discovery.c 确实实现了 WSD、SNMP 等来源的监听SRC_WSD、SRC_SNMP位标志即发现阶段会用这些协议但 Epson 技能声明的是执行阶段边界——即使通过 SNMP/UDP 发现了设备也不据此发起 WSD-only 扫描控制。发现协议宽、操作协议窄正是这类设备技能降低误操作风险的方式。在技能目录中的位置与扩展方式在 skills/CATALOG.md 中Epson 技能与另外两个打印技能并列Brother 打印机——IPP 打印与作业状态含 MFC-J880DW 的 PWG Raster 路径HP Color LaserJet Pro M254dw——IPP 打印与状态Epson 打印机——IPP 打印在有支持的地方加 eSCL 扫描。三者同构YAML 元数据 触发条件 识别规则 前置条件 编号工作流 校验 Limits Sources。按 skills/README.md 的贡献指引若你找到了能与 Home Link 配合的其他设备可以按同样结构提交gadget-device-name/SKILL.md的 PR保持纯 Markdown。小结gadget-epson-printers 这份技能的核心价值不在于会发 IPP 请求而在于它给 Agent 定义了一套可审计的设备交互纪律以广播的服务条目为能力上限、能力查询先行、保留 job ID 与 Location 追踪到终态、HTTP 成功不等于任务成功、目的地变更需重新授权。理解这套模式后阅读目录中其他数十个设备技能如 飞利浦 Hue 桥、Roomba会发现同一套骨架只是协议与工作流各不相同。赞分享【免费下载链接】muse-gadget-sdkOpen source SDK to build Muse gadgets项目地址https://gitcode.com/gh_mirrors/mu/muse-gadget-sdk点击查看免费下载相关推荐Muse Gadget SDK 设备技能实战通过 Home Link 用 IPP 打印 HP Color LaserJet Pro M254dwMuse Gadget SDK 设备技能实战通过 Home Link 用 IPP 打印 HP Color LaserJet Pro M254dw 本文以 skMuse Gadgets 社区技能实战:通过 Muse Home Link 用 IPP 驱动 Brother 打印机Muse Gadgets 社区技能实战:通过 Muse Home Link 用 IPP 驱动 Brother 打印机 本文基于 muse gadget sdkpollyjs/utils 6.0.6 变更日志深度解读共享工具库的演进路线与破坏性变更pollyjs/utils 6.0.6 变更日志深度解读共享工具库的演进路线与破坏性变更 pollyjs/utils 是 Polly.js 生态中面向所有上一篇LlamaFarm金融欺诈检测多阶段风险识别系统下一篇AgentScope 2.0 多智能体框架实战指南让智能体的每个动作可见、可懂、可信任创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考