|
|
db207fd9b7
|
fix(scripts): 默认产物目录落到内核仓 dist/plugins
原默认 `$SDK_DIR/../dist/plugins`,在 SDK 仓位于 third_party/homeagent-sdk 时
会解析成 **third_party/dist/plugins** —— 既不在内核仓的发布产物目录
(upload_assets.py 认 dist/release 那套),也不在 SDK 仓内,等于丢在夹缝里,
必须每次显式传 OUT 才不会错。
改为向上找「含 go.mod 与 internal/ 的目录」即内核仓根,取其 dist/plugins。
不在内核仓内(SDK 被单独 clone)时回退到 SDK 仓自己的 dist/plugins。
不写死 ../../ 的理由:SDK 仓既可作 submodule 位于主仓内,也可被单独 clone,
写死相对路径会把产物丢到仓外。
|
2026-09-20 09:07:22 +08:00 |
|
|
|
953fbb2f50
|
feat(scripts): 批量打插件包(.hmap)供 release 发布
## 问题
release 此前**只发 homed/waiter 二进制与 hmapdev 工具链,不发插件包**(主仓 20 个
release、本仓的 release 都核实过,0 个 .hmap)。用户要用任何一个插件,都得:
1. 装 Go 1.25 + 网络拉依赖
2. 装 hmapdev 工具链
3. 进 example/<插件>/ 逐个 `hmapdev build`
而 `hmapdev build` **不是可选项**:5 个 example(deepsearch / luademo / vanblog /
vikunja / weather)连 `main.go` 都没有,直接 `go build` 会死在
「function main is undeclared in the main package」——入口是 hmapdev 现生成的。
所以「开箱可用」名不副实。本脚本把这一步前置到发布流程里。
## 用法
```bash
./scripts/build_plugin_bundles.sh # 全部 21 个
./scripts/build_plugin_bundles.sh weather qq # 指定
OUT=../dist/plugins ./scripts/build_plugin_bundles.sh
```
产出 `.hmap` + `SHA256SUMS.plugins`,可直接作为 release 附件。
## 实现要点(三处是踩过才写对的)
1. **产物有三种形态**,不能只认 `_bundle.hmap`:
- `<name>_bundle.hmap` 多平台 bundle(`plg.json` 的 `bundle: true`)
- `<name>_<os>_<arch>.hmap` 单平台(**qq** 的 plg.json 是 `bundle: false`,
与其余 20 个不一致)
- `<name>_lua.hmap` Lua 插件(**luademo**,不编译 Go)
脚本按形态标注,发布时能一眼看出是哪种。
2. **`set -e` 下不能用 `[ -z "$x" ] && x=$(ls ...)` 做兜底**:
一次 `ls` 无匹配(退出码 2)就会让整个子 shell 直接退出,后面的兜底根本走不到。
实测表现是「只有 qq 和 luademo 失败」——因为正是它俩没有 `_bundle.hmap`。
改成 `for` 循环 + `|| true`。
3. **参数拼错要报错,不能静默跳过**(否则以为打了实际没打)。
## 验证
- 21/21 构建成功,合计约 150 MB(bundle 含 linux/amd64 + darwin/amd64;
不含 windows 是**策略**——homed 已放弃 Windows 原生,源码注释有说明)
- 每个包内部结构核对:含 plugin.json、含内核认得的入口、当前平台可得
|
2026-09-20 09:02:31 +08:00 |
|
|
|
efb396d7b3
|
feat(lua): Lua SDK 全量对齐 1.3.0 + hmapdev 单一 mock 源/版本标记/语法预检
内核侧 Lua 桥此前停在 v0.8.0 时代能力面,而 1.1/1.2/1.3 新增的
媒体、注入标志位、中断优先级、事件订阅、动态通道注销只在 Go 侧存在,
文档却宣称『能力完全对齐』——属于静默漂移。
本仓(事实源):
- 新增 sdk/lua/sdk.lua:Lua mock 的单一事实源,补齐全部新 API
(*_opts / inject_input_sync / inject_*_media / set_tool_blocks /
unregister_output_channel / events / plugin_mgr / insert_with_media /
sentence_text+media_digests / attachments / context_policy)。
- scripts/sync-lua-sdk.sh:把事实源同步到 hmapdev assets、luademo、
以及被 vendored 时的内核副本;三份 sdk.lua 不再各自漂移。
- hmapdev init --lua:优先从激活 SDK 拷权威 mock,内嵌模板降级为
assets/sdk.lua 回退,不再内联手写副本。
- hmapdev build(Lua):plugin.json 写入 SDK 版本(能力可追溯),
打包前用 luac -p / lua loadfile 做语法预检,失败以非零码退出。
- hmapdev debug --lua:优先用激活 SDK 的权威 mock(HMAPDEV_SDK_LUA)。
- luademo 升级为全能力示例(新增 luademo_probe_v2)。
|
2026-09-13 19:56:12 +08:00 |
|