鹅队
使鹅代理能够协作
协议:
代理人应遵循的操作程序,分为两种:
- 自然语言:关于如何行为和使用工具的简化、人类可读的说明。
- 美人鱼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- 运行单元测试
链接
- MCP规范: 可以找到完整的模型上下文协议规范 这里.
- 服务器参考: 我们遵循一种简单但模块化的方法,如 .
- 灵感来源: 从Aaron Goldsmith的Gist开始迭代 这里.
- 看亚伦的“组建人工智能代理团队“谈谈他最初的实验。
