mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-10-15 12:15:16 +00:00
refactor(memory)!: 块 union 化,彻底淘汰 CAS 第一阶段(生产代码)
块自带负载(MemoryBlock.Data),删 PayloadDigest;检索纯向量,媒体随块 同生灭。生产代码全绿;CAS 专属测试将在下一提交随判据重写。 - memory: Data BLOB + migration9;blockColumns 不含 data(召回只比向量); MediaBlockID 内容派生 ID;BlockByIDPrefix/BlockData 按需加载 - sdk: memory_impl 去 media.Store;MemoryBlockView PayloadDigest→HasData - core: mediaref/graphmedia/crossmodal/medialoop 全部改块语义; captureBlockMedia 直接产块;resolveMediaRefs 按块 ID 解析 - knowledge: 媒体字节随条目目录自带(File+Data),删 mediaGet/mediaPut - webui: graphBlockView/pulse payload_digest→has_data - bootstrap/registry: 去 MediaStore 接线(SetMediaStore 空实现,待⑥删包)
This commit is contained in:
@ -8,9 +8,10 @@ import (
|
||||
"image/png"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
"github.com/JianFeeeee/HomeAgent/internal/memory/media"
|
||||
"github.com/JianFeeeee/HomeAgent/internal/memory/vector"
|
||||
"github.com/JianFeeeee/HomeAgent/pkg/embedding"
|
||||
)
|
||||
@ -67,10 +68,6 @@ func TestMultimodalEndToEndWithRealProvider(t *testing.T) {
|
||||
}
|
||||
t.Logf("真实 provider: dim=%d fp=%s loaded=%v", ds.Dim(), ds.Fingerprint(), ds.Loaded())
|
||||
|
||||
ms, err := media.New(t.TempDir())
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
dir := t.TempDir()
|
||||
s := NewStore(dir)
|
||||
if err := s.Start(); err != nil {
|
||||
@ -78,16 +75,19 @@ func TestMultimodalEndToEndWithRealProvider(t *testing.T) {
|
||||
}
|
||||
defer s.Stop()
|
||||
s.SetDenseSpace(ds)
|
||||
s.SetMediaGetter(ms)
|
||||
|
||||
img := mmTinyPNG(t)
|
||||
digest, err := ms.Put(img, media.Item{MIME: "image/png", Tool: "test"})
|
||||
if err != nil {
|
||||
if err := s.AddWithMedia("photo", "一只猫的照片", []KnowledgeMediaRef{
|
||||
{File: "photo.png", MIME: "image/png", Kind: "image"},
|
||||
}); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := s.AddWithMedia("photo", "一只猫的照片", []KnowledgeMediaRef{
|
||||
{Digest: digest, MIME: "image/png", Kind: "image"},
|
||||
}); err != nil {
|
||||
// 字节落进条目目录(CAS 淘汰后:媒体随条目生灭)
|
||||
if err := os.WriteFile(filepath.Join(dir, "photo", "photo.png"), img, 0644); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
// 重算该条稠密向量以纳入图片
|
||||
if err := s.AttachMedia("photo", KnowledgeMediaRef{File: "photo.png", MIME: "image/png"}); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := s.Add("plain", "无关的纯文本知识"); err != nil {
|
||||
@ -125,7 +125,6 @@ func TestMultimodalEndToEndWithRealProvider(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
s2.SetDenseSpace(ds)
|
||||
s2.SetMediaGetter(ms)
|
||||
built, _ := s2.ReindexDense()
|
||||
t.Logf("重启后 ReindexDense built=%d(0=命中缓存)", built)
|
||||
if built != 0 {
|
||||
|
||||
Reference in New Issue
Block a user