--- theme: seriph title: "Lesson 17 — How Can a Synchronous Model Live in an Asynchronous World?" info: "English video course for AI Agents in Depth" author: Bojie Li transition: slide-left mdc: true lineNumbers: false monaco: false aspectRatio: 16/9 canvasWidth: 980 layout: cover class: cover ---
Build · Chapter 4 · Tools
# How Can a Synchronous Model Live in an Asynchronous World?

Events, interruption, parallelism, and proactive tool discovery

Lesson 17 of 42 · 19 minutes · Event-Driven Asynchronous Agents; Proactive Tool Discovery
--- # Why this problem matters

Ingress

External events can wake the Agent.

Scheduling

Queue, interrupt, or parallelize by urgency.

Discovery

Find a capability without loading every schema.

--- # Three ideas to keep in view

Event queue

Durable arrival, priority, and replay

Cancellation

Stop work safely and preserve recoverable state

Meta-tool

Search a large tool catalog on demand

--- # The book's visual model Three asynchronous event-processing strategies
Three asynchronous event-processing strategies
--- # Synchronous loop vs. Async Harness

Synchronous loop

Async Harness

The model remains turn-based; the Harness absorbs real-world concurrency.
--- # Events need an explicit policy ~~~python event = await inbox.get() match event.urgency: case "interrupt": await cancel(current_task) case "immediate": spawn(event) case _: queue.append(event) ~~~ --- # Test the claim
4-52 min

Trigger a timed event

Observe: Registration, event arrival, processing, and delivery

4-62 min

Interrupt and recover a long-running task

Observe: Cancellation point, cleanup, checkpoint, and recovery

4-72 min

Discover tools instead of injecting the catalog

Observe: Token count, retrieved schemas, and selected capability

Demo budget: 6 minutes · one contiguous terminal block
--- class: course-terminal ---
Live demo
# Switching to the terminal ~~~bash $ uv run python chapter4/agent-with-event-trigger/event_loop_demo.py --mock --trigger timer --delay 2 --duration 6 $ uv run python chapter4/async-agent/demo.py interrupt $ uv run python chapter4/active-tool-discovery/demo.py --offline ~~~
Run the command(s), narrate decisions, and point to the observation—not just the output.
--- # What the evidence supports

Finding 1

Priority is a product policy, not merely a queue implementation detail.

Finding 2

Graceful interruption requires tools and loops to expose safe cancellation points.

Finding 3

On-demand discovery keeps a small stable prefix while preserving a large action space.

--- # Boundary → design rule
Today's models are trained mostly on synchronous trajectories; async behavior remains a Harness workaround.
Separate event intake, scheduling, model turns, tool execution, and user notification into explicit components.
--- # Continue the experiment
Parallel and state demos chapter4/async-agent/ Active tool selection chapter4/active-tool-selection/ Hierarchical matching book-en/images/fig4-7.svg Dynamic tool cache design book-en/images/fig4-8.svg
--- layout: center class: text-center ---
Pause and apply
# Your turn
Which external event should interrupt current work rather than wait in a queue?
--- layout: center class: text-center ---
Chapter 4 complete · Next · Lesson 18
Use code as the most general action interface.