Chuyển đến nội dung chính

Documentation Index

Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt

Use this file to discover all available pages before exploring further.

Đối với các triển khai iMessage mới, hãy dùng BlueBubbles.Tích hợp imsg là di sản và có thể bị xóa trong một bản phát hành tương lai.
Trạng thái: tích hợp CLI bên ngoài di sản. Gateway khởi chạy imsg rpc và giao tiếp qua JSON-RPC trên stdio (không có daemon/cổng riêng).

BlueBubbles (được khuyến nghị)

Đường dẫn iMessage ưu tiên cho các thiết lập mới.

Ghép nối

Tin nhắn trực tiếp iMessage mặc định dùng chế độ ghép nối.

Tham chiếu cấu hình

Tham chiếu đầy đủ cho các trường iMessage.

Thiết lập nhanh

1

Cài đặt và xác minh imsg

brew install steipete/tap/imsg
imsg rpc --help
2

Cấu hình OpenClaw

{
  channels: {
    imessage: {
      enabled: true,
      cliPath: "/usr/local/bin/imsg",
      dbPath: "/Users/user/Library/Messages/chat.db",
    },
  },
}
3

Khởi động gateway

openclaw gateway
4

Phê duyệt ghép nối DM đầu tiên (dmPolicy mặc định)

openclaw pairing list imessage
openclaw pairing approve imessage <CODE>
Yêu cầu ghép nối hết hạn sau 1 giờ.

Yêu cầu và quyền (macOS)

  • Messages phải được đăng nhập trên Mac chạy imsg.
  • Cần Full Disk Access cho ngữ cảnh tiến trình chạy OpenClaw/imsg (truy cập CSDL Messages).
  • Cần quyền Automation để gửi tin nhắn qua Messages.app.
Quyền được cấp theo từng ngữ cảnh tiến trình. Nếu gateway chạy headless (LaunchAgent/SSH), hãy chạy một lệnh tương tác một lần trong cùng ngữ cảnh đó để kích hoạt lời nhắc:
imsg chats --limit 1
# or
imsg send <handle> "test"

Kiểm soát truy cập và định tuyến

channels.imessage.dmPolicy kiểm soát tin nhắn trực tiếp:
  • pairing (mặc định)
  • allowlist
  • open (yêu cầu allowFrom bao gồm "*")
  • disabled
Trường danh sách cho phép: channels.imessage.allowFrom.Mục trong danh sách cho phép có thể là handle hoặc mục tiêu chat (chat_id:*, chat_guid:*, chat_identifier:*).

Liên kết cuộc trò chuyện ACP

Các chat iMessage di sản cũng có thể được liên kết với phiên ACP. Luồng thao tác nhanh:
  • Chạy /acp spawn codex --bind here bên trong DM hoặc chat nhóm được phép.
  • Các tin nhắn tương lai trong cùng cuộc trò chuyện iMessage đó sẽ định tuyến tới phiên ACP đã được khởi tạo.
  • /new/reset đặt lại cùng phiên ACP đã liên kết tại chỗ.
  • /acp close đóng phiên ACP và xóa liên kết.
Hỗ trợ liên kết bền vững được cấu hình qua các mục bindings[] cấp cao nhất với type: "acp"match.channel: "imessage". match.peer.id có thể dùng:
  • handle DM đã chuẩn hóa như +15555550123 hoặc user@example.com
  • chat_id:<id> (được khuyến nghị cho liên kết nhóm ổn định)
  • chat_guid:<guid>
  • chat_identifier:<identifier>
Ví dụ:
{
  agents: {
    list: [
      {
        id: "codex",
        runtime: {
          type: "acp",
          acp: { agent: "codex", backend: "acpx", mode: "persistent" },
        },
      },
    ],
  },
  bindings: [
    {
      type: "acp",
      agentId: "codex",
      match: {
        channel: "imessage",
        accountId: "default",
        peer: { kind: "group", id: "chat_id:123" },
      },
      acp: { label: "codex-group" },
    },
  ],
}
Xem Agent ACP để biết hành vi liên kết ACP dùng chung.

Mẫu triển khai

Dùng một Apple ID và người dùng macOS chuyên dụng để lưu lượng bot được cô lập khỏi hồ sơ Messages cá nhân của bạn.Luồng điển hình:
  1. Tạo/đăng nhập một người dùng macOS chuyên dụng.
  2. Đăng nhập vào Messages bằng Apple ID của bot trong người dùng đó.
  3. Cài đặt imsg trong người dùng đó.
  4. Tạo SSH wrapper để OpenClaw có thể chạy imsg trong ngữ cảnh người dùng đó.
  5. Trỏ channels.imessage.accounts.<id>.cliPath.dbPath tới hồ sơ người dùng đó.
Lần chạy đầu tiên có thể yêu cầu phê duyệt GUI (Automation + Full Disk Access) trong phiên người dùng bot đó.
Tô pô phổ biến:
  • gateway chạy trên Linux/VM
  • iMessage + imsg chạy trên một Mac trong tailnet của bạn
  • wrapper cliPath dùng SSH để chạy imsg
  • remoteHost bật tải tệp đính kèm qua SCP
Ví dụ:
{
  channels: {
    imessage: {
      enabled: true,
      cliPath: "~/.openclaw/scripts/imsg-ssh",
      remoteHost: "bot@mac-mini.tailnet-1234.ts.net",
      includeAttachments: true,
      dbPath: "/Users/bot/Library/Messages/chat.db",
    },
  },
}
#!/usr/bin/env bash
exec ssh -T bot@mac-mini.tailnet-1234.ts.net imsg "$@"
Dùng khóa SSH để cả SSH và SCP đều không tương tác. Đảm bảo khóa host đã được tin cậy trước (ví dụ ssh bot@mac-mini.tailnet-1234.ts.net) để known_hosts được điền.
iMessage hỗ trợ cấu hình theo từng tài khoản trong channels.imessage.accounts.Mỗi tài khoản có thể ghi đè các trường như cliPath, dbPath, allowFrom, groupPolicy, mediaMaxMb, thiết lập lịch sử và danh sách cho phép gốc tệp đính kèm.

Phương tiện, chia đoạn và mục tiêu gửi

  • tiếp nhận tệp đính kèm đầu vào là tùy chọn: channels.imessage.includeAttachments
  • đường dẫn tệp đính kèm từ xa có thể được tải qua SCP khi remoteHost được đặt
  • đường dẫn tệp đính kèm phải khớp với các gốc được phép:
    • channels.imessage.attachmentRoots (cục bộ)
    • channels.imessage.remoteAttachmentRoots (chế độ SCP từ xa)
    • mẫu gốc mặc định: /Users/*/Library/Messages/Attachments
  • SCP dùng kiểm tra host-key nghiêm ngặt (StrictHostKeyChecking=yes)
  • kích thước phương tiện đầu ra dùng channels.imessage.mediaMaxMb (mặc định 16 MB)
  • giới hạn đoạn văn bản: channels.imessage.textChunkLimit (mặc định 4000)
  • chế độ chia đoạn: channels.imessage.chunkMode
    • length (mặc định)
    • newline (chia ưu tiên đoạn văn)
Mục tiêu rõ ràng được ưu tiên:
  • chat_id:123 (được khuyến nghị để định tuyến ổn định)
  • chat_guid:...
  • chat_identifier:...
Mục tiêu handle cũng được hỗ trợ:
  • imessage:+1555...
  • sms:+1555...
  • user@example.com
imsg chats --limit 20

Ghi cấu hình

iMessage cho phép ghi cấu hình do kênh khởi tạo theo mặc định (cho /config set|unset khi commands.config: true). Tắt:
{
  channels: {
    imessage: {
      configWrites: false,
    },
  },
}

Khắc phục sự cố

Xác thực binary và hỗ trợ RPC:
imsg rpc --help
openclaw channels status --probe
Nếu probe báo cáo RPC không được hỗ trợ, hãy cập nhật imsg.
Kiểm tra:
  • channels.imessage.dmPolicy
  • channels.imessage.allowFrom
  • phê duyệt ghép nối (openclaw pairing list imessage)
Kiểm tra:
  • channels.imessage.groupPolicy
  • channels.imessage.groupAllowFrom
  • hành vi danh sách cho phép channels.imessage.groups
  • cấu hình mẫu nhắc đến (agents.list[].groupChat.mentionPatterns)
Kiểm tra:
  • channels.imessage.remoteHost
  • channels.imessage.remoteAttachmentRoots
  • xác thực khóa SSH/SCP từ host gateway
  • khóa host tồn tại trong ~/.ssh/known_hosts trên host gateway
  • khả năng đọc đường dẫn từ xa trên Mac chạy Messages
Chạy lại trong terminal GUI tương tác trong cùng ngữ cảnh người dùng/phiên và phê duyệt lời nhắc:
imsg chats --limit 1
imsg send <handle> "test"
Xác nhận Full Disk Access + Automation đã được cấp cho ngữ cảnh tiến trình chạy OpenClaw/imsg.

Con trỏ tham chiếu cấu hình

Liên quan