Комментарии 4
Спасибо за ссылку, прочитала. Я как раз хотела проверить, нужно ли это «как» организовывать самому. Оказалось, что основные клиенты уже делают это сами: Claude Code подгружает схемы через поиск инструментов, Antigravity читает их по требованию, Codex ищет определения кодом. По сути, это то же дерево с ленивой подгрузкой, только встроенное в клиент. В итоге до 100 отдельных инструментов точность была 100% во всех четырёх клиентах, ни одного вызова не того инструмента. Даже с невнятными названиями 276 из 276 прогонов правильные.
Группировка дала экономию только там, где все схемы лежат в промпте (Claude Code с выключенным поиском): 14,2 тыс. токенов на прогон против 27,9 тыс. С включённым поиском почти ничего (16,1 против 17,4), а у Gemini точность даже упала до 89%.
Так что для Claude Code, Codex и Gemini, по моим данным, организовывать инструменты на стороне сервера уже почти не нужно, клиент справляется. Где я этого не проверяла — это локальные модели без нативного вызова инструментов, под которые, как я понимаю, и сделан ваш toolhub. Там клиентского поиска нет, и дерево может быть единственным вариантом. Мерили ли вы на них точность выбора?
В варианте с невнятными названиями интересно было бы рядом с 276 успешными прогонами увидеть ещё одну цифру: сколько из них обошлось без попыток вызвать неверный инструмент, включая отклонённые сервером вызовы с пустыми аргументами. Вы уже отмечаете этот риск, но итоговое выполнение задачи и отсутствие ошибочных попыток — разные критерии. Для инструментов с побочными эффектами различие особенно важно: валидация может предотвратить действие, а исправить уже выполненное бывает невозможно. Можно ли по логам разделить успешные прогоны на прошедшие без таких попыток и завершившиеся после отказа сервера? Это позволило бы оценить не только итоговый успех, но и надёжность выбора инструмента моделью.
Спасибо, хороший вопрос, посчитала по логам.
Из 276 правильных прогонов с невнятными названиями 265 обошлись без единого отклонённого вызова. Claude Code (144 прогона, с поиском инструментов и без) и Codex (60) ни разу не вызвали не тот инструмент. Claude иногда сначала загружал не ту схему, но это чтение, а не вызов, побочных эффектов у него нет.
Остальные 11 прогонов — все у Gemini в Antigravity (чистых у него 61 из 72):
- в 10 прогонах он вызывал не тот инструмент с пустыми аргументами, чтобы посмотреть, что тот делает. Всего 16 таких вызовов, сервер отклонил все из-за отсутствия обязательных аргументов, после чего задача была решена правильно;
- в одном прогоне инструмент был правильный, а аргументы не те.
Для сравнения: с точными названиями Gemini не тот инструмент не вызывал ни разу, зато в 34 из 72 прогонов вызывал правильный, не прочитав схему, угадывал аргументы, получал отказ и пробовал снова. Так что отказы сервера у него бывают и с хорошими названиями, просто другого рода.
Про побочные эффекты вы правы, и в этих 10 прогонах это главное. У моего тестового сервера у каждого инструмента были обязательные аргументы, поэтому пробы ничего не сделали. Если у инструмента их нет (что-нибудь вроде «очистить кэш» или «синхронизировать»), такой же вызов с {} выполнится. По итоговому успеху эти прогоны засчитаны, а по надёжности выбора инструмента — нет: 10 из 72 у Gemini, 0 у остальных.

Сколько инструментов должно быть у MCP-сервера? Я измерила от 5 до 100 в Claude Code, Codex и Gemini