From 4d2028fbef86be2ccc5ad0613e7f94e6aeecb330 Mon Sep 17 00:00:00 2001 From: JianFeeeee Date: Sat, 12 Sep 2026 08:21:21 +0800 Subject: [PATCH] =?UTF-8?q?chore(sdk):=20=E5=90=8C=E6=AD=A5=20vendored=20S?= =?UTF-8?q?DK=20=E9=95=9C=E5=83=8F=E5=88=B0=201.2.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit core 仓里跟踪的 SDK 镜像落后于 third_party/homeagent-sdk(那是个独立仓库): 已提交的 sdk/memory.go 仍带 MediaAttachment.Description,而 SDK 仓 b2eafdf 已把它 删掉(媒体不再以文本描述参与索引)。磁盘上的文件其实就是 SDK 仓当前的版本, 只是 core 的索引没有跟上——于是**干净检出 main 拿到的是一个与它构建所用 SDK 不一致的镜像**。 clean worktree 能编译(内核已不再引用 Description),所以这个不一致不会被构建 发现,只能靠比对发现——属于本项目一直在治的「静默不一致」。 同步内容:sdk/memory.go 与 SDK 仓 HEAD 逐字节一致。 --- third_party/homeagent-sdk/sdk/memory.go | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/third_party/homeagent-sdk/sdk/memory.go b/third_party/homeagent-sdk/sdk/memory.go index a90785f..35f626f 100644 --- a/third_party/homeagent-sdk/sdk/memory.go +++ b/third_party/homeagent-sdk/sdk/memory.go @@ -49,15 +49,17 @@ type TextMemoryAPI interface { // // 两个方向共用一个类型: // - 写入(InsertWithMedia):给 Data + MIME 就是新内容;只给 Digest 则是引用已有内容。 -// - 读出(Query):内核只填 Digest/MIME/Description,**不回 Data**—— +// - 读出(Query):内核只填 Digest/MIME,**不回 Data**—— // 一次检索可能命中几十张图,把字节全塞回插件会把 ABI 消息撑爆。 // 需要字节时拿 Digest 单独取。 +// +// 刻意没有 Description 字段:媒体不作为文本被索引,也不带任何生成的描述。 +// 它只按自己的原生向量被检索与召回;附加文字请写在文档 / 三元组的文本里。 type MediaAttachment struct { - Digest string `json:"digest,omitempty"` - MIME string `json:"mime,omitempty"` - Data []byte `json:"data,omitempty"` - Name string `json:"name,omitempty"` - Description string `json:"description,omitempty"` + Digest string `json:"digest,omitempty"` + MIME string `json:"mime,omitempty"` + Data []byte `json:"data,omitempty"` + Name string `json:"name,omitempty"` } type TextEvent struct { @@ -74,8 +76,8 @@ type DocMemoryAPI interface { Insert(doc *Doc) error // InsertWithMedia 写入文档并关联媒体。attachments 里带 Data 的会落进 // 内容寻址存储(相同字节只存一份),只带 Digest 的直接引用已有内容。 - // 插件无需自己拼标记:内核会把 `[mime <短 digest>] <描述>` 补进 Content, - // 让向量检索和后续蒸馏都能看到这份媒体。 + // 媒体成为文档直接持有的一等记忆块:文档向量会融合它们的原生向量, + // 因此图片按自己的向量被召回,不依赖任何生成的描述文本。 InsertWithMedia(doc *Doc, attachments []MediaAttachment) error Remove(id string) Stats() map[string]interface{}