自动化技术正在深刻重塑现代工作方式,尤其是流程自动化(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
