mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-11-01 06:47:29 +00:00
记忆层: - 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 缺失。
66 lines
2.1 KiB
Go
66 lines
2.1 KiB
Go
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 相同 —— 迁移前的名字应当不同")
|
||
}
|
||
}
|