- 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
80 lines
3.5 KiB
Markdown
80 lines
3.5 KiB
Markdown
# Team Board Runner
|
||
|
||
AI-агент для Team Board. Один процесс, прямой доступ к файлам, WebSocket к Tracker.
|
||
|
||
## Архитектура
|
||
|
||
```
|
||
┌────────────────────────────────────────┐
|
||
│ Agent Runner (один процесс) │
|
||
│ │
|
||
│ ┌──────────────┐ ┌────────────────┐ │
|
||
│ │ Claude Agent │ │ WebSocket │ │
|
||
│ │ SDK │ │ Client │ │
|
||
│ │ (query loop, │ │ (Tracker :8100)│ │
|
||
│ │ sessions, │ │ │ │
|
||
│ │ tools) │ │ │ │
|
||
│ └──────────────┘ └────────────────┘ │
|
||
│ │
|
||
│ Прямой доступ к файлам, git, bash │
|
||
└────────────────────────────────────────┘
|
||
```
|
||
|
||
## Быстрый старт
|
||
|
||
```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)
|