本页内容
本页内容
主流消息传递
启用 imsg 专用 API
私有 API 模式解锁本机 iMessage 操作。它需要关闭 SIP、放松库验证以及成功的帮助程序注入。
启用 imsg 私有 API
imsg 有两种运行模式。对于 OpenClaw,推荐使用私有 API 模式,因为它能为该通道提供用户期望的原生 iMessage 操作。基础模式仍然适用于低风险安装、初始验证,或无法禁用 SIP 的主机。
- 基本模式(默认,无需SIP更改):通过
send出站文本和媒体,入站watch/history,聊天列表。这是您从新的brew install steipete/tap/imsg加上标准 macOS 权限 中获得的开箱即用的内容。 - 私有 API 模式:
imsg会向Messages.app注入一个 helper dylib,以调用内部IMCore函数。这将解锁react、edit、unsend、reply(线程式)、sendWithEffect、poll和poll-vote(原生 Messages 投票)、renameGroup、setGroupIcon、addParticipant、removeParticipant、leaveGroup,以及输入指示和已读回执。
本页推荐的操作面需要私有 API 模式。imsg README 对此要求写得很明确:
诸如
read、typing、launch、基于桥接的富发送、消息变更和聊天管理等高级功能都是可选的。它们需要禁用 SIP,并将一个 helper dylib 注入到Messages.app中。启用 SIP 时,imsg launch会拒绝注入。
辅助注入技术使用 imsg 自己的 dylib 来访问消息私有 API。 OpenClaw iMessage 路径中没有第三方服务器或 BlueBubbles 运行时。
设置
-
在运行 Messages.app 的 Mac 上安装(或升级)
imsg:bash imsg status --json的输出会报告bridge_version、rpc_methods以及每个方法的selectors,这样你就能在开始之前看到当前构建支持哪些能力。 -
禁用系统完整性保护和(在现代 macOS 上)库验证。 将非 Apple 帮助程序 dylib 注入 Apple-signed
Messages.app需要SIP 关闭 和 库验证放松。恢复模式 SIP 步骤是 macOS- 版本特定的:- macOS 10.13-10.15(Sierra-Catalina): 通过 Terminal 禁用 Library Validation,重启进入恢复模式,运行
csrutil disable,然后重启。 - macOS 11+(Big Sur 及更高版本),Intel: 进入恢复模式(或 Internet Recovery),运行
csrutil disable,然后重启。 - macOS 11+,Apple Silicon: 使用电源键启动流程进入恢复模式;在较新的 macOS 版本上,点击 Continue 时按住 Left Shift 键,然后运行
csrutil disable。虚拟机环境遵循单独流程,因此请先拍摄 VM 快照。
在 macOS 11 及更高版本上,单独执行
csrutil disable通常还不够。 Apple 仍然会将Messages.app作为平台二进制文件执行 library validation,因此即使关闭 SIP,adhoc 签名的 helper 也会被拒绝(Library Validation failed: ... platform binary, but mapped file is not)。在禁用 SIP 之后,还要禁用 library validation 并重启:bash macOS 26 (Tahoe),在 26.5.1: SIP off plus 上验证,上面的
DisableLibraryValidation命令足以注入助手26.0 到 26.5.x. 不需要启动参数。 plist 是决定性因素,也是 Tahoe 上注入失败时最常见的缺失步骤:- 有 plist:
imsg launch会完成注入,并且imsg status会报告advanced_features: true。 - 没有 plist(即使 SIP 已关闭):
imsg launch会失败,并报出Failed to launch: Timeout waiting for Messages.app to initialize。AMFI 在加载时拒绝了 adhoc helper,因此 bridge 永远无法就绪,启动最终超时。这个超时是大多数人在 Tahoe 上遇到的症状;修复方法就是上面的 plist,而不是采取更激进的手段。
如果在 macOS 升级后,
imsg launch注入失败,或者某些特定selectors开始返回 false,通常就是这个门槛导致的。在假设 SIP 步骤本身失败之前,请先检查你的 SIP 和 library-validation 状态。如果这些设置都正确,但 bridge 仍然无法注入,请收集imsg status --json和imsg launch的输出并反馈给imsg项目,而不是进一步削弱系统级安全控制。 - macOS 10.13-10.15(Sierra-Catalina): 通过 Terminal 禁用 Library Validation,重启进入恢复模式,运行
-
注入 helper。 在禁用 SIP 且已登录 Messages.app 的情况下:
bash 当 SIP 仍然启用时,
imsg launch会拒绝注入,因此这也可作为第 2 步是否生效的确认。 -
从 OpenClaw 验证桥接:
bash iMessage 条目应报告
works,imsg status --json | jq '{rpc_methods, selectors}'应显示 macOS 构建公开的功能。创建民意调查需要selectors.pollPayloadMessage;投票需要selectors.pollVoteMessage和poll.voteRPC 方法。 OpenClaw 插件仅通告缓存检查支持的操作,而空缓存则保持乐观状态并在首次调度时进行检查。
如果 openclaw channels status --probe 将通道报告为 works 但特定操作在调度时抛出“iMessage <action> 需要 imsg 私有 API 桥”,请再次运行 imsg launch — 帮助程序可能会退出(Messages.app 重新启动, OS 更新等)和缓存的 available: true 状态将保持广告操作,直到下一次检查刷新。
当 SIP 保持启用时
如果根据你的威胁模型不能关闭 SIP:
imsg会回退到基本模式——仅支持文本+媒体+接收。- OpenClaw插件仍然通告text/media发送和入站监控;它隐藏了操作界面中的
react、edit、unsend、reply、sendWithEffect和组操作(根据每个方法的功能门)。 - 您可以在关闭 SIP 的情况下运行单独的非 Apple-Silicon Mac(或专用机器人 Mac)来处理 iMessage 工作负载,同时在主要设备上保持启用 SIP。请参阅 专用机器人 macOS 用户(单独的 iMessage 身份)。