Возможности
TaigaClaw объединяет мощный агентный движок, 14+ инструментов, фактографическую память с RAG и мультиканальность в одном бинарнике.
Агентный движок
Полноценный агентный цикл LLM → tool_calls → выполнить → повторить с архитектурой Actor-per-Session:
- AgentLoop — оркестратор: читает MessageBus, маршрутизирует по сессиям, управляет конкурентностью
- AgentRunner — движок итераций с streaming, checkpoint’ами и microcompact
- ContextBuilder — сборка системного промпта из души агента, профиля пользователя, памяти, навыков и runtime-контекста
- SubagentManager — фоновые подагенты с mid-turn injection результата в текущий ход
- Глобальный семафор — ограничение параллельных LLM-запросов через буферизованный канал
- Graceful shutdown — корректное завершение всех акторов с ожиданием
Слеш-команды
Четырёхуровневая маршрутизация: Priority → Exact → Prefix → Interceptors.
Priority-команды (/stop, /restart, /status) обрабатываются до блокировки сессии — срабатывают даже когда агент занят.
Встроенные команды: /new, /stop, /status, /history, /dream, /dream-log, /dream-restore, /help.
Инструменты
14+ встроенных инструментов + динамические MCP-инструменты. Параллельное выполнение безопасных (readonly) через errgroup, эксклюзивные — последовательно.
| Категория | Инструменты |
|---|---|
| Файлы | read_file, write_file, edit_file (fuzzy match), list_dir, glob, grep |
| Shell | exec — выполнение произвольных команд с sandbox и deny-паттернами |
| Веб | web_search, web_fetch — поиск и загрузка страниц |
| Коммуникация | message — отправка через подключённые каналы |
| Планирование | cron — управление задачами (add, list, remove) |
| Подагенты | spawn — запуск фоновых задач |
| Взаимодействие | ask_user — вопросы пользователю |
| Мета | my — инспекция runtime-состояния |
| MCP | динамические инструменты из подключённых серверов |
Per-session FileStates
Трекинг прочитанных файлов через context.Context: предупреждения «read before edit», дедупликация чтения.
Память и RAG
Фактографическая память с векторным поиском — вместо одного файла MEMORY.md каждый факт хранится отдельно с эмбеддингом.
Трёхуровневая система
- Сессионная — история текущего разговора в БД (таблица
sessions,messages) - Факты — отдельные записи в
memory_factsс векторами, извлекаются через semantic search - Документы — RAG по загруженным файлам (PDF, DOCX, XLSX, PPTX) → чанки в
memory_chunks
Векторный поиск
- SQLite — BLOB + cosine similarity в pure Go (без CGO)
- PostgreSQL — pgvector (нативный, обязательное условие выбора PG)
Векторизация автоматическая при записи — EmbeddingProvider.Embed() вызывается прозрачным образом.
Reranker
Двухстадийный поиск: retriever (bi-encoder, top-20 кандидатов) → reranker (cross-encoder / LLM-as-reranker, top-5 лучших).
Реализации: Ollama (bge-reranker), LLM-as-reranker (fallback, батчинг по 5 документов), Noop (отключено).
Обработка памяти
- Consolidator — лёгкая суммаризация: извлечение фактов из старых сообщений → векторизация → дедупликация
- Dream — тяжёлая двухфазная обработка памяти в фоне: анализ → редактирование
- AutoCompact — архивация простаивающих сессий по TTL
Безопасность
SSRF-защита
Блокировка private/internal IP (RFC 1918, loopback, link-local, cloud metadata 169.254.0.0/16). DNS resolve перед запросом. Проверка URL после HTTP-редиректов. Настраиваемый whitelist с приоритетом над блэклистом.
Sandbox
bubblewrap (Linux) — namespace isolation без CGO. Автоматическая активация restrict_to_workspace для файловых инструментов.
Deny/Allow паттерны
Встроенные deny-паттерны (rm -rf /, mkfs, dd, fork bomb) + пользовательские regex-паттерны. Allow-список для whitelist-режима.
Шифрование секретов
AES-256-GCM шифрование API-ключей и паролей в БД. Мастер-ключ через переменную окружения TAIGACLAW_MASTER_KEY.
Мультипользовательность и авторизация
Встроенный OAuth 2.0
Authorization Code Flow + PKCE (RFC 7636) — без внешних зависимостей (Keycloak, Auth0 не нужны).
RBAC с тремя ролями
| Роль | Область | Возможности |
|---|---|---|
| Admin | Глобальная | Управление пользователями, все агенты, системные настройки |
| Agent Admin | Per-agent | Настройка агента, провайдеры, инструменты, члены |
| Agent User | Per-agent | Чат с агентом, просмотр истории |
Per-agent членство: пользователь может быть Agent Admin в одном агенте и Agent User в другом.
JWT + Refresh Rotation
Access-токен 15 мин, refresh — 7 дней с ротацией и family tracking (обнаружение кражи). BCrypt для паролей (cost=12).
Setup-режим
При первом запуске — localhost-only экран создания Admin-аккаунта и первого агента.
LLM-провайдеры
Два backend’а
| Backend | SDK | Провайдеры |
|---|---|---|
| openai_compat | openai-go | OpenAI, DeepSeek, Gemini, Qwen, Mistral, Ollama, vLLM, LiteLLM, OpenRouter, YandexGPT, GigaChat и др. |
| anthropic | anthropic-sdk-go | Claude (нативный SDK, thinking blocks, prompt caching) |
Retry-политика
Standard (3 попытки, exponential backoff) + persistent (бесконечно с max delay 60s). Автоматическое определение транзиторных ошибок (429, 5xx, timeout).
Каналы связи
WebUI (WebSocket)
Встроенный SPA на Svelte 5 + Tailwind. Streaming ответов, tool events, управление настройками. WebSocket авторизация через JWT при handshake.
Email (IMAP/SMTP)
Двойная роль: канал связи (polling входящих → агент → автоответ) и инструмент (отправка/чтение писем). Несколько ящиков на агента. Threading через Message-ID. Вложения с MIME-фильтрацией. Whitelist для ответов.
CLI (stdin/stdout)
Терминальное взаимодействие для администрирования и отладки.
Навыки
Markdown-файлы SKILL.md с YAML frontmatter — расширяют поведение агента без написания кода.
Навыки загружаются из директории workspace/skills/ и автоматически подставляются в системный промпт.
Планирование
Cron-задачи
Три типа расписания: at (одноразовое), every (интервал), cron (cron-выражение). Хранение в БД. Системные задачи (Dream) защищены от удаления. Инструмент для LLM: add, list, remove.
Heartbeat
Периодическая проверка файла HEARTBEAT.md в workspace агента. Двухфазная обработка:
- Decision — LLM решает: skip или run
- Execute — полный агентный цикл (инструменты доступны)
- Evaluate — LLM оценивает: уведомлять ли пользователя
MCP (Model Context Protocol)
Подключение внешних инструментальных серверов: stdio, SSE, streamable HTTP. Инструменты MCP автоматически регистрируются в ToolRegistry как обычные инструменты. Per-agent настройка доступа к конкретным MCP-серверам и их инструментам.
WebUI
SPA на Svelte 5 + SvelteKit (adapter-static) с Tailwind CSS. Встраивается в Go-бинарник через go:embed.
- Тёмная/светлая тема
- Streaming ответов в реальном времени
- Tool events с прогрессом выполнения
- Управление агентами, провайдерами, разрешениями
- Профиль пользователя и душа агента (редактирование через UI)
- Раздел «Система» для глобального админа (обновление, рестарт)
Наблюдаемость
- Structured logging —
log/slog(stdlib), text/json формат, контекстные поля - Health check —
GET /api/v1/health(БД, сессии, LLM, аптайм) - Metrics — in-memory счётчики,
GET /api/v1/metrics - LLM Usage — таблица
llm_usage_logс аналитикой по моделям, API для WebUI
Конфигурация
- БД вместо файлов — SQLite по умолчанию (pure Go, без CGO), PostgreSQL опционально (pgvector)
- Шифрование секретов — AES-256-GCM для API-ключей и паролей
- Душа агента — настраиваемые параметры личности через WebUI (имя, стиль, уровень подробности, темы для избегания)
- Профиль пользователя — информация о пользователе доступна всем агентам без дублирования
- Горячая перезагрузка провайдеров без рестарта
Кроссплатформенность
| Платформа | Архитектуры |
|---|---|
| macOS | amd64, arm64 (Apple Silicon) |
| Linux | amd64, arm64 |
| Windows | amd64, arm64 |
Один бинарник — никаких зависимостей. WebUI встроен. SQLite из коробки.