2026년 06월 22일

OpenClaw 스마트폰 제어 및 카카오톡 Messenger Bot R 연동 작업 보고서

OpenClaw 스마트폰 제어 및 카카오톡 Messenger Bot R 연동 작업 보고서

작성일: 2026-06-21
대상 기기: Samsung SM-A325N / Android 13
작성 목적: WordPress 게시 및 검토용 작업 경과 보고
보안 기준: 비밀번호, API 키, webhook URL, 토큰 원문은 본 보고서에 포함하지 않음

1. 요약

2026년 6월 21일에는 OpenClaw가 Android 스마트폰을 원격 제어하고, 해당 스마트폰의 카카오톡 및 Messenger Bot R을 통해 OpenClaw와 대화할 수 있도록 기반 구성을 진행했다.

핵심 결과는 다음과 같다.

  • OpenClaw 호스트에서 스마트폰 Termux SSH 접속을 구성했다.
  • Android 무선 ADB 페어링 및 재페어링 절차를 구축했다.
  • Messenger Bot R 앱의 AI소통 스크립트를 OpenClaw/n8n 릴레이와 연결했다.
  • 카카오톡 1:1 대화에서는 이름 계정의 일반 문장을 OpenClaw로 전달하도록 설정했다.
  • 단체방에서는 !! 접두 메시지에만 응답하도록 설정했다.
  • 단체방 메시지는 날짜별 JSONL 파일로 스마트폰에 저장하도록 구성했다.
  • Messenger Bot R 응답 timeout을 30초에서 120초로 늘려 긴 응답에서 발생하던 timeout 오류를 완화했다.

현재 구조는 운영 가능한 수준까지 구성되었지만, 카카오톡 알림의 답장 액션 생성 여부에 따라 실제 자동 답장 성공 여부가 달라질 수 있다. 특히 카카오톡이 전면에 떠 있거나 알림이 답장 가능한 형태로 생성되지 않으면 Messenger Bot R이 응답하지 못할 수 있다.

2. 전체 구성도

현재 목표 구조는 다음과 같다.

카카오톡 메시지
  -> Android 카카오톡 알림
  -> Messenger Bot R 알림 리스너
  -> AI소통 JavaScript 스크립트
  -> n8n webhook 릴레이
  -> OpenClaw
  -> n8n 응답
  -> Messenger Bot R replier.reply()
  -> 카카오톡 답장

스마트폰 제어 경로는 다음 두 가지로 나뉜다.

OpenClaw -> SSH -> Termux
OpenClaw -> ADB wireless debugging -> Android shell / UI control

SSH는 장기 유지용 기본 통로이고, ADB는 Android UI 제어와 상태 점검을 위한 보조 통로다.

3. 스마트폰 접속 구성

3.1 SSH 설정

스마트폰 Termux에서 SSH 서버가 8022/tcp 포트로 동작하는 것을 확인했다. OpenClaw 호스트에서는 전용 SSH 키를 생성하고 스마트폰 Termux의 authorized_keys에 공개키를 등록했다.

설정 결과:

  • 스마트폰 IP: 192.168.219.112
  • SSH 사용자: u0_a326
  • SSH 포트: 8022
  • OpenClaw SSH 별칭: openclaw-phone
  • 접속 명령:
ssh openclaw-phone

검증 결과:

  • SSH 접속 성공
  • 원격 명령 실행 성공
  • Termux 홈 경로 확인
  • 스마트폰 모델 및 Android 버전 확인

비밀번호는 지속 저장하지 않았고, 이후 접속은 키 기반으로 처리하도록 구성했다.

3.2 ADB 설정

OpenClaw 호스트에는 시스템 패키지 설치 권한이 없어 Google Android platform-tools를 사용자 홈 아래에 로컬 설치했다.

설치 위치:

~/.local/share/android-platform-tools/platform-tools/adb
~/.local/bin/adb

무선 디버깅은 Android 정책상 화면에서 일회성 페어링 코드를 확인해야 한다. OpenClaw가 코드를 임의로 생성하거나 승인 과정을 우회할 수는 없다.

구축한 보조 스크립트:

scripts/openclaw_phone_adb_connect.sh
scripts/openclaw_phone_adb_pair.sh
scripts/openclaw_phone_open_adb_settings.sh

각 역할은 다음과 같다.

  • openclaw_phone_adb_connect.sh: mDNS에서 현재 ADB 연결 포트를 찾아 자동 연결
  • openclaw_phone_adb_pair.sh: 페어링 코드와 포트를 받아 자동 페어링 후 연결
  • openclaw_phone_open_adb_settings.sh: SSH를 통해 스마트폰 개발자 옵션 화면 열기

현재까지 확인된 ADB 연결 상태:

  • 모델: SM-A325N
  • Android: 13
  • 상태: device
  • 개통 후 최종 사용 포트 예: 192.168.219.112:43777

ADB 포트는 무선 디버깅 재시작, 네트워크 변동, Android 상태에 따라 바뀔 수 있다.

4. 상시 연결 보강

Termux SSH가 더 오래 유지되도록 스마트폰에 keepalive 스크립트를 구성했다.

스마트폰 내부 스크립트:

~/.termux/openclaw-keepalive.sh
~/.termux/boot/start-sshd

동작:

  • termux-wake-lock 실행
  • sshd가 내려가 있으면 시작
  • 실행 로그 기록

로그 경로:

~/.termux/logs/openclaw-keepalive.log

추가로 Android 배터리/idle 예외에 다음 앱을 추가했다.

  • com.termux
  • com.xfl.msgbot

단, 재부팅 후 Termux SSH를 완전 자동으로 시작하려면 별도 Termux:Boot 앱 설치가 필요하다. 현재는 해당 앱이 설치되어 있지 않기 때문에 재부팅 이후 완전 무인 복구는 제한될 수 있다.

5. 스마트폰 개통 및 통신 상태

스마트폰 개통 후 모뎀 및 SIM 상태를 점검했다.

확인 결과:

  • SIM 상태: LOADED
  • 통신사 표시: KT
  • 네트워크 타입: LTE
  • 로밍: 아님
  • 음성망 등록: IN_SERVICE
  • 데이터망 등록: IN_SERVICE
  • LTE 신호: 양호
  • Wi-Fi도 동시에 연결 중

신호 예시:

LTE RSRP: -89 dBm
LTE RSRQ: -12
Signal level: 4

모바일 데이터 사용자 설정은 꺼진 상태로 확인되었다.

mobile_data=0
mUserMobileDataState=false

현재 운영은 Wi-Fi 기반으로 충분하지만, Wi-Fi 장애 시 LTE 데이터까지 사용하려면 별도로 모바일 데이터를 켜야 한다.

6. Messenger Bot R 구성

6.1 앱 상태

스마트폰에는 Messenger Bot R 앱이 설치되어 있으며 패키지명과 버전은 다음과 같다.

Package: com.xfl.msgbot
Version: 0.7.29a

확인된 상태:

  • 프로세스 실행 중
  • 앱 활성화 켜짐
  • AI소통 스크립트 존재
  • 스크립트 전원 켜짐
  • 컴파일 상태 compiled
  • 알림 접근 권한 허용
  • 배터리 예외 적용
  • 백그라운드 실행 허용

6.2 스크립트 주입 방법

Messenger Bot R 앱은 일반 ADB run-as로 내부 데이터에 직접 접근할 수 없었다.

확인된 제한:

  • run-as com.xfl.msgbot: package not debuggable
  • Android 기본 cmd clipboard: 이 기기에서 사용 불가
  • Termux clipboard 명령: 정상적으로 값이 들어가지 않음

따라서 임시로 오픈소스 ADBKeyBoard APK를 설치하여 ADB base64 입력 방식으로 긴 JavaScript 스크립트를 편집기에 주입했다.

운영 원칙:

  • ADBKeyBoard는 스크립트 주입 중에만 설치
  • 작업 후 삼성 키보드로 복구
  • ADBKeyBoard 제거

이 방식은 반복적으로 사용했으며, 매번 작업 후 제거했다.

7. OpenClaw/n8n 릴레이

Messenger Bot R의 AI소통 스크립트는 n8n webhook으로 JSON 요청을 보내고, n8n이 OpenClaw에 전달한 뒤 응답을 반환하는 구조다.

요청에 포함되는 주요 값:

  • 방 이름
  • 발신자 이름
  • 메시지 본문
  • 그룹 채팅 여부
  • 패키지명

민감 정보:

  • webhook 상세 URL
  • 인증 토큰

위 두 값은 로컬 secret 파일에서 관리하며 본 보고서에 포함하지 않는다.

검증 결과:

  • n8n webhook 직접 호출 HTTP 200 확인
  • ok=true 확인
  • reply 필드 존재 확인
  • 짧은 직접 요청 응답 시간 약 7.8초 확인

8. 대화 처리 규칙

현재 AI소통 스크립트의 대화 처리 규칙은 다음과 같다.

8.1 1:1 대화

이름 계정과 봇 계정의 1:1 대화방에서는 일반 문장도 OpenClaw로 전달한다.

예:

오늘 상태 어때?

처리 방식:

isGroupChat == false
sender == "이름"

위 조건을 만족하면 !ai 접두어 없이도 OpenClaw로 전달한다.

8.2 단체방 대화

단체방에서는 !! 접두어가 붙은 메시지만 응답한다.

예:

!!현재 상황 요약해줘

일반 단체방 메시지는 응답하지 않는다. 이는 단체방에서 봇이 불필요하게 개입하는 것을 막기 위한 안전장치다.

8.3 체크 명령

다음 명령은 로컬 Messenger Bot R 상태 확인용으로 유지했다.

!ai체크
!!체크

정상 응답:

메신저봇 R 로컬 응답 정상

9. 단체방 대화 로그 저장

단체방 메시지는 별도 파일에 저장하도록 구성했다.

초기에는 단일 파일 저장 방식이었다.

/sdcard/OpenClaw/msgbot/group_messages.jsonl

이후 날짜별 저장 방식으로 변경했다.

현재 저장 경로:

/sdcard/OpenClaw/msgbot/group_logs/YYYY-MM-DD.jsonl

예:

/sdcard/OpenClaw/msgbot/group_logs/2026-06-21.jsonl

저장 형식은 JSON Lines다. 각 줄은 하나의 메시지 기록을 의미한다.

기록 필드:

  • ts: 저장 시각
  • room: 방 이름
  • sender: 발신자
  • message: 메시지 내용
  • packageName: 패키지명

주의:

단체방 대화 내용 저장은 개인정보와 대화 프라이버시 이슈가 있을 수 있다. 실제 운영 전에는 해당 방 구성원에게 로그 저장 여부를 고지하거나, 최소한 운영 목적과 보관 기간을 정해야 한다.

10. Timeout 오류 조치

1:1 카카오톡 테스트 중 다음 오류가 확인되었다.

봇 오류: JavaException: java.net.SocketTimeoutException: timeout

원인:

Messenger Bot R JavaScript에서 OpenClaw/n8n 응답을 기다리는 HTTP read timeout이 30초로 설정되어 있었다. 모델 응답이 길거나 n8n/OpenClaw 처리 시간이 길어지면 30초를 넘을 수 있다.

조치:

connectTimeout: 10000ms -> 15000ms
readTimeout:    30000ms -> 120000ms

결과:

  • 긴 응답에서 timeout 발생 가능성 완화
  • 짧은 요청은 HTTP 200으로 정상 확인

잔여 리스크:

  • 120초를 넘는 장기 응답은 여전히 실패할 수 있다.
  • 카카오톡 알림 답장 액션 자체가 제한시간을 가질 수 있다.
  • 매우 긴 답변은 카카오톡 메시지 길이 제한이나 사용자 경험 측면에서 분할 응답이 필요할 수 있다.

11. 1:1 카카오톡 테스트 관찰

1:1 테스트 중 Messenger Bot R 자체 상태는 정상으로 확인되었다.

정상 확인 항목:

  • 프로세스 실행
  • 앱 활성화
  • 스크립트 켜짐
  • 컴파일 정상
  • 알림 접근 권한 허용
  • n8n/OpenClaw 직접 릴레이 정상

다만 실제 1:1 카카오톡 메시지 알림에서 답장 액션이 보이지 않고 읽음 액션만 보이는 상황이 있었다.

Messenger Bot R은 카카오톡 알림의 답장 액션을 이용해 자동 답장한다. 따라서 알림이 답장 가능한 형태로 생성되지 않으면 OpenClaw/n8n이 정상이어도 봇이 답장을 보낼 수 없다.

조치 및 권장 테스트 조건:

  • 봇 폰에서 카카오톡 방을 전면에 열지 않는다.
  • 봇 폰을 홈 화면 또는 대기 상태로 둔다.
  • 개인 계정 이름에서 봇 계정 1:1방으로 메시지를 보낸다.
  • 새 카카오톡 알림에 답장 액션이 생기는지 확인한다.

현재 판단:

시스템 설정과 스크립트는 정상이다. 실제 자동 답장 성공 여부는 카카오톡 알림이 답장 가능한 형태로 생성되는지에 달려 있다.

12. 이미지, 파일, 이모지 처리 검토

검토 결과는 다음과 같다.

가능한 부분:

  • 이모지 포함 텍스트 수신
  • 이모지 포함 텍스트 답변
  • 일반 텍스트 대화 응답 속도 개선

제한이 큰 부분:

  • 이미지 파일 원본 수신
  • 첨부파일 원본 수신
  • 카카오톡 내부 이미지 파일 직접 접근
  • OpenClaw가 카카오톡에 이미지/파일을 직접 첨부해 답장

이유:

Messenger Bot R은 주로 카카오톡 알림 텍스트와 알림 답장 액션을 기반으로 동작한다. 이미지가 오더라도 알림에는 “사진을 보냈습니다” 같은 텍스트만 나타날 수 있으며, 이미지 원본 바이너리에 안정적으로 접근하기 어렵다.

향후 이미지 분석을 하려면 별도 업로드 경로 또는 별도 파일 전달 구조가 필요하다.

13. 현재 운영 명령 요약

SSH 접속

ssh openclaw-phone

ADB 자동 연결

scripts/openclaw_phone_adb_connect.sh

ADB 재페어링

scripts/openclaw_phone_adb_pair.sh PAIRING_CODE [PAIRING_PORT]

스마트폰 개발자 옵션 열기

scripts/openclaw_phone_open_adb_settings.sh

현재 ADB shell 예시

adb -s 192.168.219.112:43777 shell '명령어'

단, ADB 포트는 변경될 수 있으므로 실제 운영 시에는 openclaw_phone_adb_connect.sh를 먼저 실행하는 것이 안정적이다.

14. 보안 및 개인정보 주의사항

이번 작업에서 다음 정보는 보고서에 포함하지 않았다.

  • 스마트폰 SSH 비밀번호
  • OpenClaw/n8n webhook 전체 URL
  • OpenClaw 인증 토큰
  • API 키
  • 개인 메시지 원문
  • 전화번호, IMEI, IMSI, ICCID 등 고유 식별자

운영 시 주의할 점:

  • 단체방 로그 저장은 사전 고지가 필요할 수 있다.
  • 로그 파일에는 대화 내용이 저장되므로 접근 권한 관리가 필요하다.
  • 스마트폰 분실 시 Termux, 카카오톡, Messenger Bot R, 저장 로그가 노출될 수 있다.
  • ADB 무선 디버깅은 가능하면 신뢰된 내부 네트워크에서만 사용해야 한다.
  • 페어링 코드는 일회성이므로 공개 저장하지 않는다.

15. 남은 과제

15.1 실제 카카오톡 자동 답장 최종 검증

아직 가장 중요한 검증 포인트는 실제 1:1 카카오톡 알림에 답장 액션이 붙고 Messenger Bot R이 답장을 보내는지다.

테스트 문구:

오늘 상태 어때?

또는 로컬 체크:

!ai체크

확인할 항목:

  • 카카오톡 알림 생성 여부
  • 알림에 답장 액션 존재 여부
  • Messenger Bot R 응답 여부
  • n8n/OpenClaw 호출 흔적
  • timeout 재발 여부

15.2 Termux:Boot 설치 검토

재부팅 후 SSH 자동 시작을 보장하려면 Termux:Boot 앱 설치가 필요하다.

현재는 다음이 준비되어 있다.

~/.termux/boot/start-sshd

하지만 Termux:Boot 앱이 없으면 부팅 후 자동 실행은 보장되지 않는다.

15.3 모바일 데이터 활성화 여부 결정

개통 후 LTE 망 등록은 정상으로 보이나, 모바일 데이터 사용자 설정은 꺼져 있었다. Wi-Fi 장애 대비까지 고려하면 모바일 데이터를 켤지 결정해야 한다.

15.4 로그 보관 정책 수립

단체방 로그가 날짜별로 저장되므로 보관 기간, 삭제 정책, 외부 백업 여부를 정해야 한다.

권장:

  • 7일 또는 30일 보관
  • 민감 방은 저장 제외
  • WordPress 공개 게시 전 원문 로그는 포함하지 않기

15.5 응답 속도 최적화

현재 구조는 n8n과 OpenClaw를 경유하므로 응답이 느릴 수 있다.

개선 후보:

  • 응답 길이 제한
  • 빠른 모델 프로필 사용
  • “처리 중” 선응답 후 후속 답변
  • OpenClaw 직접 릴레이 구조 검토

16. 결론

오늘 작업으로 OpenClaw와 Android 스마트폰, 카카오톡, Messenger Bot R, n8n 릴레이를 연결하는 기본 구조는 대부분 구축되었다.

현재 완성된 부분:

  • 스마트폰 SSH 제어
  • ADB 무선 제어 및 재페어링 보조 스크립트
  • Messenger Bot R OpenClaw 릴레이
  • 1:1 자연 대화 규칙
  • 단체방 !! 호출 규칙
  • 단체방 메시지 일별 로그 저장
  • timeout 완화
  • 배터리/백그라운드 실행 보강

남은 핵심 검증:

  • 실제 카카오톡 1:1 메시지에서 Messenger Bot R이 자동 답장하는지 최종 확인
  • 카카오톡 알림에 답장 액션이 안정적으로 붙는지 확인
  • 재부팅 후 자동 복구를 위한 Termux:Boot 도입 여부 결정

운영 관점에서 보면, 현재 시스템은 “실험 운영 가능” 단계에 도달했다. 다만 카카오톡 알림 기반 자동화의 특성상, 카카오톡 앱 상태와 알림 형태에 따라 응답 가능 여부가 달라질 수 있으므로 며칠간 실제 사용 테스트를 통해 안정성을 검증하는 것이 필요하다.