letr
30ae18a8f0
feat(qqofficial): support group message create type ( #8838 )
...
* feat(qqofficial): support group message create
* chore: remove temporary qq official capture script
* feat(qqofficial): allow ws segmented replies
* fix(qqofficial): guard missing group mentions
* feat(qqofficial): enhance group message handling with debug logging and sender username
* feat(qqofficial): add recommended group chat settings and update bot creation instructions
* feat(qqofficial): enhance error handling for QQ Official API message sending
---------
Co-authored-by: Soulter <905617992@qq.com >
2026-06-17 19:11:48 +08:00
時壹
b711425b73
feat: add message-level markdown control for QQ Official platform ( #6980 )
...
* feat: add message-level markdown control for QQ Official platform
* feat: propagate MessageChain metadata through RespondStage chain splitting
2026-04-27 21:21:56 +08:00
Soulter
224287e170
feat: add audio input support across providers and chatui recording issue fix ( #7378 )
...
* feat: add audio input support across providers and chatui recording issue fix
- Introduced audio_urls parameter in Provider class and related methods to handle audio input.
- Updated ProviderAnthropic, ProviderGoogleGenAI, and ProviderOpenAIOfficial to process audio URLs.
- Enhanced media_utils with functions to ensure audio format compatibility and detect audio types.
- Modified dashboard components to display audio input support and handle audio attachments in messages.
- Updated localization files to include audio as a supported modality.
- Added new icons for audio input in the dashboard UI.
* feat: enhance audio handling with temporary file cleanup and format support
* feat: track temporary local files for converted audio components
* fix: update image placeholder in prompt from "[图片]" to "[Image]"
2026-04-06 14:58:29 +08:00
whatevertogo
8c935981bb
fix: align aiocqhttp poke payload with onebot v11 ( #5773 )
...
Co-authored-by: whatevertogo <whatevertogo@users.noreply.github.com >
2026-03-05 23:02:26 +08:00
エイカク
451ad685ae
feat: 集成 DeerFlow Agent Runner 并优化流式处理 ( #5581 )
...
* feat: integrate DeerFlow agent runner and improve stream handling
* refactor: split DeerFlow stream flow and close stale client on reset
* fix: enforce max_step and correct timeout type check
* fix: harden DeerFlow config parsing and session lifecycle
* fix: preserve third-party runner error semantics and harden image parsing
* perf: bound DeerFlow values history and seen-id cache
* refactor: improve deerflow stream semantics and client lifecycle
* fix: harden third-party runner error semantics and fallback aggregation
* refactor: reduce deerflow image log noise and lazy-init api session
* perf: avoid unnecessary iterable copies in deerflow stream utils
* refactor: centralize runner error key and clarify deerflow client lifecycle
* refactor: simplify third-party runner output flow
* fix: defer streaming runner cleanup and unify error mapping
* fix: handle id-less values messages and redact stream payload logs
* fix: improve deerflow error signaling and third-party runner flow
* fix: support deerflow proxy and refine runner lifecycle
* fix: tighten deerflow image validation and runner lifecycle
* feat: support deerflow image output components
* fix: harden runner stream cleanup and refactor deerflow config
* fix: preserve deerflow done hook and simplify runner lifecycle
* refactor: simplify third-party runner aggregation and lifecycle closing
* fix: preserve first deerflow values payload and simplify runner flow
* refactor: unify runner final resolution and harden deerflow close state
* refactor: share int coercion and make deerflow close best effort
* refactor: extract deerflow mappers and streamline third-party lifecycle
* refactor: simplify third-party flow and harden sse flush parsing
* fix: make deerflow runner close path best effort
* refactor: simplify third-party orchestration and centralize deerflow keys
* refactor: simplify third-party chunk flow and deerflow finalization
* fix: harden deerflow stream parsing and simplify runner lifecycle
* refactor: remove redundant deerflow values text assignment
* fix: improve deerflow timeout diagnostics and image input feedback
* refactor: flatten third-party runner lifecycle and aggregation
* chore: use deerflow official remote svg icon
* chore: remove unused deerflow local logo asset
2026-03-01 12:31:38 +09:00
NanoRocky
651a0645c5
fix: 修复仅发送 JSON 消息段时的空消息回复报错 ( #5208 )
...
* Fix Register_Stage
· 补全 JSON 消息判断,修复发送 JSON 消息时遇到 “消息为空,跳过发送阶段” 的问题。
· 顺带补全其它消息类型判断。
Co-authored-by: Pizero <zhaory200707@outlook.com >
* Fix formatting and comments in stage.py
* Format stage.py
---------
Co-authored-by: Pizero <zhaory200707@outlook.com >
2026-02-19 17:47:08 +08:00
Soulter
d87bfb0d5d
perf: 优化分段回复间隔时间的初始化逻辑 ( #5068 )
...
fixes : #5059
2026-02-12 19:18:23 +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
Copilot
58e32b7b70
fix: inverted logic in segmented reply LLM-only filter ( #4071 )
...
* Initial plan
* Fix: Correct inverted logic in is_seg_reply_required for only_llm_result option
Co-authored-by: Soulter <37870767+Soulter@users.noreply.github.com >
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: Soulter <37870767+Soulter@users.noreply.github.com >
2025-12-17 11:12:05 +08:00
Soulter
56673ad78f
fix: prevent duplicate result content type after streaming finishes in RespondStage
2025-12-15 15:33:40 +08:00
Dt8333
f624971613
chore: fix bunches of type checking errors ( #3213 )
...
* chore(core.utils): 🚨 修正错误Lint
* chore(core.provider): 🚨 修复基类错误Lint
* chore(core.utils): 补全session_get()的重载
* chore(core.provider): 🚨 修正实现错误Lint
* chore(core.platform): 🚨 修正platform基类和webchat的错误Lint
* chore(core.platform): 修正错误实现Lint
* fix(core.provider): 修复循环调用和错误assert
* chore(core.platform): 修复部分实现Lint
* chore(core.provider): 补充Dify.text_chat_stream的参数类型
* chore(core.pipeline): 🚨 修复错误Lint
* fix(core.slack): 补充遗漏导入
* chore(core.utils): 修复错误的session_get声明
* chore(core.platform): 移除Lark adapter import中的wildcard
* chore(core.db): 修复声明和部分逻辑
* chore(core.db): 添加typings,使faiss参数能被正确识别。
* chore(core): 修复声明
* chore(core): 修改声明
* chore: 补充faiss声明
* chore(dashboard): 修改实现,减少报错
* chore(package): 修改部分声明与实现,减少报错
* chore(core): 添加Handler的overload,以去除部分assert同时通过类型检查
* chore(core.pipeline): 修改Pipeline Scheduler的execute,将判断属性改为判断类型,通过静态类型检查
* chore(core.config): 添加类型标注,通过类型检查
* chore(core.message): 为File._download_file添加检查,通过类型检查
* fix: 将断言改为条件判断以实现优雅关闭的容错性
* refactor: 移除 discord 客户端中的 assert,改用 if None 判断并抛出异常
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* fix: DiscordPlatformAdapter 对 self.client.user 为 None 做日志并返回,移除断言
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* fix: 增强 Lark 相关空值/异常检查并完善日志输出
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* refactor: 将断言替换为条件检查并加入日志与错误处理
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* chore: 移除LLM生成的无用注释
* refactor: 使用 File.get_file 替换下载逻辑并移除 assert,提供默认 filename
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* fix: Slack Socket 未初始化抛出运行时异常,图片 URL 判空改为非空判断
* refactor: 将 WeChatPadProAdapter 的断言改为空值判断并添加日志
* refactor: 使用 isinstance 替代断言实现类型判断,便于静态检查
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* fix: 去除cast,直接使用字段与字典访问,修正端口解析
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* refactor: 使用 match-case 重构 ProviderManager 加载并通过类型检查抛出 TypeError
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* fix: group_name_display 时若 group 对象为空则记录错误并返回
* fix: 将 _get_current_persona_id 的 assert 替换成 if guard 并返回 None
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* fix: 优化插件目录存在性检查及图片URL非空验证,更新JSON排序配置
* fix: 将 datetime_str 的 assert 替换为显式检查并抛出异常
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* refactor: 移除 cast,改为运行时检查并在找不到调度器时跳过
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* refactor: 移除 cast,改用 isinstance 检查 FaissVecDB 并警告
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* fix: 删除 typing.cast 导入,并在获取文件绝对路径前校验 file_
* refactor: 移除 typing.cast,简化内容安全检查调用
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* refactor: 将 PlatformMetadata.id 设为必填并在注册时传入 id,移除 cast
* refactor: 移除 cast,改用 HasInitialize 与 isinstance 进行初始化
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* fix: 为 ProviderManager.initialize 增加ID类型判断,避免 None 导致 get 失败
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* refactor: 为 OTTSProvider 与 AzureNativeProvider 引入 _client 与 client 属性改进上下文管理
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* fix: 为 Whisper 自托管源添加模型未初始化校验并直接调用 transcribe
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* refactor: 移除未使用的 cast 导入并简化 platform_name 赋值
* refactor: 引入 cast 并对 id 使用 cast(str, ...) 提升类型安全
* fix: 将 _id_to_sid 返回改为 str,空值返回空串;对 id 与 message_id 使用 cast
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* refactor: 重构 Discord 处理逻辑:强制 类型转换、优先斜杠指令并优化提及判断
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* fix: 统一对 id 获取执行 cast,并在微信消息解析失败时抛错
* Revert "fix: 去除cast,直接使用字段与字典访问,修正端口解析"
This reverts commit 1cbfdf9d1b .
* fix: 百炼 Rerank 会话关闭时返回空结果;初始化 request.prompt 避免空值拼接
* fix: 统一处理搜索结果链接为字符串,新增 _get_url 助手并适配 Bing/Sogo
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* refactor: 调整 call_handler 泛型、Discord 通道注解及 FishAudioTTS API 请求类型
* refactor: 使用 col(...) 替代列引用并对结果进行 CursorResult 强转
* chore: ruff format
---------
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
Co-authored-by: Soulter <905617992@qq.com >
2025-12-09 14:13:47 +08:00
Soulter
c4ea3db73d
refactor: remove redundant session lock management from message sending logic in RespondStage ( #3645 )
...
fixes : #3644
Co-authored-by: Dt8333 <lb0016@foxmail.com >
2025-11-15 16:39:49 +08:00
Dt8333
6ac43c600e
perf: improve streaming fallback strategy for streaming-unsupported platform ( #3547 )
...
* feat: 修改tool_loop_agent_runner,新增stream_to_general属性。
Co-authored-by: aider (openai/gemini-2.5-flash-preview) <aider@aider.chat >
* refactor: 优化text_chat_stream,直接yield完整信息
Co-authored-by: aider (openai/gemini-2.5-flash-preview) <aider@aider.chat >
* feat(core): ✨ 添加streaming_fallback选项,允许进行流式请求和非流式输出
添加了streaming_fallback配置,默认为false。在PlatformMetadata中新增字段用于标识是否支持真流式输出。在LLMRequest中添加判断是否启用Fallback。
#3431 #2793 #3014
* refactor(core): 将stream_to_general移出toolLoopAgentRunner
* refactor(core.platform): 修改metadata中的属性名称
* fix: update streaming provider settings descriptions and add conditions
* fix: update streaming configuration to use unsupported_streaming_strategy and adjust related logic
* fix: remove support_streaming_message flag from WecomAIBotAdapter registration
* fix: update hint for non-streaming platform handling in configuration
* fix(core.pipeline): Update astrbot/core/pipeline/process_stage/method/llm_request.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* fix(core.pipeline): Update astrbot/core/pipeline/process_stage/method/llm_request.py
---------
Co-authored-by: aider (openai/gemini-2.5-flash-preview) <aider@aider.chat >
Co-authored-by: Soulter <37870767+Soulter@users.noreply.github.com >
Co-authored-by: Soulter <905617992@qq.com >
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2025-11-12 18:01:20 +08:00
LIghtJUNction
0b7fc29ac4
style: add ruff lint module of isort and pyupgrade, and some ruff check fix ( #3214 )
...
Co-authored-by: Dt8333 <25431943+Dt8333@users.noreply.github.com >
Co-authored-by: Soulter <905617992@qq.com >
2025-11-01 13:26:19 +08:00
Soulter
d951b99718
fix: 发送阶段将 Plain 为空的消息段移除
2025-10-03 00:45:07 +08:00
Soulter
a8f874bf05
fix: 修复分段回复时,引用消息单独发送导致第一条消息内容为空的问题 ( #2757 )
2025-09-16 10:45:39 +08:00
Soulter
d2df4d0cce
Feature: 支持在配置文件配置可用的插件组 ( #2505 )
...
* feat: 增加可用插件集合配置项
* remove: 旧版平台可用性配置
已经基于多配置文件实现。
* feat: 应用配置文件插件可用性配置
* perf: hoist if from if
2025-08-20 15:25:41 +08:00
Soulter
fbc4f8527b
Merge remote-tracking branch 'origin/master' into releases/4.0.0
2025-08-19 00:53:36 +08:00
Soulter
90cb5a1951
fix: 当返回文本为空并且存在工具调用时错误地被终止事件,导致工具调用结果未被返回 ( #2491 )
...
fixes : #2448 #2379
2025-08-19 00:52:13 +08:00
Soulter
87f05fce66
Fix: 当多个相同消息平台实例部署时上下文可能混乱(共享) ( #2298 )
...
* perf: update astrbot event session format, using platfrom id to ensure uniqueness
fixes : #1000
* fix: 更新 MessageSession 类以使用 platform_id 作为唯一标识符,并调整相关方法以确保一致性
* fix: 更新 MessageSession 文档以明确 platform_id 的赋值规则,并调整 get_platform 和 get_platform_inst 方法的返回类型
2025-08-02 21:38:55 +08:00
Gao Jinzhe
140ddc70e6
feat: 使用会话锁保证分段回复时的消息发送顺序 ( #2130 )
...
* 优化分段消息发送逻辑,为分段消息添加消息队列
* 删除了不必要的代码
* style: code quality
* 将消息队列机制重构为会话锁机制
* perf: narrow the lock scope
* refactor: replace get_lock with async context manager for session locks
* refactor: optimize session lock management with defaultdict
---------
Co-authored-by: Soulter <905617992@qq.com >
Co-authored-by: Raven95676 <Raven95676@gmail.com >
2025-07-23 00:37:29 +08:00
Soulter
25f7a68a13
Merge pull request #1709 from shuiping233/fix-qq-offical-session-bug
...
fix: qq_official适配器使用SessionController(会话控制)功能时机器人回复消息无法发送到聊天平台
2025-06-27 14:35:54 +08:00
Soulter
62d8cf79ef
fix: remove deprecated pre_send and post_send calls for specific platforms
2025-06-27 14:31:35 +08:00
Soulter
f56355da89
perf: 分段回复时,仅在输出的第一句话带上回复/引用
...
fixes : #521
2025-06-11 00:06:14 +08:00
shuiping233
1ce95c473d
fix : 在stage.py中专门对qq_official的会话控制器消息进行处理
2025-06-08 10:20:09 +08:00
zhx
60ca1efbda
feat: 添加wechatpadpro 消息类型47 49的适配
2025-06-04 14:36:16 +08:00
Soulter
c852685e74
fix: typeerror
2025-05-28 01:18:45 -04:00
Raven95676
143702b92b
fix(tts): record组件单独发送以保证兼容性
2025-05-15 10:18:05 +08:00
Soulter
790b924e57
refactor: QQ 采用 http 回调的方式上报文件消息段中的文件信息。
...
fix: 修复 Lagrange 下合并转发消息失败的问题
Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>
2025-05-09 03:47:19 -04:00
Raven95676
3753fce912
perf: 为发送流式消息的Fallback可选
2025-04-15 21:21:02 +08:00
Soulter
83745f83a5
🐛 fix: 对飞书适配器 base64 格式数据先保存到本地
2025-04-13 15:29:56 +08:00
Soulter
1bf5a21678
Merge pull request #1158 from Jackxwb/master
...
文件发送时支持路径映射
2025-04-12 21:01:25 +08:00
zhx
b62b1f3870
feat: 添加插件能针对不同消息平台开启关闭的功能
...
Squashed:
chore: merge master branch
chore: merge from master branch
chore: rename updateAllPlatformCompatibility to update_all_platform_compatibility for consistency
Reviewed by:
@Raven95676 @Soulter
2025-04-09 17:27:44 +08:00
Soulter
39693a27e3
Merge branch 'master' into master
2025-04-09 00:30:51 +08:00
Soulter
bafa473c8e
Merge pull request #1157 from AstrBotDevs/feat-streaming
...
feature: 支持流式输出
2025-04-08 22:53:38 +08:00
Soulter
bcc99a8904
🐛 fix: 修复 permission 过滤算子的 raise_error 参数失效的问题
2025-04-08 14:42:05 +08:00
Jackxwb
b03fe438d0
Merge branch 'master' of https://github.com/AstrBotDevs/AstrBot
2025-04-07 22:50:03 +08:00
Raven95676
cfd3f4b199
流式输出完成后,将完整的LLM响应设置为事件结果
2025-04-07 00:17:53 +08:00
Jackxwb
627da3a2bc
分离path_Mapping函数
2025-04-06 14:50:15 +08:00
Jackxwb
e6b69042de
文件发送时支持路径映射
2025-04-06 01:06:51 +08:00
Soulter
109650faf3
✨ feat: 支持流式输出
2025-04-06 00:56:33 +08:00
Raven95676
e54eaab842
将验证器字典移到类级别,避免重复创建
2025-04-05 21:19:53 +08:00
Soulter
c2b687212c
cleanup
2025-04-05 16:51:06 +08:00
anka
1c1a65b637
fix: 全部消息段的检验弄好了!
2025-04-05 00:21:28 +08:00
anka
48d07af574
feature(fix?): 在发送消息之前统一检查消息内容是否为空, 不允许发送空消息, 以解决该消息内容不支持查看以及gemini返回<empty content>问题
2025-04-03 11:50:12 +08:00
Soulter
50975a87d4
🐛 fix: handle message sending failures with error logging
2025-03-25 12:34:43 +08:00
Soulter
49bba9bf98
style: format codes
2025-03-03 13:30:55 +08:00
Soulter
7f6ed674b4
‼️ 🐛 fix: 修复钩子函数无法终止事件传播的问题;修复某些情况下终止事件传播后仍然会请求 LLM 的问题
2025-02-28 00:02:17 +08:00
Soulter
b199bddb0b
✨ feat: 适配多节点的转发消息(OneBot V11)
2025-02-22 21:07:57 +08:00
Soulter
466a1c1c41
🐛 fix: 修复某些情况下导致插件报错 AttributeError 的问题 #549
2025-02-21 00:38:08 +08:00