- [更新日志(简体中文)](#chinese)
- [Changelog(English)](#english)

<a id="chinese"></a>

## What's Changed

### 新增

- 新增 `/stats` 命令，可查看当前会话的 Token 使用统计，并按总量、输入（缓存）、输入（其他）与输出拆分展示。（[#7831](https://github.com/AstrBotDevs/AstrBot/pull/7831)）
- 新增 Firecrawl Web 搜索与网页提取工具，支持搜索结果处理、网页内容提取、会话管理、请求校验与相关测试。（[#7764](https://github.com/AstrBotDevs/AstrBot/pull/7764)）
- 微信客服文本消息新增 15 秒内去重，减少重复消息处理。（[#7788](https://github.com/AstrBotDevs/AstrBot/pull/7788)）

### 优化

- 优化 Provider 配置界面性能与响应式显示，改善相关组件的字体和布局体验。（[#7772](https://github.com/AstrBotDevs/AstrBot/pull/7772)）
- 优化统计页 TPM 计算逻辑，TPM 现在仅统计输出 Token，并更新相关文案。（[#7827](https://github.com/AstrBotDevs/AstrBot/pull/7827)）
- 优化 OpenAI 兼容 Provider 的空 assistant 消息过滤逻辑，流式与非流式路径统一处理空字符串和空列表内容，避免严格 Provider 拒绝历史消息。（[#7758](https://github.com/AstrBotDevs/AstrBot/pull/7758)）

### 修复

- 修复 DeepSeek v4 与 reasoning content 相关处理，支持空字符串 reasoning 内容，并在 assistant 消息中保留 reasoning 字段。（[#7823](https://github.com/AstrBotDevs/AstrBot/pull/7823), [#7830](https://github.com/AstrBotDevs/AstrBot/pull/7830)）
- 修复 OpenRouter reasoning 字段属性名不正确的问题。（[#7821](https://github.com/AstrBotDevs/AstrBot/pull/7821)）
- 修复超大图片未压缩可能导致后续处理异常的问题，并复用图片最大尺寸检查工具。（[#7807](https://github.com/AstrBotDevs/AstrBot/pull/7807)）
- 修复 MiniMax TTS 默认输出 MP3 导致 QQ 官方平台语音转换出现 RIFF 错误的问题，默认输出格式改为 WAV。（[#7797](https://github.com/AstrBotDevs/AstrBot/pull/7797)）
- 修复 Computer 沙盒图片下载未按图片发送的问题。（[#7785](https://github.com/AstrBotDevs/AstrBot/pull/7785)）
- 修复 Windows 环境下部分 HTTPS 请求证书校验失败的问题，使用 certifi SSL context 提升兼容性。（[#7778](https://github.com/AstrBotDevs/AstrBot/pull/7778)）
- 修复非安全上下文或部分对话框中复制功能不可用的问题，抽取共享剪贴板工具并增加 fallback。（[#7747](https://github.com/AstrBotDevs/AstrBot/pull/7747)）
- 修复文件上传可能存在路径穿越的问题，并清理上传文件名中的 NUL 字节。（[#7751](https://github.com/AstrBotDevs/AstrBot/pull/7751)）

<a id="english"></a>

## What's Changed (EN)

### New Features

- Added a `/stats` command to show token usage for the current conversation, including total tokens, input cached tokens, input other tokens, and output tokens. ([#7831](https://github.com/AstrBotDevs/AstrBot/pull/7831))
- Added Firecrawl web search and web extract tools with result handling, content extraction, session management, payload validation, and tests. ([#7764](https://github.com/AstrBotDevs/AstrBot/pull/7764))
- Added 15-second deduplication for WeChat kefu text messages to reduce duplicate message handling. ([#7788](https://github.com/AstrBotDevs/AstrBot/pull/7788))

### Improvements

- Improved the Provider configuration UI performance and responsive layout, including font and component styling updates. ([#7772](https://github.com/AstrBotDevs/AstrBot/pull/7772))
- Updated stats-page TPM calculation so TPM only counts output tokens, with matching label updates. ([#7827](https://github.com/AstrBotDevs/AstrBot/pull/7827))
- Improved empty assistant message filtering for OpenAI-compatible providers by sharing the logic across streaming and non-streaming paths and handling empty string or empty list content. ([#7758](https://github.com/AstrBotDevs/AstrBot/pull/7758))

### Bug Fixes

- Fixed DeepSeek v4 and reasoning content handling by supporting empty-string reasoning content and preserving the reasoning field in assistant messages. ([#7823](https://github.com/AstrBotDevs/AstrBot/pull/7823), [#7830](https://github.com/AstrBotDevs/AstrBot/pull/7830))
- Fixed the reasoning field attribute used for OpenRouter. ([#7821](https://github.com/AstrBotDevs/AstrBot/pull/7821))
- Fixed oversized image handling by downscaling large images and sharing the image max-size check helper. ([#7807](https://github.com/AstrBotDevs/AstrBot/pull/7807))
- Fixed MiniMax TTS output for QQ Official voice conversion by changing the default output format from MP3 to WAV. ([#7797](https://github.com/AstrBotDevs/AstrBot/pull/7797))
- Fixed Computer sandbox image downloads so they are sent as images. ([#7785](https://github.com/AstrBotDevs/AstrBot/pull/7785))
- Fixed HTTPS certificate verification issues on Windows by using a certifi SSL context. ([#7778](https://github.com/AstrBotDevs/AstrBot/pull/7778))
- Fixed copy actions in insecure contexts and dialogs by extracting a shared clipboard utility with fallback behavior. ([#7747](https://github.com/AstrBotDevs/AstrBot/pull/7747))
- Fixed path traversal risks in file uploads and removed embedded NUL bytes from upload filenames. ([#7751](https://github.com/AstrBotDevs/AstrBot/pull/7751))
