OpenViking 将会话中具有长期价值的信息整理为记忆,并在后续任务中提供检索和读取能力。接入后,Agent 可以在新的会话中继续使用用户偏好、项目背景和任务经验,无需每次重新收集这些信息。
记忆主要解决两类问题:一类是“了解服务对象”,另一类是“积累做事方法”。OpenViking 内置6类记忆类型:画像、偏好、实体、事件,以及用于经验积累的轨迹和经验。
Agent 或服务端先记录会话并传入 OpenViking,再通过 Commit 接口提交 Session;OpenViking 根据输入内容、有效记忆策略和已有记忆,判断是否需要抽取或更新。
何时抽取:会话中出现用户明确说明或确认的、预期持续有效的身份与背景,例如“我是数据工程师,有五年 Python 开发经验”。
记忆主题:职业、教育背景、专业技能等稳定状态。具体喜好放入偏好;某次任职变动等发生过的事情放入事件。
存储与更新:固定保存为 memories/profile.md。新事实补充到已有画像;可变状态有新的明确确认时更新。
何时抽取:用户表达具体、可复用的选择、习惯或要求,例如“以后排障请用中文,先给简短步骤,必要时再展开”。不需要使用固定的触发词。
记忆主题:沟通方式、代码风格、工具选择、工作流程等。不同主题分别保存,同一主题中保留适用条件和例外。
存储与更新:路径为 memories/preferences/{偏好主体}/{主题}.md。同一主体、同一主题的内容可以补充或修正;无关主题不合并。
何时抽取:会话提供了某个具体对象的、后续仍有用的事实,例如“Atlas 是团队的数据分析服务,使用 Python,存储用 PostgreSQL”。
记忆主题:项目、产品、组织、设备、地点等对象的身份、用途、属性和关系。
存储与更新:路径为 memories/entities/{类别}/{名称}.md;英文类别和名称为小写。
合并边界:同一对象的新事实更新到其文件;不同对象即使名称相近、用途相似,也不会整理为一个对象。
何时抽取:出现值得后续追踪的事实、决定、承诺、安排或结果,例如“今天确认 Atlas 在 9 月 20 日开始试运行,由数据平台团队负责”。
记忆主题:具体发生的事,以及参与对象、时间、决定和结果。一场会议中的不同决定可以形成不同事件,不把整段聊天都当作一个事件。
存储与更新:路径为 memories/events/{年}/{月}/{日}/{事件名}.md。默认事件都是新增,不像画像那样持续改写为一个最新状态。
何时抽取:启用相应经验记忆能力后,任务包含可识别的目标,以及工具调用、关键决策或多步骤执行过程。简单闲聊通常没有可提炼的执行轨迹。
记忆主题:任务意图、前置条件、关键步骤、对象边界、结果和证据。轨迹是对执行过程的结构化提炼,不是原始聊天或工具日志的逐字副本。
存储与更新:路径为 memories/trajectories/{轨迹名}_{会话时间戳}.md。默认新增保存;时间戳形如 YYYYMMDDHHMMSS,来自会话消息时间。
何时抽取:启用经验记忆后,从任务轨迹及结果中发现可迁移的方法、有效分支或需要避免的错误。并非每条轨迹都会产生一条新经验。
记忆主题:Situation 说明适用情境,Approach 给出执行方法,Reflect 记录限制和风险边界。经验强调可复用做法,而非某个人、某次任务的流水账。
存储与更新:路径为 memories/experiences/{经验名}.md。新方法可以生成文件;同一主题的经验会结合新证据更新,而不是每次都机械追加。
一次交互可以产生不同类型的记忆。例如,“我是数据工程师”可补充画像,“以后用中文给步骤”可形成偏好,“Atlas 使用 PostgreSQL”可更新实体,“确认试运行日期”可形成事件;Agent 实际完成的排障过程可形成轨迹,并进一步提炼经验。是否产生记忆、产生哪些类型,以实际启用能力和抽取结果为准。
Agent 执行任务时,将用户输入、助手回复、工具调用与结果按发生顺序写入 Session。用户的纠错、任务最终结果和验证反馈也属于重要输入。
OpenViking 只能处理接入方实际提供的内容。仅配置检索工具,或仅保存 Agent 最终回复,不能替代完整的会话记录。专属插件可自动完成部分记录工作;自建 Agent 需要在 Runtime 中实现。
Commit session 操作用于将本次可归档的消息提交给后续处理。常见时机包括任务完成、一次纠错处理结束,或准备切换到无关目标。长会话还可以使用接入方或服务端提供的自动提交机制。
会话提交后,OpenViking 在后台分析已归档内容,结合信息归属、允许的记忆类型和已有记忆,生成或更新长期信息。已有内容可能被补充,而重复、缺少长期价值或不在策略范围内的信息可能不产生新的记忆。
个人和项目记忆用于描述对象的画像、偏好、实体与事件;经验记忆通过轨迹保留任务过程与结果,再提炼可复用的经验。新增信息、对已有内容的补充或纠正,以及重复信息,会形成不同的处理结果。
将 OpenViking 记忆接入到 Agent runtime 端进行消费,一次完整的使用过程包括确定范围、检索、读取与组装上下文。Agent 服务需要做这几件事:
如果您使用标准的消费级 Agent 产品(如 Codex,Claude Code,Trae),接入 OpenViking Plugin 即可使用插件中开箱即用的记忆检索能力(详见:使用 OpenViking 个人版快速接入记忆)。如果您希望使用 Open API 自行开发记忆机制,可参考 将 OpenViking 记忆接入 Agent