用途:reclaim 用于强制回收一个看似卡住的循环(所有者已死亡或心跳过期)。它执行原子接管,递增 generation 计数器,并在 revision-log 中记录事件。
主要能力:接受三种循环标识形式,均通过 resolve_loop_identifier 解析:<loop_id>(12 位十六进制,如 3555bbe1f0fb)、AL-<slug>--<hash>(如 AL-odb-research--a1b2c3)、AL-<slug>(如 AL-flaky-ci-watcher,若多个活动共享 slug 会报错并列出候选)。流程包括:识别循环、加载 ownership-lib.sh 并检查回收资格、显示所有者信息并提示确认、原子回收、打印后续步骤。
使用方式:先提供标识符,否则报错并提示可用形式;若未匹配会给出最接近的已注册循环建议。检查 is_reclaim_candidate 返回 no(不存在)、owner_alive(所有者存活且心跳新鲜,应改用 /autoloop:stop)或 yes。确认后调用 reclaim_loop "$LOOP_ID" --reason "user_request",成功后显示新 generation。
适用场景:所有者已死亡或心跳过期的卡住循环。
限制与注意:不要在未确认时回收活动循环,会与运行中的所有者冲突;不要在新所有者读取前修改 contract 文件;不要用 reclaim 处理慢循环,应使用 /autoloop:stop 和 /autoloop:start。回收会递增 generation、转移所有权、记录接管事件,原所有者若恢复可能冲突。故障排查:注册表中不存在应改用 /autoloop:start;所有者存活应改用 /autoloop:stop;回收失败可能因注册表被删除或不可读,需重装插件。