memoryweave/G7-IMPLEMENTATION.md

5.8 KiB
Raw Permalink Blame History

G7: 遗忘 + 技能系统 — 实施计划

核心理念记忆是原料Hermes skill 是执行体Bayesian 是裁判,三者构成自举循环。

现状

组件 状态 说明
Forgetter 完成 E4.3 刚修好
BayesianSkillManager 存在 Beta-Bernoulli 模型,纯内存
SkillManager 存在 List/Trial API纯内存
Skill 持久化 重启丢失
Skill 生成 无自动从记忆生成机制
Skill 执行 无 execute API

目标架构

[高质量记忆] --distill/高频recall--> [Skill候选]
                                        |
                               [LLM结晶生成prompt模板]
                                        |
[Skill执行成功] <--execute-- [Hermes Skill 执行]
      |                                   |
      |            [trial反馈]            |
      v                                   |
[Bayesian更新ETA] ────────────> [ETA>0.8: active]
                                        |
                              [active skill → 关联记忆 degree+5]
                                        |
                              [ETA<0.5: retired → decay_rate×1.2]

阶段划分

G7.1 — 技能持久化(基础)

扩展 BetaSkillskill_bayes.go

  • 新增字段:PromptTemplate stringLinkedMemoryIDs []stringLinkedEntities []stringCreatedAt time.Time
  • 新增 Redis HSETzhiyi:skills{name: json(BetaSkill)}

扩展 BayesianSkillManagerskill_bayes.go

  • EnableRedisPersistence() — 启动时从 Redis 加载,重启不丢
  • persistSkill(skill) — 每次 RecordTrial 后同步写 Redis
  • LoadFromRedis() — 启动时加载所有 skill

新增 APIskill_crud.go

  • POST /api/v1/skills — 手动注册新 skill含 prompt_template
  • GET /api/v1/skills/{name} — 获取单个 skill 详情
  • DELETE /api/v1/skills/{name} — 删除 skill

文件变更

  • go/internal/api/routes/skill_bayes.go — 扩展结构体 + 持久化
  • go/internal/api/routes/skill_crud.go — 新建CRUD API

G7.2 — 技能生成LLM 结晶)

新增 skill_crystallize.go

  • CrystallizeFromMemory(mem *MemoryRecord) (*BetaSkill, error) — 将高质量记忆转为 skill
    • 调用 LLM 生成 prompt 模板(从 content 提取参数占位符)
    • 从 content 提取关键实体作为 LinkedEntities
  • SuggestSkillCandidates(limit int) []*MemoryRecord — 找出适合结晶的记忆
    • 条件:recall_count >= 5 AND quality_score >= 0.7 AND tier != "core" AND 未关联任何 skill

Consolidation 集成consolidation_pipe.go

  • 每次 consolidation 后,对候选记忆调用 CrystallizeFromMemory

新增 API

  • POST /api/v1/skills/crystallize — 手动触发结晶
  • GET /api/v1/skills/candidates — 查看当前候选列表

LLM Prompt生成 prompt 模板)

给定记忆内容,生成一个可执行的 prompt 模板:
1. 识别记忆中的可变参数,用 {param} 格式标注
2. 生成一段可直接执行的指令文本
3. 提取 3-5 个关键实体作为关联实体
记忆内容:{content}

G7.3 — 技能执行 + 反馈闭环

执行 APIskill_execute.go

  • POST /api/v1/skills/{name}/execute
    • Body: {"params": {"key": "value"}, "context": "optional context override"}
    • 加载 linked memories 作为 context
    • 调用 Hermes agentdelegate_task)执行 prompt
    • 返回执行结果

与 BayesianSkills 联动

  • 执行成功 → BayesianSkills.RecordTrial(name, true)
  • 执行失败 → BayesianSkills.RecordTrial(name, false)
    • ETA < 0.5:对 linked memories 的 decay_rate ×1.2(加速遗忘)

与遗忘联动

  • admin.go Forget 函数扩展:
    • 扫描记忆时,检查是否有 active skill 关联
    • 若有关联且 skill.ETA > 0.8degree +5
    • 若有关联且 skill.ETA < 0.5decay_rate ×1.2

新增 API

  • POST /api/v1/skills/{name}/execute — 执行 skill

技术细节

Redis Schema

zhiyi:skills        → HASH {skill_name: JSON(BetaSkill)}
zhiyi:skill_meta    → HASH {skill_name: JSON(SkillMeta)}  # LinkedMemoryIDs, LinkedEntities

BetaSkill 扩展结构

type BetaSkill struct {
    Name             string    `json:"name"`
    Alpha            float64   `json:"alpha"`
    Beta             float64   `json:"beta"`
    Trials           int       `json:"trials"`
    Successes        int       `json:"successes"`
    ETA              float64   `json:"eta"`
    Status           string    `json:"status"`  // active / probation / retired
    LastUpdated      time.Time `json:"last_updated"`
    // G7 新增
    PromptTemplate   string    `json:"prompt_template,omitempty"`
    LinkedMemoryIDs  []string  `json:"linked_memory_ids,omitempty"`
    LinkedEntities   []string  `json:"linked_entities,omitempty"`
    CreatedAt        time.Time `json:"created_at"`
}

验证计划

  1. G7.1 验证:注册 skill → 重启 Go API → skill 仍在 Redis
  2. G7.2 验证POST /api/v1/skills/crystallize → skill 生成prompt_template 非空
  3. G7.3 验证
    • POST /api/v1/skills/{name}/execute → 返回执行结果
    • trial 反馈 → Bayesian ETA 更新
    • ETA > 0.8 → linked memory 保护性增强

文件清单

文件 操作 说明
go/internal/api/routes/skill_bayes.go 修改 扩展结构体 + Redis 持久化
go/internal/api/routes/skill_crud.go 新建 CRUD API
go/internal/api/routes/skill_execute.go 新建 执行 API + 反馈闭环
go/internal/api/routes/skill_crystallize.go 新建 LLM 结晶逻辑
go/internal/api/server.go 修改 注册新路由

实施顺序

  1. G7.1(持久化)→ 2. G7.2(生成)→ 3. G7.3(执行+联动)