- One Node.js process with Claude Agent SDK + WebSocket to Tracker - Direct filesystem access (code, git, bash) - Test mode (--test): interactive CLI without Tracker - Tracker mode: WS connection, chat mentions, task handling - Persistent sessions via Agent SDK - Removed: Docker, IPC files, host/container split, Python runner
3.5 KiB
3.5 KiB
Team Board Runner
AI-агент для Team Board. Один процесс, прямой доступ к файлам, WebSocket к Tracker.
Архитектура
┌────────────────────────────────────────┐
│ Agent Runner (один процесс) │
│ │
│ ┌──────────────┐ ┌────────────────┐ │
│ │ Claude Agent │ │ WebSocket │ │
│ │ SDK │ │ Client │ │
│ │ (query loop, │ │ (Tracker :8100)│ │
│ │ sessions, │ │ │ │
│ │ tools) │ │ │ │
│ └──────────────┘ └────────────────┘ │
│ │
│ Прямой доступ к файлам, git, bash │
└────────────────────────────────────────┘
Быстрый старт
# Установка
npm install
# Тест (без Tracker, интерактивный режим)
CLAUDE_CODE_OAUTH_TOKEN=xxx npm run test
# Продакшн (с Tracker)
CLAUDE_CODE_OAUTH_TOKEN=xxx \
AGENT_TOKEN=agent-xxx \
AGENT_SLUG=coder \
AGENT_NAME="Кодер" \
npm start
Переменные окружения
| Переменная | Описание | По умолчанию |
|---|---|---|
CLAUDE_CODE_OAUTH_TOKEN |
OAuth токен Claude (подписка) | — |
ANTHROPIC_API_KEY |
API ключ Anthropic (альтернатива) | — |
TRACKER_URL |
WebSocket URL Tracker | ws://localhost:8100/ws |
AGENT_TOKEN |
Токен агента в Tracker | — |
AGENT_SLUG |
Slug агента | coder |
AGENT_NAME |
Имя агента | Кодер |
AGENT_WORKSPACE |
Рабочая директория | /opt/team-board-agents/{slug} |
LOBBY_CHAT_ID |
ID лобби-чата для авто-подписки | — |
Режимы
Test mode (--test)
Интерактивный режим без Tracker. Пишешь в консоли — агент отвечает. Для проверки что SDK работает.
Tracker mode (по умолчанию)
Подключается к Tracker по WebSocket, слушает чат-сообщения и задачи, отвечает через AI.
Как работает
- Подключается к Tracker по WebSocket
- Аутентифицируется токеном агента
- Подписывается на чат-комнаты
- При упоминании (
@slug) → запускает Claude Agent SDKquery() - Результат → отправляет обратно в чат через WebSocket
- При назначении задачи → берёт, выполняет, постит результат
Persistent Sessions
Claude Agent SDK сохраняет сессии автоматически. При следующем вызове query() с тем же sessionId — агент помнит контекст предыдущих разговоров.
Multi-model (будущее)
Текущая архитектура позволяет заменить Claude Agent SDK на другие:
- Gemini SDK
- OpenAI SDK
- Локальные модели (ollama)