在多代理系统中,实现自学习团队的关键在于通过共享状态管理和强化反馈循环,促使代理间产生涌现行为(emergent behaviors)。Desplega AI 开源的 Agent-Swarm 框架正是为此设计,它以 Model Context Protocol (MCP) 为核心,协调领导代理(lead agent)和多个工作者代理(worker agents),特别适用于代码助手和工作流自动化场景。本文聚焦于其自学习机制的工程实现,提供可落地的配置参数、监控要点和优化策略,帮助开发者快速部署并观察代理团队的 “ compounding ” 改进。
核心架构:共享状态下的代理协调
Agent-Swarm 的架构简单高效:一个 MCP API 服务器充当中枢,连接 SQLite 数据库存储任务状态、内存和身份信息。领导代理接收用户任务(通过 Slack、GitHub 或 Email),分解为子任务并委托给 Docker 隔离的 worker 代理。每个 worker 在独立容器中运行完整开发环境(git、Node.js、Python 等),执行后报告进度,实现无缝协作。
共享状态通过 MCP 协议实现,所有代理访问同一数据库,确保实时同步。例如,领导代理可使用 inject-learning 工具将经验注入 worker 的个人内存。这种设计避免了传统多代理框架的通信瓶颈,支持任务优先级队列、依赖管理和暂停 / 恢复。
部署上,使用 Docker Compose 最简便:
git clone https://github.com/desplega-ai/agent-swarm.git
cd agent-swarm
cp .env.docker.example .env
# 编辑 .env:设置 API_KEY、CLAUDE_CODE_OAUTH_TOKEN
docker compose -f docker-compose.example.yml --env-file .env up -d
API 默认端口 3013,dashboard 通过 UI 访问。生产环境推荐多 worker 配置,卷挂载 /workspace/personal(个人)和 /workspace/shared(共享)以持久化数据。
自学习机制:内存系统与持久身份
自学习的核心是 “compounding memory”,代理从每次会话中提取经验,并逐步变 “聪明”。内存系统基于 SQLite + OpenAI text-embedding-3-small 嵌入,支持搜索相关回忆注入上下文。
-
自动内存生成:
- 会话结束时,轻量模型(如 Haiku)总结关键学习:错误、模式、代码库知识。
- 任务输出(成功 / 失败)索引化,失败任务附带 “what went wrong” 笔记。
- 代理可写文件至
/workspace/personal/memory/或共享目录,自动索引。
-
持久身份文件(受 OpenClaw 启发):
文件 作用 示例内容 SOUL.md 核心人格、价值观 “彻底执行,承认错误。” IDENTITY.md 专长、工作风格 “我是 swarm 的编码臂,快速干净交付。” TOOLS.md 环境知识 “API 端口 3013,使用 wts 管理 worktree。” CLAUDE.md 持久笔记 学习偏好、重要上下文。
代理可在会话中编辑这些文件,PostToolUse hook 实时同步至数据库,重启时恢复。启动脚本 /workspace/start-up.sh 允许自安装工具(如 ripgrep),变更持久化。
如 HN Show HN 帖所述:“我们添加了 SQLite 内存... 领导可传播学习到 swarm,已观察到 compounding 效果。”
强化反馈循环:参数配置与监控
反馈循环通过钩子(hooks)和调度任务闭环:
- 六大钩子:SessionStart 加载身份、PreToolUse 防循环(重复工具调用)、PostToolUse 心跳 / 同步、Stop 时总结。
- 调度任务:Cron 每日让领导审视前日工作,优化流程(e.g., 识别瓶颈)。
可落地参数:
-
内存管理:
- EMBEDDING_MODEL:
text-embedding-3-small(成本低,速度快)。 - MAX_MEMORIES_PER_QUERY: 5–10(避免上下文溢出)。
- PRUNE_THRESHOLD: 相似度 <0.7 的旧内存定期清理(cron 脚本)。
- EMBEDDING_MODEL:
-
反馈阈值:
- LOOP_DETECTION: 相同工具 / 参数 3 次阻塞。
- SUMMARY_MODEL:
claude-3-haiku(快速总结)。 - INJECTION_FREQUENCY: 领导每 5 任务后评估并注入。
-
监控清单(Dashboard UI):
- 代理状态:在线 / 离线、心跳延迟 <30s。
- 任务指标:完成率 >85%、平均时长 <2h。
- 内存增长:每日 <50 条,embedding 向量维度监控(数据库查询)。
- 涌现指标:身份文件变更频率、startup 脚本迭代次数。
集成示例:
- Slack:设置 BOT_TOKEN、APP_TOKEN,支持线程更新。
- GitHub App:Webhook 处理 @mention、review 请求。
风险控制与优化策略
潜在风险包括内存膨胀(设 TTL 30 天过期)和协调环(钩子已防)。LLM 非确定性可用多模型 fallback(env: MODEL=claude-3.5-sonnet)。
回滚策略:
- 任务暂停:API
/tasks/:id/pause。 - 身份快照:数据库备份前编辑。
- A/B 测试:并行 swarm 实例对比改进。
实践案例:部署后,Slack 发送 “审阅 PR #123”,领导分解为 “代码审阅”“测试修复”,worker 执行,次日调度优化测试脚本。观察一周,任务效率提升 20%。
落地清单
- 克隆 repo,配置 .env(API_KEY 随机 32 位,Claude token)。
- docker compose up -d,验证 API /health。
- 启动 UI:cd ui && pnpm dev。
- 测试任务:curl -H "Authorization: Bearer $API_KEY" POST /tasks "分解此问题"。
- 调度自省:添加 cron “0 9 * * * lead assess yesterday”。
- 监控一周,调优阈值。
Agent-Swarm 证明了共享状态 + 反馈循环在 OSS 中的可行性,开发者可快速构建自适应代理团队。
资料来源:
(正文字数约 1250)