iMessage 在 Sentō 的所有频道里是独特的。没有 bot,没有 token,没有 API。集成通过读写 macOS Messages app 的本地 SQLite 数据库工作,这意味着智能体必须跑在 Mac 上。
前提条件
- 你走的是 macOS 安装路径
- 你在 Messages app 里登录了 iMessage
- 你能接受智能体读你的 Messages 数据库 —— 它必须读,才能收消息
授予"完全磁盘访问"权限
macOS 默认屏蔽对 Messages 数据库的访问。你得手动授予。
- 系统设置 → 隐私与安全性 → 完全磁盘访问
- 点
+,导航到 应用程序 → 实用工具 → 终端(或 iTerm、Warp、Ghostty,你用的那个) - 打开它
- 重启你的终端 让权限生效
没这个,iMessage 插件会在第一条消息时抛 SQLITE_CANTOPEN。
运行 sento init
npx sentoagent init
选 iMessage。没有 token 要粘贴。安装器会问你希望智能体从哪个 iMessage 账户回复和对话的电话号或邮箱。
工作原理
- 入站:一个后台进程每几秒钟轮询
~/Library/Messages/chat.db,找匹配你配置的身份的新消息。 - 出站:AppleScript 让 Messages app 发送。消息通过你真实的 iMessage 账户走,所以收件人看到的是你的号码/邮箱。
限制
- 仅限 Mac。Apple 没有公开的 iMessage API。Messages 数据库是唯一的方式。
- 尽力而为的兼容性。Apple 可能在任何 macOS 更新里改数据库 schema。这种时候 Sentō 可能需要 version bump。
- 群聊根据 macOS 版本有部分支持。
- 没有已读回执 / "正在输入"指示符 —— AppleScript 的 send API 不暴露这些。
如果出了问题
- 第一步检查:Messages.app 在运行吗?登录了吗?
- 第二步:你启动 Sentō 的那个终端(不是别的)拿到"完全磁盘访问"权限了吗?
- 第三步:
sento logs -n 50,找SQLITE_*错误。
如果 Apple 升了 macOS 版本、schema 变了,在 GitHub 开个 issue,带上你的 macOS 版本和最近的日志。