Nacos¶
agentscope-extensions-nacos 把 Nacos 用作 AgentScope 的统一控制面:注册发现 A2A Agent、动态加载 Prompt、托管 Skill。包含三个子模块,按需组合使用。
子模块 |
解决的问题 |
|---|---|
|
A2A AgentCard 与服务实例的注册/发现 |
|
把 Prompt 模板放到 Nacos,热更新到运行中的 Agent |
|
从 Nacos AI 模块加载 Skill 包(ZIP) |
A2A 注册发现¶
添加依赖¶
<dependency>
<groupId>io.agentscope</groupId>
<artifactId>agentscope-extensions-nacos-a2a</artifactId>
<version>${agentscope.version}</version>
</dependency>
服务端:把 AgentCard 注册到 Nacos¶
import io.agentscope.core.nacos.a2a.registry.NacosA2aRegistry;
import io.agentscope.core.nacos.a2a.registry.NacosA2aRegistryProperties;
Properties props = new Properties();
props.setProperty("serverAddr", "127.0.0.1:8848");
NacosA2aRegistry registry = new NacosA2aRegistry(props);
NacosA2aRegistryProperties props2 = new NacosA2aRegistryProperties();
// props2.setNamespace(...) / setGroup(...) 等
registry.registerAgent(agentCard, props2);
注册后,AgentCard 与服务端点会写入 Nacos 的 AI Service,供消费者发现。
客户端:通过 Nacos 拿到远端 AgentCard¶
import io.agentscope.core.nacos.a2a.discovery.NacosAgentCardResolver;
NacosAgentCardResolver resolver = new NacosAgentCardResolver(props, "translator-agent");
A2aAgent remote = A2aAgent.builder()
.name("translator")
.agentCardResolver(resolver)
.build();
Prompt 配置中心¶
添加依赖¶
<dependency>
<groupId>io.agentscope</groupId>
<artifactId>agentscope-extensions-nacos-prompt</artifactId>
<version>${agentscope.version}</version>
</dependency>
用法¶
import com.alibaba.nacos.api.ai.AiService;
import io.agentscope.core.nacos.prompt.NacosPromptListener;
NacosPromptListener prompts = new NacosPromptListener(aiService);
String tpl = prompts.getPrompt("system-prompt", Map.of(
"userName", "Alice"
));
监听器内部维护本地缓存,Nacos 上 prompt 更新时会自动推送进来,下一次 getPrompt(...) 立即拿到新版本,无需重启。
Skill 仓库¶
agentscope-extensions-nacos-skill 提供一个 AgentSkillRepository 实现,把 Nacos AI 模块管理的技能 ZIP 包下载下来解析。
<dependency>
<groupId>io.agentscope</groupId>
<artifactId>agentscope-extensions-nacos-skill</artifactId>
<version>${agentscope.version}</version>
</dependency>
import io.agentscope.core.nacos.skill.NacosSkillRepository;
Properties props = new Properties();
props.setProperty(NacosSkillRepository.SKILL_VERSION_PATH, "1.2.0");
// 或 SKILL_LABEL_PATH = "stable"
NacosSkillRepository repo = new NacosSkillRepository(aiService, "default-namespace", props);
AgentSkill skill = repo.getSkill("calculator");
版本/标签的解析顺序是:构造时传入的 Properties → JVM -D 系统属性 → 环境变量。同时设置版本和标签时,版本优先,标签不会用于下载。