mcpField
P
principle-separate-before-serializing-shared-state

principle-separate-before-serializing-shared-state

github.com/cursor开发14.5k4.2k 次安装今天更新
代码仓库

关于 principle-separate-before-serializing-shared-state

面向多方可能修改共享状态的并发设计技能。它建议先消除不必要的共享;确需共享写入时,再以结构化方式串行处理。

主要功能

  1. 01识别共享可变状态
  2. 02优先拆分写入目标
  3. 03串行化必要的共享写入
  4. 04降低竞态风险

适用场景

  1. 01设计并发工作进程的状态
  2. 02避免共享文件或分支中的竞态

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/cursor/plugins --skill principle-separate-before-serializing-shared-state

安装后在 Claude Code 中输入/principle-separate-before-serializing-shared-state确认已加载。

详细介绍

在序列化共享状态之前先消除共享

当并发参与者可能共享可变状态时,首先要问他们是否需要同一个可变对象。如果不需要,就消除共享。如果确实需要共享,就通过结构化方式强制串行化:锁文件、顺序执行的阶段、独占所有权。指令和约定不能控制并发。

原因: 对共享状态的并发写入会产生竞态条件,问题时有时无、难以复现,调试成本也很高。

模式:

  1. 识别共享的可变状态(双方都会读写的文件、双方都会推送到的分支、双方都会定义并使用的 API)。
  2. 默认做法:消除共享写入目标。 问问自己:这些参与者需要的是一个规范对象,还是在发布彼此独立的信息?为每个参与者分配各自拥有的文件、键、分支或状态目录,只在读取或报告的边界处合并。两个工作进程将各自的 lastX 字段写入同一个 state.json,仍然属于共享修改。indexer-state.json + metrics-state.json 则不属于共享修改。
  3. 只有当一个共享写入目标确实是不可违背的约束时,才以结构化方式串行化访问(锁文件、顺序执行的阶段、单写入者参与者或原子比较并交换)。把“我们需要一把锁”视为需要检查的设计异味,而不是默认答案。

评论

支持 Markdown