diff --git a/memory/history_insight_sop.md b/memory/history_insight_sop.md new file mode 100644 index 000000000..161cc676a --- /dev/null +++ b/memory/history_insight_sop.md @@ -0,0 +1,65 @@ +# 历史洞察扫描 SOP + +从用户历史对话中提取情绪事件、持续活动、已消失事项。 + +## 数据源 + +`../memory/L4_raw_sessions/all_histories.txt`(`compress_session.py` 产出)。不存在则先运行脚本。只读 user 内容。 + +## 执行约束 + +- 增量:维护已处理 session 列表,每次只扫新 session +- 分批处理时不拆分同一 session + +## 产物 + +存 `./history_insight/`(不存在则创建),格式自定。产物是数据库,不是报告——每条发现都是下游任务的输入,遗漏即损失。 + +产物包含三个持久状态(可以是多个文件或一个文件内的多个区域): +1. **活动知识层** — 每次扫描读取、更新、写回。记录所有识别到的活动及其最终分类。 +2. **情绪事件列表** — 追加式,只增不改。 +3. **增量标记** — 记录最后处理到的 session 标识,下次从此处之后开始。 + +每条发现必须含: +- session 标识(与 L4 zip 内文件名一致,如 `0403_2013-0403_2145`) +- 关键原文片段(可 grep 定位回原日志) +- 发现类型标签 + +## 提取标准 + +### 情绪事件 + +标记语气上的明显波动,不是内容上的。 + +**标记**:愤怒/质问/责备、讽刺挖苦、惊喜感激、反复纠正后语气突变、沮丧/无奈、预期落空后的失望或方向突变。 + +**不标记**:纯功能指令、语气平和的反馈、讨论负面话题但本人情绪稳定。 + +### 持续活动与已消失事项 + +维护一个持久的活动知识层(存 `./history_insight/`)。这是跨次运行的持久状态——每次扫描读取它、更新它、写回它。它不是报告,是数据库。 + +**你在建模的是**:这个用户的生活里现在有什么、曾经有什么。活动识别的唯一证据是用户在session中主动发起的请求或讨论——系统提示词、SOP列表、记忆引用中的被动出现不构成证据,不能从"系统里存在某个SOP"推断用户在做某事。 + +- 持续活动 = 仍然存在于用户生活中的事——值得深入了解其细节 +- 已消失 = 曾经存在但已离开的事——可能导致已有记忆过时 + +判断"离开"不需要用户明确表态。事项本身的性质就是证据——有终点的事做完了就是消失了,没终点的事沉默不代表消失。 + +每个条目必须归入二者之一。 + +归类原则: +- 相同专有名词/工具名/项目名 → 同一条目 +- 通用动作不单独成条目,除非反复出现于同一领域 +- 宁多建不错合并 + +每条记录含:涉及的 session 列表、代表性原文片段、出现频次。 + +## 坑点 + +- 用户消息的含义不在关键词里,在语气和上下文里。脚本扫描只能看到主题,看不到情绪、看不到习惯、看不到事项的生命周期变化。必须阅读原文。 +- session 标识必须与 L4 zip 内文件名一致(如 `0403_2013-0403_2145`),不能用模糊占位(如 xxxx)——无法定位回原日志的记录没有价值 +- 情绪判断看语气不看内容——讨论负面话题但本人情绪稳定不标记 +- 活动归类是"用户在做什么"的知识表示,不是对话摘要 +- 写入产物前检查一致性:同一条目不能同时出现在"持续"和"已消失"中。如果阅读时收集到矛盾信号(频次高 vs 已停止),必须做最终裁决再写入 +- "持续"和"已消失"是两个独立分类,不能合并为一个列表用子状态(如"已消退")规避。产物中必须有明确分开的两个区域或两个文件