Skip to content

v0.3.0 — Chat layer + three-layer SDK

Choose a tag to compare

@SNHuan SNHuan released this 28 Apr 04:21
· 52 commits to main since this release
4026e65

Release notes (markdown):

EasyAgent v0.3.0 is the biggest release since the SDK started. The runtime is
rebuilt around three layers, and a brand-new chat layer is the recommended
entry point for multi-agent collaboration.

Highlights

  • 🆕 easyagent.chat — write multi-agent flows as plain await calls. Wrap
    any BaseAgent with LLMTalker, drop into a preset (sequential / fanout /
    chatroom / groupchat / debate), or compose your own Orchestrator along
    four pluggable axes (routing / turn-taking / stop / summarize). Containers nest
    natively because Orchestrator itself implements Talker.
  • 🧱 Three-layer SDK — a single-agent ladder (Agent → ReactAgent →
    SkillAgent / SandboxAgent), a tick-driven runtime layer for autonomous
    group simulation, and the new chat layer for everyday multi-agent work.
  • 📚 Examples ladder rebuilt — 15 single-concept examples, 00 through 14:
    model call → memory/context → tools → skills → sandbox → custom tool → two-agent
    talk → sequential → chatroom → groupchat → debate → nested → shared state →
    advanced runtime.

What's new

Single-agent layer

  • BaseAgent / Agent / ReactAgent / SkillAgent / SandboxAgent clean
    inheritance chain, with loop logic now in agent.step().
  • AgentSession (renamed from AgentRuntime) with an on_events(events) hook
    for multi-agent participation.
  • BaseAgent.observe(msg) — read-only memory absorption without triggering a
    reply.
  • Message.name field and Message.to_api_dict(include_reasoning=...).

Tools

  • EndTool — the canonical "I'm done" tool, on by default in ReactAgent.
  • ThinkTool — side-effect-free scratch pad, on by default in ReactAgent.
  • ToolManager / SkillManager are now plain registries instead of
    constructor-level singletons.

Events & runtime (easyagent.events, easyagent.runtime)

  • MessageEvent (visibility via to="*" or to=frozenset(...)), WaitEvent,
    EventBus, telemetry events.
  • BaseRuntime, TickBasedRuntime, presets (ParallelRuntime /
    SequentialRuntime / ShuffledRuntime), policies (StepPolicy /
    SchedulePolicy / StopPolicy with all built-ins).

Chat layer (easyagent.chat)

  • ChatMessage / Identity primitives.
  • Talker protocol with adapters: LLMTalker, HumanTalker, RuntimeTalker.
  • Orchestrator + strategies along four axes — see the README and
    docs/architecture.md.
  • MultiAgentFormatter — folds others' messages into a <history> block so an
    agent never mistakes them for its own; auto-installed by LLMTalker.
  • SharedState — versioned KV blackboard with subscriptions and async
    wait_for.

Removed

  • easyagent/loop/ (SingleTurnLoop / ReActLoop) — loop logic now lives in
    agent.step().
  • easyagent/pipeline/ (Team / BaseNode / BasePipeline) — superseded by
    chat.sequential and Orchestrator.

Install

pip install -U easy-agent-sdk==0.3.0

Optional extras: [sandbox] (Docker sandbox), [web] (SerperSearch), [all].

Full changelog

See https://github.com/SNHuan/EasyAgent/blob/v0.3.0/CHANGELOG.md

---