Skip to content

记忆 ​

Kiki 记住那些你不想每个会话都重讲一遍的东西:你的代码希望怎么被审、上周确认过的哪个项目事实、参考资料放在哪。记忆默认开启,条目保存在运行 Kiki 的那台机器上,每次写入都会在对话里留下一行。可选的记忆顾问会在你确认目的地后,把上下文发给你选的模型。

本页讲 /memory 页上的范围选择、经预览确认的 Markdown 编辑、审批收件箱、模型辅助推荐,以及怎么关掉记忆。智能体在单个会话内能做的事(压缩、消息队列、任务看板)见长时间的活。

注意 多个 Kiki 共用同一记忆目录

比 0.3.2 旧的 Kiki 不认识下面的内容依据和有效性字段,它的一次写入可能把这两个字段从条目上抹掉。如果两个 Kiki 共用一个记忆家目录——同一 KIKI_HOME 下的桌面版和 CLI,或者回滚到旧构建——请把每一侧都升到 0.3.2 或更新版本。已经丢掉的字段 Kiki 不会替你补回来:那条条目会显示未记录,要填回去只能依据当初的指令或资料,把依据和核对条件重新记一遍。

智能体记住什么 ​

记忆不是对话记录,也不是缓存,而是会话结束时会丢掉的那一小撮长期事实;任务进展属于 Agent 的工作笔记。一条条目只讲一个主体,放在一个位置:一句你以后还认得出的标题,加上完整的当前内容,包括决定它何时生效的条件。Agent 是整篇替换内容,而不是往上追加;更正过程和被淘汰的旧值留在改动理由里,不留在规则正文里。条目正文上限 1,500 字符,一个范围同时容纳 300 条生效条目;超过任一上限,Agent 会合并到已有条目,而不是另起一条。容量已满时,只要最终生效数量不增加,仍可替代旧的生效条目;待审提议在你批准时会重新核算。

Agent 用 MemoryWrite 写,用 MemorySearch 和 MemoryRead 读。搜索支持部分词命中,也支持不加空格的中文短语。原生 subagent 默认拿到两个只读工具,MemoryWrite 始终只给 main agent。

点开对话里的记忆工具行,就能一起读取当时记录的输入和输出。较大的字段从原记录继续加载,复制按钮取回完整字段,而不只是屏幕上的预览。写入回执保留那次操作的范围、版本和操作标识;查看打开记忆页上条目的当前状态,撤销针对回执记录的那次操作,两者都不会用今天的条目替换历史输出。字段或回执读取失败时,可在对应位置点重试。

搜索分两种模式。默认按主体、标题或别名检索,返回排序后的 8 条一页;mode: "list" 不带 query,按页浏览清单,每页 20 条。两种模式都会说明实际查了哪些范围和状态、结果是否完整、有没有记录被跳过或读不出来。只要 exhausted 为 false,就应使用 cursor 继续,即使准备页为空。文件后端按有界源片段分别排序;搜不到表示这些词没有命中,不能据此断定没有相关指引。

搜索会在回包预算内提供整条正文、依据、复核条件和版本:包括元数据在内,最多 24,000 个 UTF-16 代码单元及 6,000 个估算 token。Agent 可以直接复用 complete: true 的条目,无需再读一次。complete: false 的条目只提供引用和精确的 MemoryRead 目标;使用或修改内容前,Agent 会完整读取该目标。正文不会为了塞进预算而截短。如果引用元数据本身就超过预算,缩小 page_size 后重新搜索。清单模式返回引用。

每个 Agent 都可以在自己当前 TodoList 笔记的任意段落中用条目 ID 引用记忆,比如 [m_id]。Kiki 会先对这些引用去重,再用于自动召回;只有该 Agent 可见、处于生效状态、未过期且能完整放入预算的条目,才会进入它的工作集。

压缩时,directives 和 decided 中的引用另行解析。使用 SQLite 时,交接文本保留引用,供后续通过 MemoryRead 重新读取;文件存储路径则带上当前标题、跟随替代条目,并把已归档条目标为不生效。

依据与有效性 ​

一条条目可以记录关于自己的两件事,它们都会改变你该怎么看这条记忆。

内容依据(basis)说明内容从哪来:human(你要求或接受的)、observed(可核查的材料或观察)、derived(Kiki 自己的推断或转述),或 unknown。详情页会把每一种写成人话,并列出背后的说明和来源定位。早期条目没有记录依据时显示未记录——这是记录本身的缺口,不是对内容的判断。等你手上有了可以核对的材料,可以通过记忆工具或经预览确认的 Markdown 导入补记依据与复核条件。Kiki 不会凭空编一个,也不会因为写入恰好发生在你的轮次里就把一条内容算成你亲口说的。

有效性(validity)说明依赖一个会变的事实之前要核什么。它带一个 check 写明该验证什么,可以再带一个 until 时间戳。带 check 的条目显示依赖前:重新核对;过了 until 的显示已过期,条目仍留在盘上作为历史线索,而不再是可以直接采信的前提;没有记录有效性的条目会显示「没有记录复核条件」。到了 until 也不会自动删除或归档任何东西。

在页面上修改条目的标题、类型或正文时,已记录的依据与复核条件会保留。这些属性需要变化时,请通过工具或 Markdown 导入,与正文一同更新。工具层的合同见内置工具。

这一页让你选什么 ​

在 /memory 页上,你选的是「正在看哪一部分记忆」,而这一页始终提供同样的三个选择:

  • 全局(Global)——所有项目共享。
  • 工作区(Workspace)——单个项目的存储。
  • 角色(Persona)——某个角色自己的存储,跟着这个角色跨 profile 和模型。

角色专属条目与其他角色隔离。默认情况下角色也能读共享的全局和工作区记忆;在角色卡上设 memory.shared: [] 可以排除。工作区有自己的开关,可以跟随全局、单独开启或单独关闭——关掉之后已保存的条目仍然保留,只是 Agent 在那里不再读写。

角色还可以按单个工作区记笔记,所以一个跨项目的角色能自己保留项目相关的细节。

没有显式指定范围的新条目会落到当前绑定的角色上,没有角色时落到工作区;选范围既不会移动已有条目,也不会让你看到别的工作区或角色的记忆。

角色 ​

角色的记忆跟着角色本身走,跨 profile 和模型都不会丢,所以换模型不会清空它知道的事。删除角色会一并删除它的记忆;清理失败时删除操作会报错并保留角色卡,方便你重试。见角色、Bot 与房间。

条目是有类型的,类型就是你要筛选的维度:关于你、反馈、项目、参考。条目还可以是置顶(排在最前)、生效中、被更新条目替代,或已归档。

归档、替代与合并 ​

让一条条目退出是状态变化,不是删除:正文仍在,撤销也照样能撤销它。规则真的变了时 Agent 会替代原条目——写出一条有自己 id 的新条目,把旧的标为被替代,两边的历史都留得住。当新条目完整覆盖了旧内容,Agent 也可以把旧条目标为已并入保留的那一条(详情里可以直接点进去看);这个依赖会在真正执行归档那一刻重新核一遍,所以合并不会悄悄盖掉一条其替代者已经变了的规则。

/memory 页 ​

侧栏里 /memory 是常驻入口:记忆关着时它是「怎么打开」的说明,记忆开着时它就是管理台,可以搜索条目、按类型筛选、显示或隐藏已归档条目,点开一条就能读、改、置顶或删除。

工作区和角色都是可搜索的选择器,因为任一列表都可能有几百项。选了一个会清掉另一个,选择会带在 ?workspace= 或 ?persona= 参数上,所以指向某个范围的链接继续有效。

列表和收件箱会先显示已经读到的条目,再自动续读,直到覆盖当前范围。个别记录读不出来时,可读条目仍然保留,页面显示具体诊断,不会把它当作空列表。续读失败或源内容变化时,点重试重新加载。列表只保留短预览;打开条目,或在收件箱点查看,即可读取完整正文。

改动历史与撤销 ​

对条目的每次改动都会留档。历史里的每一行都显示改动前后内容,并提供针对这一次操作的撤销,删除也一样——删除确认框说的正是「可以撤销」。

你打开着这条的时候它被改过,保存会被拒绝并提示先重新加载,你的修改不会盖掉新版本。重新加载后再改一次。

保存时标题、正文、置顶状态和已记录的属性都没有变化,就不会产生新版本,也没有可撤销的操作,页面会显示无变化。把刚保存过的编辑再提交一次,正常的落点就在这里。只改依据或核对条件同样算一次变化,会留下自己的版本。

编辑 Markdown 导出文件 ​

家目录已使用 SQLite 时,可在 /memory 导出单条完整记忆,编辑 Markdown 文件后先预览、再确认保存。同一流程也可通过经过身份验证的 记忆 API 完成;即使 Agent 的记忆访问已关闭,显式 API 管理仍然可用。

  1. 打开条目,点 导出 Markdown,再编辑保存的文件。保留范围、ID、版本、原始对象标识与来源坐标;正文、依据或核对条件变化时,将它们一同更新。
  2. 在 新建记忆 旁点 导入,选择编辑后的文件。核对 来源、填写修改原因,再点 预览导入,比较 当前已存 与 文件内容。内容没变无需写入;已经接收过的来源会指向当前纠正后的条目,不重放旧内容。
  3. 预览提供相应操作时,点 应用更新 或 新建记忆。预览有效期为十分钟,服务重启或存储权威状态变化后失效。过期时保留原文件,点 重新预览。版本冲突时,若条目仍存在,重新导出、合并修改后再次预览;若已遗忘,停止导入这份旧来源。

真正的新文档使用 id: new、revision: null 和 origin: null。给旧文件改名或换 ID 不会恢复已遗忘的来源。导入不会批准待审提议、重新启用已退出条目,也不会把条目移到其他范围;请先使用相应的审批或恢复操作。只读恢复模式允许导出;预览或应用导入前,须先恢复编辑。

后端迁移与恢复 ​

启动升级后的 Kiki 时,已有记忆会自动经过 SQLite 导入与验证流程,新家目录也使用 SQLite。无需点击迁移、确认旧写入进程或开启实验开关。同一套工具和编辑器等待升级完成后使用 SQLite;原文件保持不变,之后的启动复用已完成的数据库。存储迁移保留允许使用记忆的设置:关闭时,Agent 仍不会收到已存记忆,顾问也不会外发它们。

升级中断时,记忆 API 会报告已保存的操作 ID、最后提交的页和来源问题。普通记忆访问保持阻塞,不会改读过时副本。修复报告的来源后重试同一操作,或重启后继续。共用该家目录的其他安装也应升级;后端标记约束支持这一协议的写入进程,无法约束协议发布前的旧二进制。

API 也能保存包含治理记录的恢复包,并将 SQLite 切到只读模式。当前条目仍可读取,包括迁移后做过的纠正;恢复编辑须使用 API 返回的当前恢复 ID 与 epoch。请保留完整数据库备份:Markdown 导出当前条目和待审提议,数据库还保留不可变版本、纠错记录和遗忘屏障。不要用旧文件目录覆盖更新后的受治理记忆。

审批收件箱 ​

记忆审批有三种设置。默认的自动会把智能体提议的写入直接应用;改成审查,提议的更新或归档就会先等你处理。在自动下没有任何待处理内容,所以不会出现收件箱页签。

提议等待期间,原条目保持当前内容并继续生效。保留表示应用这条提议——更新会替换它所替代条目的正文,归档会归档那个条目。丢弃只去掉这条提议,原条目不动。提议不是生效的指引:Agent 不会拿它当前提使用,而且 Agent 自己无法批准它,只有你可以。

记忆顾问 ​

记忆顾问用你选的模型,为当前请求推荐已保存的条目。在设置 → 记忆(/settings/memory#st-card-memory-advisor)配置。功能默认可用;保存模型并为工作区允许发送到对应目的地后,才会开始推荐。在此之前,记忆沿用原有的选择方式。

  1. 选择已有的模型 alias 和协议,再点保存模型。对话让对话模型返回结构化判断;System One接兼容的决策服务;配对打分接重排服务。服务需要支持所选协议;非对话协议的端点须与所选模型的生效地址同源(协议、主机和端口相同),可在端点输入框下方核对。
  2. 在记忆外发中选择工作区、核对目的地。允许发送会允许将当前请求、任务笔记、相关工具错误上下文,以及记忆标题、简短摘录和选中条目的完整内容发往该处。确认绑定工作区、供应商和 origin;更换供应商或 origin 后要重新确认,点撤销可收回允许。发送前会遮盖常见密钥格式,普通敏感事实仍可能保留。
  3. 可点用示例数据测试验证已保存的连接,顾问关闭时也能测试。这一步使用虚构内容,不读取你的记忆。失败时会显示具体原因,可修改模型、协议、端点或凭据后重试。

记忆页标题栏的顾问开关与 Ctrl-K 中的命令修改同一份全局设置。关闭后保留模型和目的地确认,取消尚未完成的推荐,恢复此前的记忆选择与正文。再次打开时采用排序。另一个允许使用记忆开关控制 Agent 的全部记忆访问。

高级中的排序让推荐条目在原有完整条目预算内排在关键词命中之前;筛选还会剔除明确判为不适用的条目,精确 ID 引用、置顶和尚未判断的条目仍有资格进入。配对打分只支持排序。推荐不会替代条目的内容依据或有效性核对。子 Agent 仍受其有效记忆权限和模型约束,也可通过为子 Agent 推荐排除。

同一折叠区的运行中的会话可选择已有会话和 Agent,再点读取状态查看最近运行结果、调用和推荐数。只有点击时才读取;冷会话或不存在的 Agent 显示尚无运行状态,并保持未加载。

同一折叠区可调整首步等待、请求截止、每轮次数、目录页数、完整条目数和输入预算。只有首步按配置上限等待,之后完成的结果在后续步骤采用。超时或答案无效时,Kiki 沿用原有选择路径。当前存储后端未支持固定提交快照时,顾问会显示不支持,记忆继续照常工作。

关掉记忆 ​

/memory 页与设置中的允许使用记忆会停止 Agent 读写记忆。若要保留记忆、只停掉模型辅助推荐,关闭顾问即可。

定期的长时记忆提醒是另一回事。只想停掉这些提醒、同时保留「新指令」和「压缩前」检查,在 config.toml 里设 memory_maintenance = false;记忆工具、审批和任务笔记照常可用。见连续性提醒设置。

下一步 ​