跳转到内容

principle-make-operations-idempotent

更新于 2026-10-01

设计操作,使其无论运行多少次、从何处开始,都收敛到正确 state。每个 mutating state 的操作都应回答:「运行两次会怎样?上次运行半途崩溃会怎样?」

原因: 命令、生命周期操作和处理循环运行在崩溃、重启和重试是常态的环境。若 partial state 改变下次运行结果,每次重启都会变成调试 session。

模式:

  • Convergent startup:扫描已有 state,清理 stale artifact,接管 live session
  • Content-based cleanup:按内容等价比较,不按创建顺序
  • Self-healing locks:用基于 PID 的 stale lock 检测
  • Idempotent scheduling:失败工作干净 respawn,每轮后 fresh input 重新生成

检验:

  1. 连续运行两次会怎样?
  2. 上次运行在每个可能点崩溃会怎样?
  3. 重执行是否收敛到相同 end state?

若任一答案是「取决于留下了什么 state」,操作就需要 reconciliation step。

本站是非官方的 pstack 中文学习站,和 poteto 没有隶属关系。译文对照的是 cursor/plugins 仓库里的 pstack/ 目录。本站不发行中文版插件。 github.com/cursor/plugins