跳转到内容

数据模型 ​

Respire 使用 ~/.rsrs。启动保留当前账户、API 偏好、数据及密钥,不复制旧账户。显式迁移发现 ~/.onememory、~/.respire 与旧格式 .rsrs profiles 中受支持的账户;由用户选择来源与目标。源数据库和凭据会保留;迁移成功后会在源目录写入 .rsrs-migrated.json。当前选项使用 RSRS_*;ONEMEMORY_* 与旧 RESPIRE_* 选项是只读兼容别名。当前选项存在时优先使用它。

本地项目用途
~/.rsrs/rsrs.db新格式加密记录、本地元数据与特征索引;已有 onememory.db 在显式迁移前仍可读
session.json身份、地址、token 与密钥材料
client.json客户端偏好、服务端地址与自动同步设置
lock.db本地 runtime 独占锁
~/.rsrs/models/默认 tokenizer/模型资源
~/.rsrs/inference.json推理引擎设置

RSRS_DATA_DIR 选择数据根目录。显式模型目录选项仍是兼容的覆盖设置。不要提交 session 文件、数据库副本或恢复材料。

本地 runtime 默认端口为 15169。显式迁移会为选中来源建立快照;runtime 接管是独立的宿主操作,会验证监听器身份,并等待进程、端口和数据库锁释放。桌面应用标识符为 ai.risense.respire。新账户与已完成显式迁移的账户使用 rsrs:v1: 标记及 rsrs:* HKDF 标签写入加密值。未迁移记忆库在用户显式迁移前保持原读写格式;启动和普通写入不转换格式。未带标记的旧值保留原解密器。旧客户端无法解密新格式密文;迁移并同步账户前,先更新各客户端。

已有账户 ​

flowchart LR
  Old[".onememory / .respire"] --> Snapshot["一致的数据库快照"]
  Credentials["已有 session 与凭据存储"] --> Check["验证原加密密钥"]
  Snapshot --> Reencrypt["解密并使用 rsrs 标签重新加密"]
  Check --> Reencrypt
  Reencrypt --> Verify["验证全部记录及密钥封装"]
  Verify --> New[".rsrs accounts / rsrs.db"]
  New --> API["api.rsrs.rs"]

运行 rsrs migrate 列出来源 ID,再运行 rsrs migrate --source <source-id> --account <new-name> 迁移选定账户,也可使用 TUI 的 Migrate old version。纯备份目录不是账户来源。稳定的来源身份与完成回执防止来源排序变化造成重复导入。已有目标会被拒绝;迁移不切换活动账户。Doctor 与 TUI 只提示待迁移来源,从不自动启动迁移。

迁移先发布目标,再写入源回执。如果回执写入失败,命令会报错,但目标可能已经存在。重试前先列出迁移来源并检查记录的目标;目标回执可以识别已完成的迁移。

迁移保留用户名、登录密码、原 super Keys、记录 ID、元数据及待提交更改。它重新计算内部派生密钥、重新加密记录,并使用原用户因素重新封装未改变的 URK。不会重置 vault 或生成替代 super Keys。旧的不可变同步 journal 留在原记忆库;新的 projection 保留已确认 base revision,同时排队新操作。任何无法解密的记录(包括已删除记录)都会阻止完整迁移及其完成标记。只在导入副本中重写已知失效的官方 API 地址;自定义地址与活动账户的 API 偏好不变。

旧 v1 账户使用原登录密码与 Account Secret 恢复加密密钥,没有独立的 super 密码。显式命名空间迁移保留原有因素,可在迁移副本使用 RSRS 格式写入的同时保留 vault version 1。普通登录与云端恢复不改变已有记忆库格式。

已保存的凭据可解锁已有账户,不必再次登录。Session 过期且从未保存登录密码时,应使用原账户密码登录。操作系统凭据存储中没有原解密秘密时,须使用原恢复材料。只复制加密数据库不能重建缺失的秘密。

操作系统可能请求访问已有凭据的权限。如果旧 runtime 仍在写入,迁移保留一致快照;随后未同步的写入仍留在原目录。未知的外部数据目录及早期 demo 数据库格式,需要使用原版本的 export/import 工具显式迁移。不受支持的数据保持完整,不会被替换。

flowchart TB
  Entry["MemoryEntry:已授权明文"] --> Encrypt["应用 AES-GCM 层"]
  Encrypt --> Wire["StoredMemory:密文同步字段"]
  Entry --> Meta["本地元数据"]
  Entry --> Core["Core"]
  Core --> Features["不透明特征 / 产物"]
  Wire --> DB[("本地 SQLite")]
  Meta --> DB
  Features --> DB
  Wire --> Cloud["服务端"]
明文字段含义
id客户端生成的记录 ID
kind记忆类别;wire 大小写由类型化协议定义
tags / title / content可搜索/展示的记录内容
user / computer / project所属关系与本地范围
created_at / updated_at记录时间戳
parent_id根节点为空,否则为因果父节点
supersedes / superseded_by正向替代边与反向提示;默认为空
see_also显式关联记录 ID;默认为空数组
importance新记录使用 important 或 trivial;旧值仍可读
device / modified_by创建及最后更新的设备归属
服务端可见同步字段用途
id / user记录身份与账户路由
ciphertext / nonce加密 payload
embedding_enc既有加密特征兼容字段
updated_at / deleted冲突解决与 tombstone

本地元数据、local_embedding、local_chunks 与 local_artifact 不参与同步序列化。基础设施代码将特征 payload 视为字节。产物与来源记录/模型代次绑定,可重建;内部 schema 不公开。

导出的记录 JSON 是明文。导入可能创建新 ID 并重建父节点映射;应据此保护导出文件。参见 CLI与同步与密钥。

关系留在加密 payload 内;同步传输不会新增明文关系字段。Import/share 重映射已包含的目标,本地 recall_pairs 证据不参与同步。对共享记忆库启用关系前,先升级全部写入者,因为旧写入者重新封装时可能丢弃未知字段。参见记忆关联。