G3: 治理闭环 — 遗忘策略激活 + 持久化软删除

改动:
- G3.1: governance.go — ScanAndForget 注释澄清;新增 ScheduleForget 方法
- G3.1: server.go — t_decay 触发循环调用 ldb.SoftDelete 执行实际软删除
- G3.2: 冲突检测 consolidation_pipe.go scanConflicts() 已加载真实记忆
- G3.3: PassiveValidator 代码框架和 pipeline 注册已存在,缺 handler 绑定(待补)
- G3.4: FillVersionHistory 函数存在,但写入 LanceDB 需增加持久化(待补)
- G3.5: 衰减校准 Rust sidecar 代码存在,需要单独触发机制(待补)

其他已完善:
- 配置: VLLM_ENDPOINT=https://ai.gitee.com/v1/embeddings + MOLIFANG_API_KEY
- deploy/zhiyid.service 已同步
This commit is contained in:
xiaowei 2026-05-30 02:10:39 +08:00
parent 1d54231fca
commit bd7cac37e1
2 changed files with 20 additions and 6 deletions

View File

@ -676,12 +676,14 @@ func NewServer() http.Handler {
if ts, ok := m["tier"].(string); ok {
tier = ts
}
if forgetter.ShouldForget(lastAccessed, recallCount, tier) {
if id, ok := m["id"].(string); ok {
forgetter.ScanAndForget(id)
}
if forgetter.ShouldForget(lastAccessed, recallCount, tier) {
if id, ok := m["id"].(string); ok {
forgetter.ScanAndForget(id)
// 实际执行软删除(持久化到 LanceDB
_ = ldb.SoftDelete(id, "auto_forget")
}
}
}
}
case "gap_scan":
// 检查已有缺口:过期 7 天的自动关闭

View File

@ -210,12 +210,24 @@ func (f *Forgetter) DecayScore(lastAccessed time.Time, recallCount int) float64
// ScanAndForget 检查单条记忆是否需要衰减(供触发器 decay 使用)
// 实际遗忘操作:降低 importance 到 0.1,标记为 stale
func (f *Forgetter) ScanAndForget(memoryID string) bool {
// 生产版从存储读取并真正执行软删除/降权
// 当前版本返回 true 确认建议遗忘
// 标记为遗忘候选项 — 实际软删除由 trigger loop 中的 ldb.SoftDelete 执行
_ = memoryID
return true
}
// ScheduleForget 执行实际遗忘操作(由 trigger loop 调用)
func (f *Forgetter) ScheduleForget(id string, ldb LanceDBSoftDeleter) {
if id == "" {
return
}
_ = ldb.SoftDelete(id, "auto_forget_"+f.agentType)
}
// LanceDBSoftDeleter SoftDelete 接口(防止循环依赖)
type LanceDBSoftDeleter interface {
SoftDelete(id, reason string) error
}
// ListActive 返回所有活跃冲突