Merge commit 'ecbf75a5e70f662b6420375140cf12eb6bac7860' into worktree/retarget-pr885-20260729
# Conflicts: # docs/development.i18n.yaml # packages/client/ui-conversation/src/client/chat/MessageItem.tsx # packages/client/ui-primitives/src/markdown/CodeBlock.tsx # scripts/snapshots/translation-prompt-v4/request-response.expected.json
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
|
||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||
# after editing either side, bring the other along and re-record with:
|
||||
# pnpm run verify-translation-pairing --write
|
||||
# pnpm run verify-translation-pairing --write packages/storage/storage-json/README.md
|
||||
README.md: c3417846a70f8a227a19a5abf834156d530e3597
|
||||
README.zh.md: 6a566aa1c2cdeac18760ec6e5964a623a3643928
|
||||
README.zh.md: 6a6ca9477fc0628516c97ff4d123beeea370d9be
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
|
||||
[English](README.md) | 中文
|
||||
|
||||
[存储中心](../storage/README.md)的 JSON 后端:配置根目录下每个单元使用一个人类可读的 `<unit>.json` 文件,注册为后端 `json`。设计见[领域 KV 存储 Agent Note](../../../.agents/notes/proposed/architecture/2026-07-24-domain-kv-storage-and-workspace.zh.md)。
|
||||
[存储中心](../storage/README.md)的 JSON 后端:配置根目录下每个单元使用一个人类可读的 `<unit>.json` 文件,注册为后端 `json`。设计见[领域 KV 存储 Agent Note(agent 决策记录)](../../../.agents/notes/proposed/architecture/2026-07-24-domain-kv-storage-and-workspace.zh.md)。
|
||||
|
||||
## 模型
|
||||
|
||||
- 内存中的单元状态具有最终决定权;每个写入原语都会通过临时写入 + fsync + 原子 `rename()` 替换重新发布整个文件。单元文件始终是完整的当前净状态:可读性是该后端存在的理由,规模问题则属于 SQLite 后端。
|
||||
- 缺失文件会作为空单元打开,并在第一次写入时物化。外部或无法解析的文件以 `malformed-medium` 拒绝;已存版本与 descriptor 不同时以 `version-mismatch` 拒绝(预发布立场,不迁移)。
|
||||
- 跨调用的写入顺序属于调用方(领域层的写入链);每个单独调用具备原子性,并在 resolve 后持久。
|
||||
- 内存中的单元状态具有最终决定权;每个写入原语都会通过临时文件写入 + fsync + 原子 `rename()` 替换重新发布整个文件。单元文件始终是完整的当前状态:可读性是该后端存在的理由,规模问题则属于 SQLite 后端。
|
||||
- 缺失文件会作为空单元打开,并在第一次写入时物化。外来或无法解析的文件以 `malformed-medium` 拒绝;已存版本与描述符不同时以 `version-mismatch` 拒绝(预发布立场,不迁移)。
|
||||
- 跨调用的写入顺序属于调用方(领域层的写入链);每次调用都具备原子性,并在完成时已达到持久状态。
|
||||
|
||||
## 配置
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
#### 模型看到的内容
|
||||
|
||||
无。该后端不贡献提示词、工具或 schema;它在 `ctx.storage` 后面持久化非会话领域数据,只供主机侧消费方使用。
|
||||
无。该后端不贡献提示词、工具或 schema;它在 `ctx.storage` 后面持久化非会话领域数据,只供宿主侧消费方使用。
|
||||
|
||||
#### Token 影响
|
||||
|
||||
@@ -34,5 +34,5 @@
|
||||
|
||||
## 已知限制与暂缓事项
|
||||
|
||||
- Windows 持久性依赖 libuv 的 `rename()`(使用替换的 `MoveFileExW`),没有显式 write-through 标志;append-log facet 落地时,计划把会话日志后端更严格的 Win32 write-through 发布辅助函数下移到此处(见 Agent Note 的迁移章节)。
|
||||
- 没有跨进程写锁:两个进程写入同一根目录时,可能交错执行整文件替换(最后写入者胜出)。当前消费方采用单主机进程部署;多进程方案按 Agent Note 的范围外表格暂缓。
|
||||
- Windows 持久性依赖 libuv 的 `rename()`(调用 `MoveFileExW` 并启用替换),没有显式 write-through 标志;追加日志分面落地时,计划把会话日志后端更严格的 Win32 write-through 发布辅助函数下移到此处(见 Agent Note 的迁移章节)。
|
||||
- 没有跨进程写锁:两个进程写入同一根目录时,可能交错执行整文件替换(最后写入者胜出)。当前消费方采用单一宿主进程部署;多进程方案按 Agent Note 的范围外事项表暂缓。
|
||||
|
||||
Reference in New Issue
Block a user