OpenClaw로 개인 비서 만들기
OpenClaw는 Discord, Google Chat, iMessage, Matrix, Microsoft Teams, Signal, Slack, Telegram, WhatsApp, Zalo 등을 AI 에이전트에 연결하는 셀프 호스팅 게이트웨이입니다. 이 가이드는 “개인 비서” 설정, 즉 항상 켜져 있는 AI 비서처럼 동작하는 전용 WhatsApp 번호 구성을 다룹니다.⚠️ 안전이 최우선입니다
에이전트에게 다음과 같은 권한이 주어집니다:- 사용자 도구 정책에 따라 컴퓨터에서 명령 실행
- 워크스페이스의 파일 읽기/쓰기
- WhatsApp/Telegram/Discord/Mattermost 및 기타 번들 채널을 통해 메시지를 다시 외부로 전송
- 항상
channels.whatsapp.allowFrom을 설정하세요(개인 Mac에서 누구에게나 열어 두고 실행하지 마세요). - 비서용 전용 WhatsApp 번호를 사용하세요.
- Heartbeat는 이제 기본적으로 30분마다 실행됩니다. 설정을 신뢰하기 전까지는
agents.defaults.heartbeat.every: "0m"으로 설정해 비활성화하세요.
사전 요구 사항
- OpenClaw 설치 및 온보딩 완료 — 아직 하지 않았다면 시작하기를 참조하세요
- 비서용 두 번째 전화번호(SIM/eSIM/선불 요금제)
두 대의 전화기 설정(권장)
원하는 구성은 다음과 같습니다: 개인 WhatsApp을 OpenClaw에 연결하면, 사용자에게 오는 모든 메시지가 “에이전트 입력”이 됩니다. 이는 대개 원하지 않는 방식입니다.5분 빠른 시작
- WhatsApp Web 페어링(QR 표시 후 비서용 전화기로 스캔):
- Gateway 시작(계속 실행 상태로 유지):
~/.openclaw/openclaw.json에 최소 구성 추가:
gateway.auth.token)을 사용하지만, gateway.auth.mode를 password로 변경했다면 비밀번호 인증도 작동합니다. 나중에 다시 열려면 openclaw dashboard를 사용하세요.
에이전트에 워크스페이스 제공하기(AGENTS)
OpenClaw는 워크스페이스 디렉터리에서 운영 지침과 “메모리”를 읽습니다. 기본적으로 OpenClaw는~/.openclaw/workspace를 에이전트 워크스페이스로 사용하며, 설정 또는 첫 번째 에이전트 실행 시 자동으로 이를 만들고(시작용 AGENTS.md, SOUL.md, TOOLS.md, IDENTITY.md, USER.md, HEARTBEAT.md 포함) 초기화합니다. BOOTSTRAP.md는 워크스페이스가 완전히 새것일 때만 생성됩니다(삭제한 후 다시 생기지 않아야 함). MEMORY.md는 선택 사항이며 자동 생성되지 않습니다. 존재하면 일반 세션에서 로드됩니다. 하위 에이전트 세션에는 AGENTS.md와 TOOLS.md만 주입됩니다.
팁: 이 폴더를 OpenClaw의 “메모리”처럼 취급하고 git 저장소(가능하면 비공개)로 만들어 AGENTS.md와 메모리 파일을 백업하세요. git이 설치되어 있으면 완전히 새로운 워크스페이스는 자동으로 초기화됩니다.
agents.defaults.workspace로 다른 워크스페이스를 선택할 수 있습니다(~ 지원).
이것을 “비서”로 만드는 구성
OpenClaw는 기본적으로 괜찮은 비서 설정을 제공하지만, 일반적으로 다음 항목을 조정하는 것이 좋습니다:SOUL.md의 페르소나/지침- thinking 기본값(필요한 경우)
- heartbeats(신뢰가 생긴 후)
세션과 메모리
- 세션 파일:
~/.openclaw/agents/<agentId>/sessions/{{SessionId}}.jsonl - 세션 메타데이터(토큰 사용량, 마지막 라우트 등):
~/.openclaw/agents/<agentId>/sessions/sessions.json(레거시:~/.openclaw/sessions/sessions.json) /new또는/reset은 해당 채팅에 대해 새 세션을 시작합니다(resetTriggers로 구성 가능). 단독으로 보내면 에이전트는 재설정을 확인하는 짧은 인사말로 응답합니다./compact [instructions]는 세션 컨텍스트를 compaction하고 남은 컨텍스트 예산을 보고합니다.
Heartbeats(능동 모드)
기본적으로 OpenClaw는 30분마다 다음 프롬프트로 heartbeat를 실행합니다:Read HEARTBEAT.md if it exists (workspace context). Follow it strictly. Do not infer or repeat old tasks from prior chats. If nothing needs attention, reply HEARTBEAT_OK.
비활성화하려면 agents.defaults.heartbeat.every: "0m"으로 설정하세요.
HEARTBEAT.md가 존재하지만 사실상 비어 있으면(빈 줄과# Heading같은 markdown 헤더만 있는 경우), OpenClaw는 API 호출을 절약하기 위해 heartbeat 실행을 건너뜁니다.- 파일이 없으면 heartbeat는 계속 실행되며 모델이 수행할 작업을 결정합니다.
- 에이전트가
HEARTBEAT_OK로 응답하면(선택적으로 짧은 패딩 허용,agents.defaults.heartbeat.ackMaxChars참조), OpenClaw는 해당 heartbeat에 대한 외부 전송을 억제합니다. - 기본적으로 heartbeat의 DM 스타일
user:<id>대상 전송은 허용됩니다. heartbeat 실행은 유지하면서 직접 대상 전송만 억제하려면agents.defaults.heartbeat.directPolicy: "block"으로 설정하세요. - Heartbeat는 전체 에이전트 턴으로 실행되므로 간격이 짧을수록 더 많은 토큰을 사용합니다.
미디어 입출력
수신 첨부 파일(이미지/오디오/문서)은 템플릿을 통해 명령에 노출할 수 있습니다:{{MediaPath}}(로컬 임시 파일 경로){{MediaUrl}}(의사 URL){{Transcript}}(오디오 전사가 활성화된 경우)
MEDIA:<path-or-url>를 포함하세요(공백 없음). 예시:
tools.fs.workspaceOnly가true이면, 발신MEDIA:로컬 경로는 OpenClaw 임시 루트, 미디어 캐시, 에이전트 워크스페이스 경로, 샌드박스가 생성한 파일로 제한됩니다.tools.fs.workspaceOnly가false이면, 발신MEDIA:는 에이전트가 이미 읽을 수 있는 호스트 로컬 파일을 사용할 수 있습니다.- 호스트 로컬 전송은 여전히 미디어 및 안전한 문서 형식(이미지, 오디오, 비디오, PDF, Office 문서)만 허용합니다. 일반 텍스트 및 비밀처럼 보이는 파일은 전송 가능한 미디어로 취급되지 않습니다.
운영 체크리스트
/tmp/openclaw/ 아래에 저장됩니다(기본값: openclaw-YYYY-MM-DD.log).
다음 단계
- WebChat: WebChat
- Gateway 운영: Gateway runbook
- Cron + wakeup: Cron jobs
- macOS 메뉴 막대 컴패니언: OpenClaw macOS app
- iOS 노드 앱: iOS app
- Android 노드 앱: Android app
- Windows 상태: Windows (WSL2)
- Linux 상태: Linux app
- 보안: Security