9.9 KiB
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 并行推进。