- agent/: Claude Agent SDK inside Docker container - Persistent sessions (resume/checkpoint) - MCP tools for Tracker (chat, tasks) - File-based IPC protocol - runner.py: Host-side container manager - Docker lifecycle management - IPC file processing → Tracker REST API - Interactive CLI for testing - Dockerfile: node:22-slim + Claude Agent SDK - Based on NanoClaw architecture, stripped to essentials
57 lines
2.5 KiB
Markdown
57 lines
2.5 KiB
Markdown
# Team Board Runner
|
||
|
||
Универсальный runner для AI-агентов Team Board. Запускает агентов в Docker-контейнерах с изоляцией.
|
||
|
||
## Архитектура
|
||
|
||
```
|
||
Host (runner.py) Docker Container (agent)
|
||
┌──────────────┐ stdin/stdout ┌──────────────────────┐
|
||
│ Runner │◄──────────────────►│ Claude Agent SDK │
|
||
│ │ │ + MCP Tools │
|
||
│ - Container │ IPC files │ + Persistent │
|
||
│ manager │◄──────────────────►│ Sessions │
|
||
│ - IPC → │ │ + SQLite (internal) │
|
||
│ Tracker │ │ │
|
||
└──────────────┘ └──────────────────────┘
|
||
```
|
||
|
||
## Компоненты
|
||
|
||
### agent/ — код внутри контейнера
|
||
- `index.ts` — Claude Agent SDK query loop с persistent sessions
|
||
- `mcp.ts` — MCP tools для работы с Tracker (chat, tasks)
|
||
|
||
### runner.py — код на хосте
|
||
- Запускает Docker контейнеры
|
||
- Маршрутизирует IPC файлы → Tracker REST API
|
||
- Будущее: WebSocket к Tracker для real-time событий
|
||
|
||
## Использование
|
||
|
||
```bash
|
||
# Собрать Docker образ
|
||
docker build -t team-board-agent .
|
||
|
||
# Запустить интерактивную сессию
|
||
CLAUDE_CODE_OAUTH_TOKEN=xxx python3 runner.py --slug coder --name "Кодер"
|
||
```
|
||
|
||
## IPC Protocol
|
||
|
||
Агент внутри контейнера общается с runner'ом через файлы:
|
||
|
||
- `/workspace/ipc/input/*.json` — сообщения от runner'а к агенту
|
||
- `/workspace/ipc/messages/*.json` — чат-сообщения от агента
|
||
- `/workspace/ipc/tasks/*.json` — операции с задачами от агента
|
||
- `/workspace/ipc/input/_close` — сигнал завершения
|
||
|
||
## Multi-model (будущее)
|
||
|
||
Архитектура позволяет подключить другие модели:
|
||
- Gemini (через MCP или прямой API)
|
||
- ChatGPT (через API)
|
||
- Локальные модели (ollama)
|
||
|
||
Для этого нужно заменить Claude Agent SDK на соответствующий SDK внутри контейнера.
|