mirror of
https://gitcode.com/JianFeeeee/ModelRouter.git
synced 2026-10-03 23:54:06 +00:00
发 v1.8.0 时发现包里没有 billing.lua —— 而 v1.8.0 的主打特性就是计费插件, 发布说明明写「随核心发布的示例插件(billing)」。 功能本身没坏:internal/lua/vm.go 用 //go:embed plugins/*.lua 把插件编进二进制, writeBundledPlugins 在 plugin_dir 不存在时把它写出来。实测确认(用正确格式的 配置):全新 plugin_dir 启动后自动生成 billing.lua 70031 字节,插件正常加载。 所以这是产物内容与发布说明不符,不是功能缺失 —— 运维解包检查时看不到它, 只能等首次启动后才发现。 三处改动: 1) tar.gz 现在带 plugins/。让运维能在安装前读它、改它,而不是启动后才知道。 2) 修复 dpkg-deb 那行。`dpkg-deb -I "$DIST"/llmsproxy_*.deb` 的 glob 展开成三个 .deb(dist 里堆着 1.5.9 / 1.6.0 / 本次产物),dpkg-deb 只认第一个归档,其余 参数被当成 control component 名,退出码 2。脚本是 set -euo pipefail,于是 在这里直接终止 —— 「done」从未打印,我加在后面的产物内容校验从来没有执行过, 真正跑过的只有上面那道 100KB 大小下限。改为取最新的那个 deb。 这个缺陷早于本次改动,是被它暴露出来的。 3) 新增产物内容校验:tar.gz 必须含 llmsproxy / config.example.yaml / llmsproxy.service / plugins/billing.lua,adapters 至少 10 个 .lua。 大小下限抓不到这个问题 —— 少 70KB 仍然远超 100KB,而首次启动自动 seed 的 行为会在运行时把它藏起来,运维看到插件正常工作就以为包是完整的。 目录按内容而非名字匹配:tar 列出的是 …/adapters/openai.lua,不存在裸 …/adapters 条目,第一版按名字 grep 把完整包判成了坏包。 两个变异验证:去掉 plugins 拷贝 → 「archive is missing plugins/billing.lua」 退出 1;只留 1 个 adapter → 「archive has only 1 adapters」退出 1。