camera-2018
9683abeb19
feat(telegram): supports sendMessageDraft API ( #5726 )
...
* feat(telegram): 使用 sendMessageDraft API 实现私聊流式输出
- 新增 _send_message_draft 方法封装 Telegram Bot API sendMessageDraft
- 私聊流式输出使用 sendMessageDraft 推送草稿动画,群聊保留 edit_message_text 回退
- 使用独立异步发送循环 (_draft_sender_loop) 按固定间隔推送最新缓冲区内容,
完全解耦 token 到达速度与 API 网络延迟
- 流式结束后发送真实消息保留最终内容(draft 是临时的)
- 使用模块级递增 draft_id 替代随机生成,确保 Telegram 端动画连续性
* fix(telegram): convert draft text to Markdown before sending message draft
* chore(telegram): telegram 适配器重构
- 提取公共方法
- 有新 token 到达时触发流式
- 生成结束后清除draft内容
- 默认draft发送md格式
* style(telegram): ruff format
* style(telegram): ruff check
---------
Co-authored-by: Soulter <905617992@qq.com >
2026-03-04 23:11:57 +08:00
エイカク
a9c16febf4
fix: 工程化收敛并移除 ASYNC230/ASYNC240 忽略 ( #5729 )
...
* test(skills): align sandbox cache tests with readonly behavior
* ci(release): enforce core quality gate before publish
* ci: enforce locked dependency installs in workflows
* security: remove curl-pipe-shell installs
* chore: align project python baseline to 3.12
* ci(dashboard): add explicit typecheck gate
* chore(pre-commit): align ruff hook version with project
* ci(codeql): add javascript-typescript analysis
* chore(ruff): defer py312 migration lint rules
* fix: resolve ruff violations without new ignores
* fix: resolve ASYNC230 and ASYNC240 without ignores
* fix(auth): replace utcnow with timezone-aware UTC now
* fix: avoid blocking file read in file_to_base64
2026-03-04 13:51:00 +09:00
Soulter
bbf61239ad
fix(kook): remove debug logging for received messages and heartbeat responses
2026-03-03 15:54:45 +08:00
時壹
2a7745c767
fix: only allow HTTPS URLs to pass through directly in LINE adapter ( #5697 )
2026-03-03 15:14:08 +08:00
shuiping233
866e546b59
feat: integrates KOOK platform adapter ( #5658 )
...
* feat: 将kook适配器插件并入astrbot官方适配器目录中
* refactor: 重命名函数名为 _warp_message
* refactor: 使用Protocol替换Union类型
* bugfix: 修复base64前缀处理问题
* refactor: 抛出的错误不再包含"[kook]"
* refactor: 添加读取本地文件时的路径安全检查
* refactor: 卡片消息解析失败时会打印错误信息
* refactor: 添加处理接收卡片消息内的图片url时的安全校验
* refactor: 安全处理ws需要重连的情况
* Revert "refactor: 使用Protocol替换Union类型"
This reverts commit 58e0dceeb20c3d7dddb16f623fd3bbdcfa632173.
* feat: 添加获取机器人名称的实现
* refactor: 让send_by_session发送主动消息时正确传入当前消息链的文本消息内容
* refactor: 统一处理适配器配置相关内容,处理仪表盘出传入配置,并添加仪表盘的kook适配器配置页面的i18n文本
* unittest: 添加kook适配器的单元测试,虽然没覆盖多少单测
* unittest: TEST_DATA_DIR用更安全的路径
* refactor: KookConfig使用了更好的默认值处理方式
* refactor: 移除kook_adapter 的config字段重复定义
* refactor: 隐藏获取kook gateway时url里的token,防止把token打印出来
* refactor: KookConfig.pretty_jsons使用*来屏蔽token内容
* bugfix: 修复主动发送消息时,调用了父方法`send_by_session`可能导致指标被重复上传的bug
* refactor: 优化upload_asset的路径处理报错
* bugfix: 修复kook ws心跳间隔可能会出现负数时间的bug
* refactor: KookClient移到KookPlatformAdapter.__init__里初始化
* bugfix: 修复处理base64 url 多替换了/而报错的bug
* refactor: kook适配器上传文件失败时,会抛出错误
* chore: 移除一条注释
* refactor: 移除没用的return
* refactor: 即使消息链中有消息发送失败了,也尽可能将其他消息发送出去,并把报错信息也发送出去
* refactor: 增强上传任务失败时的错误处理,使其发生错误时尽力而为发送其余消息
* refactor: 发送到消息频道的报错消息加了个⚠️ ,小巧思这块?
* refactor: 咱们在写适配器啊,要什么小巧思呢,小巧思给上游插件开发弄不好么)
* refactor: enhance Kook adapter with kmarkdown parsing and improve file URL handling
* refactor: extract card message parsing logic into a separate method
* feat: add kook_bot_nickname configuration to ignore messages from specific nicknames
* refactor: remove commented-out code and clean up file upload error handling
* fix: remove redundant prefix handling for file URLs in asset upload
---------
Co-authored-by: Soulter <905617992@qq.com >
2026-03-03 15:08:16 +08:00
LIghtJUNction
b8c73430fb
Revert "可选后端,实现前后端分离" ( #5536 )
2026-02-27 22:02:37 +08:00
LIghtJUNction
3141ed52bd
Merge branch 'feat/optional-backend' into master
2026-02-27 21:53:56 +08:00
Soulter
63ff234f10
feat: implement websockets transport mode selection for chat ( #5410 )
...
* feat: implement websockets transport mode selection for chat
- Added transport mode selection (SSE/WebSocket) in the chat component.
- Updated conversation sidebar to include transport mode options.
- Integrated transport mode handling in message sending logic.
- Refactored message sending functions to support both SSE and WebSocket.
- Enhanced WebSocket connection management and message handling.
- Updated localization files for transport mode labels.
- Configured Vite to support WebSocket proxying.
* feat(webchat): refactor message parsing logic and integrate new parsing function
* feat(chat): add websocket API key extraction and scope validation
2026-02-27 14:02:10 +08:00
Soulter
476c01469f
fix(line): line adapter does not appear in the add platform dialog
...
fixes : #5477
2026-02-26 15:26:37 +08:00
CCCCCCTV
3eb15089af
fix(telegram): avoid duplicate message_thread_id in streaming ( #5430 )
2026-02-25 19:53:17 +08:00
Dt8333
c5b23d12a8
fix: 修复Pyright静态类型检查报错 ( #5437 )
...
* refactor: 修正 Sqlite 查询、下载回调、接口重构与类型调整
* feat: 为 OneBotClient 增加 CallAction 协议与异步调用支持
2026-02-25 19:49:16 +08:00
時壹
78660da995
fix: clear markdown field when sending media messages via QQ Official Platform ( #5445 )
...
* fix: clear markdown field when sending media messages via QQ Official API
* refactor: use pop() to remove markdown key instead of setting None
2026-02-25 19:45:27 +08:00
Soulter
c24de24ca4
chore: ruff format
2026-02-24 23:12:18 +08:00
Yunhao Cao
b54b4c79ed
fix: Telegram voice message format (OGG instead of WAV) causing issues with OpenAI STT API ( #5389 )
2026-02-24 23:11:56 +08:00
Soulter
a5ae27cae0
fix(aiocqhttp): enhance shutdown process for aiocqhttp adapter ( #5412 )
2026-02-24 22:07:42 +08:00
Helian Nuits
29dbd085d4
fix(core): 优化 File 组件处理逻辑并增强 OneBot 驱动层路径兼容性 ( #5391 )
...
* fix(core): 优化 File 组件处理逻辑并增强 OneBot 驱动层路径兼容性
原因 (Necessity):
1. 内核一致性:AstrBot 内核的 Record 和 Video 组件均具备识别 `file:///` 协议头的逻辑,但 File 组件此前缺失此功能,导致行为不统一。
2. OneBot 协议合规:OneBot 11 标准要求本地文件路径必须使用 `file:///` 协议头。此前驱动层未对裸路径进行自动转换,导致发送本地文件时常触发 retcode 1200 (识别URL失败) 错误。
3. 容器环境适配:在 Docker 等路径隔离环境下,裸路径更容易因驱动或协议端的解析歧义而失效。
更改 (Changes):
- [astrbot/core/message/components.py]:
- 在 File.get_file() 中增加对 `file:///` 前缀的识别与剥离逻辑,使其与 Record/Video 组件行为对齐。
- [astrbot/core/platform/sources/aiocqhttp/aiocqhttp_message_event.py]:
- 在发送文件前增加自动修正逻辑:若路径为绝对路径且未包含协议头,驱动层将自动补全 `file:///` 前缀。
- 对 http、base64 及已有协议头,确保不干扰原有的正常传输逻辑。
影响 (Impact):
- 以完全兼容的方式增强了文件发送的鲁棒性。
- 解决了插件在发送日志等本地生成的压缩包时,因路径格式不规范导致的发送失败问题。
* refactor(core): 根据 cr 建议,规范化文件 URI 生成与解析逻辑,优化跨平台兼容性
原因 (Necessity):
1. 修复原生路径与 URI 转换在 Windows 下的不对称问题。
2. 规范化 file: 协议头处理,确保符合 RFC 标准并能在 Linux/Windows 间稳健切换。
3. 增强协议判定准确度,防止对普通绝对路径的误处理。
更改 (Changes):
- [astrbot/core/platform/sources/aiocqhttp]:
- 弃用手动拼接,改用 `pathlib.Path.as_uri()` 生成标准 URI。
- 将协议检测逻辑从前缀匹配优化为包含性检测 ("://")。
- [astrbot/core/message/components]:
- 重构 `File.get_file` 解析逻辑,支持对称处理 2/3 斜杠格式。
- 针对 Windows 环境增加了对 `file:///C:/` 格式的自动修正,避免 `os.path` 识别失效。
- [data/plugins/astrbot_plugin_logplus]:
- 在直接 API 调用中同步应用 URI 规范化处理。
影响 (Impact):
- 解决 Docker 环境中因路径不规范导致的 "识别URL失败" 报错。
- 提升了本体框架在 Windows 系统下的文件操作鲁棒性。
2026-02-24 21:03:06 +08:00
whatevertogo
5af5ad9e36
test: add comprehensive tests for message event handling ( #5355 )
...
* test: add comprehensive tests for message event handling
- Add AstrMessageEvent unit tests (688 lines)
- Add AstrBotMessage unit tests
- Enhance smoke tests with message event scenarios
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
* fix: improve message type handling and add defensive tests
---------
Co-authored-by: whatevertogo <whatevertogo@users.noreply.github.com >
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-02-23 23:36:39 +08:00
Soulter
a56e43d17e
fix: chatui cannot persist file segment ( #5386 )
2026-02-23 22:02:49 +08:00
Soulter
3678688433
chore: ruff format
2026-02-22 16:51:46 +08:00
Lovely Moe Moli
0c03177840
fix: 修复 aiohttp 版本过新导致 qq-botpy 报错的问题 ( #5316 )
2026-02-22 16:45:28 +08:00
evpeople
478cc32de1
Feat/telegram command alias register #5233 ( #5234 )
...
* feat: support registering command aliases for Telegram
Now when registering commands with aliases, all aliases will be
registered as Telegram bot commands in addition to the main command.
Example:
@register_command(command_name="draw", alias={"画", "gen"})
Now /draw, /画, and /gen will all appear in the Telegram command menu.
* feat(telegram): add duplicate command name warning when registering commands
Log a warning when duplicate command names are detected during Telegram
command registration to help identify configuration conflicts.
2026-02-21 23:30:46 +08:00
Lovely Moe Moli
144a53f4b3
fix: qq official guild message send error ( #5287 )
...
* fix: qq official guild message send error
* Update astrbot/core/platform/sources/qqofficial/qqofficial_message_event.py
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
---------
Co-authored-by: Soulter <37870767+Soulter@users.noreply.github.com >
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2026-02-21 17:24:25 +08:00
Dream Tokenizer
bf3fa3e918
fix: 改进微信公众号被动回复处理机制,引入缓冲与分片回复,并优化超时行为 ( #5224 )
...
* 修复wechat official 被动回复功能
* ruff format
---------
Co-authored-by: Soulter <905617992@qq.com >
2026-02-19 17:42:38 +08:00
Chiu Chun-Hsien
a2b61e2ab8
refactor: extract Voice_messages_forbidden fallback into shared helper with typed BadRequest exception ( #5204 )
...
- Add _send_voice_with_fallback helper to deduplicate voice forbidden handling
- Catch telegram.error.BadRequest instead of bare Exception with string matching
- Add text field to Record component to preserve TTS source text
- Store original text in Record during TTS conversion for use as document caption
- Skip _send_chat_action when chat_id is empty to avoid unnecessary warnings
2026-02-18 21:45:19 +08:00
Soulter
3476afce41
feat: supports send markdown message in qqofficial ( #5173 )
...
* feat: supports send markdown message in qqofficial
closes : #1093 #918 #4180 #4264
* ruff format
2026-02-18 00:35:52 +08:00
Soulter
f44961d065
feat: add LINE platform support with adapter and configuration ( #5085 )
2026-02-13 13:01:48 +08:00
stevessr
473e01aadd
feat: add i18n supports for custom platform adapters ( #5045 )
...
* Feat: 为插件提供的适配器的元数据&i18n提供数据通路
* chore: update docstrings with pull request references
Added references to pull request 5045 in docstrings.
---------
Co-authored-by: Soulter <37870767+Soulter@users.noreply.github.com >
2026-02-12 21:49:12 +08:00
Soulter
d2de0ea5ad
feat: QQ 官方机器人平台支持主动推送消息、私聊场景下支持接收文件 ( #5066 )
...
* feat: QQ 官方机器人平台支持主动推送消息、私聊场景下支持接收文件
* feat: enhance QQOfficialWebhook to remember session scenes for group, channel, and friend messages
2026-02-12 19:07:53 +08:00
evpeople
30a0098b2a
feat: add send_chat_action for Telegram platform adapter ( #5037 )
...
* feat: add send_chat_action for Telegram platform adapter
Add typing/upload indicator when sending messages via Telegram.
- Added _send_chat_action helper method for sending chat actions
- Send appropriate action (typing, upload_photo, upload_document, upload_voice)
before sending different message types
- Support streaming mode with typing indicator
- Support supergroup with message_thread_id
* refactor(telegram): extract chat action helpers and add throttling
- Add ACTION_BY_TYPE mapping for message type to action priority
- Add _get_chat_action_for_chain() to determine action from message chain
- Add _send_media_with_action() for upload → send → restore typing pattern
- Add _ensure_typing() helper for typing status
- Add chat action throttling (0.5s) in streaming mode to avoid rate limits
- Update type annotation to ChatAction | str for better static checking
* feat(telegram): implement send_typing method for Telegram platform
---------
Co-authored-by: Soulter <905617992@qq.com >
2026-02-12 14:46:06 +08:00
Soulter
9d93bda3fe
feat: temporary file handling and introduce TempDirCleaner ( #5026 )
...
* feat: temporary file handling and introduce TempDirCleaner
- Updated various modules to use `get_astrbot_temp_path()` instead of `get_astrbot_data_path()` for temporary file storage.
- Renamed temporary files for better identification and organization.
- Introduced `TempDirCleaner` to manage the size of the temporary directory, ensuring it does not exceed a specified limit by deleting the oldest files.
- Added configuration option for maximum temporary directory size in the dashboard.
- Implemented tests for `TempDirCleaner` to verify cleanup functionality and size management.
* ruff
2026-02-12 01:04:48 +08:00
エイカク
a8dda20a30
fix: 提升打包版桌面端启动稳定性并优化插件依赖处理 ( #5031 )
...
* fix(desktop): rotate electron and backend logs
* refactor(desktop): centralize log rotation defaults and debug fs errors
* fix(desktop): harden rotation fs ops and buffer backend log writes
* refactor(desktop): extract buffered logger and reduce sync stat calls
* refactor(desktop): simplify rotation flow and harden logger config
* fix(desktop): make app logging async and flush-safe
* fix: harden app log path switching and debug-gated rotation errors
* fix: cap buffered log chunk size during path switch
* fix: avoid redundant plugin reinstall and upgrade electron
* fix: stop webchat tasks cleanly and bind packaged backend to localhost
* fix: unify platform shutdown and await webchat listener cleanup
* fix: improve startup logs for dashboard and onebot listeners
* fix: revert extra startup service logs
* fix: harden plugin import recovery and webchat listener cleanup
* fix: pin dashboard ci node version to 24.13.0
* fix: avoid duplicate webchat listener cleanup on terminate
* refactor: clarify platform task lifecycle management
* fix: continue platform shutdown when terminate fails
2026-02-12 01:04:04 +08:00
Soulter
80e1231e9a
feat: adding support for media and quoted message attachments for feishu ( #5018 )
2026-02-11 13:26:27 +08:00
Soulter
7193454d50
feat: enhance WecomAIBotAdapter and WecomAIBotMessageEvent for improved streaming message handling ( #5000 )
...
fixes : #3965
2026-02-09 22:30:24 +08:00
Soulter
d204b92877
feat: 企业微信智能机器人支持主动消息推送以及发送视频、文件等消息类型支持 ( #4999 )
2026-02-09 22:16:44 +08:00
Soulter
04faf26140
feat: 企业微信应用 支持主动消息推送,并优化企微应用、微信公众号、微信客服音频相关的处理 ( #4998 )
2026-02-09 22:15:11 +08:00
Soulter
06b2c7cb16
feat: enhance Dingtalk adapter with active push message and image, video, audio message type ( #4986 )
2026-02-09 15:17:55 +08:00
Dt8333
7dd95d8a59
chore: auto ann fix by ruff ( #4903 )
...
* chore: auto fix by ruff
* refactor: 统一修正返回类型注解为 None/bool 以匹配实现
* refactor: 将 _get_next_page 改为异步并移除多余的请求错误抛出
* refactor: 将 get_client 的返回类型改为 object
* style: 为 LarkMessageEvent 的相关方法添加返回类型注解 None
---------
Co-authored-by: Soulter <37870767+Soulter@users.noreply.github.com >
2026-02-09 00:22:24 +08:00
DD斩首
dbe8e33c4b
feat(telegram): 添加媒体组(相册)支持 / add media group (album) support ( #4893 )
...
* feat(telegram): 添加媒体组(相册)支持 / add media group (album) support
## 功能说明
支持 Telegram 的媒体组消息(相册),将多张图片/视频合并为一条消息处理,而不是分散成多条消息。
## 主要改动
### 1. 初始化媒体组缓存 (__init__)
- 添加 `media_group_cache` 字典存储待处理的媒体组消息
- 使用 2.5 秒超时收集媒体组消息(基于社区最佳实践)
- 最大等待时间 10 秒(防止永久等待)
### 2. 消息处理流程 (message_handler)
- 检测 `media_group_id` 判断是否为媒体组消息
- 媒体组消息走特殊处理流程,避免分散处理
### 3. 媒体组消息缓存 (handle_media_group_message)
- 缓存收到的媒体组消息
- 使用 APScheduler 实现防抖(debounce)机制
- 每收到新消息时重置超时计时器
- 超时后触发统一处理
### 4. 媒体组合并处理 (process_media_group)
- 从缓存中取出所有媒体项
- 使用第一条消息作为基础(保留文本、回复等信息)
- 依次添加所有图片、视频、文档到消息链
- 将合并后的消息发送到处理流程
## 技术方案论证
Telegram Bot API 在处理媒体组时的设计限制:
1. 将媒体组的每个消息作为独立的 update 发送
2. 每个 update 带有相同的 `media_group_id`
3. **不提供**组的总数、结束标志或一次性完整组的机制
因此,bot 必须自行收集消息,并通过硬编码超时(timeout/delay)等待可能延迟到达的消息。
这是目前唯一可靠的方案,被官方实现、主流框架和开发者社区广泛采用。
### 官方和社区证据:
- **Telegram Bot API 服务器实现(tdlib)**:明确指出缺少结束标志或总数信息
https://github.com/tdlib/telegram-bot-api/issues/643
- **Telegram Bot API 服务器 issue**:讨论媒体组处理的不便性,推荐使用超时机制
https://github.com/tdlib/telegram-bot-api/issues/339
- **Telegraf(Node.js 框架)**:专用媒体组中间件使用 timeout 控制等待时间
https://github.com/DieTime/telegraf-media-group
- **StackOverflow 讨论**:无法一次性获取媒体组所有文件,必须手动收集
https://stackoverflow.com/questions/50180048/telegram-api-get-all-uploaded-photos-by-media-group-id
- **python-telegram-bot 社区**:确认媒体组消息单独到达,需手动处理
https://github.com/python-telegram-bot/python-telegram-bot/discussions/3143
- **Telegram Bot API 官方文档**:仅定义 `media_group_id` 为可选字段,不提供获取完整组的接口
https://core.telegram.org/bots/api#message
## 实现细节
- 使用 2.5 秒超时收集媒体组消息(基于社区最佳实践)
- 最大等待时间 10 秒(防止永久等待)
- 采用防抖(debounce)机制:每收到新消息重置计时器
- 利用 APScheduler 实现延迟处理和任务调度
## 测试验证
- ✅ 发送 5 张图片相册,成功合并为一条消息
- ✅ 保留原始文本说明和回复信息
- ✅ 支持图片、视频、文档混合的媒体组
- ✅ 日志显示 Processing media group <media_group_id> with 5 items
## 代码变更
- 文件:astrbot/core/platform/sources/telegram/tg_adapter.py
- 新增代码:124 行
- 新增方法:handle_media_group_message(), process_media_group()
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
* refactor(telegram): 优化媒体组处理性能和可靠性
根据代码审查反馈改进:
1. 实现 media_group_max_wait 防止无限延迟
- 跟踪媒体组创建时间,超过最大等待时间立即处理
- 最坏情况下 10 秒内必定处理,防止消息持续到达导致无限延迟
2. 移除手动 job 查找优化性能
- 删除 O(N) 的 get_jobs() 循环扫描
- 依赖 replace_existing=True 自动替换任务
3. 重用 convert_message 减少代码重复
- 统一所有媒体类型转换逻辑
- 未来添加新媒体类型只需修改一处
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
* fix(telegram): handle missing message in media group processing and improve logging messages
---------
Co-authored-by: Ubuntu <ubuntu@localhost.localdomain >
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com >
Co-authored-by: Soulter <905617992@qq.com >
2026-02-08 13:22:45 +08:00
Soulter
5e5207da95
perf: optimize webchat and wecom ai queue lifecycle ( #4941 )
...
* perf: optimize webchat and wecom ai queue lifecycle
* perf: enhance webchat back queue management with conversation ID support
2026-02-07 14:03:33 +08:00
Soulter
22a109c2ae
feat: implement feishu / lark media file handling utilities for file, audio and video processing ( #4938 )
...
* feat: implement media file handling utilities for audio and video processing
* feat: refactor file upload handling for audio and video in LarkMessageEvent
* feat: add cleanup for failed audio and video conversion outputs in media_utils
* feat: add utility methods for sending messages and uploading files in LarkMessageEvent
2026-02-07 12:40:05 +08:00
LIghtJUNction
437c186a66
类型标注
2026-02-06 12:37:41 +08:00
LIghtJUNction
75ee46715a
支持ipv6并完善astrbot run子命令
...
* 默认host修改为::,同时新增两个环境变量DASHBOARD_HOST,DASHBOARD_ENABLE,和DASHBOARD_PORT对齐
* feat: systemd support (#4880 )
* fix: pyright lint (#4874 )
* feat: 将 MessageSession 的 platform_id 改为 init=False,实例化时无需传入
Co-authored-by: aider (openai/gpt-5.2) <aider@aider.chat >
* refactor: 将 isinstance 检查改为元组、将默认模型值设为空字符串、将类型注解改为 Any 并导入
* refactor: 为 _serialize_job 增加返回类型注解 dict
* fix: 使用 cast 获取百度 AIP 的 msg 并对 psutil_addr 引入 type: ignore
Co-authored-by: aider (openai/gpt-5.2) <aider@aider.chat >
* refactor: 引入 _AddrWithPort 协议并替换 conn.laddr 的 cast
Co-authored-by: aider (openai/gpt-5.2) <aider@aider.chat >
* fix: 在构建 AstrBotMessage 时对 ctx.channel 可能为 None 进行兜底处理
Co-authored-by: aider (openai/gpt-5.2) <aider@aider.chat >
---------
Co-authored-by: aider (openai/gpt-5.2) <aider@aider.chat >
* fix: TypeError when MCP schema type is a list (#4867 )
* Fix TypeError when MCP schema type is a list
Fixes crash in Gemini native tools with VRChat MCP.
* Refactor: avoid modifying schema in place per feedback
* Fix formatting and cleanup comments
* docs: update watashiwakoseinodesukara
Removed duplicate text and added a new image.
* 修复/跨平台一致性
* 琐事/类型标注和一些简单错误修正
* 修复/检查端口时候包含ipv6
* 修复/enable变量的赋值逻辑
---------
Co-authored-by: Dt8333 <25431943+Dt8333@users.noreply.github.com >
Co-authored-by: aider (openai/gpt-5.2) <aider@aider.chat >
Co-authored-by: boushi1111 <95118141+boushi1111@users.noreply.github.com >
Co-authored-by: Soulter <37870767+Soulter@users.noreply.github.com >
2026-02-06 02:46:16 +08:00
Dt8333
f3397f6f08
fix: pyright lint ( #4874 )
...
* feat: 将 MessageSession 的 platform_id 改为 init=False,实例化时无需传入
Co-authored-by: aider (openai/gpt-5.2) <aider@aider.chat >
* refactor: 将 isinstance 检查改为元组、将默认模型值设为空字符串、将类型注解改为 Any 并导入
* refactor: 为 _serialize_job 增加返回类型注解 dict
* fix: 使用 cast 获取百度 AIP 的 msg 并对 psutil_addr 引入 type: ignore
Co-authored-by: aider (openai/gpt-5.2) <aider@aider.chat >
* refactor: 引入 _AddrWithPort 协议并替换 conn.laddr 的 cast
Co-authored-by: aider (openai/gpt-5.2) <aider@aider.chat >
* fix: 在构建 AstrBotMessage 时对 ctx.channel 可能为 None 进行兜底处理
Co-authored-by: aider (openai/gpt-5.2) <aider@aider.chat >
---------
Co-authored-by: aider (openai/gpt-5.2) <aider@aider.chat >
2026-02-05 21:54:12 +08:00
Gao Jinzhe
36432c4361
fix: 修复插件热重载时平台适配器未清理导致注册冲突的问题 ( #4859 )
2026-02-04 15:06:03 +08:00
Soulter
c643e3c093
chore: ruff format
2026-02-03 23:40:23 +08:00
Soulter
a0c364aa81
fix: active reply function does not work caused by event.request_llm() outdated
2026-02-03 23:34:42 +08:00
Soulter
f835f63542
feat: add trace settings management and UI for enabling/disabling trace logging ( #4822 )
...
* feat: add trace settings management and UI for enabling/disabling trace logging
* feat: enhance trace feature with internationalization support for hints and status messages
* fix: improve tool info extraction in run_agent function
2026-02-03 10:24:41 +08:00
Soulter
2213fb1ebf
feat: add proactive messaging support in CronJobPage and enhance file download tool with user notification option
2026-02-01 18:12:11 +08:00
Soulter
bddf7b8623
feat: add proactive messaging support and enhance message handling in SendMessageToUserTool
2026-02-01 16:49:10 +08:00
Soulter
5b7805e8d7
feat: trace and log file config ( #4747 )
...
* feat: trace
* fix(log): increase log cache size from 200 to 500
* feat(logging): add file and trace logging configuration options
2026-01-31 00:05:54 +08:00