Rna Agent
核心概念

记忆

两种记忆方式二选一:内置的本地记忆,或 OpenViking 语义记忆。服务不可用时明确报错,两种方式不会互相顶替。

设计原则

  • 两种方式,二选一。 在 设置 → 高级 → 记忆 → 记忆方式 里选,配置项是 memory.backend(openviking 或 embedded),新配置默认 openviking。
  • 从不悄悄回退。 OpenViking 服务离线时记忆操作返回 503 并明确说明,不会换成本地记录假装命中;两种方式各自保存自己的记忆,互不迁移,切回原来的方式后原有记忆仍在。
  • 按项目隔离。 每个项目的目录是 viking://resources/projects/<projectId>,由项目自动管理。检索结果会再按项目范围过滤一次。
  • 记忆不等于能力提升。 一次记忆写入只是多了一条可检索的资料;行为上的改变走基因树进化。
  • 会话日志、草稿和项目配置不进入记忆检索库。

两种方式

OpenViking 语义记忆本地记忆(内置)
需要Docker、OpenViking 服务、向量模型和文本模型什么都不需要
检索按语义:换一种说法、换一种语言也能找到按关键词:只找得到用了相同词语的内容
对话记忆由模型提炼成长期记忆原样保存每一段对话,不调用模型
数据位置OpenViking 服务的数据卷本机状态目录下的 <state>.rna/memory/embedded.sqlite(权限 0600)
删除对话时已提炼的项目记忆保留这段对话保存的内容一并删除

本地记忆用 SQLite FTS5 做关键词检索,英文和数字按词,中日韩文字按相邻两字切分,命中时返回文件里查询词最密集的一段原文。它不理解同义词和改写,不跨语言,也不从对话里提炼结论。在一份真实状态的 112 轮、100 次检索的重放里,同一对话中更早的一轮排在第一的占 90%,前五条里有的占 98%;样本只有 6 个对话,这说明“排序可用”,不是精确的召回率。

两种方式下,自动关联、记忆工具、记忆浏览、同步队列、删除会话和回退都走同一套代码。本地记忆的数据库文件随恢复点一起备份和还原。需要 Node 的 node:sqlite,随桌面版分发的运行时已包含。OpenViking 的部署方法见仓库中的 docs/openviking-local.md,本地记忆的细节见 docs/embedded-memory.md。

自动关联

有记忆能力的真实模型会话,在新的一轮开始时由 JEV 先判断这一轮要不要用记忆;需要时关联一组有预算的候选摘录,再按需调用 openviking_search、openviking_read 展开概览或原文(两种方式下工具名相同)。关联的内容记录在这一轮的参考上下文里,不改变系统提示的缓存前缀。

设置 → 记忆 中的常用选项:

  • 自动关联项目记忆 开关;
  • 自动保存项目记忆 开关;
  • 自动关联预算(估算 token),默认 2048;
  • 检索选项里每次检索最多返回的候选数。

OpenViking 的服务地址和凭据放在默认折叠的“高级连接设置”里,用“测试已保存的连接”检查;本地记忆用“检查本地记忆”。

三个层级

层级读什么
L0目录摘要
L1目录概览
L2文件全文,默认读取 200 行,最多 500 行

--level 是索引过滤条件,不能把摘要变成全文。

自动保存

完成的真实回合登记到持久的同步队列。OpenViking 方式下再写入服务、提交、轮询:task_id 只表示抽取任务已受理,不代表学习已经完成,结果不明确的提交不会被盲目重复。本地记忆方式下,提交的那段对话原样成为一条记录,标题取你的第一行。两种方式都不会批量补传全部历史。

设置里的“记忆同步”能看到同步状态:还在核对的、没有同步成功的,以及可以重新提炼的失败项(重新提炼会产生费用,需要你再确认一次)。

回退会一起撤回

你编辑或删除一条消息、回退一轮时,OpenViking 里由被移除的轮次提炼出的记忆也会被撤回,只撤回与归档记录完全一致的条目,其余的原样保留并告诉你。删除整个对话则保留已提炼的项目记忆。没有直接删除单条记忆的入口。

后台的项目资料被误撤回的情况(例如换模型或新开对话曾经会让项目范围漂移)现在已经堵住:只有真正的删除或隐私边界才会撤回交付资料,之前被误撤回的会自动重新建立索引。

CLI

./rna memory-config --backend embedded            # 或 --backend openviking
./rna memory-config --endpoint http://127.0.0.1:1933 --api-key-env OPENVIKING_API_KEY --auto-recall true --context-budget 2048
./rna memory PROJECT_ID health
./rna memory PROJECT_ID initialize
./rna memory PROJECT_ID search "发布约定" --level L1
./rna memory PROJECT_ID read viking://resources/projects/PROJECT_ID/note.md --level L2
./rna memory PROJECT_ID write --file /path/to/note.md --title "发布约定"
./rna doctor PROJECT_ID

doctor 会报告后台服务、模型配置、记忆连接的健康状态,以及近 7 天的使用与进化状态;记忆健康检查失败时以非零状态退出。

本页内容