首页 > 教程攻略 > ai资讯 >大模型 | XAgent 的部署及运行

大模型 | XAgent 的部署及运行

来源:互联网 时间:2026-08-01 13:52:09

自动化技术正在重塑我们的工作方式,尤其是流程自动化(Process Automation),它试图让那些复杂的业务处理——数据处理、文档流转、客户服务等——变得像流水线一样高效。在这个背景下,Agent(智能体)在机器人流程自动化(RPA)领域扮演了革命性的角色,而一个名为XAgent的开源项目尤为引人注目。

大模型

XAgent简介

XAgent

是一个开源、基于大型语言模型(LLM)的

通用自主智能体

,它能够自动搞定各种复杂任务,几乎不需要人类插手。它的核心设计是一套双环机制:

外循环

负责高层任务管理,说白了就是

规划(Planning)

内循环

负责底层任务执行,也就是实打实的

执行(Execution)

。两者配合,让整个系统既有战略眼光,又有执行效率。

XAgent的几个关键特点值得关注:

  • 自主性

    :无需人类参与,自动解决各种任务,真正意义上的“放手”。
  • 安全性

    :所有行为都被限制在Docker容器内,主机环境不受影响,跑起来放心。
  • 可扩展性

    :支持添加新工具,甚至新智能体,能力可以不断扩充。
  • GUI

    :既可以通过图形界面,也能通过命令行与智能体交互,使用门槛低。
  • 与人类的合作

    :它不仅能遵循人类指令完成任务,遇到棘手问题时还会主动求助,很懂协作。

XAgent原理

XAgent的规划和任务执行通过双循环机制编排。简单来说,外循环负责高层次的全局管理,内循环专注于每个子任务的底层执行和优化。

外循环

外循环作为高层规划器和整个问题解决序列的主要协调者。它的职责可以分解为两步:

  • 初始计划生成

    :PlanAgent先生成一个初始计划,把复杂任务拆解成更小、更好管理的子任务,放在任务队列里,直接排队等待执行。
  • 迭代式计划优化

    :初始计划落地后,PlanAgent从队列中释放第一个任务,交给内循环。它持续监视进展和状态,每个子任务完成后,内循环会返回ToolAgent的反馈。PlanAgent根据反馈动态调整——优化计划或继续执行后续子任务,直到队列清空为止。

内循环

内循环负责执行外循环分配的子任务。基于外循环给定的任务,它会指定一个合适的ToolAgent,确保结果靠谱。内循环的几个关键点:

  • 智能体调度和工具获取

    :根据子任务的性质,派遣具备相应能力的ToolAgent,并从外部系统获取必要工具。
  • 工具执行

    :ToolAgent采用ReACT模式——寻找最佳的动作序列(工具调用)来完成子任务。这一步类似人类解题时的“思考→行动”循环。
  • 反馈和反思

    :在完成一系列动作后,ToolAgent会发出一个名为“subtask_submit”的特定动作,将反馈和反思传递给PlanAgent。反馈会说明子任务是否成功,或者哪里可以改进。

PlanAgent:动态规划和迭代改进

PlanAgent赋予智能体不断制定和修订计划的能力,以应对多变的环境和突发需求。它专门用于外循环,通过生成初始计划和不断修订计划来实现目标。PlanAgent包含四个关键函数:

  • 子任务拆分

    :将特定子任务进一步分解为更细粒度的单元,只有当前正在执行或尚未启动的子任务才有资格拆分。
  • 子任务删除

    :删除尚未开始的子任务,进行中的或已完成的不能动。这保证了灵活性,可以裁剪多余或不相关的任务。
  • 子任务修改

    :修改子任务的内容,同样不能修改已经开始或已经完成的,保持整体计划的完整性。
  • 子任务添加

    :在特定子任务之后插入新任务,只能插在当前处理的子任务或其后续任务之后,确保执行顺序不乱。

ToolAgent:在函数调用中协同推理和行动

ToolAgent使用ReACT模式,在每一轮中根据先前交互生成一个动作。关键是把推理和行动捆绑在同一个函数调用里——也就是说,“思考”过程和将要执行的动作都被视为特定函数的参数。每个函数调用包含以下组件:

  • 思考

    :智能体对任务的洞察力概括。
  • 推理

    :跟踪智能体得出思考的逻辑轨迹。
  • 批评

    :捕捉智能体对自身行动的反思,作为一个反馈回路,强调潜在疏忽或改进方向。
  • 指令

    :根据推理决定下一步要采取的动作。
  • 参数

    :列举要执行的动作的具体细节。

ToolServer:多样化的支持工具

ToolServer包括三个关键组件:

  • ToolServerManager

    :管理Docker容器(即节点)的生命周期,处理创建、监控和关闭。新会话开始时,管理器可以创建一个新节点,并定期检查节点状态确保健康运行。
  • ToolServerMonitor

    :检查节点状态,更新状态,确保它们有效执行。如果节点长时间空闲,监视器会停止它以节省资源。
  • ToolServerNode

    :执行单元,在里面执行具体的动作,比如API调用、文件上传、工具检索等。

部署

1. 环境搭建

1.1 基本环境安装

git clone https://github.com/OpenBMB/XAgent.git
cd XAgent
# 安装依赖,python版本 >= 3.10
pip install -r requirements.txt

1.2 配置

运行之前,在 assets/config.yml 中配置XAgent。需要至少提供OpenAI key用于访问OpenAI API。如果想更换XAgentServer的config_file路径,需要修改 .env 文件中 CONFIG_FILE* 的值并重启Docker容器。

1.3 编译和运行ToolServer

ToolServer作为Docker容器,为XAgent运行提供安全环境。如果修改了配置,需要重新执行下面的命令:

docker compose up --build

4. 运行XAgent

docker exec XAgent-Server systemctl start nginx

5. 访问XAgent-Server

XAgent-Server启动后,默认访问地址是 http://localhost:5173,需要确保端口对外开放。首次访问时,控制台会打印日志信息,类似这样:

XAgent-Server | XAgent Service Startup Param:
XAgent-Server | app: app:app
XAgent-Server | prod: False
XAgent-Server | base_dir: XAgentServer
XAgent-Server | use_redis: False
XAgent-Server | recorder_root_dir: running_records
XAgent-Server | default_login: True
XAgent-Server | check_running: False
XAgent-Server | host: 0.0.0.0
XAgent-Server | port: 8090
XAgent-Server | debug: True
XAgent-Server | reload: True
XAgent-Server | workers: 1
XAgent-Server | share_url: https://x-agent.net/api/conv/community
XAgent-Server | DB: 
XAgent-Server | Redis: 
XAgent-Server | Email: 
XAgent-Server | Upload: 
XAgent-Server | XAgent Service Init Dependence.
XAgent-Server | init a thread pool executor, max_workers: 1
XAgent-Server | XAgent Service Init Dependence: Complete!
XAgent-Server | Default user: Guest, token: xagent, you can use it to login
XAgent-Server | XAgent Server Dependences:
XAgent-Server | Python: 3.10+ 
XAgent-Server | FastAPI: Http server
XAgent-Server | Websocket: long connect with client
XAgent-Server | MySQL: sa ve xagent data
XAgent-Server | SqlAlchemy: ORM with MySQL
XAgent-Server | Redis: sa ve status of interaction
XAgent-Server | Threading: run interaction
XAgent-Server | APScheduler: send data to client and keep alive
XAgent-Server | FastAPI APIRouter: manage websocket route
XAgent-Server | XAgentError: XAgentServer.exts.exception_ext
XAgent-Server | XAgent Server Version:
XAgent-Server | V 1.1.0
XAgent-Server | Notes:
XAgent-Server | Since V 1.1.0, 
XAgent-Server | Local storage will no longer be supported, replaced by Mysql.
XAgent-Server | The service depends on Redis and Mysql, 
XAgent-Server | so you need to install Redis and Mysql before using it.
XAgent-Server | Before you use this service, please ensure that the following services are a vailable:
XAgent-Server | 1. Redis on docker, port: 6379, you can start it by docker, default password: xagent
XAgent-Server | 2. Mysql on docker, port: 3306, you can start it by docker
XAgent-Server | 3. XAgent Tool Server is runnning on port 8080
XAgent-Server | 4. Port 8090 is not occupied