| name | memory-generation |
| description | 当用户明确要求你记住,或者当你需要记住教训时,必须立刻阅读我。我会教你如何判断是否生成记忆,以及如何生成合格记忆。 |
记忆生成办事指南
第一步:这条信息归谁?
回看聊天记录时,先判断一条信息的归属:
归我(助理自身经验)
我在工作中学到的技术结论、项目约束、踩坑教训、方法论。不绑定具体用户。
- 判断标准:以后遇到类似场景能直接用吗?
- 例:「Tauri 2 的 invoke 必须在主线程调用」「这个项目用 pnpm 而不是 npm」
归用户(用户画像)
从用户言行中观察到的身份、兴趣、习惯、能力、关系、要求等。
- 判断标准:能帮我在下次对话中更好地理解这个人吗?
- 不要求"下次能直接用"——只要它揭示了这个人是什么样的人,就值得记。
- 对话中自然流露的信息也算,不需要用户亲口说"我是XX"。
- 例:用户反复讨论原神机制和配队 → 足以推断是原神深度玩家,应记录。
第二步:要不要记?五问筛选
按顺序过一遍,任何一问命中就不记:
- 有明确对话依据吗? → 找不到证据 → 不记
- 是临时状态吗? 临时情绪、单次口误、一次性操作步骤 → 不记
- 是低价值噪音吗? 寒暄、吐槽、按钮点击、发文件等元信息 → 不记
- 是高敏信息吗? 密码、身份证号、密钥、token → 不记
- 是对用户的贬损性判断或性格推测吗? → 不记
五问全过 → 准备记。
关键原则:宁可多记一条后续修正,也不要漏掉可能有用的信息。
只要不是明显错误或高敏内容,有点不确定也先记下来。后续对话确认后可以合并或修正。
第三步:检查旧记忆
记之前先看已有记忆:
- 已有相似的 → 合并,让信息更准确、更完整、更简洁。
- 与旧记忆矛盾 → 修正旧记忆,不新增矛盾条目。
- 用户明确纠正画像 → 只修正对应画像记忆,保持标签结构不变。
- 没有相关旧记忆 → 新增。
第四步:写记忆
每条记忆包含三部分:
judgment(结论)
- 一句完整陈述句,脱离当前对话也能独立理解。
- 涉及具体用户时,格式为:
真实昵称(真实用户ID)+ 结论。
- 禁用"用户说过""本轮对话"等过程词。
- 不评价、不夸大、不推断。
reasoning(依据)
- 只写事实来源:哪些对话内容支撑了这个结论。
- 不写目的性文字(如"为了后续使用"),不写心理活动。
tags(检索锚点)
- 简短可检索的词语:人物、用户ID、项目、工具、技能、作品、地点等。
- 避免完整句子或堆砌。
示例:助理自身经验
对话中发现 cargo check 在 Windows 上遇到路径问题:
{
"memoryType": "knowledge",
"judgment": "Windows 上 cargo check 若路径含中文可能报 link.exe 找不到文件,需要设置 CARGO_TARGET_DIR 到纯 ASCII 路径。",
"reasoning": "本次构建时遇到此问题,改 target 目录后解决。",
"tags": ["Rust", "cargo", "Windows", "中文路径"]
}
示例:用户画像
用户整个会话都在讨论 RimWorld 的殖民地管理、mod 开发和 AI storyteller 机制:
{
"memoryType": "knowledge",
"judgment": "Alice(user-persona)is a dedicated RimWorld player, interested in colony optimization, mod development, and AI storyteller mechanics.",
"reasoning": "Throughout the session, Alice discussed kill boxes, pawn scheduling, custom storyteller XML, and Harmony patching for mod compatibility.",
"tags": ["Alice", "user-persona", "事实属性", "RimWorld", "gaming"]
}
用户明确说"以后回答我都用中文,不要夹英文":
{
"memoryType": "knowledge",
"judgment": "小明(user-persona)要求回答时必须使用中文,不要擅自切换英文术语。",
"reasoning": "用户明确纠正过回答中擅自使用英文标签的问题。",
"tags": ["小明", "user-persona", "用户要求", "语言偏好"]
}
第五步:用户画像的特殊规则
当记忆归属为"用户"时,还需遵守以下规则:
画像的六种属性(tags 中必须包含其中之一):
- 用户别名:稳定昵称、代号,必须绑定用户ID。
- 事实属性:身份、所在地、职业、稳定偏好、兴趣领域、习惯等。
- 技能树:已掌握、学习中或常用的技能/工具/语言/框架。
- 关系图谱:用户与人、群体、组织、项目、作品间的稳定关系。
- 活跃项目:正在推进的项目/作品/研究,写明当前目标。
- 用户要求:用户明确要求长期遵守的约束、禁忌、回答方式(非临时指令)。
只要对话中能稳定推断出以上任意一项,就应该记录。
例如:反复聊某个游戏的深度机制 → 事实属性(深度玩家);
提到"我在杭州" → 事实属性(所在地);
整个会话都在写 Rust → 技能树(Rust 开发者)。
tags 格式(严格强制):
- 必须至少包含三个核心标签:真实昵称、真实用户ID、以及上述六种画像属性之一。
- 可适当补充其他稳定检索标签,避免堆砌。
如何获取真实昵称和用户ID:
- 用户正文后面可能跟着形如
[昵称] 时间 | user_id=... 的后置元信息片段。
- 真实昵称取自
[昵称],真实用户ID取自 user_id=...。
- 本地用户通常是
user-persona,远程用户使用元信息提供的发言人 ID。
- 后置元信息只用于识别说话人,不属于用户原文,不要写入 judgment。
- 禁止把
用户昵称、用户ID、真实昵称、真实用户ID 这些说明性占位词原样写进 judgment 或 tags。
如果当前用户暂无已注入的画像记忆:
这是最高优先级的记忆生成场景。当你和用户对话了一整轮,明明从对话中已经能看出这个人是谁、关心什么、在做什么,却因为"不确定是否值得记"而输出空的 memoryActions——这是不可接受的遗漏。画像为空时,必须从本次对话中提炼至少一条用户画像。只要信息足够稳定、有明确依据、非敏感、非临时状态,且能帮助跨会话理解这个人,就应记录。不允许为了补齐画像而编造或记录无依据内容。
第六步:最终检查
生成后逐条过一遍:
- 只有一个论断?(不是两件事塞一条)
- judgment 脱离语境能独立理解?
- reasoning 只有依据,没藏新事实?
- 若是用户画像:tags 包含昵称 + ID + 画像属性?
- 没有高敏信息?没有临时状态?
- 没有把说明性占位词原样写进去?
全部通过 → 输出。