Инструменты бота: подробный справочник
Это подробная страница для тех, кто хочет понимать, какие именно tools есть у Nanobot в текущей реализации и как они используются. Если вам нужно простое пользовательское объяснение без внутренних деталей, начните со статьи Инструменты бота: простое объяснение.Как устроены tools в Nanobot
Tool в Nanobot — это отдельное действие, которое модель может вызвать во время ответа. Практически это означает, что бот может:- не только генерировать текст;
- но и искать информацию;
- читать и редактировать файлы;
- запускать команды;
- использовать память;
- поднимать фоновые задачи;
- обращаться к внешним интеграциям.
Базовые встроенные инструменты
Ниже перечислены основные инструменты, которые регистрируются в стандартном агентном цикле.Работа с файлами
read_file
Назначение:
- читает текстовые файлы;
- может читать содержимое изображений как ресурс;
- используется для просмотра кода, конфигов, markdown и других файлов.
- разбор проекта;
- чтение документации;
- проверка содержимого конкретного файла.
write_file
Назначение:
- создаёт новый файл;
- полностью записывает содержимое файла;
- создаёт нужные директории при сохранении.
- генерация новых документов;
- создание новых исходников;
- сохранение результата работы.
edit_file
Назначение:
- вносит точечные изменения в существующий файл;
- удобен для небольших исправлений без полной перезаписи.
- исправление багов;
- обновление отдельных блоков текста;
- локальные правки конфигов и кода.
list_dir
Назначение:
- показывает содержимое директории;
- помогает понять структуру проекта.
- первичное обследование репозитория;
- поиск нужной папки или документа;
- проверка, какие файлы уже существуют.
Работа с интернетом
web_search
Назначение:
- ищет информацию в интернете;
- возвращает заголовки, URL и короткие сниппеты.
- нужно найти свежую или внешнюю информацию;
- нужно подобрать источники перед чтением конкретной страницы.
- использует настроенный web-search provider;
- точный backend зависит от конфигурации;
- результатом является список кандидатов, а не полный текст страницы.
web_fetch
Назначение:
- загружает конкретный URL;
- извлекает содержимое страницы, JSON или другого поддерживаемого ресурса.
- пользователь дал ссылку;
- нужно прочитать статью, API-ответ или страницу документации.
- внешний контент считается недоверенным;
- tool используется для чтения данных, а не для слепого следования инструкциям со страницы.
Работа с системой и исполнением
exec
Назначение:
- выполняет команды в shell/терминале.
- запуск тестов;
- сборка проекта;
- установка зависимостей;
- проверка окружения;
- запуск локальных утилит.
- tool регистрируется только если
execвключён в конфигурации; - ограничения зависят от режима безопасности и настройки workspace restrictions;
- это один из самых мощных инструментов, поэтому требует аккуратности.
Коммуникация и управление агентом
message
Назначение:
- отправляет сообщение обратно в канал;
- используется для обычных ответов и промежуточных уведомлений.
- бот хочет ответить в другой канал;
- фоновая задача завершилась и нужно отдельно сообщить результат.
model
Назначение:
- показывает текущую модель;
- временно переключает модель без перезапуска процесса.
- проверка активной модели;
- временное переключение на другую модель для текущей сессии работы.
- изменение временное и пропадает после перезапуска бота.
spawn
Назначение:
- создаёт отдельного фонового помощника;
- позволяет вынести длинную или отдельную задачу в параллельную работу.
- большая исследовательская задача;
- длительная обработка;
- независимая побочная работа, которую не хочется держать на критическом пути.
Память и история сессий
session_list
Назначение:
- показывает завершённые сессии из
sessions/_sessions.jsonl; - помогает выбрать нужный
session_id.
- нужно понять, какие завершённые сессии вообще есть;
- нужно найти прошлую сессию по
slug,keyили связанному memory-файлу.
session_history
Назначение:
- извлекает полную историю текущей или архивной сессии;
- умеет работать по
session_keyи поsession_id.
- нужно восстановить точный transcript;
- нужно посмотреть старый tool output;
- нужно проверить, что именно было сказано раньше.
memory_search
Назначение:
- ищет по
memory/MEMORY.mdиmemory/*.md; - использует гибридный semantic + keyword search.
- нужно вспомнить прошлое решение;
- нужно найти сохранённое предпочтение;
- нужно понять, в какой memory-заметке обсуждалась тема.
- tool доступен только если включена
vector_memory.
vector_search
Назначение:
- ищет по проектной документации в
docs/<project>/; - использует гибридный semantic + keyword search.
- проектная документация уже лежит в
docs/; - нужен смысловой поиск по большому объёму текстов.
- tool тоже доступен только при включённой
vector_memory.
Документы и OCR
document_parse
Назначение:
- извлекает текст из документов и изображений;
- работает как OCR/парсер для PDF, офисных форматов и картинок.
- пользователь прислал скан, PDF или документ;
- нужно получить markdown-версию содержимого;
- нужно потом сохранить результат в документацию проекта.
- реальная доступность зависит от настроенного OCR/backend-сервиса;
- удобен как мост между внешним документом и внутренней базой знаний проекта.
Условные встроенные инструменты
Некоторые инструменты регистрируются не всегда.cron
Назначение:
- создаёт, показывает и удаляет запланированные задачи и напоминания.
- только если у агента подключён
cron_service.
- напоминания;
- регулярные задания;
- действия по расписанию.
MCP-инструменты
Назначение:- это не один конкретный tool, а набор внешних tools, подключённых через MCP.
- только если настроены MCP-серверы;
- только после успешного подключения этих серверов.
- расширение возможностей бота без изменения core-кода;
- доступ к внешним системам, API и специализированным инструментам.
Как tools видит пользователь, а как агент
С точки зрения пользователя всё обычно выглядит просто:- «прочитай файл»;
- «исправь ошибку»;
- «найди это в интернете»;
- «поищи по памяти»;
- «покажи прошлую сессию».
- посмотреть структуру проекта;
- прочитать несколько файлов;
- выполнить поиск;
- отредактировать файл;
- запустить команду;
- вернуть результат.
Чем отличаются похожие инструменты
web_search vs web_fetch
web_searchищет, где может быть нужная информация;web_fetchчитает уже конкретную страницу или URL.
memory_search vs session_history
memory_searchищет по сохранённым memory-файлам и summary;session_historyдостаёт точный transcript конкретной сессии.
vector_search vs memory_search
vector_searchработает по проектной документации вdocs/;memory_searchработает по памяти бота вmemory/.
write_file vs edit_file
write_fileудобен для создания файла целиком;edit_fileудобен для локальных изменений в существующем файле.
Что реально зависит от конфигурации
Набор инструментов может меняться между разными инстансами Nanobot. Особенно это касается:exec;cron;vector_search;memory_search;- MCP-инструментов;
- качества и доступности
document_parse.
Практический вывод
Если смотреть на текущую реализацию Nanobot, инструменты можно условно разделить на пять групп:- файловые;
- сетевые;
- системные;
- память и retrieval;
- оркестрация и интеграции.
- поиском в интернете и чтением конкретной ссылки;
- памятью и точной историей сессий;
- документацией проекта и долговременной памятью;
- локальным редактированием файлов и выполнением shell-команд.
