跳转到内容

记忆与人格

有三套互相独立的机制决定八千代在对话之间带走什么。它们容易混淆,所以:

装什么谁来写
记忆关联过去对话、可以修订的笔记智能体,通过 remember 或自动整理
SOUL.md助手的人格与演化中的特质你和智能体
USER.md你是谁,以结构化表格记录智能体,通过 updateProfile

对话保留原始记录,记忆笔记帮助八千代重新找到有关的经历:什么值得再看、为什么重要,以及当时的条件和不确定性。修订或删除笔记不会修改原始对话,已有的结构化记忆仍然可以读取。

自动召回只带入少量相关内容和来源引用。复述原话、解释历史决定、确认操作是否完成时,仍需查看原始证据,笔记本身不是证明。

设置 → 来源 → 记忆 里有两个开关:

  • 启用记忆 —— 把调取到的上下文带进运行,并允许显式保存。默认开启。
  • 运行后自动蒸馏 —— 后台整理符合条件的对话,留下少量有来源的笔记。关闭后停止后台整理,remember 和手动保存对话仍然可用。

同一个面板按主题分组列出每一条已存词条,每行带一个遗忘操作。遗忘删除笔记,不删除它引用的原始对话。

remember 接收自然语言笔记,运行时自动关联本轮消息和工具调用位置。涉及过去讨论时,可以引用 querySource 返回的来源;提供已有笔记 ID 则可以修订或删除。除了你明确要求记住的内容,八千代也可以主动记录值得跨对话保留的决定和纠正,不必每轮保存普通进展。

querySource 接收 text 时同时搜索原始对话和笔记,接收 ref 时打开来源及周围对话。搜索结果区分笔记和原文节选,合并重叠来源;没有笔记的历史同样可以找到。来源不可用的笔记不会附上虚构的原文。默认搜索使用有限的发现窗口,需要精确筛选时仍可按表、时间和文件夹查询。

~/.yachiyo/SOUL.md 是助手自己的文档 —— 它如何行事、如何说话、倾向于什么。其中一部分是特质日志:带日期的观察逐渐累积,于是人格随使用而漂移,而不是冻结在你第一天写下的样子。

改它最直接的方式就是说出来:

从现在起,先讲权衡,再给建议。

它可以编辑自己的灵魂文档,而且一条以持久偏好方式表述的特质,比你用第三人称写自己要贴切得多。

手动编辑也行 —— 在应用里,或者用命令行:

Terminal window
yachiyo soul traits list
yachiyo soul traits add "States the tradeoff before the recommendation"
yachiyo soul traits remove <key>

新增的特质会归到今天的日期标题下。remove 接受的是 list 返回的哈希 key,不是序号。见 soul 命令行参考。

~/.yachiyo/USER.md 是你的档案,它不是自由文本 —— 每个小节都是一张有固定 schema 的 Markdown 表格,这正是智能体能只更新一行而不重写整份文档的原因。

小节取决于说话的是谁:

主人(你):

小节列
ProfileKey, Value
PreferencesKey, Value
Collaboration NotesTopic, Note

访客(通过频道找到你的人):

小节列
ProfileKey, Value
PreferencesKey, Value
NotesTopic, Note

群组(一个群聊):

小节列备注
PeopleNickname, Identity, Notes
Group VibeAspect, Description最多 8 行,7 天后过期
Topic HintsTopic, Hint最多 6 行,3 天后过期

每一行还带一个自动维护的 Since 时间戳。群组小节的行数上限和过期时间是刻意设计的 —— 一个群的氛围是滚动的印象,不是档案。

智能体通过 updateProfile 工具维护这一切。你也可以直接编辑文件;它就是 Markdown。

  • 被标记为私密的线程不出现在搜索和命令行列表里,除非你传 --include-private。
  • 访客对话拿到的是过滤后的记忆:memoryFilterKeywords 里列出的关键词会从记忆结果中被屏蔽,这样 Telegram 那头的陌生人没法从助手嘴里掏出你的笔记。
  • 访客有自己的 USER.md 模式,所以智能体从访客身上学到的东西不会落进你的档案。

访客模型的其余部分见频道。