OpenChamber 同步状态不变量守则
在改动会话同步、事件归约器、轮询与缓存逻辑时,一套强制执行的状态所有权与失败语义规范,防止数据误删与状态错乱。
该技能是纯指导性文档,不含脚本、命令或外部副作用,最终权限原则天然满足,无隐蔽数据流或红线风险;但未包含回滚、确认或来源归属机制,扣分。得14分。
指令内部自洽、结构清晰、规则具体(如失败≠空、乐观更新、缓存逐出),且含详细验证清单;但核心依赖 packages/ui/src/sync/DOCUMENTATION.md 等文件未在证据中提供,关键路径无法静态复核,异常输入下的失败反馈质量不可验证,扣分。得8分。
frontmatter 触发条件明确列出适用场景(同步、引导、重连、事件 reducer、轮询、乐观更新等),语义触发精确;但未声明不适用边界,无中文支持说明,目标用户为该仓库内部开发者,适用面窄,扣分。得8分。
文档分层清晰、命名稳定、附验证清单;仓库有 MIT 许可证与活跃维护信号(CI、版本 1.22.2);但技能本身无版本号、变更日志或明确更新路径,且引用的必读文档不可见,存在隐藏假设,扣分。得8分。
对维护该同步状态子系统的开发者有明确边际价值,将易错不变量编码为可执行规则并附验证分支清单;但静态阅读无法验证输出可直接使用,代表性结果未复现,扣分。得7分。
仓库含真实测试脚本(packages/ui test 等)与手动检查清单,为部分可审计的原始材料;但该技能自身引用的文档与测试未在证据中覆盖其关键路径,无法独立复现其主张,扣分。得4分。
- 该技能引用的 packages/ui/src/sync/DOCUMENTATION.md 等必读文档未在评估证据中提供,使用者应先确认其存在且与技能规则一致。
- 纯静态评估,未执行任何验证清单;清单中的生命周期分支覆盖仅为声明,未独立复现。
- 技能无独立版本号或变更日志,规则可能随代码演进漂移,使用者应核对当前代码是否仍遵循这些不变量。
- 规则高度针对本仓库内部架构,跨项目复用价值有限。
这个 Skill 能做什么,适合哪些场景?
sync-state-invariants 是 OpenChamber 仓库(OpenCode AI 代理的桌面与 Web 界面)内置的 18 个技能之一,位于 .agents/skills/sync-state-invariants/。它不是可执行脚本,而是一份领域工程守则:当 AI 代理修改会话同步、引导/重连状态、事件归约器、轮询、乐观更新或运行时缓存时被触发。核心内容包括:区分输入来源的权威性、失败不得伪装成空数据、销毁性清理必须有完整快照基线、缓存不得逐出正在使用的条目,以及覆盖全部生命周期分支的验证清单。适合在 OpenChamber 这类多目录、多会话、实时同步的前端项目中约束代码生成质量。
该技能向代理注入一套编辑前与编辑中的强制规则:要求先阅读 packages/ui/src/sync/DOCUMENTATION.md 及所属模块文档,直到每个被改状态都有明确的属主、权威、作用域和生命周期;要求按目录子存储、全局会话存储、持久化历史、乐观影子状态四类输入分类取用;要求加载器区分失败与合法空结果(抛错或返回 T | null,绝不能吞掉 SDK/API 错误返回 []);要求销毁性清理只能基于同一运行时、同一作用域的两份完整权威快照对比;要求事件归约器显式平坦化合法转换路径、拒绝过期异步完成;要求乐观更新封藏在属主存储内并用服务端回显 ID 原位对账;要求按运行时身份键控缓存并禁止在获取路径上运行逐出扫描;最后给出一份覆盖引导、失败、重试、回滚、多目录部分失败、持久化水合竞态等分支的验证清单。
- 在 OpenChamber 仓库中让 AI 代理修改会话同步或重连逻辑,避免它把加载失败当成空数据而清空会话列表
- 代理改动事件归约器时,强制其保持单一排序来源并拒绝过期事件,防止多标签页下会话状态错乱
- 代理实现乐观更新的消息队列,需要客户端 ID 与服务端回显 ID 对账和失败回滚的正确模式
- 代理编写运行时作用域缓存时,避免在获取路径上逐出正在挂载的条目而造成无限请求循环
- 代理调整轮询或引导逻辑,需要保留轻量轮询省略的富字段并把启动期 502/503 当作瞬态处理
- 代理处理持久化快照与内存状态的水合,需要明确权威与单调修订号以拒绝过期写入
这个 Skill 有哪些优点和局限?
- 规则极其具体可执行:每条不变量都附带正确的实现模式(如抛错 vs 返回 null、代际令牌 vs 修订号对账),而非空泛建议
- '失败不是空数据'和'永不逐出使用中的条目'两节直击真实生产事故模式(如渲染期无保护导致的无限请求循环),并给出症状描述便于诊断
- 验证清单覆盖所有生命周期分支,包括多目录部分失败、水合竞态、快照差分清理基线重置等易漏场景
- 纯文本守则,无脚本依赖,可移植到任何 Agent Skills 兼容客户端
- 深度绑定 OpenChamber 仓库结构:依赖 packages/ui/src/sync/DOCUMENTATION.md 作为必读上下文,脱离该仓库时'必读上下文'环节无法满足
- 它是编码规范而非可执行检查器:没有配套测试或 lint 工具验证规则是否被遵守,效果完全取决于模型遵从度
- 适用面窄——仅在改动同步/缓存/归约器相关代码时触发,对一般前端任务无作用
- 源材料未提供该技能实际减少 bug 的度量或用户反馈证据
如何安装这个 Skill?
该技能随 OpenChamber 仓库分发,位于仓库内 .agents/skills/sync-state-invariants/。安装 OpenChamber 本身即可获得:CLI 方式为 curl -fsSL https://raw.githubusercontent.com/openchamber/openchamber/main/scripts/install.sh | bash(需 Node.js 22+),或从 GitHub Releases 下载桌面版。若只想要这个技能用于其他 Agent Skills 兼容客户端,把 .agents/skills/sync-state-invariants/ 文件夹(含 SKILL.md)复制到你的客户端技能目录即可;源材料未记载该技能在其他项目结构(不存在 packages/ui/src/sync/DOCUMENTATION.md 时)下的降级行为,需自行评估。
如何使用这个 Skill?
在 Claude Code 等支持 Agent Skills 的客户端中,当任务涉及会话同步、引导/重连状态、事件归约器、轮询、乐观更新、消息队列、排序/对账、运行时缓存或目录相关会话行为时,技能会按其 frontmatter 描述被自动选用;也可显式提示:'按照 sync-state-invariants 技能修改这个 reducer'。技能随后要求代理先读取 packages/ui/src/sync/DOCUMENTATION.md 再动手,并按其不变量与验证清单执行。涉及高频流式处理时,技能指示还需加载 performance-engineering 技能。
这个 Skill 与同类方案有什么区别?
OpenChamber 仓库中它与其他 17 个内置技能(如 performance-engineering,被本技能在高频流式场景下显式引用)协同工作;本技能专注于同步状态正确性,performance-engineering 专注性能。除此之外源材料未提及外部替代品。