Частые проблемы при разработке плагинов для ИИ-сотрудников

Tool не зарегистрирован

Проверьте по порядку:

  • Находится ли файл в src/ai/**/tools/, входящем в область сборки плагина
  • Используется ли расширение .ts или .js
  • Экспортируется ли export default defineTools(...)
  • Не получил ли файл Tool по ошибке расширение .d.ts
  • Нет ли Tool с таким же именем, из-за которого более поздняя регистрация игнорируется
  • Был ли плагин пересобран и загружен заново

Skill не отображается

В первую очередь проверьте имя файла. Сейчас оно должно быть следующим:

SKILLS.md

Также убедитесь, что во frontmatter указаны стабильные name и description, а файл находится по пути src/ai/**/skills/<skill-name>/SKILLS.md.

Skill загружается, но не может вызвать Tool

Проверьте следующее:

  • Содержит ли список tools в Skill имя Tool
  • Находится ли Tool в каталоге tools/ текущего Skill
  • Совпадают ли имя файла Tool, definition.name и имя в ссылке из Skill
  • Соответствует ли scope текущему способу привязки
  • Не помешало ли регистрации Tool повторяющееся имя

Привязка Tool означает лишь, что модель может его использовать. Если Tool уже доступен Skill, но модель его не вызывает, явно укажите в рабочем процессе SKILLS.md момент вызова, требования к параметрам и необходимость дождаться результата.

Фронтенд-карточка не отображается

Имя регистрации во фронтенде должно точно совпадать с итоговым именем серверного Tool:

this.ai.toolsManager.registerTools('developerChoice', options);

Также проверьте:

  • Использует ли пользовательский плагин среду выполнения src/client-v2/
  • Зарегистрирована ли карточка в load() клиентского плагина
  • Перешёл ли ToolCall в состояние, поддерживаемое карточкой
  • Не отключена ли карточка из-за проверки invokeStatus
  • Был ли клиентский плагин пересобран и загружен заново

После нажатия на карточку Tool не продолжает выполнение

Убедитесь, что вызван один из методов: approve(), edit() или reject(). Если выбор пользователя нужно записать обратно в параметры, используйте:

await decisions.edit({
  ...toolCall.args,
  option: selectedOption,
});

Также убедитесь, что серверная schema допускает это поле, а invoke() его считывает.

Изменение definition.name не применяется

Имя автоматически загружаемого Tool определяется именем файла или каталога. Например:

src/ai/tools/developerChoice.ts

Итоговым именем будет developerChoice. Чтобы переименовать Tool, одновременно переименуйте файл и обновите ссылки в Skill, конфигурацию ИИ-сотрудника и имя регистрации во фронтенде.

Связанные ссылки