user-md:用户画像文件纪律
你的 AI 对你的理解,应当存在一个你自己拥有的文件里——不是锁在某家厂商的云端账号里。本文是画像文件的纪律(教 agent 怎么建、怎么养、怎么用这个文件),不是记忆系统(不含运行时与自动管道)。细则按需读取
references/:养成细则curation.md、分层判据与宿主关系layering.md。全套文件的体量与频次阈值只在references/curation.md的阈值表定义一次,本文与其他文件一律引用、不复抄数字。
核心立场(四句)
- 文件你拥有:明文 Markdown,任何编辑器可读、可改、可删,随文件夹迁移(moves when you move)。
- 双轨分明:手写区归用户,agent 只可建议不可改写;沉淀区归 agent,只可追加、条条留痕。
- 不静默改写:任何改写留痕(变更记录一行);全部内容对用户可见、可编辑、可删除。
- 不编事实:沉淀区只记真实观察,单次观察必须带待验证标;没观察到的不写。
一、建:文件族与五节
文件族三件
| 文件 | 装什么 | 特性 |
|---|---|---|
USER.md | 跨机器、跨项目仍成立的用户画像 | 可迁移;每会话全量注入,须保持小体量(阈值见 references/curation.md) |
USER.local.md | 换台机器就失效的内容:环境/路径/工具链/凭据指针 | 机器本地;必须 gitignore |
user/*.md 溢出辅文件 | 沉淀区超下沉线时移出的细节 | 主文件留一行索引,按需加载 |
USER.md 五节(定案结构,模板见 templates/USER.md)
## Who I am— 身份事实:角色/背景/怎么称呼。事实与偏好分开存(两类信息分开是多家产品级记忆系统的共同做法)。## How I work— 偏好与风格:沟通方式/交付物标准/验收习惯/默认授权边界。## Our relationship— 关系与协作:什么该问、什么直接做、反馈怎么给。## What I'm up to— 动态认知层:当前目标与在做的事——显式可修订假设,随证据更新,过期即清。## Learned by your agent— agent 沉淀区(规则见下节双轨制)。
命名纪律:节名沿 facts / preferences 谱系;persona 一词全文禁用——UX 语境指虚构原型用户、agent 语境指 agent 自身人格,双重占用,用了必歧义。
起步:从 templates/ 拷贝两份模板到工作区根目录,把 USER.local.md 加进 .gitignore,花五分钟填前四节。留空也能跑,但 agent 每次会话对你零认知。
二、养:双轨制与沉淀纪律
双轨制
-
手写区(前四节):用户亲笔。agent 发现内容过期或矛盾时只可建议(给出建议文本+理由),用户自己动手或明确同意后才改,改完在文件尾变更记录留一行。
-
沉淀区(第五节):agent 追加。每条格式:
- 【YYYY-MM-DD · 来源事件】规则正文。【单次观察待验证】日期+来源是每条的出生证明;单次观察必须带待验证标。同型观察重现达到升区门槛(阈值见
references/curation.md)才可发起升区提议,用户确认后才迁入手写区。完整格式与流程见references/curation.md。
信号与误报
- 可沉淀信号三类:纠正(用户纠正了你的做法或理解)、重复偏好(同类要求在不同场合再现)、明确表达(用户直说「记住」「以后都…」)。
- 当场追加硬规则:命中三类信号且通过误报过滤 → 当场追加沉淀区——不攒批、不留到会话结束凭记忆补写。识别到了却不写,等于没有这条纪律。
- 误报过滤:一次性语境不沉淀(本任务特有要求 ≠ 长期偏好);极短消息默认忽略(过滤线见
references/curation.md);情绪时刻的表达压低置信;与任务强绑定的指令归任务、不归画像。
整合与体量
- 定期整合去重(周期见
references/curation.md阈值表):同义条目合并、过期条目清理;整合与升区迁出是重写沉淀区仅有的两个合法场景,均须在变更记录留痕。 - 主文件超体量目标、或沉淀区超下沉线(阈值均见
references/curation.md)→ 细节下沉user/*.md辅文件,主文件留索引行。
三、用:注入与分流
每会话注入
主文件保持小体量的意义就在这里:小到可以每会话全量注入。接法按宿主选其一(各宿主详情见 README 的 Compatibility 节):
- 指令文件引用行:如 Claude Code 在 CLAUDE.md 加一行
@USER.md; - 无引用机制的宿主:系统提示或规则文件加一句「会话开始先读 USER.md」;
- 可挂 session-start hook(可选接法——本 skill 不自带任何运行时,不挂 hook 纪律照样成立)。Claude Code 示例配置:
{
"hooks": {
"SessionStart": [
{ "hooks": [ { "type": "command", "command": "cat USER.md" } ] }
]
}
}
(POSIX 示例;Windows 或其他宿主换等价命令。挂不挂、怎么挂由用户决定。)
分流判据三句(弱模型兜底,详见 references/layering.md)
- 换台机器就失效 →
USER.local.md; - 换个项目/岗位就不成立 → 该项目自己的本地文件;
- 其余 →
USER.md。
指针纪律:已有权威源的事实不复抄,只放指针行(「详见某文件」)——防双源漂移。判例见 references/layering.md。
隐私红线
- 本文件族天然全是 PII——按你手里最敏感的内容对待。
USER.local.md必须 gitignore,永不入库。USER.md推到公开仓库前必须人工过一遍:真名、联系方式、雇主内情、凭据指针逐项审。- 明文密码 / API key / token 永不写入本文件族——只写「凭据在哪、怎么调用」的指针。
- 模板永不预填真实内容——本 skill 自带模板全部为占位符+虚构示例。
简例
- 用户又一次说「回复先给结论」,沉淀区同型待验证条目已达升区门槛(见
references/curation.md)→ 起草升区提议(合并成一句,拟入 How I work),等用户确认后迁移。 - 用户说「这台机器上用 pnpm 别用 npm」→ 换机器即失效 → 记
USER.local.md。 - 用户在某个仓库里说「这个项目提交信息用西班牙语」→ 换项目不成立 → 记该项目本地文件,
USER.md不写。 - 用户深夜发牢骚「烦死了,都别给我看长回复」→ 情绪时刻 → 按单次观察沉淀、压低置信,不直接改手写区,更不当铁律。
- 用户手写区写了「我在做 X 项目」但三个月没提过 → agent 建议更新 What I'm up to 节,附理由;用户点头前一个字不动。
版本与更新自检
- 当前版本:1.0.0(与
plugin.json一致)。 - 仓库:
https://github.com/LucioLiu/user-md - 自检:plugin 安装的,宿主更新机制会跟随版本号;手动 clone / 模板拷贝的,diff 本文件与仓库 main 分支即可知是否落后。你自己的
USER.md文件族不受 skill 更新影响——那是你的数据,不是 skill 的一部分。