duckbugio/flock
duckbugio/flock has 495 GitHub stars and 6 forks. GitHot measured +1 stars in 24 hours. Last checked 2026-11-10 04:39 UTC. Last push 2026-10-26.
Autonomous AI dev-team bot
可以做什么
- The conversation is the task source — describe what you want in chat and review the PR that comes back; the agent's shell and editor are sandboxed inside the container.
- A real dev-team pipeline, not a single prompt — spec-first acceptance criteria, build/regression gates, and an arbiter that breaks loops.
- Autonomy loops — the bot verifies its own "done" by re-running the repo's check gate itself; /goal arms an independent evaluator that loops the team until your criterion actually holds; /schedule runs recurring jobs; an optional CI watch reacts to red builds (and can auto-merge green PRs) — all under a per-chat daily autonomy budget. See Autonomy loops.
- Multi-transport — Telegram, VK and a text-first LO adapter on the same core; a new platform is a thin adapter, not a fork.
实测星标增长
- 24小时
- +1
- 7天
- 更新延迟
- 15天
- 更新延迟
- 1个月
- 更新延迟
各周期内的星标净变化,周期相互重叠,并非每日新增。缺失的测量保持空白。星标代表关注度,不代表软件质量。
README.zh.md
原文English · Русский · 中文 · Español · Deutsch · Français · Português (BR) · 日本語
Flock
在你自己的服务器上运行一支 Claude Code AI 开发团队,并通过聊天来驱动它。 在 Telegram 或 VK 中描述一项功能;团队会为它制定计划、在分支上构建、测试、评审,并发起一个 PR——每个聊天都拥有各自隔离的工作区。
它基于你的 Claude Pro/Max 订阅(无按 token 计费)或一个 Anthropic API 密钥运行,以预构建的 Docker 镜像形式发布(无需构建步骤),并将每个聊天保持在各自的沙箱化工作区中。
快速上手(Docker)
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 |
TELEGRAM_BOT_USERNAME |
你机器人的 @username(不带 @) |
ALLOWED_USERS |
允许使用该机器人的 Telegram 用户 ID,以逗号分隔 |
CLAUDE_CODE_OAUTH_TOKEN |
claude setup-token(订阅)——或者设置 ANTHROPIC_API_KEY |
.env.example 中的其余一切都有合理的默认值。日后可用 docker compose pull && docker compose up -d 更新。
Telegram 秘书模式
先在 @BotFather 为机器人启用秘书模式,再在 Telegram 中选择允许访问的私人聊天。账户所有者必须列在 ALLOWED_USERS 中。SECRETARY_MODE=approval 将草稿发给账户所有者,由其发送或丢弃;SECRETARY_MODE=auto 会立即回复。回复使用为机器人单独选定的 AI 服务商和模型(AI_BACKEND);Telegram 不选择另一个 AI 模型。使用 Claude 时,秘书运行完整的 Flock 智能体,包含工具、MCP,以及每个 Business 聊天独立持久的会话。启用自动回复前,请在服务提供商处设置支出上限。英文详情。
目前秘书模式仅支持 AI_BACKEND=claude;使用其他服务商时,机器人继续运行,但不会处理 Business 消息。
只允许您信任其参与者使用 Flock 工具和 MCP 的聊天接入。审核仅控制回复发送:工具可能在您确认前运行,取消执行也无法撤销已完成的操作。
地区: 请托管在 Anthropic 支持的地区(部分国家/地区会被地理封锁,例如 RU/CN)——否则 Claude 调用会失败。
VK 在 adapters/vk/ 下采用相同的模式,构建于同一套核心之上,并以 ghcr.io/duckbugio/flock-vk 形式发布。它只附带一个环境变量模板(没有 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(长轮询服务器 + 提及解析) |
VK_ALLOWED_USERS |
允许使用该机器人的 VK 用户 ID,以逗号分隔 |
亮点
- 对话即任务来源——在聊天中描述你想要什么,然后评审返回的 PR;智能体的 shell 和编辑器都被沙箱化在容器内部。
- 一条真正的开发团队流水线,而非单个提示词——规格优先的验收标准、构建/回归门禁,以及一位打破循环的仲裁者。
- 多传输通道——如今有 Telegram 与 VK,二者都构建于同一套核心之上;新增一个平台只是一个轻量适配器,而非一次分叉。
- 无需入站 webhook 即可响应 PR——机器人会向你的 git 主机轮询新的评审评论,并将每条评论路由回发起该 PR 的聊天。
- 对订阅友好——使用 Claude Pro/Max 令牌(无按 token 计费)或 Anthropic API 密钥进行认证。
工作原理
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/。普通提问会被直接解答;构建请求则触发整个团队。arbiter 是感知风险、限制循环次数的打破循环者,让智能体永远不会无止境地空转。分支以 duck/<chatid>/<slug> 命名,以便 PR-webhook/轮询事件能路由回正确的聊天。
该开发团队是为微服务工作区而设计的:一项功能可以横跨多个服务,团队会协调各个分支并为每个仓库发起一个交叉链接的 PR。完整的流水线、防护栏与角色表见 core/README.md。
仓库结构(单体仓库)
平台无关的开发团队大脑位于 core/;每个平台都是 adapters/<name>/ 下一个共享它的轻量适配器。
| 适配器 | 路径 | 预构建镜像 |
|---|---|---|
| Telegram | adapters/telegram/ |
ghcr.io/duckbugio/flock-telegram |
| VK | adapters/vk/ |
ghcr.io/duckbugio/flock-vk |
未来的平台会复用同一套核心——参见 docs/multi-transport-plan.md。
接入 git 主机(可选但属核心)
在 .env 中设置以下内容,让团队能够克隆仓库并发起 PR(适用于 Gitea/GitHub/GitLab):
GIT_HOST=git.example.com
GIT_USER=...
GIT_TOKEN=... # write-scoped PAT
GIT_AUTHOR_NAME=AI Team
[email protected]
# Poll the host for new PR comments (reliable; no inbound webhook needed):
GITEA_API_URL=https://git.example.com/api/v1
GITEA_POLL_INTERVAL=90
对于 github.com,还需设置 GH_TOKEN(= 你的 GIT_TOKEN),以便 gh CLI 能发起 PR。
轮询器是响应评审评论的推荐方式——它主动向外发起请求,因此即便你的主机无法访问机器人它也照样有效。当 ENABLE_PR_REVIEW=true 且设置了 GITEA_API_URL 时它处于激活状态。一种入站 webhook 加上 Caddy TLS 代理的替代方案仅通过 Ansible 部署提供(设置 webhook_domain)。
其他选项
- 语音消息:
ENABLE_VOICE_MESSAGES=true、VOICE_PROVIDER=mistral|openai|local,外加MISTRAL_API_KEY(或OPENAI_API_KEY)。语音会被转写并作为命令运行。 - dind 边车容器:
docker compose --profile dind up -d为团队提供容器化的 linters/测试(设置DOCKER_HOST=tcp://dind:2375)。 - 按聊天隔离: 每个聊天都会获得一个
/workspace/chat_<id>(一对一 → 私有;群组 → 一个共享工作区);不同聊天彼此完全隔离并行运行,受MAX_CONCURRENT_CHAT_RUNS限制。在群组中,设置REQUIRE_GROUP_MENTION=true可让机器人仅在被 @提及或被回复时才响应。 - Ansible 部署(Telegram):从
adapters/telegram/deploy一条命令配置一台 VPS——将inventories/example复制为你自己的inventories/<name>/(已 gitignore),填好 inventory/vars/vault,然后执行ansible-playbook -i inventories/<name>/inventory.ini playbook.yml。该角色会拉取预构建镜像;设置bot_image以固定某个标签。
安全
- 白名单: 只有
ALLOWED_USERS(Telegram)/VK_ALLOWED_USERS(VK)才能使用该机器人——切勿将其留空;它会授予对你服务器的 shell/编辑访问权限。 - 按聊天隔离: 不同聊天会获得各自独立的工作区。git 令牌在整个部署内共享——请据此设定其权限范围。
- 机密: 将它们保存在
.env(已 gitignore)中,或对于 Ansible,保存在某个真实实例的vault.yml(已 gitignore,可用ansible-vault加密)中。只有inventories/example/会被纳入版本控制。 - 沙箱: 智能体以非 root 用户运行;其 Bash/Edit 被限定在容器内,而非你的宿主机。
构建、lint、测试
本仓库使用 Task 作为其 CI 运行器——与 CI 所用的入口相同:
task lint # format + vet + linters (in the dev-tools image)
task tests # Go test suite
task build # compile the binaries
许可证
MIT © DuckBug.
贡献与安全
参与贡献和报告安全漏洞的指南:CONTRIBUTING.md、CODE_OF_CONDUCT.md、SECURITY.md。
探索相关项目
affaan-m/ECC
智能体执行与控制框架的性能优化系统。面向 Claude Code、Codex、Opencode、Cursor 等,涵盖技能、本能、记忆、安全与研究优先的开发。
300,777 星标NousResearch/hermes-agent
与你一同成长的智能体
262,434 星标multica-ai/andrej-karpathy-skills
一个用于改进 Claude Code 行为的 CLAUDE.md 文件,源自 Andrej Karpathy 对 LLM 编程陷阱的观察。
231,850 星标firecrawl/firecrawl
借助来自网络及其他来源的数据,强化你的 AI 智能体。正在构建面向超级智能的资料库。🔥
200,444 星标