OpenClaw로 개인 비서 만들기
OpenClaw는 Pi 에이전트를 위한 WhatsApp + Telegram + Discord + iMessage 게이트웨이입니다. 플러그인으로 Mattermost를 추가할 수 있습니다. 이 가이드는 "개인 비서" 설정으로, 항상 켜져 있는 에이전트처럼 동작하는 전용 WhatsApp 번호를 사용합니다.
⚠️ 안전이 최우선입니다
에이전트에 다음과 같은 권한을 부여하게 됩니다:
- 머신에서 명령 실행 (Pi 도구 설정에 따라)
- 워크스페이스에서 파일 읽기/쓰기
- WhatsApp/Telegram/Discord/Mattermost(플러그인)를 통해 메시지 다시 보내기
보수적으로 시작하세요:
- 항상 channels.whatsapp.allowFrom을 설정하세요 (개인 Mac에서 전 세계에 공개된 상태로 실행하지 마세요).
- 비서용 전용 WhatsApp 번호를 사용하세요.
- Heartbeat은 이제 기본적으로 30분마다 실행됩니다. 설정을 신뢰할 때까지 agents.defaults.heartbeat.every: "0m"으로 설정하여 비활성화하세요.
사전 요구사항
- Node 22+
- PATH에서 사용 가능한 OpenClaw (권장: 전역 설치)
- 비서용 두 번째 전화번호 (SIM/eSIM/선불)
npm install -g openclaw@latest
# 또는: pnpm add -g openclaw@latest
소스에서 설치 (개발):
git clone https://github.com/openclaw/openclaw.git
cd openclaw
pnpm install
pnpm ui:build # 첫 실행 시 UI deps 자동 설치
pnpm build
pnpm link --global
두 개의 전화기 설정 (권장)
다음과 같은 구조를 원합니다:
귀하의 전화기 (개인) 두 번째 전화기 (비서)
┌─────────────────┐ ┌─────────────────┐
│ 귀하의 WhatsApp │ ──────▶ │ 비서 WA │
│ +1-555-YOU │ 메시지 │ +1-555-ASSIST │
└─────────────────┘ └────────┬────────┘
│ QR로 연결
▼
┌─────────────────┐
│ 귀하의 Mac │
│ (openclaw) │
│ Pi 에이전트 │
└─────────────────┘
개인 WhatsApp을 OpenClaw에 연결하면 귀하에게 오는 모든 메시지가 "에이전트 입력"이 됩니다. 이것은 원하는 것이 아닐 가능성이 높습니다.
5분 빠른 시작
- WhatsApp Web 페어링 (QR 표시; 비서 전화기로 스캔):
openclaw channels login
- Gateway 시작 (실행 상태 유지):
openclaw gateway --port 18789
- ~/.openclaw/openclaw.json에 최소 설정 넣기:
{
channels: { whatsapp: { allowFrom: ["+15555550123"] } }
}
이제 허용 목록에 등록된 전화기에서 비서 번호로 메시지를 보내세요.
온보딩이 완료되면 게이트웨이 토큰과 함께 대시보드가 자동으로 열리고 토큰화된 링크가 출력됩니다. 나중에 다시 열려면: openclaw dashboard.
에이전트에 워크스페이스 제공 (AGENTS)
OpenClaw는 워크스페이스 디렉토리에서 운영 지침과 "메모리"를 읽습니다.
기본적으로 OpenClaw는 ~/.openclaw/workspace를 에이전트 워크스페이스로 사용하며, 설정/첫 번째 에이전트 실행 시 자동으로 생성합니다 (시작용 AGENTS.md, SOUL.md, TOOLS.md, IDENTITY.md, USER.md 포함). BOOTSTRAP.md는 워크스페이스가 완전히 새 것일 때만 생성됩니다 (삭제 후 다시 나타나지 않아야 합니다).
팁: 이 폴더를 OpenClaw의 "메모리"처럼 취급하고 git 저장소로 만드세요 (가급적 비공개). 그러면 AGENTS.md + 메모리 파일이 백업됩니다. git이 설치되어 있으면 새 워크스페이스가 자동으로 초기화됩니다.
openclaw setup
전체 워크스페이스 레이아웃 + 백업 가이드: Agent workspace 메모리 워크플로우: Memory
선택사항: agents.defaults.workspace로 다른 워크스페이스 선택 (~ 지원).
{
agent: {
workspace: "~/.openclaw/workspace"
}
}
저장소에서 자체 워크스페이스 파일을 이미 제공하는 경우 부트스트랩 파일 생성을 완전히 비활성화할 수 있습니다:
{
agent: {
skipBootstrap: true
}
}
"비서"로 바꾸는 설정
OpenClaw는 기본적으로 좋은 비서 설정을 제공하지만 일반적으로 조정하고 싶을 것입니다:
- SOUL.md의 페르소나/지침
- thinking 기본값 (원하는 경우)
- heartbeat (신뢰할 때)
예시:
{
logging: { level: "info" },
agent: {
model: "anthropic/claude-opus-4-5",
workspace: "~/.openclaw/workspace",
thinkingDefault: "high",
timeoutSeconds: 1800,
// 0으로 시작; 나중에 활성화
heartbeat: { every: "0m" }
},
channels: {
whatsapp: {
allowFrom: ["+15555550123"],
groups: {
"*": { requireMention: true }
}
}
},
routing: {
groupChat: {
mentionPatterns: ["@openclaw", "openclaw"]
}
},
session: {
scope: "per-sender",
resetTriggers: ["/new", "/reset"],
reset: {
mode: "daily",
atHour: 4,
idleMinutes: 10080
}
}
}
세션 및 메모리
- 세션 파일: ~/.openclaw/agents/<agentId>/sessions/{{SessionId}}.jsonl
- 세션 메타데이터 (토큰 사용량, 마지막 라우트 등): ~/.openclaw/agents/<agentId>/sessions/sessions.json (레거시: ~/.openclaw/sessions/sessions.json)
- /new 또는 /reset은 해당 채팅에 대한 새 세션을 시작합니다 (resetTriggers를 통해 구성 가능). 단독으로 보내면 에이전트가 재설정을 확인하는 짧은 인사로 응답합니다.
- /compact [instructions]는 세션 컨텍스트를 압축하고 남은 컨텍스트 예산을 보고합니다.
Heartbeat (능동 모드)
기본적으로 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 같은 마크다운 헤더만 있는 경우), OpenClaw는 API 호출을 절약하기 위해 heartbeat 실행을 건너뜁니다.
- 파일이 없으면 heartbeat은 여전히 실행되고 모델이 무엇을 할지 결정합니다.
- 에이전트가 HEARTBEAT_OK로 응답하면 (선택적으로 짧은 패딩과 함께; agents.defaults.heartbeat.ackMaxChars 참조), OpenClaw는 해당 heartbeat에 대한 아웃바운드 전달을 억제합니다.
- Heartbeat은 전체 에이전트 턴을 실행합니다 — 짧은 간격은 더 많은 토큰을 소비합니다.
{
agent: {
heartbeat: { every: "30m" }
}
}
미디어 입출력
인바운드 첨부 파일 (이미지/오디오/문서)은 템플릿을 통해 명령에 표시될 수 있습니다:
- {{MediaPath}} (로컬 임시 파일 경로)
- {{MediaUrl}} (의사 URL)
- {{Transcript}} (오디오 전사가 활성화된 경우)
에이전트의 아웃바운드 첨부 파일: 자체 줄에 MEDIA:<path-or-url>을 포함합니다 (공백 없음). 예시:
여기 스크린샷입니다.
MEDIA:/tmp/screenshot.png
OpenClaw는 이를 추출하여 텍스트와 함께 미디어로 보냅니다.
운영 체크리스트
openclaw status # 로컬 상태 (자격 증명, 세션, 대기 중인 이벤트)
openclaw status --all # 전체 진단 (읽기 전용, 붙여넣기 가능)
openclaw status --deep # 게이트웨이 상태 프로브 추가 (Telegram + Discord)
openclaw health --json # 게이트웨이 상태 스냅샷 (WS)
로그는 /tmp/openclaw/ 아래에 있습니다 (기본값: openclaw-YYYY-MM-DD.log).
다음 단계
- WebChat: WebChat
- Gateway 운영: Gateway runbook
- Cron + 깨우기: Cron jobs
- macOS 메뉴 바 컴패니언: OpenClaw macOS app
- iOS 노드 앱: iOS app
- Android 노드 앱: Android app
- Windows 상태: Windows (WSL2)
- Linux 상태: Linux app
- 보안: Security