返回市场
鹅队

鹅队

作者:cliffhall69 星标更新:2025-07-21

项目介绍

GooseTeam

GooseTeam Logo

启用Goose代理进行协作

协议:

代理应遵循的操作程序,有两种形式:

  • 自然语言:简化的人类可读指令,说明如何行为和使用工具。
  • Mermaid Markdown:简洁的行为流程图,以高效的文本格式描述。

扩展:

Goose扩展(MCP服务器),提供代理执行任务和消息传递所需的工具。

  • 代理注册: 促进代理注册,分配唯一ID并发送消息。
  • 消息管理: 存储代理的消息,使其可供检索。
  • 任务管理: 项目协调员角色创建并分配任务和角色给其他代理。
  • 代理等待: 允许连接的代理在执行另一个动作之前等待指定的时间。
  • 远程服务器: 使用MCP代理,多个代理可以连接到同一个MCP服务器,这对于协作是必要的。

进展中

  • 目前的重点是Goose CLI集成,因此您必须安装它。
    • 其他代理平台可以轻松地与这个项目集成。
    • 协议和MCP服务器并不紧密耦合到Goose,只有npm agent:脚本和协议前言部分是这样。

新功能:使用Mermaid Markdown控制行为!

  • 代理协议以mermaid图表的形式表达。
  • 查看您的喜欢的LLM是否能通过使用agent:chart脚本来启动您的代理!

屏幕截图

GooseTeam协议作为图表

goose-protocol-chart.png

GPT-4o认为这可以作为一个控制机制

Goose PC Follows Mermaid

Goose代理

Goose Agents

检查器 - 列出工具

Inspector

检查器 - 添加消息

inspector-add-message.png

检查器 - 列出任务

inspector-list-tasks.png

如何运行

告诉Goose关于扩展

按顺序运行这些npm脚本:

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

故障排除

GOOSE TEAM的工作效果取决于模型!!!

按照以下步骤测试是否有可用的模型。

  • npm run build - 从源代码构建服务器。
  • npm run mcp-proxy 启动一个SSE代理来与单个实例的goose-team MCP服务器通信,
  • npm run agent:test 这将启动一个代理,它会访问相同的MCP,但其协议更简单:用不同的语言说“你好”,等待2秒后再次执行。
  • 这是一个视频展示了成功的 agent:test 运行。

目前,我只能让 google/gemini-2.0-flash-001(通过openrouter.ai避免因速率限制而关闭)和 openai/gpt-4o 保持在循环中。 其他模型会脱离循环。重要的是模型能够遵循协议并保持在循环中,检查消息,睡眠,特别是对于项目协调员。

我建议您执行 buildmcp-proxyagent:test,如果配置的模型执行了一些工作然后停止并显示“消息循环结束”错误,则说明该模型不擅长使用工具。尝试不同的模型看看哪些有效。如果您发现除了上述提到的模型之外的其他模型也能持续工作,请告诉我!

MCP工具

代理

  • register_agent

    • 注册一个新的代理,并提供唯一的ID和随机分配的颜色。
    • 输入:
    • 返回: 包含唯一 id 和分配 color 的JSON代理。
  • 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
  • /dist/index.js 构建基于stdio的MCP服务器运行时

STDIO服务器 - 代理

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

SSE服务器 - 直接

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

StreamableHTTP服务器 - 直接

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

检查器

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

代理 - 文本协议

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

代理 - 图表协议

  • npm run agent:chart
  • 启动一个新的GooseTeam代理,其蹒跚的命令在:instructions/protocol-as-chart.md
    • 该代理的协议指令以mermaid markdown格式表达,这是一种紧凑的方式表达流程图。
    • 注意:尽管这是一种高效表达协议的方式,但某些LLM可能无法理解它。
    • 如果LLM不理解mermaid markdown,它会这样说并退出。
  • 第一个代理将承担项目协调员的角色
  • 注意: 最好在启动第一个代理之前使用检查器连接到服务器
    • 从 "Human" 发送一条消息,告诉它希望团队完成什么

代理等待测试

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

格式

  • npm run format
  • 对代码运行 prettier,调整格式

类型检查

  • npm run typecheck
  • 运行 tsc 并带参数检查并报告类型问题

代码检查

  • npm run lint
  • 运行 eslint 非破坏性地检查并报告语法问题

修复代码检查

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

测试

  • npm run test
  • 运行单元测试

链接

  • MCP规范: 完整的模型上下文协议规范可以在这里找到。
  • 服务器参考: 我们遵循一个简单但模块化的方法,如GitHub MCP服务器所示。
  • 灵感来源: 从Aaron Goldsmith的Gist 这里迭代而来。
  • 观看Aaron的"构建AI代理团队"演讲,了解他的初步实验。