You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JADE框架中能否在非主容器的同一容器内创建多智能体?

当然可以在JADE的非主容器中创建多个智能体!你用-agents参数没成功,多半是因为非主容器的启动逻辑和主容器不一样——主容器启动时能直接通过-agents批量创建智能体,但非主容器得先成功连接到主容器,才能执行智能体创建的指令,直接用-agents参数会因为没连上主容器而失效。

两种可行的实现方式

方法1:通过命令行启动非主容器并创建多个智能体

你需要把-container(标记为非主容器)、-host(指定主容器的IP地址)和-agents参数组合起来,示例命令如下:

java jade.Boot -container -host 127.0.0.1 -agents agent1:com.yourpackage.MyFirstAgent;agent2:com.yourpackage.MySecondAgent
  • -container:告诉JADE这是一个非主容器节点,而非主容器
  • -host:指定主容器所在的IP(如果主容器和非主容器在同一台机器上,用127.0.0.1即可)
  • -agents:用分号;分隔多个智能体定义,每个定义格式为智能体名称:完整类路径

⚠️ 注意:执行这个命令前,必须确保主容器已经正常启动,否则非主容器无法连接,智能体也创建失败。

方法2:通过代码动态创建非主容器和多个智能体

如果是在Java代码中控制非主容器的启动和智能体创建,可以按以下步骤操作:

  1. 先配置非主容器的连接信息,连接到主容器:
// 配置主容器的IP和默认端口(JADE默认端口是1099)
Profile profile = new ProfileImpl("127.0.0.1", 1099, null);
// 给非主容器设置一个自定义名称(可选)
profile.setParameter(Profile.CONTAINER_NAME, "MyCustomNonMainContainer");
// 创建非主容器
AgentContainer nonMainContainer = Runtime.instance().createAgentContainer(profile);
  1. 批量创建并启动多个智能体:
// 创建第一个智能体
Agent agent1 = nonMainContainer.createNewAgent(
    "agent1", 
    "com.yourpackage.MyFirstAgent", 
    new Object[]{} // 传递给智能体的初始化参数,没有就传空数组
);
agent1.start();

// 创建第二个智能体
Agent agent2 = nonMainContainer.createNewAgent(
    "agent2", 
    "com.yourpackage.MySecondAgent", 
    new Object[]{}
);
agent2.start();
常见问题排查
  • 忘记添加-host参数:非主容器找不到主容器,导致智能体无法初始化
  • 智能体类路径错误:-agents参数中必须写完整的包名+类名,否则JADE找不到对应的类
  • JADE版本不一致:主容器和非主容器的JADE版本要保持一致,否则可能出现连接或类加载异常

内容的提问来源于stack exchange,提问作者hieuduy13

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:19:04