Releases: AstrBotDevs/AstrBot
Releases · AstrBotDevs/AstrBot
Release list
v4.26.6
4.26.6 - 2026-07-14
Added
- Added persona import and export in the WebUI. Exported personas intentionally exclude tools and Skills configuration. (#4532)
Changed
- Enabled ephemeral cache control for Anthropic providers to improve cache hit rates. (#9197)
- Refined README documentation and corrected the Satori and Mattermost tutorial links. (#9205)
- Updated grouped GitHub Actions dependencies. (#9170)
Fixed
- Validated dashboard account username updates. (#9175)
- Removed an unsupported
forceargument from LINE response parsing. (#9187) - Handled invalid response cleanup regular expressions without interrupting message delivery. (#9183)
- Fixed the mobile chat input freeze and multiline attachment button alignment. (#9202)
- Made ChatUI model selection theme-aware. (#9200)
- Corrected the i18n callback path to Settings General. (#9201)
- Returned appropriate HTTP errors when skill downloads fail. (#9213)
- Exempted WebChat from the friend wake prefix. (#9215)
- Handled
max_tokenscorrectly for NVIDIA MiniMax M3. (#9209) - Reported current context usage accurately in the token indicator. (#9255)
- Resumed active ChatUI streams after a page refresh. (#9259)
What's Changed
- fix: validate dashboard account username updates by @VectorPeak in #9175
- fix: remove unexpected force argument from get_json in astrbot\core\platform\sources\line\line_adapter.py" by @SpencerFang0617 in #9187
- fix: Added Try Except to Filter Handling by @CooperWang0912 in #9183
- fix(platform): correct tutorial links for satori and mattermost by @th-dd in #9205
- fix: resolve mobile chat input freeze and multiline attachment button alignment by @leafliber in #9202
- fix: make ChatUI model selection theme-aware by @wcqqq1214 in #9200
- fix: use ephemeral cache control mode in anthropic provider to increase cache hit rate by @911218sky in #9197
- chore(deps): bump the github-actions group with 4 updates by @dependabot[bot] in #9170
- fix(i18n): update platform callback path translation by @th-dd in #9201
- fix: return HTTP errors for failed skill downloads by @VectorPeak in #9213
- fix: exempt WebChat from friend wake prefix by @wcqqq1214 in #9215
- fix: handle max_tokens for NVIDIA MiniMax M3 by @Last-emo-boy in #9209
- fix: prevent the WebChat token ring from over-reporting context usage by @Fronut in #9255
- fix(group_chat_context): use .get() to avoid KeyError when config profile lacks image_caption_prompt by @tsaitang404 in #9216
- fix: resume ChatUI streams after refresh by @Soulter in #9259
- feat: import and export personas by @Sjshi763 in #4532
- chore: bump version to 4.26.6 by @Soulter in #9273
New Contributors
- @SpencerFang0617 made their first contribution in #9187
- @wcqqq1214 made their first contribution in #9200
- @Last-emo-boy made their first contribution in #9209
- @tsaitang404 made their first contribution in #9216
Full Changelog: v4.26.5...v4.26.6
v4.26.5
4.26.5 - 2026-07-07
Added
- Added support for setting a custom bot ID while creating a platform by scanning a QR code. (#9067)
- Added ChatUI project workspaces. (#9066)
- Added improved ChatUI attachment display. (#9134)
- Added malformed tool-call name sanitation in
ToolLoopAgentRunner. (#9144) - Added model metadata in selectors and a chat token usage indicator. (#9161)
- Added event-loop diagnostics and expanded diagnostics documentation. (#9168)
- Added documentation for cross-platform compatibility and Python version support.
- Added test coverage for POSIX file URI root preservation. (#8906)
Changed
- Log event-loop watchdog startup at the info level.
- Keep model metadata separate from providers. (#9161)
- Polish snackbar styling in the WebUI. (#9173)
Fixed
- Enabled only synced ModelScope MCP servers. (#9084)
- Improved MCP client startup and shutdown handling to avoid idle spinning and clean up on errors, timeouts, and cancellation. (#9070)
- Replaced fragile knowledge-base duplicate-name error matching with a pre-check. (#9121)
- Improved knowledge-base retrieval resilience on per-knowledge-base failures and rerank selection. (#9122)
- Cleaned up
KBMediarecords on document deletion and fixed knowledge-base stats updates. (#9120) - Aligned the knowledge-base CRUD API contract with
kb_name, canonical payload fields, and OpenAPI types. (#9000) - Constrained custom workspace paths and preserved absolute custom workspace paths.
- Improved web search API key failover.
- Enforced ownership when reading ChatUI sessions. (#9141)
- Secured project update temporary staging. (#9083)
- Improved QQ Official retry behavior when websocket send returns
None. (#8977) - Preserved QQ Official quoted message context. (#9164)
- Removed QQ Official reply IDs on proactive fallback so oversized passive replies can succeed via proactive sending. (#9169)
- Adapted MiMo STT to V2.5 models and rejected non-WAV audio payloads. (#9118)
- Serialized webchat history timestamps as UTC-aware ISO strings. (#9159)
- Synced plugin activation status on enable in the WebUI. (#9156)
- Exited MCP
anyiocontexts in the lifecycle task on disable. (#9132) - Fixed leaked SSE exit stack handling that could cause MCP epoll busy-wait. (#8307)
Commits
- feat(platform): 支持扫码创建时自定义机器人ID by @NayukiChiba in #9067
- fix: enable only synced ModelScope MCP servers by @VectorPeak in #9084
- feat: add ChatUI project workspaces by @Soulter in #9066
- fix: Improve MCP client startup and shutdown handling to prevent idle spinning when a server is disabled and ensure proper cleanup on errors, timeouts, and cancellation by @GlowingBrick in #9070
- fix(kb): replace fragile error string matching with pre-check for duplicate kb_name by @lxfight in #9121
- fix(kb): improve retrieval resilience on per-KB failure and rerank selection by @lxfight in #9122
- fix(kb): clean up KBMedia records on document delete, fix update_kb_stats by @lxfight in #9120
- fix: align knowledge base CRUD API contract with kb_name, canonical payload fields, and matching OpenAPI types by @lxfight in #9000
- fix(core): 修复 Tavily 其他5种search方法 API Key 和轮询失败未自动切换的问题 by @NayukiChiba in #8896
- feat: improve ChatUI attachment display by @Soulter in #9134
- fix: enforce ownership when reading ChatUI sessions by @VectorPeak in #9141
- fix: secure project update temp staging by @LIghtJUNction in #9083
- fix: Add retry handling to QQ Official websocket adapter when the send-message API returns None to mitigate transient failures by @shuiping233 in #8979
- fix: adapt MiMo STT to V2.5 models and reject non-WAV audio payloads by @tangtaizong666 in #9118
- test: cover POSIX file URI root preservation by @casama233 in #8906
- feat: add sanitation for malformed tool call names in ToolLoopAgentRunner by @Soulter in #9144
- feat: show model metadata in selectors by @Soulter in #9160
- fix: keep model metadata separate from providers by @Soulter in #9161
- fix: serialize webchat history timestamps as UTC-aware ISO strings by @leafliber in #9159
- feat: add chat token usage indicator by @Soulter in #9162
- fix(webui): sync plugin activation status on enable by @Koishi0425 in #9156
- fix: preserve qq official quoted message context by @Soulter in #9164
- fix: exit MCP anyio contexts in the lifecycle task on disable by @kldsjfas in #9132
- fix(mcp): attempt to fix epoll busy-wait caused by leaked SSE exit stack by @lingyun14beta in #8307
- fix: remove qq official reply id on proactive fallback by @Soulter in #9169
- feat: add event loop diagnostics by @Soulter in #9168
- style: polish snackbar appearance by @Soulter in #9173
- chore: bump version to 4.26.5 by @Soulter in #9174
New Contributors
- @GlowingBrick made their first contribution in #9070
- @tangtaizong666 made their first contribution in #9118
- @casama233 made their first contribution in #8906
- @Koishi0425 made their first contribution in #9156
- @kldsjfas made their first contribution in #9132
Full Changelog: v4.26.4...v4.26.5
v4.26.4
What's Changed
Fixes
- Return clear errors when
astrbot_file_read_toolreceives a directory path instead of reporting a misleading permission error (#9088) - Reduce markdown streaming lag (#9097)
- Resample and downmix WAV files for Tencent Silk encoding (#9100)
- Guard desktop-managed core restart (#9098)
- Update reboot logic (#9073)
- Fix Discord adapter command registration regex being too strict (#9102)
- Reject non-200 download responses (#9085)
- Fix WeCom webhook adapter returning JSON instead of plain text (#9107)
- Preserve raw webhook callback responses for unified webhook routes
- Skip
_unbind_pluginfor inactive plugins during specified plugin reload (#9096) - Apply fallback chat models to background wakeups (#9094)
Chinese
修复
- 修复企业微信、企业微信客服 Webhook、QQ 官方机器人 Webhook 无法正常校验的问题 (#9107)
- 当
astrbot_file_read_tool读取目录路径时返回明确错误,避免误报权限不足 (#9088) - 降低 Markdown 流式输出延迟 (#9097)
- 为腾讯系 IM Silk 编码重采样并下混 WAV 文件 (#9100)
- 保护由桌面端管理的核心重启流程 (#9098)
- 更新重启逻辑 (#9073)
- 修复 Discord 适配器注册命令正则过于严格的问题 (#9102)
- 拒绝非 200 状态码的下载响应 (#9085)
- 指定插件重载时,对未启用插件跳过
_unbind_plugin(#9096) - 后台唤醒主 Agent 时应用 fallback chat models (#9094)
v4.26.3
What's Changed
Features
- Support installing local plugins (#8448)
Fixes
- Preserve fallback models for future tasks (#9054)
- Validate plugin install sources (#9061)
- Paginate knowledge base dashboard lists (#9055)
Styles
- Standardize dashboard dialog styling (#9062)
中文翻译
功能
- 支持安装本地插件 (#8448)
修复
样式
- 统一仪表盘对话框样式 (#9062)
v4.26.2
What's Changed
Fixes
- Preserve image formats and JPEG quality during media conversion (#9019, #9031)
- Fix
DashboardRequestcompatibility for dashboard requests, resolving some IM webhook errors (#9021, #9023) - Normalize streamed message whitespace and strip trailing buffers before sending (#9029)
- Prevent plugin detail marketplace mismatches (#9028)
- Reliably kill shell process trees on Windows timeout (#8822)
- Guard
_KeyRotatorindex bounds (#9040) - Track plugin install source for update checks (#9037)
- Handle MiMo STT audio and reasoning output (#8938)
- Only show plugin updates for newer market versions
- Sanitize orphaned
tool_resultblocks in the Anthropic provider (#8952) - Preserve assistant messages that contain
reasoning_contentwithout content or tool calls (#8483) - Recognize DeepSeek V4 proxy model names with substring matching (#9015)
- Clear KV storage when uninstalling plugins and update related i18n text (#8291)
- Separate plugin and tool activation state (#9048)
- Keep Tab navigation within reset-password inputs in the account dialog (#9049)
- Align OpenAI tool message sanitization (#8350)
- Avoid duplicate
send_message_to_userreplies (#9051)
Documentation
Chores
- Remove the plugin publish issue template (#9050)
中文翻译
修复
- 在媒体转换过程中保留图片格式和 JPEG 质量 (#9019, #9031)
- 修复
DashboardRequest对仪表盘请求的兼容性,解决部分 IM webhook 报错问题 (#9021, #9023) - 统一流式消息片段中的空白字符处理,并在发送前移除尾部缓存 (#9029)
- 防止插件详情与插件市场信息不匹配 (#9028)
- 在 Windows 超时场景下可靠终止 shell 进程树 (#8822)
- 修复
_KeyRotator索引边界检查 (#9040) - 跟踪插件安装来源,用于更新检查 (#9037)
- 处理 MiMo STT 音频和推理输出 (#8938)
- 仅在插件市场版本更新时显示插件更新提示
- 清理 Anthropic 提供商中的孤立
tool_result块 (#8952) - 保留只包含
reasoning_content、但没有内容或工具调用的 assistant 消息 (#8483) - 通过子字符串匹配识别 DeepSeek V4 代理模型名称 (#9015)
- 卸载插件时清理 KV 存储,并更新相关 i18n 文案 (#8291)
- 分离插件和工具的启用状态 (#9048)
- 在账号对话框中,将 Tab 导航限制在重置密码输入框内 (#9049)
- 对齐 OpenAI 工具消息清理逻辑 (#8350)
- 避免重复发送
send_message_to_user回复 (#9051)
文档
杂项
- 移除插件发布 issue 模板 (#9050)
What's Changed
- fix: preserve image formats in media handling by @Soulter in #9019
- docs: update Python requirement to 3.12 by @1sunxiaoshou in #9022
- Docs/add spanish readme by @Fay521 in #9020
- fix: 'DashboardRequest' object has no attribute 'get_data' (#9021) by @moemoli in #9023
- fix: unify handling of whitespace in streamed message segments and ensure trailing buffers are stripped before sending. by @NayukiChiba in #9029
- fix: prevent plugin detail marketplace mismatches by @FuShang114 in #9028
- fix: preserve jpeg quality during conversion by @Soulter in #9031
- fix: reliably kill shell process tree on Windows timeout by @muhamedfazalps in #8822
- fix: _KeyRotator index bounds check by @fan-67 in #9040
- fix: track plugin install source for updates by @Soulter in #9037
- fix: handle MiMo STT audio and reasoning output by @FuShang114 in #8938
- fix: only show plugin update for newer market versions by @FloranceYeh in #9033
- fix: sanitize orphaned tool_result blocks in Anthropic provider by @EmilyCheoh in #8952
- fix: prevent API 400 errors by ensuring assistant messages with reasoning_content but no content or tool_calls are preserved with a placeholder content value by @renchonghan in #8483
- fix: DeepSeek V4 proxy model recognition — substring match instead of exact set match for reasoning_content injection by @irmia2026 in #9015
- Fix: KV storage not cleared on plugin uninstall. Improved cleanup logic and updated i18n strings to indicate database KV data removal. by @leafliber in #8291
- chore: remove plugin publish issue template by @Soulter in #9050
- fix: separate plugin and tool activation state by @Soulter in #9048
- fix: keep Tab navigation within reset-password inputs in account dialog by @Soulter with @Copilot in #9049
- fix: remove tool messages whose tool_call_id no longer matches any preceding assistant tool_calls after context truncation, avoiding 400 errors from unexpected tool_use_ids by @EmilyCheoh in #8350
- fix: avoid duplicate send_message_to_user replies by @Soulter in #9051
- chore: bump version to 4.26.2 by @Soulter in #9052
New Contributors
- @1sunxiaoshou made their first contribution in #9022
- @Fay521 made their first contribution in #9020
- @fan-67 made their first contribution in #9040
- @FloranceYeh made their first contribution in #9033
- @renchonghan made their first contribution in #8483
- @irmia2026 made their first contribution in #9015
- @leafliber made their first contribution in #8291
Full Changelog: v4.26.1...v4.26.2
v4.26.1
What's Changed
修复
What's Changed (EN)
Bug Fixes
v4.26.0
Note:
- WebUI “Config -> System Config” has moved to “Settings” at the bottom of the WebUI sidebar.
- It's recommended to update to v4.25.6 before updating to this version.
提醒:
- WebUI 的“配置 -> 系统配置”已迁移至 WebUI 侧边栏下方的“设置”。
- 建议先升级到 v4.25.6 再升级到此版本。
What's Changed
✨ 新功能
- 后端架构从 Quart 迁移至 FastAPI。新增多个 AstrBot OpenAPI。(#8688)
- 统一全平台消息媒体文件的处理逻辑,提升图片、音频、文件和引用消息媒体的解析一致性,对腾讯系 Silk 格式的语音文件不再使用 pilk 库。(#8764)
- 支持配置模型调用出错时的重试次数,增强稳定性。
- WebUI 新增函数工具的逐工具权限管理,支持在工具面板中查看和切换工具权限。(#8693)
- WebUI 新增浅色、深色、跟随系统三种主题模式,并集中处理系统主题同步。(#8648)
- 重组 WebUI 系统配置页面,将系统配置入口迁移到侧边栏下方的设置区域,并优化相关设置项、自动保存和重启提示体验。(#8777)
- 新增 QQ 官方机器人 WebSocket 适配器扫码绑定流程,可通过 WebUI 一键扫码获取并回填 AppID 与 Secret,同时将 WebSocket 模板标记为推荐。(#8821)
- 增强 QQ 官方机器人群聊能力,支持群消息创建类型,并允许 Webhook 适配器在无缓存
msg_id时主动发送群消息。(#8838, #8841) - 为 OpenAI、Gemini、Anthropic 等模型请求加入可配置的重试机制,并新增请求最大重试次数配置,提升临时网络错误与 5xx 服务端错误下的稳定性。(#8893)
- 现在更新项目时,下载 AstrBot Core 会走 AstrBot 官方托管地址,提高网络稳定性。(#8888)
- 支持在请求中加载 workspace skills,并加固 workspace skill 发现流程。(#8884)
- 新增 Exa Web Search 提供商。(#8973)
- 新增 ElevenLabs TTS API Provider。(commit)
- 新增启动时重置 WebUI 密码的命令行开关,便于无法登录时恢复访问。(commit)
- 新增预发布版本可见性开关。(commit)
- 登录页新增公开版本详情展示。(#8986)
- 备份功能现在会包含 skills 目录。(#8700)
优化
- 加强未来任务所有者校验,避免越权访问定时任务。(#8881)
- 优化知识库上传文件名路径穿越风险。(#8971)
- 优化插件上传文件名路径穿越风险。(#8968)
- 在受限本地文件系统工具中拒绝 hardlink 文件,避免通过工作区 hardlink 别名读写允许目录外的文件。
- 加固沙箱文件传输与 CUA 健康检查流程,降低异常环境下的文件操作风险。(#8840)
- 消息组件日志输出现在会截断过长的 base64 字段,避免日志中出现大体积内联媒体内容。(#8591)
- 群聊上下文现在会展示被引用消息的内容。(commit)
- 对话上下文新增当前星期信息。(#8669)
- 使用原子写入方式保存配置文件,降低写入中断导致配置损坏的概率。(#8793)
- 新增 GitHub 代理
gh.dpik.top,并移除失效代理gh.llkk.cc。(#8772, #8761)
修复
- 修复 aiocqhttp 平台适配器与消息事件处理器在多处 API 调用中缺少
self_id路由参数的问题。(#8779) - 修复生成平台 ID 时可能包含空白字符的问题。(#8768)
- 修复 Gemini Provider 工具定义没有正确传回模型,导致重复工具调用的问题。(#8833)
- 修复提供商源修改 ID 后保存被静默还原的问题。(#8915)
- 修复插件 LLM Tools 开关的归属校验问题,避免误操作其他插件的工具配置。(commit)
- 完善插件命名模式校验和边界场景处理。(commit)
- 修复插件重装后仓库来源丢失的问题。(commit)
- 修复子目录工具的
handler_module_path不一致问题。(#8578) - 修复 run-based tools 的保护逻辑,避免受保护工具在注册流程中被错误丢失。(#8790)
- 修复 persona 工具列表场景下系统工具被移除的问题。(#8908)
- 修复人格设定中将工具和 Skills 从指定列表切回“默认使用全部”后不生效的问题。(#8835)
- 修复新版 MCP 中 Streamable HTTP client 重命名导致的兼容问题,并保持
mcp依赖小于 2。 - 修复本地 Python 工具没有在当前 session workspace 中运行的问题。(#8792)
- 修复静态资源缺失时仍显示 WebUI ready banner 的问题。(#8804)
- 修复 Dashboard 创建文件夹时按 Enter 无法提交的问题。(#8597)
- 修复聊天输入框在非末尾位置使用输入法组合输入时可能丢失字符的问题。(#8811)
- 修复 changelog 弹窗中的锚点链接处理。(#8750)
- 修复 onboarding 平台配置与备份上传相关问题。(#8834)
- 将知识库上下文作为临时 user 内容注入,修复模型请求中知识库上下文角色不准确的问题。(#8904)
- 修复 cron 星期调度规范化问题。(#8984)
- 修复 QQ 官方平台发送消息时 At 组件被丢失的问题。(#8983)
- 修复引用消息中的 image caption 可能重复显示的问题。(#8718)
- 修复 Embedding API version 后缀被错误截断的问题。(#8736)
- 延迟导入 FAISS C 库,避免部分环境启动时进程卡住。(#8696)
- 关闭时主动释放数据库 engine,减少会话和测试环境中的资源残留。(#8650)
- 修复 CLI 版本来源不正确的问题。(#8692)
- 修复执行
astrbot命令时不必要地创建 data 目录的问题。(#8932) - 修复 sdist 构建产物路径,确保 Dashboard artifact 可被包含。(#8933)
- 修复插件页资源 token fallback。(#8970)
- 更新
max_context_length与dequeue_context_length默认值。 - 稳定 FastAPI Dashboard 路由注册测试,兼容 included router 节点。(commit)
- 稳定 Dashboard 路由相关测试,兼容最新 FastAPI 行为。(commit)
What's Changed (EN)
✨ New Features
- Migrated the backend architecture from Quart to FastAPI and added multiple OpenAPI definitions. (#8688)
- Unified media file handling across platforms, improving consistency for images, audio, files, and quoted-message media. Tencent Silk voice files no longer use the pilk library. (#8764)
- Added per-tool permission management for function tools in WebUI, with support for viewing and toggling tool permissions from the tools panel. (#8693)
- Added light, dark, and system theme modes to WebUI, with centralized system theme synchronization. (#8648)
- Reorganized the WebUI system configuration page. The system configuration entry has moved to the Settings area at the bottom of the sidebar, with improved settings, autosave, and restart notices. (#8777)
- Added a QR binding flow for the QQ Official Bot WebSocket adapter. WebUI can now fetch and autofill AppID and Secret through one-click QR setup, and the WebSocket template is marked as recommended. (#8821)
- Enhanced QQ Official Bot group chat support by adding group message creation types and allowing the Webhook adapter to proactively send group messages without a cached
msg_id. (#8838, #8841) - Added configurable retry handling for OpenAI, Gemini, Anthropic, and related model requests, including a maximum request retry setting for better stability during temporary network errors and 5xx server errors. (#8893)
- AstrBot Core downloads now use AstrBot's officially hosted source during project updates, improving network stability. (#8888)
- Added support for loading workspace skills in requests and hardened workspace skill discovery. (#8884)
- Added Exa as a web search provider. (#8973)
- Added the ElevenLabs TTS API provider. (commit)
- Added a startup flag to reset the WebUI password, making it easier to recover access when login is unavailable. (commit)
- Added a prerelease visibility toggle. (commit)
- Added public version details to the login page. (#8986)
- Backups now include the skills directory. (#8700)
Improvements
- Strengthened Future Task owner checks to prevent unauthorized scheduled-task access. (#8881)
- Hardened knowledge base upload filename handling against path traversal risks. (#8971)
- Hardened plugin upload filename handling against path traversal risks. (#8968)
- Rejected hardlinked files in restricted local filesystem tools to prevent workspace hardlink aliases from reading or writing files outside allowed directories.
- Hardened sandbox file transfers and CUA health checks to reduce file-operation risks in abnormal environments. ([#8840](https://githu...
v4.26.0-beta.12
What's Changed
- fix: respect existing provider source IDs in config so that manually edited IDs are preserved on save instead of being silently reset. (#8915) (42ca89d)
- fix: created unnecessary data dir when executing astrbot command (#8932) (39d4253)
- fix: add sdist build artifact path to allow dashboard artifact to be included (#8933) (05148df)
v4.25.6-rc.3
v4.25.6-rc.2
Release v4.25.6-rc.2