구성
OpenClaw 는~/.openclaw/openclaw.json 에서 선택적 구성을 읽습니다.
파일이 없으면 OpenClaw 는 안전한 기본값을 사용합니다. 구성을 추가하는 일반적인 이유:
- 채널을 연결하고 봇에 메시지를 보낼 수 있는 사용자를 제어
- 모델, 도구, 샌드박스 또는 자동화(cron, 훅) 설정
- 세션, 미디어, 네트워킹 또는 UI 조정
최소 구성
구성 편집
- 대화형 마법사
- CLI (한 줄 명령)
- Control UI
- 직접 편집
엄격한 유효성 검사
유효성 검사가 실패하면:- 게이트웨이가 부팅되지 않음
- 진단 명령만 작동 (
openclaw doctor,openclaw logs,openclaw health,openclaw status) openclaw doctor를 실행하여 정확한 문제를 확인openclaw doctor --fix(또는--yes)를 실행하여 수리 적용
일반적인 작업
채널 설정 (WhatsApp, Telegram, Discord 등)
채널 설정 (WhatsApp, Telegram, Discord 등)
각 채널에는
channels.<provider> 아래에 고유한 구성 섹션이 있습니다. 설정 단계는 해당 채널 페이지를 참조하세요:- WhatsApp —
channels.whatsapp - Telegram —
channels.telegram - Discord —
channels.discord - Slack —
channels.slack - Signal —
channels.signal - iMessage —
channels.imessage - Google Chat —
channels.googlechat - Mattermost —
channels.mattermost - MS Teams —
channels.msteams
모델 선택 및 구성
모델 선택 및 구성
기본 모델과 선택적 대체 모델을 설정합니다:
agents.defaults.models는 모델 카탈로그를 정의하며/model의 허용 목록으로 작동합니다.- 모델 참조는
provider/model형식을 사용합니다 (예:anthropic/claude-opus-4-6). agents.defaults.imageMaxDimensionPx는 전사본/도구 이미지 다운스케일링을 제어합니다 (기본값1200); 낮은 값은 일반적으로 스크린샷이 많은 실행에서 비전 토큰 사용량을 줄입니다.- 채팅에서 모델 전환은 Models CLI를, 인증 로테이션 및 대체 동작은 Model Failover를 참조하세요.
- 커스텀/자체 호스팅 프로바이더는 레퍼런스의 Custom providers를 참조하세요.
봇에 메시지를 보낼 수 있는 사용자 제어
봇에 메시지를 보낼 수 있는 사용자 제어
DM 접근은 채널별로
dmPolicy 를 통해 제어됩니다:"pairing"(기본값): 알 수 없는 발신자에게 승인을 위한 일회성 페어링 코드 제공"allowlist":allowFrom(또는 페어링된 허용 저장소)에 있는 발신자만 허용"open": 모든 수신 DM 허용 (allowFrom: ["*"]필요)"disabled": 모든 DM 무시
groupPolicy + groupAllowFrom 또는 채널별 허용 목록을 사용합니다.채널별 세부 사항은 전체 레퍼런스를 참조하세요.그룹 채팅 멘션 게이팅 설정
그룹 채팅 멘션 게이팅 설정
그룹 메시지는 기본적으로 멘션 필수입니다. 에이전트별 패턴을 구성합니다:
- 메타데이터 멘션: 네이티브 @-멘션 (WhatsApp 탭하여 멘션, Telegram @bot 등)
- 텍스트 패턴:
mentionPatterns의 정규식 패턴 - 채널별 오버라이드 및 셀프 채팅 모드는 전체 레퍼런스를 참조하세요.
세션 및 초기화 구성
세션 및 초기화 구성
세션은 대화 연속성과 격리를 제어합니다:
dmScope:main(공유) |per-peer|per-channel-peer|per-account-channel-peerthreadBindings: 스레드 바인딩 세션 라우팅의 글로벌 기본값 (Discord는/focus,/unfocus,/agents,/session ttl지원).- 범위 지정, ID 링크 및 전송 정책은 Session Management를 참조하세요.
- 모든 필드는 전체 레퍼런스를 참조하세요.
샌드박스 활성화
샌드박스 활성화
하트비트 설정 (주기적 체크인)
하트비트 설정 (주기적 체크인)
every: 기간 문자열 (30m,2h). 비활성화하려면0m으로 설정.target:last|whatsapp|telegram|discord|none- 전체 가이드는 Heartbeat를 참조하세요.
cron 작업 구성
cron 작업 구성
웹훅 (훅) 설정
웹훅 (훅) 설정
멀티 에이전트 라우팅 구성
멀티 에이전트 라우팅 구성
구성을 여러 파일로 분할 ($include)
구성을 여러 파일로 분할 ($include)
대규모 구성을 정리하려면
$include 를 사용하세요:- 단일 파일: 포함하는 객체를 대체
- 파일 배열: 순서대로 딥 머지 (나중 것이 우선)
- 형제 키: include 이후에 병합 (포함된 값을 오버라이드)
- 중첩 include: 최대 10단계 깊이까지 지원
- 상대 경로: 포함하는 파일 기준으로 해석
- 오류 처리: 누락된 파일, 파싱 오류, 순환 include 에 대한 명확한 오류
구성 핫 리로드
게이트웨이는~/.openclaw/openclaw.json 을 감시하고 변경 사항을 자동으로 적용합니다 — 대부분의 설정에서 수동 재시작이 필요하지 않습니다.
리로드 모드
| 모드 | 동작 |
|---|---|
hybrid (기본값) | 안전한 변경을 즉시 핫 적용합니다. 중요한 변경은 자동으로 재시작합니다. |
hot | 안전한 변경만 핫 적용합니다. 재시작이 필요할 때 경고를 기록합니다 — 직접 처리해야 합니다. |
restart | 안전 여부와 관계없이 모든 구성 변경 시 게이트웨이를 재시작합니다. |
off | 파일 감시를 비활성화합니다. 변경 사항은 다음 수동 재시작 시 적용됩니다. |
핫 적용 vs 재시작 필요
대부분의 필드는 다운타임 없이 핫 적용됩니다.hybrid 모드에서는 재시작이 필요한 변경이 자동으로 처리됩니다.
| 카테고리 | 필드 | 재시작 필요? |
|---|---|---|
| 채널 | channels.*, web (WhatsApp) — 모든 내장 및 확장 채널 | 아니오 |
| 에이전트 & 모델 | agent, agents, models, routing | 아니오 |
| 자동화 | hooks, cron, agent.heartbeat | 아니오 |
| 세션 & 메시지 | session, messages | 아니오 |
| 도구 & 미디어 | tools, browser, skills, audio, talk | 아니오 |
| UI & 기타 | ui, logging, identity, bindings | 아니오 |
| 게이트웨이 서버 | gateway.* (port, bind, auth, tailscale, TLS, HTTP) | 예 |
| 인프라 | discovery, canvasHost, plugins | 예 |
gateway.reload 와 gateway.remote 는 예외입니다 — 이들을 변경해도 재시작이 트리거되지 않습니다.구성 RPC (프로그래밍 방식 업데이트)
제어 플레인 쓰기 RPC (
config.apply, config.patch, update.run)는 deviceId+clientIp당 60초에 3개 요청으로 속도 제한됩니다. 제한이 걸리면 RPC가 retryAfterMs와 함께 UNAVAILABLE을 반환합니다.config.apply (전체 교체)
config.apply (전체 교체)
전체 구성을 검증 + 작성하고 게이트웨이를 한 번에 재시작합니다.매개변수:
raw(문자열) — 전체 구성을 위한 JSON5 페이로드baseHash(선택 사항) —config.get에서 가져온 구성 해시 (구성이 존재할 때 필수)sessionKey(선택 사항) — 재시작 후 웨이크업 핑을 위한 세션 키note(선택 사항) — 재시작 센티널을 위한 메모restartDelayMs(선택 사항) — 재시작 전 지연 (기본값 2000)
config.patch (부분 업데이트)
config.patch (부분 업데이트)
기존 구성에 부분 업데이트를 병합합니다 (JSON 머지 패치 시맨틱):
- 객체는 재귀적으로 병합
null은 키를 삭제- 배열은 교체
raw(문자열) — 변경할 키만 포함된 JSON5baseHash(필수) —config.get에서 가져온 구성 해시sessionKey,note,restartDelayMs—config.apply와 동일
config.apply와 동일합니다: 대기 중인 재시작이 통합되며 재시작 사이클 사이에 30초의 쿨다운이 적용됩니다.환경 변수
OpenClaw 는 부모 프로세스의 환경 변수와 함께 다음을 읽습니다:- 현재 작업 디렉토리의
.env(있는 경우) ~/.openclaw/.env(전역 대체)
셸 환경 가져오기 (선택 사항)
셸 환경 가져오기 (선택 사항)
활성화되어 있고 예상 키가 설정되지 않은 경우, OpenClaw 는 로그인 셸을 실행하고 누락된 키만 가져옵니다:환경 변수 동등 항목:
OPENCLAW_LOAD_SHELL_ENV=1구성 값에서 환경 변수 치환
구성 값에서 환경 변수 치환
${VAR_NAME} 으로 모든 구성 문자열 값에서 환경 변수를 참조할 수 있습니다:- 대문자 이름만 매칭:
[A-Z_][A-Z0-9_]* - 누락되거나 비어있는 변수는 로드 시 오류 발생
- 리터럴 출력을 위해
$${VAR}로 이스케이프 $include파일 내에서도 작동- 인라인 치환:
"${BASE}/v1"→"https://api.example.com/v1"
전체 레퍼런스
필드별 전체 레퍼런스는 **구성 레퍼런스**를 참조하세요.관련: 구성 예제 · 구성 레퍼런스 · Doctor