SOTA Sync
全部文章
Agent 设计2026-06-10

iii 团队的 agentic backend 架构:用 Worker + Trigger 替换「加一个新服务再跟所有人集成」

Mike Piccolo(iii.dev)介绍其开源 agentic backend 的核心设计:把后端拆成 4 个独立可替换的 worker(harness / context-manager / session-manager / llm-router),加任意新能力不再写集成代码,而是用 iii.trigger 调用同引擎其他 worker 的 function。整个系统的哲学是「composable / extensible / discoverable / observable」。

#一个 agentic backend 在 iii 上长什么样

Mike Piccolo(iii.dev 团队)写了一段关于如何把 agentic backend 做成 production ready 的简短文章。核心论点是:在 iii 上构建 agentic backend,等于在引擎上组合一小撮 worker。每个都 production ready,每个都可替换,组合才是你的 backend。

四个 worker 分工:

  • harness ——编排 agent 的 turn loop
  • context-manager ——把原始历史转换成 model-ready 的上下文
  • session-manager ——类型化对话条目的持久化、响应式、可分支的存储
  • llm-router ——所有 LLM provider 的统一前门

每个都是独立的,可以单独用:

  • 只装 llm-router,你有了一个 provider 无关的 completion 服务
  • 只装 session-manager,你有了一个响应式的对话存储
  • harness 只负责串联其他三个加工具调用分发

#"加一个新服务再跟所有人集成"的范式要结束

任何真正长大的逻辑——审批门控、花费预算、多 Agent 交接——都会变成同级的 sibling worker,而不是让 harness 变复杂。

从外面看像四层,里面没有任何集成代码。harness 用 iii.trigger("context::sync") 调 context-manager,context-manager 返回后 harness 再调 llm-router,llm-router 通过 channel 流式输出。没有编排框架要配置,没有层间契约要维护,没有 service mesh 要运维。

这四个 worker 跟 queue worker、state worker、pubsub worker、observability worker、HTTP worker、sandbox worker、schedule/cron worker 跑在同一个引擎上。每个 worker 都能继承其他所有 worker 的能力,零集成成本。iii worker add <worker-name>,直接拿到完整系统面。

#范式抽象跳跃

Mike 引用了 React 的类比:React 把 UI 还原成了 Component,iii 把后端还原成了 Worker、Trigger、Function。复杂度最终都会要求抽象,这是 backend 工程的客观规律,React 当年在 UI 领域发现过同样的事。

任何你会作为一个独立服务加进去的能力,在 iii 上都可以是一个 worker。能力以 function 和 trigger 的形式暴露。

这是 iii.dev 团队观察到的模式。系统因此变得:

  • Composable
  • Extensible
  • Discoverable
  • Observable

每多一个 worker,系统的能力就上一层。

#资源