Solon v3.10.1

skills - 技能注册与优先级

</> markdown
2026年1月22日 下午11:02:17

Solon AI 提供了灵活的技能注册机制,你可以根据技能的生命周期需求,选择将其注册为全局默认技能,或者在单次请求中动态注入。

1、全局默认注册(静态配置)

如果你希望某个技能(如:基础安全审计、通用常识、全局翻译)在 ChatModel 的每一次对话中都生效,可以在构建 ChatModel 时通过 Builder 进行注册。

ChatModel model = ChatModel.of(config)
        .defaultSkillAdd(skill) //或者(带优先级) .defaultSkillAdd(index, skill) 
        .build();
       

2、单次请求注入(动态覆盖)

在某些复杂的业务场景中,你可能需要根据当前的上下文(如:不同的业务入口、不同的用户角色)动态地决定加载哪些技能。

model.prompt("...")
    .options(o -> o.skillAdd(skill)) //或者(带优先级) o.skillAdd(index, skill) 
    .call();

3、技能的执行优先级(顺序)

当多个技能同时存在时,Solon AI 会按照注册顺序依次调用各技能的 injectInstruction 方法。

  • 顺序执行:技能指令会按序累加到 System Message 中。
  • 工具染色:各技能自带的工具会自动打上所属技能的标签,模型会根据 System Message 中定义的 SOP 逻辑,选择最合适的技能工具进行调用。

指定执行顺序:

model.prompt("...")
    .options(o -> o.skillAdd(2, skill)) //(带优先级)
    .call();

4、与 Tool 注册的关系

技能注册不仅注入了 Prompt 指令,同时也完成了其内部 getTools() 集合的自动注册。你无需再手动调用 defaultToolAdd 来挂载属于该技能的工具。

提示: 如果一个功能只需要“执行逻辑”而不需要“SOP 指令约束”,建议使用工具形态; 如果该功能包含复杂的业务逻辑、需要动态准入、或者需要引导模型的思考路径,则强烈建议封装为 Skill。