English · Русский · 中文 · Español · Deutsch · Français · Português (BR) · 日本語
# Flock **Ejecuta un equipo de desarrollo con IA de Claude Code en tu servidor y dirígelo desde el chat.** Describe una funcionalidad en Telegram o VK; el equipo la planifica, la construye en una rama, la prueba, la revisa y abre un PR — cada chat en su propio espacio de trabajo aislado. [](https://github.com/duckbugio/flock/actions/workflows/ci.yml) [](LICENSE) [](go.mod) [](https://github.com/orgs/duckbugio/packages) Funciona con tu **suscripción Pro/Max** de Claude (sin facturación por token) o con una clave de API de Anthropic, se distribuye como **imágenes Docker precompiladas** (sin paso de compilación) y mantiene cada chat en su propio espacio de trabajo aislado en un sandbox. ## Inicio rápido (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 ``` Esto descarga la imagen precompilada `ghcr.io/duckbugio/flock-telegram` — sin construcción, sin Ansible — y luego envíale un mensaje a tu bot. El `.env` mínimo: | Variable | Qué | |---|---| | `TELEGRAM_BOT_TOKEN` | de [@BotFather](https://t.me/botfather) | | `TELEGRAM_BOT_USERNAME` | el @username de tu bot (sin `@`) | | `ALLOWED_USERS` | IDs de usuario de Telegram, separados por comas, autorizados a usar el bot | | `CLAUDE_CODE_OAUTH_TOKEN` | `claude setup-token` (suscripción) — *o* establece `ANTHROPIC_API_KEY` | Todo lo demás en [`.env.example`](adapters/telegram/.env.example) tiene valores predeterminados razonables. Actualiza más adelante con `docker compose pull && docker compose up -d`. ### Modo secretario de Telegram Activa el modo para el bot en @BotFather y selecciona los chats privados accesibles en Telegram. El propietario de la cuenta debe estar en `ALLOWED_USERS`. `SECRETARY_MODE=approval` envía un borrador al propietario para enviarlo o descartarlo; `SECRETARY_MODE=auto` responde de inmediato. Las respuestas usan el proveedor y el modelo de IA elegidos para el bot (`AI_BACKEND`); Telegram no elige otro modelo. Con Claude, el secretario usa el agente Flock completo, incluidas sus herramientas, MCP y una sesión persistente por chat Business. Configura un límite de gasto con el proveedor antes de activar las respuestas automáticas. [Detalles en inglés](README.md#telegram-secretary-mode). Por ahora, el modo secretario solo funciona con `AI_BACKEND=claude`; con otros proveedores, el bot sigue en línea sin procesar mensajes Business. Concede acceso solo a chats cuyos participantes sean de confianza para usar las herramientas y MCP de Flock. La aprobación solo controla la respuesta enviada: las herramientas pueden actuar antes de tu aprobación y cancelar la ejecución no deshace esas acciones. > **Región:** aloja en una **región compatible con Anthropic** (algunos países, p. ej. RU/CN, están geobloqueados) — de lo contrario, las llamadas a Claude fallarán. **VK** sigue el mismo patrón bajo [`adapters/vk/`](adapters/vk/), construido sobre el mismo núcleo y publicado como `ghcr.io/duckbugio/flock-vk`. Incluye solo una plantilla de entorno (sin archivo compose): `cp .env.example .env`, luego `docker run --env-file .env ghcr.io/duckbugio/flock-vk`. La autenticación de Claude y los ajustes del núcleo coinciden con los de Telegram; solo cambian las tres variables de transporte: | Variable | Qué | |---|---| | `VK_BOT_TOKEN` | token de acceso de la comunidad (comunidad de VK → Gestionar → Uso de API → token de acceso) | | `VK_GROUP_ID` | el id numérico de tu comunidad (servidor long-poll + análisis de menciones) | | `VK_ALLOWED_USERS` | IDs de usuario de VK, separados por comas, autorizados a usar el bot | ## Aspectos destacados - **La conversación es la fuente de las tareas** — describe lo que quieres en el chat y revisa el PR que llega de vuelta; el shell y el editor del agente están aislados en un sandbox dentro del contenedor. - **Un pipeline real de equipo de desarrollo, no un único prompt** — criterios de aceptación basados en la especificación, controles de construcción/regresión y un árbitro que rompe los bucles. - **Multitransporte** — **Telegram** y **VK** hoy, ambos sobre el mismo núcleo; una nueva plataforma es un adaptador ligero, no un fork. - **Reacciones a PR sin webhooks entrantes** — el bot *sondea* tu host de git en busca de nuevos comentarios de revisión y enruta cada uno de vuelta al chat que abrió el PR. - **Compatible con suscripción** — autentícate con un token Pro/Max de Claude (sin coste por token) o con una clave de API de Anthropic. ## Cómo funciona ``` 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 ``` Los cinco subagentes — **planner → coder → tester → reviewer → arbiter** — se ejecutan como subagentes nativos de Claude Code en [`core/agents/`](core/agents/). Una pregunta sencilla simplemente se responde; una solicitud de construcción activa al equipo. El **arbiter** es el que rompe los bucles, consciente del riesgo y con límite de ciclos, para que los agentes nunca giren indefinidamente. Las ramas se nombran `duck/