--- doc-schema-version: 1 summary: "提出持久存储更改、审查检查点和预检目标版本" read_when: - "提议 SQLite 或持久存储更改,或其他数据库后端" - "在激活之前针对目标版本预检复制的状态数据库" title: "存储更改和发布预检" --- 运行时更改使用 [ 现有工作人员所有者 ](/reference/database-schemas/worker-access),并使用 Kysely 进行普通查询。原始 SQL 保留用于架构、迁移、引导程序或引擎拥有的合理原语。在进入写入事务之前准备异步输入; its callback must stay synchronous.通过`runSqliteSingleStatementSync`使用SQLite自动提交进行完整的单语句操作; PostgreSQL 写入保留适配器的 `runTransaction` 保管。需要一致快照的相关读取保留在一个读取事务中。请勿用全值负载和 TypeScript 组件替换绑定大有效负载的 SQL- 侧面投影。 缓存更改需要完整的写入器收据覆盖,范围仅限于受影响的数据。加载一次并使用提交的后图像或失效,而不是添加新鲜度查询。[权威刊物](/reference/database-schemas/worker-access#final-authority-without-sql)是一个单独的所有者合同:仅凭数据收据永远不会授予许可。 ## Agent JSON 谓词列 [代理架构 26](/reference/database-schemas/agent-schema-history#json-predicate-columns)实现代理存储部分[接受的栏目推广设计](https://github.com/openclaw/openclaw/issues/169254)。这JSON仍然是规范的。每个编写器派生其查询列TypeScript并承诺他们JSON在一份声明中;会话参与者重用该派生。运行时谓词使用列。没有引入触发器、第二个持久性所有者或读取时回填。 版本化迁移仅使用 SQLite JSON 函数对现有行进行分类,并在完成回填后发布两个架构标记。它保留第一个成员查找、旧的最后一个成员转录导航、SQLite 整数转换语义、格式错误的行处理、有效负载字节和现有保留规则。 Schema 准入和 Doctor 仍然是唯一的迁移所有者。可选的发件箱存储保持懒惰。添加的文本和整数字段转换为具有 C 排序规则和 bigint 的 PostgreSQL 文本;支持引擎共享架构版本,并且必须提供等效的向前迁移。 在传输之前绑定大有效负载的 SQL 投影保留在 SQL 中。当前作者与权威的比较也保留了现有的实施方式,而不是削弱实际效果边界。迁移增加的存储量与保留的行成比例,并且首次升级证明测量每个数据库和跨多个代理主机的时间。 Older binaries refuse the new schema;恢复恢复经过验证的迁移前备份及其匹配的二进制文件。 ## 会话写入器验证 每个代理会话编写器在单个网关编写器合约下拥有行有效性。模式 25 从已验证的写入中删除触发器驱动的挂起簿记,并在持久化之前验证确切的序列化行。离线迁移和修复保留明确的待处理工作并使会话验证收据无效;他们从不重复准备承认未经验证的进口。 挂起的表仍然是派生的,并且不存储权限或复制的有效负载。迁移会验证先前的模式,停用其验证触发器,对所有现有节点进行排队,并通过版本发布自动清除旧的会话验证收据。这将执行与会话库存成比例的一次启动传递,而无需重写会话或脚本有效负载。普通写入避免了挂起的查找、写入后验证读取、标记删除和有效性更新。 FIFO 准入、效果边界权限、保留和持久性保留在现有所有者手中。其他进程必须通过网关路由写入或在网关停止时保持离线维护保管。 Older binaries refuse the new schema.恢复使用其匹配的二进制文件恢复经过验证的升级前备份;仅包回滚无法逆转迁移。有关迁移、准入和回滚的详细信息,请参阅 [schema 25 历史记录](/reference/database-schemas/agent-schema-history#canonical-writer-validation)。 ## 准备另一个数据库后端 提交收据是进程本地发布证据,而不是持久格式。共享的 receipt/completeness 合约既不会更改架构版本,也不会更改存储的字节、保留、备份或回滚策略。现有的已发布更新程序不需要收据迁移。如果通知或结果传送失败,已确认的写入仍保持已提交状态;恢复通过其原始所有者进行协调,而不是重复写入。请参阅 [ 承诺的事实和完整性 ](/reference/database-schemas/worker-access#committed-facts-and-completeness)。 SQLite remains the supported default.实验性PostgreSQL适配器支持一个网关的远程持久化;多个活动网关需要单独的所有权和协调设计。单独的共享数据库并不能使进程本地写入器队列、会话生命周期或主机拥有的租约在网关实例之间安全。 ### 共享状态 PostgreSQL 架构生成 `pnpm db:postgres:gen` 重新生成 `src/state/postgres-schema.generated/` 中提交的急切模式、命名的惰性片段、依赖项清单和可移植性报告。 `pnpm db:postgres:check` 验证其新鲜度和发电机组合同。 `IS JSON` 需要 PostgreSQL **16 或更新版本**;一致性作业当前使用 PostgreSQL 17。默认情况下,详细的 JSON 诊断报告保留在内存中。显式 `pnpm db:postgres:gen --out ` 将其与生成的文件一起导出; `portability-report.json` is not a tracked artifact。 规范的 SQLite 模式和功能本地 DDL 仍然具有权威性。 `src/state/openclaw-state-feature-schema.ts` 中的功能声明同时提供 SQLite 确保和生成器。他们的 DDL 提供程序保留现有的 SQLite 语句字节和首次使用计时,包括配置文件所有者的两个安装阶段。清单列出了每个片段的表、索引和片段依赖项。 `activation` 将首次使用片段与版本附加片段区分开来:新的引导程序或版本迁移会安装后者,而现有的相同版本存储将它们留给其功能所有者。 PostgreSQL 所有者在同一事务中首先安装依赖项,然后是片段的表和索引,最后是其外键。特别是,`user_background_images` 依赖于 `user_profiles`;仅当两个表都存在后,才会保留并安装其级联外键。生成片段不会激活 PostgreSQL 共享状态运行时支持。 `state.postgres.sql` 和每个清单 `file` 包含其状态 DDL 的单一运行时形式。生成的 `runtime.ts` 模块将相同的 SQL 与片段 activation/dependencies 以及状态所有者的预期目录打包在一起;它不维护单独的模式定义。他们省略了事务包装器和固定模式限定;所属连接提供命名空间和事务。 `agent.postgres.sql` 工件遵循相同的仅运行时约定。 对于手动状态模式检查,请运行`psql`从生成的目录中并显式提供事务和选择的模式: ```sql \set ON_ERROR_STOP on BEGIN; CREATE SCHEMA review_state; SET LOCAL search_path = review_state; SET LOCAL standard_conforming_strings = on; \i state.postgres.sql -- Include each desired fragment's manifest file, dependencies first. \i fragment-user_profiles.postgres.sql \i fragment-user_background_images.postgres.sql COMMIT; ``` 使用一次性模式进行此准备情况检查;它不启用共享状态PostgreSQL支持或迁移现有商店。 两个引擎使用相同的共享状态模式版本(当前24)。未来的每次版本更改都必须同时提供两个引擎的前向迁移和目录等效性证明。JSON保持规范:query/index投影导出一次TypeScript并在同一份声明中承诺JSON。请参阅[接受的设计](https://github.com/openclaw/openclaw/issues/169254)。 模式 24 包括 `state-v23-v24.postgres.sql`,它是根据迁移所有者的废弃索引名称和规范的替换索引定义生成的。 It contains forward DDL only;调用者提供事务、命名空间和版本发布。 PostgreSQL 一致性根据新架构验证升级后的索引定义,并保留保留的行和本地索引。此准备工件不启用共享状态 PostgreSQL 运行时支持。 Generation 拒绝不支持的共享状态表、列、默认值、CHECK、索引和外键及其确切来源和原因。文本使用 C 排序规则。文本长度映射到 `char_length`,字节长度映射到 `octet_length`,空安全 SQLite `IS` 与 `IS [NOT] DISTINCT FROM` 进行比较。支持的 GLOB 模式使用区分大小写的正则表达式和 C 排序规则;不支持的模式或 LIKE 表达式会导致生成失败,而不是更改大小写规则。 SQLite rowid 别名成为标识列:PostgreSQL 添加 SQLite 不报告的主键索引,并且序列分配不是 rowid 兼容性承诺。数据可移植性,包括PostgreSQL对NUL文本的拒绝,属于单独的端口预检。 这SQLite-仅允许列表仅包含这些纯`instr(column, char(0)) = 0`子谓词:`node_worker_launches.{launch_id,environment_id,session_id,run_id, result_json,error_text}`和`node_worker_turns.{turn_id,run_id,result_json,error_text}`. **PostgreSQL文字无法容纳NUL;守卫是由类型强制执行的。**所有周围的长度,JSON,并且换行符约束仍然是 CHECK,保留NULL语义。这是十个子谓词;报告了六次检查`instr`作为他们的第一个不受支持的构造,而另外四个守卫则隐藏在字节转换后面。 模式 22 将两个 ACP 恢复索引表达式提升到列。单个元数据编写器使用现有的空白规则修剪字符串标识值;缺失值和非字符串值变为 NULL。迁移保留了 SQLite 的第一个重复密钥行为。恢复查找直接比较列。 JSON 保持规范;收据发布和群组缓存生命周期保持不变。 批准、cron 收据、执行决策事实和技能研讨会更改使用显式唯一的 `cursor_id` 列。迁移保留原始 rowid 值,包括间隙;现有的光标连线格式和插入顺序关系仍然有效。序列化写入者在其现有事务中分配 `max(cursor_id) + 1`。生成器的 `pendingPromotion` 列表为空。 CI **PostgreSQL conformance** 作业将生成的 eager 模式和所有片段引导到真实服务器上的隔离模式中,然后比较每个表的列、类型、可空性、默认值、primary/unique 键、CHECK 计数、索引计数和外部针对 SQLite 目录的密钥(包括操作和可延迟性)。所有共享状态索引都会被翻译。本地运行`pnpm db:postgres:gen --check-connection ''`;检查之后会删除其隔离模式。这证明了 DDL 等效性,而不是运行时 SQL/concurrency 一致性或每个代理 PostgreSQL 拓扑的选择。 `pnpm check:database-dialect-ratchet` 通过仅扫描 `src/`、`extensions/` 和 `packages/` 下的不同生产 `.ts`/`.mts`/`.sql` 文件(不包括测试和夹具),保持机械、设计和引擎维护计数仅收缩到 Git 库; `--staged` 读取索引,`--full-tree` 报告总计,`sqliteStringSet` 所有者子集在机械债务中报告。 SQLite 中列出的 `SQLITE_PRIMITIVE_OWNERS` 原始所有者可能会增加发动机维护结构,消费者称其为发动机维护结构。词法门检查减去注释的 `.sql` 文件、标签最终标识符以 `sql` 结尾(不区分大小写)的模板的所有静态部分、以空格和 `(` 开头的字符串和带有大写 SQL 语句关键字的无标签模板,以及 `orReplace`/`orIgnore`/`orAbort`/`orFail`/`orRollback` 方法调用;构造正则表达式保持不区分大小写,排除 SQL 双引号文本,需要 `name(` 函数,并需要 `PRAGMA ` 或 `pragma_(` 用于 `data_version`/`schema_version`/`user_version`. Prose,没有语句前缀的片段,并且替换被忽略,接受组装 SQL 的计数不足;两个修订版都使用相同的规则,没有类型、符号、导入或 SQL 令牌角色分析,并且运行时行为和架构保持不变。 ### 实验型PostgreSQL发动机(工作台飞行员) `database.engine: "postgres"` 为每个注册了 PostgreSQL 模式的商店选择 PostgreSQL; Workboard 是目前唯一受支持的商店。 Doctor 报告每个商店的引擎并对 SQLite 上保留的商店发出警告。请参阅 [ 数据库引擎(实验)](/reference/database-engines),了解 SecretRef 配置、隔离和持久性、匹配的 anchor/schema 备份、限制和引擎边界观察。丢失机密、连接失败和准入错误永远不会回退到 SQLite。现有的 SQLite 工作板数据在切换引擎之前需要支持的离线 `openclaw database port` 流程。 `pnpm db:postgres:gen --target workboard` 从其 SQLite 模式生成工作板 DDL; `pnpm db:postgres:check` 验证新鲜度。准入会在一笔事务中安装表并记录当前商店版本。所有者提供连续的正向迁移,每个迁移都有其生成的源和目标 DDL。引擎保留写入者的保管权,并在失败时回滚所有待处理的步骤,包括与生成的目标不同的结果;较新的版本和缺失的迁移拒绝恢复指导。目录指纹检测精确的架构漂移,而生成的 DDL 哈希栅栏构建不匹配。服务器重大更改在替换指纹之前使用 PostgreSQL 自己的解析器执行一次临时比较。使用 SQLite 引擎打开 PostgreSQL 锚也被拒绝;它永远不会在锚点中创建 SQLite 工作板表。 ### 在所属商店继续运营 会话清理在向现有历史工作者发出的一个请求中读取条目元数据和丢失的转录本分类。读取事务保留每个肯定分类及其删除快照;包含消息的记录不需要删除快照。预览和应用保留选定的物理数据库,生命周期编写器在删除任何内容之前重新读取条目和快照。如果商店在阅读期间首次出现,则其本机阅读收据会将后续阶段绑定到该物理身份。并发追加或重写会使过时的删除计划无效。网关保留调用者权限,并且释放的同步提交回调保留其本机事务边界。显式隐身选择器使用提交的内存参与者事实,而无需打开数据库。架构、存档字节、保留和更新行为保持不变。 延迟转录投影协调通过共享代理数据库工作线程发布有界活动事件和 FTS 块。主机在调度之前捕获现有的执行所有者,并在每个本机事务和提交授权时重新验证它。准备好的生成声明、存储的转录字节、有界的仅追加追赶和原子最终准备情况保持不变。提交的终结将其会话更改返回给主机以进行通知;拒绝或回滚的最终确定不会发布准备就绪通知。未知的写入结果永远不会重播。 在确认本机提交后,重新启动恢复会将克隆副本的投影修复交给已承认的主机,包括提交后结果传送失败的情况。如果该所有者退休,则修复仍等待下一个承认的读者,而不替换已提交的恢复结果。过时的活动摘要提交谓词拒绝补丁并让其主机读取器重试和修复; SQLite 工人从不安排该维护。转录字节、会话恢复行、架构和更新行为保持不变。 全局投影预检和搜索准备使用投影维护所有者的连接本地事实。事务性 TEMP 触发队列受影响的会话,用于追加、重写、投影发布、删除、冷存储移动和原始本地 SQL。兄弟作者收据或模式更改重新启动有界准入;本地更改仅消耗排队的会话。有界递归键查询会跳过整个会话范围,而不是扫描记录行,然后复合读取使用投影所有者的就绪谓词对批次进行分类。队列消耗和脏会话发布在同一事务中批量进行。每个维护事务最多检查 128 个会话,并删除每个投影表最多 512 个孤立行。状态请求在 32 个批次后停止;不完整的准入仍待处理,现有的协调节奏将恢复它。在有界批次之间进行协调,直到有序遍历完成,然后将观察到的待处理积压交给调度程序并等待其重建。即使并发写入妨碍了干净的认证,它也可以重建该工作;所有者保留遍历完成,因此另一个状态调用者无法隐藏该进度。随后发现的更改将继续按现有节奏进行,包括对已重建的会话进行更新的修订。写入者收据会使准备状态无效,而不重置正在进行的游标。维护在开始另一遍之前到达较晚的密钥,并且只有稳定所有者修订版的完整通行证才能证明干净的存储。规划器使用该所有者的待处理列表。搜索将其命中读取、主机就绪交换和原始连接修订检查保留在一项工作任务中,同时独立搜索保持并行。一个单独的、有界的搜索通道可以防止可写准备检查占用服务于承诺历史、反应和进度卡读取的工作人员。更改的命中快照会保留索引提示。当可写维护不可用时,只读搜索也会保留其结果并带有保守的提示。干净状态读取重用这些事实,无需输入写入事务或请求写入授权,直到突变使它们无效;连接关闭会丢弃它们。不添加持久表或迁移。已发布的同步持久 SDK 回调和操作员维护保留其本机协调适配器;将这些回调移动到另一个线程需要单独的 SDK 切换。他们的一次性孤儿清理保留了有序的、索引的所有者集差异,而不是每行成员资格探测。 Incognito 没有需要协调的 SQLite 预测。 每会话准备情况轮询使用现有的只读转录工作器。就绪等待在惰性读取器加载和转发取消到排队读取时保留其原始执行所有者。退出后重新准入会等待底层数据库关闭(包括本机清理)完成。如果退出阻止任何后续的孤儿扫描批次开始,则承诺的最终确定将保持成功;下一次预检将检测并删除任何剩余的派生行。 Incognito 使用记忆演员;本机维护和删除范围保留其现有所有者。商店关闭与已接受的出版物和策划者租赁清理一起进行;较新的预定所有者不能被较旧的退休通行证使用。架构、保留、权限和更新行为保持不变。 转录协调池使用其有界工作者的FIFO队列。在已完成的会话边界上,当存在另一个协调操作时,规划器会屈服,因此大量积压不会垄断工作人员。每个恢复的通道都会在预检中刷新其积压工作;调度不保留优先级预留。直接对账正在等待观察到的积压;网关启动在准备就绪后运行该维护,取消与启动生命周期相关。池保留一名工作人员,租约释放任务绕过积压准入。 延迟代理恢复通过共享状态工作线程读取删除状态。本机准备在事务前检查当前日志并提交接纳,无需重新进入SQLite在主机上。这些检查属于每个启动请求;重用本地演员进行普通工作并不能保留他们。提交的删除会使观察者运行之前捕获的待定准入无效,而回滚和替换准入所有者不受影响。启动迁移保留其待处理与已完成的清理诊断。不需要架构、保留、权限或更新迁移更改。 调用者应该从拥有不变量的存储中请求域操作,例如声明 cron 运行或附加转录报告。该所有者选择并解码行、验证当前权限、提交更改并发布结果。避免向应用程序代码公开通用 SQL 回调或在现有异步外观周围添加异步包装器。插件 KV API 已经对其 SQLite 所有者具有异步方法。 Worker 推理准入、终端完成、取消和重启恢复在共享状态 Worker 中执行。推理所有者在等待持久性之前注册待处理的启动,通过取消保留已接受的提供者和本机工作,并将本地结算错误与工作协议的最终结果分开。每次写入都会在工作线程准入边界内保留其同步事务和当前权限检查。现有的终端重放按键,JSON有效负载、保留限制、架构和重新启动恢复策略保持不变。 普通操作员批准查找、挂起重播、判决、到期和允许一次消费在共享状态工作线程中执行。重播到期并在列出待处理的集合之前发布适当的批准;挂起的查询会排除过期的行,而不重复该扫描。查找保留过期时间,并且两次读取都保留损坏行修复事务;历史页面使用只读工作者。 审批经理保留实时权力和决策交接, 检查交易权限并提交准入, 并在退出其本地绑定之前加入已接受的突变.启动孤儿关闭和修剪仍然是启动准入操作。存储的字节、模式、保留和更新行为保持不变。 捕获的请求权限在工作人员等待后仍然存在,并在查找、判决提交、协调和响应发布之前重新检查。店铺分享FIFO跨工人操作的准入和保留v2026.9.4不透明SDK进行警戒。明确选择的兼容性系列在本机事务中运行相同的内核,因此使用的防护SQLite从不等待自己的工作者的写入锁。这不是失败后备。删除此异常需要SDK可能需要工人安全防护的合同。历史记录保留在只读工作线程上,并在其存储工作之外进行完整的请求检查。遗产exec/plugin读取和解析处理程序通过过期、前缀查找和判决接纳来承载相同的原始请求权限。未知的判决结果会在原始物理数据库准入下获得一次读回,并捕获维护和模式范围,而无需重试写入。即使替换包含匹配的批准字节,替换该所有者也会使判决不确定;当地安置点复核后复核原始录取情况。和解仅保留来自该操作的提交后收据的自动审查来源,并保留未答复的无路由后备合同。运行时解析器 ID 可以共享或为空;没有收据的匹配行无法建立自动审阅出处。这样的判决在本地仍然不确定,而不同的设备或渠道获胜者则由运营商决定。已确认的挂起读回会清除不确定的尝试。延迟协调会保留原始数据库准入,直到解决不确定性。在上班前和下班时重试重新检查该所有者transaction/commit入场;待处理的读回无法清除替换所有者的栅栏。当持久准入被拒绝时,取消仍然会立即关闭本地可执行权限。 在明确的工作人员超载或拒绝不可用后,自主到期会重新设置其现有计时器。重试保留原始数据库、维护和模式所有者,并检查同一 CAS 中未更改的截止日期。随后的判决和和解将保留该待决条目的所有者,直至当地解决。他们无法采用替代品或将写入重定向到另一个存储。关闭或替换该所有者将停止重试。清理失败和不确定的写入结果不允许重放;普通腐败保留其现有的否认行为。 请求配置保管遵循承诺的政策出版物。与批准身份验证或会话路由无关的等效快照和设置会保留请求。在请求绑定其批准的源会话之前,保留的事实包括整个代理名册和会话存储库存。绑定后,它会保留路由事实以及源解析的存储,因此添加、删除或重新存储不相关的代理会保留它。共享固定商店保留其共同租户,退休的源所有者保留其商店发现扫描的库存。对保留事实的更改将永久撤销请求,包括在下一次工作人员检查之前恢复的更改。处理程序完成释放其发布侦听器;工作线程提交检查使用保留的撤销事实,而不加载配置、配置文件或会话行。本机兼容的请求除了同步之外还保留相同的发布栅栏SDK警卫。 捆绑的进程内代理调用者仍然由其运行、配置文件和接收权限所有者组成不透明的防护。那些同步读取布局、工具或环境状态的本机兼容载体和自定义防护需要单独的所有者迁移,然后整个批准流程才能摆脱父线程SQL。该迁移必须通过这些所有者准备权限并保留实时提交检查;它不得将内部代理身份视为WebSocket授权或放弃外部SDK警卫合同。 员工环境库存是其商店拥有的承诺、修订的预测。启动通过只读工作范围进行水合;运行时突变使用共享状态SQLite工作代理并重新读取提交事务中的环境、凭证和放置权限。代理在提交之前重新检查实时调用者权限,而存储区会更改权限,直到安装了提交的事实。当worker证明环境记录除了错误文本和更新时间戳之外没有改变时,环境读取仍然可用;独立的凭证读取要求完整的凭证行保持不变,因此仅凭证会提交栅栏凭证读取,而不需要栅栏环境读取。传输功能保留其单独的权限和生命周期检查。仅当工作人员证明完整的附件记录未更改(包括空闲清理防护使用的活动时间戳)时,附件读取在不相关的元数据提交期间才保持可用。更换、关闭和活动变更保留其出版围栏。列表和键控库存读取使用投影。 绑定的工作执行身份和委派的批准检查通过现有的放置读取器异步准备选定的放置事实。保留的检查会消耗展示位置所有者的实时声明化身,而不发出 SQLite 查询。更改权限的放置内核在观察者面前的外部提交中发布其现有的 postimage;嵌套回滚会放弃这些更改。即使声明字段相同,发布和重新接纳也无法恢复早期的功能。兼容的耗尽和保留的本地声明保留其权限,而数据库替换、重新启动清算或不确定的交易所有者则撤销它。 ACK、工作区元数据和捆绑包更新不会独立撤销声明。其他放置读取、突变及其精确的数据库内检查保留其现有的事务边界;将这些突变和内部不透明的批准载体转移给工人仍然是单独的工作。 External opaque SDK guards, stored rows, schemas, permissions, and update behavior are unchanged。 工作线程绑定在准备其声明权限之前捕获完整的原始会话目标.绑定身份和转录功能保留相同的存储、生命周期修订和编写者身份。源验证仍然使用会话访问器的同步行检查; 将单独的所有者转移到准备好的异步托管仍然是后续工作. 保留的放置声明检查不会重复在该源防护内读取的放置行。 放置激活和准备环境消耗保留其现有的同步原子父事务。Node配对使用其现有的写入工作线程并在其提交的收据中携带库存更改。所有三个发布字段均已通过同一个库存所有者在观察者面前且无需其他人通过其交易准备好SQLite读。当延迟的工作人员回复提供已提交行的其余部分时,提交接纳时保留的修订会保留较新的出版物。保留读取只读工作线程中的有界页面,应用现有的需求策略,并仅删除写入工作线程中精确的、仍未引用的观察结果。关闭连接接受的写入;存储的行、模式、保留策略、配置和更新行为保持不变。 网关维护拥有共享状态工作线程中的全局插件状态过期。扫描会在其承认的写入事务内对到期时间进行采样,并最多删除 1,024 行。编写器等待网关事件循环可用,而捕获的维护范围和数据库生命周期仍然授权操作。网关关闭加入承认的维护工作;过期、存储格式和更新行为不变。 任务保留也在共享状态工作线程中运行.维护保留其现有的任务选择、扫描时间和 cron 历史记录限制,然后重新检查已承认事务中的每个选定任务。 Cron 溢出选择在异步准备过程中保留其原始分区和排名事实;更改的行等待下一次扫描。在删除溢出之前,工作人员会在写入事务中检查其当前分区排名,因为更改的对等方可以将未更改的行带回到历史限制内。 读取工作人员准备确切的行并 a fingerprint; 写入工作人员在突变之前验证该源并在提交之前重新检查实时权限.如果结果交付失败,紧凑的本机提交收据会保留已知结果,而无需通过提交通道重播写入或携带任务负载。 Deletes remove the task, delivery state, and execution-owner metadata together; 清理截止日期标记保留交付和活动时间戳. 承诺的收据在观察者事件之前更新驻留索引和活动, 而新的任务出版物取代了陈旧的回复.延迟流效果在清理标记后保留其现有的有界重试。已知的取消提交只需要投影修复;不确定的写入不会被重放。关闭加入已接受的工作。保留策略、架构和更新行为保持不变。 温暖的个人资料检查会读取现有的电子邮件、提供商和网关所有者身份,无需作者许可。缺少标识和显示名称更改会重新检查现有写入事务中的权威行。 Exec授权通过共享状态worker按顺序提交批量待处理请求;未更改的策略快照不需要写入事务。更改的批次在提交之前重新读取策略和代理删除栅栏,并且执行时会根据捕获的数据库所有者重新检查当前权限。SQLite对于这些提交,写入争用保留在工作线程上。事务诊断报告本机准入缓慢和事务保留。架构初始化、持久性、迁移和更新行为保持不变。 沙箱注册表列表、点查找、backend/scope运行时 ID 和浏览器注册表读取在共享状态读取工作线程中执行。CLI管理和运行时配置等待相同的域 API。读取保留继承的快照和一次性源范围,保留只读和缺失状态行为,并在返回之前加入本机读取器清理。 Doctor 通过共享状态写入器导入遗留注册表行,并在捕获的维护范围下使用主机事务和提交准入。导入保留连续的每行事务、现有行优先级和分片前整体排序;源清理等待持久确认。容器注册表更新、完成和删除通过同一个编写器执行,保留捕获的输入、不可变字段、update/remove排序和移除意图警卫。Docker和Podman使用现有的pending/ready一次性设置状态;中断的安装会保留其容器和数据,并且不能在准备就绪时重新使用。没有就绪标记的旧条目将保留其现有行为。浏览器写道,reservation/lock原语、移除意图准入和当前回调保留其现有的同步所有者。现有记录不需要架构或数据迁移,并且保留不变。 共享状态写入序列化`BEGIN IMMEDIATE`在他们的实际数据库上。等待的工作保持其状态FIFO位置和容量预留。SQLite入场预算依然繁忙;仅承认重试,从未承认写入。主机在准备期间、本机执行之前以及同一操作的事务和提交授权时重新检查当前权限。在本机执行之前取消会加入已接受的工作,而无需重播命令。 启动、模式突变和离线维护共享一个可移动的进程所有者 sidecar。在 Unix 上,它位于所选状态目录的临时存储下;在Windows它使用用户的OpenClaw锁定目录。普通数据库访问会检查所有者是否存在维护冲突,而无需获取另一个锁。工作人员从其实时主机操作中获取模式权限;序列化路径和环境选择器不授予任何权限。正常释放会删除所有者 sidecar。普通状态写入不会创建单独的协调数据库。 经纪人承认最多128每个工人的未完成请求。繁忙的工作人员不会消耗其他工作人员的请求容量。仅计数溢出等待FIFO订购最多10秒;所有工作人员的排队和保留输入共享一个256 MiB字节预算。字节、消息和存储限制继续立即拒绝。超大的流式输入仍然需要立即可用的准入,而不是将完整的输入保留在等待队列中。准入超时或主机耗尽在调度前拒绝等待请求;调用者取消释放等待的请求,而分派的写入保留其本机结果。维护范围继续耗尽已接受的工作。速率限制警告报告准入队列深度和等待时间。Node和Bun使用公认的本机关闭功能创建的代理根据可用的 CPU 使用两到八个工作线程;Bun没有它创建的经纪人在其一生中为每个商店演员保留一名工人。 传统本机主机编写器在短本机 `BEGIN IMMEDIATE` 尝试之间为同一作业的准入端口提供服务,包括路径别名。这可以让工作线程在主机位于同步本机调用者内部时完成。成功的工作线程执行会在结果框架之前解决其本地事务;经纪人在整个结果中保留操作许可和运输积分。不稳定的本地工作保留监护权,直到工人退出。当本机主机编写器等待时,相同的每个作业端口服务限制结果帧。代理接收完整的结果,加入所需的工作程序出口,并单独报告清理,而不丢弃该结果或重播写入。不完整的结果交付保留其现有的未知结果处理。最终发布和追随者分派在同步本机等待服务返回后运行。准备拒绝也通过终端清理回复保留该端口。在共享状态的所有客户端接受的回调完成后,共享状态所有者将停用确切的不可用 Actor,因此下一次调用将打开可用的 Actor,而无需重试之前的写入。嵌套回调返回其已完成的结果,而对失败的参与者的进一步命令将拒绝,而无需等待封闭的回调自行关闭。报废清理失败保留现有的重试保管权,并与已完成的结果分开报告。本机主机编写器、网关生命周期所有权和源句柄准备保留其现有所有者。架构、保留和更新行为保持不变。 出站队列入队写入在共享状态工作线程中执行。主机在等待之前捕获存储的 JSON 托管及其状态上下文,而现有事务所有者保留命名空间冲突、精确准备比较和原子媒体阶段消耗。通过稍后的工作清理,完整的排队结果仍然具有权威性。记录的事务回滚保留了普通媒体清理和尽力实时发送。当执行可能已发生但没有可用的发布结果时,恢复保留队列保管和暂存媒体;尽力发送不会退回到独立实时发送。土著定居点本身并不能证明被拒绝的命令没有执行。没有媒体阶段的随机插入将其单个更新插入保留在同一跟踪事务中,因此观察到的完整回滚提供了权威的非发布证据。没有证据的其他拒绝结果仍然未经证实。 Recovery 拥有最终审计出版物,同时保留保管权。媒体准备和回调保留在主机上。媒体阶段创建、取消、修剪、稳定准备检查点和其他队列突变保留其现有所有者。架构、保留和更新行为保持不变。 托管传出图像元数据查找和清理清单通过共享状态工作线程读取,保留其可写性,创建数据库打开行为。键入的列、排序、清理声明和原始媒体引用均未更改。下载保留门票或所有者授权以及当前成绩单会员资格;已验证的描述符和渲染后缩略图检查仍然存在。插入、消息提交提升和清理 claim/deletion 事务也在该工作线程中运行。促销在成绩单提交时同步保留其记录,然后成绩单所有者在发布或发布之前加入已接受的作品。每条记录都保留其事务和重播行为,包括部分升级。清理不能取代已接受的同一记录升级。本机提交收据在丢失普通回复后仍然存在;未知的插入结果保留其原始字节而不接受撤销的通道结果。通道读取所有者将原始描述符与元数据保管一起解决,保留文件身份检查。清理保留插入捕获的数据库准入;退休保留提交的字节而不接受结果或采用替换存储。架构、保留和更新行为保持不变。 Doctor 导入和本机会话元数据读取保留其现有所有者。 交付队列维护使墓碑过期并读取共享状态工作线程中的媒体保管。阶段到期保留其现有交易和未完成的交付库存,包括保留的迁移介质。网关关闭通过文件系统清理加入已接受的队列扫描,并且替换维护等待较早的清理生成。每次扫描都会保留其捕获的状态目录。队列和暂存格式、保留限制、可写数据库准备和更新行为不变;发送入场和结算保留其所有者。 个人存储库发布选项扫描共享状态工作线程中的收据。阅读器验证现有时间戳和请求 ID 订单中的每个匹配的待处理收据,仅保留最新状态。标题和正文内容保留在工作人员中;旧的损坏收据仍然无法读取。选项在等待后重新检查当前调用者和会话权限,然后咨询共享发布所有者。准备好的个人账户状态重新检查其当前代和账户,无需重复网络验证。空存储库结果保留非存储库工作区所有者的后备。数据库打开行为、发布写入、架构和保留不变。 当承认的本机数据库仍然与其物理路径匹配时,通过独立读取工作线程共享 GitHub 发布选项和状态读取已提交收据。他们保留源所有者并在等待后重新检查会话和工作区权限,而无需为每个观察复制实时数据库。冷源和不可用或被替换的本机路径保留保留工件的快照准备。架构、权限和更新行为保持不变。 项目最近使用来自网关会话行投影的配置文件范围内、按新近度排序的候选者(包括存档行),直到找到八个不同的结果。承诺的收据维护创建者索引;不确定的元数据使用现有的工人准入。普通的最近会话不会重建组合会话存储。观察到的结帐请求仍然消耗更广泛的准备元数据选择。现有的选择所有者通过提交的行和拓扑发布来维护物理存储和哨兵优先级;列表不会重新读取或重建持久会话存储。最近的项目关系保留了实体商店和 SQLite 二进制密钥顺序。隐身条目保留在记忆演员中,并且永远不会进入持久驻留选择。其他组合商店列表使用现有的会话转录工作器。联盟在等待之前捕获物理目标、选项和可转移环境,保留标准化密钥、排序和准入诊断;无法读取仍然是错误。网关在准备后解析当前配置文件别名和披露范围。历史所有者保留整个批次中每个选定的耐用存储;商店关闭会撤销挂起的列表,而不是让它在以后的商店一代中重新开放。驻留行拓扑在现有共享状态工作线程中的一个延迟读取事务中一起准备保留删除和注册所有者事实。组合存储发现和每个查询范围都使用相同的快照;不可用的删除历史记录仍然保守。投影保留其原始源生命周期,并在等待后重新检查配置和发布纪元。同步消费者使用准备好的拓扑;挂起的刷新不会撤销 PR 订阅。隐身读取使用提交的内存演员事实;物理耐用商店决议保留其现有所有者。签出删除引用检查和最终的精确行权限检查保持同步;准备好的列表不授予删除或会话权限。架构、保留和更新行为保持不变。 工作人员安置会话证据将持久目标库存和有限身份读取移动到同一会话转录工作人员。仅当所有权依赖于注册表行时,目标发现才请求注册表行;冷读取使用现有的共享状态固定读取工作线程和主机注册表备忘录。仅在读取器清理和工作线程退休解决后,本机读取失败才会变得不可用。发现在等待之前捕获配置的路径、遗留同级家族和环境;未知的实体所有者保留保守的密切监护权,直到他们的读者退休。关闭代理、路径或匹配的根会撤销挂起的发现。缺失的读数不会创建数据库,当前证据优先于未知和不存在的证据。隐身证据来自其记忆演员。 子代理恢复通过该读取工作线程检查会话身份和执行所有权。每个检查都获得对其捕获的物理源的有限读者保管权,并且仅返回恢复策略使用的字段。本机句柄在现有连接修订版下保留最后一个键投影;作者收据、回滚和文件替换使重用无效。隐身检查使用提交的内存参与者事实。失踪的商店仍然失踪:中断运行的簿记和请求者结算继续进行,并抑制子效应,并且新出现的商店会使捕获的缺席无效。 会话信号、转录失败报告和浏览器清理声明通过其现有的本机写入许可来承载这些限制。主机授权后,worker 再次检查源版本;呼叫者权限在准入期间仍然有效。接受的写入和声称的清理保留其原始结算所有者。此更改不添加持久投影、架构、保留规则或更新迁移。 保留的、已接纳的本机读者可以针对一个工作请求继续其提交的会话接纳。数据库所有者将该延续绑定到实时源连接、物理文件、策略和准备情况。缺失或撤销的延续保留了严格的新读者验证;工作线程不会将借用的准入发布到其读取器缓存中。格式错误的行在有效延续内保留其现有的每行不确定性。安置退休仍使用现有的现场安置、索赔和环境检查;此读取迁移不会更改任何破坏性退休权限、架构、保留或更新行为。 会话行放置显示事实使用共享状态固定读取工作线程。每个批次都会从一个已提交的快照中读取放置、移动、挂起的工作区结果和环境事实。常驻行在所有者发布后刷新;归档页面和私有精确读取仅准备选定的行。演示文稿会消耗准备好的事实,而无需重新打开 SQLite,并且仅主机冲突有效负载仍与捕获的放置生成、环境、纪元或保留的工作区结果声明绑定。放置突变、权限检查、模式、保留和更新行为保留其现有所有者和合同。 观察项目发现和 CLI 的无损工作树清理结果通过共享状态工作线程读取托管工作树注册表记录。读取在等待之前捕获其数据库,并保留记录排序、清理结果、删除的记录和现有的创建打开行为。它不检查结帐或协调生命周期状态。创建、删除、恢复、运行租赁和克隆项目删除检查保留其现有所有者;这些观察性读取并不能证明结帐未被引用。预配置的快照路径分类账、文件状态元数据和单独的二进制块也会通过该工作线程读取。删除和恢复等待数据并在等待后保留其当前的防护。丢失和格式错误的元数据、块排序、架构、快照写入和恢复策略均未更改;这些数据读取不会将整个清理或恢复流程移出线程。 用户列表、会话成员选择器和人工提及目录的配置文件枚举在同一共享状态工作线程中运行。有序的配置文件元数据、逻辑删除、电子邮件和经过验证的 GitHub 句柄保留其现有的查询所有者;头像字节不是枚举的一部分。提及目录准备会考虑现有配置文件版本失效,然后评估当前请求者、会话和角色策略,并在一个同步步骤中发布 RPC 响应。准备好的目录行是描述性事实,而不是权限或当前别名权限。最近的项目保留了其披露范围的狭窄的新主要配置文件和别名查询。个人资料创建、显示名称和角色更改、显式头像上传、身份合并和最终 identity/permission 查找保留其现有的本地所有者。 聊天启动从会话投影保留的配置文件目录中准备其请求者。准备等待后元数据读取当前合并头并拒绝更改的客户端身份或退役的物理数据库。如果目录丢失,则在不打开 SQLite 的情况下,可选元数据将不可用。旧版电子邮件客户端通过只读工作程序解析其别名;只有丢失的别名才会进入共享状态编写器和现有配置文件事务。提交的创建会在配置文件观察者之前更新相同的驻留目录,包括结果交付失败时保留的协调。其他配置文件突变和授权路径保留其现有所有者。架构、迁移、更新和保留行为保持不变。 登录后 Tailscale 头像采用通过共享状态工作线程进行读取和有条件写入。它的事务遵循当前合并目标并保留每个非空头像,包括显式空上传。提交的描述符在观察者运行之前更新现有的配置文件目录;主机配置文件所有者随后发布的编辑和合并仍然具有权威性。该目录保留了现有的本地加工新鲜度合同。不确定结果传递通过 close 保留原始物理源的固定只读协调,无需重放突变或将原始错误转换为成功。失败的协调或读者退休仍归商店关闭以重试。配置文件架构、头像字节、获取限制以及最终身份和权限检查均保持不变。 子代理注册表突变使用一位行所有者,包括注册、取消、替换、完成、请求者唤醒和恢复。每行 FIFO 准入先于针对不可变发布值的同步规划;多行计划将它们的排序键一起接受。工作器在写入之前比较存储的有效负载和索引所有权列的摘要,然后返回确认的版本。冲突的写入会通过读取工作线程刷新权威行并重新计划最多 3 次。真正的执行、取消和请求者群组所有权损失仍然是明确的拒绝。 只有提交的 postimage 才会成为常驻行。运行时托管遵循跨元数据发布的相同执行,而实际执行替换会撤销它。进程内网关替换后的恢复在行准入下获取新的运行时化身,而不更改持久执行生成。合格的终端会话状态事件共享行事务。未知的写入结果会隔离受影响的行,直到从存储中恢复;他们从不授权重播。摘要不需要新列、架构迁移或更新程序行为,并且还检测来自无法维护新修订列的旧进程的写入。 对已完成子项的普通后续操作会创建新任务和执行,同时保留已完成行的待处理父项交付和接收。同一行事务隔离了前一个事务的会话效果;其具体执行和请求者保管仍需公告重试。每个回合读取自己的成绩单结果并使用自己的公告幂等密钥。暂停继续和转向替换保留其相同任务采用语义。不需要架构迁移或更新程序更改。 临时取消索赔将保持注册状态,直到其所有者释放或确认为止。现有的持久性通知唤醒了等待;工作取消、网关耗尽和数据库停用会处置其订阅。已发布的声明允许在已知的拒绝或取代后写入新的受保护描述符,而无需重新创建子代理运行。确认的 Stop 可以撤销旧的失败回调;这不会将注册自身的发布错误视为已完成的接管。启动和故障切换使用相同的声明等待。清理会在会话调度和每个附件文件系统突变时重新检查实时权限。已经开始的上下文回滚加入一次;取消不会重播。最终的发货删除权由取消所有者负责,并且不会等待其自己提出索赔。调度程序删除会关闭其回调工作范围以唤醒声明等待,加入已承认的工作,然后在新的清理范围中运行准备处理。回调保留其第一次启动和承认的清理承诺,因此调度程序仅重试重复失败解决,保留原始调度错误。 注册会保留其启动描述符,直到持久性得到确认。本机子代理注册表首先在没有描述符的情况下保留排队的意图,然后在相同的捕获的运行、生成、会话和数据库权限下发布描述符。如果描述符发布失败或其结果未知,则本地启动将保持保留状态,并且持久意图、会话、准备好的上下文和附件仍可用于重新启动协调。恢复会解决无描述符排队运行,而无需再次启动它。 失败的注册会在发布终端本机执行和完成事实之前清除持久启动描述符。结算在仅限注册表的重试中保留其原始错误和终端时间戳。较新的运行生成、已确认的停止或丢失的数据库所有者会阻止后期写入替换当前所有者。未知的写入不会重播。在更改准备好的资源之前,清理会重新检查会话所有权并保留取消声明。没有单独的任务记录或受管理的流程参与准入或结算。 显式升级通知和声明注释在共享状态工作线程中执行。 CLI 在报告结果之前等待其尽力完成;存储故障仍然不会导致促销失败。请注意,记录保留其只读预检和原子排序的 slug 联合,并保留其他提要字段。空的通知会使不存在的数据库不存在,并且已经记录的通知不会打开写入器。声明更新插入、存储格式和保留不变。 更新检查遥测通过共享状态工作线程读取其缓存的响应和保留的会话创建计数。成功的响应使用现有的机器状态事务,该事务保留更新的持久响应。 CLI 等待预览读取,网关维护在关闭退出共享状态之前通过持久性加入已接受的检查。同意、有效负载字段、请求策略、缓存周期和有界内存重试状态保持不变。冷 CLI 插件清单准备工作仍由插件元数据所有者负责。 插件对话常备批准加载并更新插入到共享状态工作线程中。核心仅在持久完成后发布始终允许的授权,使用授权发布序列化缓存填充,并在生命周期重置清除缓存之前加入已承认的绑定操作。请求在存储等待后重新检查对话所有权。审批范围、一次性决策、渠道绑定 API 和 Doctor 导入均保持不变。 Copilot SDK 会话绑定使用这些工作程序支持的数据操作。该工具对每个 OpenClaw 会话的绑定读取、写入和内存中发布进行序列化;重置和关闭加入承认的绑定工作和延迟压缩清理。失败的持久性保留现有的内存中回退。绑定格式、兼容性检查、命名空间限制和过期时间保持不变。 托管的官方插件目录快照在共享状态工作线程中读取和写入。缺失状态读取不会创建数据库。现有写入事务在检查签名馈送序列和有效负载一致性之前重新读取当前快照。托管加载程序收到相同的单调性错误类型,因此被拒绝的写入保留接受的快照。市场刷新等待持久性,然后清除其目录缓存并将结果应用到网关。提要验证、过期快照可见性、安装权限和存储的表示形式均未更改。 Web 推送订阅读取、VAPID 身份、批准交付收据、恢复和过期目标清理在共享状态工作线程中运行。正常的配对浏览器突变也会在 WebSocket 请求所有者保留的权限下运行。工作线程解析其事务连接上的当前配置文件绑定,而主机准入检查保留的客户端、范围、请求和共享身份验证状态。所选帐户不匹配会保留原始错误和执行阶段详细信息。 不透明请求回调保留标记的 SDK 合约所需的本机突变内核。它们的完整回调在本机写入边界运行。该族是在存储开始之前选择的;工作线程故障永远不会重定向到本机 SQL。其剩余的迁移属于实际的进程内解析器、会话和运行权限生产者。接受的普通 RPC 保留其重新连接行为。 网关处理程序和通知发送者等待存储结果;收据准备会在最终收件人和批准检查之前返回提交的目标 ID。私有 FIFO 范围通过最终订阅读取、同步策略检查和发送开始来订购订阅突变。范围在等待提供者完成之前结束;缓慢的网络传输不会阻止注册。该作用域使用现有的工作请求和字节限制作为其单独的有界等待间隔,并加入共享状态关闭。过期目标清理仍会比较发送的注册,并发 VAPID 初始化返回第一个提交的身份。只读身份查找不会创建丢失状态。现有表、附加模式准备、Doctor 导入、保留和通知负载均保持不变。交易准入之外的配对、配置文件、用户偏好和可见性检查保留其单独的同步所有者。 异步可变 cron 存储加载在共享状态工作线程中运行,包括现有的退休作业删除和运行时权限修复。连接绑定加载内核保留其单独的事务、分区键和指纹。完成的修复事实会使主机调度程序快照在负载稳定之前失效,包括当稍后的负载阶段失败时。快照保留加载前捕获的主机修订版本;干预写入会使其在下一次加载时变得陈旧。不可用的工作结果或未报告修复的失败加载也会使缓存的修订无效,而无需重播操作。 Doctor 诊断使用的错误原因跨越相同的闭域错误图,而不改变普通代理错误。没有事务挂钩的不受保护的 cron 保存也在该工作线程中执行,使用与本机挂钩事务相同的连接绑定内核。完全替换、仅运行时更新、隔离更改和更改行合并保留其现有事务边界。保存结果在结算前公布已承诺或不确定的失效。内部服务调用者收到操作绑定的修订;干预主机写入会使返回的快照保守地陈旧。被逐出的修订条目回退到现有的全局发布序列,并且陈旧的保存收据使用无法匹配当前修订的负标记。公共保存签名和返回值不变。服务添加、更新、声明收敛和删除使用现有的保留结果工人准入。回调函数由调用者保留;只有准备好的零钱和收据事实才会输入工作人员。启用的调度程序保留完全替换和原子隔离,而被动写入程序保留更改的行合并。本机事务针对最初加载的定义和运行时行进行完全替换,并独立地重新检查权威 sidecar。仅运行时保存无法根据较旧的服务快照验证较新的定义。它在工作变更时应用收据退休和所有者围栏,并在提交之前保留其结果。私有草稿只有在确认本地提交和结算后才可见;丢失的回复不会重播突变。一次性创建者赠款保留其原始发行者和重复实时检查的范围,而无需再次兑换代币。有效的调用者前提条件执行一次,并且本机事务再次检查其观察到的目标。拒绝的作业或收据突变会使调度程序在另一次编辑之前缓存的观察结果无效;外国收据所有者无需发布本地修订即可完成。未更改的声明验证不会将用户突变标记为已提交。普通删除会删除同一事务中的暂存。座席名册补偿保留其单独的暂存清理边界,直到知道名册结果为止。医生元数据回调、同步诊断读取和完整的创建者-session/harness 当前谓词保留其现有所有者并保持独立的调用者迁移工作。 普通的暂存和心跳提案写入使用相同的 Cron 工作线程。在一笔事务中检查作业存在和临时修订;受保护的服务写入还绑定当前作业定义并在事务和提交准入时保留实时调用者权限。只有实际的临时写入才会标记其业务完成收据。未设置的墓碑、字节限制、源出处和不确定的结果处理均保持不变。医生的迁移和补偿保持相同的同步内核。普通的暂存读取使用共享状态读取器,作业定义和暂存位于一个本机快照中。该服务拒绝更改的定义,并且网关在返回私有内容之前重新检查调用者。 Scratch 读取和写入会重用原始投影的创建时回退,以查找丢失该元数据的遗留行;有限的持久价值总是获胜。心跳预检会在选择其会话和待处理事件之前等待暂存。首次使用模式开放仍然属于共享可变工作者;医生指定的维护读者保持同步。这不会更改架构、保留策略、公共 API 或安装的更新程序合同。 流状态、源停用、丢失计数器和外部故障更新也使用保留结果 Cron 工作线程。事务重新读取目标行及其运行时权限,保留授权投影,并在更改源限定状态之前检查逻辑源所有权。计数器在源替换过程中保持单调。主机在等待服务锁之前捕获其物理存储、服务生成和默认代理解析器,然后在事务和提交准入时检查它们。关闭仍然可以退出其流源。外部故障保留现有策略并且不会终止运行收据。已知提交后,主机会在发布已完成的事件和警报之前加入该原始源下的历史尝试。丢失的普通回复不会跳过这些效果或重播写入内容;不确定的结果不发表。提交的源退役通过操作失败携带其确切身份,因此流所有者可以完成其条件状态写入而无需重放退役。仍然报告原始故障,并且最终写入保留其源检查。没有存储格式、公共方法或保留策略更改。 跳过运行结果、启动追赶计划和预留清理使用相同的工作线程和同步行内核。本机事务将当前行标记和收据与主机活动和确切的本地预订事实相结合;主机在授予提交之前重新检查这些事实。启动收据清理和延迟计划比较仍然是原子的,并保留存储的行顺序以实现交错。手动、计划和启动清理保留其独特的缺失行和标记谓词。捕获的调用者和存储权限在队列等待中幸存;承诺完成可以在同一存储中通过调度程序重新启动来完成,而无需承认已退休一代的新工作。清理重试需要已知的非提交,并且稍后的启动清理无法重播之前提交的或不确定的保留写入。即使路由在完成之前发生变化,已提交的跳过也会保留其原始历史记录属性和通知默认值;捕获的缺勤无法采用新配置的收件人。运输可用性和警报周期检查仍在交付和结算时进行。同步服务编写器被删除;本机交易内核保留在其现有存储所有者内。架构、存储字节、公共合同、保留和安装的更新程序行为均保持不变。 Cron 恢复观察一个共享状态读取工作快照中的每个批次。健康的实时收据不需要作家的许可。丢失的收据表在观察恢复之前使用其现有的可写首次使用初始化程序。进程活跃度和本地收据所有权仍属于主机;观察永远不会授予维修权。 每个必要的修复都在其自己的共享状态工作事务中运行,重新读取确切的收据、作业标记和 Cron 历史记录。主机提供当前的路由策略并在事务和提交准入时重新验证数据库、调度程序、取消和接收所有权。它在授予提交之前保留序列化结果;即使普通工作人员回复丢失,匹配的紧凑本机提交收据也可以证明发布。通知意图携带传递事实,而无需执行有效负载。主机仅在提交和本地结算后发送它们。计划维护和已解决的警报传递使用相同的保留结果所有者。维护读取活动收据并更新工作人员中的无主作业,并在事务下准备主机预留和活动作业事实,并在提交前再次检查。警报结果仅更新确切的运行、警报时间戳和通知标识,而交付仍未解决。即使普通工作人员回复丢失,承诺的维护行和通知也会发布一次。 启动、定时器恢复、外收监控和结算服务员在现有分区锁下使用同一所有者。如果稍后的修复候选者失败或一代退役,则较早提交的中断仍会在重新加载后、新的调度工作之前发布。退休的定时器批次加入预留清理并仅释放它们获取的执行槽。架构、保留和更新行为不变;受保护的保存和执行权限检查保留其现有所有者。国外收据监控可协调记录的运行所有权和结算;它不会探测 SQLite 版本或授权其他进程写入实时网关数据库。 只读 Cron 检查在有界工作任务中运行其本机打开、行解码和关闭。普通冷读和保留工件的冷读使所有 SQLite 执行脱离调用者线程。工件保存使用现有的快照所有者。父级在分派之前拥有暂存,并等待源副本子级和读取器工作线程退出,然后再退出暂存令牌并删除复制的字节。丢失的数据库仍然不存在,遗留布局不会迁移,Doctor 保留其现有的架构检查和错误。失败的工作线程退休或快照删除仍向现有状态生命周期所有者注册,因此存储所有者清理可以重试相同的资源,而无需重播读取或过早释放其引脚。 在分派有效负载、发送 Webhook 或发布脚本结果之前,直接 Cron 执行检查会等待相同的读取工作线程。工作人员在一次读取事务中读取活动收据、当前作业和请求的代理删除事实。每次检查都会保留运行的原始数据库上下文,绕过继承的发现快照,并在生效之前重新检查取消和活动标记。重新打开的数据库无法替换已停用的运行上下文。缺少收据存储将拒绝执行而不创建表。同步消息操作和消息源防护保留其现有的当前读取所有者;这些有限的等待检查不会取代那些后来的效果防护。 Doctor 等待通过共享状态读取工作者隔离的 Cron 行。现有的查询顺序和负载解码器保留在 Cron 存储中;捕获的源所有权、继承的快照、模式错误和丢失的数据库行为来自现有的读取器。观察隔离绝不会创建或迁移存储。独立隔离注册捕获其原始来源并在等待现有 Cron 编写器之前序列化恢复记录。医生在归档遗留隔离文件之前等待登记;拒绝或不确定的写入结果会使文件可供恢复。相同的同步批处理内核保留在全存储修复事务中。旧的序列排序、首次恢复时间戳、记录标识和保留不变。其他 Doctor 指纹和元数据交易挂钩保留其原始所有者。 iMessage 出站收据恢复通过共享工作代理读取外部消息 SQLite 数据库。它的插件拥有只读 GUID 查询;每个恢复操作都通过轮询保留其只读连接,并在发送发布其接收之前加入工作人员清理。数字消息 ID 和最新匹配的已发送消息保留其现有的恢复规则,包括五秒轮询截止时间。同一个插件拥有的工作人员读取 iMessage 的本地启动水印并在传输检查和监视订阅之前完成清理。空数据库保留第一行前的光标;不可用的数据库保留现有的后备。会话绑定查询仍然是单独的迁移工作。 iMessage 持久回显读取、写入和发送失败清理使用插件状态工作线程。在传输之前发送等待临时回显持久性,并在报告失败之前进行清理。入站回显匹配在选择是否调度之前等待持久的事实。具有插件状态比较方法的主机使用工作器进行恢复游标写入;条件写入保留每个帐户和数据库的最大承认行。声明的 OpenClaw 2026.9.4 对等点和插件 API 底层仍然受支持:没有这些比较方法的主机在保留的同步存储的事务性 `update` 回调中运行相同的行决策。可用比较方法的失败永远不会回退到同步写入。仅当声明的主机楼层排除没有比较支持的主机时,才删除此后备。持久入口会在承认下一行之前加入每个游标更新,并在关闭时加入承认的工作。现有命名空间、存储值、过期、迁移和尽力而为失败策略保持不变。 iMessage 回复缓存还通过工作线程支持的密钥存储进行水化和持久化。它的所有者在内存中分配短 ID,而不产生并序列化计数器、逐出和条目写入;调用者在完成之前加入持久性。如果后来的条目水合失败,成功读取的计数器仍然可用。共享操作调度程序在输入操作(包括重新启动后的第一个操作)之前等待异步对话匹配伙伴。现有的布尔回调为已发布的 OpenClaw 2026.9.4 主机和没有该同伴的其他主机保留同步冷水合作用。它仍然是一个字面上的布尔值,而不是一个承诺。仅当其声明的主机楼层排除没有异步匹配的主机时,才删除此插件回退。现有的缓存命名空间、记录形状、TTL、限制和尽力而为失败策略保持不变。 Discord 存在冷却读取、声明和条件回滚使用共享状态工作线程。侦听器在存储等待后重新检查当前策略和网关生成,仅在持久声明后对问候语进行排队,并在提供程序关闭期间加入已承认的工作和回滚,包括通过重新连接分离的工作。仍使用相同的命名空间、八小时到期时间和容量策略。 Discord 通道管理器创建、提供程序启动和注册子代理挂钩时的线程绑定恢复使用共享状态工作线程。并发冷读分担一份负载;在加载挂起时初始化或改变注册表的同步兼容性调用程序会保持其较新的状态。当启动被取消或协调失败时,提供程序启动将停止获取的绑定管理器。快照写入和公共同步绑定 API 保留其同步所有者和完成合约。移动这些写入需要保留立即解除绑定的持久性,并防止旧的写入重新创建已删除的绑定;行比较标记本身并不能识别不存在的绑定化身。 代理 CLI、网关花名册和本地 TUI 显示的代理创建来源由共享状态工作线程读取。 JSON CLI 输出仅读取其配置的代理 ID;树和网关输出保留完整的有序枚举和枚举验证。冷读保留数据库创建和特征模式初始化。出处记录和退役删除通过共享状态编写器执行。同步化身检查和最终效果守卫仍属于其生命周期所有者;收集和保留不变。化身检查读取当前提交的行,而无需加入工作线程的写入锁或继承发现快照。它们不创建状态或初始化模式:缺少可选来源仍然为空,而缺少强制删除日志或格式错误的状态拒绝授权。编写者保留模式初始化。 内存主机事件追加和有界日志读取在共享状态工作线程上执行。插件状态所有者分配序列,重新读取游标和保留尾部,写入两行,并在该工作线程上的一个同步写入事务中应用保留。调用者事件字段在准入之前被序列化;所有者添加序列,同时保留现有存储的 JSON 和密钥。读取使用仅现有的工作路径,并且不会创建丢失的数据库。公共活动助手和导出等待持久完成。游标驱逐、命名空间范围的追加排序、同级行预算和回滚保持不变。 Matrix 的实时同步缓存通过共享状态工作线程加载并保留。客户端工厂在发布客户端之前等待加载的游标和干净关闭事实,因此启动的重播决策会看到之前完成的关闭。 SDK 的同步游标获取器仅保留内存。完整的缓存读取、写入和删除在进程内由存储根序列化。 Chunk写入在删除上一代之前仍然发布元数据;删除、刷新和静止加入同一个持久性所有者。缓存加载失败在持久性上仍然可见,并且现有版本、命名空间、摘要验证、反跳和主机层保持不变。 Matrix 存储根选择、初始元数据、加密状态评分和启动导入也使用工作人员支持的密钥存储。选择保留所声明的主根快捷方式和相同设备令牌轮换规则;存档的根仍然被排除在外。元数据比较保留并发令牌声明和设备更新。导入在归档之前完成,失败的归档会保留已完成的导入和不相关的文件。设备回填在启动时保持非阻塞;监视退休取消并在释放存储之前加入它。不支持纯数据比较的主机会在声明的插件 API 层下保留现有的本机元数据和导入决策。工人的失败永远不会选择后备。监视机器人帐户发现等待身份验证后读取选定的凭据,然后在获取客户端或安装处理程序之前检查取消情况。每个身份使用一个观察到的凭证和共享的帐户准备规则;不需要命名空间扫描或新的批量读取功能。批准参与者和反应批准者列表可从帐户配置中解析,无需读取凭据;本机交付资格仍会检查启用和配置的帐户准备情况。同步公共帐户准备情况和程序包身份验证存在检查保留其单独的 SDK 合约。 Node-host 启动并转动日志在同一共享状态工作线程上执行。主管在两种期刊上共享一个准入和结算所有者,因此未知的轮转结果也会阻碍物理完成和容量发布。发射入场保留其单独的观察和入场交易;过程检查保留在SQLite之外,并且入场在采用之前重读观察到的所有者。回合声明在插入交易中读取其物理所有者,并且物理结算以原子方式关闭未完成的回合。主管取消会在等待期刊之前关闭本地录取。有序、有界的结果处理连接在发布物理结果或释放其槽之前转变为持久性。关闭加入已接受的期刊工作和本地解决;失败的清理仍然可以重试,并且未知的写入结果无法释放所有权。架构、收据保留和更新迁移保持不变。准备工作空间持久性和同步插件工作空间获取合同保留其现有所有者。 Node-host 标准输出消耗在持久性等待时使用本机管道背压;现有的刊前总量限额和单帧限额不变。消费失败请求现有适配器停止并加入本机完成。未经确认的本机等待会加入已接受的结果持​​久性,拒绝迟到的帧,并将物理清理留给其现有的延迟所有者。 Reef 注册绑定读取、保留、最终确定、发布和设置会话持久性使用共享状态工作线程。他们现有的比较合同保持不变。密钥和迁移防护、信任编辑、审查决策和容量更改、光标前进和拒绝 reservation/completion 现在使用完整的同步工作人员操作。每个命令读取权威行并在一个事务中应用其整个更改。这些操作共享现有的写入器 FIFO、配额、TTL 和已接受工作结算。丢失的响应不允许重播。 审核追加和有序事件组恢复过期的暂存条目、链接前置条目、强制保留后缀以及在同一事务中推进头部。仍然有效的遗留附加租约在没有突变的情况下被拒绝;升级和回滚后,挂起和垃圾记录仍然可读。审计读取观察一个工人操作中的头部和保留条目。审核格式、加密、保留窗口、架构和更新行为保持不变。 游标操作验证绑定身份并单调推进工作线程内的行。收件箱在发布其光标之前等待持久性,并在关闭时加入承认的写入。一起审查所选已完成记录提交的插入和逐出;决策返回他们更改的请求。存储的绑定、游标 JSON、审阅摘要、排序、容量和到期时间保持不变。 出库准备通过一个命令提交提案并读取当前的 peer/review 事实。外部防护分类后,最终确定将提交审核事件组以及审核状态或确切的交付绑定。最终中继启动会检查正在进行的收据。批准的突变在排队之前使接收权限失效;不支持在线外国数据库编写器。此路径不会在操作步骤之间添加新鲜度或模式探测。外部警卫和运输工作仍处于 SQLite 事务之外。 捆绑礁石需要当前宿主的操作能力。其以前的旧主机本机适配器已被删除;工作人员错误传播到调用者。存储的注册 JSON、预留到期、命名空间限制和 Doctor 导入保持不变。 Reef 传递消息标记使用共享状态工作线程在当前主机上进行查找和原子插入(如果不存在)确认。入站流等待进入,然后等待持久确认,然后等待中继确认。容量故障使条目处于停放状态以便重试,而无需驱逐活动标记。现有标记 JSON、过期时间、命名空间和插件范围限制保持不变。这些标记保留了其现有所有者以及上述复合操作。 Reef 重放声明、更新、完成、消耗、释放和读取使用共享状态工作线程。重放所有者通过持久解决和本地声明发布来保留调用顺序;冲突的突变重新验证当前声明并重用准备好的完成字节。入站处理在返回之前加入已承认的心跳更新。现有行拒绝路径仍然更新存储的 TTL,并且过期的声明仍然可以由其匹配所有者使用,直到后继者替换它。存储的JSON、加密、配额和保留不变。当前主机提供了两种比较方法。工作线程故障永远不会回退到本机回调,并且域验证错误会直接出现。 插件 BLOB 突变在共享状态工作线程中执行,具有现有的物理字节和行配额、命名空间驱逐和原子过期元数据声明。在复制字节或等待参与者准备之前,注册会在现有代理中保留捕获的输入容量。 Dispatch 接管该保留,drain 撤销挂起的准备并加入其结算而不重播写入。他们的读取使用保留的只读源所有者,保留快照选择、丢失存储行为以及打开与读取错误分类。没有权威收据的中断阅读仍然不会被观察到;它永远不会被视为没有查询运行的证据或丢失的条目。主要错误、验收错误和清除错误保留在同一错误图中。插件调用者等待持久的结果,Diffs 在服务停止之前加入后台清理。架构、存储字节、TTL 备份规则和 update/migration 路径保持不变。 网关客户端设备令牌读取、写入和清除在共享状态工作线程中运行,包括源绑定令牌。调用者在等待之前捕获状态环境、输入和准入。代币所有者保留其现有的编解码器、比较栅栏和交易。只读客户端保留保留工件的读取并且永远不会创建丢失的状态。重新连接等待接受的持久性,客户端关闭在返回之前耗尽它;提供的取消和业主警卫在工人入场时再次检查。设备身份创建和复合配对恢复事务保留其现有所有者。新的令牌突变在与令牌数据 SQL 相同的工作人员上获取和释放生命周期托管。在启动 RPC 超时之前,一次性调用会在请求准备期间初始化该参与者,而不读取或缓存令牌事实。 ClickClack 讨论生成保留和待打开恢复记录使用共享状态工作线程。世代突变比较当前行,通过结算进行序列化;旧的终结器无法清除替换代。通道创建等待持久隔离,并在存储等待后重新检查实时帐户和活动会话。服务停止关闭准入并加入已接受的操作,包括尚未到达通道突变队列的工作;重新启动等待排水。现有一代 JSON、命名空间限制、保留和 binding/tombstone 最终确定顺序保持不变。仅当不存在比较方法时,声明的 2026.9.4 主机层才保留不间断的本地突变,直到最小主机保证它们为止。工作线程故障永远不会选择该兼容性路径。绑定存储、撤销和同步可见性保留其单独的所有者。 只读工作区设置和证明快照在保留的共享状态读取工作线程中执行。别名解析和关联行共享一个读取事务。引导准备和医生准备等待结果;检查不会创建丢失的状态或注册别名。选定的快照和工件保留范围保留其现有的生命周期和清理所有者。通用复合准备和借用源备份保留其原始所有者。证明刷新使用共享状态编写器的本机 SQLite 事务,并在事务和提交准入时进行实时主机检查。每次观察都会保留其持久的时间戳,因此 24 小时失踪守卫可以在重新启动后继续存在;未更改的生成哈希重用事务的存储行。可变工作区读取、设置写入和 Doctor 别名修复保留其现有事务所有者。架构、保留和更新行为保持不变。 MCP 拨款准备通过独立的共享状态读取工作线程读取执行批准策略。策略所有者在屈服之前捕获原始数据库路径,并在主机上保留遗留文件迁移检查、规范化、拒绝结果和警告限制。读取器保留继承的快照并在一次性源清理之前加入接受的读取。丢失的存储保持缺席,工作人员故障永远不会通过主机 SQLite 重试。执行授权回调使用来自进程内提交的写入发布的当前策略,这些发布由现有授权工作线程操作作为种子。待执行或未知的策略写入在执行时无法关闭;已完成的写入会在下一次执行检查之前替换策略。回调不再打开或查询本机阅读器。策略突变、恢复和初始化保留其现有的工人所有者; Doctor保留其同步维护交易。 使用 Kysely 进行普通查询和突变。当前的 `getNodeSqliteKysely` 外观编译查询; `executeSqliteQuerySync` 在提供的 `node:sqlite` 连接上运行它们。在该外观上调用 Kysely 的异步 `execute` 方法是一个错误。使用另一种方言的查询编译可以识别语法依赖性,但不能证明驱动程序行为、隔离或数据库兼容性。 进度卡在其现有代理数据库所有者的控制下保持持久会话状态。本机子代理执行、完成交付和取消均由子代理注册表拥有;他们不再需要任务或流程预测。状态读取使用本机运行状态而不是恢复共享任务注册表。 终端子代理取消会在共享状态读取工作线程中准备保留的子会话行,在注册表发布更改后重试,并最后应用当前实时运行。每个同步决策都会保留原始数据库准入。拒绝的写入使最后提交的投影保持不变。冷读取保留已确认的行更改,直到其第一个完整快照为止,并且从存储恢复会替换同一数据库所有者下的这些事实。返回的记录不能改变不可变的驻留行。进度观察者使用其现有的实时运行所有者,匹配已经需要实时条目的准入和生成检查。检查链接通过现有的异步配置读取器准备其配置。等待后,交付会重新检查其声明,然后在同步发送决策期间解析捕获的配置中的链接。 工件范围解析保留会话密钥和运行 ID 优先级,并在等待准备后检查保留的请求权限、当前运行时配置和会话可见性。请求拥有的取消和撤销停止下游工作;普通重新连接保留其承认的请求权限。工件会话元数据和最终下载权限保留其现有所有者。 离线`status --json --all`在构建内存管理器之前通过内存核心的检索工作器检查现有的内置内存数据。该检查保留当前和已发送的表识别、丢失存储行为和尽力读取失败,而无需创建或迁移数据库。自定义内存插槽和显式配置的内存保留其现有的选择路径。这仅移动存在检查;内存管理器诊断保留自己的生命周期和执行契约。 网关、嵌入式和 TUI 会话列表使用常驻物化行和子代理注册表的所有者维护的内存快照。每个持久会话存储在首次接纳、更换或重新引入时都会被水化;离开的商店失去了预计的行数。承诺的所有者出版物将受影响的身份标记为脏,并且通过共享会话列表工作预算产生有限的刷新批次。清理列表、描述和事件快照读取不执行 SQLite 语句。刷新脏行可能会使用现有的精确键读取器来获取冷事实;请求永远不会重建组合存储或重新加载子代理注册表。外部工作人员通过他们自己的桥梁发布提交的更改。投影准备就绪后,选择、授权和呈现将在一个同步边界中使用当前呼叫者身份。 本地代理注册在发布拓扑之前加入工人结算。即使在临时模式范围结束后,见证提交也会使保留的发现失效,而发布仍会检查原始物理数据库所有者。未知的结果会使待处理的事实无效,而无需发明提交收据或重播注册。 MCP 目录在决定会话预览是否可用之前准备所需的会话元数据。预览将提交的模型锁元数据与当前共享身份配对。等待工作完成后(包括返回缓存目录时)再次运行授予、执行和网关检查。这些更改不需要架构、配置、保留或更新迁移。 在投影准备就绪之前,冷紧凑子代理库存通过共享状态只读工作线程加载。它的驻留快照属于物理数据库生成,因此来自临时维护范围的发布不会丢弃它。注册表替换和恢复替换快照;命名写入修补它。关闭、替换和首次创建数据库会使旧事实无效,并且在挂起的读取期间接受的发布优先于其回复。私有数据库快照永远不会填充实时数据库的驻留事实。 受控运行列表会在合并物理有效负载 ID 之前选择最新的可见子代。后代计数使用紧凑的事实;产生子执行和提示结果读取器保留范围会话读取,其中包括保留代。收集器在准备选定的有效负载之前等待订阅。他们的消费框架会一起重新选择当前的所有权和完成度,因此不相关的出版物不能推迟已过的截止日期。取消会在释放侦听器之前加入挂起的读取。普通查询失败解决后,可选的历史子提示可能会被省略;准入、取消和清理失败仍然会传播。存储修复、架构、保留和更新行为保持不变。 批准受众发现还在注册前准备紧凑的子代理谱系。存储的父链接保留其现有的会话阅读器,包括隐身路由。不可用的可选注册表查询保留实时内存沿袭和存储的父级回退;准入、取消和清理失败仍然会传播。准备后和书面录取时,注册会重新检查当前权限。 网关 `session.members.list` 和 `session.members.listEvidence` 在投影工作通道上的一个 SQLite 快照中一起读取完整的成员资格行和当前会话元数据。他们不会在成绩单历史记录后面排队读取第二个会话。这两种方法在快照稳定后重新检查确切的会话实例和当前管理权限,包括通过发布的同步 SDK 编写器进行的所有权更改,而无需完全驻留发布。成员排序、参与者证据和缺失数据库行为保持不变。隐身成员身份和元数据使用承诺的内存参与者事实;持久同步会话存储外观保留其现有的兼容性契约。配置文件和创建者目录以及成员资格写入保留其现有的执行路径。没有架构、配置、保留或更新迁移。 监视的上游会话发现在共享状态工作线程中运行其现有的单查询快照和行解码。监视器等待该快照并在使用之前检查其停止信号。目录分组、重复观察者抑制、不明确代理过滤和尽力而为失败保持不变。单链接读取及其立即受保护的写入保留其同步所有者,直到其完全新鲜度和突变边界一起移动。 入门引导建议读取使用共享的只读工作人员所有者,保留非创建行为和独立于网关可写参与者的生命周期。所有五个突变都在共享状态工作线程中运行。每个突变都保留其工作区密钥和现有的比较和更新事务;已答复的报价无法通过延迟扫描重新打开,并且过时的检查点无法覆盖更改的报价。该向导在安装前等待选定集持久性,检查每个已完成的技能安装,并仅在保存配置后记录官方插件结果。建议 CLI 命令在报告成功之前等待持久性。每个工人所有者通过本机清理保留其待处理的操作;存储格式和保留规则不变。 网关用户首选项 RPC 和对话外观读取解析共享状态工作线程中的合并配置文件 ID 和访问首选项。偏好写入将配置文件解析、配额验证和变更保留在一个同步写入事务中;完成后网关回复并更改事件。配置文件合并和同意更新保留其连接绑定内核。 Web 推送浏览器设置使用相同的首选项工作人员,同时通过首选项完成保留订阅快照保管权。在等待之后以及在事务和提交准入时重新检查请求和配置文件权限;回复和偏好更改事件遵循受保护的完成。设备订阅突变在快照准备后保持延迟启动。 共享只读工作线程所有者保留继承的快照和一次性源范围,直到任务确认本机读取器清理。固定读取共享两个执行工作线程,并具有现有的挂起任务和捕获的输入字节限制。成功的读取在 Node 和 Bun 上重用其工作线程和本机读取器,在每次读取时检查物理文件身份和模式准入。结果永远不会被缓存。在释放文件保管之前,特定于路径的退休会加入每个工作人员中公认的读取器清理工作。私有快照读取器在任务完成之前仍然关闭。完成的回复将保留其工作槽位,直到被接受。 Node和Bun具有本机关闭功能,在30分钟不使用后关闭单个读卡器,并可以在有针对性的清理后保留工作人员。没有该功能的 Bun 将相同的空闲间隔委托给工作程序退休,并在读取器关闭或更换时加入工作程序退出,包括私有快照和主机请求的清理。健康的阅读本身并不会让其工人退休。长期存在的池主机选择 SQLite 并在创建池之前等待现有库所有者的本机关闭决定。 Workers 继承创建时的当前决定;早期的工人在其一生中保持保守,而替代工人则继承已完成的决定。失败的回复和取消的任务会淘汰其确切的工作人员,而不会停止不相关的读取。在退出共享池之前,整个缓存关闭会耗尽已接受的资源,包括任何剩余的头像结算读取。失败的资源耗尽会保留该池以供存储所有者清理重试。本机句柄保持打开状态,因此关闭会释放其读取密封;每次重试密封件在排水前都会再次读取。失败的本机退出会保留密封,并且在重试之前在该路径上发布的替换文件也会保留密封。路径特定的关闭仅消耗该数据库允许的操作。尽力而为的隔离读取会保留域结果,但未经确认的隔离读取器清理还需要工作人员在源发布之前退休。如果退出失败,其原始故障仍然可用。一旦验证,隔离决定仍然是拒绝,即使其阅读器无法关闭;完整性错误保留清理失败作为其原因。普通固定读取会观察独立提交的数据库状态,即使不相关的缓存本机游标仍然看到较旧的快照。缓存的写入器保持打开状态,并通过读取结算保留;在阅读器打开之前和之后以及在结果接受时检查其捕获的物理身份。它的读取引脚不公开任何数据库:普通固定读取不会查询、备份、加入或结束该连接的事务。快照借用保留了其本机事务拒绝。明确选择的快照保留其原始私有源。修复了保存来自封闭源的工件的工作人员读取,将其私有所有权令牌保留在一个共享的暂存子项中,与复制和查询工作人员分开。每个私有查询读取器还通过其本机关闭持有令牌读取租约,因此分段子故障无法删除活动查询下的字节。清理在删除复制的字节之前等待令牌失效;关闭失败和未确认的清理保留保管权。分配使用现有的回收规则。在确认的暂存进程退出后,相同的检查器和独占令牌锁会在替换会话释放保留的字节之前协调退出。对缓存的本机源的保留工件的固定读取也使用该令牌所有者。他们保留原始源连接和备份所有者,重新检查等待准备的权限,并在释放源借用之前加入令牌清理。此移动令牌 SQLite 起作用,而不是本机备份或读者的回调 SQL。通用复合回调和已经打开的本机源备份保留其现有的快照所有者。这些准备路径仍然可以执行主线程SQLite。已发布的 SDK 准备助手也保留其同步 `cleanup()` 合约。复制状态错误将返回给该读取器,而不会成为实时缓存的确认故障;本机访问和事务所有者保留自己的版本检查、故障锁定和损坏驱逐。失败的读取清理仍会注册以供店主重试;源快照和 pin 保持所有权,直到任务清理(包括所需的工作进程终止)得到确认。维护范围在其资源、引用和句柄清理阶段之前加入已承认的读取。缓存的读取器仅在工作人员输入其模式验证的查询回调后(包括该查询稍后失败时)记录共享维护所有权。启动和模式拒绝不会转移所有权。 用于连接、运行器启动和仅节点状态的 Node-host 配置加载使用相同的独立只读工作线程。两个读取器都保留缺失存储非创建和现有 JSON、元数据和配置验证。他们在等待之前捕获选定的状态环境,并在接受工作人员回复之前重新检查原始根上的退休文件拒绝。受管节点保留共享的现有架构范围,而不接管架构修复。配置替换保留其同步事务所有者。 首次使用会话组注册在共享状态工作线程中运行。现有类别返回,无需作者许可;丢失的名称会在同步事务中重新检查,分配它们的位置并插入它们。会话创建和补丁调用者在发布组失效之前等待注册。两者都保留持久的会话结果,并在目录簿记失败时发出警告。补丁也只会刷新不确定结果的目录;重试相同的类别分配可以修复丢失的注册。目录读取和其他突变、默认值和侧边栏排序保留其所有者。 主机在等待工作之前捕获数据库路径、状态环境和当前准入。共享工作者拥有其底层连接和模式开放,其网关模式权限由其实时主机操作授予。分类数据库错误可以在传输中幸存下来,并且存储紧密连接工作人员操作和本机清理。冷子代理注册表恢复会在安装其驻留快照之前读取共享状态只读工作线程。异步运行时配置准备还会读取共享状态工作线程中的 Claw 同意来源;同步配置加载器保留其现有的兼容性路径。 动态模型解析等待持续的身份验证配置文件读取。代理本地和旧共享凭据使用隔离的只读子级,因此读取可以与代理数据库的内存发布工作线程共存。选定的快照保留其拥有的私有源。重新定位的共享凭据和选定的个人帐户使用共享状态工作线程。失踪的商店仍然下落不明。有界传输帧保留完整的凭证行,没有聚合大小限制。在结果到达模型准备之前完成读取器清理;主机拥有的覆盖和迁移检查保留捕获的持久事实并在清理后重新验证。不可读的继承代理存储上记录的拒绝不会隐藏健康的本地凭据;选定的存储故障仍然会传播。凭证突变和同步 SDK 读取器保留其现有所有者。 有界 CLI 和提供程序设置身份验证范围在调用回调之前通过同一共享状态工作线程准备共享所有权和可移植凭证。每个范围都会读取新的凭据并在准备过程中保留其原始状态根。数据库关闭或共享所有权更改可防止延迟范围输入。嵌套和并发范围保留单独的通读视图; OAuth 更新材料仍归其现有所有者所有。 嵌入式运行的延迟条目加载通过共享只读工作线程所有者准备固定的库描述。每个未缓存的加载都会在工作区准备之前捕获其库引脚值和状态上下文,并仅在准备和当前所有者检查完成后才发布组合条目。即使库条目已缓存,数据库关闭也会使挂起的准备工作无效。准备期间工作区源发生变化,重试进行中的加载;已完成的缓存条目保持稳定,并发加载保留第一个完整的发布。工作区过滤仍然先于附加的库引脚;仅工作区加载忽略它们。工作区插件发现保留其现有的同步元数据路径。架构、保留和更新行为保持不变。 MCP OAuth 存储读取、挂起回调查找和请求者计数在工作线程中运行。只读操作通过共享状态读取所有者保留捕获的存储以及调用者的快照和工件保留范围。其现有的工作池拥有队列准入、存储关闭连接接受的读取和工作清理。提供程序创建准备 SDK 的同步元数据获取器所需的重定向事实;凭证和发现回调等待新的存储读取。较早的读取无法替换稍后写入确认的元数据。如果写入在可能的提交后报告错误,则提供程序需要在再次提供元数据之前进行确认的读取。登录回调在等待读取后重新检查其当前生命周期。状态和库存读取不会创建状态。运行时租约获取、验证、更新、释放和有界突变在原始捕获上下文下的工作线程中运行。事务在写入和提交之前重新读取确切的租约并获得实时调用者权限。令牌回调在提交准入时锁定取消,并仅在确认后报告保存的凭据。在释放其确切所有者之前,存储已接受的租赁工作的封闭排水沟;不确定的写入保留了租约障碍。本地维护和医生保留其现有所有者。租约验证在等待主机准入之前释放每个读取快照,然后从当前提交的状态重新读取确切的未过期所有者。主机调度不pin WAL;写入和续订保留其交易持有的支票。架构、保留、持久性和更新行为保持不变。 MCP 事件保留来自同一 OAuth 凭证所有者的非秘密授权化身。当事件使用者首次观察到时,现有的 OAuth JSON 行通过租用写入器获得 `authorizationId`;没有引入新的表或模式版本。成功的令牌刷新会保留 ID。注销、当前令牌终端拒绝和授权代码替换将其淘汰。作者在授予提交之前保留了观察结果,并通过本机提交收据仅发布非秘密的生命周期事实。已知的回滚恢复之前的观察结果;在数据库生命周期结束之前,未知的结算仍然不可用。新的读取工作者观察会检测到在此流程之外进行的凭证更改。没有租约跨越订阅请求或其同步 Webhook 验证。这些事实既不授权工具执行,也不授权替换帐户:事件准入仍然需要原始自动化和调用者权限。在降级到没有此生命周期合同的运行时之前删除事件作业,并验证目标版本数据库兼容性。删除作业无法逆转架构升级;不兼容的目标需要恢复兼容的升级前备份。 Auth-profile 支持的事件源在其现有凭证 JSON 行中使用私有 `authorizationLifetimes` 元数据。通过凭证保存工作人员事务,仅注册显式观察到的配置文件 ID。丢失的配置文件化身保留为非秘密选择逻辑删除,因此本地覆盖或删除后进行相同字节重新连接无法恢复继承的订阅。显式的更新插入取代了化身;刷新所有者通过其现有的声明、结算、回滚和对等继承操作保持连续性。传入的序列化元数据无法保证连续性。规范读取绕过运行时行缓存;最终同步防护消耗​​凭证编写者的无令牌发布。这不会添加凭证存储、表、调度程序或承载凭证的运行历史记录。 Doctor通过同一个共享状态worker导入退休的MCP OAuth JSON。主机保留独占维护所有权、已停用的运行时的文件锁和原始源声明,而工作线程读取收据、自动导入凭据及其收据并记录源删除。现有 SQLite 凭证和显式注销保留优先权。明确的预提交失败会恢复源;不确定的导入会保留 Doctor 声明以在下次运行时进行收据验证,而无需重播写入。即使交付失败,已确认的提交也会保留其结果,并报告该失败。已发布的更新程序仍然调用相同的 Doctor 修复路径;没有架构或存储格式更改。 请求者 MCP 设置在一个当前的读取工作器操作中读取其排序的授权集。工作器按调用者顺序解码选定的行,并仅返回状态事实;每条消息在运行时重用之前仍然观察当前存储。架构、存储格式、迁移或更新程序行为不会发生变化。 模型上下文读取和会话记录准备使用具有单独有界队列的会话记录工作线程。后台准备不能占用前台上下文队列。前台历史记录池和模型上下文池各自使用最多八个只读工作线程,每个线程的上限为主机计算预算的一半(向上舍入)。单个 CPU 主机在每个池中保留一个工作线程。每个worker保留自己的SQLite连接和快照;写入器准入和最终快照验证保留有序读取。数据库关闭将每个读取器加入池中,空闲退出会释放其保留状态。后台维护、导出和 SQLite 写入器保持现有容量。不需要架构、存储格式或更新迁移更改。会话从一个只读 SQLite 快照导出读取事件、统计数据和会话分类,然后从网关线程准备文本和出处。对话和工具文本保留其存储的内容,无需秘密屏蔽。重置-召回元数据跨越工作人员边界与准备好的内容。失败的索引重建会保留已发布的索引并保留重试状态。从捕获的会话文本中进行块准备使用现有的本地工作区队列,无需持久写入租用。文件和多模式准备保留该租约,所有缓存、索引和发布突变也是如此。这些突变在等待准备后重新检查当前所有权和会话墓碑。隐身转录读取使用记忆演员。存档物化和调用者拥有的记录观察者保留其现有的本地执行。索引发布和恢复仍由其现有数据库和生命周期所有者保留。仅在读取报告冷存储后,冷内存导出才会通过主机现有的副本所有者进行恢复;热导出添加无主机 SQLite 读取。无法读取的存储副本、工作人员准入和传输故障会保留已发布的索引和重试状态。启动检查批量转录统计数据并使用转录突变水印,因此独立于会话活动检测相同大小的重写。内存源哈希连同其内容哈希一起携带此修订;源修改时间保留时间排名的活动。旧版源哈希刷新一次,无需重建未更改的块。转录本导出哈希值和出处保持不变。现有的分块修订会触发一次性重建以修复先前索引的重置边界。重建重用缓存的嵌入(如果可用)并保留现有的原子发布路径。 分支列表使用相同的工作入口点及其自己的有界后台队列,与历史记录和模型上下文读取分开。工作线程读取一个只读 SQLite 快照并计算分支摘要;只有紧凑的结果返回到网关。仅当物理数据库身份和转录水印匹配时,两者才隔离重用有界紧凑缓存。网关在恢复之前检查缓存的摘要,并仅共享相同数据库声明、会话生命周期和转录水印的正在进行的读取。缓存未命中首先读取转录工作者;只有冷存储响应才会进入现有的存档工作人员恢复所有者。每个调用者都会在数据库或会话所有权更改后拒绝结果并接收自己的摘要对象。隐身分支使用内存参与者。存储的行、架构和更新行为保持不变。 [ 接受的任务和 TaskFlow 删除 ](https://github.com/openclaw/openclaw/pull/156532#issuecomment-5798987497) 删除运行时 API,而不更改共享状态或代理数据库架构。现有的 `task_runs`、`task_delivery_state` 和 `flow_runs` 定义、列和索引保持不变。非 Cron 任务和 TaskFlow 行在运行时保持不变和不使用;没有替代账本收到他们的数据。 Cron 仅拥有 `task_runs` 中的 `runtime = 'cron'` 行,并保留其历史记录和安静结果范围。本机 Codex 挂起分配使用现有父绑定中的元数据。插件拥有的 [Doctor 迁移 ](/gateway/doctor/config-migrations#native-codex-recovery-after-tasks-removal) 读取共享的 SQLite 快照,并将合格的所有者标记的本机恢复事实和最终结果导入到该元数据中。它的每个源任务 ID 标记提交分配并在确认、本机轮换、清除和重置后继续存在;源任务行保持字节相同。未标记或不明确的记录仍然可供操作员恢复,并带有可恢复的警告。 Cron 收据仍然具有执行和恢复权限;历史从未授权推出或采用。独立的审计事件和决策事实保留其所有者。 Task/flow 生命周期联接和写入仍然停用。此迁移不添加运行时任务读取器、替换分类帐或 SQL 架构更改。 现有的异步配置观察、恢复健康记录和配置审核附加运行其SQLite与同一个演员合作。在等待工作之前,观察捕捉到了短暂的范围;对相同数据库和配置路径的新观察将取代旧范围。范围在返回时结束,同步写入失效等待外部事务提交。工人在调度时检查每个操作的范围;被取代的读取在记录或文件工作之前停止。运行状况写入携带原始读取中准确的持久事实,并在写入事务中再次比较它们。当这些事实仍然匹配时,它们仅合并所选路径的更改字段;失败的读取或陈旧的观察不能覆盖新的健康状态。其他路径未受影响JSON字段保持不变。审核追加保留相同的编辑、插入顺序、范围限制以及原子插入和修剪事务。当文件操作提交时,升级和恢复返回 true,即使较新的运行状况元数据取代其条件更新也是如此。普通的文件后元数据报废使用现有的尽力而为失败策略;拒绝拥有和维护的现象仍然存在。 Doctor使用提交的结果来重新读取更改的文件。显式准备的恢复在申请时重新运行相同的计划程序,并在归档工作之前拒绝更改或不再符合资格的候选人。不可用的运行状况元数据保留现有的基于备份的计划回退。健康元数据仍然尽力而为;文件和运行状况行不是一个原子事务。同步配置读取器和写入器保留其现有的 API;配置解析、验证和插件准备保留自己的执行路径。 GitHub OAuth 协调通过异步配置所有者加载持久配置。读取期间的运行时配置替换或更改的 OAuth 记录会留下待处理的结果以供以后协调。运行状况比较对每个原始原始字段(包括空字段)使用条件写入;审核附加在现有写入事务中一起读取其序列和保留计数。每个新操作都使用由所有者写入者收据无效的当前行或事实。这些更改保留了架构、保留、同步冷加载兼容性和更新行为。 本机网关主机通过其注册的配置所有者提供快照准备。这些读取使用现有的共享状态参与者准备延迟迁移和插件元数据。每次读取在等待准备之前都会捕获一个确切的所有者,并在该所有者关闭时拒绝其结果;故障永远不会选择更换或切换读卡器。直接服务器和独立配置读取器保留其现有的执行路径,除非其主机明确提供此操作。丢失文件默认值仍然仅在默认值需要时加载插件元数据。该操作不会更改架构、持久表示或发布权限。 会议记录身份、描述符、注释、摘要、话语和导出所有权读取使用共享状态工作线程。键入命令调用现有的同步查询内核,保留完整的存储结果和库错误字段,并保留首次使用模式创建。复合枚举、匹配和库读取使用一个延迟读取快照,使其查询与并发捕获写入保持一致。架构创建在读取事务之前完成,域错误在解决后进行转换。在关闭工作连接之前,存储关闭这些读取的内容。导出所有权查询返回现有的有序行事实;文件系统案例、工件身份和哈希检查由导出所有者保留。待处理和清单写入保留其现有事务。捕获话语附加还在该工作线程上运行现有的重复数据删除、序列分配和插入事务。捕获在准备其不可变输入之前记录接受的语音,保留其顺序,并通过本地定居保留权威。终端注释和启动失败恢复等待接受的附加;终端回调不能接受新语音。摘要发布会检查与摘要写入相同的工作事务中捕获的输入修订、之前的注释和语音序列。主机在事务和提交准入时保留实时摘要生成、调用者和中止检查;过时的结果保留了之前的注释。有界转录工具列表和显示查询在同一个工作线程上执行。标准UTC日期字符串在那里解析;其他日期格式通过保留的准备请求调用者的本机解析器,保留临时技能时区。此类读取期间的时区更改会拒绝结果,而不是混合解释。查询保留其排序、有效负载限制和同步语句快照。会话元数据、待导出标记和清单更新也在现有工作线程中运行。准备工作在屈服之前捕获物理数据库和序列化元数据;写事务重新检查规范化选择器和预期输入修订,同时保留承认的ID起源。出口簿记通过本机结算保留实际的出口租赁,包括未知结果,并在其写入事务中验证该租赁。待定标记在文件系统更改之前提交,清单更新在成功返回之前解决。会议导出快照现在在现有的共享状态读取器中运行,通过有限的块消耗和清理保留一个私有快照。工件发布使用私有暂存和受保护的文件系统副本所有者;它保留了先前的尽力而为文件和父目录同步策略。这暂时需要一份额外的工件大小的副本。主机租约原语仍然是文件突变之前的最终实时权限保护。 转录工件所有权恢复通过共享状态工作线程按顺序流式传输原始话语,并返回其标准化 JSONL 的 SHA-256 摘要。元数据和摘要读取保持其现有的单独计时;这不会在它们之间创建原子快照。人工制品更换、清单维修和出口租赁保留其现有所有者。 SQLite 工作人员传输保留完整的结果值。 64 MiB 内联回复预算内的结果保持其现有回复路径;较大的结果会被序列化一次并以 8 MiB 帧的形式传输。原始操作保留其工作线程,直到确认完整的结果和清理,包括在关闭期间。框架不会分页或重复数据库查询、截断结果或更改请求和队列预算。调用者仍然在内存中具体化了他们的完整结果。 必要时,工作线程执行输入也会使用有界框架。最多 64 个 MiB 的命令可以在共享的 256 个 MiB 聚合预算内排队并保留其完整的序列化字节费用。较大的命令需要立即接纳闲置工人,并通过结算预留 32 MiB 运输窗口。否则,准入将返回现有的过载错误,而不对该值进行排队或执行其任何部分。只有经过验证的完整输入才会到达后端。传输队列保持有界;活动的完整输入或结果仍然需要其物化记忆。 为某个操作获取一次连接,并通过其事务助手传递该确切连接。 SQLite 写回调保持同步:先完成异步规划,然后在写准入后重新读取权威行。仅在持久写入成功后才发布实时会话更改和其他相关效果。未来网络支持的所有者必须在等待驱动程序时保留该顺序。 现有的每线程数据库所有者在上次使用后将可重用的实时连接保留 30 分钟。留存的消费者、活跃的借款和交易推迟了闲置退休。 Incognito 没有 SQLite 连接:内存参与者保留其状态,直到会话或所有者关闭、到期或进程退出。代理句柄不再仅仅因为另一个代理打开数据库而退出。空闲退休保留 WAL 检查点和租约清理;显式关闭、删除、隔离和替换保留其现有的关闭和撤销路径。重用可以保留读取许可和拥有写入者失效,而无需更改架构、存储保留或更新行为。空闲窗口是一个内部常量,而不是一个配置选项。 显式的工件保留检查、私有快照以及启用扩展或嵌套的事务读取保留其隔离的连接和清理契约。 缓存代理编写器持有事务时进行的只读回调使用单独的只读配套连接。每次调用都会重新读取已提交的行并检查当前架构、代理所有者和物理文件标识。同伴保留准备好的语句,而不是授权结果或开放读取事务。在其所有者启用语句缓存的连接上,架构版本检查重用准备好的 `PRAGMA user_version` 语句,但在每次调用时读取其当前值。授权者更改、数据库替换和关闭保留现有的语句缓存失效规则。会话验证属于已承认的物理数据库:首先承认需要完整的证明,然后 schema-21 挂起键投影记录独立于连接生命周期的更改。未经许可的读者的启动和初始网关授权使用现有的突变工作人员进行待定验证,并在等待后重新检查实时权限。同一本机数据库所有者上的并发运行时读取器共享其主动验证消耗。每个服务员保留自己的生命周期声明,并在之后重新检查物理所有权和会话验证证明;完成或失败会删除共享排水管。 Startup 的作用域工作人员保留自己的批处理生命周期。架构、存储的数据和更新行为保持不变。本机读取器保留其现有的主键准入和原始行解析器行为;每个新读者都会检查待处理的密钥,而无需重新扫描不相关的经过认证的条目。同步提交防护仍然读取已提交的行。有关迁移和回滚行为,请参阅 [ 增量会话验证](/reference/database-schemas/agent-schema-history#incremental-canonical-session-validation)。同伴会以其作者的本机关闭、处置或替换而退休,包括逐出和更新清理。冷会话搜索保留一个只读连接,同时同步列出条目并检查其当前可见性。无范围角色过滤搜索对每个物理存储的精确元数据读取进行分组,并按原始密钥顺序保留失败。每个组都使用准确的读者冷准入快照;温暖组保留普通的提交读取。隐身检查使用提交的内存参与者事实。条目访问器在转录搜索之前关闭连接,包括出现错误时;继承的异步回调回落到普通的新鲜读取。准备好的元数据保留在同步请求中,并且从不缓存可见性决策。历史工作者之外的其他冷读者,包括具有扩展能力的读者,仍然是一次性的;隐身读取使用内存演员。 SQLite 和 Git 工作线程回复将拥有的字节缓冲区传输给调用者;共享或部分视图在传输之前被复制到确切拥有的缓冲区中。 历史工作者在请求之间保留最多 64 个只读连接,在重用之前重新检查架构、代理所有者和物理文件身份。每个请求都会保留自己的快照和当前的准入检查。切换数据库重用它们的连接;接纳另一个保留的连接会驱逐最近最少使用的连接。丢失的数据库不占用保留的槽。家长保管所有保留的目标。历史记录和搜索通道在闲置 30 秒后淘汰多余的工人,同时保留逻辑读取器租约;后续读取根据需要重新打开连接。最后一个工作人员在五分钟后退休,没有挂起的读取或保留的租约。数据库清理会在关闭数据库之前撤销准入并加入本机工作程序退出。冷恢复通过队列等待及其本机提交来承载请求的相同权限,因此撤销的读取无法在数据库清理后恢复行。这些生命周期不会改变架构或迁移要求。 RPC 和 HTTP 历史页​​面、游标增量、最近消息和精确消息查找异步准备其物理目标,并仅在类型化冷读取需要恢复后通过相同的保留历史工作线程读取冷归档元数据。热读保持原子读取器现有的冷检查,无需元数据预检。初始元数据检查仅共享正在进行的工作;每个排队的恢复都会在早期的冷操作解决后重新读取元数据。现有的恢复所有者仍会验证并具体化存档,并保留 24 小时热历史冷却时间。写入端调用者保留其现有的本机元数据准备和写入器准入,而不是竞争前台历史容量。冷维护库存和突变控制 SQL 也保留在其当前所有者手中。 相关对话回复在等待写入许可时保留其原始存储和状态环境。 Capture 在记录可重播回复之前重新检查实时回复声明和会话生命周期。取消或更改会话会留下消息以进行普通入站调度。持久回复是在其可选的侧审核工件之前和完成等待之前记录的;审核失败不会丢弃已记录的回复。 出站队列工作在异步准备之前捕获其状态根和外部主管模式。入队、媒体保管、声明、完成和清理保留该上下文; SDK 重新连接请求在等待网关准入或加载交付运行时之前捕获它。恢复根适用于现有队列条目,而新发送则使用其选择的默认根。此上下文保留在内部,不会添加到持久有效负载或插件回调输入中。 网关生命周期通知通过异步修改挂钩、媒体暂存和队列发布来保留其原始共享状态目录和监管模式。立即交付、结算和重试恢复使用相同的捕获上下文。启动过程中会执行哨兵读取、修订检查清理、入队和交付;公共插件发送参数无法选择此私有上下文。运行时重试服务和延迟启动回调在注册时捕获其状态,并在重试、会话查找和更新分类帐写入时保留它。每次重试运行时仍会检查当前配置和传递权限。 独立会话传递队列操作在共享状态工作线程中运行。生产者、恢复、生成媒体准备和重试调度程序通过入队、重试簿记和结算来携带捕获的数据库上下文。调度程序在数据库关闭之前停止准入并加入其读取和活动消耗。队列有效负载在工作线程传输之前保留其 JSON 序列化边界。本地子代理准入和结算保留自己的注册表生命周期边界。出站死信运行状况计数使用共享状态工作线程中现有的分组计数内核。健康收集在等待配置和其他健康工作之前捕获其原始工人入场;缓存的运行状况回复等待计数,同时保留缓存的入口压力。 出站 ACK 结算也在该工作人员中运行。它在准入之前捕获选定的状态根和选项,保留精确的尝试所有权检查,并在主机清理之前返回已提交的媒体路径。丢失的工作人员回复会使 ACK 失败,而不会重播它或从缺席的行推断成功;因此,预发送尽力后备无法授权提供商在未确认的结算后发送。媒体仍可用于现有孤立清理。其他出站队列操作和媒体保管仍然是单独的迁移工作。架构、保留收据、更新行为和清理策略保持不变。 已完成的同一会话 `sessions_send` 回复使用 `outbound-session-generation-v1` 下的现有出站队列表。每个结果都保留其原始路由和确切代理、会话存储、会话密钥、物理会话 ID 和可为 null 的生命周期修订。普通的后续轮次不会取代这些行。实时交付和恢复通过会话所有者准备生成事实,并在调度前立即检查它们;重置、删除或替换会拒绝未发送的结果。已发送的发送保留现有的已确认或不确定的结算规则。此队列不会在重新启动时保留未完成的模型执行或内存中完成观察者。 命名空间将这些行与较旧的读取器隔离,而无需更改数据库模式版本或禁用普通队列。其介质在现有的线轴所有者、限制和清理策略下使用 `g1-`- 前缀名称。年长的读者不会理会这些文件,包括未完成的阶段文件;他们的清理工作在支持版本上恢复。全状态备份包括这些工件,而仅数据库备份仍不包括介质。现有的快照清理会删除挂起的传送行,因此备份恢复不会恢复这些答复,并且未引用的介质仍会受到孤立清理的影响。就地重新启动或 downgrade/reopen 保留队列保管权。记录的存储和媒体路径保持准确;移动原始状态不会重写传递绑定。 排队的频道所有者最终使用`outbound-command-owner-v1`和`c1-`同一队列和假脱机所有者下的媒体名称。它们的待最终完成仅携带命令所有者的不透明授权参考。恢复通过命令所有者策略解析原始引用并检查其在适配器上的当前权限I/O.参考文献丢失、损坏或失效,无法发送;不可用的读取或过时的进程捕获保留重试监护权。返回的尽力而为失败使用与抛出的失败相同的解决路径。 较旧的执行程序会忽略此名称空间及其媒体;他们不能默默地忽略授权检查。所有者绑定的会话标记是仅传输的:排队的有效负载自己恢复,并且队列准入之前的崩溃无法在没有其原始权限的情况下重放裸文本。现有的无限制决赛保留重赛政策。这不会添加数据库架构版本或权限存储。 schema-19 准入围栏和仅备份降级合约仍然适用;早于此队列格式的 schema-19 读取器无法发送其行。他们可能会将无法识别的会话标记作为不确定性通知,因此无法保证降级和后续升级后的交付。备份清理和精确路径绑定遵循上面的生成队列契约。 配置的 `commands.ownerAllowFrom` 所有者在同一完成字段中使用版本 2 引用。现有的 `operator.channelPolicy` 机器状态行保留一个 UUID 和非空允许列表的指纹,而不是其原始身份。在指纹识别之前对条目进行修剪、重复数据删除和排序;重新排序不会撤销会员资格。空列表或不存在的列表不保留已配置的所有者事实。现有的出版前交易取消了关于成员资格变更的参考,包括删除和恢复。仅角色和渠道链接的变化并不能使其退役。恢复根据该行和活动策略检查原始引用,然后通过适配器 I/O. 保留状态所有者的突变栅栏不引入人员链接、新表或模式碰撞。即使架构发布被推迟,激活也会记录策略;读者仅在已发布状态模式 19 下发出引用,无需再次激活配置。较旧的 schema-19 策略编写器替换了此 JSON 行,而没有新字段;重新升级会发出新的参考,并且无法恢复旧的授权。这故意重用了现有密钥:被较早编写者忽略的单独密钥可以在未记录的删除和恢复后恢复降级前的保管。较老的本地权限读者会比较整个策略 JSON 并在存在附加字段时拒绝访问;他们自己的启动出版物在服务该政策之前删除了它,并且也取消了链接所有者引用。由于没有配置所有者,之前的 JSON 形状保持不变。较旧的队列读者会拒绝不熟悉的参考版本而不是发送。 出站查找、尝试保留、故障转换和恢复与排队、生产者声明和恢复一起通过现有的共享状态工作线程运行。ACK。可执行命名空间共享稳定意图冲突检查和挂单库存;每个突变都会保留条目的名称空间和确切的尝试所有者。 出站生产者索赔和租约续订在共享状态工作人员中运行。现有写入事务会重新读取正在执行的工作线程上的挂起行、确切所有者和到期时间。来电者等待索赔公布;在取消清理或确认之前,租赁停止加入已接受的续订可以撤销托管。不可用的声明结果会使其行和媒体恢复,而不是重放突变或启动提供者发送。租用期、心跳、重试预算、命名空间、存储的有效负载和更新行为保持不变。最终的提供商调度围栏和队列结算保留其现有所有者。 挂起的出站故障解决在共享状态工作线程中使用捕获的条目字节和状态上下文运行。 其现有的精确行和可选索赔检查在清理事实返回主机之前决定解决方案.只有确认的故障才会释放介质;丢失的工作人员回复永远不会触发重播或从缺席的行推断成功。不受保护的调用仍然会在存储打开之前验证终端条目,并且不匹配的受保护声明仍然不执行任何操作。 会话发送、转向和队列完成在等待代理写入许可时保留其逻辑代理和物理存储。重试验证会读取现有操作而不重新创建它们;队列所有者在传输 I/O 之前记录保管情况,并协调同一存储上已接受的结果。新的会话绑定在路由准备后从原始存储中重新读取源策略,并通过最终权限检查保留目标所有者。 板突变、快照和小部件文档读取公开了异步合约。普通磁盘数据突变在每个代理工作连接上运行其现有的同步内核,并与其他承认的域共享。在排队工作之前捕获输入,并在事务输入和提交时检查调用者的当前权限。提交的会话更改在结果公开之前返回到现有的主机发布者;回滚不会发布任何内容,并且未知结果会保守地使确切的原始会话无效,而无需重播写入。网关调用者在发布董事会更改或回复之前等待持久性。现有会话预检、源句柄采集、schema/bootstrap/migration、冷 `hasBoard` 投影和董事会读取保留其自己的持久合同。 Incognito Board 的读写操作使用内存 actor。 HTML 小部件功能操作和受保护的发布在其权威读取和当前票证、会话和授权检查后立即在商店的延续中运行。在等待外部工作之前释放数据库所有权;没有 Promise handoff 将最终授权与其使用分开。板卡和进度卡写入在加入共享代理写入队列之前捕获其物理数据库和状态环境。冷打开使用其异步完整性准入,并且在模式设置和变更之前再次检查请求权限。更改的路由、关闭的请求或撤销的会话无法发布排队的写入。 SQLite 内核在其本机事务内保持同步,具有现有的修订、授权、会话存在和事务语义。 进度卡 GET 通过现有目标准备所有者解析其捕获的会话存储,并在会话转录工作器上读取该卡。读取不会创建丢失的数据库或未使用的卡表。同一工人监护权加入本地清理工作并拒绝退休业主;在退回延迟卡之前会重新检查网关授权。隐身读取使用内存参与者。进度卡写入和重置清除保留其现有的交易所有者。 MCP 应用程序固定保留其现有的源交互检查。延迟的适配器必须在其实际写入许可时重新验证该源权限;单独检查视图注册并不能取代支持的异步交互策略。 SQLite 所有者在冷开准备后刷新该策略,同时保留目标写入器许可。撤销的源会将引脚降级为只读,并在同步写入之前删除其声明的工具。策略等待后会再次检查请求权限,因此即使降级 pin,取消也无法持续。在等待期间退出已承认的数据库会拒绝操作而不重新打开它。 备份结果记录和新鲜度读取公开来自共享状态所有者的异步操作。存档、SQLite 快照和 Git 备份命令在报告完成之前等待记录;记录失败仍然是一个警告,并且不会更改备份结果。 Status 和 Doctor 在格式化之前等待新鲜度。结果记录在共享状态工作线程中执行插入和修剪事务,保留 200 行限制并保留缺失的数据库。新鲜度读取使用共享状态只读工作线程并保持非创建状态;网关根据返回的账本行计算摘要。 显式会话删除、生命周期工件清理和历史磁盘预算驱逐在会话写入队列中准备其计划。当父数据库句柄处于冷状态时,其现有的异步准入所有者在只读子级中运行完整的完整性和外键检查,将这些完整的检查移出主线程,同时保留该队列位置。在打开恢复到索引修复、模式工作或注册之前,以及在调用者使用允许的句柄之前,会重新检查提供的调用者防护。联合呼叫者保留自己的警卫。历史驱逐在归档实现后重新打开时也会使用此许可,然后在准备回收之前重新读取候选者保护。 仅当其文件清单包含候选转录本、压缩检查点或轨迹文件时,工件清理才会解析会话路径。仅当提示 blob 存在时,提示引用投影才会运行。年龄、排除和收容检查仍然控制着每次移除。 自动会话条目维护首先使用所有者的收据更新的未归档计数和存储范围的年龄事实。在现有上限高水位线以下写入会跳过候选者和保护密钥读取,直到修剪或仪表板存档可以更改条目。计划会记录当前年龄政策下的下一个年龄界限和 30 分钟复查期限。每个维护入口点都会拒绝过期的事实,包括没有维护计时器的内联替换和生命周期写入。普通条目写的只是拉紧了年龄界限;条目缓存修订更改和不相关的外部提交不会丢弃它。回溯替换、存档恢复、导入和 Doctor 重写明确使其无效。回滚和连接替换也会丢弃重用。密钥固有保护不会使旧的主要或外部对话永久保留。具有动态保护的已老化条目会等待下一个老化边界或定期重新检查,而不是在每次写入时都需要重新规划。 年龄事实刷新使用共享存储中每个代理命名空间中准备好的有序时间戳检查和仪表板键范围。活动检查重用记录的活动字段的最大值,并在稍后的时间戳无法改善下一个截止日期时停止。未经认证的行保留密钥解码器的别名处理;没有挂起投影的旧维护读取器保留完整的行路径。生鲜普通存储避免了完整的时间戳投影;仪表板和最近活动频繁的商店仍然需要扫描。存档或受保护的索引前缀也可以增加工作量。现有的计数和无效行查询仍然是单独的成本;这并不能保证每次维护都能持续工作。 共享工作连接拥有年龄事实并在写入准入之前保留计划快照。应用该计划会重新验证写入通道下的选定行。在行观察者运行之前,提交的条目收据将活动更改传送给该所有者;本机兼容写入通过相同的提交后边界发布。调度程序合并这些更改,并仅确认工作人员消耗的批次,在异步结算中保留较新的回溯日期、恢复和插入。交货结算会保留计数并提前收到收据的最后期限,因此低于容量的年轻商店会跳过计划及其空写入事务。无操作计划保留数据库租约检查,而不会在不相关的写入后丢弃年龄事实。回滚计划不会公布事实。 主机保留合并、一秒写入安静窗口、有界拒绝退避和计时器。它的所有者绑定物理数据库路径和执行器生命周期,并通过异步数据库资源清理退出。它不需要主机 SQLite 句柄。踢球会在较早的年龄边界或 30 分钟复检截止日期时唤醒;普通写入不会推迟它。仅当存在年龄或上限候选人时,规划才会读取保护密钥。存档和最终删除保留后期作者生命周期检查。保留规则、上限缓冲、强制清理以及主动工作、祖先和生命周期保护保持不变。无需更改架构或迁移。 归档准备后,会话删除会在接纳最终回收工作人员之前重新读取其目标。丢失或更改的目标将返回现有的条目不匹配结果,而无需启动该工作程序,同时保留已通过删除提交的档案。已承认的工作人员仍会重新检查其删除事务中的目标和当前权限。 准备好的会话存储更新、条目替换和生命周期更新插入对冷快照读取和实际提交使用相同的准入,保留其现有的写入器位置。热更新回调仍然是直接的。仅结果无操作提交不会重新打开已处理的句柄。本机删除和归档准备仍然在编写器之外运行;在任何等待的许可之后,后续提交将重新检查其本机所有者的权限。 如果并发提交中断了修订检查,会话绑定的插件状态操作和工作工作区恢复会在短读取快照中重新准备一次会话事实。不相关的会话写入不会使操作无效。快照在主机授权或恢复回调之前结束;两条路径仍然拒绝更改的所有权事实、替换的数据库源或撤销的权限。突变防护和插件状态比较保留了现有的冲突;没有写入被重播。模式、存储的数据、公共 SDK 合约和更新行为保持不变。 子代理取消准备可以在初始化和注册发布完成后重用借用的本机数据库生成。它在读取会话事实时保留确切的物理源和实时所有者,而不会在不相关的会话后面排队空写入。在检查其生成之前,所选会话的待发布仍然会解决。冷准备和终端出版保留现有作者入场资格;这不会改变架构、存储的数据、保留或更新行为。 仅当提交工作人员从已提交的先前行和当前行证明发布保留了该会话的 ID 和生命周期修订时,同步会话生成检查(传递、子代理控制、cron 根和内存受众)在挂起的条目发布期间才保持可用。创建、删除、归档和成员资格无效的行不携带此类证明,并且不提供此类证明的发布路径将保留现有栅栏。准备生成读取的所有者仍会加入会话的每个待处理发布,因此效果排序不变。共享、会员资格和隐身阅读保持不变。这不会更改架构、存储的数据或更新行为。 自动条目维护在作者准入时捕获其策略。元数据规划和规划器统计更新使用现有的代理数据库执行器;在冷本机准入之后,行准备在写入队列和归档队列之外运行。在回滚候选者发现之后和新的计划事务之前,只有保留候选者的传递才会请求受保护的会话身份。父母在作者的领导下捕捉到这些身份。保护包括运行时提供程序、主动工作和主动生命周期突变。在写入准入时,父级刷新活动密钥和实时保护,而不会丢弃准备好的候选者。写入事务重新读取选定的行、转录本版本和活动祖先,然后仅拒绝已更改或受保护的候选者。在入院后和提交之前,家长仍然拒绝政策或保护变更。因此,规划过程中不相关的活动可以在没有另一次规划通过的情况下进行;条目收据更新保留年龄提示。更改后的候选人在新的通行证开始之前回滚该计划通行证。有界终结保留更改的条目并仅发布已提交条目的删除。对档案工作人员进行转录本大小调整和空转录本验证;规划器统计保留现有的删除阈值和有界分析。工作分析提交后,现有的父连接会在本地重新加载其规划器统计信息,而无需重新扫描表;在其查询所有者转移到工作人员之前,这仍然是必要的。复合投影和替换事务保持其同步内核。仅候选保存提供者、准备好的本机删除挂钩、提交授权连接、存档发布簿记和 repository/worktree 清理保留其现有的父端所有者。 Incognito 使用内存参与者并且没有冷存储或页面回收工作。 会话创建会初始化其记录标头并替换一个代理工作人员命令和事务中的条目。创建失败则回滚;承诺收据在条目通知和后续注册之前发布生命周期事实。丢失的回复保留本机提交收据并且永远不会重播写入。现有的部分标头状态仍然是可读且可恢复的。 Alias 采用保留了其单独的标头初始化和本机删除回滚组成。待归档恢复仍遵循写入器释放后的替换收据。存储格式、架构、保留和更新行为保持不变。 全新创建将其初始缺失目标快照携带到该替换命令中,而不是再次准备相同的目标。作者仍然检查其交易中的目标和任何标签声明,保留在准备期间提交的竞争创作。现有条目和别名采用保留其替换快照。 会话回收将其删除事务保留在工作连接上。工作线程在会话编写器下打开其数据库,然后释放该编写器,同时在同一连接上运行任何所需的首次完整完整性和外键检查。在这些检查期间,不相关的会话写入可以继续。工作人员可以在实时写入许可下借用网关对同一物理代理数据库的记忆验证。在索引修复、模式工作或删除之前,工作线程重新获取写入器并重新验证当前权限。该流程为每个实体店最多保留一个经过验证的回收工作连接和租约,并有 30 分钟的闲置时间。每次删除都会在其自己的异步上下文中保留自己的事务、保留的父声明、编号写入许可和当前权限检查。在父级发布已提交的删除并释放该操作的写入者许可之前,工作人员会清除操作缓冲区并确认事务结算。稍后的请求仅对相同的物理数据库和共享状态所有者重用该连接;每个请求都会检查其实时租约。普通回收拒绝接纳或提交请求使得已接纳的工作人员仅在确认回滚后才能重用,并具有开放的保留连接和当前的父权限。调用者仍然收到拒绝;没有突变被重播。当地的失败和不确定的解决仍然使工人退休。退役日志包括原因、上次操作类型、年龄、操作计数和工作线程 ID。会话验证范围保留其现有的本地故障和排水合同。 Doctor维护期间,会话突变和worker-close作业通过异步工作和清理保留了原始操作的维护准入。工作人员验证其参与者、操作和共享数据库;主机重新检查事务和提交授权的当前权限。撤销会阻止以后的写入。已接受的作品仍然拥有所有权,直到其结果确定或加入本机退出;如果仅后续清理失败,已确认的突变就会保持成功。 删除、隔离、维护范围、根退休和关闭在释放数据库所有者之前撤销重用并加入本机工作程序退出。在同步关闭可以等待写入器锁定之前,挂起的提交请求将被拒绝。仍在共享存档队列中等待的请求会在释放其保留声明之前删除其回调,因此退休不会等待不相关的排队工作。幸存的请求保持 FIFO 顺序。一旦获得批准,即使其请求被撤销,业务也可以通过实物结算保留托管权。架构、保留和更新行为保持不变。本机退出后,崩溃清理只能释放确切承认的租约收据;不确定的清理仍然是一个错误,并且永远不会导致突变重播。父级仅在操作清理后才采用新建立的完整性验证,并且其数据库声明保持最新状态。这些连接寿命记录在 [ 接受的回收设计](https://github.com/openclaw/openclaw/pull/140897#issuecomment-5647899202) 中。 压力扫描和显式删除在其操作范围内重复使用一名档案工作者。共享归档队列分别接纳每个具体化或发布;每个请求都会打开一个新的只读数据库,并在确认完成之前关闭其数据库和文件句柄。请求之间没有存档数据库连接或租约存在。在删除下一个受害者之前,每个受害者仍然会提交和发布。准备或发布失败会使工作线程退出并在返回现有错误之前加入其本机退出。范围完成和数据库退休撤销排队的请求、排出分派的工作并加入本机退出。该进程最多保留一名可重用的归档工作者;竞争范围会淘汰以前闲置的工人。冷准备和突变保留了各自独立的一次性工作者;冷突变加入了现有的页面维护和本机退出。 历史驱逐在该存档工作人员的现有实现请求中准备其删除快照。最终的回收事务重新读取持久引用、新近度和完整快照;主机授予重新检查实时会话准入和捕获的物理数据库的权限。档案出版物保留相同的来源围栏。实现后的并发更新由最终事务解决,并且拒绝仍然会加入工作人员清理。保留策略、存档选择、架构和更新行为保持不变。 删除快照在一个语句中选择窗口、重写生成、转录本和轨迹尾部以及父流计数。失踪的窗户仍然保留着孤儿与孩子的比较。原子重置还重用已在其写入事务中读取的进度卡元数据,保留修订逻辑删除和数字验证。这两种更改都不会保留跨操作的事实,也不会削弱当前行谓词。 单候选引用检查缩小哪些节点元数据达到 JavaScript。具有可选历史引用的行仍然使用共享条目解析器,并且不明确的 SQLite 文本或 JSON 保留完整的读取路径。每个检查都会读取其现有计划阶段或删除事务中的当前行;没有引入引用缓存。 磁盘预算清理会在归档实现后重新检查保护。已被该新保护集排除的候选者将在工人加入之前被取消,并且不被视为回收。释放其生命周期保留后,清理会在考虑另一个候选者之前重新测量物理使用情况,因此对等方释放的空间不会导致不必要的驱逐。每个被接纳的工人仍然执行当前所有者和模式检查;完整性重用遵循 [ 完整性检查](/reference/database-schemas/integrity-and-recovery#integrity-checks) 中描述的网关生命周期策略。 档案发布和级联删除仍然是原子的。在COMMIT之前,worker在共享内存中发布其授权请求并等待父进程的当前所有者检查。同步写入器服务,在回收所有者捕获的异步上下文中,在短锁定准入尝试之间的共享 SQLite 事务边界处发出请求。这包括会话条目、交付记录以及首次使用板和目标模式事务。注册使用打开连接的本机数据库位置,因此其他连接和重新打开的连接可以处理共享准入。仅重试入场;交易回调和突变永远不会重播。保留原定的锁定入学截止日期。批准后,母公司同步加入交易结算,方可允许业主退休;该强制加入不能在附加截止日期前放弃。 定期增量清理使用相同的写入准入边界,因此它可以在获取写入器锁定之前为回收批准提供服务。每个连接从 8 个页面单元开始,并朝着 25 毫秒的保持目标进行调整,每个单元最多增长两倍,直至 512 个页面。调度估计随着连接而过期。定期维护保留每个周期 512 页的总预算,重新获得单元之间的许可;被动检查点保留在写事务之外。 WAL 所有者提供一个清理前检查点操作,用于定期、回收和归档维护。不完整的检查点会跳过真空。每个单元最多释放512页,在线锁准入采用零忙超时;检查点帧复制本身不受该页面限制的限制。存档修剪会耗尽这些单元中最初观察到的空闲页面,并在检查点不完整时在删除存档之前停止。其结果记录完成情况、检查点事实以及前后的物理字节。预算清理仍然推迟到检查点所有者报告完成为止,保留保留的数据,而不是在固定的 WAL 后面添加写入。 检查点排序使用主机及其工作人员共享的私有单调观察;健康时间戳仍然是挂钟诊断。提交后页面维护还会等待父级的提交结算检查以释放其写入器锁。子交易结算和父支票释放是现有提交门中不同的事实;失败的发布不能确认成功。 归档修剪保留其维护读取器和执行生命周期,而每个页面回收单元分别获取和释放物理写入器。每次归档删除都会在其物理写入器之前获取归档许可,并在项目解决后释放两者。无关存储中的前台会话写入和冷历史记录恢复可以在回收单元之间运行。持久归档元数据读取使用现有的历史工作者;有条件删除、遗留文件删除和页面回收使用代理数据库执行代理。主机在等待之前捕获物理文件,并在生效之前和工作人员准入时重新检查原始路径别名和实时权限。每次写入都会加入本地结算,而无需重播已调度的突变。主机连接驱逐不会重定向工作或需要同步数据库重新打开。 Incognito 使用内存参与者,并且没有要回收的存档文件或 SQLite 页面。显式 Doctor/cleanup 范围保留其本机所有者。 删除存储的档案可通过选择、派生文件删除和有条件行删除来保留档案准入和一个写入器部分。在删除存储的恢复副本之前,它会重新检查压力、权限和选定的已发布行。失败的准入或更改的行将保留该副本并停止当前的清理尝试。旧文件删除会检查精确的规范化文件名所有权、统计文件并在一个同步工作写入事务中取消链接。它保留已发布或未发布行所拥有的文件,并通过取消链接持有 SQLite 写入器锁。由于文件删除无法回滚,因此主机在取消链接之前立即授予提交;无效果的结果也需要当前的提交权限。本地结算在物品作者被释放之前完成。文件系统清单和连续页面消耗在存档准入和项目写入器之外运行。聚合修剪诊断独立于实际写入等待来报告整个操作。存档顺序、保留策略、架构和更新行为保持不变。 仅历史记录的磁盘预算逐出不会触发批量会话条目规划器统计信息刷新。它在不改变会话条目基数的情况下删除老一代;转录阅读器保留其会话范围的索引路径。实际的归档条目删除保留现有的批量刷新阈值。这避免了在大量仅历史记录之后进行整个数据库分析。 Worker 退休会保留原始操作失败,而不会再次将其报告为清理失败。成功退休的执行所有者将被释放以供以后的请求使用;真正的本机关闭和租约清理失败保留其现有的重试保管权。下一个承认的代理操作会在打开替换生成之前重试该清理,因此短暂的生命周期争用不会永久禁用历史记录逐出。 Cleanup重新检查原始数据库身份和请求权限;它永远不会重播失败的操作。显式资源撤销仍然是终端。架构、保留和更新行为保持不变。在本机和租约清理解决后,成功的池代理关闭会中继其记录的 WAL 检查点。原始生成和物理数据库身份会隔离该观察,并且预算所有者仅针对较新完成的检查点释放延迟。 使用缓存汇总写入、修剪和刷新锁定更改使用相同的异步代理数据库准入。冷突变等待着现有的诚信工作者;它的比较和设置事务在已承认的连接上保持同步。刷新完成和清理等待持久化。操作在准入之前捕获其已解析的数据库路径,并且当调用者的目录或环境发生更改时,刷新锁定释放会保留该路径及其原始环境。医生报告拒绝了修剪操作,然后继续下一个代理。 使用缓存解码、报告折叠、记录清单和刷新扫描在现有会话记录工作线程中运行。前台报告使用单独的有界工作通道;后台刷新使用共享计算准入。报告返回紧凑的结果,刷新将准备好的 UTF-8 比较和设置值发送到现有主机编写器。选定的报告仅读取其请求的缓存键,并刷新仅解码选定的记录。只读操作不会创建或注册丢失的数据库,并保留临时 SQLite 故障的空缓存回退。刷新锁定状态读取不会等待写入队列。 主机保留刷新锁、当前写入权限和定价上下文。隐身使用读取提交的内存参与者事实并且不分配数据库工作线程;它的命名空间永远不会作为数据库重新打开。取消和数据库关闭加入了本地工作人员的工作、接受的主机效果以及释放托管之前的刷新锁清理。原子修剪保留主机上所有过时的行比较字节,直到其事务解决;有界 SQL 批次不会施加聚合内存限制。缓存格式、架构、保留和更新行为保持不变。 共享状态数据库引流还会加入在较早的资源关闭时注册的资源。本地退休人员正在等待这些资源;失败的清理仍保留,以便稍后显式重试。维护清理会在关闭其使用的资源之前加入早期清理阶段开始的工作。演员退休采用的客户分享其清理结果。 内存管理器承认在其确切借用的代理连接上进行写入。入院前进行提供商通话和资源准备; generated-cache 和源写入在等待后重新检查其生成、修订和源谓词。完整的重新索引发布在一个同步承认的操作中附加、替换和分离已完成的影子。管理器在释放借用之前通过提供者准备和最终写入关闭已接受的同步。 工作空间租赁声明保留与原始物理状态数据库的比较绑定和唯一的所有者身份。工作人员结算后,失败的获取回复和失败的清理会保留有限的内存中收据,以便在另一个编写者进入之前有条件释放。恢复不会重播任务、删除替换租约或将清理重定向到另一个数据库。活着的和未知的所有者保留现有的陈旧锁检查。收据过期仅丢弃本地恢复元数据;存储的锁字段、保留和架构版本保持不变。 本机钩子中继桥持久性在共享状态工作线程中运行。发布和续订请求实时主机在其写入事务中进行当前注册检查。这座桥保留了当地定居点所接受的运营;取消注册会在令牌拥有的删除和侦听器关闭之前加入它们。修剪会在主机上保留 PID 活动检查,然后在删除之前将每个完整候选者与工作事务中的权威行进行比较。读取保留仅现有准入,并且修剪的所有阶段都使用捕获的数据库上下文。冷钩 CLI 保留其单独的只读定位器工作线程。 浏览器选项卡读取和更改使用共享状态工作线程,包括别名引导、仪表板停止意图和板事件协调。读取现有 `browser.session-tabs` 命名空间不会创建丢失状态。突变使用工作器比较并仅在接受后发布进程本地别名;仅重新计算显式比较冲突。私有每个选项卡准入保持最终所有权读取和同步关闭调度与本地突变排序,并在网络响应之前释放。身份不明的 Playwright 关闭会短暂加入仪表板突变,同时保留其空存储后备;普通选项卡活动保持独立。服务关闭会加入接受的选项卡操作和协调,并且替换的运行时无法发布后期别名。存储的记录、边界和更新行为不变;无需迁移或操作员操作。 选定的图书馆资源通过共享只读工作器读取冷引脚描述和合格清单。资源准备通过读取和文件准备保留其捕获的状态根和准入,保留快照范围、选定的修订字节、隐藏引脚省略和第一次资源故障。同步发现和借用数据库的读者保留现有的合同。这不会更改架构、迁移或持久数据。 ### 内存块路径索引退休 维护者于 2026 年 10 月 4 日接受了这种仅索引的设计。每个代理内存存储停用 `idx_memory_index_chunks_path(path)` 并保留 `idx_memory_index_chunks_path_source(path, source)`,其最左边的前缀也用于仅路径查找。块行对于该派生索引仍然具有权威性;逻辑身份、FTS 和修订触发器、召回元数据、出处和向量发布保持其现有所有者和原子性。 新的代理模式和 SDK 内存引导程序省略了仅路径索引。更新时,SDK 现有的可写内存初始化在验证和转换任何旧存储后会将其删除。冻结的前任验证仍然接受历史索引。当前版本所需索引修复不会重新创建它;只读承认接受其存在或不存在。从不初始化内存的现有代理数据库可以保留它。没有每个查​​询的清理、新的准入所有者、架构版本碰撞或已安装的更新程序更改。 每个替换的 chunk 避免了一次冗余的索引删除和插入; SQL 源替换中的语句计数保持不变。在具有块 FTS 和修订的完整 delete/reinsert 期间,使用 15,183 个块保存了 183 个 4-KiB 页(749,568 字节)和 753,960 WAL 字节(0.32%)的 Synthetic 组件测量触发器。矢量、出处和召回写入被排除在外,因此这不是端到端估计或实际加速声明。删除索引使其页面可重用;它不承诺立即物理文件收缩或运行 `VACUUM`。降级或二进制回滚可以安全地重新创建旧运行时的索引,而无需进行行转换;重新升级会在内存初始化时再次停用它。回滚的封闭模式事务会使用该事务的其余部分来恢复索引。 ### 保留数据和并发合约 转录回合谓词仅在需要时才获取最新的助手。助理重播和谓词查找在加载匹配的消息正文之前检查导航元数据,因此不相关的压缩工具结果在写入事务内保持压缩状态。会话行更新和副本追加保留其原子提交和当前权限检查。代理存储写入诊断为域操作命名。存储的字节、模式、持久性和更新行为不变;现有商店无需迁移。 异步设备身份加载使用共享状态工作线程。第一个创建者在数据库引导之前运行现有的身份所有者,因此挂起的遗留身份文件仍然会阻止创建。只读加载不会创建丢失的数据库或更改其工件。现有的Ed25519密钥、首写者收敛、权限以及Doctor的迁移和修复权限保持不变。进程身份缓存保留其现有的数据库路径和身份密钥范围;热缓存值不需要数据库操作。架构和更新行为不变;无需迁移或操作员操作。 技能研讨会更改源读取和写入以及技能使用读取和写入在现有共享状态工作线程中执行。退役的提案表没有运行时工作者操作; Doctor 在一次性导出时读取它们一次,然后将其丢弃。参见 [ 提案报废 ](/reference/database-schemas/state-schema-history#skill-workshop-proposal-retirement-state-schema-20-same-version)。 Cron 接收执行身份绑定在共享状态工作线程中运行。它的事务在突变和提交之前重新读取确切的实时收据所有者并重新检查调用者的当前执行权限。调用者捕获一个数据库上下文并在释放该权限之前等待解决。新运行绑定收据,而不是任务记录或流程。任务和流生命周期绑定和联接已停用。独立审计事件和决策事实仍属于其现有所有者和保留政策。收据元数据仅保留出处;收集设置、不匹配报告和接收权限保持不变。 Doctor 的本地设备令牌清单在共享状态工作线程中执行。检测器等待其结果并保留角色排序、格式错误的行遗漏和尽力而为的诊断行为。 Lint 将此读取保留在其私有活动状态视图中,并在淘汰该快照之前加入工作线程清理;源路径遗留文件检查保留其单独的环境。设备身份创建保留其现有所有者。 设备配对列表和查找在共享状态只读工作线程中执行。拥有者-写入者收据使工作人员之间的配对快照缓存无效。 CLI 配对突变通过网关路由或拥有排他性离线所有权。 Workers项目列表和节点身份绑定;网关会安装针对配对修订版的绑定,而无需重新打开 SQLite。对较新版本的查找或接收标记已发布的集不完整,但保留其他设备的绑定;只有完整的列表才能替代该集合。历史巡检快照从不发布活节点权限。 配对所有者将其单调递增的发布修订存储在 `config_machine_state` 下的 `devicePairing.revision` 下。每个配对设备写入都会递增同一事务中的该行,并在其提交收据中携带返回的修订版本。仅待处理和引导写入使其保持不变。缺少修订版行意味着修订版为零,直到第一次配对设备写入为止;现有数据库不需要架构迁移。精确查找仅在一个语句中读取键控设备和此修订版,而不加载挂起的请求或散列所有配对记录。完整列表保留其完整快照,连接授权在等待配对工作后仍会查找设备。 配对、批准、角色令牌、引导和节点表面突变在共享状态编写器中执行。每个同步事务都会在突变之前和提交之前读取权威行并获取当前主机策略或连接准入。在调用者继续之前,提交收据会发布修订和更改的节点绑定;不确定的结果不会重播。待定的突变使已发布的绑定可用,因为存储的行在提交之前保持权威,并且下一个绑定读取会安装已提交的收据。 Node 即时准备刷新已发布的信息,Web Push 通过网络启动保留配对和订阅许可,并在提供完成之前释放两者。 APNs 注册检查其工作事务中的配对,并通过相同的代理准入重新验证确切的活动节点连接。 转换不会更改架构、持久记录表示、配置、保留或更新行为。 Doctor/import 交易保持其同步维护所有者;常规 CLI 配对使用与网关相同的工作操作。 适配器必须明确这些契约并根据真实数据库验证它们: | 契约 | 所需行为 | | ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 店铺形象 | 保持全局和每个代理的所有权、隐身生命周期、隔离和处置明确。文件系统路径当前参与准入和注册表身份;用连接字符串替换路径是不够的。 | | 读取一致性 | 定义每个操作是否需要一个快照或一次新的权威重读。将有序、有界的查询和批量扩充保持在一致性边界内。 | | 条件写入 | 保留精确的修订、会话生成、作者声明和租赁所有者谓词。陈旧或被拒绝的突变不得发布成功结果或改变活动状态。 | | 存储的有效负载 | 保留序列化的转录本和记录文本,其中字节标识、重播或精确的 JSON 比较是合同的一部分。将派生查询投影分开。 | | 标量解码 | 在存储边界解码驱动程序值,包括计数、整数范围、可为空布尔值、时间戳、JSON 和二进制字节。将 TypeScript 声明与观察到的驱动程序值进行匹配。 | | 失败并重试 | 定义哪些故障允许重试整个操作。将外部影响保持在重试交易之外,并在等待工作后重新验证权限。 | Kysely 的 TypeScript 类型不会转换驱动程序结果;驱动程序确定运行时值。请参见 [Kysely 数据类型](https://kysely.dev/docs/recipes/data-types)。 PostgreSQL 事务必须使用一个获取的客户端,其默认的已提交读隔离可以为连续语句提供不同的快照。因此,适配器需要特定于操作的隔离和重试决策,而不是 `BEGIN IMMEDIATE` 的机械替代。请参阅 [node-postgres transactions](https://node-postgres.com/features/transactions) 和 [PostgreSQL 隔离 ](https://www.postgresql.org/docs/current/transaction-iso.html)。 不要自动将存储的 JSON 文本转换为 `jsonb`:PostgreSQL 的 `jsonb` 表示会更改空格、对象键顺序和重复键处理。可搜索的 `jsonb` 投影需要明确的设计和迁移决策。请参阅 [PostgreSQL JSON 类型](https://www.postgresql.org/docs/current/datatype-json.html)。 跨存储会话切换保留每个保留的世代、其沿袭、转录字节、物理序列号和记录的事件身份,包括防重复记录的有效所有权。接受的输入和完成收据使用其现有的修复所有者:排队的输入被中断,取消和消费事件引用仍然存在,并且最终目标收据保留优先于可重试尝试的优先级。板、进度卡、心跳结果、建议、参与者历史记录和保留的 ACP 出处使用逻辑节点修复所有者及其现有修订和身份优先级。这些副本不转让实时执行或会员权限。在删除每个复制的代之前,源清理会验证复制事务中捕获的物理源和完整的目标收据。未更改的进程内编写器修订会重用已验证的收据;更改或未解决的作者修订需要精确的重新验证,包括输入和重写水印事实。精确的节点工件指纹通过条目删除来保护源和目标状态。源删除仅在入口边界检查这些节点有效负载;历史生成清理保留其仅生成的检查。当数据库和归档目录保持不变时,就地密钥迁移会保留冷归档;存档清单仍然是其受保护的源快照的一部分。较旧的精确导入可能会保留没有标识行的记录。历史读取器识别未索引的前缀并从存储的事件中恢复显示导航,包括在以后的附加之后;他们从不从 JSON 重建防重复记录的写入权限或所有权。第一个新追加使用现有写入权限下经过验证的投影光标,因此继续保留导入的会话。完整的转录本替换通过创建新的存储代来淘汰该读取路径。 ### 保留特定于发动机的功能 Native-close生命周期设计于2026年9月29日被维护者接受。现有的 SQLite runtime/library-selection 所有者发布了一项内部事实:`explicitSqliteCloseReleasesNativeResources`。 Node 供应 `true`,无需支票。选择库后,在 macOS 和 Linux 上拥有 SQLite 池的长期网关、节点和工作主机在创建池之前显式等待一个进程范围内的仅内置检查工作线程的承诺。短 CLI 路径不运行检查。保留的实时语句对私有 WAL 数据库执行普通的、不可重入的关闭和处置,检查本机资源释放,同时不相关的连接仍然可用。结果及其诊断原因通过现有的工作环境数据切换传播。在初始化解决之前,每个操作的消费者都会收到一个保守的未定结果,而不密封全局决策。稍后的读取和关闭路径可以使用完整的事实。网关启动诊断将 `decided: true` 和检查原因与此未确定的后备区分开来。错误、超时和不受支持的 WAL 会保守解决。保守的决定不会等待支票清理;后台清理使工作人员及其五秒截止日期未被引用。在接受成功之前,通过检查会等待相同的有界工作人员加入。只有确认退出才允许删除支票的私人目录。未经确认的退出将保留该目录,取消引用工作线程,并发出一个命名保留路径的 `SQLITE_CLOSE_PROBE_CLEANUP` 警告。 Windows Bun 不会运行检查并保持保守,直到 Windows 一致性运行使其合格为止。工人在创建时继承决策并终生保留,包括在决策之前创建的保守工人;后来的工人继承完成的结果。 每个写入代理在构建时都会根据此事实来快照放置、本地停止确认和退出策略。早期的保守代理即使稍后初始化成功,也会保留其原始拓扑和生命周期;一次性 `SQLITE_EARLY_TOPOLOGY` 警告记录了该情况。使用该功能创建的代理使用现有的 2 到 8 个工作人员池,在不停止不相关的行动人员的情况下释放已确认的已关闭行动人员,并在成功进行目标读取器或转录本发现清理后重用工作人员。保守的运行时保留专用的编写器和本机退出清理。这两种策略都保留队列和客户端限制、别名保管、生成防护、失败或活动操作轮换以及未知结果写入的解决。能力结果不能将真正的清理失败转化为成功。库选择、TypeScript 加载程序、本机工作程序退出连接和不相关的 Bun 兼容性规则保留其自己的所有者。 这不会更改架构、磁盘格式、保留或持久配置。没有保存的功能标志或要反转的迁移。安装的更新程序运行不变;每个新的长期池主机在升级、降级或回滚后都会再次选择其库和功能。短 CLI 路径保持保守,无需检查。非决定性的优化检查保留了受支持的运行时的保守行为,而不会阻止启动或放松运行时和 SQLite 安全底线。实现 PR 记录运行时一致性、生命周期策略和同头性能比较;仅此决定并不构成任何性能要求。 WAL 检查点所有者执行运行时维护、空闲读取器检查、医生压缩和重复代理恢复的检查点。运行时维护保留其健康观察和部分检查点报告;离线维护仍然拒绝在压缩或恢复进行之前进行繁忙的截断。 WAL 框架观测结果归 WAL 所有者所有;行缓存失效使用进程内写入收据,并且不会发出外部提交探测。此所有权削减不会更改架构、存储字节、准入或更新行为。 每个 WAL 连接都拥有一个用于检查点标记和有界回收的调度程序范围。有序的数据库退役会停止计时器准入,并在最终检查点和本机关闭之前加入接受的维护。共享连接仅在其最终本机引用发布后才停止维护;关闭一个工人演员并不会停止兄弟姐妹的维护。同步退出和失败打开清理仍然是尽力取消路径。已弃用的同步调试捕获存储保留了相同的紧密契约。检查点模式、写入准入、存储字节和回收限制保持不变。更新不需要架构或配置迁移;新进程根据现有数据库所有者重建其连接拥有的调度。 SQLite FTS5/BM25、向量表、JSON 表值查询、附加影子数据库、WAL 维护、完整性检查和备份操作仍保留 SQLite 功能。将其实现保留在内存或数据库生命周期所有者之后。未来的后端必须提供等效的产品行为或明确的功能边界;第二种 SQL 方言本身无法取代这些功能。架构、保留、迁移和多主机更改仍然使用下面的审核检查点。 准备好的节点工作空间注册、绑定、突变完成和退役在与节点启动日志相同的共享状态工作线程中运行。仅现有读取不会创建数据库或运行架构打开。文件系统准备和工作空间序列化保留在主机上;在事务准入时写入重新检查取消和主机所有权。退休行仅在丢失突变许可后保持清理状态,并且成功的覆盖仅在持久完成后返回。保留围栏在等待退役逻辑删除时保留旧的同步采集,然后在删除之前保留现有的路径检查。已弃用的公共同步工作区功能保留其读取路径;内部调用者和捆绑插件使用其异步伴侣。表形状、标识符、事务边界和保留的恢复状态保持不变。 会话成员资格、参与者显示事实和类别成员资格在现有会话读取工作线程中准备并由会话行投影保留。存储准入获取紧凑快照;提交的会话出版物刷新确切的密钥并隔离延迟的结果。列表和广播阅读器重复使用这些事实,无需查询成员资格表或为每个观看者传输完整的会话行。提交的缓存和成员身份事实在常驻行投影刷新之前确定;普通观察者随后运行,因此即使是较早注册的广播公司也会看到当前的共享策略和撤销,而显示行仍然是脏的。回滚的保存点更改永远不会到达任一阶段。组目录同样从共享状态工作线程发布其有序快照。这些预测不授权写入:实时呼叫者准入和交易举行的会话以及跨商店目录检查仍由突变所有者保留。隐身成员资格和类别事实属于记忆演员。架构、存储字节、保留和更新行为保持不变。 上游会话监控使用其调度程序范围来取消未来的检查并加入已接受的工作。会话读取使用现有的读取工作线程;事件记录和标记结算在事务和提交准入时重新验证空闲会话。共享状态工作人员在推进其标记或删除丢失的源之前比较完整扫描的上游链接。持久事件插入或重复数据删除仍然先于标记解决。失败的事件记录留下可用于下一次检查的标记。模式、存储字节、保留、提供者合同和更新行为不变;不需要迁移。 ## 轨迹保持覆盖指数 公认的轨迹保留设计将存储的运行时事件保留在每个代理存储中,并用 `(session_id, run_id, created_at, octet_length(event_json))` 替换其派生的 `idx_agent_trajectory_runtime_run` 索引。保留读取工作线程直接从追加事务外部的覆盖索引进行聚合。没有引入物化事件大小分段、汇总表、触发器、计数器、第二索引或新的持久性所有者。 可写数据库准入通过所需索引所有者及其现有的完整性检查以原子方式修复同名索引。这是代理模式 24 处的仅索引更改;不需要架构版本碰撞或事件转换。一次性重建读取保留的轨迹行并在保存点内构建替换;回滚在失败时恢复旧索引。侦听器绑定后,网关启动会将修复推迟到其代理准备工作线程。稍后的事件写入维护字节长度表达式,包括空运行 ID。较旧的相同版本可写所有者可以在降级或二进制回滚时重建其先前的部分索引,而无需更改事件行。严格的只读验证可能需要在重新打开之前进行可写修复。 保留保留 14 天年龄规则、整体驱逐、当前会话豁免、512 MiB 默认全局预算、JSONL 分隔符记帐和现有数据库编码语义。每会话修剪仍然测量 UTF-8 字节。在写入器准入之前附加序列化事件,并独立于全局清理进行提交。首次使用和每小时清理使用一个生命周期拥有的读取器和删除事务,限制为 16 次运行和 10 MiB,从而允许一次超大的完整运行。删除仅重新验证写入者准许下的选定批次:运行标识、最新时间戳、字节、事件计数和受保护的会话。读取工作线程每次扫描都会聚合一次运行摘要。本机所有者游标会在有限的批次中耗尽该快照;选择和排序在删除事务之前运行。 保留所有者仅持有主动扫描的突变收据。提交的追加会发布其保留会话的运行摘要,包括每个会话的修剪。在所有补丁拥有的写入之后,会话元数据补丁仅推进收据的已提交突变计数器。它们保留轨迹行并重复使用扫描准备好的运行摘要,而无需其他聚合。在接受仅元数据收据之前,所有者修订和租赁检查仍然适用。所有者用这些收据替换受影响的快照会话,因此与快照创建重叠的写入既不会丢失,也不会被计数两次。它的字节和到期事实会确定每个批次,而无需等待免写读取。回滚后不会发布任何收据。拥有写入者的收据和连接本地突变计数使受其他写入影响的事实无效。不完整的覆盖需要新的读取工作快照,而不是写入器保持的扫描或外部提交探测。每次扫描允许一次刷新;另一个则在下一个追加时进行清理。提交的删除在刷新后仍然有效。共享租赁围栏会使取消或业主释放的收据失效;本机连接替换无法重用它们。嵌套同步追加将清理推迟到独立追加为止。 这种内存收据和保守刷新设计于2026年10月5日被维护者接受。权限、持久性、模式、保留行策略和更新行为保持不变。 WAL 检查点安排仍由现有维护所有者负责。 综合 241,697 个事件固定装置测量的总时间为 31-40 毫秒,而分阶段查询的总时间为 407-453 毫秒,所有 3,836 个组都是相等的。替换索引占用了 7,712,768 字节,而旧部分索引占用了 6,598,656 字节,大约多了 1.06 MiB。对于两种形状,不包括提交、缓存逐出和检查点放大,热 320 行 insert/rollback 探测大约需要 0.7 毫秒。这些是组件测量,而不是生产吞吐量或端到端保持保证。回归证明捕获保留读取的聚合计划,要求覆盖访问而无需临时分组或表体读取,断言空运行和命名运行的保留事件,并通过数据库准入打开填充的旧索引装置,而不更改其版本或行。 ## Talk 语音会话查找索引 语音会话查找更改保留了现有的 `cache_entries` JSON 主体和表格形状。两个部分表达式索引仅包含状态为 `open` 的有效 JSON 记录:一个索引代理、会话密钥和旧客户端推理的来源;其他索引更新过时恢复时间。格式错误的 JSON 和关闭的记录不会进入任一索引。 JSON 表达式是单独保护的,因此不相关的缓存值不需要包含 JSON。 这是存储审查检查点下的仅索引更改。可写准入通过 required-index 所有者安装或修复索引;现有记录不需要 Doctor 转换或架构版本冲突。初始安装扫描一次缓存表。仅当语音记录打开时,后续写入才会维护索引条目。较旧的同版本读者会忽略附加索引;升级、降级和回滚保留记录字节和保留。 遗留推理和陈旧候选解码在现有代理历史记录读取器中运行。恢复会重新检查关闭事务内的截止,因此并发恢复不会从较早的快照关闭。同步工具策略在每个本机连接中最多保留 128 个紧凑的语音事实,这些事实会因承认的模式、所有者作者收据或本地突变修订而失效。事务和固定或授权者控制的读取不会重用这些事实。关闭本机连接会废弃其缓存。呼叫关闭后,确认功能仍可供绑定咨询使用,与开放状态检查无关。 ## Session 使用情况概述预测 会话使用将其派生缓存保留在现有 `cache_entries` 所有者中。 `session-cost-usage-rollup-v3` 范围包含版本化的转录检查点和未加时间戳的贡献。相邻的 `session-cost-usage-projection-v1` 范围存储包含四分之一小时会话和模型聚合的 UTC-month 分区。检查点和受影响的分区以原子方式提交。这取代了之前的每个事件的整个历史缓存主体;没有表、索引或数据库架构版本更改。隐身会话保留其现有的进程本地、非持久性缓存,并且不创建月份分区。 Projection 版本 2 将稀疏的季度打包成按月压缩的主体;版本 1 每日行将被忽略并由正常的可恢复刷新替换,无需架构迁移。检查点和分区替换仍然是原子的。 使用承载的转录出版物通过现有的使用工作队列安排进展。每个脏会话都会等待 30 秒,没有其他使用情况发布或活动代理轮流。其最旧的待处理更改在连续轮流中幸存下来:五分钟后,它可以在下一个空闲间隙中刷新。刷新期间开始的回合可能与其已承认的有界批次重叠。用户和元数据行加入下一次使用情况扫描。成本和概览读取刷新并等待挂起的发布批次,绕过空闲延迟,因此已完成的回合的使用情况立即可见。目标预算和提供商计费限制使用自己的当前会计,与此显示投影无关。关闭取消挂起的延迟而不刷新;提交的记录仍然是事实的来源。启动和拓扑更改在有界批次中回填,在批次之间产生。缓存写入在代理写入器 FIFO 外部等待,直到前台工作耗尽,然后一次提交一个会话。报告读取使用其单独的工作通道并在回填期间返回部分或过时的总计。重新启动会从已提交的检查点重新发现未完成的会话。调试级别的关闭日志期间预期刷新取消;刷新或清理失败仍会发出警告。在进程内 DDL 之后,即使保留的读者在挂起时采用了先前共享收据的另一个包装器,工作人员准入也会发布其经过验证的模式。收到的模式和物理数据库证明必须保持有效; JavaScript 包装器标识不会建立较新的架构修订版。仅附加刷新在检查点序列之后恢复,并对每个新页面解码一次。抄本所有者现有的重写水印在重写后使检查点失效;分支更改从可见的祖先中重建。网关使用进程本地保留而不是持久缓存锁定写入来序列化刷新。仅使用写入不会使会话事实无效。刷新工作人员还保留有界的、包含收据的转录统计数据和汇总输入的工作集。未更改的收据重用统计信息(包括生成和冷状态)并跳过未更改的计算。成功的写入会将其检查点和分区输入向前传送;转录写入使统计数据无效,而汇总写入或修剪使汇总输入无效。工人退休会丢弃工作集。报告保留其独立的读取快照。刷新期间的并发修复可以将修正推迟到下一次刷新;它不需要在普通后台路径上进行另一个元数据比较。仅当元数据扫描发现陈旧行时,完全刷新才会提交修剪;删除仍然匹配每个观察到的行的检查点和更新时间戳。 Doctor 负责清理已退休的缓存范围,因此普通刷新不会重复旧删除。停用的行可能会保留到 `openclaw doctor --fix` 运行为止。删除、记录倒带或分支更改以及定价修订通过同一所有者重建。 SQL 和单代理聚合在工作线程中运行。跨代理报告在网关上按全局会话顺序折叠工作人员摘要,以保留浮点加法。仅当报告的记录、使用情况、会话元数据、可见性、配置文件和配置修订保持最新时,报告才会重复使用已完成的结果。 成绩单仍然具有权威性;该预测既不会改变保留数据,也不会改变计费数据。精确的部分季度范围和算术无法通过聚合使用规范转录本读数来表示。部分回填在现有缓存​​状态字段中仍然可见。较旧的实现会忽略新表示的版本并从记录中重建其先前的缓存,因此回滚不需要反向数据迁移。 ## 后台执行通知义务 当符合条件的进程进入后台时,执行完成所有者将 `pendingExecNotifications` 存储在现有专用会话行 JSON 中。每个唯一的注册表进程实例 ID 都保留公共进程 ID、拥有会话 ID 和生命周期修订、网关化身、启动时间、通用命令标签以及现有的完成策略和路由。参数、环境、输出、操作系统句柄、批准和执行权限不会保留。 此附加字段不需要架构迁移或索引。现有的会话编写者提交它;启动过滤 SQL 中的私有事实,并在商店准入后通过现有工作人员仅读取 64 页中匹配的会话列表投影。不相关的条目有效负载和保存的提示保留在 SQLite 中。存储空间随着待处理的后台完成而增长。通知使用当前会话准入和稳定的源轮标识;它无法重新运行该命令。在抄本采用、明确的 cancellation/removal、重置、存档或当前通知策略拒绝之前,事实仍然存在。隐身会话不保留义务。正常会话删除会删除该字段及其行。 较旧的二进制文件会忽略此字段并且不会恢复其通知;稍后的升级可以报告未决的未知结果。回滚不会更改历史记录、执行命令或要求数据库还原。维护者授权的重启连续性修复接受这种范围狭窄的耐久性更改;所有者和单独网关进程测试涵盖生命周期清理和重新启动切换。 ## 审核材料变更检查点 明确的维护人员修复和着陆请求涵盖内部调度、数据库准入和生命周期实施决策。实施者负责设计选择、风险评估和验证。在PR中描述设计及其证据;不需要对该范围内的每个实施决策进行单独批准。 在更改公共合同、模式、持久性、保留或权限之前,打开或链接维护者讨论并记录设计的接受情况。架构版本升级始终需要接受,但保持数字版本不变并不能免除对这些合约的更改: - a 表、专用数据库、持久投影、持久缓存、索引或其他模式表示 - 哪些数据是真实来源、派生、可重构、保留、删除、导出或重启后可见 - 用户可见的持久性语义,包括现有持久数据的第二种解释 - 升级、降级、回滚、保留、压缩或损坏恢复合约 - 持久性、读取器一致性或权限边界 内部事务边界、写入者准入、锁定和生命周期机制是授权修复中保留这些合约时的工程决策。证明 FIFO 排序、等待工作后的当前权限、完整性检查、发布防护以及可写工作的结算。作为验证的一部分,评估性能和存储成本。 仅删除无效或无法访问的行(例如缺少引用的父行的行)的医生或恢复修复也是授权修复中的工程决策。它必须首先进行经过验证的备份,报告删除的内容,并保持有效数据不变。将修复、备份及其升级兼容性证明记录在PR中;不需要单独的设计验收。更改保留或删除哪些有效数据仍需接受。 当需要单独接受时,讨论应确定所属存储和生命周期、要解决的问题、避免新持久性的替代方案、源数据与派生数据、模式和 upgrade/downgrade 行为、保留和删除行为、并发和恢复不变量、performance/storage 影响、回滚计划和验证限制。实施 PR 必须链接已接受的决定。 检查点通常不适用于保留现有语义的只读查询、没有重大 write/disk 权衡的有界查询计划改进、现有批准模式的例行维护,或仅遵循已接受设计的测试、生成的基线和文档。机械迁移或维修仍然与批准其持久合同的决定相关。 对于紧急的数据丢失、安全或恢复修复,维护者可以在实施之前授权一个范围狭窄的例外。适当的公共或私人审查记录必须记录原因、临时范围、回滚和验证计划以及完整设计决策所需的任何后续行动。例外加速设计记录;它不会放弃合并前的审查。 ## 预检目标版本 在激活或回滚版本之前,针对一个明确复制的状态数据库,运行目标版本的 CLI: ```bash openclaw database preflight --json ``` 该命令不会读取默认状态目录或更改提供的文件。它将提供的合并文件打开为 immutable/read-only,比较目标版本自己的架构契约,并报告一种状态: - `exact`:复制的数据库与目标版本的运行时架构匹配。那些在首次使用前有意缺失的功能本地表不需要修复。 - `startup-repairable`:数值版本匹配,但仍存在由运行时负责的增量差异;启动时需要写入以使结构趋于一致。 - `migration-required`:数据库版本低于目标版本。 - `incompatible`:数据库版本较新,或同版本结构存在阻塞性偏差,例如出现意外列。 - `indeterminate`:无法验证文件、完整性元数据或所有权元数据。 JSON 输出通过 `schema: "openclaw.state-schema-preflight.v1"` 进行标识。 使用 SQLite 在线备份或安全协调源时生成的另一个 WAL-aware 快照。生成的预检输入必须是一个合并文件,没有同级文件 `-wal`、`-shm` 或 `-journal`; sidecar 的结果为 `indeterminate`。不要仅从活动的 WAL 数据库复制主 `.sqlite` 文件。预检将被激活的确切运行时间;单独的包版本或数字模式版本并不能证明相同版本形状的兼容性。 准备自己的私有只读快照的诊断路径使用[完整性检查](/reference/database-schemas#integrity-checks)中描述的大小派生的子进程预算。 ### 预检显式代理副本 提供代理读取器的运行时还支持: ```bash openclaw database preflight-agent --agent-id main --json ``` 使用精确的规范化代理 ID 和已解析的非符号链接常规文件路径。此命令通过该版本的维护读取器验证完整性、架构版本标记、架构形状和代理所有权,而无需创建、注册、迁移或修复任何存储。提供的文件必须与 WAL、SHM 或同级期刊进行合并。 JSON 使用`openclaw.agent-schema-preflight.v1`;只有 `exact` 具有兼容性证明。其他结果退出非零并且不需要写入。 共享状态预检无法验证代理数据库。不带 `preflight-agent` 的旧保留有效负载仍然不受支持;在其他地方安装较新的 CLI 不会使这些有效负载兼容。 Runtime/package 身份和服务运行状况是与数据库兼容性分开的检查。成功的只读预检不会授权检查点重放或替换实时数据库。