Skip to main content

Инструменты бота: подробный справочник

Это подробная страница для тех, кто хочет понимать, какие именно tools есть у Nanobot в текущей реализации и как они используются. Если вам нужно простое пользовательское объяснение без внутренних деталей, начните со статьи Инструменты бота: простое объяснение.

Как устроены tools в Nanobot

Tool в Nanobot — это отдельное действие, которое модель может вызвать во время ответа. Практически это означает, что бот может:
  • не только генерировать текст;
  • но и искать информацию;
  • читать и редактировать файлы;
  • запускать команды;
  • использовать память;
  • поднимать фоновые задачи;
  • обращаться к внешним интеграциям.
Обычно пользователь пишет задачу обычным языком, а модель сама выбирает нужные инструменты.

Базовые встроенные инструменты

Ниже перечислены основные инструменты, которые регистрируются в стандартном агентном цикле.

Работа с файлами

read_file

Назначение:
  • читает текстовые файлы;
  • может читать содержимое изображений как ресурс;
  • используется для просмотра кода, конфигов, markdown и других файлов.
Когда особенно полезен:
  • разбор проекта;
  • чтение документации;
  • проверка содержимого конкретного файла.

write_file

Назначение:
  • создаёт новый файл;
  • полностью записывает содержимое файла;
  • создаёт нужные директории при сохранении.
Когда особенно полезен:
  • генерация новых документов;
  • создание новых исходников;
  • сохранение результата работы.

edit_file

Назначение:
  • вносит точечные изменения в существующий файл;
  • удобен для небольших исправлений без полной перезаписи.
Когда особенно полезен:
  • исправление багов;
  • обновление отдельных блоков текста;
  • локальные правки конфигов и кода.

list_dir

Назначение:
  • показывает содержимое директории;
  • помогает понять структуру проекта.
Когда особенно полезен:
  • первичное обследование репозитория;
  • поиск нужной папки или документа;
  • проверка, какие файлы уже существуют.

Работа с интернетом

Назначение:
  • ищет информацию в интернете;
  • возвращает заголовки, 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/MEMORY.md и memory/*.md;
  • использует гибридный semantic + keyword search.
Когда особенно полезен:
  • нужно вспомнить прошлое решение;
  • нужно найти сохранённое предпочтение;
  • нужно понять, в какой memory-заметке обсуждалась тема.
Важно:
  • tool доступен только если включена vector_memory.
Назначение:
  • ищет по проектной документации в 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 видит пользователь, а как агент

С точки зрения пользователя всё обычно выглядит просто:
  • «прочитай файл»;
  • «исправь ошибку»;
  • «найди это в интернете»;
  • «поищи по памяти»;
  • «покажи прошлую сессию».
С точки зрения агента это может превращаться в цепочку:
  1. посмотреть структуру проекта;
  2. прочитать несколько файлов;
  3. выполнить поиск;
  4. отредактировать файл;
  5. запустить команду;
  6. вернуть результат.
Именно поэтому одно пользовательское сообщение часто приводит к нескольким последовательным tool calls.

Чем отличаются похожие инструменты

web_search vs web_fetch

  • web_search ищет, где может быть нужная информация;
  • web_fetch читает уже конкретную страницу или URL.

memory_search vs session_history

  • memory_search ищет по сохранённым memory-файлам и summary;
  • session_history достаёт точный transcript конкретной сессии.
  • 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.
Поэтому документацию по tools полезно читать как описание возможных способностей, а не как гарантию, что всё это включено в каждом запуске.

Практический вывод

Если смотреть на текущую реализацию Nanobot, инструменты можно условно разделить на пять групп:
  • файловые;
  • сетевые;
  • системные;
  • память и retrieval;
  • оркестрация и интеграции.
Для обычного пользователя достаточно знать, что бот умеет делать практические действия поверх текста. Для продвинутого пользователя или разработчика важно понимать точные различия между tools, особенно между:
  • поиском в интернете и чтением конкретной ссылки;
  • памятью и точной историей сессий;
  • документацией проекта и долговременной памятью;
  • локальным редактированием файлов и выполнением shell-команд.

Итог

Текущий Nanobot умеет работать с файлами, интернетом, локальным окружением, памятью, историей сессий, OCR-документами, фоновыми задачами и внешними MCP-интеграциями. Это делает tools центральной частью практической полезности бота: без них он был бы просто генератором текста, а с ними становится агентом, который может реально выполнять действия.