Инструменты
OpenClaw предоставляет инструменты агента первого класса для браузера, canvas, узлов и cron. Они заменяют старые навыки openclaw-*: инструменты типизированы, не требуют вызова оболочки, и агент должен полагаться на них напрямую.
Отключение инструментов
Вы можете глобально разрешать/запрещать инструменты через tools.allow / tools.deny в openclaw.json (запрет имеет приоритет). Это предотвращает отправку неразрешенных инструментов провайдерам моделей.
{
tools: { deny: ["browser"] },
}
Примечания:
- Сопоставление регистронезависимое.
- Поддерживаются подстановочные знаки
*("*"означает все инструменты). - Если
tools.allowссылается только на неизвестные или незагруженные имена инструментов плагинов, OpenClaw логирует предупреждение и игнорирует список разрешений, чтобы основные инструменты оставались доступными.
Профили инструментов (базовый список разрешений)
tools.profile устанавливает базовый список разрешений инструментов перед применением tools.allow/tools.deny. Переопределение для конкретного агента: agents.list[].tools.profile. Профили:
minimal: толькоsession_statuscoding:group:fs,group:runtime,group:sessions,group:memory,imagemessaging:group:messaging,sessions_list,sessions_history,sessions_send,session_statusfull: без ограничений (аналогично отсутствию настройки)
Пример (только обмен сообщениями по умолчанию, разрешить также инструменты Slack + Discord):
{
tools: {
profile: "messaging",
allow: ["slack", "discord"],
},
}
Пример (профиль coding, но запретить exec/process везде):
{
tools: {
profile: "coding",
deny: ["group:runtime"],
},
}
Пример (глобальный профиль coding, агент поддержки только для обмена сообщениями):
{
tools: { profile: "coding" },
agents: {
list: [
{
id: "support",
tools: { profile: "messaging", allow: ["slack"] },
},
],
},
}
Политика инструментов для конкретного провайдера
Используйте tools.byProvider, чтобы дополнительно ограничить инструменты для конкретных провайдеров (или одной пары provider/model), не меняя глобальные настройки по умолчанию. Переопределение для конкретного агента: agents.list[].tools.byProvider. Это применяется после базового профиля инструментов и перед списками разрешений/запретов, поэтому может только сужать набор инструментов. Ключи провайдера принимают либо provider (например, google-antigravity), либо provider/model (например, openai/gpt-5.2). Пример (сохранить глобальный профиль coding, но минимальные инструменты для Google Antigravity):
{
tools: {
profile: "coding",
byProvider: {
"google-antigravity": { profile: "minimal" },
},
},
}
Пример (специфичный для провайдера/модели список разрешений для ненадежной конечной точки):
{
tools: {
allow: ["group:fs", "group:runtime", "sessions_list"],
byProvider: {
"openai/gpt-5.2": { allow: ["group:fs", "sessions_list"] },
},
},
}
Пример (переопределение для конкретного агента для одного провайдера):
{
agents: {
list: [
{
id: "support",
tools: {
byProvider: {
"google-antigravity": { allow: ["message", "sessions_list"] },
},
},
},
],
},
}
Группы инструментов (сокращения)
Политики инструментов (глобальные, для агента, песочницы) поддерживают записи 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 (исключает плагины провайдеров)
Пример (разрешить только файловые инструменты + браузер):
{
tools: {
allow: ["group:fs", "browser"],
},
}
Плагины + инструменты
Плагины могут регистрировать дополнительные инструменты (и команды CLI) помимо основного набора. См. Плагины для установки и настройки, и Навыки о том, как рекомендации по использованию инструментов внедряются в промпты. Некоторые плагины поставляются со своими навыками вместе с инструментами (например, плагин voice-call). Дополнительные инструменты плагинов:
- Lobster: типизированная среда выполнения рабочих процессов с возобновляемыми подтверждениями (требует CLI Lobster на хосте шлюза).
- LLM Task: шаг LLM только для JSON для структурированного вывода рабочего процесса (опциональная валидация схемы).
- Diffs: средство просмотра различий только для чтения и рендерер файлов PNG или PDF для текста до/после или унифицированных патчей.
Инвентарь инструментов
apply_patch
Применяет структурированные патчи к одному или нескольким файлам. Используйте для многострочных правок. Экспериментально: включите через tools.exec.applyPatch.enabled (только модели OpenAI). tools.exec.applyPatch.workspaceOnly по умолчанию true (ограничено рабочей областью). Установите в false только если вы намеренно хотите, чтобы apply_patch писал/удалял за пределами директории рабочей области.
exec
Запускает команды оболочки в рабочей области. Основные параметры:
command(обязательный)yieldMs(авто-фон после таймаута, по умолчанию 10000)background(немедленный фон)timeout(секунды; убивает процесс при превышении, по умолчанию 1800)elevated(bool; запуск на хосте, если режим elevated включен/разрешен; меняет поведение только когда агент в песочнице)host(sandbox | gateway | node)security(deny | allowlist | full)ask(off | on-miss | always)node(id/имя узла дляhost=node)- Нужен реальный TTY? Установите
pty: true.
Примечания:
- Возвращает
status: "running"сsessionIdпри переходе в фон. - Используйте
processдля опроса/логирования/записи/убийства/очистки фоновых сессий. - Если
processзапрещен,execвыполняется синхронно и игнорируетyieldMs/background. elevatedконтролируетсяtools.elevatedплюс любое переопределениеagents.list[].tools.elevated(оба должны разрешать) и является псевдонимом дляhost=gateway+security=full.elevatedменяет поведение только когда агент в песочнице (иначе это no-op).host=nodeможет нацеливаться на приложение-компаньон macOS или на хост узла без GUI (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).
{
tools: {
loopDetection: {
enabled: true,
warningThreshold: 10,
criticalThreshold: 20,
globalCircuitBreakerThreshold: 30,
historySize: 30,
detectors: {
genericRepeat: true,
knownPollNoProgress: true,
pingPong: true,
},
},
},
}
genericRepeat: повторяющийся шаблон вызова одного и того же инструмента с одинаковыми параметрами.knownPollNoProgress: повторение инструментов, похожих на poll, с идентичными выводами.pingPong: чередующиеся шаблоны без прогрессаA/B/A/B.- Переопределение для конкретного агента:
agents.list[].tools.loopDetection.
web_search
Ищет в интернете с помощью Perplexity, Brave, Gemini, Grok или Kimi. Основные параметры:
query(обязательный)count(1–10; по умолчанию изtools.web.search.maxResults)
Примечания:
- Требуется API-ключ для выбранного провайдера (рекомендуется:
openclaw configure --section web). - Включите через
tools.web.search.enabled. - Ответы кэшируются (по умолчанию 15 мин).
- См. Веб-инструменты для настройки.
web_fetch
Получает и извлекает читаемое содержимое из URL (HTML → markdown/текст). Основные параметры:
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опущен, используетсяbrowser.defaultProfile(по умолчанию “chrome”). - Имена профилей: только строчные буквы, цифры и дефисы (макс. 64 символа).
- Диапазон портов: 18800-18899 (~100 профилей макс.).
- Удаленные профили только для подключения (без start/stop/reset).
- Если подключен узел с поддержкой браузера, инструмент может автоматически перенаправить на него (если вы не зафиксировали
target). snapshotпо умолчаниюai, когда установлен Playwright; используйтеariaдля дерева доступности.snapshotтакже поддерживает опции role-snapshot (interactive,compact,depth,selector), которые возвращают ссылки типаe12.actтребуетrefизsnapshot(числовой12из AI-снимков илиe12из role-снимков); используйтеevaluateдля редких случаев необходимости CSS-селектора.- Избегайте
act→waitпо умолчанию; используйте только в исключительных случаях (нет надежного состояния UI для ожидания). uploadможет опционально передаватьrefдля автоматического клика после подготовки.uploadтакже поддерживаетinputRef(aria ref) илиelement(CSS-селектор) для прямой установки<input type="file">.
canvas
Управляет Canvas узла (present, eval, snapshot, A2UI). Основные действия:
present,hide,navigate,evalsnapshot(возвращает блок изображения +MEDIA:<path>)a2ui_push,a2ui_reset
Примечания:
- Использует
node.invokeшлюза под капотом. - Если
nodeне указан, инструмент выбирает узел по умолчанию (единственный подключенный узел или локальный mac-узел). - A2UI только v0.8 (нет
createSurface); CLI отклоняет JSONL v0.9 с ошибками строк. - Быстрая проверка:
openclaw nodes canvas a2ui push --node <id> --text "Hello from A2UI".
nodes
Обнаруживает и нацеливается на сопряженные узлы; отправляет уведомления; захватывает камеру/экран. Основные действия:
status,describepending,approve,reject(сопряжение)notify(macOSsystem.notify)run(macOSsystem.run)camera_list,camera_snap,camera_clip,screen_recordlocation_get,notifications_list,notifications_actiondevice_status,device_info,device_permissions,device_health
Примечания:
- Команды камеры/экрана требуют, чтобы приложение узла было на переднем плане.
- Изображения возвращают блоки изображений +
MEDIA:<path>. - Видео возвращают
FILE:<path>(mp4). - Местоположение возвращает JSON-пакет (lat/lon/accuracy/timestamp).
runпараметры: массивcommandargv; опциональноcwd,env(KEY=VAL),commandTimeoutMs,invokeTimeoutMs,needsScreenRecording.
Пример (run):
{
"action": "run",
"node": "office-mac",
"command": ["echo", "Hello"],
"env": ["FOO=bar"],
"commandTimeoutMs": 12000,
"invokeTimeoutMs": 45000,
"needsScreenRecording": false
}
image
Анализирует изображение с помощью настроенной модели изображений. Основные параметры:
image(обязательный путь или URL)prompt(опционально; по умолчанию “Describe the image.”)model(опциональное переопределение)maxBytesMb(опциональное ограничение размера)
Примечания:
- Доступно только когда настроен
agents.defaults.imageModel(основная или резервные модели), или когда неявная модель изображений может быть выведена из вашей модели по умолчанию + настроенной аутентификации (сопоставление по возможности). - Использует модель изображений напрямую (независимо от основной чат-модели).
Анализирует один или несколько PDF-документов. Полное поведение, ограничения, конфигурация и примеры см. в Инструмент PDF.
message
Отправляет сообщения и действия каналов через Discord/Google Chat/Slack/Telegram/WhatsApp/Signal/iMessage/MS Teams. Основные действия:
send(текст + опционально медиа; MS Teams также поддерживаетcardдля Adaptive Cards)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 идут напрямую.- Когда вызов инструмента message привязан к активной чат-сессии, отправки ограничиваются целью этой сессии, чтобы избежать утечек между контекстами.
cron
Управляет заданиями cron и пробуждениями Шлюза. Основные действия:
status,listadd,update,remove,run,runswake(поставить системное событие в очередь + опциональное немедленное heartbeat)
Примечания:
addожидает полный объект задания cron (та же схема, что и RPCcron.add).updateиспользует{ jobId, patch }(idпринимается для совместимости).
gateway
Перезапускает или применяет обновления к запущенному процессу Шлюза (на месте). Основные действия:
restart(авторизует + отправляетSIGUSR1для внутрипроцессного перезапуска;openclaw gatewayперезапускает на месте)config.schema.lookup(проверить один путь конфигурации за раз без загрузки полной схемы в контекст промпта)config.getconfig.apply(валидация + запись конфига + перезапуск + пробуждение)config.patch(частичное обновление слиянием + перезапуск + пробуждение)update.run(запуск обновления + перезапуск + пробуждение)
Примечания:
config.schema.lookupожидает целевой путь конфигурации, такой какgateway.authилиagents.list.*.heartbeat.- Пути могут включать разделенные слешем id плагинов при обращении к
plugins.entries.<id>, напримерplugins.entries.pack/one.config. - Используйте
delayMs(по умолчанию 2000), чтобы избежать прерывания ответа в процессе. config.schemaостается доступным для внутренних потоков UI управления и не раскрывается через инструмент агентаgateway.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?,runtime?,agentId?,model?,thinking?,cwd?,runTimeoutSeconds?,thread?,mode?,cleanup?,sandbox?,streamTo?,attachments?,attachAs?session_status:sessionKey?(по умолчанию текущая; принимаетsessionId),model?(defaultснимает переопределение)
Примечания:
main— канонический ключ прямого чата; global/unknown скрыты.messageLimit > 0получает последние N сообщений для каждой сессии (сообщения инструментов отфильтрованы).- Нацеливание на сессии контролируется
tools.sessions.visibility(по умолчаниюtree: текущая сессия + порожденные сессии под-агентов). Если вы запускаете общего агента для нескольких пользователей, рассмотрите установкуtools.sessions.visibility: "self", чтобы предотвратить просмотр между сессиями. sessions_sendждет окончательного завершения, когдаtimeoutSeconds > 0.- Доставка/объявление происходит после завершения и является best-effort;
status: "ok"подтверждает завершение запуска агента, а не доставку объявления. sessions_spawnподдерживаетruntime: "subagent" | "acp"(по умолчаниюsubagent). Для поведения среды выполнения ACP см. ACP Agents.- Для среды выполнения ACP
streamTo: "parent"направляет сводки прогресса начального запуска обратно в сессию инициатора как системные события вместо прямой доставки дочернему элементу. sessions_spawnзапускает выполнение под-агента и публикует ответ-объявление обратно в чат инициатора.- Поддерживает одноразовый режим (
mode: "run") и постоянный режим, привязанный к ветке (mode: "session"сthread: true). - Если
thread: trueиmodeопущен, режим по умолчаниюsession. mode: "session"требуетthread: true.- Если
runTimeoutSecondsопущен, OpenClaw используетagents.defaults.subagents.runTimeoutSeconds, если установлено; иначе таймаут по умолчанию0(без таймаута). - Потоки, привязанные к веткам Discord, зависят от
session.threadBindings.*иchannels.discord.threadBindings.*. - Формат ответа включает
Status,Resultи компактную статистику. Result— это текст завершения ассистента; если отсутствует, используется последнийtoolResultкак запасной вариант.
- Поддерживает одноразовый режим (
- Ручные spawn-ы в режиме завершения отправляют напрямую сначала, с резервной очередью и повторной попыткой при временных сбоях (
status: "ok"означает завершение запуска, а не доставку объявления). sessions_spawnподдерживает встроенные вложения файлов только для среды выполнения под-агента (ACP отклоняет их). Каждое вложение имеетname,contentи опциональноencoding(utf8илиbase64) иmimeType. Файлы материализуются в рабочей области дочернего элемента в.openclaw/attachments/<uuid>/с файлом метаданных.manifest.json. Инструмент возвращает квитанцию сcount,totalBytes,sha256для каждого файла иrelDir. Содержимое вложений автоматически скрывается из постоянного хранения транскрипта.- Настройте ограничения через
tools.sessions_spawn.attachments(enabled,maxTotalBytes,maxFiles,maxFileBytes,retainOnSessionKeep). attachAs.mountPath— зарезервированная подсказка для будущих реализаций монтирования.
- Настройте ограничения через
sessions_spawnнеблокирующий и немедленно возвращаетstatus: "accepted".- Ответы ACP
streamTo: "parent"могут включатьstreamLogPath(ограниченный сессией*.acp-stream.jsonl) для отслеживания истории прогресса. sessions_sendзапускает пинг-понг ответа (ответьтеREPLY_SKIP, чтобы остановить; максимальное количество ходов черезsession.agentToAgent.maxPingPongTurns, 0–5).- После пинг-понга целевой агент выполняет шаг объявления; ответьте
ANNOUNCE_SKIP, чтобы подавить объявление. - Ограничение песочницы: когда текущая сессия в песочнице и
agents.defaults.sandbox.sessionToolsVisibility: "spawned", OpenClaw ограничиваетtools.sessions.visibilityдоtree.
agents_list
Список id агентов, которые текущая сессия может нацелить с помощью sessions_spawn. Примечания:
- Результат ограничен списками разрешений для каждого агента (
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:
canvas→presenta2ui_push(опционально)snapshot
Нацеливание на узел:
nodes→statusdescribeна выбранном узлеnotify/run/camera_snap/screen_record
Безопасность
- Избегайте прямого
system.run; используйтеnodes→runтолько с явного согласия пользователя. - Уважайте согласие пользователя на захват камеры/экрана.
- Используйте
status/describe, чтобы убедиться в разрешениях перед вызовом медиа-команд.
Как инструменты представляются агенту
Инструменты раскрываются через два параллельных канала:
- Текст системного промпта: удобочитаемый список + рекомендации.
- Схема инструментов: структурированные определения функций, отправляемые в API модели.
Это означает, что агент видит и «какие инструменты существуют», и «как их вызывать». Если инструмент не появляется в системном промпте или схеме, модель не может его вызвать.