跳转至

SOP-004:融合画像更新

第3层 · 跨维度综合画像 · 月度基线 + 事件插队 · 十年归档

概述

融合画像是"AI 定期产出的跨维度综合画像",整合教育、社交、成长档案、对话记录等多个维度,生成一份结构化的苏子桐当前状态快照。

不是替换原始素材——画像是只读引用,素材文件不动。

三层画像体系

层级 名称 更新者 频率 定位
深度画像 融合画像 AI 月度+事件插队 全面快照,有时间版本
· 稳定层 stable_profile.txt 随融合画像更新 权威事实,注入对话(话题匹配)
· 动态层 PowerMem 画像 AI 每次对话 实时印象,对话中自动学习
维度目录 各维度.md 人工/AI 不定期 原始素材,融合画像的数据源

周期规则

月度基线(雷打不动)

  • 时间: 每月 1 日 凌晨生成
  • 一年: 12 篇
  • 十年: 120 篇(不足 10MB)
  • 覆盖月份: 上月完整数据

事件插队(按需触发)

同样生成一份融合画像,不占用月度名额。

插队条件(至少满足其一): - 重大里程碑(第一次……) - 环境变化(搬家、转学、新学校) - 家庭事件(弟妹出生) - 用户主动要求"出一篇画像" - 雷达扫描发现某个维度变化量异常大(由人工判断)

命名规则: 融合画像_YYYY-MM_事件描述.md

为什么用月不用双周

  • 6 岁孩子月月有变化,双周会有一半"没啥新东西"
  • 事件插队补了双周的缺口——重大变化不用等整月
  • 十年保持统一节奏:年龄越大变化越慢,月度刚好

命名规则

文件路径

融合画像/
├── 2026/
│   ├── 融合画像_2026-07.md           ← 7月月度
│   ├── 融合画像_2026-09_上大班.md    ← 🚨 事件插队
│   ├── 融合画像_2026-11.md           ← 11月月度
│   └── ...
├── 2027/
│   └── ...
├── 融合画像_latest.md                 ← 始终复制最新的那篇
└── 索引.md                            ← AI自动维护的年表索引

格式

融合画像_YYYY-MM.md              ← 月度
融合画像_YYYY-MM_事件描述.md     ← 事件插队
  • YYYY:年份(4位)
  • MM:月份(2位,01-12)
  • 事件描述:简短、中文、不超 10 字

内容结构

每篇融合画像按以下模板生成:

# 融合画像 · YYYY年MM月

> 生成时间:YYYY-MM-DD
> 数据范围:YYYY-MM-01 ~ YYYY-MM-月末

## 📖 教育进展
- 阅读:当前级别/进度
- 学习:新增技能/知识点
- 课外:活动参与情况

## 🌟 成长里程碑
- 本月新增里程碑(首次……)
- 正在发展的能力

## 💬 社交与性格
- 社交关系变化
- 性格观察
- 情绪特点

## 🏷️ 标签聚合
- 本月高频标签
- 标签权重变化趋势

## 📝 AI 观察
> 跨维度综合分析——注意非重复性总结,而是"这些维度放在一起看到了什么"

归档与版本管理

  • 所有融合画像按年份归档到 融合画像/YYYY/ 子目录
  • 融合画像_latest.md 始终指向最新那篇(快速查阅入口)
  • 融合画像/索引.md 自动维护年表索引,格式:
# 融合画像索引

## 2026
| 日期 | 版本 | 类型 | 亮点 |
|------|------|------|------|
| 07-06 | 2026-07 | 月度 | 首篇 |
| 09-01 | 2026-09 | 事件:上大班 | |

## 2027
...

执行方式

  • 月度基线: 由 Hermes Cron 触发(每月1日 5:00,随雷达批次)
  • 事件插队: 用户发送"出一篇画像"指令时手动触发

反哺注入:融合画像→对话系统

生成画像后,运行生成脚本自动更新 stable_profile.txt,下一句对话自动生效。

更新步骤

  1. 生成新的融合画像后,运行生成脚本:
    python3 /opt/data/scripts/stable_profile_generator.py
    
  2. 脚本 v2 特性:
  3. 读取 融合画像_latest.md,按维度提取结构化数据
  4. 保留融合画像未覆盖的话题(生活作息、兴趣爱好等不受影响)
  5. 自动过滤"待录入"等占位符
  6. 备份旧文件到 .bak
  7. 更新后立即生效,不需要重启容器

自动触发(v2 新增)

触发方式 频率 说明
月度基线 cron 每月1日 05:00 生成上月融合画像 + 运行生成器 + 重启
事件插队 雷达检测到里程碑 即时生成事件篇画像 + 运行生成器 + 重启
手动运行 你说"出一篇画像" 即时生成

文件格式

<topic name="基本信息" keywords="年龄,几岁,生日,...">
苏子桐出生于2020年11月26日...
</topic>

<topic name="学习" keywords="RAZ,英语,阅读,...">
英语启蒙2024年11月开始...
</topic>

<topic name="_default">
简短概要(兜底用)
</topic>
  • 每个 <topic> 块有 name(名称)和 keywords(触发关键词,逗号分隔)
  • 用户说话命中关键词 → 注入对应块
  • _default 块在无话题命中时兜底注入
  • 目前共 6 个话题块,在 SOP-001 中有完整列表

生成脚本位置

/opt/data/scripts/stable_profile_generator.py

支持参数: - --profile 指定融合画像文件(默认读取 融合画像_latest.md

旧的 inject_portrait_to_powermem.py

该脚本(切片 embedding → 写入向量库)已不再使用,保留在仓库但不执行。新机制由 dialogue.py 在每次对话时直接读取 stable_profile.txt 并做话题关键词匹配。

不变原则

  1. 永远不修改历史融合画像——它们是时间的真实切片
  2. 只有 latest.md 会覆盖——但 latest.md 不视为"历史"
  3. 索引.md 每次新增画像时更新
  4. 一份融合画像不与另一份合并

性能估计

指标 估算
每篇大小 ~3-5KB markdown
十年累计 12×10=120篇,~500KB-600KB
含事件插队 预计 15-18 篇/年,十年 ~1MB
Obsidian 加载 无影响

变更日志

日期 版本 变更
2026-07-06 v1 初版,月度+事件插队+十年归档规则
2026-07-09 v2 画像体系重构:新增稳定层/dynamic层双层结构,反哺注入从向量切片改为stable_profile.txt文件直接注入

相关文档

方向 链接
🔗 上游 SOP-003 雷达扫描与推送(事件触发) · SOP-002 生活库数据抽取联动(数据来源)
🔗 下游 SOP-001 小樱桃语音交互体系(反哺输出)
🔗 产出 最新画像 · 画像索引
📝 变更 版本日志