这两天在继续测试 AstrBot 视频解析插件 的时候,确实暴露出了一些比较明显的问题。
这篇就不写设计目标了,直接把现在遇到的问题、为什么会这样、已经做了哪些处理,以及目前修到哪一步,完整记一下。
现在出现了什么问题
目前确认过的,主要有两类。
1. 视频解析和视频追问,没有按“当前对话人格”走
用户现在在 AstrBot 里把插件设置成了:
- 按当前对话人格
但实际测试里发现:
- 普通聊天时,Bot 的人格是正常的
- 只有在 视频解析 和 视频后的追问 这两条链路里,回复风格明显不对
- 看起来不像当前对话里设定好的那个人格
也就是说,问题不是 AstrBot 整体人格系统坏了,而是:
- 主聊天链路正常
- 视频插件自己的生成链路没有正确继承当前对话人格
这个区别非常关键。
2. 视频追问存在误触发
另一个问题是,插件会把某些并不是“继续问视频”的消息,误判成视频追问。
一个典型场景是:
- 用户发:
@bot 解析视频 - Bot 先回复一句:
我这就去看视频 - 用户回复这句话:
你看什么视频你看
按正常理解,这句更像是在吐槽或者打断,而不是在继续追问视频内容。
但插件之前会把它当成:
- “用户在围绕刚才那个视频继续提问”
于是直接走视频追问逻辑,结果就容易出现:
- 回复内容不自然
- 像答非所问
- 甚至让人感觉是“人格突然坏了”
实际上这不是同一个问题,而是:
- 误触发
- 再叠加 人格没继承好
最后才表现成一种看起来很怪的回复效果。
为什么会这样
问题一:插件自己在做 LLM 调用
视频解析插件不是完全走 AstrBot 主聊天那条统一链路,而是插件内部自己会调用模型。
也就是类似这种逻辑:
- 自己取人格
- 自己拼 system prompt
- 自己调用 provider 生成开场白、总结、追问回复
这种做法本身没问题,但前提是:
- 插件必须准确拿到当前对话绑定的人格
而这次测试日志里已经很明确地显示出,插件没有拿到:
conversation_persona=''人格未命中
所以不是它“没按人格说好”,而是它实际上根本没取到当前人格。
问题二:追问触发条件太宽
原来的逻辑里,只要满足这些条件中的一部分,就可能进入 follow-up:
- 用户这条消息不是命令
- 当前消息里没有新视频链接
- 存在最近一次视频上下文
- 回复了 Bot,或者像是在继续追问
问题就在于:
- “回复了 Bot” 这个条件太宽了
它会把很多并不是追问视频的消息,也纳入视频插件处理范围。
于是插件就可能错误接管一些:
- 吐槽句
- 打断句
- 纠正式短句
- 情绪化回复
这也是为什么“你看什么视频你看”这种话会被错误处理。
目前已经做了哪些修复
1. 先修了 follow-up 误触发
这部分已经先在测试区落地了,主要加了几层限制。
增加冷却
视频总结刚发出后,不会立刻把下一条回复都当成 follow-up。
这样可以避免:
- Bot 刚说完“我去看视频”
- 用户马上回一句吐槽
- 插件立刻误判成继续追问
增加噪音筛选
像下面这类消息,现在会优先判定为噪音或非追问:
你看什么视频你看你在说啥不是这个???
也就是说,不会再只因为“回复了 Bot”就自动进入视频 follow-up。
增加上下文完成判断
现在 follow-up 必须建立在:
- 已经确实有可用的视频总结上下文
- 且已经过了一个最基本的冷却时间
这样可以避免还没真正总结完成,就把后续消息错误接进去。
目前还没完全修好的部分
2. “按当前对话人格” 这条链路还在继续修
这个是目前最核心的未完成项。
因为现在已经能确认:
- 普通聊天人格正常
- 视频解析/追问人格不正常
所以问题范围已经缩得很小:
- 不是 AstrBot 整体问题
- 就是插件内部读取“当前对话人格”的逻辑没有对齐当前环境
为了修这个问题,测试区现在已经把人格读取逻辑改成了多级兜底,按下面这个顺序去找:
- session_service_config.persona_id
- 当前对话的 conversation.persona_id
- UMO 默认人格
- selected_default_persona fallback
也就是说,不再只依赖单一来源,而是尽量和 AstrBot 现有的人格获取方式保持一致。
临时解决方法
在问题彻底修好前,如果你现在就要用这个插件,比较稳的临时方案有两个。
方案一:先尽量避免用“回复 Bot 的短句吐槽”去接视频
比如尽量不要用这种:
你看什么视频你看你在说啥不是这个
这种句子本身就很容易被误判为上下文接话。
虽然测试区已经开始加筛选,但在最终版稳定前,还是建议减少这类测试噪音。
方案二:如果特别依赖人格效果,先重点测普通聊天和非插件链路
因为当前问题不是 Bot 整体人格坏了,而是视频插件自己的生成链路还在修。
也就是说:
- 普通聊天能正常按人格走
- 视频插件链路暂时不完全稳定
目前修到哪一步了
现在的实际进度是这样的。
已修
- 视频追问误触发
- 回复 Bot 就乱接 follow-up 的问题
- follow-up 冷却与噪音筛选
在修
- 视频解析开场白的人格继承
- 视频总结正文的人格继承
- 视频追问回复的人格继承
- “按当前对话人格” 在插件链路中的稳定命中
还没做的
- 等测试区确认稳定后,再整理并推送到 GitHub
- 再补一轮更完整的说明文档和使用注意事项
现在的结论
这次问题不是一个点炸了,而是两个问题叠在一起:
- 视频追问误触发
- 插件链路没有正确继承当前对话人格
所以用户看到的最终现象才会是:
- 回复怪怪的
- 像没按人格说话
- 有时甚至像答非所问
目前修复工作已经在测试区继续推进中。
在确认:
- 视频解析按人格走
- 追问按人格走
- 误触发也稳定消失
之前,不会急着把这版直接发到 GitHub。
最后
这种问题其实比“单纯报错”更烦一点,因为它不是直接崩,而是会表现成:
- 好像能用
- 但又不太对
- 而且用户一眼就能感知到体验不自然
所以这次会先在测试区把人格链路彻底抠顺,再整理正式版本。
等测试稳定,再发 GitHub。
部分信息可能已经过时