|
|
5f63f6ec6c
|
fix(lua): events.subscribe 改用内部 Subscribe + 订阅生命周期(修死锁/use-after-close)
上一版 Lua 对齐引入的 sdk.events.subscribe 有两个真问题,本提交修掉:
1) 用了公共 SDK 的 Events(),但本内核从未注入 event subscriber
(SetEventSubscriber 全仓无调用点),拿到永远是 nil ⇒ subscribe 只会
返回 "events unavailable"。改用内部 SDK 的 s.Subscribe——内置插件走的就是
这条路径(cli/webui/skillmgr 全用它)。
2) 自死锁:subscribe 会在 Lua 的 plugin.start(sdk) 回调里被调用,而
luaPlugin.Start 正持有 p.mu;原实现在 subscribe 里再 lock p.mu 追加 subs,
不可重入 ⇒ 测试实测 30s 超时。改用独立的 subsMu。
3) use-after-close:Stop 会 Close LState,但事件订阅此前无人取消,残留回调
再触发就会碰已关的 L。现在:Stop 先(不持 p.mu,避免与 Bus.Publish
锁序反转)取 subsMu 取消全部订阅,再置 closed 并关 L;事件回调持 p.mu 后
先查 closed,已进入等锁的旧回调会直接返回。
4) plugin_mgr 访问补 nil 保护(部分单测构造的 SDK 不含 pluginMgr)。
回归:TestLuaEventsSubscribeAndStopCleanup——订阅后 Publish 命中、Stop 后
再 Publish 不 panic。全套 Lua 测试在 -race 下通过。
|
2026-09-13 20:33:25 +08:00 |
|
|
|
b6a66c57fe
|
feat(lua): Lua 插件桥全量对齐 SDK 1.3.0(媒体/注入标志位/优先级/事件/通道注销)
内核 Lua 桥(internal/plugin/lua_plugin.go)此前停在 v0.8.0 时代能力面,
1.1/1.2/1.3 新增能力只在 Go 侧存在,而 PLUGIN_DEV.md 宣称『能力完全对齐』。
本补丁把 Lua 侧补齐到与公开 SDK 1.3.0 对齐:
- 1.1 媒体:memory.commit 支持 sentence_text/media_digests;
doc.insert_with_media + attachments;text_memory.append attachments;
set_tool_blocks / inject_input_media(_sync) / inject_interrupt_media。
- 1.2 注入语义:inject_input_sync(_opts)、六个 *_opts 变体
(no_memory/context_policy/cleaner_name/priority);
ToolDef/ChannelDef 解析 context_policy。
- 1.3 优先级与动态通道:priority 常量透传;unregister_output_channel。
- StageContext 暴露 reasoning_content/context_msgs/token_usage/memory/extra/errors。
- 新增 sdk.events.subscribe 与 sdk.plugin_mgr.*。
- sdk.lua mock 同步(单一事实源在 SDK 仓 sdk/lua/sdk.lua,内核副本由
third_party/homeagent-sdk/scripts/sync-lua-sdk.sh 同步)。
契约测试(lua_surface_test.go):
- 守住内核内嵌 mock 与 SDK 仓事实源一致;
- 守住 mock 承诺的每个函数都有运行时 RawSetString 绑定;
- 覆盖 opts/media/attachments 解析与 context_policy 透传。
文档:中英 PLUGIN_DEV.md 的 Lua API 表补齐并改为『对齐至 SDK 1.3.0』。
|
2026-09-13 20:04:31 +08:00 |
|
|
|
b4006212e7
|
feat: Lua 插件 stage 写回支持(与 C ABI v2 对齐)
makeStageHandler 现在把 ctx 以 Lua table 引用传给 handler,
handler 修改的字段(raw_message/llm_text/final_text/response/tool_calls/
tool_results/user_id/group_id/no_memory)同步写回内核 StageContext。
新增 TestLuaStageWriteback 验证 on_input/post_action 的写回。
|
2026-08-15 18:02:50 +08:00 |
|
|
|
0f68608403
|
feat(lua plugin): align Lua plugin bridge with C ABI surface, accept table args in sdk.memory.recall
- Lua 桥接层补齐 register_def/no_memory/cleaner/own_tools/output+input channels/register_api/set_auto_restart 等 v0.8.0 能力,与 C ABI 插件面一致
- sdk.memory.recall 兼容表参数(多 key 批量 recall),修复 Lua 插件传表报 bad argument
- 新增 TestLuaAlignedAPIs 覆盖对齐后的 API 面(含 recall 数组回归断言)
- sdk.lua 同步子表 mock(memory/doc/knowledge/text_memory/llm/social/settings)
- 更新 PLUGIN_DEV.md 中英文示例插件参考表
|
2026-07-31 11:42:23 +08:00 |
|
|
|
950090959f
|
feat: restructure plugin system, add Lua plugin support, update docs
|
2026-07-13 21:48:13 +08:00 |
|