项目简介

Seclab Taskflow Agent 是一个基于 Model Context Protocol (MCP) 的多智能体框架,旨在简化智能体工作流的定义和脚本化。它利用YAML语法来编排智能体任务,并支持多种MCP服务器(包括内置和外部),为大型语言模型 (LLM) 应用提供上下文信息和功能调用。其核心价值在于无需编写代码即可快速构建和执行复杂的智能体工作流,特别适用于安全研究、代码审计和漏洞分类等场景。

主要功能点

  • 多智能体协作: 通过YAML文件定义一系列任务流,实现多个智能体之间的协作和任务接力,支持复杂的自动化工作。
  • MCP服务器集成: 框架内置了CodeQL代码分析、内存缓存 (Memcache) 和日志簿 (Logbook) 等MCP服务器。这些服务器以标准化的方式向LLM提供资源、工具和Prompt模板,极大地扩展了LLM的能力。它也支持灵活地集成外部MCP服务器。
  • 工具调用: 智能体可以通过MCP服务器调用强大的外部工具,例如执行CodeQL查询进行深度代码分析,或操作内存缓存进行数据存储和检索,实现复杂的数据管理。
  • Prompt模板管理: 支持定义可复用的Prompt模板,允许用户自定义LLM交互模式,提升Prompt工程的效率和灵活性。
  • 命令行工具: 提供友好的命令行接口,方便用户快速部署和运行智能体任务流,无需深入了解底层实现细节。
  • Docker支持: 项目提供了Docker部署方式,简化了环境配置和分发过程,确保跨平台的一致性运行。

安装步骤

  1. 克隆仓库: 首先,将项目从GitHub克隆到本地:
    git clone https://github.com/GitHubSecurityLab/seclab-taskflow-agent.git
    cd seclab-taskflow-agent
  2. 创建并激活Python虚拟环境: 建议在虚拟环境中安装依赖,以避免与系统Python环境冲突:
    python -m venv .venv
    source .venv/bin/activate
  3. 安装项目依赖: 使用'hatch'工具进行项目构建和依赖同步:
    pip install hatch
    hatch build
    # 或者,如果hatch build没有安装所有运行时依赖,可以运行:
    # pip install -r requirements.txt
  4. 配置GitHub Copilot Token: 该框架使用GitHub Copilot API作为后端。您需要提供一个有权使用GitHub Copilot的GitHub Token。为了方便管理和持久化配置,可以在项目根目录创建或编辑名为 '.env' 的文件,并添加以下内容:
    # .env 文件示例
    COPILOT_TOKEN=<您的GitHub_Copilot_Token>
    # 如果您的任务流需要访问GitHub资源,可能还需要一个GitHub个人访问令牌
    GITHUB_PERSONAL_ACCESS_TOKEN=<您的GitHub_个人访问令牌>
    # 如果使用CodeQL MCP服务器,指定CodeQL数据库的基路径
    CODEQL_DBS_BASE_PATH="/path/to/your/codeql_databases"
    请将 '<您的GitHub_Copilot_Token>' 替换为实际的Copilot API令牌。

MCP服务器配置示例

MCP服务器是为MCP客户端提供服务的后端应用。MCP客户端(例如其他LLM应用或本框架中的Agent运行时)需要知道如何启动或连接到这些MCP服务器。以下是几个本仓库中MCP服务器的配置信息示例,以JSON格式展示,这些信息会被MCP客户端用于启动和管理服务器:

  1. CodeQL MCP 服务器配置示例: 此配置描述了如何启动和连接 CodeQL MCP 服务器。它提供了一系列工具用于代码分析,例如查询函数定义、调用图等。

    {
      "name": "CodeQL MCP Server",
      "description": "CodeQL MCP服务器提供代码分析工具,支持执行CodeQL查询、获取文件内容和搜索源代码。该服务器通过标准输入/输出 (stdio) 协议运行。",
      "server_params": {
        "kind": "stdio",
        "command": "python",
        "args": [
          "-m",
          "seclab_taskflow_agent.mcp_servers.codeql.mcp_server"
        ],
        "env": {
          "CODEQL_DBS_BASE_PATH": "{{ env CODEQL_DBS_BASE_PATH }}"
        }
      },
      "notes": "MCP客户端将使用 'command' 和 'args' 字段来启动CodeQL服务器的Python进程。'env' 字段定义了传递给服务器的环境变量,'CODEQL_DBS_BASE_PATH' 会从客户端运行环境的环境变量中获取其值,指定CodeQL数据库的存放路径。'kind' 字段表示使用stdio传输协议进行通信。"
    }
  2. Memcache MCP 服务器配置示例: 此配置描述了如何启动和连接 Memcache MCP 服务器。它提供简单的内存缓存功能,智能体可以利用它来存储和检索任务过程中的关键信息。

    {
      "name": "Memcache MCP Server",
      "description": "Memcache MCP服务器提供键值存储功能,作为智能体在任务中存储和检索信息的记忆缓存。它通过标准输入/输出 (stdio) 协议运行。",
      "server_params": {
        "kind": "stdio",
        "command": "python",
        "args": [
          "-m",
          "seclab_taskflow_agent.mcp_servers.memcache.memcache"
        ],
        "env": {
          "MEMCACHE_STATE_DIR": "{{ env MEMCACHE_STATE_DIR }}",
          "MEMCACHE_BACKEND": "{{ env MEMCACHE_BACKEND }}"
        }
      },
      "notes": "MCP客户端将使用 'command' 和 'args' 字段来启动Memcache服务器的Python进程。'MEMCACHE_STATE_DIR' 指定内存数据文件存放的目录,'MEMCACHE_BACKEND' 指定使用的存储后端(如'dictionary_file'或'sqlite')。这些环境变量的值也从客户端运行环境获取。'kind' 字段表示使用stdio传输协议进行通信。"
    }

基本使用方法

  1. 运行一个Agent Personality (智能体角色) 并提供Prompt: 这会启动一个指定角色的智能体,并直接向其提供一个用户Prompt进行交互。

    hatch run main -p seclab_taskflow_agent.personalities.assistant 'explain modems to me please'

    上述命令将使用内置的 'assistant' 智能体角色来回答您的问题。

  2. 运行一个Taskflow (任务流): Taskflow是一个预定义的智能体任务序列,通过YAML文件描述。

    hatch run main -t examples.taskflows.example

    此命令会执行 'examples/taskflows/example.yaml' 文件中定义的任务流。

  3. 通过Docker部署和运行Taskflow: 您也可以使用Docker镜像来部署和运行任务流。Docker提供了隔离的环境,便于分发。

    # 运行一个内置的示例任务流
    docker/run.sh -t example
    
    # 运行自定义任务流,并挂载本地数据和CodeQL数据库
    MY_TASKFLOWS=~/my_taskflows \
    MY_DATA=~/app/my_data \
    CODEQL_DBS_BASE_PATH=/app/my_data/codeql_databases \
    docker/run.sh -t custom_taskflow

    在Docker命令中,您可以设置环境变量(如 'MY_TASKFLOWS', 'MY_DATA', 'CODEQL_DBS_BASE_PATH')来挂载本地目录,从而使自定义的任务流、数据或CodeQL数据库在Docker容器内可用。

信息

分类

开发者工具