OpenClaw 自动迭代 Issue 残留问题分析
概述
50 轮自动迭代后留下 4 个孤儿 Issue,根因是幂等性设计缺失。
问题现象
- 50 轮自动迭代完成后
- 遗留 4 个未关闭的孤儿 Issue
- 这些 Issue 对应的任务实际已完成
根因分析
Issue 创建逻辑
- 同一轮次最多创建 7 个 Issue
- 但关闭逻辑只处理 最新的 Issue
触发条件
delivery 失败 → 指数退避 → 重复调度 → 创建多个重复 Issue
↓
关闭逻辑只处理最新一个 → 旧的变成孤儿典型的分布式系统问题
这是经典的 幂等性缺失 问题:
- 操作不是幂等的——同一任务可以创建多个 Issue
- 状态不一致——创建和关闭使用了不同的匹配逻辑
- 没有全局唯一标识——无法追踪同一任务的所有 Issue
解决方案
- 幂等键 — 每个任务生成唯一 ID,创建 Issue 前先检查是否已存在
- 乐观锁 — 使用 Issue 标签/标记追踪任务状态
- 最终一致性检查 — 定期扫描孤儿 Issue 并清理