Build latest book artifacts / build (push) Canceled after 0s
dependency resolution / resolve (3.11) (push) Canceled after 0s
dependency resolution / resolve (3.13) (push) Canceled after 0s
deploy-pages / build (push) Canceled after 0s
deploy-pages / deploy (push) Canceled after 0s
i18n consistency check / check (push) Canceled after 0s
provider adoption tests / test (chapter2/context-compression) (push) Canceled after 0s
provider adoption tests / test (chapter2/prompt-injection) (push) Canceled after 0s
provider adoption tests / test (chapter2/system-hint) (push) Canceled after 0s
provider adoption tests / test (chapter3/log-sanitization) (push) Canceled after 0s
web-search-agent tests / test (push) Canceled after 0s
web-search-agent tests / agentbook (push) Canceled after 0s
7.3 KiB
7.3 KiB
theme, title, info, author, transition, mdc, lineNumbers, monaco, aspectRatio, canvasWidth, layout, class
| theme | title | info | author | transition | mdc | lineNumbers | monaco | aspectRatio | canvasWidth | layout | class |
|---|---|---|---|---|---|---|---|---|---|---|---|
| seriph | Lesson 17 — How Can a Synchronous Model Live in an Asynchronous World? | English video course for AI Agents in Depth | Bojie Li | slide-left | true | false | false | 16/9 | 980 | cover | 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
Synchronous loop vs. Async Harness
Synchronous loop
- One request at a time
- No mid-turn updates
- Tool latency blocks attention
Async Harness
- Inbox and scheduler
- Interrupt or parallel policy
- Checkpoints and notifications
The model remains turn-based; the Harness absorbs real-world concurrency.
Events need an explicit policy
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
$ 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.
→