feat: 新增批量解析、分级失败提示、缓存等媒体解析增强能力 - #9
Conversation
本次提交实现了多项核心功能升级: 1. 媒体解析支持单条消息多链接批量解析(最多5条) 2. 新增解析失败原因分级提示,替换原始异常文本 3. 增加媒体解析结果缓存,减少目标平台请求频率 4. 支持跨群记忆联动,解析记录可被LLM回溯 5. 群开关支持按功能域分级控制,/开关命令新增scope参数 6. 新增跨群记忆LLM摘要功能,节省token并优化上下文 7. 群开关静默期新增单次提醒,避免用户困惑 8. 更新命令总览与配置项文档 同时重构了GroupSwitchStore支持按功能域分级禁用,优化了媒体解析模块的异常分类与缓存逻辑。
- AI 审查:PR 编号解析新增工件名 pr-diff-<N> 途径(收集器由 pull_request 事件触发、天然知道编号);fork PR 的 workflow_run 载荷 pull_requests 为空、commit 关联查询也常为空,此前静默跳过导致 fork PR 从未有 AI 审查(PR #9 实测两路径均返回空)。解析彻底失败时 setFailed 让 run 变红,不再绿灯空转;AI API 非 200 改为 exit 1,失败可见 - 欢迎机器人:pull_request -> pull_request_target。fork PR 的 pull_request 事件令牌只读,createComment 403(PR #9 实测失败); 本工作流不 checkout PR 代码、不使用 Secret,切换安全 - AI_API_KEY 未配置路径加 warning annotation
🤖 AI 代码审查改动概述本次 PR 包含多项功能:跨群记忆 LLM 摘要(含缓存与降级)、群开关按功能域(scope)分级、媒体解析失败原因分级提示、解析结果 LRU 缓存、批量链接解析、解析联动跨群记忆、关闭期间一次性提醒,以及 潜在风险
建议
以上内容由 AI 自动生成,仅供参考,最终以人工审查为准。 |
|
已按审核意见完成修复并合并至 修复内容(ed3854d)
补充交付(c13af14 / d29c2f3)
测试:全部 5 套测试通过(33 + 37 + 41 + 36 + 11 = 158 项),CI 另:AI 审查建议第 6 条(摘要超时后 cancel task)未采纳——代码注释已说明不 cancel 是为规避 httpx 连接池 |
改动说明
本 PR 一次性落地 8 项增强,核心目标:跨群记忆「记得住重点」、群开关「分级可控」、媒体解析「更快更准更省心」。
/开关 off media 2h可只关某一类功能;存储 key 从umo升级为umo|scope(向后兼容,旧格式自动视为全局禁用),守卫检查点分散到各功能入口。MediaParserError.kind分类(过期/删除/反爬/超时/网络/接口/格式),失败提示精确可读,不再甩原始异常。/解析一条消息多链接依次解析,单次上限 5 条。tag=media),后续可自然回溯「你刚才发的那个视频」。/cc命令总览:纳入上述新能力说明。影响范围与兼容性:
GroupSwitchStore落盘格式平滑扩展为umo|scope复合 key,旧格式无需迁移;其余均为新增能力,无破坏性变更。所有新配置项均提供默认值,未配置用户升级后行为与旧版一致(缓存默认开启、静默提示默认开启、摘要默认关闭)。改动文件:
main.py、media_parser.py、group_switch_store.py、_conf_schema.json、README.md、CHANGELOG.md。三个核心 Python 文件已通过py_compile静态语法检查。改动类型
自测清单
test_memory_and_switch.py等,与本次改动相关的都跑一遍)README.md与_conf_schema.jsonCHANGELOG.md的[Unreleased]小节追加条目.gitignore白名单中登记(本次未新增测试文件,N/A)关联 Issue
无关联 Issue(如有对应 Issue 可补
Fixes #编号)。测试流程(建议按序手动验证)
/开关 off media 2h→ 只关媒体解析,点歌/图片仍可用;/开关列表应显示「媒体解析」功能域及恢复时间;/开关 on media恢复。/开关 off后发任意指令,第一次收到提示,1 小时内同群不再重复。注意事项
cross_group_summary_enable=false),开启后每次记忆变化会多一次 LLM 调用,建议配一个廉价快速模型(cross_group_summary_provider_id)。media_parse_cache_enable=true),下载/播放链接本身有时效性,media_parse_cache_ttl别设太长。/开关默认仅群管理员可操作(group_switch_admin_only=true),测试前确认自己是管理员。py_compile首次跑被 sandbox 拦了(它要往 Python 安装目录写.pyc),我改用内置compile()完成等价的纯静态语法校验,三个文件均通过,无副作用文件残留。