冲突解决
当多个 Agent 或用户同时修改同一份数据时,PuppyOne 提供完整的冲突检测与解决机制。
并发编辑的挑战
在多 Agent 协作的场景下,并发冲突是不可避免的:
- Agent A 正在更新
/specs/api-design.md,同一时刻 Agent B 也在修改同一个文件 - 你在 Dashboard 中编辑某个 JSON 文件,与此同时一个同步连接正在从 Notion 拉取新数据
- 两个 Agent 各自通过 MCP 修改同一个文件夹下的内容
如果没有冲突管理机制,后写入的操作会悄悄覆盖前一个操作的修改,导致数据丢失。
PuppyOne 的解决方案
PuppyOne 提供三种冲突解决策略,适用于不同场景:
┌─────────────────────────────────────────────────────────┐
│ 冲突解决策略 │
├──────────────────┬──────────────────┬───────────────────┤
│ Checkout/Commit │ Three-way Merge │ Last-write-wins │
│ 悲观锁定 │ 乐观合并 │ 最终写入优先 │
│ │ │ │
│ 编辑前先锁定 │ 提交时自动合并 │ 时间戳决定胜负 │
│ 其他写入者等待 │ 冲突部分标记 │ 旧版本保留在历史中 │
│ │ │ │
│ 适合:关键数据 │ 适合:协作编辑 │ 适合:文件同步 │
└──────────────────┴──────────────────┴───────────────────┘1. Checkout / Commit(悲观锁定)
先锁定、再编辑、最后提交。编辑期间,其他人无法修改被锁定的节点。
适用于对数据一致性要求高的场景,例如修改 API 规范文档、更新关键配置。
2. Three-way Merge(三方合并)
不加锁,允许多方同时编辑。提交时系统自动对比基础版本和各方修改,尝试智能合并:
- 不冲突的修改自动合并
- 冲突的部分标记出来,交由人工处理
适用于多人协作编辑的场景。
3. Last-write-wins(最终写入优先)
最简单的策略——后写入的内容直接覆盖先前的内容。被覆盖的版本自动保存在版本历史中,可随时回滚。
这是 OpenClaw 本地文件夹同步的默认策略。
如何选择策略
| 场景 | 推荐策略 | 原因 |
|---|---|---|
| 修改关键配置文件 | Checkout/Commit | 确保独占编辑,避免冲突 |
| 多 Agent 协作写文档 | Three-way Merge | 允许并行工作,自动合并 |
| 本地文件夹同步 | Last-write-wins | 简单高效,版本历史兜底 |
| 从数据源同步 | Last-write-wins | 外部数据源为权威来源 |
| Agent 修改重要业务数据 | Checkout/Commit | 防止并发写入导致数据丢失 |