From 59c6e1844cf01693404762b12b0e02c6b08ee396 Mon Sep 17 00:00:00 2001 From: JianFeeeee Date: Sun, 30 Aug 2026 17:11:20 +0800 Subject: [PATCH] =?UTF-8?q?fix(plugindev):=20bridge=20=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E8=A1=A5=20dispatchIO.SetToolBlocks=EF=BC=8C=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E5=A4=96=E9=83=A8=E6=8F=92=E4=BB=B6=E6=97=A0=E6=B3=95=E7=BC=96?= =?UTF-8?q?=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SDK v0.9.2(68497b4)给 IOInjector 加了 SetToolBlocks,但 plugindev 的 C ABI bridge 模板(tmplLinuxBridge)未同步,导致任何外部插件在当前 SDK 下 编译失败: z_bridge_gen.go:97: cannot use dispatchIO{} as sdk.IOInjector value in argument to base.SetIOInjector: dispatchIO does not implement sdk.IOInjector (missing method SetToolBlocks) 补空实现满足接口。SetToolBlocks 是 Go 原生(进程内 IOManager)的多模态注入, 跨 ABI 无对应 method id 与内核桥接,故不做 callVoid 转发。 实测:example/qq 用重建后的 plugindev build --target linux/amd64 构建通过, 产出 .hmap 经 plugin_install 安装、重启后 20 个工具全部注册成功。 --- tools/plugindev/templates.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tools/plugindev/templates.go b/tools/plugindev/templates.go index 4669342..9305ad5 100644 --- a/tools/plugindev/templates.go +++ b/tools/plugindev/templates.go @@ -540,6 +540,9 @@ func (dispatchIO) InjectInterruptText(s, c, t string) { callVoid(6, s, c, t, 0, func (dispatchIO) InjectText(s, c, t string) { callVoid(5, s, c, t, 0, 0) } func (dispatchIO) InjectTextNoMemory(s, c, t string) { callVoid(7, s, c, t, 0, 0) } func (dispatchIO) InjectInputSync(s, c, t string) string { r, _ := callString(47, s, c, t, 0, 0); return r } +// SetToolBlocks 是 Go 原生(非 ABI)的多模态注入;跨 ABI 的外部插件无对应内核桥接, +// 故为空实现(满足接口即可)。需要多模态块时用插件内自持 SDK,不走 ABI。 +func (dispatchIO) SetToolBlocks([]sdk.ContentBlock) {} type dispatchMemory struct{} func (dispatchMemory) Recall(q []string, d int) ([]sdk.Entity, []sdk.Relation, error) {