runner/README.md
Markov 8b6ea6c462 Initial runner: agent container + host runner + IPC
- 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
2026-02-16 22:31:30 +01:00

2.5 KiB
Raw Blame History

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 событий

Использование

# Собрать 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 внутри контейнера.