1、纪年
- v0: 2018 ~ 2019 (2y)
- v1: 2020 ~ 2022 (3y)
- v2: 2023 ~ 2024 (2y)
- v3: 2024 ~ 2026 (1.5y)
- v4: 2026 ~
2、v3.x 升到 v4.x 提醒
- 提醒1:之前没有使用弃用接口的,可以直接升级
- 提醒2:有使用弃用接口的。建议先升级到 3.10.7;替换弃用代码后,再升级到 4.0.0
总体思考是:移除弃用方法或类。总体变化不大。其中,solon ai 体系变化较大(skill 概念改为 talent)
3、更新说明(更详细内容见后面的“附件”)
for solon 生态:
- 新增 mcp-json-jackson2
- 新增 solon-view-aifei-enjoy 插件
- 新增 solon-cache-caffeine3 插件
- 新增 solon-ai-talent-gateway(由 solon-ai-skill-restapi 和 solon-ai-skill-toolgateway 合并而来)
- 新增 solon-ai-talent-mount 才能插件
- 添加 solon
ScopeLocal.getOr(Supplier)方法 - 添加 solon
AppContext.resolvePlaceholders方法 - 添加 solon-config-snack4 开放属性序列化的 Options 定制支持
- 添加 solon-flow FlowContext.data(), serData() 方法(vars, serVars 标为弃用)
- 调整 solon-cache-caffeine 增加 md5 控制、默认时间、缓存头控制支持
- 调整 solon-cache-xxx enableMd5key 默认为 false
- 调整 solon Utils.annoAlias 标为弃用(由 Utils.valueOr 替代)
- 移除 solon-flow FlowContext.model() 方法 //.vars()
- 移除 solon-flow Link.condition 方法 //.when
- 移除 solon-expression StandardContext 类
- 修复 solon-serialization-snack4 Snack4StringSerializer.name 为 “snack4-json”
- eggg 升为 1.1.3
- snack4 升为 4.0.52
- liquor 升为 1.6.8
- socketd 升为 2.6.0
- folkmq 升为 1.8.0
- asm 升为 9.10
- lombok 升为 1.18.46
- slf4j 升为 2.0.18
- log4j 升为 2.26.0
- junit5 升为 5.14.4
- hutool 升为 5.8.44
- snakeyaml 升为 2.6
- fastjson2 升为 2.0.62
- jackson2 升为 2.21.4
- gson 升为 2.14.0
- redisson 升为 3.52.0
- lettuce 升为 6.8.2.RELEASE
- kafka 升为 3.9.2
- reactor-netty-http 升为 1.3.5
- netty 升为 4.1.134.Final
- smartsocket 升为 2.0.0
- smarthttp 升为 2.5.19
- vert.x 升为 4.5.27
- tomcat 升为 9.0.118
- undertow 升为 2.2.39.Final
- rocketmq5 升为 5.2.0
- nacos3 升为 3.2.1
- swagger 升为 1.6.16
- swagger2 升为 2.2.50
- undertow (for java17) 升为 2.3.24.Final
- jetty (for java17) 升为 12.1.9
- xxl-job-core3 (for java17) 升为 3.4.0
- jackson3 (for java17) 升为 3.1.3
- tomcat (for java17) 升为 11.0.22
for solon-ai 生成
- 变更 solon skill “概念”改为 solon talent(避免与 agent skill 的冲突)
- 新增 mcp-core(替换之前的 mcp-sdk,保持与官方相同命名)
- 新增 mcp-json-jackson2
- 新增 solon-ai-sandbox
- 新增 solon-ai-mcp MCP_2025_11_25 协议支持(支持 ServerTransportSecurityValidator 签权)
- 新增 solon-ai-talent-mount 才能插件(原 PoolManager 独立出来)
- 添加 solon-ai-talent-openapi OpenApiSkill.removeApi 方法
- 添加 solon-ai-talent-openapi ApiSource 超时配置支持
- 添加 solon-ai-talent-gateway McpGatewaySkill 专门处理 mcp(ToolGatewaySkill 可以处理所有工具)
- 添加 solon-ai-talent-cli TerminalTalent 系统级沙盒限制支持
- 添加 solon-ai-core ChatOptions:httpCustomize 方法
- 添加 solon-ai-core Talent::isEnabled 方法
- 添加 solon-ai-core AiConfig::standard(替代 provider 之前的作用)
- 添加 solon-ai-core ReActAgent::getModel 方法
- 添加 solon-ai-agent ReActInterceptor.onReasonStart 事件方法
- 添加 solon-ai-agent AgentTrace.getOriginalPrompt, getWorkingMemory 方法
- 添加 solon-ai-agent AgentTrace.getRunId 方法
- 添加 solon-ai-agent AgentChunk.getRunId 方法
- 添加 solon-ai-agent TeamAgent 添加初心标记
- 添加 solon-ai-agent ToolExchanger 类
- 添加 solon-ai-mcp McpClientProvider allowedTools, disallowedTools 工具控制机制
- 添加 solon-ai-harness bashAsyncEnabled 开关
- 添加 solon-ai-harness HarnessEngine.removeApi 方法
- 添加 solon-ai-harness HarnessProperties.mountPools 属性(替代 skillPools,后者标为弃用)
- 添加 solon-ai-harness 用 McpGatewaySkill 替换 ToolGatewaySkill(更有争对性)
- 优化 solon-ai-agent 初始化时(rest)添加快照持久化
- 优化 solon-ai-harness AgentFactory
edit权限添加read、write控制 - 优化 solon-ai-agent ContextCompressionInterceptor 压缩时机(从 onObservation 改为 onReasonStart),并增加系统词大小
- 优化 solon-ai-agent ContextCompressionInterceptor 增强上下文压缩拦截器中过期区 tool-use 原子序列的追溯保护,并完善文档注释
- 优化 solon-ai-agent ContextCompressionInterceptor 算法,增加 tools token
- 优化 solon-ai-dialect-openai OpenaiResponses 协议兼容性
- 调整 solon-ai-core 取消 ChatConfig.reasoningFieldName 配置(这个配置不合理)
- 调整 solon-ai-core 移除 SkillProvider 类
- 调整 solon-ai-core 移除 toolAdd(Object) 方法(指向不明,容易出错)
- 调整 solon-ai-core 移除 defaultToolAdd(Object) 方法(指向不明,容易出错)
- 调整 solon-ai-agent 移除 toolAdd(Object) 方法(指向不明,容易出错)
- 调整 solon-ai-agent 移除 defaultToolAdd(Object) 方法(指向不明,容易出错)
- 调整 solon-ai-mcp McpClientProperties 默认不启用心跳(之前默认为 30 心跳一次)
- 调整 solon-ai-mcp McpProviders 更名为 McpClientProviders
- 调整 solon-ai-agent ActionChunk:ActionChunk 更名为 ObservationChunk;ActionStartChunk 更名为 ActionChunk
- 调整 solon-ai-agent ReActInterceptor.onAction,onObservation: toolName,args,result 合并为 toolExchanger(并允许修改)
- 调整 solon-ai-agent ReActInterceptor.onReason 更名为 onReasonEnd(和 onReasonStart 凑成一对)
- 调整 solon-ai-agent ReActAgent.maxSteps 更名为 maxTurns(保持行业习惯)
- 调整 solon-ai-agent SummarizationInterceptor 更名为 ContextCompressionInterceptor(更符合语义)
- 调整 solon-ai-talent-cli PoolManager 实现细节,并添加 refresh(alias)
- 调整 solon-ai-talent-cli 技能标识由 aliasPath 统一改为 name,并优化技能池加载逻辑及代码格式
- 调整 solon-ai-talent-web WebfetchTool 更名为 WebfetchTalent; WebsearchTool 更名为 WebsearchTalent; CodeSearchTool 更名为 CodeSearchTalent
- 调整 solon-ai-talent-diff ApplyDiffTool 更名为 ApplyDiffTalent;ApplyPatchTool 更名为 ApplyPatchTalent
- 调整 solon-ai-harness HarnessEngine 打断与 HarnessProperties 关联(后者删除),避免耦合影响未来的调整
- 调整 solon-ai-harness HarnessEngine 移除 mainModel 字段(减兴缓存麻烦)
- 移除 solon-ai-skill-browser(包太大了,没必要)
- 移除 solon-ai-skill-restapi (由 solon-ai-talent-gateway 替代)
- 移除 solon-ai-skill-toolgateway (由 solon-ai-talent-gateway 替代)
- 移除 mcp-sdk(由 mcp-core 替代)
- 修复 solon-ai-mcp WebRxStreamableHttpTransport 没有 event 的消息会出错的问题(优化非规范兼容)
- 修复 solon-ai-mcp WebRxStreamableHttpTransport 没有 contentType 的消息会出错的问题(优化非规范兼容)
- 修复 solon-ai-agent ContextCompressionInterceptor 压缩后可能会引起 ToolMessage 无法对齐的问题
- mcp-sdk 升为 1.1.3
4、附件:弃用配置移除对应表(要认真核对)
移除
| 应用或插件 | 移除配置名 | 替代配置名 | |
|---|---|---|---|
| solon-server | server.session.state.domain |
server.session.cookieDomain |
|
server.session.state.domain.auto |
server.session.cookieDomainAuto |
||
| solon-web-staticfiles | solon.staticfiles.maxAge |
solon.staticfiles.cacheMaxAge |
|
| nacos2-solon-cloud-plugin | solon.cloud.nacos2.* |
solon.cloud.nacos.* |
5、附件:弃用插件移除对应表(要认真核对)
移除(以下插件已由项目官方仓库维护,或者直接使用即可)
| 移除插件 | 替代插件 | |
|---|---|---|
solon-ai-skill-* |
solon-ai-talent-* |
|
easy-trans-solon-plugin |
com.fhs-opensource:easy-trans-solon-plugin |
|
sms4j-solon-plugin |
org.dromara.sms4j:sms4j-solon-plugin |
|
beetlsql-solon-plugin |
com.ibeetl:sql-solon-plugin |
|
dbvisitor-solon-plugin |
net.hasor:dbvisitor-solon |
|
sqltoy-solon-plugin |
com.sagframe:sagacity-sqltoy-solon-plugin |
|
mybatis-sqlhelper-solon-plugin |
com.github.fangjinuo.sqlhelper:sqlhelper-mybatis |
|
mybatis-pagehelper-solon-plugin |
com.github.pagehelper:pagehelper |
|
mybatis-plus-solon-plugin |
com.baomidou:mybatis-plus-solon-plugin |
|
mybatis-plus-extension-solon-plugin |
同上 | |
mybatis-flex-solon-plugin |
com.mybatis-flex:mybatis-flex-solon-plugin |
|
fastmybatis-solon-plugin |
net.oschina.durcframework:fastmybatis-solon-plugin |
|
bean-searcher-solon-plugin |
cn.zhxu:bean-searcher-solon-plugin |
|
mybatis-tkmapper-solon-plugin |
tk.mybatis:mapper-solon-plugin |
|
sa-token-solon-plugin |
cn.dev33:sa-token-solon-plugin |
|
sa-token-snack4 |
同上 | |
sa-token-dao-redisson-jackson |
同上 | |
liteflow-solon-plugin |
com.yomahub:liteflow-solon-plugin |
|
forest-solon-plugin |
com.dtflys.forest:forest-solon-plugin |
6、附件:弃用注解或属性移除对应表(会有编译提醒)
移除注解或属性
| 应用或插件 | 弃用注解或属性 | 替代注解或属性 | |
|---|---|---|---|
| solon | org.noear.solon.annotation:: |
||
@Bean:priority() |
@Condition:priority() |
||
@Bean:injected() |
@Bean:autoInject() |
||
| solon-data | org.noear.solon.data.annotation:: |
||
@Tran |
@Transaction |
||
| nami | org.noear.nami.annotation:: |
||
@NamiBody:contentType() |
@NamiMapping:headers() |
7、附件:Solon 生态弃用类或方法移除对应表(会有编译提醒)
- solon 移除类或方法
| 应用或插件 | 移除类或方法名 | 替代类或方法名 | |
|---|---|---|---|
| solon | 包(org.noear.solon) |
||
Solon:start(NvMap) |
/ | ||
SolonApp:add*() |
SolonApp:router():add*() |
||
SolonApp:filter*() |
SolonApp:router():filter*() |
||
SolonApp:get*() |
SolonApp:router():get*() |
||
SolonApp:post*() |
SolonApp:router():post*() |
||
SolonApp:head*() |
SolonApp:router():head*() |
||
SolonApp:put*() |
SolonApp:router():put*() |
||
SolonApp:patch*() |
SolonApp:router():patch*() |
||
SolonApp:delete*() |
SolonApp:router():delete*() |
||
SolonApp:socketd*() |
SolonApp:router():socketd*() |
||
SolonApp:delete*() |
SolonApp:router():delete*() |
||
SolonApp:converterManager() |
SolonApp:converters() |
||
SolonApp:serializerManager() |
SolonApp:serializers() |
||
SolonApp:renderManager() |
SolonApp:renders() |
||
SolonApp:factoryManager() |
SolonApp:factories() |
||
SolonApp:renderManager() |
SolonApp:renders() |
||
SolonApp:chainManager() |
SolonApp:chains() |
||
SolonProps:plugs*() |
SolonProps:plugins*() |
||
SolonProps:plugsSort*() |
/ | ||
SolonProps:isAloneMode*() |
/ | ||
Utils:async*() |
RunUtil:async*() |
||
| solon | 包(org.noear.solon.util) |
||
| / | ScopeLocal:getOr |
||
| solon | 包(org.noear.solon.core) |
||
AppContext:methodGet |
AppContext:methodWrap |
||
AppContext:prestop |
AppContext:preStop |
||
BeanContainer:wrapPublish |
BeanContainer:beanPublish |
||
Constants:HEADER_CONTENT_TYPE_DEF |
MimeType.TEXT_PLAIN_UTF8_VALUE |
||
ChainManager:getInterceptorNodes |
ChainManager:getRouterInterceptorNodes |
||
ChainManager:addInterceptor |
ChainManager:addRouterInterceptor |
||
ChainManager:addInterceptorIfAbsent |
ChainManager:addRouterInterceptorIfAbsent |
||
ChainManager:removeInterceptor |
ChainManager:removeRouterInterceptor |
||
ChainManager:defExecuteHandler |
ChainManager:defEntityConverter |
||
ChainManager:addExecuteHandler |
ChainManager:addEntityConverter |
||
ChainManager:removeExecuteHandler |
ChainManager:removeEntityConverter |
||
ChainManager:getExecuteHandler |
/ | ||
ChainManager:getExecuteHandlerDefault |
/ | ||
FactoryManager:hasMvcFactory() |
/ | ||
FactoryManager:mvcFactory() |
/ | ||
FactoryManager:mvcFactory() |
/ | ||
Plugin:prestop() |
Plugin:preStop() |
||
new Props(Map) |
new Props().addAll(Map) |
||
new Props(Iterable<KeyValues>) |
new Props().addAll(Iterable<KeyValues>) |
||
Props:getBean(..) |
Props:toBean(..) |
||
VarHolder:getGenericType()->ParameterizedType |
VarHolder:getGenericType()->Type |
||
NvMap |
/ | ||
MvcFactory |
/ | ||
LifecycleIndex |
/ | ||
| solon | 包(org.noear.solon.core.handle) |
||
ActionArgumentResolver |
MethodArgumentResolver |
||
ActionExecuteHandler |
/ | ||
ContextHolder |
/ | ||
ContextUtil |
/ | ||
EntityConverterFromExecutor |
/ | ||
RenderFactory |
/ | ||
| solon | 包(org.noear.solon.core.route) |
||
Router:getAll(..) |
Router:findAll(...) |
||
Router:getBy(..) |
Router:findBy(...) |
||
RouterWrapper |
/ | ||
Routing:target() |
Routing:target(version2) |
||
RoutingTable:matchOne(..) |
RoutingTable:matchOne(..., version) |
||
RoutingTable:matchOneAndStatus(..) |
RoutingTable:matchOneAndStatus(..., version) |
||
RoutingTable:matchMore(..) |
RoutingTable:matchMore(..., version) |
||
| solon | 包(org.noear.solon.core.util) |
||
ClassUtil:findPublicMethods(..) |
/ | ||
ClassUtil:scanClasses(.., Predicate<Class<?>>) |
ClassUtil:scanClasses(.., Consumer<Class<?>>) |
||
ResourceUtil:scanClasses(..) |
ClassUtil:scanClasses(...) |
||
ScanUtil:setScanner(..) |
/ | ||
LogUtil |
/ | ||
PathAnalyzer |
PathMatcher | ||
| solon | 包(org.noear.solon.core.wrap) |
||
VarSpec:getType |
VarSpec:getTypeEggg().getType |
||
VarSpec:getGenericType |
VarSpec:getTypeEggg().getGenericType |
||
VarSpec:isGenericType |
VarSpec:getTypeEggg().isParameterizedType |
- solon-handle 移除类或方法
| 应用或插件 | 移除类或方法名 | 替代类或方法名 | |
|---|---|---|---|
| solon-handle | 包(org.noear.solon.core.mvc) |
||
ActionExecuteHandlerDefault |
EntityConverterDefault |
- solon-data 移除类或方法
| 应用或插件 | 移除类或方法名 | 替代类或方法名 | |
|---|---|---|---|
| solon-data | 包(org.noear.solon.data.tran) |
||
TranManager:currentSet |
TranManager:with |
||
TranManager:currentRemove |
TranManager:with |
||
TranManager:trySuspend |
TranManager:with |
||
TranManager:tryResume |
TranManager:with |
||
| solon-data | 包(org.noear.solon.data.tran.interceptor) |
||
TranInterceptor |
TransactionInterceptor |
- solon-data-dynamicds 移除类或方法
| 应用或插件 | 移除类或方法名 | 替代类或方法名 | |
|---|---|---|---|
| solon-data-dynamicds | 包(org.noear.solon.data.dynamicds) |
||
DynamicDataSource:setCurrentKey |
DynamicDsKey:use |
||
DynamicDsKey:remove |
DynamicDsKey:with |
||
DynamicDsKey:use |
DynamicDsKey:with |
||
DynamicDsKey:getCurrent |
DynamicDsKey:with |
||
DynamicDsKey:setCurrent |
DynamicDsKey:with |
||
DynamicDsUtils |
/ |
- solon-flow 移除类或方法
| 应用或插件 | 移除类或方法名 | 替代类或方法名 | |
|---|---|---|---|
| solon-flow | 包(org.noear.solon.flow) |
||
FlowContext:model() |
FlowContext:data() |
||
FlowContext:vars() |
FlowContext:data() |
||
Link:getCondition |
Link:getWhen |
||
LinkSpec:condition |
LinkSpec:when |
- solon-net-httputils 移除类或方法
| 应用或插件 | 移除类或方法名 | 替代类或方法名 | |
|---|---|---|---|
| solon-net-httputils | 包(org.noear.solon.net.http.textstream) |
||
ServerSentEvent:id() |
ServerSentEvent:getId() |
||
ServerSentEvent:event() |
ServerSentEvent:getEvent() |
||
ServerSentEvent:data() |
ServerSentEvent:getData() |
||
ServerSentEvent:retry() |
ServerSentEvent:getRetry() |
||
ServerSentEvent:comment() |
ServerSentEvent:getComment() |
||
TextStreamUtil:parseLineStream(.., subscriber) |
TextStreamUtil:parseLineStream(...)->Flux |
||
TextStreamUtil:parseSseStream(.., subscriber) |
TextStreamUtil:parseSseStream(...)->Flux |
||
| solon-net-httputils | 包(org.noear.solon.net.http) |
||
HttpExtensionManager |
HttpConfiguration |
||
HttpResponse:contentEncoding |
HttpResponse:contentCharset |
||
HttpUtils:execAsTextStream |
HttpUtils:execAsLineStream |
||
HttpUtils:execAsEventStream |
HttpUtils:execAsSseStream |
||
HttpUtils:bodyRaw |
HttpUtils:body |
||
HttpUtils:bodyTxt |
HttpUtils:bodyOfTxt |
||
HttpUtils:bodyJson |
HttpUtils:bodyOfJson |
- solon-statemachine 移除类或方法
| 应用或插件 | 移除类或方法名 | 替代类或方法名 | |
|---|---|---|---|
| solon-statemachine | 包(org.noear.solon.statemachine) |
||
Event |
/ | ||
State |
/ |
- solon-server 移除类或方法
| 应用或插件 | 移除类或方法名 | 替代类或方法名 | |
|---|---|---|---|
| solon-server | 包(org.noear.solon.server.ssl) |
||
SslContextFactory |
SslContextBuilder |
||
| solon-server | 包(org.noear.solon.server) |
||
ServerProps.request_useTempfile |
/ |
- solon-serialization 移除类或方法
| 应用或插件 | 移除类或方法名 | 替代类或方法名 | |
|---|---|---|---|
| solon-serialization | 包(org.noear.solon.serialization.prop) |
||
JsonPropsUtil |
/ | ||
| solon-serialization | 包(org.noear.solon.serialization) |
||
BytesSerializerRender |
/ | ||
ContextSerializer |
/ | ||
JsonRenderFactory |
/ | ||
BytesSerializerRender |
/ | ||
StringSerializerRender |
/ | ||
| solon-serialization-abc | 包(org.noear.solon.serialization.abc) |
||
AbcActionExecutor |
/ | ||
AbcRender |
/ | ||
| solon-serialization-fastjson | 包(org.noear.solon.serialization.fastjson) |
||
FastjsonActionExecutor |
/ | ||
FastjsonRenderFactory |
/ | ||
FastjsonRenderFactoryBase |
/ | ||
FastjsonRenderTypedFactory |
/ | ||
| solon-serialization-fastjson2 | 包(org.noear.solon.serialization.fastjson2) |
||
Fastjson2ActionExecutor |
/ | ||
Fastjson2RenderFactory |
/ | ||
Fastjson2RenderFactoryBase |
/ | ||
Fastjson2RenderTypedFactory |
/ | ||
| solon-serialization-fury | 包(org.noear.solon.serialization.fury) |
||
FuryActionExecutor |
/ | ||
FuryRender |
/ | ||
| solon-serialization-gson | 包(org.noear.solon.serialization.gson) |
||
GsonActionExecutor |
/ | ||
GsonRenderFactory |
/ | ||
GsonRenderFactoryBase |
/ | ||
GsonRenderTypedFactory |
/ | ||
| solon-serialization-hessian | 包(org.noear.solon.serialization.hessian) |
||
HessianActionExecutor |
/ | ||
HessianRender |
/ | ||
| solon-serialization-jackson | 包(org.noear.solon.serialization.jackson) |
||
JacksonActionExecutor |
/ | ||
JacksonRenderFactory |
/ | ||
JacksonRenderFactoryBase |
/ | ||
JacksonRenderTypedFactory |
/ | ||
| solon-serialization-jackson-xml | 包(org.noear.solon.serialization.jackson.xml) |
||
JacksonXmlActionExecutor |
/ | ||
JacksonXmlRenderFactory |
/ | ||
JacksonXmlRenderFactoryBase |
/ | ||
JacksonXmlRenderTypedFactory |
/ | ||
| solon-serialization-kryo | 包(org.noear.solon.serialization.kryo) |
||
KryoActionExecutor |
/ | ||
KryoRender |
/ | ||
| solon-serialization-properties | 包(org.noear.solon.serialization.properties) |
||
PropertiesActionExecutor |
/ | ||
PropertiesRenderFactory |
/ | ||
| solon-serialization-protostuff | 包(org.noear.solon.serialization.protostuff) |
||
ProtostuffActionExecutor |
/ | ||
ProtostuffRender |
/ | ||
| solon-serialization-snack3 | 包(org.noear.solon.serialization.snack3) |
||
SnackActionExecutor |
/ | ||
SnackRenderFactory |
/ | ||
SnackRenderFactoryBase |
/ | ||
SnackRenderTypedFactory |
/ |
- solon-web 移除类或方法
| 应用或插件 | 移除类或方法名 | 替代类或方法名 | |
|---|---|---|---|
| solon-web-sse | 包(org.noear.solon.web.sse) |
||
SseEvent:build |
SseEvent:toString |
- solon-integration 移除类或方法
| 应用或插件 | 移除类或方法名 | 替代类或方法名 | |
|---|---|---|---|
| dubbo3-solon-plugin | 包(org.noear.solon.extend.dubbo3) |
||
EnableDubbo |
org.apache.dubbo.solon.annotation.EnableDubbo |
||
| dubbo-solon-plugin | 包(org.noear.solon.extend.dubbo) |
||
EnableDubbo |
org.apache.dubbo.solon.annotation.EnableDubbo |
||
| redisson-solon-plugin | 包(org.redisson.solon) |
||
RedissonSupplier |
RedissonClientOriginalSupplier |
- nami 移除类或方法
| 应用或插件 | 移除类或方法名 | 替代类或方法名 | |
|---|---|---|---|
| nami | 包(org.noear.nami) |
||
EncoderTyped |
/ | ||
NamiAttachment |
NamiAttach |
||
EncoderTyped |
/ | ||
| nami | 包(org.noear.nami.common) |
||
Constants |
ContentTypes |
||
| nami-coder-fastjson | 包(org.noear.nami.coder.fastjson) |
||
FastjsonTypeEncoder |
/ | ||
| nami-coder-fastjson2 | 包(org.noear.nami.coder.fastjson2) |
||
Fastjson2TypeEncoder |
/ | ||
| nami-coder-jackson | 包(org.noear.nami.coder.jackson) |
||
JacksonTypeEncoder |
/ | ||
| nami-coder-snack3 | 包(org.noear.nami.coder.snack3) |
||
SnackTypeEncoder |
/ |
8、附件:Solon AI 生态弃用类或方法移除对应表(会有编译提醒)
- solon-ai-core 移除类或方法
| 应用或插件 | 移除类或方法名 | 替代类或方法名 | |
|---|---|---|---|
| solon-ai-core | 包(org.noear.solon.ai.core) |
||
ChatMessage.template() |
ChatMessage.ofUserTmpl() |
||
ChatMessage.augment() |
ChatMessage.ofUserAugment() |
||
UserMessageTemplate.param() |
UserMessageTemplate.paramAdd() |
||
InMemoryChatSession:new(..,systemMessages) |
/ | ||
InMemoryChatSession.Builder.systemMessages() |
/ | ||
ToolCallResultConverter.matched() |
/ | ||
ChatConfig.defaultToolsContext |
ChatConfig.defaultToolContext (配置要注意) |
||
ChatConfig.addDefaultTools() |
ChatConfig.addDefaultTool() |
||
ChatConfig.isDefaultAutoToolCall() |
ChatConfig.getModelOptions().isAutoToolCall() |
||
ChatConfig.getDefaultInterceptors() |
ChatConfig.getModelOptions().interceptors() |
||
ChatConfig.getDefaultToolContext() |
ChatConfig.getModelOptions().toolContext() |
||
ChatConfig.getDefaultSkills() |
ChatConfig.getModelOptions().skills() |
||
ChatConfig.getDefaultOptions() |
ChatConfig.getModelOptions().options() |
||
ChatConfig.getDefaultTool() |
ChatConfig.getModelOptions().tool() |
||
ChatConfig.getDefaultTools() |
ChatConfig.getModelOptions().tools() |
||
ChatConfig.getDefaultToolsContext() |
ChatConfig.getModelOptions().toolContext() |
||
ChatModel.prompt(session) |
/ | ||
ChatModel.defaultToolAdd(toolObj) |
/ | ||
ChatOptions.optionAdd() |
ChatOptions.optionSet() |
||
ChatOptions.toolsAdd() |
ChatOptions.toolAdd() |
||
ChatOptions.toolsContext() |
ChatOptions.toolContext() |
||
ChatOptions.toolsAdd() |
ChatOptions.toolAdd() |
||
ChatSession.toNdjson() |
ChatMessage.toNdjson(session.getMessages()) |
||
ChatSession.loadNdjson() |
ChatMessage.fromNdjson(ndjson, session::addMessage) |
||
ChatSessionDefault |
/ | ||
EmbeddingOptions.optionAdd() |
EmbeddingOptions.optionSet() |
||
GenerateOptions.optionAdd() |
GenerateOptions.optionSet() |
||
RerankingOptions.optionAdd() |
RerankingOptions.optionSet() |
||
RepositoryStorable.asyncInsert() |
RepositoryStorable.asyncSave() |
||
RepositoryStorable.insert() |
RepositoryStorable.save() |
||
RepositoryStorable.delete() |
RepositoryStorable.deleteById() |
||
RepositoryStorable.exists() |
RepositoryStorable.existsById() |
- solon-ai-agent 移除类或方法
| 应用或插件 | 移除类或方法名 | 替代类或方法名 | |
|---|---|---|---|
| solon-ai-agent | 包(org.noear.solon.ai.agent) |
||
ReActAgent.description() |
ReActAgent.role() |
||
ReActAgent.maxStepsExtensible() |
ReActAgent.autoRethink() |
||
ReActOptionsAmend.maxStepsExtensible() |
ReActOptionsAmend.autoRethink() |
||
ReActTrace.pending() |
AgentSession.pending() |
||
ReActTrace.isPending() |
AgentSession.isPending() |
||
ReActTrace.getPendingReason() |
AgentSession.getPendingReason() |
||
SimpleAgent.description() |
SimpleAgent.role() |
||
TeamAgent.description() |
TeamAgent.role() |
||
TeamTrace.pending() |
AgentSession.pending() |
||
TeamTrace.isPending() |
AgentSession.isPending() |
||
TeamTrace.getPendingReason() |
AgentSession.getPendingReason() |
||
SummarizationInterceptor |
ContextCompressionInterceptor |
- solon-ai-harness 移除类或方法
| 应用或插件 | 移除类或方法名 | 替代类或方法名 | |
|---|---|---|---|
| solon-ai-harness | 包(org.noear.solon.ai.harness) |
||
HarnessFlags |
/ | ||
HarnessProperties |
/ | ||
HarnessEngine |
重构 |
- solon-ai-mcp 移除类或方法
| 应用或插件 | 移除类或方法名 | 替代类或方法名 | |
|---|---|---|---|
| solon-ai-mcp | 包(org.noear.solon.ai.mcp) |
||
McpClientProperties.apiKey("xxx") |
.header("Authorization", "Bearer xxx") |
||
McpClientProperties.apiUrl() |
McpClientProperties.url() |
||
McpClientProvider.Builder.apiUrl() |
McpClientProvider.Builder.url() |
||
McpClientProvider.Builder.apiKey() |
McpClientProvider.Builder.header("Authorization", "Bearer xxx") |
||
McpClientProvider.Builder.headerSet() |
McpClientProvider.Builder.header() |
||
McpClientProvider.Builder.serverParameters() |
McpClientProvider.Builder.command() |
||
McpServerParameters.Builder |
/ |
- solon-ai-repo 移除类或方法
| 应用或插件 | 移除类或方法名 | 替代类或方法名 | |
|---|---|---|---|
| solon-ai-repo-dashvector | 包(org.noear.solon.ai.rag.repository) |
||
DashVectorRepository.metadataIndexFields() |
DashVectorRepository.metadataFields() |
||
| solon-ai-repo-redis | 包(org.noear.solon.ai.rag.repository) |
||
RedisRepository.metadataIndexFields() |
RedisRepository.metadataFields() |