iMessage (레거시: imsg)
상태: 레거시 외부 CLI 통합. 게이트웨이는imsg rpc를 실행하고 stdio의 JSON-RPC를 통해 통신합니다(별도의 데몬/포트 없음).
BlueBubbles (권장)
새로운 설정을 위한 선호되는 iMessage 경로입니다.
페어링
iMessage DM은 기본적으로 페어링 모드를 사용합니다.
구성 참조
전체 iMessage 필드 참조입니다.
빠른 설정
- 로컬 Mac (빠른 경로)
- SSH를 통한 원격 Mac
요구 사항 및 권한(macOS)
imsg를 실행하는 Mac에서 Messages에 로그인되어 있어야 합니다.- OpenClaw/
imsg를 실행하는 프로세스 컨텍스트에는 전체 디스크 접근 권한이 필요합니다(Messages DB 접근). - Messages.app을 통해 메시지를 보내려면 자동화 권한이 필요합니다.
액세스 제어 및 라우팅
- DM 정책
- 그룹 정책 + 멘션
- 세션 및 결정적 응답
channels.imessage.dmPolicy는 다이렉트 메시지를 제어합니다:pairing(기본값)allowlistopen(allowFrom에"*"가 포함되어야 함)disabled
channels.imessage.allowFrom.허용 목록 항목은 핸들이나 채팅 대상(chat_id:*, chat_guid:*, chat_identifier:*)일 수 있습니다.ACP 대화 바인딩
레거시 iMessage 채팅은 ACP 세션에 바인딩할 수도 있습니다. 빠른 운영자 흐름:- DM 또는 허용된 그룹 채팅 안에서
/acp spawn codex --bind here를 실행합니다. - 이후 같은 iMessage 대화의 메시지는 생성된 ACP 세션으로 라우팅됩니다.
/new와/reset은 같은 바인딩된 ACP 세션을 제자리에서 재설정합니다./acp close는 ACP 세션을 닫고 바인딩을 제거합니다.
type: "acp" 및 match.channel: "imessage"가 있는 최상위 bindings[] 항목을 통해 지원됩니다.
match.peer.id에는 다음을 사용할 수 있습니다:
+15555550123또는user@example.com같은 정규화된 DM 핸들chat_id:<id>(안정적인 그룹 바인딩에 권장)chat_guid:<guid>chat_identifier:<identifier>
배포 패턴
전용 봇 macOS 사용자(별도 iMessage ID)
전용 봇 macOS 사용자(별도 iMessage ID)
봇 트래픽이 개인 Messages 프로필과 분리되도록 전용 Apple ID와 macOS 사용자를 사용하세요.일반적인 흐름:
- 전용 macOS 사용자를 만들고 로그인합니다.
- 해당 사용자에서 봇 Apple ID로 Messages에 로그인합니다.
- 해당 사용자에
imsg를 설치합니다. - OpenClaw가 해당 사용자 컨텍스트에서
imsg를 실행할 수 있도록 SSH 래퍼를 만듭니다. channels.imessage.accounts.<id>.cliPath와.dbPath를 해당 사용자 프로필로 지정합니다.
Tailscale을 통한 원격 Mac(예시)
Tailscale을 통한 원격 Mac(예시)
일반적인 토폴로지:SSH와 SCP가 모두 비대화형이 되도록 SSH 키를 사용하세요.
먼저 호스트 키가 신뢰되는지 확인하세요(예:
- 게이트웨이는 Linux/VM에서 실행됨
- iMessage +
imsg는 tailnet의 Mac에서 실행됨 cliPath래퍼는 SSH를 사용해imsg를 실행함remoteHost는 SCP 첨부 파일 가져오기를 활성화함
ssh bot@mac-mini.tailnet-1234.ts.net). 그러면 known_hosts가 채워집니다.다중 계정 패턴
다중 계정 패턴
iMessage는
channels.imessage.accounts 아래에서 계정별 구성을 지원합니다.각 계정은 cliPath, dbPath, allowFrom, groupPolicy, mediaMaxMb, 히스토리 설정, 첨부 파일 루트 허용 목록 등의 필드를 재정의할 수 있습니다.미디어, 청킹 및 전달 대상
첨부 파일 및 미디어
첨부 파일 및 미디어
- 수신 첨부 파일 수집은 선택 사항입니다:
channels.imessage.includeAttachments remoteHost가 설정되면 원격 첨부 파일 경로를 SCP로 가져올 수 있습니다- 첨부 파일 경로는 허용된 루트와 일치해야 합니다:
channels.imessage.attachmentRoots(로컬)channels.imessage.remoteAttachmentRoots(원격 SCP 모드)- 기본 루트 패턴:
/Users/*/Library/Messages/Attachments
- SCP는 엄격한 호스트 키 검사(
StrictHostKeyChecking=yes)를 사용합니다 - 발신 미디어 크기는
channels.imessage.mediaMaxMb를 사용합니다(기본값 16 MB)
발신 청킹
발신 청킹
- 텍스트 청크 제한:
channels.imessage.textChunkLimit(기본값 4000) - 청크 모드:
channels.imessage.chunkModelength(기본값)newline(문단 우선 분할)
주소 지정 형식
주소 지정 형식
선호되는 명시적 대상:
chat_id:123(안정적인 라우팅에 권장)chat_guid:...chat_identifier:...
imessage:+1555...sms:+1555...user@example.com
구성 쓰기
iMessage는 기본적으로 채널 시작 구성 쓰기를 허용합니다(commands.config: true일 때 /config set|unset용).
비활성화:
문제 해결
imsg를 찾을 수 없거나 RPC를 지원하지 않음
imsg를 찾을 수 없거나 RPC를 지원하지 않음
바이너리와 RPC 지원을 확인하세요:프로브에서 RPC 미지원으로 보고되면
imsg를 업데이트하세요.DM이 무시됨
DM이 무시됨
다음을 확인하세요:
channels.imessage.dmPolicychannels.imessage.allowFrom- 페어링 승인(
openclaw pairing list imessage)
그룹 메시지가 무시됨
그룹 메시지가 무시됨
다음을 확인하세요:
channels.imessage.groupPolicychannels.imessage.groupAllowFromchannels.imessage.groups허용 목록 동작- 멘션 패턴 구성(
agents.list[].groupChat.mentionPatterns)
원격 첨부 파일 실패
원격 첨부 파일 실패
다음을 확인하세요:
channels.imessage.remoteHostchannels.imessage.remoteAttachmentRoots- 게이트웨이 호스트에서의 SSH/SCP 키 인증
- 게이트웨이 호스트의
~/.ssh/known_hosts에 호스트 키가 존재하는지 - Messages를 실행하는 Mac에서 원격 경로를 읽을 수 있는지
macOS 권한 프롬프트를 놓쳤음
macOS 권한 프롬프트를 놓쳤음
같은 사용자/세션 컨텍스트의 상호작용 GUI 터미널에서 다시 실행하고 프롬프트를 승인하세요:OpenClaw/
imsg를 실행하는 프로세스 컨텍스트에 전체 디스크 접근 권한과 자동화 권한이 부여되었는지 확인하세요.