Event-Driven Asynchronous Agent

Asynchronicity is needed for long-running tasks, dynamic event priorities, and smooth interruption/resumption. The fundamental tension: LLM training paradigm is synchronous (a tool call must be followed by a result), while deployment requires asynchronicity. All inputs and outputs are modeled as a stream of events in a queue; three processing strategies: cancel (urgent – interrupt and create a safe point), queue (normal – batch after the current step completes), parallel (independent lightweight request – in a separate session). Engineering compromise – placeholders for unfinished tools.

Related: [Five Categories of Tools], [Interruption and Placeholders], [ReAct Cycle]