Files
HomeAgent/third_party/homeagent-sdk/meta/meta_module_test.go
JianFeeeee b850feaef2 feat: 段页式记忆流转、coldcontext 重命名与安全治理
记忆层:
- MemoryBlock 承载 FrameTS/PageSeq/PageKind/BlockRole/CallID
- coldcontext 归档与回填按完整页传递,工具调用参数和配对键不丢失
- 召回先估算总 token,超预算时按全局页相似度标记 inactive
- inactive 仅是 context 渲染期状态,不落盘、不进入 coldcontext,Prune 后重置
- Peek/确认/Remove 两阶段召回,失败保留冷上下文副本
- stablemem 记录 last_recalled_at,删块连带清理边

命名:
- internal/memory/document → internal/memory/coldcontext
- Doc/DocEvent/DocHit → ColdDoc/ColdEvent/ColdHit
- ContextToColdContext/RecentColdContexts/FindColdContexts
- 保留既有 JSON 标签、doc_ 文件前缀与 doc_count 状态键,兼容存量数据

安全治理:
- 工具策略门禁、安全配置、事件总线发布者身份与入站脱敏
- 声明式 SecurityAPI 与 QQ owner/guest profile
- 日志保留策略与相关 e2e/回归判据

验证:go build ./...、go vet ./...、go test ./...(62 包);
生产副本 e2e:7013 块迁移后 ID/向量/指纹 0 变化、0 缺失。
2026-10-29 23:53:48 +08:00

66 lines
2.1 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package meta
// SDKModule 与 go.mod 的一致性命中判据。
//
// ## 为什么必须有(2026-10-29 实测缺陷,代价是"模板工程开箱编不出")
//
// 事实经过:
//
// go.mod: module github.com/JianFeeeee/hologramagentsdk ← 已改名
// meta.SDKModule = "github.com/JianFeeeee/homeagentsdk" ← 停在中间名
//
// 两者不一致时,`hmapdev init` 生成的工程会**同时**出现两个模块名:
//
// require github.com/JianFeeeee/homeagentsdk v1.4.0 (来自本常量)
// 而 z_proc_gen.go 里 import .../hologramagentsdk/sdk (来自 SDK 真实模块名)
//
// 结果 `hmapdev build` 报
//
// no required module provides package github.com/JianFeeeee/hologramagentsdk/sdk
//
// 而用户照提示执行 `go get` 只会**再拉一份** SDK —— 两个模块名并存,
// 问题原样保留。这类故障的恶劣之处:报错指向 import,真因在 meta.go。
//
// 所以本判据钉死"生成用的模块名 == go.mod 的模块名"。
import (
"os"
"path/filepath"
"strings"
"testing"
)
func TestSDKModuleMatchesGoMod(t *testing.T) {
// meta/ 的上一级就是 SDK 仓根。
data, err := os.ReadFile(filepath.Join("..", "go.mod"))
if err != nil {
t.Fatalf("读 SDK go.mod 失败: %v", err)
}
var mod string
for _, line := range strings.Split(string(data), "\n") {
line = strings.TrimSpace(line)
if strings.HasPrefix(line, "module ") {
mod = strings.TrimSpace(line[len("module "):])
break
}
}
if mod == "" {
t.Fatal("SDK go.mod 里没有 module 行")
}
if SDKModule != mod {
t.Fatalf("★ meta.SDKModule 与 go.mod 不一致:\n"+
" meta.SDKModule = %q\n"+
" go.mod module = %q\n"+
"两者不一致会让 hmapdev 生成的插件工程同时依赖两个 SDK 模块名,"+
"表现为 `no required module provides package .../sdk`。"+
"改 module 名时必须同时改这两处。", SDKModule, mod)
}
// 反向保护:LegacySDKModule 不得与当前名相同(否则"识别旧名"失去意义)。
if LegacySDKModule == SDKModule {
t.Fatal("LegacySDKModule 与 SDKModule 相同 —— 迁移前的名字应当不同")
}
}