runner/README.md
Markov d978544752 Rewrite: single process, no Docker, no IPC files
- 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
2026-02-17 07:00:16 +01:00

3.5 KiB
Raw Blame History

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.

Как работает

  1. Подключается к Tracker по WebSocket
  2. Аутентифицируется токеном агента
  3. Подписывается на чат-комнаты
  4. При упоминании (@slug) → запускает Claude Agent SDK query()
  5. Результат → отправляет обратно в чат через WebSocket
  6. При назначении задачи → берёт, выполняет, постит результат

Persistent Sessions

Claude Agent SDK сохраняет сессии автоматически. При следующем вызове query() с тем же sessionId — агент помнит контекст предыдущих разговоров.

Multi-model (будущее)

Текущая архитектура позволяет заменить Claude Agent SDK на другие:

  • Gemini SDK
  • OpenAI SDK
  • Локальные модели (ollama)