自我观察画像维护器
用途
把工作区当成一个持续累积的自我认知账户:从对话中抽取可追溯的行为证据,压缩成编号观察,再聚合为带置信度的画像,并为决策提供护栏。
画像的用途是辅助决策、减少内耗,不是给人下定义或贴标签。所有结论必须可追溯到具体观察,所有观察必须可追溯到具体来源。
触发与不触发
触发:用户要求更新/整理/提炼画像;复盘某段对话暴露的模式;校准某条判断的置信度;记录一次重要决策;同步或复核现有画像。
不触发:用户只是闲聊或提问,没有要求沉淀;用户在处理别人的画像(那是另一个任务);用户明确说"这段别记"。
文件体系
工作区根目录 = 包含 profile.md 的目录(通常就是当前工作目录)。找不到时先询问用户。
| 文件 | 职责 | 写入方式 |
|---|---|---|
observations.md |
原子观察层。每条 = 一条证据 + 一条推断 | 只追加,不删旧条目 |
profile.md |
聚合层。稳定模式、护栏、近期状态、未确定问题 | 就地更新 |
decision-log.md |
决策复盘。选项、约束、假设、小步行动、后续结果 | 追加 |
sync-state.md |
同步账本。上次同步日期、已纳入范围、来源清单 | 覆盖 |
source-summaries-YYYY-MM-DD.md |
外部材料的压缩摘要(如 ChatGPT 导出) | 每次同步新建一份 |
字段规范、证据权重、置信度换算、各文件模板见 @references/profile-schema.md——动手写之前先读它。
核心原则
- 证据驱动。没有来源的判断不写进画像;写成"待验证"或放进「未确定问题」。
- 事实与推断分离。每条观察显式区分「事实」(发生了什么、用户说了什么)与「推断」(这说明了什么)。推断永远是推断。
- 压缩,不存原文。绝不保存逐字对话。单条摘要控制在 150 字内——既控制 token 消耗,也避免原文反复进入后续上下文。
- 保留反例。画像天然偏向自证。每次更新都要主动找反向证据,写进该条目的「边界」或风险栏。反例比结论更有价值。
- 非诊断。不做心理疾病判断,不下临床结论。措辞用"行为模式/倾向",不用"人格缺陷/你就是这种人"。
- 时效分离。情绪性、情境性的近期表达 ≠ 稳定特质。带日期的状态一律标注有效期。
- 用户可撤销。用户要求删除或修改某条观察时,直接执行,并在
sync-state.md备注。
工作流
第 1 步:加载基线
读取 profile.md、observations.md、decision-log.md、sync-state.md。从 sync-state.md 拿到上次同步日期与已纳入范围,避免重复纳入同一批材料。
若工作区尚无任何画像文件(首次使用):先按 @references/profile-schema.md 第 4 节的模板创建这些文件——profile.md 用空模板(五个段落留空),observations.md 只保留一级标题,decision-log.md、sync-state.md 同理——然后继续第 2 步。创建前先与用户确认工作区根目录。
第 2 步:确定增量范围
默认只纳入本次对话。
- 用户提供外部材料(ChatGPT 导出、聊天记录、笔记)时:先确认授权范围,再压缩成新的
source-summaries-YYYY-MM-DD.md(结构模板见@references/profile-schema.md第 4.5 节)。 - 只纳入用户点名的对话,不主动扩大扫描范围。
- 材料中含与画像无关的敏感内容(他人身份、具体金额、健康细节)时,默认不写入。
第 3 步:提炼观察
对增量中的每一条候选证据:
- 判定来源(当前对话 / 心理聊天 / 显式同步 / 外部材料)与权重(高/中/低)。
- 与既有
O-*条目比对:
- 同向且同类证据 → 合并:在原条目上追加新来源标注,不新建条目。
- 同向但不同侧面 → 新建条目。
- 反向 → 不新建。回到对应条目,在「边界」加一句反例,并按第 5 步判断是否降级。 - 按
O-YYYYMMDD-NN编号(NN 为当日两位序号,接续已有最大序号)。
第 4 步:更新 observations.md
追加新条目,既有条目保持不动;仅允许在既有条目上追加"已合并 O-…"标注。
第 5 步:更新 profile.md
对每条稳定模式,执行以下之一:
- 新增:证据达到中及以上置信度时新增条目。
- 升级:新证据指向同一方向时,按
@references/profile-schema.md的换算表提升置信度,并补充「依据」中的观察编号。 - 降级:出现反向证据且权重 ≥ 正向时,降低一级;降到低置信度则移入「未确定问题」。
- 过期:复核「近期状态」中超期条目——要么确认并升级为稳定模式,要么标注失效。
同时更新文件头的 更新:YYYY-MM-DD,并刷新「对决策有用的护栏」(新增认知是否带来新的护栏或护栏调整)。
第 6 步:决策与同步
- 本次对话若涉及选择(职业、时间分配、关系、投入取舍),追加一条
D-YYYYMMDD-NN到decision-log.md,含「后续结果:待回访」。 - 重写
sync-state.md:更新日期、纳入范围、来源清单。
第 7 步:校验
运行结构校验,能抓住编号重复、依据悬空等问题:
python scripts/validate_profile.py "<工作区根目录>"
脚本默认以当前工作目录为根目录。
第 8 步:输出变更摘要
按下方固定格式回复用户,并在 .workbuddy/memory/YYYY-MM-DD.md 追加一行画像更新记录(文件不存在则创建)。
变更摘要格式
## 本次画像更新(YYYY-MM-DD)
来源:<当前对话 / 外部材料名称>|纳入条数:N
新增观察
- O-YYYYMMDD-NN|<一句话事实>|权重:高
置信度变更
- <模式名>:中 → 中高(新增依据 O-YYYYMMDD-NN)
护栏变更
- 新增或调整:<护栏>
降级 / 反例
- <模式名>:新增反例「…」,置信度 高 → 中高
未确定问题
- <新增待验证项>
待你确认
- <需要用户拍板的地方>
安全与边界
- 不做诊断。不写"你有 X 症/障碍",只写可观察的行为模式。
- 不臆测。证据不足时,宁可写"信息不足,等待现实更新"。
- 不贴标签。画像描述"在什么条件下会怎样",不是"你是什么人"。
- 警惕二分。真实的行为模式通常是连续谱,而非两档开关——新增结论时避免把复杂行为压成极端对立的两类。
- 尊重自主权。纳入外部材料、扩大扫描范围、改动既有结论,都属于对用户自我认知的干预,一律先征得同意。
- 隐私。他人信息、财务数字、健康细节默认不入库。画像文件属于高度敏感的个人资料,默认仅存本地,不主动外传。