Как запускать AI-агентов в терминале: реальный опыт с Codewhale и Comanda

Я — Denis Shokhirev, архитектор агентных AI-систем во Фрайбурге, Германия. Мой стек: Claude, Supabase, n8n, Doppler, self-hosted Postgres. Недавно я поймал баг: агент, который должен был автоматически обновлять конфиги в терминале клиента, зависал из-за неправильной обработки stderr.

Почему терминальный запуск — не просто игрушка

В DACH клиенты часто требуют прозрачности и контроль: не просто “AI где-то в облаке”, а агент, который реально работает в командной строке, с логами, аудитом и возможностью мгновенного отката. Для этого я внедрил Codewhale и Comanda — реальные CLI-инструменты для запуска LLM-агентов прямо в терминале.

Структура агентной CLI: что реально работает

Codewhale, Comanda и мой стек

Codewhale — CLI-обёртка для LLM-агентов, которая позволяет запускать инструкции, писать код, тянуть документацию прямо из терминала. Comanda — фреймворк для гибкого управления пайплайнами в shell. Для production я всегда оборачиваю эти агенты в sandbox через Docker или chroot, чтобы минимизировать риски.

Сравнение CLI-стека

Инструмент Главная задача Где подходит Минусы
Codewhale Генерация/исправление кода, документация DevOps, быстрая автоматизация Бывает нестабильным с большими файлами
Comanda Оркестрация shell-команд, пайплайны CI/CD, автоматизация тестов Требует настройки безопасности
n8n Воркфлоу-автоматизация Интеграция API, ETL Не CLI, мало контроля на низком уровне

Безопасность: почему AI-агенты в терминале — это риск

Я трижды встречал одну и ту же уязвимость: LLM-агент генерирует shell-команду, которая не фильтрует пользовательский input. Например, генерация следующего скрипта:

#!/bin/bash
read -p "Введите имя файла: " filename
cat $filename

Если пользователь введёт ; rm -rf /, агент выполнит это. Решение — обязательный static code analysis на каждую сгенерированную команду через semgrep:

semgrep --config=auto --lang=bash ./generated_script.sh

По данным OWASP (2023), 52% инцидентов в CLI-автоматизации связаны с неправильно обработанным input (OWASP Top Ten).

Sandbox, rate limit и audit

  • Каждый агент работает в Docker-контейнере с read-only root.
  • Входные данные валидируются через custom Python-фильтры.
  • Все команды логируются в Postgres через Supabase для аудита.
  • n8n запускает пайплайны только с whitelist-команд.

Реальные примеры: что летит, а что падает

Успешный кейс: автоматизация миграций

Я настроил агента на Codewhale, который по задаче клиента генерирует миграцию для базы — и сразу валидирует её через psql --check, а затем запускает ручной diff:

codewhale "Создать миграцию для добавления поля email"
psql --dbname=clientdb --file=generated_migration.sql --check
diff schema_before.sql schema_after.sql

Результат — за 30 минут сгенерирована и проверена миграция, без вылета в проде.

Провал: неправильная обработка stderr

Агент генерировал shell-команду для копирования логов, но не обрабатывал stderr. В результате при ошибке пайплайн зависал на 18 минут — пока не вмешался вручную. Решение: всегда явно перенаправлять stderr в отдельный лог-файл и анализировать его отдельным агентом.

cp logs/*.log /backup/ 2> error.log
if [ -s error.log ]; then
  cat error.log | codewhale "Объясни ошибку"
fi

Интеграция с Supabase и n8n: хранение и аудит

Все логи агентов пишу в Supabase через REST API, чтобы клиент мог посмотреть историю команд. n8n оркестрирует пайплайны и следит за таймаутами: если агент не отвечает 120 секунд — автокилл и алерт в Slack.

FAQ

Почему не запускать агента только в облаке?

В некоторых проектах требуется прозрачность и контроль: заказчик хочет видеть, что делает агент в их инфраструктуре, а не “где-то в API”. Терминальный запуск — проще для аудита и отката.

Какой минимальный стек для запуска агента?

Codewhale или Comanda, Docker для sandbox, Supabase для логов, n8n для оркестрации. Всё остальное — опционально.

Можно ли запускать несколько агентов в одном терминале?

Да, через tmux или отдельные Docker-контейнеры. Но аудит тогда усложняется — нужен уникальный trace id для каждой сессии.

Как валидировать сгенерированный код?

Минимум — semgrep или bandit по каждому скрипту. Для Python — ещё и gitleaks для поиска ключей.

Что делать при сбое агента?

n8n ловит таймаут, отправляет алерт, логи доступны через Supabase. В критических случаях — ручной откат через сохранённые снапшоты.

В какой части вашего пайплайна чаще всего “сыпется” агент в проде: input sanitation, обработка ошибок, или аудит логов? Напишите — разберём с кейсами. Я бесплатно провожу 30-мин аудит стека для DACH-команд, которые строят AI в сложных рынках. Пишите в LinkedIn или на @ger_dennis_ai.

Read more

Computer-Use-Agenten scheitern an Pixeln: wie Sie auf stabile UI-Referenzen über Accessibility Trees umstellen und fehleranfällige Desktop-Automatisierung nicht mehr ständig reparieren

von Denis Shokhirev, Enterprise AI Architect aus Freiburg im Breisgau Ich bin Denis Shokhirev, Agentic AI Systems Architect in Freiburg im Breisgau, Germany, und bei DennisCraft AI Studio setze ich produktive KI-Systeme für DACH-B2B-Kunden auf Basis von Claude, Supabase, n8n, Doppler und selbst betriebenem Postgres um. Die teuersten Fehler in

By Denis Shokhirev

Компьютерные агенты ломаются на пикселях: как перейти на stable UI refs через accessibility tree и перестать чинить flaky desktop automation

Я Denis Shokhirev, Agentic AI Systems Architect из Freiburg im Breisgau, Germany, и в DennisCraft AI Studio я собираю production AI-системы для DACH B2B на Claude, Supabase, n8n, Doppler и self-hosted Postgres. Самая дорогая поломка в desktop automation, которую я вижу у клиентов, почти никогда не связана с моделью: агент

By Denis Shokhirev