### 可测试目标

* Trae
* Dify
* Cherry Studio


### 待定


*  mcp channel 概念改为 transport （并保持兼容）???


### 3.11.0

* 添加 solon-ai-agent ReActInterceptor.onReasonStart 事件方法
* 添加 solon-ai-harness bashAsyncEnabled 开关
* 优化 solon-ai-harness AgentFactory `edit` 权限添加 `read`、`write` 控制
* 优化 solon-ai-agent SummarizationInterceptor 压缩时机（从 onObservation 改为 onReasonStart），并增加系统词大小
* 调整 solon skill “概念”初步改为 solon toolkit（避免与 agent skill 的冲突）

### 3.10.7

* 添加 solon-ai-core ChatResponseDefault attrs 附件属性机制（方便方言解析处理），及 openai、anthropic、openai-response 方言调整
* 优化 solon-ai-dialect-anthropic message_stop 处理（增加 isEmpty 检测）
* 修复 solon-ai-skill-memory MemoryMdData 因key格式问题未完全加载的问题
* 修复 solon-ai-agent ReasonTask ‘您上一次的回答是空的’ 可能造成死循环的问题

### 3.10.6

* 调整 ChatDialect.buildRequestJson 返回类型（String 改为 ONode，方便日志定制）
* 修复 solon-ai-skill-web WebfetchTool 超时转换错位问题

### 3.10.5

* 添加 solon-ai-agent AgentTrace.getAgentName, getBeginTimeMs 方法
* 添加 solon-ai-agent 使用 autoRethink 替代 maxStepsAutoExtensible（后者标为弃用）
* 添加 solon-ai-harness command 接口管理
* 添加 solon-ai-harness HarnessEngine.getAgentOrMain 方法
* 添加 solon-ai-core CmdUtil 辅助工具（主要解析参数）
* 添加 solon-ai-core ChatMessage.getCreatedAt 方法
* 添加 solon-ai-core ChatSession.removeLatestMessage 方法（对话回退支持）
* 添加 solon-ai-core Repository.promptAugment 快捷方法
* 添加 solon-ai-core AiConfig.enabled 配置属性
* 添加 solon-ai-skill-cli TerminalSkill.edit old_str 预检处理（llm 可能会传空）
* 优化 solon-ai-agent ReasonTask Missing traceKey 处理
* 优化 solon-ai-core AiConfig.proxy 配置兼容（减少反序列化反射）
* 优化 solon-ai-core ChatModel llm- 日志打印，添加 agentName
* 优化 solon-ai-core EmbeddingModel、RerankingModel、GenerateModel llm- 日志打印，添加 modelName
* 优化 solon-ai-dialect apiUrl 自动补全的#号处理
* 优化 solon-ai-dialect OpenaiChatDialect 添加自动补地址处理
* 优化 solon-ai-harness CodeSkill 拆解语言支持
* 优化 solon-ai-harness taskDo 多层子代理嵌套时的容错处理
* 优化 solon-ai-skill-cli ExpertSkill 引导词
* 优化 solon-ai-skill-cli read 引导词（优先一次读完）
* 优化 solon-ai-skill-cli 关于 py 和 nodejs 环境识别
* 优化 solon-ai-skill-memory 添加 markdown 轻量实现方案（默认不启用会话隔离）
* 调整 solon-ai-core ChatOptions.name 更名为 agentName
* 调整 solon-ai-harness TaskSkill 只输出 ThoughtChunk（不输出 ReasonChunk）
* 调整 solon-ai-agent 移除 ReActOptions.maxStepsLimit 属性 (没什么必要)
* acp-sdk 升为 0.11.0
* roguemap 升为 1.1.5

### 3.10.4

* 添加 solon-ai-agent 动态切换 llm 支持（支持不同会话，在各自请求时切换）
* 添加 solon-ai-harness 重试次数配置支持
* 添加 solon-ai-harness lsp 功能
* 添加 solon-ai-harness HarnessProperties.disallowedTools 配置支持（全局禁用工具配置）
* 添加 solon-ai-harness HarnessProperties.agentPools（子代理池） 配置支持
* 添加 solon-ai-harness HarnessProperties.systemPrompt 配置支持（替代之前的 AGENT.md 预设处理，由外部定制）
* 优化 solon-ai-core embedding 配置默认选项的能力（之前只能在请求时添加）
* 优化 solon-ai-core ChatRequestDesc.internalStream 添加流接收超时处理（避免因 llm 服务原因一直卡着）
* 优化 solon-ai-dialect-anthropic anthropic 方言的异常兼容处理
* 优化 solon-ai-dialect-openai openai-response 方言的异常兼容处理
* 优化 solon-ai-agent 中断传递处理
* 优化 solon-ai-agent ActionTask onAction 日志
* 优化 solon-ai-agent retrying 中断处理（这前的 task 内部的 stream 可能会中断传递）
* 优化 solon-ai-agent AgentSession.updateSnapshot 添加锁机制
* 优化 solon-ai-skill-lsp 重构 LspSkill 实现（之前名为 LspTool）
* 优化 solon-ai-skill-cli ExpertSkill 引导词
* 优化 solon-ai-skill-cli TerminalSkill 安全引导词
* 优化 solon-ai-skill-sys 从 cli 同步 ProcessExecutor
* 优化 solon-ai-harness HarnessEngine 扩展机制（支持为子代理扩展，通过名字识别）
* 调整 solon-ai-harness ReActAgentExtension 更名为 ReActAgentExtension
* 调整 solon-ai-harness 切换 llm 的机制，并取消 switchMainModel 方法（有自由的机制了）
* 调整 solon-ai-harness TerminalSkillProxy 转到 solon-ai-skill-cli
* 修复 solon-ai-skill-toolgateway ToolGatewaySkill call_tool 不能传递 toolContext 的问题
* 修复 solon-ai-core AbstractChatDialect reasoning_field_name 可能传递中断的问题

### 3.10.2

* 新增 solon-ai-repo-dashvector-official 插件
* 添加 solon-ai-core ChatModel.getModel 方法
* 添加 solon-ai-core ChatModel.getProvider 方法
* 添加 solon-ai-core ChatOptions.name 方便 agent 传递 name（打印日志）
* 添加 solon-ai-core 基于语义的分割器 SemanticSplitter
* 添加 solon-ai-core AiConfig.name, description 配置属性（用于管理显示）
* 添加 solon-ai-agent AgentRequest.callAsync 异步调用方法
* 添加 solon-ai-agent AgentResponse.getTrace 方法
* 添加 solon-ai-agent SummarizationInterceptor.copyWith 方法（方便复制实例并调整限制）
* 添加 solon-ai-harness HarnessProperties.models 配置属性（替代 chatModel）
* 添加 solon-ai-harness 子代理切换模型的能力
* 添加 solon-ai-harness HarnessProperties.removeModel 方法
* 优化 solon-ai-core RepositoryTool 增加重排支持
* 优化 solon-ai-core OllamaEmbeddingDialect.matched 添加 endsWith 匹配
* 优化 solon-ai-core MethodToolProvider 允许是否使用自身的 ToolProvider 内容（同时优化 AbsSkill，AbsToolProvider）
* 优化 solon-ai-agent ReActAgent 流块输出
* 优化 solon-ai-cli TodoSkill 提示词
* 调整 solon-ai-cli 取消 TerminalSkill.undo 工具（几乎用不到，由 git 控制）
* 调整 solon-ai-harness 取消 SESSION_DEFAULT（由应用侧处理）
* 调整 solon-ai-harness 去除 getVersion 方法（由应用侧定义）
* 调整 solon-ai-harness CLAUDE.md 更名为 CODE.md（内部自动生成）
* 修复 solon-ai-core MethodExecuteHandler 当 llm.args 嵌套非规范 json 时出错的问题（比如，非规范控制符）
* 修复 solon-ai-core ChatResponseDefault.isEmpty 可能识别失败的问题（不同 llm 情况较多）
* 调整 solon-ai-harness HarnessProperties.restApis 更名为 apiServers；取消 chatModel（由 models 替代）
* 修复 solon-ai-agent FileAgentSession.getSessionId 可能为空的问题
* 修复 solon-ai-skill-web CodeSearchTool 失效的问题（mcp.exa.ai 变了地址）
* 修复 solon-ai-harness TaskOp jsonSchema 问题（可能造成 multitask 调度失败）

### 3.10.1

* 新增 acp-sdk 模块（从 solon-ai-acp 分离出来，方便独立升级）
* 新增 solon-ai-harness 智能体马具框架
* 添加 solon-ai-core ChatModel.of().systemPrompt 方法
* 添加 solon-ai-core 工具执行时的参数注解支持
* 添加 solon-ai-core RepositoryTool 工具，为实现 Agent RAG 提供支持
* 添加 solon-ai-core AbsToolProvider 类（取代之前添加 toolObj 的方式）
* 优化 solon-ai-skill-cli ExpertSkill 原来的二档展示升为三级
* 优化 solon-ai-skill-restapi 原来的三档展示升为四级，并添加分组（可增强注意力）
* 优化 solon-ai-skill-toolgateway 原来的三档展示升为四级，并添加分组（可增强注意力）
* 优化 solon-ai-agent ReActRequest, TeamRequest 支持叠加 options
* 修复 solon-ai-skill-cli ExpertSkill grep 可能失效的问题

### 3.10.0

* 添加 solon-ai-agent ThoughtChunk 流块
* 添加 solon-ai-agent Metrics.addMetrics 锁安全
* 添加 solon-ai-agent AgentChunk.getMeta 流块元数据（方便在传递过程中，做标识）
* 优化 solon-ai-agent ActionTask 执行完后就更新快照（避免可能的长时间没有更新快照）
* 修复 solon-ai-core ChatModel.outputSchema 配置无效的问题
* 修复 solon-ai-core 工具调用时‘可能’出现消息内容重复的问题（重要，v3.9.2 时出现）

### 3.9.7

* 添加 solon-ai-agent ThoughtChunk 流块
* 添加 solon-ai-agent Metrics.addMetrics 锁安全
* 添加 solon-ai-agent AgentChunk.getMeta 流块元数据（方便在传递过程中，做标识）
* 优化 solon-ai-agent ActionTask 执行完后就更新快照（避免可能的长时间没有更新快照）
* 修复 solon-ai-core ChatModel.outputSchema 配置无效的问题
* 修复 solon-ai-core 工具调用时‘可能’出现消息内容重复的问题（重要，v3.9.2 时出现）

### 3.9.6

* 添加 solon-ai-core ChatModel.outputSchema 配置支持（且与 Agent 统一基于方言实现，各方言可定制）
* 添加 solon-ai-core ChatModel.contextLength 配置支持（为 Agent 方便自动计算限制数）
* 添加 solon-ai-core AssistantMessage.getJsonContent 方法
* 添加 solon-ai-core MarkdownUtil 工具类
* 添加 solon-ai-dialect-gemini tool-call 的思考签名支持
* 添加 solon-ai-agent ReActChunk.getMetrics 方法
* 优化 solon-ai-core AbstractChatDialect 解析 tool 参数的兼容性
* 优化 solon-ai-dialect-dashscope 方言 支持流式传输与百炼联网搜索
* 优化 solon-ai-dialect-anthropic tool.args 不规范时的兼容性（比如 json 不完整）
* 优化 solon-ai-dialect-gemini 特定 provider 结束时返回 content 为空的消息才设置finishReason 导致结束标志被提前过滤
* 优化 solon-ai-agent ReActAgent onThought 事件，优先使用 getReasoning 获取 <think> 思考内容
* 优化 solon-ai-agent ReActAgent SummarizationInterceptor 添加 maxContextLength 控制参数（很重要）
* 优化 solon-ai-agent ActionChunk 分为 ActionEndChunk 和 ActionStartChunk（并保留 ActionChunk 标为弃用）
* 优化 solon-ai-agent 流式处理 `catch (Exception`，换成 `catch (Throwable`
* 优化 solon-ai-skill-restapi 每个 api 可以添加独立的验证机制
* 优化 solon-ai-skill-cli 避免 bash 把当前进程给删掉了
* 调整 solon-ai-agent 临时挂起操作，由 XxxTrace 转到 AgentSession（更统一）
* 调整 solon-ai-core Skill 的激活逻辑，如果 getInstruction 为空，则不进入 SystemPrompt（之前还要 description 为空）
* 修复 solon-ai-agent ReActAgent 思考事件触发逻辑，确保在所有情况下都被调用

### 3.9.5

* 新增 mcp-sdk 插件（从 solon-ai-mcp 独立出来）
* 新增 solon-ai-skill-toolgateway 插件
* 新增 solon-ai-search-tavily 插件
* 新增 solon-ai-ui-aisdk 插件
* 添加 solon-ai-core __sessionId 自动作为工具上下文和提示词属性（用于传递会话id）
* 添加 solon-ai-core SkillProvider 接口
* 添加 solon-ai-core AbsTool 类
* 添加 solon-ai-core AiUsage thinkTokens 字段
* 添加 solon-ai-core ChatConfig.getReasoningFieldName 自动处理，兼容 deepseek 新的变化
* 添加 solon-ai-core ChatModel options 配置自动转强类型（llm 不能接收str）
* 添加 solon-ai-agent ReActInterceptor.onObservation durationMs 参数（时长毫秒数）
* 添加 solon-ai-agent ReActChunk isNormal(用于识别是否为正常结束)
* 添加 solon-ai-skill-memory MemSkill 支持会话隔离与共享
* 优化 solon-ai-mcp 独立出 mcp-sdk 包
* 优化 solon-ai-dialect-claude 方言适配（及 api.kimi.com/coding 兼容性）
* 优化 solon-ai-dialect-openai 与 api.minimax.io 的兼容性
* 优化 solon-ai-agent SummarizationInterceptor
* 优化 solon-ai-agent ReActSystemPrompt 描述
* 优化 solon-ai-skill-memory MemSkill 取消 userId 参数，自动从上下文中取
* 优化 solon-ai-skill-cli
* 优化 Solon AI Skill 指令层级控制
* 调整 solon-ai-dialect-claude 更名为 solon-ai-dialect-anthropic（更合适）

### 3.9.4

* 新增 solon-ai-skill-lucene 插件
* 新增 solon-ai-skill-diff 插件
* 新增 solon-ai-skill-memory 插件
* 添加 solon-ai-core toolContext 自动转为 Prompt.attrs 的机制（方便 skill 传递）
* 添加 solon-ai-agent ReActChunk, TeamChunk getTrace 方法
* 添加 solon-ai-agent __sessionId 作为智能体的必要工具上下文（方便工具的会话数据隔离）
* 优化 solon-ai-core chatModel 方言的（不规范的）兼容性处理
* 优化 solon-ai-core buildToolCallBuilder 兼容（有些 llm stream ，会部分全量多次提供）
* 优化 solon-ai-agent SummarizationInterceptor 增加策略机制并内置4个策略
* 修复 solon-ai-core ChatModel.stream 过程异常时会破坏流响应的问题
* 修复 solon-ai-agent ReasonTask.callWithRetry 网络异常时会中断工作流的问题
* 修复 solon-ai-agent ReActAgent 流式请求时，可能无法记忆结果内容的问题

### 3.9.3

* 重构 solon-ai-agent Plan-ReAct 模式（相对之前，新设计智能、态动、按需）
* 优化 solon-ai-skill-cli CliSkill

### 3.9.2


* 新增 solon-ai-acp 插件（可以对接支持 acp 协议的 IDE）
* 添加 solon-ai-core ChatSessionProvider
* 添加 solon-ai-core FunctionTool:call 方法
* 添加 solon-ai-mcp FunctionPrompt:get 方法
* 添加 solon-ai-mcp FunctionResource:read 方法
* 添加 solon-ai-core ToolSchemaUtil.resultConvert 方法（将 tool 转换从内部，转到外部）
* 添加 solon-ai-agent ReActAgent maxStepsExtensible 配置，允许通过 HITL 扩容步数
* 优化 solon-ai-core ChatModel 与 DeepSeek-R1 兼容性
* 优化 solon-ai-agent ReActAgent 与 DeepSeek-R1 兼容性（手造的 AssistantMessage 需要自动补字段）
* 优化 solon-ai-agent FunctionTool 增加 tool 多模态与单模态兼容处理
* 优化 solon-ai-skill-cli CliSkill 进一步与 Claude Code 规范对齐（接近 100%）
* 优化 solon-ai-skill-cli CodeCLI exit 改为进程退出
* 优化 solon-ai-mcp 无心跳时，支持自动复位尝试
* 调整 solon-ai-mcp McpClientProvider 接口，优化多模态适配
* 调整 solon-ai-core 多模态体系（AiMedia 更名为 ContentBlock，）
* 调整 solon-ai-core UserMessage medias 更名为 blocks，hasMedias 更名为 isMultiModal
* 调整 solon-ai-core ToolMessage 添加 blocks，isMultiModal（工具支持多模态）
* 调整 solon-ai-core ChatDialect 接口，对多模态和 R1 更友好
* 移除 solon-ai-core 移除 ImageModel 体系，由 GenerateModel 体系接替（v3.5 时增加)
* 修复 solon-ai-agent ReActAgent 重试时会消息倍增的问题 
* 修复 solon-ai-agent ReActAgent，TeamAgent 在恢复执行时，会重置 Options 的问题


变更说明：

| 旧名（强调多媒体）                                  | 新名（强调多模态内容块）                                          |
|--------------------------------------------|-------------------------------------------------------|
| AiMedia                                    | ContentBlock                                          |
| Text                                       | TextBlock                                             |
| Image                                      | ImageBlock                                            |
| Audio                                      | AudioBlock                                            |
| Video                                      | VideoBlock                                            |
|                                            |                                                       |
| UserMessage.getMedias()                    | getBlocks()                                           |
| UserMessage.hasMedias()                    | isMultiModal()                                        |
| /                                          | ToolMessage.getBlocks()                               |
| /                                          | ToolMessage.isMultiModal()                            |
|                                            |                                                       |
| McpClientProvider.callTool()               | callToolRequest()                                     |
| McpClientProvider.callToolAsText()         | callTool()                                            |
| McpClientProvider.callToolAsImage()        | /                                                     |
| McpClientProvider.callToolAsAudio()        | /                                                     |
| McpClientProvider.readResource()           | readResourceRequest()                                 |
| McpClientProvider.readResourceAsText()     | readResource()                                        |
| McpClientProvider.readResourceAsBlob()     | /                                                     |
| McpClientProvider.getPrompt()              | getPromptRequest()                                    |
| McpClientProvider.getPromptAsMessage()     | getPrompt()                                           |
| `org.noear.solon.ai.mcp.server.prompt.*`   | `org.noear.solon.ai.chat.prompt.*` （prompt 是公用元素）     | 
| `org.noear.solon.ai.mcp.server.resource.*` | `org.noear.solon.ai.chat.resource.*` （resource 是公用元素） | 



### v3.9.1


* 新增 solon-ai-dialect-claude 插件
* 新增 solon-ai-dialect-openai OpenaiResponses 方言适配
* 新增 solon-ai-repo-weaviate 插件
* 新增 solon-ai-skill-cli 插件（含 CliSkill 和 SolonCodeCLI）
* 新增 solon-ai-skill-data 插件（含 RedisSkill）
* 新增 solon-ai-skill-file 插件（含 FileReadWriteSkill，ZipSkill）
* 新增 solon-ai-skill-generation 插件（含 ImageGenerationSkill， VideoGenerationSkill）
* 新增 solon-ai-skill-mail 插件（含 MailSkill）
* 新增 solon-ai-skill-pdf 插件（含 PdfSkill）
* 新增 solon-ai-skill-restapi 插件（含 RestApiSkill），内置 OpenApi3 和 swagger2 兼容适配（可扩展定制）
* 新增 solon-ai-skill-social 插件（含 DingTalkSkill，FeishuSkill，WeComSkill）
* 新增 solon-ai-skill-sys 插件（含 NodejsSkill，PythonSkill， ShellSkill，SystemClockSkill）
* 新增 solon-ai-skill-text2sql 插件（含 Text2SqlSkill）
* 新增 solon-ai-skill-web 插件（含 WebCrawlerSkill，WebSearchSkill）
* 添加 solon-ai-core ChatModel role 和 instruction 支持（提供类似 SimpleAgent 效果）
* 添加 solon-ai-core ChatModel.stream 背压流控支持
* 添加 solon-ai-core FileChatSession，RedisChatSession 聊天会话实现
* 添加 solon-ai-core ChatInterceptor.onPrepare 事件（勾子）
* 添加 solon-ai-core Prompt.removeLastMessage, removeLastAssistantMessage 方法
* 添加 solon-ai-agent FileAgentSession 智能体会话实现
* 添加 solon-ai-agent ReActTrace, TeamTrace pending 机制（方便按需拦截挂机）
* 添加 solon-ai-agent feedbackMode 模式（默认为 false）
* 添加 solon-ai-agent ReActInterceptor.onObservation toolName 参数
* 添加 solon-ai-agent HITL 专属接口，进一步优化人工机制（同意，拒绝，跳过）
* 添加 solon-ai-agent stream 流式输出机制
* 优化 solon-ai-agent ReActAgent 添加主动挂机的能力（处理无法完成的任务时，可避免幻觉轮询）
* 优化 solon-ai-agent description + systemPrompt 标为弃用，改由 role + instruction 替代（简化了）
* 优化 solon-ai-agent 内置的 Team 协议（如 ReActProtocol，SwarmProtocol 等）
* 优化 solon-ai-agent 内置的 ToolRetryInterceptor，ToolSanitizerInterceptor 等
* 优化 solon-ai-agent AgentSession 接口 updateSnapshot 取消入参
* 优化 solon-ai-agent ActionTask 取消正则匹配 json 方式，改用 json 流式读取方式
* 调整 solon-ai-core InMemoryChatSession systemMessages 标为弃用（不建议放到会话里，不方便做结构化的管理）
* 调整 solon-ai-agent 取消 title（减少迷惑），systemMessage 标为弃用。改用 role 和 instruction
* 调整 solon-ai-core ChatModel.stream 返回由 Publisher 改为 Flux
* 调整 solon-ai-agent enablePlanning 更名为 planningMode （前者标为弃用）
* 修复 solon-ai-agent ReActAgent 新话题开始时， ReActTrace 没有重置干净的问题
* 修复 solon-ai-agent SimpleAgent 没有接入协作协议 prepareAgentPrompt 勾子
* qdrant 升为 1.16.2

### v3.9.0

* 添加 solon-ai-core Prompt 更多方法（getLastAssistantMessage, size 等）
* 添加 solon-ai-core ChatSession 更多方法（getLatestMessages 等）
* 添加 solon-ai-agent Agent.call(session) 方法（作为恢复执行的入口）
* 添加 solon-ai-agent Agent.prompt 方法
* 添加 solon-ai-agent AgentResponse 接口，统一响应界面
* 添加 solon-ai-agent Trace.workingMemory 概念
* 优化 solon-ai-core Skill 接口设计，getTools 增加 prompt 参数
* 优化 solon-ai-agent AgentSession 接口，改为扩展自 ChatSession （只需入口 agent 有历史消息）
* 优化 solon-ai-agent 部分接口设计

### v3.8.4

* 新增 `solon-ai-core` Solon AI Skills（技能）体系
* 新增 `solon-ai-search-bocha` 插件
* 添加 `solon-ai-core` defaultToolsContextPut 方法
* 添加 `solon-ai-core` Prompt attrPut, attr 属性相关方法（可以在拦截时控制权限）
* 添加 `solon-ai-core` FunctionTool meta 元数据相关方法（可对描述语进行染色）
* 添加 `solon-ai-mcp` FunctionPrompt meta 元数据相关方法（可对描述语进行染色）
* 添加 `solon-ai-mcp` FunctionResource meta 元数据相关方法（可对描述语进行染色）
* 添加 `solon-ai-agent` NoneProtocol（无协议模式）
* 添加 `solon-ai-agent` ReActAgent Plan 支持（默认为关闭）。
* 添加 `solon-ai-agent`  SimpleInterceptor 替代 ChatInterceptor，方便后续扩展
* 优化 `solon-ai-core` Gemini 方言适配
* 优化 `solon-ai-core` Prompt 接口，方法更丰富
* 优化 `solon-ai-agent` A2AProtocol 协议代码
* 优化 `solon-ai-agent` SwarmProtocol 协议代码
* 优化 `solon-ai-agent` HierarchicalProtocol 协议代码
* 优化 `solon-ai-agent` SequentialProtocol 协议代码，添加专属任务（可节省 token）
* 修复 `solon-ai-core` ToolSchemaUtil `Param` 注解别名没有生效的问题
* 修复 `solon-ai-agent` ReActAgent 没有拦截器时 ReActAgent 不能传递 toolsContext 的问题
* 调整 `solon-ai-agent` Agent 相关接口保持与 ChatModel 一致性

### v3.8.3

* 修复 `solon-ai-agent` ActionTask 与 mcp 的兼容性（取消 trace 作为工具上下文注入，它不能被mcp 序列化）

### v3.8.2

* 修复 `solon-ai-agent` SimpleAgent 没有反回干净内容的问题（带了 think）
* 添加 `solon-ai-agent` SimpleRequest
* 添加 `solon-ai-agent` SimpleAgent.prompt 方法（为三个智能体提供相同体验）


### v3.8.1

* 新增 `solon-ai-agent` 插件
* 新增 `solon-ai-dialect-gemini` 插件
* 添加 `solon-ai-core` autoToolCall 聊天模型选项（默认为 true）
* 添加 `solon-ai-core` ChatResponse:getResultContent
* 添加 `solon-ai-core` AssistantMessage.toBean 方法。
* 优化 `solon-ai-core` AssistantMessage.getResultContent 处理
* 调整 `solon-ai-croe` ChatSession 不再扩展 Prompt（打断两者关系，后者定位偏固定数据


新增三种模式的智能体：

| 智能体          | 模式描述                                      |
|--------------|-------------------------------------------|
| SimpleAgent  | 简单模式                                      | 
| ReActAgent   | 自省模式，思考+行动。                               | 
| TeamAgent    | 协作模式，分工+编排。多智能体系统（multi-agent system，MAS） | 


新特性示例：ReActAgent

```java
public class DemoApp {
  public static void main(String[] args) throws Throwable {
    ChatModel chatModel = LlmUtil.getChatModel();

    SimpleAgent robot = SimpleAgent.of(chatModel)
            .toolAdd(new MethodToolProvider(new TimeTool()))
            .build();

    String answer = robot.prompt("现在几点了？").call().getContent();

    System.out.println("Robot 答复: " + answer);
  }

  public static class TimeTool {
    @ToolMapping(description = "获取当前系统时间")
    public String getTime() {
      return LocalDateTime.now().toString();
    }
  }
}
```

### v3.8.0

重要变化：

* mcp-java-sdk 升为 v0.17 （支持 2025-06-18 版本协议）
* 添加 mcp-server McpChannel.STREAMABLE_STATELESS 通道支持（集群友好）
* 添加 mcp-server 异步支持

具体更新：

* 添加 solon-ai FunctionPrompt:handleAsync（用于 mcp-server 异步支持）
* 添加 solon-ai FunctionResource:handleAsync（用于 mcp-server 异步支持）
* 添加 solon-ai FunctionTool:handleAsync（用于 mcp-server 异步支持）
* 添加 solon-ai-core ChatMessage:toNdjson,fromNdjson 方法（替代 ChatSession:toNdjson, loadNdjson），新方法机制上更自由
* 添加 solon-ai-core ToolSchemaUtil.jsonSchema Publisher 泛型支持
* 添加 solon-ai-core ToolSchemaUtil.isIgnoreOutputSchema Publisher 泛型支持
* 添加 solon-ai-mcp mcp-java-sdk v0.17 适配（支持 2025-06-18 版本协议）
* 添加 solon-ai-mcp mcp-server 异步支持
* 添加 solon-ai-mcp mcp-server streamable_stateless 支持
* 添加 solon-ai-mcp Tool,Resource,Prompt 对 org.reactivestreams.Publisher<X> 异步返回支持
* 添加 solon-ai-mcp McpServerHost 服务宿主接口，用于隔离有状态与无状态服务
* 添加 solon-ai-mcp McpChannel.STREAMABLE_STATELESS （服务端）无状态会话
* 添加 solon-ai-mcp McpClientProvider:customize 方法（用于扩展 roots, sampling 等）
* 添加 solon-ai-mcp mcpServer McpAsyncServerExchange 注入支持（用于扩展 roots, sampling 等）
* 优化 solon-ai-dialect-openai claude 兼容性
* 优化 solon-ai-mcp mcp StreamableHttp 模式下 服务端正常返回时 客户端异常日志打印的情况
* 调整 solon-ai-mcp getResourceTemplates、getResources 不再共享注册
* 调整 solon-ai-mcp McpServerManager 内部接口更名为 McpPrimitivesRegistry （MCP 原语注册器）
* 调整 solon-ai-mcp McpClientProvider 默认不启用心跳机制（随着 mcp-sdk 的成熟，server 都有心跳机制了）
* mcp ToolCapabilities 添加 @JsonIgnoreProperties(ignoreUnknown = true)


新特性展示：1.MCP 无状态会话（STREAMABLE_STATELESS）和 2.CompletableFuture 异步MCP工具

```java
@McpServerEndpoint(channel = McpChannel.STREAMABLE_STATELESS, mcpEndpoint = "/mcp1")
public class McpServerTool {
    @ToolMapping(description = "查询天气预报", returnDirect = true)
    public CompletableFuture<String> getWeather(@Param(description = "城市位置") String location) {
        return CompletableFuture.completedFuture("晴，14度");
    }
}
```

传输方式对应表：（服务端与客户端，须使用对应的传输方式才可通讯）

| 服务端                   | 客户端         |  备注               |
|-----------------------|-------------|-----------------|
| STDIO                 | STDIO       |                 |
| SSE                   | SSE         |                 |
| STREAMABLE            | STREAMABLE  |                 |
| STREAMABLE_STATELESS  | STREAMABLE  | 对 server 集群很友好  |


* STREAMABLE_STATELESS 集群，不需要 ip_hash，但“原语”变化后无法通知 client


### v3.7.4

* 添加 solon-ai-core ChatMessage:toNdjson,fromNdjson 方法（替代 ChatSession:toNdjson, loadNdjson），新方法机制上更自由
* 优化 solon-ai-mcp mcp StreamableHttp 模式下 服务端正常返回时 客户端异常日志打印的情况

### v3.7.3

* 优化 solon-ai-core ToolSchemaUtil 扩展能力，支持注解处理定制（方便第三方集成）
* 优化 solon-ai-mcp MCP 客户端与服务端异常链接状态 立即返回

### v3.7.2

* 引入 snack4-jsonschema 优化 ToolSchemaUtil
* 添加 solon-ai-core AiMedia:metas 方法
* 添加 solon-ai-core GenerateModel defaultOptions 配置支持
* 添加 solon-ai-core ToolSchemaUtil:buildInputParams 方法，支持 @Body 注解
* 添加 solon-ai-flow GenerateModelCom 组件
* 修复 solon-ai bean 有其它框架代理后，不能识别注解的问题
* 修复 solon-ai ToolSchemaUtil 部分泛型识别失败的问题
* 修复 solon-ai-flow ChatModelCom 加载 chatConfig 配置会出错的问题
* 修复 solon-ai-mcp/mcp-sdk listTools 的 nextCursor 为空时，不能正常获取问题


### v3.7.0

* 优化 solon-ai-core ToolSchemaUtil:paramOf 方法，增加泛型支持
* 优化 solon-ai-core ToolSchemaUtil:outputSchema 泛型处理
* 修复 solon-ai parseToolCall 接收 stream 中间消息时可能会异常（添加 hasNestedJsonBlock 检测）
* 修复 solon-ai-mcp 可能出现 Unknown media type 错误（取消 request.contentType 空设置）
* jedis 升为 7.0.0 （通过 redisx）



### 3.6.5


* 修复 solon-ai-mcp/mcp-sdk listTools 的 nextCursor 为空时，不能正常获取问题

### 3.6.4

* 修复 solon-ai parseToolCall 接收 stream 中间消息时可能会异常（添加 hasNestedJsonBlock 检测）

### 3.6.3

* 修复 solon-ai-mcp 可能出现 Unknown media type 错误（取消 request.contentType 空设置）
* 优化 solon-ai-mcp 取消 request.contentType("") 设置


### 3.6.1

* 修复 solon-ai-core chatModel:stream 长流输出可能出错的问题


### 3.6.0

* 优化 solon-ai-core XxxMessageTemplate 使用 SnEL 替代 TmplUtil


### 3.5.9

* 修复 solon-ai-mcp/mcp-sdk listTools 的 nextCursor 为空时，不能正常获取问题

### 3.5.8

* 修复 solon-ai parseToolCall 接收 stream 中间消息时可能会异常（添加 hasNestedJsonBlock 检测）

### 3.5.7

* 修复 solon-ai-mcp 可能出现 Unknown media type 错误（取消 request.contentType 空设置）
* 优化 solon-ai-mcp 取消 request.contentType("") 设置

### 3.5.6

* 修复 solon-ai-core chatModel:stream 长流输出可能出错的问题
* mcp 移除 WebRxSseClientTransport:sendMessage 的 accept 声明（是在 3.5.5 时加的，此处没必要）

### 3.5.5

* 添加 McpClientProvider:httpFactory 默认为 jdkhttp（okhttp 有些平台不兼容），不再随 HttpUtils 的全局走
* 添加 solon-ai-mcp McpClientProvider:httpFactory 默认为 jdkhttp（okhttp 有些平台不兼容），不再随 HttpUtils 的全局走

### 3.5.3

* 优化 solon-ai-core chatModel.stream 与背压处理的兼容性
* 调整 solon-ai-map getPrompt,readResource,callTool 取消自动异常转换（侧重原始返回）
* 调整 solon-ai-map callTool 错误结果传递，自动添加 'Error:' （方便 llm 识别）
* 修复 solon-ai-mcp callTool isError=true 时，不能正常与 llm 交互的问题
* 修复 solon-ai-mcp ToolAnnotations:returnDirect 为 null 时的传递兼容性

### 3.5.2

* 添加 solon-ai-core ToolSchemaUtil 简化方法
* 添加 solon-ai-mcp McpClientProperties:timeout 属性，方便简化超时配置（可省略 httpTimeout, requestTimeout, initializationTimeout）
* 添加 solon-ai-mcp McpClientProvider:toolsChangeConsumer,resourcesChangeConsumer,resourcesUpdateConsumer,promptsChangeConsumer 配置支持
* 添加 solon-ai-mcp McpClientProvider 缓存锁和变更刷新控制
* 添加 solon-ai-mcp IMcpServerEndpoint 接口（方便可批量获取组件）
* 优化 solon-ai-core RepositoryStorable 接口定义，用 save 替代 insert(标为弃用)
* 调整 solon-ai-core FunctionToolDesc:doHandle 改用 ToolHandler 参数类型（之前为 Function），方便传递异常

### 3.5.1

* 新增 solon-ai-a2a 插件
* 新增 solon-ai-core GenerateModel 接口，替代 ImageModel
* 新增 solon-ai-core ChatModel 增加多媒体内容输出（增强感知型模型的兼容，比如输出图片或视频）
* 新增 solon-ai-core ImageModel 增加结构体提示语输入（比如图片编辑模型）
* 添加 solon-ai-core AbstractChatDialect 对多媒体内容输出的支持
* 添加 solon-ai-core AssistantMessage:contentRaw 原生内容（可能是 String、Map、List、null）
* 添加 solon-ai-dialect-dashscope 通过接口地址识别方言
* 添加 solon-ai-mcp McpServerEndpointProvider:Builder 添加 context-path 配置
* 优化 solon-ai-mcp McpClientProvider 配置向 McpServers json 格式上靠
* 修复 solon-ai-core `think-> tool -> think` 时，工具调用的内容无法加入到对话的问题
* 修复 solon-ai-mcp 服务端传输层的会话长连会超时的问题
* 修复 solon-ai-mcp 客户端提供者心跳失效的问题
* 修复 solon-ai-mcp SSE 传输时 message 端点未附加 context-path 的问题
* mcp `McpSchema:*Capabilities` 添加 `@JsonIgnoreProperties(ignoreUnknown = true)` 增强跨协议版本兼容性

### 3.5.0

* 新增 solon-ai-mcp mcp-java-sdk v0.11.0 适配（支持 2025-03-26 版本协议）
* 调整 solon-ai-mcp channel 取消默认值（之前为 sse），且为必填（利于协议升级过度，有明确的开发时、启动时提醒）
  * 如果默认值仍为 sse ，升级后可能忘了修改了升级
  * 如果默认值改为 streamable，升级后会造成不兼容

### 3.4.5

* 优化 solon-ai-core chatModel.stream 与背压处理的兼容性
* 调整 solon-ai-map getPrompt,readResource,callTool 取消自动异常转换（侧重原始返回）
* 调整 solon-ai-map callTool 错误结果传递，自动添加 'Error:' （方便 llm 识别）
* 修复 solon-ai-mcp callTool isError=true 时，不能正常与 llm 交互的问题

### 3.4.4

* 添加 solon-ai-dialect-dashscope 通过接口地址识别方言
* 添加 solon-ai-mcp McpClientProperties:toolsChangeConsumer,resourcesChangeConsumer,resourcesUpdateConsumer,promptsChangeConsumer 配置支持
* 添加 solon-ai-mcp McpClientProvider 缓存锁和变更刷新控制
* 修复 solon-ai-core think-> tool -> think 时，工具调用的内容无法加入到对话的问题
* mcp XxxCapabilities 添加 `ignoreUnknown=true` 增强旧协议兼容


### 3.4.3

* 新增 solon-ai-repo-mysql 插件
* 添加 solon-ai-core InMemoryChatSession（语义清晰） 替代 ChatSessionDefault（标为弃用）
* 优化 solon-ai-core ChatRequestDescDefault http 异常转换描述
* 优化 solon-ai-core 方言的 tool_calls 消息的构建（更好的兼容 vllm）
* 优化 solon-ai-mcp JsonSchema.additionalProperties 兼容性（兼容 bool, map）
* 优化 solon-ai-mcp McpClientProvider 改为 McpAsyncClient（为异步需求提供支持）
* 优化 solon-ai-mcp 初始化控制（禁用 connectOnInit），增加连接打印


### 3.4.1

* 新增 solon-ai-repo-pgvector 插件
* 新增 solon-ai-search-baidu 插件
* 添加 solon-ai-core `TextLoader(byte[])(SupplierEx<InputStream>)` 构造方法
* 添加 solon-ai-core `ChatConfig:defaultToolsContext`（默认工具上下文）, `defaultOptions`（默认选项） 属性
* 添加 solon-ai-core `RepositoryStorable:insert(list,progressCallback)` 和 `asyncInsert(list,progressCallback)` 方法，支持进度获取
* 添加 solon-ai-mcp 客户端 ssl 定制支持
* 优化 solon-ai 方言 think 思考内容和字段的兼容性处理
* 优化 solon-ai 方言处理与 modelscope（魔搭社区）的兼容性
* 优化 solon-ai 方言处理与 siliconflow（硅基流动）的兼容性
* 优化 solon-ai 方言处理的流式节点识别兼容性
* 优化 solon-ai 用户消息的请求构建（当内容为空时，不添加 text）
* 优化 solon-ai-mcp McpClientProvider 心跳间隔控制（5s 以下忽略）
* 优化 solon-ai-mcp McpServerContext 增加 stdio 代理支持（环境变量自动转为 ctx:header）
* mcp WebRxSseClientTransport 添加 debug 日志打印


### 3.4.0

* 新增 solon-ai-repo-opensearch 插件
* 添加 solon-ai Options:toolsContext 方法
* 调整 solon-ai-core ToolCallResultJsonConverter 更名为 ToolCallResultConverterDefault 并添加序列化插件支持
* 调整 solon-ai-mcp PromptMapping，ResourceMapping 取消 resultConverter 属性（没必要）
* 修复 solon-ai-core ChatModel:stream:doOnNext 可能无法获取 isFinished=true 情况

### 3.3.3

* 优化 solon-ai-core ToolSchemaUtil 对 Map 的处理（有些框架，太细不支持）
* 优化 solon-ai-core ToolSchemaUtil 对 Collection 的处理（有些框架，太细不支持）
* 优化 solon-ai-mcp MethodPromptProvider,MethodResourceProvider 改用 clz 构建(兼容外部代理情况)
* 优化 solon-ai-core MethodToolProvider 改用 clz 构建(兼容外部代理情况)
* 添加 solon-ai-core RepositoryStorable:insert(Doc...) 方法
* 添加 solon-ai-mcp McpServerEndpoint:enableOutputSchema 支持（默认为 false）
* 调整 solon-ai-core ToolCallResultConverter 接口定义（增加返回类型参数）
* 调整 solon-ai-core 移除 QueryCondition:doFilter 方法（避免误解）
* 调整 solon-ai-mcp tool,resource 结果默认处理改为 ToolCallResultJsonConverter
* 调整 solon-ai-repo-elasticsearch 搜索类型，默认改为相似搜索（之前为精准，需要脚本权限）
* mcp 优化 WebRxSseClientTransport 连接等待处理（异常时立即结束）
* elasticsearch-rest-high-level-client 升为 7.17.28
* milvus-sdk-java 升为 2.5.10
* vectordatabase-sdk-java 升为 2.4.5

### 3.3.2

* 优化 solon-ai-flow 插件
* 添加 solon-ai-core ChatInterceptor 聊天拦截机制
* 添加 solon-ai-core ChatMessage:ofUserAugment 替代 augment（后者标为弃用）
* 添加 solon-ai-core ProxyDesc 的 Serializable 接口实现
* 添加 solon-ai-core ChatOptions:response_format 方法
* 添加 solon-ai-core AssistantMessage:getSearchResultsRaw 方法
* 添加 solon-ai-mcp McpServerEndpointProvider:getMessageEndpoint 方法
* 添加 solon-ai-mcp McpServerParameters http 参数支持
* 添加 solon-ai-mcp McpClientProvider 本地缓存支持（默认 30秒）
* 添加 solon-ai-mcp 原语处理异常日志
* 优化 solon-ai-core ChatConfig.toString （增加 proxy）
* 优化 solon-ai-core Tool:outputSchema 改为必出
* 优化 solon-ai-core 添加 ToolCallException 异常类型，用于 tool call 异常传递（之前为 ChatException）
* 优化 solon-ai OpenaiChatDialect 方言，tool 消息也附带所有的 tools 元信息（之前被过滤了）
* 优化 solon-ai-mcp McpServerContext 同步连接时的请求参数，方便在 Tool 方法里获取
* 优化 solon-ai-mcp McpProviders 在 sse 时，支持 env 也作为 header 处理（有些服务方的配置，是用 env 的）
* 优化 solon-ai-mcp 取消 RefererFunctionTool（由 FunctionToolDesc 替代）
* 优化 solon-ai-mcp 基于 McpServerParameters 的构建能力
* 修复 solon-ai-flow ChatModel 没有加载 mcpServers 配置的问题
* mcp 适配优化 WebRxSseClientTransport 关闭时同时取消 sse 订阅（避免线程占用）


### 3.3.1

* 新增 solon-ai-flow 插件
* 新增 solon-ai-load-ddl 插件
* 添加 solon-ai-core ChatMessage:ofUser(media) 方法
* 添加 solon-ai-core ChatSession:addMessage(Prompt) 方法
* 添加 solon-ai-core ChatSession:addMessage(Collection) 方法
* 添加 solon-ai-core RerankingConfig,RerankingModel toString 方法
* 添加 solon-ai-core 模型的网络代理支持（支持简单配置，和复杂构建）
* 添加 solon-ai-mcp 客户端的网络代理简单配置支持
* 添加 solon-ai-mcp messageEndpoint 端点配置支持（应对特殊需求，一般自动更好）
* 添加 solon-ai-mcp ToolMapping,ResourceMapping 注解方法对 Produces 注解的支持（用它可指定结果转换处理）
* 添加 solon-ai-mcp ToolCallResultConverter:matched 方法
* 添加 solon-ai-mcp 资源模板的响应适配
* 添加 solon-ai-mcp McpClientProvider:getResourceTemplates 方法
* 添加 solon-ai-mcp 检查原语是否存在的方法（hasTool, hasPrompt, hasResource）
* 添加 solon-ai-mcp 提示语支持 UserMessage 拆解成多条 mcp 内容（如果，同时有媒体和文本的话）
* 优化 solon-ai-core tool 空参数时的不同大模型兼容性
* 优化 solon-ai-core ChatSession 的作用，为限数提供支持
* 优化 solon-ai-core MethodFunctionTool 移除对 Mapping 注解的支持（语意更清楚，之前 MethodToolProvider 已经移除，这个落了）
* 优化 solon-ai-core EmbeddingRequest，ImageRequest，RerankingRequest 当 resp.getError() 非 null 时，直接出抛异常
* 优化 solon-ai-mcp 取消 MethodFunctionResource 对反回类型的限制（增加了 resultConverter 转换处理）
* 优化 solon-ai-mcp McpServerEndpointProvider 支持零添加原语，postStart 后，可添加原语
* 修复 solon-ai ChatRequestDefault:stream 请求 r1 时，可能会产生两次 tink 消息发射

### 3.3.0

* 新增 solon-ai-repo-dashvector 插件
* 插件 solon-ai 三次预览
* 插件 solon-ai-mcp 二次预览
* 调整 solon-ai 移除 ToolParam 注解，改用 `Param` 注解（通用参数注解）
* 调整 solon-ai ToolMapping 注解移到 `org.noear.solon.ai.annotation`
* 调整 solon-ai FunctionToolDesc:param 改为 `paramAdd` 风格
* 调整 solon-ai MethodToolProvider 取消对 Mapping 注解的支持（利于跨生态体验的统一性）
* 调整 solon-ai 拆分为 solon-ai-core 和 solon-ai-model-dialects（方便适配与扩展）
* 调整 solon-ai 模型方言改为插件扩展方式
* 调整 solon-ai-mcp McpClientToolProvider 更名为 McpClientProvider（实现的接口变多了）
* 优化 solon-ai 允许 MethodFunctionTool,MethodFunctionPrompt,MethodFunctionResource 没有 solon 上下文的用况
* 优化 solon-ai-core `model.options(o->{})` 可多次调用
* 优化 solon-ai-mcp McpClientProvider 同时实现 ResourceProvider, PromptProvider 接口
* 优化 solon-ai-repo-redis metadataIndexFields 更名为 `metadataFields` （原名标为弃用）
* 添加 solon-ai-core ChatSubscriberProxy 用于控制外部订阅者，只触发一次 onSubscribe
* 添加 solon-ai-mcp McpClientProperties:httpProxy 配置
* 添加 solon-ai-mcp McpClientToolProvider isStarted 状态位（把心跳开始，转为第一次调用这后）
* 添加 solon-ai-mcp McpClientToolProvider:readResourceAsText,readResource,getPromptAsMessages,getPrompt 方法
* 添加 solon-ai-mcp McpServerEndpointProvider:getVersion,getChannel,getSseEndpoint,getTools,getServer 方法
* 添加 solon-ai-mcp McpServerEndpointProvider:addResource,addPrompt 方法
* 添加 solon-ai-mcp McpServerEndpointProvider:Builder:channel 方法
* 添加 solon-ai-mcp ResourceMapping 和 PromptMapping 注解（支持资源与提示语服务）
* 添加 solon-ai-mcp McpServerEndpoint AOP 支持（可支持 solono auth 注解鉴权）
* 添加 solon-ai-mcp McpServerEndpoint 实体参数支持（可支持 solon web 的实体参数、注解相通）
* 添加 solon-ai-mpc `Tool.returnDirect` 属性透传（前后端都有 solon-ai 时有效，目前还不是规范）

### 3.2.1

* 添加 solon-ai ChatRequestDefault http 状态异常处理
* 添加 solon-ai ToolCallResultConverter 接口（工具调用结果转换器）
* 添加 solon-ai ToolCall 添加 Mapping 和 Param 注解（支持与 web api 打通）
* 添加 solon-ai Tool.returnDirect 属性，用于直接返回给调用者（mcp 目前无法传导此属性，只能地本地用）
* 添加 solon-ai-mcp McpChannel 通道（stdio, sse），实现不通道的支持
* 添加 solon-ai-mcp stdio 通道交换流支持
* 添加 solon-ai-mcp McpClientToolProvider 断线重连机制
* 添加 solon-ai-mcp McpClientProperties:fromMcpServers 方法
* 调整 solon-ai-mcp McpClientToolProvider.Builder:header 更名为 headerSet。保持与 ChatModel:Builder 相同风格
* 调整 solon-ai ToolCallResultConverter 申明不再扩展自 Converter，避免冲突
* 修复 solon-ai-mcp McpClientToolProvider 会丢失 queryString 的问题
* 修复 solon-ai-load-word WordLoader 流使用错误问题
* 修复 solon-ai ollama 方言，在多工具调用时产生 index 混乱的问题

### 3.2.0

* 新增 solon-ai-mcp
* 调整 函数(Function)相关的概念改为工具概念(Tool)。调整后适合 mcp 的相关概念

### v3.1.2

* 新增 solon-ai-repo-chroma 插件
* 优化 solon-ai-repo-tcvectordb 插件相似度处理
* 优化 solon-ai-repo-elasticsearch 插件相似度处理

### v3.1.1

* 新增 solon-ai-load-ppt 插件，添加对 ppt, pptx 文档的解析
* 新增 solon-ai-load-word 插件，添加对 doc, docx 文档的解析
* 新增 solon-ai-repo-qdrant 插件
* 新增 solon-ai-repo-tcvectordb 插件
* 新增solon-ai-repo-elasticsearch 插件
* 添加 solon-ai ChatResponse:getAggregationMessage(), isStream() 方法
* 添加 solon-ai ChatSession 自动登记处理
* 调整 solon-ai ChatDialect:parseResponseJson 定义
* 修复 solon-ai 在流式调用时 function call 出错的问题