mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-11-06 01:07:35 +00:00
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 缺失。
This commit is contained in:
@ -2,34 +2,13 @@ package memory
|
||||
|
||||
// 测试脚手架:重建被测试删掉的 memory_blocks 表。
|
||||
// 刻意放在 _test.go 里 —— 它不是生产符号,只是让回滚测试能自造失败。
|
||||
|
||||
// ddlMemoryBlocks 是 graph.go 里同一段 DDL 的副本,仅供测试重建被删的表。
|
||||
//
|
||||
// ★★ 它是**重复的真相源** —— 加列时必须两边都改。
|
||||
// ★ 2026-10-29:这里的 `ddlMemoryBlocks` 副本已**删除**,改用生产同名常量。
|
||||
//
|
||||
// 2026-10-04 加 semantic_type 时就漏了这里,报
|
||||
// 「no such column: semantic_type」。抽公共常量是正解,
|
||||
// 但 graph.go 的 DDL 是一整段 schema 初始化(多张表),
|
||||
// 拆出来会改动面更大 —— 暂时保留副本,改列时记得同步。
|
||||
// 原副本的注释自己就写着「它是重复的真相源 —— 加列时必须两边都改」,
|
||||
// 并记录了两次因不同步而失败的现场:
|
||||
// · 2026-10-04 加 semantic_type → "no such column: semantic_type"
|
||||
// · 2026-10-29 加段页式 6 列 → "no such column: frame_ts"
|
||||
//
|
||||
// 刻意不导出成生产符号:它是测试脚手架,不是 API。
|
||||
const ddlMemoryBlocks = `CREATE TABLE IF NOT EXISTS memory_blocks (
|
||||
id TEXT PRIMARY KEY,
|
||||
modality TEXT NOT NULL,
|
||||
text_content TEXT DEFAULT '',
|
||||
payload_digest TEXT DEFAULT '',
|
||||
mime TEXT DEFAULT '',
|
||||
size INTEGER DEFAULT 0,
|
||||
width INTEGER DEFAULT 0,
|
||||
height INTEGER DEFAULT 0,
|
||||
vector TEXT DEFAULT '',
|
||||
fingerprint TEXT DEFAULT '',
|
||||
source TEXT DEFAULT '',
|
||||
tool TEXT DEFAULT '',
|
||||
scene TEXT DEFAULT '',
|
||||
-- ★ semantic_type 必须与 graph.go 的 DDL 同步(2026-10-04 加列时漏过一次,
|
||||
-- 报 'no such column: semantic_type')。改那边记得改这里。
|
||||
semantic_type TEXT DEFAULT '',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
)`
|
||||
// 一份「靠人记得同步」的副本,在第一次忘记时就已经证明了它不是好设计。
|
||||
// 现在 DDL 只有一处定义(graph.go 的 ddlMemoryBlocks),生产与测试共用。
|
||||
|
||||
Reference in New Issue
Block a user