v2.1.4
v2.1.4 - AstrBot 更新器与官方 agent 兼容修复
这次发布修复两个 AstrBot 侧交接问题。
第一,修复 AstrBot 插件页更新时报错:
Plugin astrbot_plugin_volcengine_asr does not specify a repository URL.
第二,修复官方 agent 在插件成功识别后仍可能按旧 Record(file="xxx.amr") 消息链重新构造请求,并继续报:
Error occurred while processing agent: not a valid file: xxx.amr
问题原因
旧版本发布包里的 metadata.yaml 写着:
repo: ""因此 AstrBot 更新器不知道应该从哪个 GitHub 仓库检查和拉取新版。这个问题不影响 ASR 运行逻辑,但会影响 AstrBot WebUI 插件页里的“更新”功能。
另外,AstrBot 官方 ProcessStage 对插件 handler 返回的 ProviderRequest 有专门处理:如果插件直接 yield ProviderRequest,官方 agent 会使用这个请求;如果没有显式 yield,后续默认 LLM 流程可能继续从 event.message_obj.message 构造请求,并再次扫描旧 Record。
主要修复
- 根目录
metadata.yaml补充:
repo: "https://github.com/Ayleovelle/astrbot_plugin_volcengine_asr"- 发布包目录
astrbot_plugin_volcengine_asr/metadata.yaml同步补充同一仓库地址。 - 版本升级到
2.1.4,重新构建 Release zip。 - README 和 CHANGELOG 补充更新器排障说明。
- 成功识别和未听清注入路径现在会直接向 AstrBot
ProcessStageyield 干净ProviderRequest。 - 写入
provider_request后会调用event.should_call_llm(True),避免默认 LLM 流程在插件提供请求之后再次重入。
关于 preprocess_stage 的 warning
你可能仍会看到类似:
[preprocess_stage.stage:81]: Voice processing failed: not a valid file: xxx.amr
这条 warning 来自 AstrBot 官方预处理阶段,发生在插件 handler 之前;即使关闭本插件,官方预处理也会尝试把 Record(file="xxx.amr") 当本地文件转换。这个 warning 不代表本插件 ffmpeg 没启动。
本版本重点解决的是插件开启后不应再继续进入 agent_sub_stages 的旧 Record 媒体扫描。如果你希望连 preprocess warning 也消失,需要关闭 AstrBot 官方 STT/语音预处理,或让 OneBot/NapCat 提供官方预处理可读取的真实语音文件路径。
升级建议
如果你已经安装的是 2.1.3 或更早版本,并且 AstrBot 更新时报这个错误,请先手动下载并上传本页面附件:
astrbot_plugin_volcengine_asr.zip
安装 2.1.4 后,插件元数据里就会带上仓库地址,后续 AstrBot 插件页更新器才能正常找到仓库。
运行逻辑说明
本版本不改变以下核心 ASR 运行逻辑:
- QQ / NapCat AMR 语音取回
- OneBot
get_record兜底 - ffmpeg 转码链路
- 干净
ProviderRequest注入 - LivingMemory 友好两阶段注入
- 情绪判断 LLM
验证
python3 -m py_compile main.py astrbot_plugin_volcengine_asr/main.py tests/conftest.py tests/test_helpers.py tests/test_voice_workflow.py- 手动测试 runner:
manual tests passed: 58 _conf_schema.json双份 JSON 校验通过- README / CHANGELOG / metadata / schema 双份同步校验通过
- Release zip 构建通过,包内
metadata.yaml已包含repo