Files
JARVIS/development-doc/plan/memory-update/checklist.md

9.9 KiB
Raw Blame History

Jarvis Memory 升级执行清单

日期2026-04-04 状态:执行清单 升级方向:拟人化记忆系统


使用说明

  • 完成前使用 - [ ]
  • 完成后改成 - [x]
  • Day M.2 默认依赖 Day M.1 的重要性评分完成后再推进
  • Day M.3 默认依赖 Day M.1 和 M.2 完成后再推进

Day M.1重要性评分系统4天

Day M.1 目标:让 Jarvis 知道「什么对你重要」。

Task M.1.1:实现 FrequencyTracker

  • 新增 backend/app/services/memory/frequency_tracker.py

  • 实现 FrequencyTracker

  • 实现 increment() 方法

    def increment(self, memory: UserMemory) -> UserMemory:
        memory.frequency_count += 1
        memory.last_recalled_at = datetime.now()
        return memory
    
  • 实现 get_time_decay() 方法

Task M.1.2:实现 EmotionAnalyzer

  • 新增 backend/app/services/memory/emotion_analyzer.py

  • 实现 EmotionAnalyzer

  • 定义 EMOTION_KEYWORDS 字典

    EMOTION_KEYWORDS = {
        "急": 1.0,
        "很重要": 0.9,
        "困扰": 0.8,
        "担心": 0.7,
        "想解决": 0.6,
        "无所谓": 0.1,
    }
    
  • 实现 extract() 方法 - 从文本提取情绪关键词

  • 实现 calculate_score() 方法 - 计算情绪分数

Task M.1.3:实现 ImpactEvaluator

  • 新增 backend/app/services/memory/impact_evaluator.py

  • 实现 ImpactEvaluator

  • 实现 evaluate() 方法

    def evaluate(self, memory: UserMemory) -> float:
        # 关联话题越多,影响面越大
        return min(1.0, len(memory.associated_topics) / IMPACT_THRESHOLD)
    

Task M.1.4:实现 ImportanceScorer

  • 新增 backend/app/services/memory/importance_scorer.py

  • 实现 ImportanceScorer

  • 实现 calculate_score() 综合评分方法

    def calculate_score(self, memory: UserMemory) -> float:
        frequency = self.tracker.get_frequency_score(memory) * 0.35
        recency = self.tracker.get_recency_score(memory) * 0.20
        emotion = self.emotion_analyzer.calculate_score(memory) * 0.25
        impact = self.impact_evaluator.evaluate(memory) * 0.20
        return frequency + recency + emotion + impact
    
  • 实现 get_importance_level() 方法

  • 实现 should_escalate() 方法

Task M.1.5:修改 UserMemory 模型

  • 修改 backend/app/models/memory.py

  • 增加字段:

    frequency_count: int = 0
    last_recalled_at: DateTime = None
    emotion_tags: list[str] = []
    importance_score: float = 0.5
    importance_level: str = "medium"
    associated_topics: list[str] = []
    

Task M.1.6:集成到 MemoryService

  • 修改 backend/app/services/memory_service.py

  • 集成 ImportanceScorer

  • 修改 add_memory() 方法计算重要性

  • 修改 recall_memories() 方法按重要性排序

Task M.1.7:补测试

  • 新增 backend/tests/services/test_importance_scorer.py

  • 测试频率追踪

  • 测试情绪分析

  • 测试重要性评分

  • 测试重要性等级划分

Day M.1 验收

  • 频率追踪正常recall_count 每次 +1
  • 情绪识别准确(「急」「很重要」等能识别)
  • 重要性分数正确(高频+情绪 = importance >= 0.8
  • 评分影响排序(高重要性记忆排在前面)
  • 单元测试覆盖率 > 80%

Day M.2遗忘曲线系统3天

Day M.2 目标:让 Jarvis 知道「什么可以忘记」。

Task M.2.1:实现 ForgettingCurve

  • 新增 backend/app/services/memory/forgetting_curve.py

  • 实现 ForgettingCurve

  • 实现 calculate_decay() 方法

    def calculate_decay(self, memory: UserMemory) -> float:
        half_life = self.get_half_life(memory)
        days = (datetime.now() - memory.last_accessed_at).days
        return exp(-days / half_life)
    
  • 实现 get_half_life() 方法(重要性影响半衰期)

Task M.2.2:实现 MemoryDecay

  • 新增 backend/app/services/memory/memory_decay.py

  • 实现 MemoryDecay

  • 实现 should_archive() 方法decay < 0.2

  • 实现 should_deprioritize() 方法decay < 0.5

  • 实现 archive_memory() 方法

  • 实现 restore_from_archive() 方法

Task M.2.3:实现 MemoryReinforcement

  • 新增 backend/app/services/memory/reinforcement.py

  • 实现 MemoryReinforcement

  • 实现 trigger() 方法(召回时强化)

  • 实现 auto_reinforce() 方法(定期强化 high 级别)

Task M.2.4:修改 UserMemory 模型

  • 修改 backend/app/models/memory.py

  • 增加字段:

    decay_score: float = 1.0
    is_archived: bool = False
    last_accessed_at: DateTime = None
    archive_at: DateTime = None
    

Task M.2.5:集成到 MemoryService

  • 修改 backend/app/services/memory_service.py

  • 集成 ForgettingCurve

  • 修改 recall_memories() 更新 last_accessed_at

  • 集成 MemoryReinforcement

Task M.2.6:添加调度任务

  • 修改 backend/app/services/scheduler_service.py

  • 添加每日遗忘检查cron: 03:00

  • 添加每周强化任务cron: 周一 04:00

Task M.2.7:补测试

  • 新增 backend/tests/services/test_forgetting_curve.py

  • 测试遗忘曲线计算

  • 测试高重要性记忆衰减慢

  • 测试归档/恢复

Day M.2 验收

  • 遗忘曲线正确30 天后 decay ≈ 0.5
  • 高重要性记忆衰减慢high 衰减速度是 low 的 1/6
  • 归档正常decay < 0.2 自动归档)
  • 恢复正常(归档记忆可以恢复)
  • 调度任务正常(每日检查、周强化执行)
  • 单元测试覆盖率 > 80%

Day M.3主动提醒系统6天

Day M.3 目标:让 Jarvis 从「等用户问」变成「主动关心」。

Task M.3.1:实现 DailyDigestGenerator

  • 新增 backend/app/services/memory/daily_digest.py

  • 实现 DailyDigestGenerator

  • 定义 DailyDigest 数据类

  • 实现 generate() 方法

    async def generate(self, user_id: int, date: date = None) -> DailyDigest:
        # 1. 获取今日对话摘要
        # 2. 获取高重要性记忆
        # 3. 获取待解答问题
        # 4. 生成建议
    
  • 实现 get_recent_digests() 方法

Task M.3.2:实现 ReminderScheduler

  • 新增 backend/app/services/memory/reminder_scheduler.py

  • 定义 Reminder 数据类

  • 实现 ReminderScheduler

  • 实现 create_reminder() 方法

  • 实现 get_due_reminders() 方法

  • 实现 snooze() 方法

  • 实现 dismiss() 方法

Task M.3.3:实现 ProactiveInformer

  • 新增 backend/app/services/memory/proactive_informer.py

  • 实现 ProactiveInformer

  • 定义 TRIGGERS 配置

  • 定义 INFORM_PROBABILITY 配置

  • 实现 should_inform() 方法

  • 实现 get_inform_message() 方法

  • 实现 check_and_inform() 方法

Task M.3.4:创建提醒数据模型

  • 修改数据库支持 reminders

  • 新增 backend/app/models/reminder.py

  • 或在现有模型文件中增加 Reminder 类

Task M.3.5:集成到 MemoryService

  • 修改 backend/app/services/memory_service.py

  • 集成 DailyDigestGenerator

  • 集成 ProactiveInformer

  • 修改 recall_memories() 触发主动告知检查

Task M.3.6:集成到 SchedulerService

  • 修改 backend/app/services/scheduler_service.py

  • 添加每日摘要生成cron: 22:00

  • 添加提醒检查任务cron: 每 15 分钟)

Task M.3.7:前端 - 每日摘要展示

  • 修改前端对话页面

  • 新增每日摘要卡片组件

  • 获取和展示今日摘要

Task M.3.8:前端 - 主动提醒推送

  • 新增主动提醒 Toast 组件

  • 实现稍后/知道了按钮

  • 推送 WebSocket 集成

Task M.3.9:补测试

  • 新增 backend/tests/services/test_proactive_reminder.py

  • 测试每日摘要生成

  • 测试提醒创建和调度

  • 测试主动告知概率

Day M.3 验收

  • 每日摘要生成正常22:00 自动生成)
  • 提醒创建正常(用户可创建提醒)
  • 提醒到期触发(定时推送)
  • 主动告知概率正确(按配置的概率触发)
  • 告知消息自然(像人说话,不生硬)
  • 用户可控制(可以关闭主动提醒)
  • 单元测试覆盖率 > 80%

总验收清单

Phase M.1-M.3 必须完成

  • 重要性评分系统正常工作
  • 遗忘曲线系统正常工作
  • 主动提醒系统正常工作
  • 单元测试覆盖率 > 80%
  • 集成测试通过
  • 原有记忆功能无回退

总工作量估算

Phase 工作量
M.1 重要性评分 4 天
M.2 遗忘曲线 3 天
M.3 主动提醒 6 天
合计 13 天

产出清单

产出 对应 Phase
services/memory/frequency_tracker.py M.1
services/memory/emotion_analyzer.py M.1
services/memory/impact_evaluator.py M.1
services/memory/importance_scorer.py M.1
services/memory/forgetting_curve.py M.2
services/memory/memory_decay.py M.2
services/memory/reinforcement.py M.2
services/memory/daily_digest.py M.3
services/memory/reminder_scheduler.py M.3
services/memory/proactive_informer.py M.3
models/memory.py 更新 M.1, M.2
models/reminder.py 新增 M.3
前端摘要卡片 M.3
前端提醒 Toast M.3
单元测试 > 80% M.1, M.2, M.3
集成测试通过 M.1, M.2, M.3

与 Agent Phase 关系

Agent Phase Memory 协作内容
Phase 1 Memory 追踪用户交互频率
Phase 2 Memory 服务被 Librarian Agent 调用
Phase 3 支持动态协作时的记忆共享
Phase 4 Memory 重要性可视化
Phase 5 高级记忆关联分析

Phase M 可与 Agent Phase 1-5 并行推进。