Repository navigation
Undefined v3.10.0
v3.10.0 音乐工具集与多模型 Tool Call 兼容
本版本新增基于 lxmusic2api 的完整音乐能力,并围绕多模型 Tool Call、消息交付、队列调度与上下文边界进行系统加固。主 AI 现在可以在不暴露底层下载作业的前提下完成歌曲检索、版本选择和音频交付;不同模型输出的多种文本 Tool Call 也能安全恢复为原生调用。
变更内容
- 新增可选的
lxmusic2api音乐工具集。通过[lxmusic2api]配置base_url与api_key,支持环境变量、热更新和未配置密钥时自动隐藏全部音乐工具;提供歌曲、歌单、榜单、热搜、歌词、封面、评论、跨平台匹配和音频获取等 10 项面向用户的高层能力,不暴露下载任务等底层接口。部署与 API 配置参见 lxmusic2api。 - 完成结果驱动的搜歌与交付链路。搜索结果使用请求内有效的紧凑
track_ref,减少完整 Track 在模型上下文中的重复传输;AI 根据标题、歌手、专辑、版本与可用音质灵活选择结果,在用户未指定时优先可明确识别的原唱录音室版本和最高可用音质,无法确认时再询问。music.get_audio负责准备附件或链接,普通音频由messages.send_message实际发送,并在历史中保留平台、音质、名称、作者、专辑、时长、格式、大小和回退信息;空成功流会被拒绝,文件后缀按最终 MIME/音质生成,WebUI 交付也会复用原附件 UID 与音乐语义元数据。 - 扩展多模型请求与文本 Tool Call 兼容。新增每模型
thinking_param_enabled开关,默认启用且仅控制自动生成的顶层thinking参数,不影响 reasoning effort 或显式请求参数;兼容连续 JSON、XML 风格tool/tool_execution、function_calls、function=.../parameter=...以及顶层tool_callsJSON 封包等常见非原生输出,并将安全恢复的调用规范化为原生消息,保留调用 ID、并行顺序、工具可见性与执行边界。恢复时仅剥离文本封包载体,Responses reasoning items 与 Anthropic 签名或加密 thinking blocks 会继续参与下一轮原生回放。 - 加固工具续轮与异常恢复。空白模型响应改走同一次请求的失败重试,未调用工具的响应在纠正续轮前记录原始内容;Tool Search 规范化工具标识符查询、明确“先搜索再调用”的续轮语义,并拒绝执行本轮尚未加载的工具。无法安全解析的文本封包仍遵循既有重试与原文回退路径。
- 优化消息投递可靠性。纯附件消息直接投递附件,不再额外发送空正文;对 NapCat / OneBot 已受理但结果不确定的超时,文本、附件和原生语音工具均按已尝试投递处理且不自动重发,私聊不会转入临时会话或遍历共享群回退。防重记录与
mark_sent语义相互独立,后台播报不会误计作本轮用户回复,同时保留用户显式重试能力。 - 改进队列与后台稳定性。
queue_interval_seconds <= 0改为有请求即唤醒的事件驱动即时发送,不再空闲轮询;静默重试重新入队时同步唤醒处理器,避免空闲队列无限等待。正数配置继续按间隔扫描。同步修复认知史官清理空转,以及转发消息解析器返回非 awaitable 对象时的类型与运行时处理。 - 收紧当前输入、长期记忆与群聊收件人边界。当前消息批次和当前会话元数据始终高于历史记忆、旧任务和旧地址,工具或 Agent 返回后会重新核对本轮目标;群聊提示显式标注
bot_trigger=mention|poke|none,不再仅凭“你”、命令语气、技术相关性或管理员身份推断消息指向 Bot,也不会把批次中一次 @ 扩散到其他独立消息。最近历史会在当前批次入队前冻结为请求级深拷贝快照,避免慢速认知检索期间的新消息穿透到旧请求并诱发复读;批次自身按消息 ID 精确剔除,兼容交错群消息与投机重发。 - 优化工具调用彩蛋。虚拟
tool_search可按各类模式参与调用提示;同一轮并行调用相同工具时合并为一条并显示xN,减少重复消息。同步更新配置模板、README、架构、使用说明、模型兼容、认知记忆与 Tool Search 文档,并补充相关回归测试。 - 修复两个原生客户端的前端构建依赖安全告警。将 Vite 依赖树中的 PostCSS 锁定版本更新至
8.5.23,同步更新 Nano ID 至3.3.16,消除 source map 自动加载可能造成任意.map文件泄露的路径穿越风险;两个客户端的npm audit均恢复为零漏洞。