mcpField
P
principle-make-operations-idempotent

principle-make-operations-idempotent

github.com/mdsmithaustin开发8183 次安装今天更新
代码仓库

关于 principle-make-operations-idempotent

Make Operations Idempotent 是一项面向状态变更操作的软件设计技能。它帮助开发者在重试或崩溃后,根据实际状态与目标进行协调,使命令、生命周期步骤和处理循环能够恢复。

主要功能

  1. 01将当前状态与目标进行协调
  2. 02仅应用仍需执行的变更
  3. 03识别中断后遗留的过期产物
  4. 04依据源记录重建派生产物
  5. 05检查重复运行及崩溃节点

适用场景

  1. 01让可重试命令能够安全重跑
  2. 02处理多步状态变更期间的崩溃
  3. 03重新生成报告或索引并避免沿用过期值

安装

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

$npx skills add https://github.com/mdsmithaustin/pstack --skill principle-make-operations-idempotent

安装后在 Claude Code 中输入/principle-make-operations-idempotent确认已加载。

附带文件agents/openai.yaml

详细介绍

实现操作的幂等性

设计操作时,应确保无论运行多少次,或上一次运行停止在哪里,操作都能收敛到正确状态。每个会更改状态的操作都应回答:“如果运行两次会怎样?如果上一次运行中途崩溃会怎样?”

原因: 命令、生命周期操作和处理循环都运行在崩溃、重启和重试司空见惯的环境中。如果部分状态更改会影响下一次运行的结果,那么每次重启都会变成一次调试。

思路: 根据现有状态推导每个步骤,而不是根据上一次运行打算做什么。读取当前状态,将其与目标进行比较,只应用差异。按这种方式编写的步骤可以安全重复,因为再次运行时会发现已无事可做。

运行留下的任何内容,例如锁、临时文件、写入一半的记录或已认领的任务,都必须能被下一次运行识别为过期。判断是否过期时,应依据无论上一次运行停在哪里都成立的证据,而不只是常见情况。若下一次运行无法判断某个标记的状态,那么每次崩溃都会导致人工清理。例如,先写入临时路径,再将其重命名到目标位置;或者按内容而非创建顺序比较产物。

对于生成的报告、索引和校准文件,应根据带有来源记录的源数据重新构建,并替换生成的输出。保留源事实、只追加的历史记录和人工注释。输入缺失时应报告缺失情况,而不是捏造样本或沿用过时的派生值。

检验:

  1. 如果连续运行两次,会怎样?
  2. 如果上一次运行在每个可能的时刻崩溃,会怎样?
  3. 重新执行后,是否会收敛到相同的最终状态?

如果任何答案是“取决于留下了什么状态”,就需要为该操作增加协调步骤。

评论

支持 Markdown