项目文件夹

文件
Codex 440c688958
Harness (E2E) / Harnesses (mock LLM) (push) Has been cancelled
Harness (E2E) / Provider harnesses (live LLM conformance) (push) Has been cancelled
Lint / golangci-lint (push) Has been cancelled
Run Tests / Unit Tests (push) Has been cancelled
Run Tests / Etcd Integration Tests (push) Has been cancelled
Add durable agent resume example
2026-06-30 03:55:52 +00:00

1.2 KiB

Durable agent run resume

This example shows the agent-side counterpart to examples/flow-durable: an agent run is checkpointed with the same Checkpoint interface used by flows, then resumed after an interruption without repeating a completed side effect. The sample uses an in-memory store to keep repeated local runs deterministic; use your service store for process-restart recovery.

Run it with:

go run ./examples/agent-durable

The demo model calls inventory.reserve, then fails to mimic a process dying after the tool call was checkpointed. micro.AgentPending finds the unfinished run and micro.AgentResume continues it from the saved checkpoint. The final tool executions: 1 line is the important bit: the reservation tool was not called a second time during resume.

In a service, use the same pattern at startup:

pending, _ := micro.AgentPending(ctx, agent)
for _, run := range pending {
    _, _ = micro.AgentResume(ctx, agent, run.ID)
}

context.Context cancellation and deadlines are still honored by checkpoint loads/saves, model calls, and tool calls. Runs with terminal statuses such as done, canceled, and expired are not returned by AgentPending.