#3179·CowAgent

[错误] 为长时间运行的代理任务添加检查点/恢复机制 — 在进程崩溃时, run_stream() 状态丢失

作者: liuns-yang创建于 2026年9月17日更新于 2026年9月17日

class CheckpointManager: """Atomic checkpoint persistence for Agent run_stream() execution."""

def __init__(self, checkpoint_dir: str):
    self.dir = Path(checkpoint_dir)
    self.dir.mkdir(parents=True, exist_ok=True)

def save(self, session_id: str, messages: list, turn: int):
    """Serialize state to JSON using atomic write (temp + rename)."""
    data = {
        "version": 1,
        "turn": turn,
        "saved_at": datetime.now(timezone.utc).isoformat(),
        "messages": messages,
    }
    path = self.dir / f"{session_id}.json"
    tmp = path.with_suffix(".tmp")
    tmp.write_text(json.dumps(data, ensure_ascii=False, default=str),
                   encoding="utf-8")
    tmp.rename(path)  # Atomic on POSIX and Windows

内容来源: zhayujie/CowAgent