Skip to content

Releases: AstrBotDevs/AstrBot

v4.23.0-beta.1

11 Apr 13:54

Choose a tag to compare

What's Changed

新增

  • 为电脑使用能力支持文件读取(read)、写入(write)、编辑(edit)、Grep 搜索(ripgrep)与按会话隔离的 workspace。(#7402
  • 新增 Brave Search 网页搜索工具,替代旧的默认网页搜索实现。(#6847
  • 新增 Mattermost 平台适配器支持。(#7369
  • 新增 NVIDIA Rerank Provider。(#7227
  • 新增 OpenAI、Gemini 音频输入模态支持,并修复 ChatUI 录音相关问题。(#7378
  • Discord 平台新增 Bot 消息过滤配置,允许控制是否接收其他 Bot 的消息。(#6505
  • 新增 LLM 对重复工具调用的引导能力,减少模型陷入重复调用工具的情况。(#7388

优化

  • 合并 Cron 相关工具为统一管理工具,并新增 Cron 任务编辑能力。(#7445
  • 重构内置工具管理逻辑,改善 AstrBot 内置工具注册与调用维护性。(#7418
  • 移除默认网页搜索实现,改由新的搜索工具链路提供能力。(#7416
  • 移除 lxmlbeautifulsoup4 依赖,降低安装体积与依赖复杂度。(#7449
  • 降低 MCP Server 状态轮询频率,减少后台请求开销。(#7399
  • 修正文档中的路径拼接示例,避免插件开发存储文档误导使用者。(#7448

修复

  • 修复 Windows 桌面端插件依赖加载不安全或失败的问题。(#7446
  • 修复 Telegram 长消息最终分段过长的问题。(#7432
  • 修复 Telegram sendMessageDraft 发送空文本导致 400 错误刷屏的问题。(#7398
  • 修复 Telegram 收集命令时插件 handler 不在 star_map 中导致 KeyError 的问题。(#7405
  • 修复 QQ 官方 WebSocket 关闭流程清理不完整的问题。(#7395
  • 修复 Gemini FunctionResponse 中不支持的 id 字段导致请求失败的问题。(#7386
  • 修复 Gemini 空模型输出误触发错误处理的问题。(#7377
  • 修复仅存在原生工具时仍传递 FunctionCallingConfig 的问题。(#7407
  • 修复 ChatUI 项目常量缺失,并补充相关测试用例。(#7414
  • 修复 WebUI 暗色模式渲染与多处交互问题。(#7173
  • 修复页面切换时浮动按钮跳动的问题。(#7214
  • 修复 faiss 在启动阶段过早导入导致部分环境启动失败的问题。(#7400
  • 修复微信个人号适配器缺少上下文 token 时的警告信息。(commit
  • 修复工具结果断言与动态阈值不一致的问题。(commit

What's Changed (EN)

New Features

  • 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 providers and fixed ChatUI recording issues. (#7378)
  • 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)

Improvements

  • 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 the old default web search implementation in favor of the new search tool flow. (#7416)
  • Removed lxml and beautifulsoup4 dependencies to reduce dependency weight and installation complexity. (#7449)
  • Reduced MCP Server status polling frequency to lower background request overhead. (#7399)
  • Fixed a path concatenation example in the plugin storage docs. (#7448)
  • Updated the README logo. (commit)

Bug Fixes

  • Fixed safer desktop plugin dependency loading on Windows. (#7446)
  • Fixed overly long final Telegram message segments. (#7432)
  • Fixed Telegram sendMessageDraft 400 spam caused by empty text. (#7398)
  • Fixed a KeyError in Telegram command collection when a plugin handler is missing from star_map. (#7405)
  • Cleaned up QQ Official WebSocket shutdown handling. (#7395)
  • Removed the unsupported id field from Gemini FunctionResponse payloads. (#7386)
  • Fixed empty model output handling that could misfire when using Gemini. (#7377)
  • Skipped FunctionCallingConfig when only native tools are present. (#7407)
  • Added missing ChatUI project constants and related tests. (#7414)
  • Fixed WebUI dark-mode rendering and multiple interaction bugs. (#7173)
  • Prevented floating buttons from jumping during page transitions. (#7214)
  • Deferred faiss imports during startup to avoid startup failures in some environments. (#7400)
  • Improved the missing-context-token warning message in the Weixin OC adapter. (commit)
  • Updated tool-result assertions to match dynamic threshold values. (commit)

What's Changed

  • docs: add usage of select_knowledgebase in 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 content to 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_reran...
Read more

v4.22.3

04 Apr 17:52

Choose a tag to compare

What's Changed

新增

  • 新增 vllm_rerank 提供商支持可配置的 rerank_api_suffix,可灵活适配不同 API 路径。(#7278
  • 适配 llama.cpp 的 token 用量提取支持,增强 token 统计与计费分析能力。(#7358
  • WebUI 捆绑 Monaco Editor 的 worker 文件,防止从 CDN 下载失败。(#7249
  • 全新的模型/平台总览统计面板。(#7152

优化

  • 优化 OpenAI 消息处理,若 content 列表为空时将其置为 None,并降低空内容下的异常率。(#6551
  • 优化 provider page 布局与样式,提升整体设置页面排版一致性。(#7248
  • 用户已登录时将直接跳转欢迎页,减少再次进入登录页的步骤。(commit

修复

  • 修复 Windows 下 MCP runner 未继承完整系统环境变量导致启动异常的问题。(#7054
  • 修复 Gemini 思考片段泄露到用户可见消息链路的问题。(#7196
  • 修复 Gemini(OpenAI 兼容 API) 下,function_response 格式要求导致的 400 Invalid argument 错误。(#7216
  • 修复知识库初始化失败时的错误提示与恢复问题。(#7243
  • 修复 Bailian Rerank 对新旧响应格式兼容性,避免解析失败。(#7217
  • Docker 镜像补充 AMR 编码器依赖,修复部分部署场景下的音频转码缺失问题。(#7247
  • 修复 pip 安装缺少 pysocks 依赖导致的 SOCKS5 代理不可用问题。(#7221
  • 修复 cached_tokens_extract_usage 中的处理逻辑,避免 token 统计错乱。(#6719
  • 增强 SSE 断开保护,压缩传输下主动发送心跳,减少 WebChat 误断连。(#7003
  • 修复严格 API 下空 assistant 消息导致的 400 错误。(#7202
  • 新增二维码功能缺失的 qrcode 依赖修复,恢复二维码生成功能。(commit
  • 修复配置器数字输入组件的交互体验问题,避免异常输入场景下的处理偏差。(#7153
  • 修复 Record.path 在 Pydantic v2 下被错误视为必填字段的问题。(#7048

What's Changed (EN)

New Features

  • Added configurable rerank_api_suffix for the vllm_rerank provider to support custom API paths.(#7278
  • Added token usage extraction support for llama.cpp to improve token accounting.(#7358
  • Bundled Monaco Editor workers in WebUI so code editing does not depend on external CDN downloads.(#7249
  • Added a new statistics overview for model and platform usage.(#7152
  • Redirected logged-in users to the welcome page instead of the login page.(commit

Improvements

  • Improved OpenAI message handling by setting message content to None when content lists are empty, reducing empty-payload edge cases.(#6551
  • Improved provider page layout and styling to keep settings pages consistent.(#7248
  • Refined connection-success handling and messaging when users are already logged in.(commit

Bug Fixes

  • Inherited all system environment variables in Windows MCP runner to fix environment-dependent launch issues.(#7054
  • Filtered Gemini thinking parts from user-facing message chains.(#7196
  • Fixed Gemini function_response compatibility to prevent 400 Invalid argument responses.(#7216
  • Improved knowledge base initialization error handling.(#7243
  • Fixed Bailian rerank parsing for both old and new response formats.(#7217
  • Added AMR encoder support in Docker builds to fix missing audio codec support.(#7247
  • Added the pysocks dependency so pip installs can use SOCKS5 proxy correctly.(#7221
  • Fixed _extract_usage cached token handling.(#6719
  • Sent SSE heartbeat packets to prevent WebChat disconnection under compression.(#7003
  • Fixed 400 errors caused by empty assistant messages on strict APIs.(#7202
  • Added missing qrcode dependency to restore QR code generation.(commit
  • Fixed number input UX in config renderer.(#7153
  • Fixed Record.path being incorrectly treated as required under Pydantic v2.(#7048

What's Changed

  • docs: add usage of select_knowledgebase in 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 content to 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

New Contributors

Full Changelog: v4.22.2...v4.22.3

v4.22.2

28 Mar 16:35

Choose a tag to compare

What's Changed

新增

  • 个人微信 新增“对方正在输入...”状态控制能力。(#6977
  • 配置管理页支持从现有配置复制生成新配置,减少重复创建成本。(#6785

优化

  • Chat Provider text_chat 接口新增 tool_choice 参数,并为模型空响应引入统一的 EmptyModelOutputError 与增强重试逻辑,改善 “skills-like” 工具调用模式下的稳定性。(#7101#7104
  • SSL 证书配置错误时自动回退到非 SSL 模式,而不是程序直接退出。(#7102

修复

  • 修复 个人微信 Bot 无法发送多媒体文件与 CDN 上传地址兼容性问题,适配新的 upload_full_url 返回格式。#7066
  • 修复 个人微信 连接超时 / 中断后直接导致微信适配器实例退出的问题,增强了重试机制。(#7041
  • 修复 WebUI Skills 上传对多技能压缩包的处理,允许单个 zip 包内包含多个技能。(#7070
  • 修复 OpenAI 嵌入模型接口处理相关问题。#7026
  • QQ 机器人发送语音或音频文件没有响应 (#7007
  • ChatUI 切换到某个会话,刷新后错误地跳转到最新会话 (#6535
  • 修复百炼 qwen3-rerank 的请求负载兼容性问题,并忽略不受支持的 return_documents 参数。(#6222
  • 修复 QQ 下,发送唤醒前缀后,多次空触发 LLM 的问题。(#6893
  • 修复 GSVI TTS 调用方式与鉴权头构造问题,并补充默认配置值,适配新的 /infer_single API。(#7083
  • 修复缺失 httpx SOCKS 代理依赖的问题,恢复 SOCKS 代理支持。(#7093
  • 修复企业微信客服发送失败时无法回退普通消息接口的问题。(#7012
  • 修复 WebUI 对话管理详情页无法滚动的问题。#6972
  • 修复 Telegram 附件消息 caption 丢失的问题。(#7020

What's Changed (EN)

New Features

  • Added tool_choice to Tool Loop Agent Runner and introduced EmptyModelOutputError with stronger retry handling, improving stability for "skills-like" tool-call workflows.(#7101#7104
  • Added SSL config resolution and validation for Dashboard, with automatic fallback to non-SSL mode when the certificate setup is invalid.(#7102
  • Added the ability to create a new config by copying an existing one in the config management page.(#6785
  • Updated the QQ Official adapter to support asynchronous message parsing and attachment preparation.(#7007
  • Added typing-state control ("user is typing...") for the Weixin OC adapter.(#6977

Improvements

  • Refactored Chat UI routing and layout so the UI mode is URL-driven and related state is scoped to sessionStorage.(#6535
  • Improved WebUI polish by centering extension-page toast hints and making code blocks more readable in dark mode.(#6043#7014

Bug Fixes

  • Fixed skill installer handling so a single zip archive can contain multiple skills.(#7070
  • Fixed Bailian qwen3-rerank payload compatibility and ignored unsupported return_documents parameters.(#6222
  • Fixed pipeline wake-up and request flow on empty messages.(#6893
  • Fixed GSVI TTS invocation and authorization-header construction, and added safer default config values.(#7083
  • Fixed missing httpx SOCKS proxy dependency to restore SOCKS proxy support.(#7093
  • Fixed Weixin OC inbound polling retry behavior and CDN upload compatibility with the new upload_full_url response field.(#7041#7066
  • Fixed WeCom fallback behavior so sending can retry through the regular message API when the KF API returns 40096.(#7012
  • Fixed missing attachment captions in Telegram messages.(#7020
  • Hardened OpenAI attachment recovery and fixed Embedding URL suffix trimming to avoid recovery failures and accidental URL character removal.(#7004#7026
  • Fixed Dashboard regressions around list-option label mapping, missing icons, and mouse-wheel handling in the preview container.(#6844#6970#6972

What's Changed

  • fix: honor computer_use_require_admin in shipyard_neo tools by @1zzxy1 in #6951
  • fix(dashboard): include missing vuetify mdi icons by @RC-CHN in #6970
  • docs: Fix typo in plugin configuration documentation by @Yinr in #6971
  • docs: normalize QQ group listings in READMEs and community docs by @idiotsj in #6976
  • fix(provider): restore parameter transparency in core LLM provider adapters by @SXP-Simon in #6934
  • feat(dashboard): center extension page toast hints with the global UI by @catDforD in #6043
  • docs: update plugin dev link in webui by @xrr2016 in #6978
  • Feat(webui): improve code block readability in dark mode(iss#6963) by @M1LKT in #7014
  • fix: harden OpenAI attachment recovery by @zouyonghe in #7004
  • revert: "fix(provider): restore parameter transparency in core LLM provider adapters" by @Soulter in #7023
  • fix(dashboard): update aiocqhttp tutorial links to new docs path by @idiotsj in #7038
  • fix(embedding): use removesuffix instead of rstrip to prevent over-trimming URLs by @Izayoi9 in #7026
  • fix(telegram): preserve attachment captions by @Clhikari in #7020
  • fix(wecom): fallback to message API when kf returns 40096 by @silwings1986 in #7012
  • fix(chatui): refactor routing and layout to drive UI mode from URL and scope state to sessionStorage by @itamiokanjiro in #6535
  • fix(weixin_oc): add error handling and retry logic for inbound updates polling by @Soulter in #7041
  • feat: Add "typing" ("对方正在输入...") state control for weixin_oc plateform by @GowayLee in #6977
  • docs: corrent weixin_oc wechat version requirements by @tlw00988 in #7068
  • fix(weixin_oc): allow CDN uploads to use upload_full_url when provided by @Astral-Yang in #7066
  • fix: bundle httpx SOCKS proxy support by @zouyonghe in #7093
  • fix(gsvi_tts): Use the correct calling method by @Rain-0x01-39 in #7083
  • fix(pipeline): skip waking on empty messages by @Reisenbug in #6893
  • fix: allow multiple skills in a single zip archive by @jmt059 in #7070
  • feat: update QQOfficialPlatformAdapter to support async parsing and attachment preparation by @Soulter in #7007
  • fix(dashboard): apply labels mapping for list options in config renderer by @Foolllll-J in #6844
  • feat: allow copy config from existing configs by @Flartiny in #6785
  • fix(provider): fix Bailian rerank payload compatibility for qwen3-rerank by @kawayiYokami in #6222
  • fix(webui): keep wheel scrolling inside history dialog by @1zzxy1 in #6972
  • feat(agent-runner): add tool_choice parameter to fix empty tool calls response in "skills-like" tool call mode by @Soulter in #7101
  • feat(dashboard): add SSL configuration resolution for dashboard by @Soulter in #7102
  • feat: implement EmptyModelOutputError for handling empty responses across providers and enhance retry logic in ToolLoopAgentRunner by @Soulter in #7104

New Contributors

Read more

v4.22.1

25 Mar 16:05

Choose a tag to compare

What's Changed

新增

  • 增强 Skills 安装流程,不再限制上传的压缩包顶级必须是一个目录。并支持中文技能名称显示。(#6952
  • OpenAI Embedding 模型配置支持自动补齐 /v1 基础路径。(#6863
  • /api/file 新增 GET 端点并支持多种请求方式。(#6874
  • WebUI 设置页新增日志与缓存清理能力。(#6822
  • Lark 平台新增可折叠 Thinking 面板能力与消息处理优化。(#6831

修复

  • 修复 QQ 官方机器人中,在 Cron Job 或者主动发送消息时的 msg_id 相关负载处理问题。(#6604
  • 修复 个人微信 在轮询超时后停止轮询的问题。(#6915
  • 修复 硅基流动 提供商无法正确使用工具调用能力的问题。(#6829
  • 修复部分提供商工具调用流式增量返回缺少 index 导致的异常。(#6661
  • 修复 WebUI 中 ObjectEditorupdateKey 错误索引导致的“键已存在”误判。(#6825
  • 修复 UI 图标集合及测试一致性导致的展示异常。(#6894#6892
  • 修复 T2I 配置间未同步生效模板的问题。(#6824
  • 修复 MIMO TTS 样式参数以对齐官方文档约定。(#6814

What's Changed (EN)

New Features

  • Enhanced skill installation to support multiple top-level folders, duplicate handling, and Chinese skill names.(#6952
  • Automatically append /v1 to embedding_api_base for OpenAI embedding compatibility.(#6863
  • Added plugin author display and pinned plugin card support in WebUI.(#6875
  • Added GET endpoint for /api/file and support for multiple HTTP methods.(#6874
  • Added log and cache cleanup in Dashboard settings.(#6822
  • Added collapsible reasoning panel and message handling improvements for Lark.(#6831

Improvements

  • Validate config_path before existence checks to avoid false negatives.(#6722
  • Improved Provider batch reset behavior and "follow" configuration handling in WebUI.(#6825
  • Updated OpenAI-related guidance in i18n docs for clearer compatibility hints.(adc252a3)

Bug Fixes

  • Fixed missing index field in streaming tool_call deltas.(#6661
  • Fixed msg_id payload handling for QQ API.(#6604
  • Kept Weixin OC polling active after inbound timeout.(#6915
  • Fixed updateKey index bug in WebUI ObjectEditor that caused false “key exists” errors.(#6825
  • Fixed icon regressions in UI and related icon scan tests.(#6894#6892
  • Fixed SiliconFlow provider tools compatibility issue.(#6829
  • Synchronized active T2I template across all configs.(#6824
  • Aligned MIMO TTS payload style with official docs.(#6814
  • Removed privacy-sensitive data left in tests.(#6803

v4.22.0

22 Mar 09:36

Choose a tag to compare

What's Changed

新增

  • 新增个人微信接入能力(微信官方提供)。详见 个人微信接入#6777
  • 新增图片压缩能力,支持图片尺寸、JPEG 质量限制。(#6794
  • 新增 WebUI 已安装插件置顶与拖拽重排能力。(#6776

优化

  • 知识库为空时自动跳过检索,避免无效搜索调用。(#6750
  • 修复 frontmatter 转义换行符保留行为并更新相关测试与 CI 工作流(含文档与配置同步)。(#6783

修复

  • Telegram 适配器改为导入 Forbidden,替代已弃用的 Unauthorized(兼容性修正)。(#6769
  • 处理 OpenAI Provider 中 token usage metricsNone 时的异常场景。(#6788
  • 保留全部 CallToolResultcontent 项,避免工具调用上下文内容丢失。(#6149

What's Changed (EN)

New Features

  • Added WeChat personal account support, including QR-code driven setup, message flow refactor, and media handling improvements.(#6777
  • Added pinning and drag-sorting for installed WebUI plugins.(#6776
  • Added image compression with max-size handling and temporary-file lifecycle management for improved image efficiency.(#6794

Improvements

  • Skipped search execution when the entire knowledge base is empty.(#6750
  • Preserved escaped newlines in frontmatter, with related test and CI workflow updates.(#6783

Bug Fixes

  • Replaced deprecated Telegram adapter import of Unauthorized with Forbidden.(#6769
  • Handled None values in OpenAI provider token usage metrics.(#6788
  • Kept all CallToolResult.content items to prevent losing tool-call context.(#6149

What's Changed

  • feat: supports weixin personal account by @Soulter in #6777
  • fix(platform.tg_adapter): import Forbidden instead of deprecated Unauthorized (#6765) by @mzwing in #6769
  • feat: skip search when the entire knowledge base is empty by @Waterwzy in #6750
  • feat: fix preserve escaped newlines in frontmatter & update tests & ci workflows by @RC-CHN in #6783
  • Feat(webui): support pinning and dragging for installed plugins (#6649) by @M1LKT in #6776
  • fix: handle potential None values for token usage metrics in OpenAI provider by @Soulter in #6788
  • feat: supports image compressing (#6463) by @Soulter in #6794
  • fix: keep all CallToolResult content items by @tsubasakong in #6149

New Contributors

Full Changelog: v4.21.0...v4.22.0

v4.21.0

21 Mar 18:03

Choose a tag to compare

What's Changed

新增

  • 为插件市场新增分类筛选并优化界面组件。(#6762
  • 新增 Kimi Coding Plan Provider(兼容 Anthropic API)。(#6559
  • 统一并重命名 skill.md 文件为 SKILL.md。(#6757
  • 新增 Ollama 关闭思考模式开关。(#5941
  • 新增小米 MiMo TTS 与 STT Provider。(#6643
  • 新增多模态上下文 token 计数能力(图片、音频与思维链)。(#6596
  • 新增按元信息名称安装插件并校验可导入标识符。(#6530

优化

  • 降低 kook_typeStrEnum(str, Enum) 以兼容旧版本 Python。(#6512
  • 优化 WebChat 消息处理:提前保存消息并增强流式补全。(#6698
  • 优化 Dashboard 中移动端 persona 选择器布局。(#5907
  • 优化 Dashboard,减少 MDI icon font 范围并自托管 Google Fonts。(#6532
  • 使用 Pydantic 重构 KOOK 适配器数据模型以提升消息结构解析与校验性能。(#5719
  • 调整文档术语与表达(“消息平台”改为“机器人”等)并优化更新说明文字。(#6568

修复

  • 修复 web search tools 中被禁用系统函数时未正确生效的问题。(#6584
  • 跳过空的知识库嵌入批次,避免不必要计算。(#6106
  • 修复 Feishu opus 文件在 Whisper API STT 场景下未正确转换的问题。(#6078
  • 修复 Lark 在工具调用中断时卡片创建与重续流程。(#6743
  • 修复 Windows 环境下 skill 文件编码兼容问题。(#6058
  • 修复 WebChat 单独渲染的 HTML 回复被错误显示的问题。(#6074
  • 修复 Gemini 数组 schema 缺少 items 字段的问题。(#6051
  • 修复 skills 使用硬编码工作区路径的问题,改为使用缓存中的真实沙箱路径。(#6331
  • 修复 subagent 工具调用超时传递,修正 tool_call_timeout 并将默认超时从 60 秒提升到 120 秒。(#6713
  • 修复 skills-like 下缺失 extra_user_content_parts 时未注入图片说明的问题。(#6710
  • 修复 /stop 后继续处理后续 follow-up 消息的问题。(#6704
  • 修复核心流程在 stop 时中断子代理工具等待的行为。(#5850
  • 修复 Windows 平台 stdio MCP 服务 PATHEXT 丢失的问题。(#5822
  • 修复 Telegram 轮询重启机制,失败时自动恢复循环。(#6648
  • 修复 /stop 后 follow-up 状态未清理导致后续触发继续运行的问题。(#6656
  • 修复 OpenAI 配置日志,改进代理与 API Base 的可读性与排障能力。(#6669
  • 修复长工具调用中截断逻辑误删唯一 user 消息的问题。(#6198
  • 修复截断器移除唯一用户消息导致部分 provider 返回 400 的问题。(#6581
  • 修复 ID 白名单为空时提示文案不清晰的问题。(#6611
  • 修复 MoonshotAI 官方 API 下 OpenAI token usage 缺失问题。(#6618
  • 提升 Wecom AI Bot 流式可读性与速度(限流处理),改善卡顿与显示体验。(#6610
  • 修复 Wecom 长连接回复消失的问题。(#6606
  • 修复 Windows 打包运行时 pip/native 构建环境配置问题。(#6575
  • 修复仅在显式配置时传递 embedding dimensions,避免无效参数干扰。(#6432
  • 修复 register_agent 装饰器导致的 NameError。(#5765
  • 修复默认 persona 场景下的 subagent 查询失败问题。(#5672
  • 修复 Windows 下 skill 读取失败问题。(#6490
  • 修复 SKILL.md 多行 frontmatter 解析问题。(#6460
  • 修复 SQLite database is locked 问题,新增繁忙超时处理。(#6474
  • 修复工作流限制仅允许上游仓库触发的报错场景。(#6531

What's Changed (EN)

New Features

  • Added category filtering for market plugins and enhanced UI components.
  • Normalized and renamed skill.md files to SKILL.md.
  • Added a toggle to disable thinking mode in Ollama.
  • Added Xiaomi MiMo TTS & STT providers.
  • Added Kimi Coding Plan provider with Anthropic API compatibility.
  • Added context token counting support for multimodal content (images, audio, and chain-of-thought).
  • Added plugin installation by metadata name and validated importable identifiers.

Improvements

  • Refactored StrEnum to (str, Enum) in kook_type for backward compatibility.
  • Enhanced WebChat message handling with proactive saving and streaming completion.
  • Simplified dashboard persona selector layout for mobile screens.
  • Subset MDI icon font and self-hosted Google Fonts in dashboard.
  • Implemented Pydantic data models for KOOK adapter for better retrieval and schema validation.
  • Updated documentation wording for incomplete updates terminology.

Bug Fixes

  • Fixed disabled system functions in web search tools.
  • Skipped empty knowledge-base embedding batches.
  • Converted Feishu opus files for Whisper API STT.
  • Deferred Lark card creation and renewal on tool call break.
  • Added fallback for Windows skill file encodings.
  • Rendered standalone HTML replies as code in WebChat.
  • Ensured Gemini array schemas always include items.
  • Fixed skills path resolution to use cached sandbox path instead of hardcoded workspace root.
  • Passed tool_call_timeout to subagent handsoff/cron/background tasks and increased default timeout to 120 seconds.
  • Fixed skills-like re-query missing extra_user_content_parts causing image caption not injected.
  • Rejected follow-up messages after /stop request.
  • Interrupted subagent tool waits on stop.
  • Preserved PATHEXT for stdio MCP servers on Windows.
  • Added automatic restart for Telegram polling loop on failure.
  • Fixed follow-up persistence logic after /stop trigger.
  • Improved OpenAI proxy/API base logging.
  • Prevented truncation logic from removing the only user message in long tool-calling conversations.
  • Fixed truncation removing the only user message and returning 400 for some providers.
  • Updated ID whitelist empty-configuration hint wording.
  • Fixed token usage with MoonshotAI official API.
  • Improved Wecom AI Bot streaming readability and speed via throttling.
  • Prevented Wecom AI Bot long connection replies from disappearing.
  • Set packaged Windows runtime build env for pip native builds.
  • Only pass embedding dimensions when explicitly configured.
  • Fixed register_agent decorator NameError.
  • Fixed subagent lookup failure when using default persona.
  • Fixed reading skills on Windows.
  • Fixed multiline frontmatter parsing in SKILL.md.
  • Fixed SQLite database is locked with busy timeout.
  • Restricted workflows to upstream repo.

What's Changed

  • feat: localize session management group & interval method texts by @RC-CHN in #6471
  • fix: SQLite 'database is locked' under concurrent writes by @he-yufeng in #6474
  • fix: parse multiline frontmatter description in SKILL.md by @RhoninSeiei in #6460
  • chore(deps): bump the github-actions group with 2 updates by @dependabot[bot] in #6461
  • chore: remove deprecated version field from compose.yml by @YuanyuanMa03 in #5495
  • fix: reading skills on Windows by @linzhengtian in #6490
  • fix: subagent create failure when using default persona by @whatevertogo in #5672
  • fix: register_agent decorator NameError by @whatevertogo in #5765
  • fix: only pass dimensions when explicitly configured in embedding config by @jnMetaCode in #6432
  • perf: Implement Pydantic data models for the KOOK adapter to enhance data retrieval and message schema validation by @shuiping233 in #5719
  • refactor: Downgrade StrEnum to (str, Enum) in kook_type for backward compatibility by @shuiping233 in #6512
  • feat: install plugin using metadata name and validate importable identifiers by @Soulter in #6530
  • fix: restrict workflows to upstream repo by @Raven95676 in #6531
  • Fix LLM always choosing FileDownloadTool instead of FileUploadTool by @he-yufeng in #6527
  • perf(dashboard): subset MDI icon font and self-host Google Fonts by @camera-2018 in #6532
  • 更改未完成更新的文档用词问题(多处“消息平台”已更名为“机器人”) by @nuomicici in #6568
  • fix: set packaged Windows runtime build env for pip native builds by @zouyonghe in #6575
  • feat (doc) : Add doc for shipyard-neo sandbox driver by @RC-CHN in #6590
  • docs(sandbox): clarify section references in guides by @RC-CHN in #6591
  • fix: prevent wecom ai bot long connection replies from disappearing by @shijianhuai in #6606
  • fix(wecom-aibot): significantly improve streaming readability and speed via add throttling by @Soulter in https://git...
Read more

v4.20.1

16 Mar 16:38

Choose a tag to compare

What's Changed

新增

  • 补充 MiniMax Provider。(#6318
  • 新增 WebUI ChatUI 页面的会话批量删除功能。(#6160
  • 新增 WebUI ChatUI 配置发送快捷键。(#6272

优化

  • 优化 UMO 处理兼容性。(#5996
  • 重构 _extract_session_id,改进聊天类型分支处理。(#5775
  • 优化聊天组件行为,使用 shiki 进行代码块渲染。(#6286
  • 优化 WebUI 主题配色与视觉体验。(#6263
  • 优化 OneBot @ 组件后处理,避免消息文本解析空格问题。(#6238

修复

  • 修复创建新 Provider 后未同步 providers_config 的问题。(#6388
  • 修复 API 返回 null choices 时的 TypeError。(#6313
  • 修复 QQ Webhook 重试回调重复触发的问题。(#6320
  • 修复流式模式下 deltaNone 导致工具调用时报错的问题。(#6365
  • 修复模型服务链接说明文字错误。(#6296
  • 修复 AI 在 tool-calling 模式设为 skills-like 时发送媒体失败的问题。(#6317
  • 修复 Telegram 适配器中 GIF 被错误转成静态图的问题。(#6329
  • 将 Provider 图标来源替换为 jsDelivr CDN 地址,修复部分环境下图标加载问题。(#6340
  • 修复 QQ 官方表情消息未解析为可读文本的问题。(#6355
  • 修复 WebChat 队列异常时流式结果页面崩溃的问题。(#6123
  • 修复子代理 handoff 工具在插件过滤时丢失的问题。(#6155
  • 修复 Cron 提示文案缺少空格及 utcnow() 的弃用警告问题。(#6192
  • 修复 WebUI 启动时 Sidebar hash 导航抖动/定位问题。(#6159
  • 修复启动重试过程中移除已移除 API Key 的 ValueError 报错。(#6193
  • 修复 README 启动命令引用更新为 astrbot run。(#6189
  • 修复 Plain.toDict()@ 提及场景下空白字符丢失的问题。(#6244
  • 修复 provider 依赖重复定义问题。(#6247
  • 修复 Telegram 中普通回复被误判为线程的处理问题。(#6174

其他

  • 调整 astrbot.service 及 CI 配置,升级 GitHub Actions 版本。

What's Changed (EN)

New Features

  • Added OpenRouter chat completion provider adapter with support for custom headers (#6436).
  • Added MiniMax provider (#6318).
  • Added batch conversation deletion in WebChat (#6160).
  • Added send shortcut settings and localization support for WebChat input (#6272).
  • Added local temporary directory binding in YAML config (#6191).

Improvements

  • Improved UMO processing compatibility (#5996).
  • Refactored _extract_session_id for chat type handling (#5775).
  • Improved chat component behavior and uses shiki for code-block rendering (#6286).
  • Improved WebUI theme color and visual behavior (#6263).
  • Improved OneBot @ component spacing handling (#6238).
  • Improved PR checklist validation and closure messaging.

Bug Fixes

  • Fixed missing providers_config sync after creating new providers (#6388).
  • Fixed TypeError when API returns null choices (#6313).
  • Fixed repeated QQ webhook retry callbacks (#6320).
  • Fixed tool-calling streaming null delta handling to prevent AttributeError (#6365).
  • Fixed model service link wording in docs/config (#6296).
  • Fixed AI media sending failure when tool-calling mode is set to skills-like (#6317).
  • Fixed GIF being sent as static image in Telegram adapter (#6329).
  • Replaced npm registry URLs with jsDelivr CDN for provider icons (#6340).
  • Fixed QQ official face message parsing to readable text (#6355).
  • Fixed WebChat stream-result crash on queue errors (#6123).
  • Preserved subagent handoff tools during plugin filtering (#6155).
  • Fixed cron prompt spacing and deprecated utcnow() usage (#6192).
  • Fixed unstable sidebar hash navigation on startup (#6159).
  • Fixed ValueError in retry loop when removing an already removed API key (#6193).
  • Updated startup command to astrbot run across READMEs (#6189).
  • Preserved whitespace in Plain.toDict() for @ mentions (#6244).
  • Removed duplicate dependencies entries (#6247).
  • Fixed Telegram normal reply being treated as topic thread (#6174).

Documentation

  • Updated rainyun backup/access documentation (#6427).
  • Updated package.md and platform docs, including Matrix and Wecom AI bot documentation.
  • Fixed Discord invite link in community docs.

Chores

  • Updated PR templates/checklist workflow, repository service config, and automated checks.
  • Refreshed repository automation and formatting maintenance, and removed obsolete changelog scripts.

v4.20.0

12 Mar 16:36

Choose a tag to compare

What's Changed

新增

  • 新增俄语翻译(#6081)。
  • QQ 官方 Bot 新增文件、语音、视频消息支持(含 WebSocket 模式)(#6063)。

优化

  • 优化 QQ 官方 Bot 的流式消息投递可靠性与主动媒体发送能力(#6131)。
  • 优化边界场景下 booter 选择逻辑与消息发送工具(#6064)。

修复

  • 修复 Dashboard README 对话框锚点导航失效(#6083)。
  • 优先使用具名 weekday 的 cron 示例,避免歧义(#6091)。
  • 修复插件市场安装后状态未及时刷新的问题(#6124)。
  • 修复插件依赖安装逻辑:仅安装缺失依赖(#6088)。
  • 移除 Telegram 适配器中已废弃的 normalize_whitespace 参数(#6044)。
  • 修复 Windows 本地 skill 文件读取问题(#6028)。
  • 修复 Discord pre-ack emoji 配置重启后不持久化的问题(#6031)。
  • 统一 WebUI 搜索框清空行为(#6017)。
  • 优化插件依赖自动安装流程与 Dashboard 安装体验(#5954)。

What's Changed (EN)

New Features

  • Added Russian translation support (#6081).
  • Added file, voice, and video message support for QQ Official Bot (including WebSocket mode) (#6063).

Improvements

  • Improved streaming message delivery reliability and proactive media sending for QQ Official API (#6131).
  • Optimized booter selection logic in edge cases and message sending tooling (#6064).

Bug Fixes

  • Fixed broken README dialog anchor navigation in the Dashboard (#6083).
  • Preferred named weekday cron examples to reduce ambiguity (#6091).
  • Fixed plugin market install-state refresh after installation (#6124).
  • Fixed plugin dependency installation logic to install only missing packages (#6088).
  • Removed deprecated normalize_whitespace parameter in the Telegram adapter (#6044).
  • Fixed local skill file reading issues on Windows (#6028).
  • Fixed Discord pre-ack emoji config not being persisted across restarts (#6031).
  • Unified WebUI search input clear behavior (#6017).
  • Improved plugin dependency auto-install flow and Dashboard installation experience (#5954).

What's Changed

  • fix: 插件依赖自动安装逻辑与 Dashboard 安装体验优化 by @zouyonghe in #5954
  • fix(webui): unify search input clear behavior by @Flartiny in #6017
  • fix: Persist Discord pre-ack emoji config across restart by adding missing default key by @Jzjerry in #6031
  • fix: improve Windows local skill file reading by @zouyonghe in #6028
  • feat: added support for file, voice, and video messages for QQ Official Bot (including WebSocket mode). by @Soulter in #6063
  • perf: optimize booter selection for edge cases and message sending tool by @Soulter in #6064
  • fix(docs): typo in docker.md & napcat.md by @shudorcl in #6048
  • fix(telegram): remove deprecated normalize_whitespace param from telegramify_markdown.markdownify calls by @DOHEX in #6044
  • fix: install only missing plugin dependencies by @zouyonghe in #6088
  • chore: update dependency and workflow versions by @zouyonghe in #6119
  • fix(extension): refresh plugin market install state after install by @letr007 in #6124
  • docs: 添加 Astrbook 和玖帕喵社区链接 by @advent259141 in #6135
  • [Security] Fix CRITICAL vulnerability: V-004 by @orbisai0security in #6093
  • fix: prefer named weekday cron examples by @stablegenius49 in #6091
  • fix(dashboard): restore README dialog anchor navigation by @stablegenius49 in #6083
  • feat: add Russian translation by @seoeaa in #6081
  • perf(QQ Official API): improve streaming message delivery reliability and proactive media sending by @2ndelement in #6131

New Contributors

Full Changelog: v4.19.5...v4.20.0

v4.19.5

10 Mar 16:19

Choose a tag to compare

What's Changed

新增

  • Lark 适配器支持 CardKit 流式输出(飞书)(#5777)。
  • WebUI 已安装插件列表新增筛选与排序功能 (#5923)。

优化

  • 启动时后台加载 MCP Server,不阻塞加载流程 (#5993)。

修复

  • 部分情况下 MCP 页报错 500 导致查看不了 MCP 服务器 (#5993)。
  • 修复 TTS Provider 测试:增加文件大小校验,并补充 MiniMax 空音频检测 (#5999)。
  • 修复前端切换到 Chat 后又回到 Welcome 时,页面切换配置未正确持久化的问题 (#5792)。
  • 修复 Azure TTS 不支持 84 位订阅密钥的问题 (#5813)。

文档

  • 文档仓库迁移:将 AstrBotDevs/AstrBot-docs 内容迁移至 AstrBotDevs/AstrBot (#5960)。

What's Changed (EN)

New Features

  • Added CardKit streaming output support for the Lark/Feishu adapter (#5777).
  • Added filtering and sorting for installed plugins in the WebUI (#5923).

Impprovement

  • MCP Server now loads in the background during startup without blocking the loading process (#5993).

Bug Fixes

  • Added file size validation in TTS provider tests and MiniMax empty-audio detection (#5999).
  • Fixed frontend state persistence when switching from Chat back to Welcome (#5792).
  • Fixed Azure TTS support for 84-character subscription keys (#5813).
  • Reverted the MCP stdio missing-command error wording change after the previous fix (#5992).

Documentation

  • Migrated documentation content from AstrBotDevs/AstrBot-docs into AstrBotDevs/AstrBot (#5960).

v4.19.4

09 Mar 03:16

Choose a tag to compare

What's Changed

新增

  • 企业微信智能机器人支持长连接模式。#5930

New

  • Wecom AI Bot supports long-connection mode(Websockets). #5930