tools.toolSearch.
Коли цю функцію ввімкнено для запусків OpenClaw, модель за замовчуванням отримує один інструмент tool_search_code.
Цей інструмент запускає коротке тіло JavaScript в ізольованому підпроцесі Node
з мостом openclaw.tools:
Як виконується хід
Під час планування вбудований runner OpenClaw створює ефективний каталог для запуску:- Розв’язує активну політику інструментів для агента, профілю, пісочниці та сесії.
- Перелічує придатні інструменти OpenClaw і Plugin.
- Перелічує придатні інструменти MCP через середовище виконання MCP сесії.
- Додає придатні клієнтські інструменти, надані для поточного запуску.
- Індексує компактні дескриптори для пошуку.
- Надає моделі міст коду OpenClaw, структуровані резервні інструменти або компактну поверхню каталогу.
openclaw.tools.call(...) переходить через міст назад у Gateway, де
й надалі застосовуються звичайні політики, затвердження, hook-и, журналювання та обробка результатів.
Режими
tools.toolSearch має три режими, видимі для моделі:
code: надаєtool_search_code, типовий компактний міст JavaScript.tools: надаєtool_search,tool_describeіtool_callяк прості структуровані інструменти для провайдерів, які не повинні отримувати код.directory: надаєtool_search,tool_describeіtool_call, а також обмежений prompt-каталог доступних назв інструментів та описів для провайдерів, які повинні бачити назви інструментів без кожної повної схеми. OpenClaw також може безпосередньо надати невеликий обмежений набір імовірних або потрібних схем інструментів для поточного ходу.
code переходить на tools перед
ущільненням каталогу. У режимі directory інструменти, надані клієнтом, залишаються безпосередньо видимими
для поточного запуску, тоді як інструменти OpenClaw, інструменти Plugin та інструменти MCP можуть бути
ущільнені за каталогом директорії. Прямий виклик точної прихованої
назви в директорії гідратується з того самого авторизованого каталогу перед виконанням.
Усі режими експериментальні. Надавайте перевагу прямому показу інструментів для малих каталогів інструментів OpenClaw
і нативним стабільним поверхням Codex для запусків Codex harness.
Окремої конфігурації вибору джерел немає. Коли Пошук інструментів увімкнено,
каталог містить придатні інструменти OpenClaw, MCP і клієнтські інструменти після звичайного
фільтрування політикою.
Навіщо це існує
Великі каталоги корисні, але дорогі. Надсилання кожної схеми інструмента моделі збільшує запит, уповільнює планування та підвищує ризик випадкового вибору інструмента. Пошук інструментів змінює форму:- прямі інструменти: модель бачить кожну вибрану схему до першого токена
- режим коду Пошуку інструментів: модель бачить один компактний інструмент коду та короткий контракт API
- режим інструментів Пошуку інструментів: модель бачить три компактні структуровані резервні інструменти
- режим директорії Пошуку інструментів: модель бачить обмежену директорію, а також елементи керування search/describe/call і невеликий обмежений набір імовірних або потрібних схем
- під час ходу: модель може завантажувати решту схем за потреби
API
openclaw.tools.search(query, options?)
Шукає в ефективному каталозі для поточного запуску. Результати компактні й безпечні
для повернення в контекст prompt.
openclaw.tools.describe(id)
Завантажує повні метадані для одного результату пошуку, включно з точною вхідною схемою.
openclaw.tools.call(id, args)
Викликає вибраний інструмент через OpenClaw.
tool_searchtool_describetool_call
tool_searchtool_describetool_call
tool_search, щоб знайти їх. Якщо
модель безпосередньо запитує точну приховану назву інструмента директорії, OpenClaw
гідратує її з авторизованого каталогу перед звичайним виконанням.
Назви клієнтських інструментів у режимі директорії не повинні збігатися з назвами інструментів OpenClaw, Plugin або MCP,
оскільки точна відкладена диспетчеризація використовує ці назви.
Межа середовища виконання
Міст коду працює в короткочасному підпроцесі Node. Підпроцес запускається з увімкненим режимом дозволів Node, порожнім середовищем, без дозволів на файлову систему або мережу, а також без дозволів на дочірні процеси чи worker-и. OpenClaw застосовує тайм-аут wall-clock батьківського процесу й завершує підпроцес у разі тайм-ауту, зокрема після асинхронних продовжень. Середовище виконання надає лише:console.log,console.warnіconsole.erroropenclaw.tools.searchopenclaw.tools.describeopenclaw.tools.call
- політики дозволу та заборони інструментів
- обмеження інструментів для кожного агента й кожної пісочниці
- політика інструментів каналу/середовища виконання
- hook-и затвердження
- hook-и Plugin
before_tool_call - ідентичність сесії, журнали й телеметрія
Конфігурація
Увімкніть Пошук інструментів для запусків OpenClaw із типовим мостом коду:Prompt і телеметрія
Пошук інструментів записує достатньо телеметрії, щоб порівнювати його з прямим показом інструментів:- загальна кількість серіалізованих байтів інструментів і prompt, надісланих до harness
- розмір каталогу та розподіл за джерелами
- кількість операцій пошуку, опису та виклику
- фінальні виклики інструментів, виконані через OpenClaw
- вибрані ідентифікатори інструментів і джерела
- скільки схем інструментів модель побачила наперед
- скільки операцій пошуку й опису вона виконала
- який фінальний інструмент було викликано
- чи надійшов результат з OpenClaw, MCP або клієнтського інструмента
E2E-валідація
Сценарій Gateway у QA Lab доводить обидва шляхи із середовищем виконання OpenClaw:- Прямий режим може викликати інструмент фальшивого Plugin.
- Пошук інструментів може викликати той самий інструмент фальшивого Plugin.
- Прямий режим напряму надає провайдеру схеми інструментів фальшивого Plugin.
- Пошук інструментів надає лише компактний міст.
- Payload запиту Пошуку інструментів менший для великого фальшивого каталогу.
- Журнали сесії показують очікувану кількість викликів інструментів і телеметрію викликів через міст.
Поведінка в разі помилки
Пошук інструментів має відмовляти закрито:- якщо інструмента немає в ефективній політиці, пошук не повинен повертати його
- якщо вибраний інструмент стає недоступним,
tool_callмає завершитися помилкою - якщо політика або затвердження блокує виконання, результат виклику має повідомити про це блокування, а не обходити його
- якщо міст коду не може створити ізольоване середовище виконання, використайте
mode: "tools"або вимкніть Пошук інструментів для цього розгортання