« Phase 23 README · Warmup · Deep Dive · Principal Deep Dive · Core Contributor · Staff Notes

Phase 23 — Hitchhiker's Guide

The compressed practitioner tour. Read the WARMUP for the mechanisms; this is the stuff you say in the meeting.

30-second mental model

There are three names and one of them is the answer. AutoGen = conversational multi-agent teams (a shared chat + who-speaks-next + when-to-stop). Semantic Kernel = enterprise plumbing (typed functions, session state, middleware, telemetry, .NET). The Microsoft Agent Framework (MSAF) = the late-2025 successor to both, which keeps AutoGen's agents, folds in SK's enterprise features, and adds a new graph Workflow engine (typed edges, checkpointing, human-in-the-loop). AutoGen and SK are the lineage; MSAF is what you build on now. The framework's whole organizing idea is open-ended agents vs explicit workflows — and its advice is "if you can write a function, do that."

The one-liners to have ready

Say thisBecause
"MSAF is the successor to both AutoGen and Semantic Kernel."It's the single most current-sounding sentence in a Microsoft-stack round.
"AutoGen coordinates by conversation; MSAF Workflows coordinate by graph."Names the open-ended vs explicit split precisely.
"A team = shared chat + speaker selection + termination condition."The entire AutoGen control loop in one line.
"Edges are type-safe: the type is a contract that errors, the condition is the router."Shows you know the crux of MSAF Workflows.
"HITL and checkpointing are the same mechanism — a pause at a super-step boundary."The insight that separates a builder from a user.
"The magentic manager drives from a progress ledger."Names Magentic-One and the reliability lever.
"if you can write a function, do that."MSAF's own least-agentic principle (Phase 00).

The vocabulary to drop

  • AutoGen: AssistantAgent (LLM agent) · UserProxyAgent (human/executor) · TextMessage · RoundRobinGroupChat (cycle in order) · SelectorGroupChat (a model/policy picks next) · MaxMessageTermination / TextMentionTermination (compose with |/&) · TaskResult.
  • v0.4 runtime: autogen-core (async actor/event runtime) · autogen-agentchat (team API) · autogen-ext (model clients/tools). Rewrite = monolithic loop → actor model.
  • MSAF: AIAgent/ChatAgent · Workflow (WorkflowBuilder, executors, typed edges) · RequestInfoExecutor (HITL) · checkpointing · middleware · threads/sessions · MCP client.
  • Patterns: sequential · concurrent (fan-out/fan-in + aggregator) · handoff (dynamic transfer) · group-chat · magentic (manager + progress ledger, from Magentic-One).

The framework compare-and-contrast (memorize the axes)

Explicit graph?Checkpoint + HITLType-safe edgesEcosystemReach for it when
MSAFyes (Workflows)yesyes.NET · Python · Go / AzureMicrosoft/Azure/.NET shop, SK migrant, need typed+durable+governed orchestration
LangGraphyesyestyped state (no edge types)Python/JS / LangChainPython-native LangChain shop; richest checkpointer/store ecosystem
OpenAI Agents SDKno (loop + handoffs)not built-innoPython / OpenAILight, model-centric loop with handoffs + guardrails
CrewAIno (roles/tasks)limitednoPythonQuick role-based multi-agent prototype

War stories

  • The group chat that never stopped. A two-agent "reviewer/writer" team with only a TextMentionTermination("APPROVE") — the model kept almost approving and never said the word. Ran until the token budget alarm. Fix: always compose a MaxMessageTermination backstop with |. Termination is the team-level max_steps; the model-driven keyword is a suggestion, not a guarantee.
  • The stringly-typed handoff that shipped garbage. Agent A emitted a dict; agent B expected a list; nothing errored, B silently produced nonsense that surfaced three steps later. That is precisely the bug MSAF's type-safe edges catch at the wiring — a WorkflowTypeError, not a corrupted run.
  • The refund nobody approved. A "workflow" that continued past a human-approval step when the approval service timed out and returned empty. Re-run also re-sent the refund (not idempotent). MSAF's answer: the HITL node checkpoints and pauses; resume requires the response or raises. HITL and durability are one feature; treating them as optional is how money moves without a human.
  • "Let's use AutoGen and Semantic Kernel together." Said in a 2025 design review; it was the 2024 answer. The room noticed. The current answer is "MSAF, which is the successor to both."

Beginner mistakes

  1. Talking about AutoGen and SK as the current, separate destinations (they're MSAF's lineage now).
  2. Shipping a group chat with no MaxMessageTermination backstop.
  3. Using an open-ended team for a task with a knowable structure (that's a Workflow — "write the function").
  4. Conflating an edge's type (a contract that errors) with its condition (the router).
  5. Treating checkpointing and human-in-the-loop as two features instead of one mechanism.
  6. Building a handoff/manager loop with no bound (infinite ping-pong) or an unvalidated target.
  7. Calling "concurrent" nondeterministic — it means independent, which is why you can run it deterministically.
  8. Answering "MSAF or LangGraph?" without naming the axis (typed/durable control flow) or the ecosystem (Azure vs Python).