多代理协作平台

GooseTeam是一个基于协议的多代理协作平台,提供代理注册、消息管理、任务分配等功能,适用于团队协作和任务自动化场景。

  • by cliffhall
  • TypeScript
  • 本地部署
  • 74 星标
  • 更新于
在 GitHub 查看 cliffhall/GooseTeam

使用说明

鹅队

使鹅代理能够协作

协议:

代理人应遵循的操作程序,分为两种:

  • 自然语言:关于如何行为和使用工具的简化、人类可读的说明。
  • 美人鱼Markdown:以高效的文本格式描述的预期行为的简明流程图。

扩展名:

鹅延伸(MCP服务器)它为代理提供了用于任务和消息传递的工具。

  • 代理人注册: 通过唯一的ID分配和消息发送方便代理注册。
  • 消息管理: 存储来自代理的消息,使其可供检索。
  • 任务管理: 项目协调员角色创建任务并将其分配给其他代理。
  • 代理等待: 允许连接的代理在采取另一个操作之前等待指定的时间。
  • 远程服务器: 使用MCP代理,多个代理可以连接到同一个MCP服务器,这是协作所必需的。

进行中

  • 目前的重点是 Goose命令行界面 集成,因此您必须安装它。
    • 其他代理平台可以轻松地与此项目集成。
    • 协议和MCP服务器没有紧密耦合到鹅,只有npm agent: 脚本和协议前导中。

新:用美人鱼标记进行行为控制!

  • 代理协议表示为 美人鱼图.

  • 看看你最喜欢的LLM是否可以使用 agent:chart 启动您的代理的脚本!

截图

GooseTeam协议图表

GPT-4o同意将其作为控制机制

鹅代理

检查器-列表工具

检查器-添加消息

检查器-列出任务

如何跑步

告诉Goose关于延期的事

  • 跑 goose configure
  • 选择 添加扩展名
  • 选择 远程扩展
  • 进入 goose-team 名字
  • 进入http://localhost:3001/sse对于SSE端点URI

按顺序运行这些npm脚本:

  • 首先,将此仓库克隆到本地计算机上,然后 安装依赖项
  • npm run build -从源代码构建服务器。
  • npm run mcp-proxy 启动SSE代理以与鹅队MCP服务器的单个实例通信,
  • npm run inspector 在浏览器中启动MCP检查器
    • 点击此处 连接那么 list_tools那么 add_message,然后从 Human 发送一条消息,描述团队要处理的任务或项目。
  • npm run agent 要启动将读取协议和指令的代理,请连接到 goose-team 服务器,指定自己为项目协调员,然后开始创建任务。
    • 在检查器窗口中,单击 list_tasks 查看它正在添加的任务,
    • 当有一些任务时,你可以 npm run agent 一次又一次地启动代理,由项目协调员分配任务。

故障排除

鹅队的表现取决于模型!!!

按照以下步骤测试您是否有一个可以工作的模型。

  • npm run build -从源代码构建服务器。
  • npm run mcp-proxy 启动SSE代理以与鹅队MCP服务器的单个实例通信,
  • npm run agent:test 这将启动一个代理程序,该代理程序击中相同的MCP,但它有一个更简单的协议:用另一种语言打招呼,等待2秒,然后再做一次。
  • 这是一个视频 一个成功的 agent:test 跑。

目前,我唯一能了解情况的型号是 google/gemini-2.0-flash-001 (通过 openrouter.ai 避免速率限制停机)以及 openai/gpt-4o. 其他人将退出循环。对于模型来说,遵循协议并保持循环、检查消息、睡眠非常重要,尤其是对于项目协调员来说。

我建议这样做 build, mcp-proxy,以及 agent:test 如果你配置的模型做了一些工作,然后出现“消息循环结束”错误,那么你的模型就不太擅长使用工具。尝试不同的模型,看看什么有效。如果你得到了除上述模型之外的任何其他模型来继续工作,那么请告诉我!

MCP工具

代理

  • register_agent

    • 注册新代理并提供唯一ID和随机分配的颜色。
    • 输入: 无
    • 退货: JSON代理具有唯一 id 并分配 color.
  • list_agents

    • 列出所有已注册的代理,提供可用参与者的概述。
    • 输入: 无
    • 退货: 连接到服务器的所有代理的JSON列表。
  • agent_leave

    • 允许代理人离开团队。
    • 输入: 没有。
    • 退货: 离开的代理的JSON。
  • agent_wait

    • 允许代理在执行另一个操作之前等待指定的秒数。
    • 输入:
      • seconds:等待的秒数。
    • 退货: 确认经过的时间。

消息

  • add_message

    • 允许代理发送新消息,并将其存储在服务器中。
    • 输入:
      • senderId:发送消息的代理的ID。
      • content:消息的内容。
    • 退货: 确认添加消息。
  • recent_messages

    • 检索服务器上存储的最新消息。
    • 输入: 无
    • 退货: 包含三条最新消息的JSON数组。
  • list_messages

    • 检索服务器上存储的所有邮件。
    • 输入: 无
    • 退货: 包含服务器中所有消息的JSON数组。
  • clear_messages

    • 清除服务器上存储的所有邮件。
    • 输入: 无
    • 退货: 确认消息已清除。

任务

  • add_task

    • 向服务器添加任务。
    • 输入:
      • description:任务的描述。
    • 退货: 新添加的任务,分配了id。
  • list_tasks

    • 列出服务器中的所有任务。
    • 输入: 无
    • 退货: 服务器中所有任务的JSON列表。
  • assign_task

    • 将任务分配给代理。
    • 输入:
      • taskId:任务的ID。
      • agentId:要将任务分配给的代理的ID。
    • 退货: 确认添加消息。
  • complete_task

    • 完成一项任务。
    • 输入:
      • taskId:任务的ID。
    • 退货: 任务完成确认。

开发人员设置

再进行

  • cd /path/to/GooseTeam/
  • npm install

构建

  • npm run build
  • 在以下位置构建基于stdio的MCP服务器运行时 /dist/index.js

STDIO服务器-代理

  • npm run stdio:proxy
  • 在端口上启动基于SSE/MCP的代理 :3001 带端点 /sse
  • 此代理与STDIO包装的GooseTeam MCP服务器的单个实例进行通信
  • 多个客户端可以连接到同一服务器并查看相同的资源

SSE服务器-直接

  • npm run sse:direct
  • 在端口上启动GooseTeam MCP服务器的SSE封装实例 :3001 带端点 /sse
  • 多个客户端可以连接到同一服务器并查看相同的资源
  • 相当于使用我们的SSE版本的服务器的代理STDIO方法。

流式HTTP服务器-直接

  • npm run streamableHttp:direct
  • 在端口上启动GooseTeam MCP服务器的StreamableHTTP封装实例 :3001 带端点 /mcp
  • 多个客户端可以连接到同一服务器并查看相同的资源
  • 相当于使用我们的SSE版本的服务器的代理STDIO方法。

检查员

  • npm run inspector
  • 运行 模型上下文协议检查器
  • Inspector UI将在以下位置提供:http://localhost:5173
  • 在检查器UI中:
    • 确保 Transport Type 设置为 StreamableHttp
    • 确保 URL 设置为http://localhost:3001/mcp
    • 点击其 “连接” 按钮
      • 你应该看到绿灯了🟢和 “已连接” 消息。
    • 点击其 列出工具 按钮
  • 客户端的多个实例可以连接到同一服务器并共享相同的资源

Agent-协议文本

  • npm run agent:text
  • 启动一个新的GooseTeam代理,其命令如下: instructions/protocol-as-text.md
    • 此代理的协议指令以文本标记格式表示,包括标题、文本和项目符号。
    • 注意:这是一个自然语言提示,但由于它需要等待并保持循环,一些LLM可能会犹豫不决
    • 如果LLM无法保持循环,请尝试 代理等待测试 使用不同的LLM来找到合适的LLM。
  • 第一代理人将担任项目协调员
  • 注: 最好在启动第一个代理之前使用Inspector连接到服务器
    • 从“Human”发送一条消息,告诉它你希望团队完成什么

代理-协议如图

  • npm run agent:chart
  • 启动一个新的GooseTeam代理,其命令如下: instructions/protocol-as-chart.md
    • 该代理的协议指令以美人鱼标记格式表示,这是一种表达流程图的紧凑方式。
    • 注意:虽然这是一种表达协议的有效方式,但一些LLM可能无法理解它
    • 如果LLM不理解美人鱼标记,它会这么说并退出。
  • 第一代理人将担任项目协调员
  • 注: 最好在启动第一个代理之前使用Inspector连接到服务器
    • 从“Human”发送一条消息,告诉它你希望团队完成什么

代理等待测试

  • npm run agent:wait:test
  • 启动一个新的GooseTeam代理,其命令如下: instructions/wait-loop-test.md
  • 这将测试配置的模型保持循环的能力,定期检查消息。
  • 如果它以“传出消息队列为空”的错误结束,那么它不是一个好的工具使用模型,因此不适合与GooseTeam一起使用。
  • 注: 请确保首先运行MCP代理。

格式

  • npm run format
  • 跑 prettier 在代码上,调整格式

类型检查

  • npm run typecheck
  • 跑 tsc 使用args检查和报告类型问题

棉绒

  • npm run lint
  • 跑 eslint 非破坏性地检查和报告语法问题

LintFix

  • npm run lint:fix
  • 跑 eslint 检查并修复语法问题

测试

  • npm run test
  • 运行单元测试

链接