Терминальный агент для всех LLM: как execai объединил Kimi, GLM, Claude и Ollama в одном интерфейсе
Автор проекта execai поделился опытом создания терминального AI-агента в духе Claude Code. Инструмент читает файлы, выполняет shell-команды, работает с Kubernetes и выводит ответы в TUI на базе bubbletea. Но главная фишка — поддержка сразу девяти LLM-провайдеров: у пользователей разные подписки и предпочтения, и всем нужен один инструмент.
Чтобы объединить несовместимые миры API, пришлось построить мультипровайдерную архитектуру: единый интерфейс поверх Anthropic-совместимых и OpenAI-совместимых API, SSE-парсеры с аккумуляцией tool calls, динамические каталоги моделей и автодетект тарифа подписки. Переключение между моделями происходит на лету, а история чата остаётся общей.
В статье — реальный код и описание «граблей», на которые автор наступил: например, из-за различий в форматах вызова инструментов между провайдерами. Такое решение особенно полезно тем, кто хочет использовать и облачные модели, и локальную Ollama без постоянной смены инструментов.