Skip to main content
koharu-scene 负责项目含义,koharu-storage 负责完整状态与不可变字节如何可靠落盘。

分离分析、内容和呈现

项目包含有序页面。每页具有稳定外部实体 ID、本地 arena、层级、类型化组件与关系。 检测几何仍属于分析,不会变成可移动的可见图层。修改译文不丢失 OCR 来源,调整排字不必改写语义文本。

应用编辑

快照不可变且复制成本低。补丁绑定项目和基础修订,记录操作前置条件,并携带会话撤销所需的逆操作。
过期补丁不会被静默接受。派生工作必须显式 rebase;观察到的输入或重叠写入发生变化时,rebase 会失败。

发布状态

存储不解释领域内容。完整场景以不透明载荷交替写入 state-a.khrstate-b.khr,同时保存不可变内容寻址 blob、校验和及引用 blob 集合。
1

发布缺少的 blob

先保存被引用的字节,再发布需要它们的状态。
2

写入非活动槽

在目标位置旁构建新槽并刷盘。
3

原子发布

使新状态持久可见;发布失败时仍保留之前的有效槽。

恢复与回收

打开时选择最新有效状态;较新槽损坏时可以回退到另一槽。blob 读取可使用只读内存映射,但不向场景使用方暴露此存储细节。 显式垃圾回收保留两个有效磁盘状态,以及包括撤销历史在内的活动场景作用域所引用的 blob。

应用职责

应用负责 .khrproj 目录、命名、活动页面、撤销分组和 UI 投影。渲染器、流水线与 Agent 读取快照并提交语义补丁,不直接写存储文件。