- 更新日志(简体中文)
- Changelog(English)
What's Changed
新增
- 为电脑使用能力支持文件读取(read)、写入(write)、编辑(edit)、Grep 搜索(ripgrep)与按会话隔离的 workspace。(#7402)
- 微信个人号适配器支持引用消息的解析。(#7380)
- 新增 Brave Search 网页搜索工具,移除旧的默认网页搜索实现。(#6847)
- 新增 Mattermost 平台适配器支持。(#7369)
- 新增 NVIDIA Rerank Provider。(#7227)
- 新增 LongCat LLM Provider。(#7360)
- 新增 OpenAI、Gemini 音频输入模态支持,并修复 ChatUI 录音相关问题。(#7378)
- Discord 平台新增 Bot 消息过滤配置,允许控制是否接收其他 Bot 的消息。(#6505)
- 新增 LLM 对重复工具调用的引导能力,减少模型陷入重复调用工具的情况。(#7388)
- QQ 官方 API 文件上传新增重试机制,提升文件发送稳定性。(#7430)
优化
- 重构 ChatUI 样式、消息渲染与输入体验,改善聊天界面的整体可维护性与交互一致性。(#7485)
- 合并 Cron 相关工具为统一管理工具,并新增 Cron 任务编辑能力。(#7445)
- 重构内置工具管理逻辑,改善 AstrBot 内置工具注册与调用维护性。(#7418)
- 移除了大部分低频内置命令并整合命令功能,将这些指令挪至 builtin-command-extension 插件,同时更新文档。(#7478)
- 移除默认网页搜索实现,改由新的搜索工具链路提供能力。(#7416)
- 移除
lxml与beautifulsoup4依赖,降低安装体积与依赖复杂度。(#7449) - 新增 MCP stdio 配置校验,降低无效配置导致的启动失败与排查成本。(#7477)
- Docker 运行配置启用
no-new-privileges,提升容器默认安全性。(commit) - 降低 MCP Server 状态轮询频率,减少后台请求开销。(#7399)
- 帮助命令忽略
dashboard_update等内部有效命令,减少帮助列表噪音。(commit) - 修正文档中的路径拼接示例,避免插件开发存储文档误导使用者。(#7448)
- 补充 Matrix 平台常量、平台图标与相关文档。(#7368)
修复
- 修复 STT 或 TTS Provider 在配置中禁用时仍可能被取用的问题。(#7363)
- 修复 Gemini 空模型输出误触发错误处理的问题。(#7377)
- 修复 Gemini FunctionResponse 中不支持的
id字段导致请求失败的问题。(#7386) - 修复仅存在原生工具时仍传递
FunctionCallingConfig的问题。(#7407) - 修复工具结果断言与动态阈值不一致的问题。(commit)
- 修复 Bailian Rerank 对不同 URL 端点返回格式的兼容性问题。(#7250)
- 修复 QQ 官方 WebSocket 关闭流程清理不完整的问题。(#7395)
- 修复 Telegram 网络异常后的轮询恢复问题,并补充相关测试。(#7468)
- 修复 Telegram 长消息最终分段过长的问题。(#7432)
- 修复 Telegram
sendMessageDraft发送空文本导致 400 错误刷屏的问题。(#7398) - 修复 Telegram 收集命令时插件 handler 不在
star_map中导致KeyError的问题。(#7405) - 修复 Discord Slash Command 未及时 defer 导致
10062 Unknown interaction的问题。(#7474) - 修复微信个人号适配器缺少上下文 token 时的警告信息。(commit)
- 修复
group_icl_enable在消息处理时未使用 UMO 绑定配置的问题。(#7397) - 修复插件函数工具模块路径与插件主模块路径不一致的问题。(#7462)
- 修复插件版本检查逻辑对预发布版本的支持问题。(commit)
- 修复 Shell 命令执行 JSON 响应中非 ASCII 字符被转义的问题。(#7475)
- 修复 Windows 桌面端插件依赖加载不安全或失败的问题。(#7446)
- 修复
faiss在启动阶段过早导入导致部分环境启动失败的问题。(#7400) - 修复 WebUI 暗色模式渲染与多处交互问题。(#7173)
- 修复 ChatUI 项目常量缺失,并补充相关测试用例。(#7414)
- 修复页面切换时浮动按钮跳动的问题。(#7214)
- 修复对话管理页依赖的
MessageList.vue缺失导致 Linux 环境 Dashboard 构建失败的问题。(commit) - 修复工具调用图标使用了 MDI 子集缺失图标导致的显示问题。(commit)
- 修复 Dashboard store 中
defineStore的类型用法问题。(#7490) - 修复 compose 文件中的 Docker 镜像名称错误。(#7488)
What's Changed (EN)
New Features
- Added the LongCat LLM Provider. (#7360)
- Added missing Matrix platform constants, platform logo, and documentation updates. (#7368)
- Added local Computer Use filesystem tools, including file read, write, edit, Grep search, and per-session workspace support. (#7402)
- Added the Brave Search web search tool, replacing the old default web search implementation. (#6847)
- Added Mattermost platform support. (#7369)
- Added the NVIDIA Rerank Provider. (#7227)
- Added audio input support across OpenAI and Gemini providers, and fixed ChatUI recording issues. (#7378)
- Added reply component support for the Weixin OC adapter. (#7380)
- Added configurable Discord bot-message filtering, including support for receiving messages from other bots. (#6505)
- Added LLM guidance for repeated tool calls to reduce repetitive tool-call loops. (#7388)
- Added retry handling for QQ Official API file uploads to improve file-send reliability. (#7430)
Improvements
- Refactored ChatUI styling, message rendering, and input interactions for better maintainability and UI consistency. (#7485)
- Merged Cron tools into a unified management tool and added Cron task editing. (#7445)
- Refactored built-in tool management to improve registration and maintenance. (#7418)
- Removed rarely used built-in commands, consolidated command functionality, and updated command documentation. (#7478)
- Removed the old default web search implementation in favor of the new search tool flow. (#7416)
- Removed
lxmlandbeautifulsoup4dependencies to reduce dependency weight and installation complexity. (#7449) - Added MCP stdio configuration validation to reduce startup failures caused by invalid configs. (#7477)
- Enabled
no-new-privilegesin Docker runtime configuration to improve default container security. (commit) - Reduced MCP Server status polling frequency to lower background request overhead. (#7399)
- Ignored internal effective commands such as
dashboard_updatein HelpCommand to reduce help-list noise. (commit) - Fixed a path concatenation example in the plugin storage docs. (#7448)
- Updated the README logo. (commit)
Bug Fixes
- Returned
Nonewhen STT or TTS providers are disabled in config instead of still resolving them. (#7363) - Fixed empty model output handling that could misfire when using Gemini. (#7377)
- Removed the unsupported
idfield from Gemini FunctionResponse payloads. (#7386) - Skipped
FunctionCallingConfigwhen only native tools are present. (#7407) - Updated tool-result assertions to match dynamic threshold values. (commit)
- Fixed Bailian Rerank compatibility with different response formats based on URL endpoint. (#7250)
- Cleaned up QQ Official WebSocket shutdown handling. (#7395)
- Fixed Telegram polling recovery after network failures and added related tests. (#7468)
- Fixed overly long final Telegram message segments. (#7432)
- Fixed Telegram
sendMessageDraft400 spam caused by empty text. (#7398) - Fixed a
KeyErrorin Telegram command collection when a plugin handler is missing fromstar_map. (#7405) - Fixed Discord
10062 Unknown interactionerrors by deferring slash commands immediately. (#7474) - Improved the missing-context-token warning message in the Weixin OC adapter. (commit)
- Fixed
group_icl_enableto use UMO-bound config during message handling. (#7397) - Aligned function tool module paths with plugin main module paths. (#7462)
- Fixed plugin version checks for pre-release versions. (commit)
- Preserved non-ASCII characters in JSON responses from shell command execution. (#7475)
- Fixed safer desktop plugin dependency loading on Windows. (#7446)
- Deferred
faissimports during startup to avoid startup failures in some environments. (#7400) - Fixed WebUI dark-mode rendering and multiple interaction bugs. (#7173)
- Added missing ChatUI project constants and related tests. (#7414)
- Prevented floating buttons from jumping during page transitions. (#7214)
- Restored
MessageList.vuefor the conversation management page to fix Dashboard production builds on Linux. (commit) - Updated tool-call icons to use an icon included in the MDI subset. (commit)
- Fixed
defineStoretype usage in Dashboard stores. (#7490) - Fixed the Docker image name in the compose file. (#7488)
What's Changed (Details)
- docs: add usage of
select_knowledgebasein plugin development docs by @piexian in #7115 - feat: add new StatsPage for enhanced statistics overview by @Soulter in #7152
- fix(core): Record.path was incorrectly treated as required under Pydantic v2 by @No-22-Github in #7048
- fix: improve number input UX in config renderer by @Reisenbug in #7153
- fix: send SSE heartbeat to prevent WebChat disconnect during compression by @he-yufeng in #7003
- perf: improve ui by @Soulter in #7178
- chore(deps): bump codecov/codecov-action from 5 to 6 in the github-actions group by @dependabot[bot] in #7209
- Fix cached_tokens handling in _extract_usage method by @LIghtJUNction in #6719
- refactor: update provider panels for improved layout and styling by @Soulter in #7248
- feat: integrate Monaco Editor workers for enhanced code editing support by @Soulter in #7249
- fix: add pysocks dependency to support SOCKS5 proxy for pip install by @Neko-Yukari in #7221
- fix(Docker): add amr encoder by @WenqiOfficial in #7247
- fix: support both old and new Bailian Rerank API response formats by @he-yufeng in #7217
- 修正了QQ websoket连接的文档错误 by @Thelia-Lzr in #7279
- 修复:过滤空助手消息,以防止在严格API上出现400错误(fix: filter empty assistant messages to prevent 400 error on strict APIs) by @kaixinyujue in #7202
- Docs/update mimo provider readme by @RichardLiuda in #7207
- Feat(webui): dashboard and console qol improvements by @M1LKT in #7215
- fix: 改进知识库的初始化错误处理 by @piexian in #7243
- docs: 在 uv 部署文档中添加不支持 WebUI 升级的说明 by @piexian in #7298
- fix: resolve Discord/Misskey hot reload issue by fixing client_self_id misuse by @Soulter in #7331
- fix: satisfy Google Gemini's function_response requirements to avoid 400 Invalid argument errors by @he-yufeng in #7216
- fix: filter Gemini thinking parts from user-facing message chain by @he-yufeng in #7196
- perf: Set
contentto None when the OpenAI message content list is empty by @he-yufeng in #6551 - fix(windows): inherit all system environment variables into MCP runner for Windows by @SoloLevelingAI in #7054
- feat: support token usage extraction for llama.cpp by @Soulter in #7358
- feat(provider/vllm_rerank): add configurable rerank_api_suffix option by @richard950825-sys in #7278
- feat(matrix): add missing Matrix constant and update docs by @stevessr in #7368
- fix: add checks to return None if STT or TTS providers are disabled in config by @machinad in #7363
- feat(provider): add LongCat LLM Provider by @Futureppo in #7360
- fix: empty model output error may misfire when use gemini by @Soulter in #7377
- feat: add audio input support across providers and chatui recording issue fix by @Soulter in #7378
- feat: add NVIDIA rerank provider support by @WenqiOfficial in #7227
- feat: implement llm guidance for repetition tool call by @Soulter in #7388
- fix: clean up qq official websocket shutdown by @Soulter in #7395
- feat(platform): add Mattermost bot support by @KagurazakaNyaa in #7369
- chore(deps): bump docker/login-action from 4.0.0 to 4.1.0 in the github-actions group by @dependabot[bot] in #7401
- fix: reduce MCP server status polling frequency by @M1LKT in #7399
- fix: defer faiss imports during startup by @Aster-amellus in #7400
- fix: prevent KeyError in Telegram collect_commands when plugin handler not in star_map by @michealmachine in #7405
- fix(google-gemini): skip FunctionCallingConfig when only native tools are present by @he-yufeng in #7407
- fix(dashboard): fix WebUI dark mode rendering and multiple UI interaction bugs by @piexian in #7173
- fix(telegram): skip empty text in sendMessageDraft to prevent 400 spam by @he-yufeng in #7398
- fix: remove unsupported id field from Gemini FunctionResponse by @kaiisfree in #7386
- fix: add ChatUIProject & SessionProjectRelation to shared constants & test cases by @RC-CHN in #7414
- fix: prevent floating buttons from jumping during page transitions by @KBVsent in #7214
- feat: add new web search tool Brave Search by @daniel5u in #6847
- refactor: remove default web search by @Soulter in #7416
- refactor: improve astrbot builtin tool management by @Soulter in #7418
- perf: merge 3 cron tools into 1 cron manage tool, and add edit capability for cron tool. by @Soulter in #7445
- fix: split long telegram final segments by @Shujakuinkuraudo in #7432
- fix: make desktop plugin dependency loading safer on Windows by @zouyonghe in #7446
- chore: remove lxml and bs4 deps by @Soulter in #7449
- docs: fix path concatenation error in storage.md by @2doright in #7448
- feat(discord): add configurable bot message filtering, allow bot to receive other bots' messages by @MinaraAgent in #6505
- feat: filesystem grep, read, write, edit file and workspace support by @Soulter in #7402
- fix: Telegram polling recovery after network failures by @Shujakuinkuraudo in #7468
- fix: correct tool source identification for add_llm_tools plugins by @railgun19457 in #7462
- feat: implement retry mechanism for QQ Official API file uploads by @KBVsent in #7430
- fix: ensure JSON response is encoded with non-ASCII characters for shell command execution by @Soulter in #7475
- fix(discord): prevent 10062 Unknown interaction error by deferring slash commands immediately by @yuanqiuye in #7474
- feat(weixin_oc): support reply components by @Sagiri777 in #7380
- fix: support both Bailian Rerank API formats based on URL endpoint by @Neko-Yukari in #7250
- perf: add validation for MCP stdio configuration by @Soulter in #7477
- refactor: remove rarely-used builtin commands and consolidate functionality by @Soulter in #7478
- fix: use UMO-bound config for group_icl_enable in on_message by @saschabuehrle in #7397
- refactor: chatui style by @Soulter in #7485
- fix: wrong image name in compose by @kyangconn in #7488
- fix: type use of defineStore in @/stores by @kyangconn in #7490
New Contributors
- @No-22-Github made their first contribution in #7048
- @Neko-Yukari made their first contribution in #7221
- @WenqiOfficial made their first contribution in #7247
- @Thelia-Lzr made their first contribution in #7279
- @kaixinyujue made their first contribution in #7202
- @SoloLevelingAI made their first contribution in #7054
- @richard950825-sys made their first contribution in #7278
- @KagurazakaNyaa made their first contribution in #7369
- @Aster-amellus made their first contribution in #7400
- @michealmachine made their first contribution in #7405
- @kaiisfree made their first contribution in #7386
- @Shujakuinkuraudo made their first contribution in #7432
- @2doright made their first contribution in #7448
- @MinaraAgent made their first contribution in #6505
- @yuanqiuye made their first contribution in #7474
- @Sagiri777 made their first contribution in #7380
- @saschabuehrle made their first contribution in #7397
Full Changelog: v4.22.2...v4.23.0