English · Русский · 中文 · Español · Deutsch · Français · Português (BR) · 日本語
# Flock **Запустите команду AI-разработчиков на базе Claude Code на своём сервере и управляйте ею из чата.** Опишите фичу в Telegram или VK; команда спланирует её, реализует в ветке, протестирует, проведёт ревью и откроет PR — каждый чат в собственном изолированном рабочем пространстве. [](https://github.com/duckbugio/flock/actions/workflows/ci.yml) [](LICENSE) [](go.mod) [](https://github.com/orgs/duckbugio/packages) Работает на вашей **подписке Claude Pro/Max** (без потокенной оплаты) или на API-ключе Anthropic, поставляется в виде **готовых Docker-образов** (без этапа сборки) и держит каждый чат в собственном изолированном рабочем пространстве. ## Быстрый старт (Docker) ```bash git clone https://github.com/duckbugio/flock cd flock/adapters/telegram cp .env.example .env # fill in the REQUIRED block (4 values) docker compose up -d ``` Это подтянет готовый образ `ghcr.io/duckbugio/flock-telegram` — без сборки, без Ansible — после чего напишите своему боту. Минимальный `.env`: | Переменная | Что это | |---|---| | `TELEGRAM_BOT_TOKEN` | от [@BotFather](https://t.me/botfather) | | `TELEGRAM_BOT_USERNAME` | @username вашего бота (без `@`) | | `ALLOWED_USERS` | список Telegram user ID через запятую, которым разрешено использовать бота | | `CLAUDE_CODE_OAUTH_TOKEN` | `claude setup-token` (подписка) — *или* задайте `ANTHROPIC_API_KEY` | У всего остального в [`.env.example`](adapters/telegram/.env.example) есть разумные значения по умолчанию. Обновить позже можно командой `docker compose pull && docker compose up -d`. ### Режим секретаря Telegram Включите режим у бота через @BotFather и выберите доступные личные чаты в настройках Telegram. Владелец аккаунта должен быть указан в `ALLOWED_USERS`. `SECRETARY_MODE=approval` отправляет владельцу черновик с кнопками отправки и отклонения; `SECRETARY_MODE=auto` отвечает сразу. Провайдер и модель выбираются в настройках Flock (`AI_BACKEND`), а настройки Telegram задают доступ к чатам. Пока секретарь доступен только с `AI_BACKEND=claude`; с другими провайдерами бот продолжит работать без обработки Business-сообщений. Секретарь запускает обычного агента Flock с его инструментами, MCP, навыками и отдельной постоянной сессией для каждого Business-чата. Подтверждение черновика касается только исходящего ответа: действия инструментов выполняются во время подготовки и уже выполненные действия нельзя отменить. Давайте доступ только тем чатам, чьим участникам вы доверяете инструменты и MCP Flock. Рабочие каталоги секретаря по умолчанию находятся в `SECRETARY_WORKSPACE_DIR=/workspace-business`; отдельный каталог не является защитой от агента с доступом к shell. Перед автоответами задайте лимит расходов у провайдера. [Подробности на английском](README.md#telegram-secretary-mode). > **Регион:** размещайте в **поддерживаемом Anthropic регионе** (некоторые страны, например RU/CN, заблокированы по геолокации) — иначе вызовы Claude будут падать. **VK** устроен по тому же принципу в [`adapters/vk/`](adapters/vk/), построен на том же ядре и публикуется как `ghcr.io/duckbugio/flock-vk`. Он поставляется только с шаблоном env (без compose-файла): `cp .env.example .env`, затем `docker run --env-file .env ghcr.io/duckbugio/flock-vk`. Аутентификация Claude и настройки ядра совпадают с Telegram; меняются только три транспортные переменные: | Переменная | Что это | |---|---| | `VK_BOT_TOKEN` | токен доступа сообщества (сообщество VK → Управление → Работа с API → ключ доступа) | | `VK_GROUP_ID` | числовой id вашего сообщества (long-poll сервер + разбор упоминаний) | | `VK_ALLOWED_USERS` | список VK user ID через запятую, которым разрешено использовать бота | ## Ключевые особенности - **Источник задач — сам разговор** — опишите, что вам нужно, в чате и проверьте пришедший в ответ PR; оболочка и редактор агента изолированы внутри контейнера. - **Настоящий конвейер команды разработки, а не один промпт** — критерии приёмки на основе спецификации, шлюзы сборки и регрессий, а также арбитр, который разрывает циклы. - **Несколько транспортов** — сегодня **Telegram** и **VK**, оба на одном ядре; новая платформа — это тонкий адаптер, а не форк. - **Реакции на PR без входящих вебхуков** — бот *опрашивает* ваш git-хост на предмет новых комментариев ревью и направляет каждый обратно в тот чат, где был открыт PR. - **Дружелюбен к подписке** — аутентифицируйтесь токеном Claude Pro/Max (без потокенной оплаты) или API-ключом Anthropic. ## Как это работает ``` You (in a chat): "implement X across the api + web services" → bot's Claude (Lead) → planner → confirm scope → coder ⇄ tester → PR per repo → reviewer (inline comments) ⇄ coder → arbiter ├ APPROVE → you merge └ ESCALATE → asks you ``` Пять субагентов — **planner → coder → tester → reviewer → arbiter** — работают как нативные субагенты Claude Code в [`core/agents/`](core/agents/). На обычный вопрос просто даётся ответ; запрос на сборку запускает команду. **Арбитр** — это размыкатель циклов, учитывающий риски и ограниченный числом итераций, благодаря чему агенты никогда не зацикливаются. Ветки именуются `duck/