JianFeeeee
7e696f9a8c
fix(homeagent): 撤回"另一条 SDK 血脉"的错误结论;build.sh 不再猜路径;清单判据改成一致性口径
pi 用只读文件系统逐条反驳了 357662e 的根因,三条我都验证并接受:
1. **"内核链 0.9.x 血脉"不成立 —— 那是我的搜索顺序造出来的事实。**
本机有 6+ 份 `third_party/homeagent-sdk` checkout:
/root/ha-test/…(0.9.0,C-ABI 时代,无 plugin.bin 支持)
/var/tmp/rel-1.3.12/…、/var/tmp/rel-1.3.11/…(1.3.0)
/var/tmp/release-main/…、/var/tmp/clean-check/…、/var/tmp/homed-p3/…(1.2.0)
而 build.sh 第一版按候选根目录**第一个命中就算**,命中的正是 ha-test 那份老 checkout。
内核自己用的是 1.3.0 那份,与钉子 `sdk/v1.3.0`、与 `<SDK_ROOT>/current` **一致**。
两条教训写进注释了:别用"第一个存在的路径"当权威来源;别把模块版本字符串当身份
(`replace => local (devel)` 时它只是 require 行的残留)。
2. **"API 不兼容"也是同一个错造成的。** 换成正确的 SDK 之后:
HOMEAGENT_SDK_DIR=/root/.homeagent/hmapdev/sdk/v1.3.0 bash build.sh
→ hmapdev build 成功,产出 build/plugin.bin(9018271 字节)
也就是说**这个插件在本机编得出来**,先前的 `SettingsAPI.DataDir` 报错是拿老 checkout 编的产物。
3. **判据把能工作的配置判红**(pi §2):第 4 步原先硬校验"产物 SDK 模块版本 == 内核模块版本",
而生产上能跑的组合恰恰是"内核 + v1.3.0 编的插件"。已删掉这个相等性判据:
SDK 源码**只认显式指定**(HOMEAGENT_SDK_DIR),不猜、不试探;
内核那条 dep/=> 只作为**提示**打印(并且按模块名精确联接、只接受紧跟 SDK dep 行的 `=>`,
不再取"输出里第一个 =>");身份改记 **realpath + 内容哈希**;
`meta.Version` 读取先剥注释(注释里的 `Version = "9.9.9"` 不再能赢)。
真正的不变量是 **wire 协议 protocol=2 + 一次真实握手**,写在脚本末尾(部署后回看日志)。
4. **清单判据改成一致性口径**(pi §5):不再"禁止 sdk 字段"——那会把正在工作的那份清单
(/home/newqqagent/plugins/homeagent-mail-bridge/plugin.json 声明 sdk=1.3.0,正是 08:30
那次恢复的处置动作)判红,而我没有"内核不读该字段"的证据。现在:可以不声明;
声明了就必须与构建机指针一致。
2026-09-14 16:38:28 +08:00
..
2026-09-06 15:18:06 +08:00
2026-09-06 15:18:06 +08:00
2026-09-06 15:16:49 +08:00
2026-09-06 15:16:49 +08:00
2026-09-14 16:38:28 +08:00
2026-09-12 17:38:32 +08:00
2026-09-14 16:38:28 +08:00
2026-09-04 20:33:44 +08:00
2026-09-04 20:33:44 +08:00
2026-09-03 12:57:43 +08:00
2026-09-14 16:38:28 +08:00
2026-09-06 19:23:42 +08:00
2026-09-14 16:27:02 +08:00
2026-09-14 12:07:45 +08:00
2026-09-14 08:17:23 +08:00
2026-09-14 12:07:45 +08:00
2026-09-14 16:27:02 +08:00
2026-09-06 15:16:34 +08:00
2026-09-06 15:16:34 +08:00
2026-09-04 23:52:52 +08:00
2026-09-04 23:52:52 +08:00
2026-09-04 13:49:16 +08:00
2026-09-06 15:16:49 +08:00