Tools (OpenClaw)
OpenClaw는 브라우저, 캔버스, 노드, 크론을 위한 일급 에이전트 도구를 제공합니다. 이는 기존의openclaw-* 스킬을 대체합니다. 도구는 타입화되어 있으며, 쉘 사용을 피하고 에이전트는 이를 직접적으로 의존해야 합니다.
도구 비활성화
openclaw.json에서 tools.allow / tools.deny를 통해 전역적으로 도구를 허용/거부할 수 있습니다 (거부가 우선). 이는 모델 프로바이더로 보내지는 비허용 도구를 방지합니다.
- 매칭은 대소문자를 구분하지 않습니다.
*와일드카드가 지원됩니다 ("*"은 모든 도구를 의미합니다).tools.allow가 불명확하거나 로드되지 않은 플러그인 도구 이름만 참조하는 경우, OpenClaw는 경고를 로그에 기록하고 허용 목록을 무시하여 핵심 도구가 계속 사용 가능하게 합니다.
도구 프로필 (기본 허용 목록)
tools.profile은 tools.allow/tools.deny 전에 기본 도구 허용 목록을 설정합니다. 에이전트별 오버라이드는 agents.list[].tools.profile을 사용합니다.
프로필:
minimal:session_status만coding:group:fs,group:runtime,group:sessions,group:memory,imagemessaging:group:messaging,sessions_list,sessions_history,sessions_send,session_statusfull: 제한 없음 (미설정과 동일)
프로바이더별 도구 정책
tools.byProvider를 사용하여 특정 프로바이더 (또는 단일 provider/model)에 대한 도구를 추가적으로 제한할 수 있습니다. 글로벌 기본값을 변경하지 않고 적용 가능합니다. 에이전트별 오버라이드는 agents.list[].tools.byProvider를 사용합니다.
이는 기본 도구 프로필 이후 및 허용/거부 목록 전에 적용되며, 도구 집합을 제한할 수만 있습니다. 프로바이더 키는 provider (예: google-antigravity) 또는 provider/model (예: openai/gpt-5.2)를 수용합니다.
예시 (글로벌 코딩 프로필 유지, Google Antigravity에 대해 최소 도구 사용):
도구 그룹 (약어)
도구 정책 (글로벌, 에이전트, 샌드박스)은group:* 항목을 사용하여 여러 도구로 확장 가능합니다. 이를 tools.allow / tools.deny에서 사용하십시오.
사용 가능한 그룹:
group:runtime:exec,bash,processgroup:fs:read,write,edit,apply_patchgroup:sessions:sessions_list,sessions_history,sessions_send,sessions_spawn,session_statusgroup:memory:memory_search,memory_getgroup:web:web_search,web_fetchgroup:ui:browser,canvasgroup:automation:cron,gatewaygroup:messaging:messagegroup:nodes:nodesgroup:openclaw: 모든 내장 OpenClaw 도구 (프로바이더 플러그인 제외)
플러그인 + 도구
플러그인은 핵심 세트를 넘어서 추가 도구(및 CLI 명령어)를 등록할 수 있습니다. 설치 및 설정에 대한 정보는 플러그인을 참조하고 도구 사용 지침이 프롬프트에 주입되는 방식은 스킬을 참조하십시오. 일부 플러그인은 도구와 함께 자체 스킬도 제공합니다 (예: 음성 통화 플러그인). 옵션 플러그인 도구:- Lobster: 재개 가능한 승인 기능이 있는 타입화된 워크플로우 런타임 (게이트웨이 호스트에 Lobster CLI 필요).
- LLM Task: 구조화된 워크플로우 출력을 위한 JSON 전용 LLM 단계 (옵션 스키마 검증).
도구 인벤토리
apply_patch
하나 이상의 파일에 구조화된 패치를 적용합니다. 다중 헝크 편집에 사용하십시오. 실험적 기능: tools.exec.applyPatch.enabled로 활성화 (OpenAI 모델만). tools.exec.applyPatch.workspaceOnly는 기본적으로 true로 설정되어 있습니다 (워크스페이스에 한정됨). apply_patch가 워크스페이스 디렉토리 외부에 쓰기/삭제하도록 하려면 이를 false로 설정하세요.
exec
작업 공간에서 셸 명령어를 실행합니다.
핵심 매개변수:
command(필수)yieldMs(타임아웃 후 자동 백그라운드, 기본값 10000)background(즉시 백그라운드)timeout(초; 초과 시 프로세스 종료, 기본값 1800)elevated(bool; 호스트에서 올라간 모드가 활성화/허용될 경우 실행; 에이전트가 샌드박스 격리된 경우에만 동작 변경)host(sandbox | gateway | node)security(deny | allowlist | full)ask(off | on-miss | always)node(host=node시 노드 id/이름)- 실제 TTY가 필요한가요?
pty: true를 설정하세요.
- 백그라운드 상태에서는
sessionId와 함께status: "running"을 반환합니다. process를 사용하여 백그라운드 세션을 폴링/로그/기록/종료/삭제할 수 있습니다.process가 허용되지 않는 경우,exec는 동기식으로 실행하며yieldMs/background를 무시합니다.elevated는tools.elevated와agents.list[].tools.elevated오버라이드를 모두 허용해야 하며,host=gateway+security=full의 별칭 역할을 합니다.elevated는 에이전트가 샌드박스 격리된 경우에만 동작을 변경하며, 그렇지 않으면 동작하지 않습니다.host=node는 macOS 동반 앱이나 헤드리스 노드 호스트 (openclaw node run)를 대상으로 할 수 있습니다.- 게이트웨이/노드 승인 및 허용 목록: Exec 승인.
process
백그라운드 exec 세션을 관리합니다.
핵심 작업:
list,poll,log,write,kill,clear,remove
poll은 새로운 출력과 완료 시 종료 상태를 반환합니다.log는 라인 기반의offset/limit을 지원합니다 (offset을 생략하면 마지막 N 라인을 가져옵니다).process는 에이전트별로 범위가 지정되며, 다른 에이전트의 세션은 보이지 않습니다.
loop-detection (도구 호출 루프 가드레일)
OpenClaw는 최근 도구 호출 이력을 추적하여 반복적인 성과 없는 루프를 감지할 때 차단하거나 경고합니다.
tools.loopDetection.enabled: true로 활성화하세요 (기본값은 false).
genericRepeat: 도구와 매개변수가 동일한 반복적인 호출 패턴.knownPollNoProgress: 동일한 출력의 반복적인 폴링 도구.pingPong: 진행되지 않는A/B/A/B반복 패턴.- 에이전트별 오버라이드:
agents.list[].tools.loopDetection.
web_search
Brave Search API를 사용하여 웹을 검색합니다.
핵심 매개변수:
query(필수)count(1–10; 기본값은tools.web.search.maxResults에서 설정)
- Brave API 키가 필요합니다 (권장:
openclaw configure --section web명령어나BRAVE_API_KEY설정). tools.web.search.enabled로 활성화.- 응답은 캐시됩니다 (기본 15분).
- 설정은 웹 도구를 참조하십시오.
web_fetch
URL에서 읽을 수 있는 콘텐츠를 추출 (HTML → markdown/text)합니다.
핵심 매개변수:
url(필수)extractMode(markdown|text)maxChars(긴 페이지를 자름)
tools.web.fetch.enabled로 활성화.maxChars는tools.web.fetch.maxCharsCap으로 제한됩니다 (기본 50000).- 응답은 캐시됩니다 (기본 15분).
- JS가 많은 사이트의 경우 브라우저 도구를 선호하십시오.
- 설정은 웹 도구를 참조하십시오.
- 선택적 안티봇 대체는 Firecrawl를 참조하십시오.
browser
OpenClaw에서 관리하는 전용 브라우저를 제어합니다.
핵심 작업:
status,start,stop,tabs,open,focus,closesnapshot(aria/ai)screenshot(이미지 블록 +MEDIA:<path>반환)act(UI 작업: click/type/press/hover/drag/select/fill/resize/wait/evaluate)navigate,console,pdf,upload,dialog
profiles— 모든 브라우저 프로필을 상태와 함께 나열create-profile— 자동 할당된 포트(또는cdpUrl)로 새 프로필 생성delete-profile— 브라우저 중지, 사용자 데이터 삭제, 설정에서 삭제 (로컬 전용)reset-profile— 고아 프로세스를 프로필의 포트에서 종료 (로컬 전용)
profile(옵션; 기본값은browser.defaultProfile)target(sandbox|host|node)node(옵션; 특정 노드 id/이름 선택)
browser.enabled=true가 필요 (기본값은true; 비활성화하려면false로 설정).- 모든 작업은 다중 인스턴스 지원을 위한 선택적
profile매개변수를 수용합니다. profile이 생략되면 “chrome”으로 기본 설정되는browser.defaultProfile을 사용합니다.- 프로필 이름은 소문자, 영문자 및 하이픈만 허용 (최대 64자).
- 포트 범위: 18800-18899 (~100개 프로필 최대).
- 원격 프로필은 부착 전용 (시작/중지/재설정 없음).
- 브라우저 사용 가능한 노드가 연결된 경우, 도구가 자동으로 해당 노드로 경로를 지정할 수 있습니다 (직접
target을 지정하지 않은 경우). snapshot은 Playwright가 설치된 경우 기본적으로ai사용; 접근성 트리를 위한aria사용.snapshot은interactive,compact,depth,selector와 같은 역할 스냅샷 옵션도 지원하여e12와 같은 참조를 반환합니다.act는snapshot의ref을 필요로 하며, AI 스냅샷의 숫자12또는 역할 스냅샷의e12입니다. 드문 CSS 선택기 필요 시evaluate를 사용하십시오.- 기본적으로
act→wait를 피하십시오; 신뢰할 수 있는 UI 상태가 없는 경우에만 사용하십시오. upload는 선택적으로 무장 후 자동 클릭을 위한ref를 전달할 수 있습니다.upload는 또한<input type="file">을 직접 설정하기 위한inputRef(aria 참조) 또는element(CSS 선택기)를 지원합니다.
canvas
노드 캔버스를 구동합니다 (present, eval, snapshot, A2UI).
핵심 작업:
present,hide,navigate,evalsnapshot(이미지 블록 +MEDIA:<path>반환)a2ui_push,a2ui_reset
- 게이트웨이
node.invoke를 내부적으로 사용합니다. node가 제공되지 않으면, 도구는 기본값을 선택합니다 (단일 연결 노드 또는 로컬 맥 노드).- A2UI는 v0.8만 지원 (
createSurface없음); CLI는 v0.9 JSONL을 라인 오류로 거부합니다. - 빠른 테스트:
openclaw nodes canvas a2ui push --node <id> --text "Hello from A2UI".
nodes
짝지어진 노드를 검색하고 대상으로 합니다; 알림을 보내고 카메라/스크린을 캡처합니다.
핵심 작업:
status,describepending,approve,reject(페어링)notify(macOSsystem.notify)run(macOSsystem.run)camera_snap,camera_clip,screen_recordlocation_get
- 카메라/스크린 명령은 노드 앱이 전경에 있어야 합니다.
- 이미지는 이미지 블록 +
MEDIA:<path>로 반환됩니다. - 비디오는
FILE:<path>(mp4)로 반환됩니다. - 위치는 JSON 페이로드 (위도/경도/정확도/타임스탬프)로 반환됩니다.
run매개변수:commandargv 배열; 옵션으로cwd,env(KEY=VAL),commandTimeoutMs,invokeTimeoutMs,needsScreenRecording.
run):
image
구성된 이미지 모델로 이미지를 분석합니다.
핵심 매개변수:
image(필수 경로 또는 URL)prompt(옵션; 기본값은 “Describe the image.”)model(옵션 오버라이드)maxBytesMb(옵션 사이즈 제한)
agents.defaults.imageModel이 구성되었을 때만 사용 가능 (주요 또는 보조), 또는 기본 모델과 구성된 인증에서 암시적 이미지 모델을 유추할 수 있을 때 (최선의 짝짓기).- 주 채팅 모델과 독립적으로 이미지 모델을 직접 사용합니다.
message
Discord/Google Chat/Slack/Telegram/WhatsApp/Signal/iMessage/MS Teams에서 메시지 및 채널 작업을 보냅니다.
핵심 작업:
send(텍스트 + 옵션 미디어; MS Teams는card도 지원, 적응형 카드용)poll(WhatsApp/Discord/MS Teams 설문조사)react/reactions/read/edit/deletepin/unpin/list-pinspermissionsthread-create/thread-list/thread-replysearchstickermember-info/role-infoemoji-list/emoji-upload/sticker-uploadrole-add/role-removechannel-info/channel-listvoice-statusevent-list/event-createtimeout/kick/ban
send는 WhatsApp이 게이트웨이를 통해 라우팅되고, 다른 채널은 직접 연결됩니다.poll은 WhatsApp과 MS Teams는 게이트웨이를 사용하고, Discord 설문조사는 직접 연결됩니다.- 메시지 도구 호출이 활성 채팅 세션에 바인딩된 경우, 전송은 그 세션의 대상으로 제한되어 교차 컨텍스트 유출을 방지합니다.
cron
게이트웨이 크론 작업 및 웨이크업을 관리합니다.
핵심 작업:
status,listadd,update,remove,run,runswake(시스템 이벤트 큐에 추가 + 선택사항 즉시 하트비트)
add는 전체 크론 작업 객체가 필요 (cron.addRPC와 동일한 스키마).update는{ jobId, patch }를 사용 (id는 호환성을 위해 수용됨).
gateway
실행 중인 게이트웨이 프로세스를 다시 시작하거나 업데이트를 적용합니다 (인플레이스).
핵심 작업:
restart(권한 부여 + 프로세스 내 재시작을 위한SIGUSR1전송;openclaw gateway인플레이스 재시작)config.get/config.schemaconfig.apply(유효성 검사 + 설정 기록 + 재시작 + 웨이크)config.patch(부분 업데이트 병합 + 재시작 + 웨이크)update.run(업데이트 실행 + 재시작 + 웨이크)
- 비행 중인 응답을 방해하지 않도록
delayMs(기본값 2000)를 사용하십시오. restart는 기본적으로 활성화되어 있으며,commands.restart: false로 비활성화 가능합니다.
sessions_list / sessions_history / sessions_send / sessions_spawn / session_status
세션 나열, 대화 내역 검사, 또는 다른 세션으로 전송합니다.
핵심 매개변수:
sessions_list:kinds?,limit?,activeMinutes?,messageLimit?(0 = 없음)sessions_history:sessionKey(또는sessionId),limit?,includeTools?sessions_send:sessionKey(또는sessionId),message,timeoutSeconds?(0 = fire-and-forget)sessions_spawn:task,label?,agentId?,model?,thinking?,runTimeoutSeconds?,thread?,mode?,cleanup?session_status:sessionKey?(기본값 현재;sessionId수용),model?(default는 오버라이드를 해제)
main은 정규 직접 채팅 키이며, 글로벌/알 수 없는 것은 숨겨집니다.messageLimit > 0은 각 세션에서 마지막 N개의 메시지를 가져옵니다 (도구 메시지는 필터링됨).- 세션 타겟팅은
tools.sessions.visibility에 의해 제어됩니다 (기본값tree: 현재 세션 + 생성된 하위 에이전트 세션). 여러 사용자를 위한 공유 에이전트를 실행하는 경우,tools.sessions.visibility: "self"로 설정하여 교차 세션 탐색을 방지하는 것을 고려하세요. sessions_send는timeoutSeconds > 0일 때 최종 완료를 대기합니다.- 전달/공지 사항은 완료 후 발생하고 최선의 결과로만 이루어지며,
status: "ok"는 에이전트 실행이 완료되었음을 확인하며 공지 사항이 전달되었음을 나타내지 않습니다. sessions_spawn는 하위 에이전트 실행을 시작하며 요청자 채팅에 공지 답장을 게시합니다.- 일회성 모드 (
mode: "run")와 지속적인 스레드 바인딩 모드 (mode: "session",thread: true포함)를 지원합니다. thread: true이고mode가 생략된 경우 기본값은session입니다.mode: "session"은thread: true가 필요합니다.- Discord 스레드 바인딩 흐름은
session.threadBindings.*및channels.discord.threadBindings.*에 의존합니다. - 답장 형식에는
Status,Result, 그리고 간단한 통계가 포함됩니다. Result는 어시스턴트 완료 텍스트이며, 누락된 경우 최근toolResult가 대체로 사용됩니다.
- 일회성 모드 (
- 수동 완료 모드 생성은 먼저 직접 전송하며, 일시적 실패에 대한 대기열 대체 및 재시도가 있습니다 (
status: "ok"는 실행이 완료되었음을 의미하며, 공지가 전달되었음을 의미하지 않음). sessions_spawn는 비차단이며status: "accepted"를 즉시 반환합니다.sessions_send는 답장 백 핑퐁을 실행합니다 (답장REPLY_SKIP으로 중단;session.agentToAgent.maxPingPongTurns를 통해 최대 턴 설정, 0–5).- 핑퐁 후 대상 에이전트는 announce step을 실행하며, 공지 사항을 억제하려면
ANNOUNCE_SKIP으로 답장하세요. - 샌드박스 제한: 현재 세션이 샌드박스 격리되고
agents.defaults.sandbox.sessionToolsVisibility: "spawned"인 경우, OpenClaw는tools.sessions.visibility를tree로 제한합니다.
agents_list
현재 세션이 sessions_spawn으로 타겟팅할 수 있는 에이전트 ID를 나열합니다.
주요 내용:
- 결과는 에이전트별 허용 목록 (
agents.list[].subagents.allowAgents)으로 제한됩니다. ["*"]이 구성된 경우, 도구는 구성된 모든 에이전트를 포함하며allowAny: true로 표시됩니다.
agents_list
현재 세션이 sessions_spawn으로 타겟팅할 수 있는 에이전트 ID를 나열합니다.
주요 내용:
- 결과는 에이전트별 허용 목록 (
agents.list[].subagents.allowAgents)으로 제한됩니다. ["*"]이 구성된 경우, 도구는 구성된 모든 에이전트를 포함하며allowAny: true로 표시됩니다.
매개변수 (공통)
게이트웨이가 지원하는 도구 (canvas, nodes, cron):
gatewayUrl(기본값ws://127.0.0.1:18789)gatewayToken(인증 활성화 시)timeoutMs
gatewayUrl이 설정된 경우, gatewayToken을 명시적으로 포함하십시오. 도구는 재정의를 위한 구성이나 환경 자격 증명을 상속하지 않으며, 명시적 자격 증명이 없으면 오류가 발생합니다.
브라우저 도구:
profile(옵션; 기본값은browser.defaultProfile)target(sandbox|host|node)node(옵션; 특정 노드 id/이름 고정)
추천 에이전트 흐름
브라우저 자동화:browser→status/startsnapshot(ai 또는 aria)act(click/type/press)- 시각적 확인이 필요한 경우
screenshot
canvas→presenta2ui_push(선택사항)snapshot
nodes→status- 선택한 노드를
describe notify/run/camera_snap/screen_record
안전성
- 직접적인
system.run사용을 피하십시오; 사용자의 명시적 동의가 있을 때만nodes→run을 사용하십시오. - 카메라/스크린 캡처에 대한 사용자 동의를 존중하십시오.
- 미디어 명령을 실행하기 전에
status/describe를 사용하여 권한을 확인하십시오.
에이전트에게 도구가 제공되는 방법
도구는 두 개의 병렬 채널로 노출됩니다:- 시스템 프롬프트 텍스트: 사람이 읽을 수 있는 목록 및 지침.
- 도구 스키마: 모델 API에 전송되는 구조화된 함수 정의.