## What's Changed

### 新增

- 微信个人号开放平台适配器新增“对方正在输入...”状态控制能力。（[#6977](https://github.com/AstrBotDevs/AstrBot/pull/6977)）
- 配置管理页支持从现有配置复制生成新配置，减少重复创建成本。（[#6785](https://github.com/AstrBotDevs/AstrBot/pull/6785)）

### 优化

- Chat Provider text_chat 接口新增 `tool_choice` 参数，并为模型空响应引入统一的 `EmptyModelOutputError` 与增强重试逻辑，改善 “skills-like” 工具调用模式下的稳定性。（[#7101](https://github.com/AstrBotDevs/AstrBot/pull/7101)、[#7104](https://github.com/AstrBotDevs/AstrBot/pull/7104)）
- SSL 证书配置错误时自动回退到非 SSL 模式，而不是程序直接退出。（[#7102](https://github.com/AstrBotDevs/AstrBot/pull/7102)）

### 修复

- 修复 个人微信 Bot 无法发送多媒体文件与 CDN 上传地址兼容性问题，适配新的 `upload_full_url` 返回格式。[#7066](https://github.com/AstrBotDevs/AstrBot/pull/7066)）
- 修复 个人微信 连接超时 / 中断后直接导致微信适配器实例退出的问题，增强了重试机制。（[#7041](https://github.com/AstrBotDevs/AstrBot/pull/7041)
- 修复 WebUI Skills 上传对多技能压缩包的处理，允许单个 zip 包内包含多个技能。（[#7070](https://github.com/AstrBotDevs/AstrBot/pull/7070)）
- 修复 OpenAI 嵌入模型接口处理相关问题。[#7026](https://github.com/AstrBotDevs/AstrBot/pull/7026)）
- QQ 机器人发送语音或音频文件没有响应 （[#7007](https://github.com/AstrBotDevs/AstrBot/pull/7007)）
- ChatUI 切换到某个会话，刷新后错误地跳转到最新会话 （[#6535](https://github.com/AstrBotDevs/AstrBot/pull/6535)）
- 修复百炼 `qwen3-rerank` 的请求负载兼容性问题，并忽略不受支持的 `return_documents` 参数。（[#6222](https://github.com/AstrBotDevs/AstrBot/pull/6222)）
- 修复 QQ 下，发送唤醒前缀后，多次空触发 LLM 的问题。（[#6893](https://github.com/AstrBotDevs/AstrBot/pull/6893)）
- 修复 GSVI TTS 调用方式与鉴权头构造问题，并补充默认配置值，适配新的 `/infer_single` API。（[#7083](https://github.com/AstrBotDevs/AstrBot/pull/7083)）
- 修复缺失 `httpx` SOCKS 代理依赖的问题，恢复 SOCKS 代理支持。（[#7093](https://github.com/AstrBotDevs/AstrBot/pull/7093)）
- 修复企业微信客服发送失败时无法回退普通消息接口的问题。（[#7012](https://github.com/AstrBotDevs/AstrBot/pull/7012)）
- 修复 WebUI 对话管理详情页无法滚动的问题。[#6972](https://github.com/AstrBotDevs/AstrBot/pull/6972)）
- 修复 Telegram 附件消息 caption 丢失的问题。（[#7020](https://github.com/AstrBotDevs/AstrBot/pull/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](https://github.com/AstrBotDevs/AstrBot/pull/7101)、[#7104](https://github.com/AstrBotDevs/AstrBot/pull/7104)）
- Added SSL config resolution and validation for Dashboard, with automatic fallback to non-SSL mode when the certificate setup is invalid.（[#7102](https://github.com/AstrBotDevs/AstrBot/pull/7102)）
- Added the ability to create a new config by copying an existing one in the config management page.（[#6785](https://github.com/AstrBotDevs/AstrBot/pull/6785)）
- Updated the QQ Official adapter to support asynchronous message parsing and attachment preparation.（[#7007](https://github.com/AstrBotDevs/AstrBot/pull/7007)）
- Added typing-state control ("user is typing...") for the Weixin OC adapter.（[#6977](https://github.com/AstrBotDevs/AstrBot/pull/6977)）

### Improvements

- Refactored Chat UI routing and layout so the UI mode is URL-driven and related state is scoped to `sessionStorage`.（[#6535](https://github.com/AstrBotDevs/AstrBot/pull/6535)）
- Improved WebUI polish by centering extension-page toast hints and making code blocks more readable in dark mode.（[#6043](https://github.com/AstrBotDevs/AstrBot/pull/6043)、[#7014](https://github.com/AstrBotDevs/AstrBot/pull/7014)）

### Bug Fixes

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