项目简介

midex是一个强大的多智能体工作流编排平台,旨在协调专业的AI智能体(如架构师、实现者、评审员、调试器等)通过结构化的工作流执行复杂的软件开发任务。它提供了一个标准的Model Context Protocol (MCP) 服务器接口,使得大型语言模型(LLM)客户端能够访问工作流相关的资源、调用执行工具,并管理工作流的整个生命周期。同时,midex也包含一个基于Next.js构建的Web客户端,用于直观地监控工作流执行和查看生成的构件。

主要功能点

  • 多智能体工作流编排: 允许定义和执行由多个AI智能体协同完成的复杂任务序列,支持工作流状态管理、步骤执行和结果持久化。
  • 上下文资源管理: 以标准化的方式托管和管理AI代理定义、工作流模板、规则、执行历史和构件等资源,并提供数据访问接口。LLM客户端可以查询这些资源以获取必要信息。
  • 工具调用能力: 注册并提供'workflow.start'(启动新工作流)和'workflow.next_step'(推进工作流到下一步)等关键工具,允许LLM客户端直接触发和控制工作流执行流程。
  • Telemetry与监控: 记录工作流执行的详细事件和状态,支持通过Web客户端或MCP接口进行实时监控和历史追溯,以便进行审计和分析。
  • SQLite数据库支持: 使用SQLite进行数据存储,支持自动迁移、WAL模式和FTS5全文搜索,确保数据管理的高效和可靠。

安装步骤

  1. 克隆仓库: 打开您的终端或命令行工具,执行以下命令将midex仓库克隆到本地:
    git clone https://github.com/scscodes/midex.git
  2. 进入项目目录: 进入新创建的midex项目文件夹:
    cd midex
  3. 安装依赖并完成设置: 运行此命令将自动安装所有Node.js依赖,编译TypeScript代码,并初始化SQLite数据库,同时将初始资源(如代理、工作流定义)同步到数据库中。
    npm install
    npm run setup
  4. 启动MCP服务器和Web客户端: 执行此命令将启动midex的MCP服务器和配套的Web客户端:
    npm run dev
    MCP服务器将在后台启动,并通过Stdio协议监听请求。Web客户端将运行在通常的Next.js端口(如'http://localhost:3000'),您可以通过浏览器访问它来查看工作流概览。

服务器配置

midex MCP服务器通过JSON-RPC协议与MCP客户端进行通信。您的MCP客户端需要以下配置信息来连接midex服务器。请注意,以下配置信息是为MCP客户端提供的,客户端只需知道如何启动midex服务器,而不需要了解其内部代码。

{
  "name": "midex",
  "type": "stdio",
  "command": "node",
  "args": [
    "${PROJECT_ROOT}/server/dist/mcp/server.js"
  ],
  "cwd": "${PROJECT_ROOT}",
  "description": "midex是一个多智能体工作流编排平台,提供LLM上下文、资源和工具,以自动化软件开发任务。"
}
  • 'name': 服务器的唯一名称,此处为'midex'。
  • 'type': 传输协议类型,'midex'服务器默认使用'stdio'进行通信。
  • 'command': 启动MCP服务器进程的可执行文件或解释器命令。'midex'是一个Node.js应用,因此使用'node'。
  • 'args': 传递给'command'的参数列表。此处指向'midex'服务器编译后的主入口文件'server/dist/mcp/server.js'。'${PROJECT_ROOT}'是MCP客户端在运行时将替换为midex项目根目录的占位符。
  • 'cwd': 启动服务器进程的工作目录。设置为midex项目根目录,以确保服务器能正确找到其内部文件和资源。
  • 'description': 服务器的简要描述,供MCP客户端用户参考。

基本使用方法

  1. 启动服务器: 按照上述“安装步骤”中的说明,确保midex的MCP服务器已成功启动并在后台运行。
  2. MCP客户端连接: 在您的MCP客户端应用程序中,使用上面提供的JSON配置信息建立与midex MCP服务器的连接。
  3. 发现资源与工具: 客户端连接成功后,可以向midex MCP服务器发送'listResources'请求来发现可用的工作流、代理定义和执行历史等资源,同时发送'listTools'请求来发现可调用的工具。
    • 例如,'listResources'可能会返回'midex://workflow/available_workflows'、'midex://workflow/current_step/{executionId}'等URI。
    • 'listTools'会返回'workflow.start'(启动工作流)和'workflow.next_step'(推进工作流)等工具。
  4. 启动工作流: 通过调用'workflow.start'工具,并指定一个'workflow_name'(例如,可以从'available_workflows'资源中获取),LLM客户端可以启动一个新的工作流执行。服务器会返回第一个步骤的代理内容('agent_content')和用于继续的'continuation_token'。
  5. 推进工作流: LLM客户端根据当前步骤的'agent_content'和自身逻辑执行任务,完成任务后,调用'workflow.next_step'工具,传入当前步骤的'token'和任务'output',以将工作流推进到下一个步骤。服务器将返回下一个步骤的代理内容和新的令牌,或指示工作流已完成。
  6. 监控与交互: LLM客户端可以通过'readResource'请求,结合工作流的'execution_id',来获取工作流的实时状态('midex://workflow/workflow_status/{executionId}')、步骤历史('midex://workflow/step_history/{executionId}')以及生成的构件('midex://workflow/workflow_artifacts/{executionId}')等信息,从而全面监控工作流进展和管理LLM与工作流的交互。

信息

分类

开发者工具