dapr-agents
基于 Dapr 云原生运行时构建的生产级 AI Agent 框架,支持持久化工作流、弹性重试与多 A
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
基于 Dapr 云原生运行时构建的生产级 AI Agent 框架,支持持久化工作流、弹性重试与多 A
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:你的团队正在用大语言模型(LLM)构建一个自动化客服 Agent,但在实际运行中遇到了三个头疼的问题——网络中断时对话状态丢失、多 Agent 协作时消息乱序、每个新项目都要重复搭日志和监控基础设施。这些问题不是某一家公司的特例,而是整个行业在构建生产级 AI Agent 时共同面对的真实痛点。
Dapr Agents 正是为解决这些问题而来。它由 Dapr 开源项目团队(Dapr 是 CNCF 毕业项目,在全球范围内被广泛应用于云原生分布式系统)推出,是一个专门用于构建生产级自主 AI Agent 系统的 Python 开发框架。不同于那些专注于实验或原型验证的 Agent 框架,Dapr Agents 的核心理念是"弹性执行"——借助 Dapr 运行时提供的持久化工作流引擎,保证每一个 Agent 任务无论遇到网络中断、节点崩溃还是其他故障,都能自动重试并从断点恢复,最终完成执行。
Dapr Agents 的核心是 Dapr Workflow API,这套 API 底层基于 Virtual Actor 模型(虚拟执行体)。你可以把 Virtual Actor 理解为 Agent 的"数字孪生"——每个 Agent 实例在系统中有一个唯一的虚拟身份(Dapr 称为 Actor),它的状态被持久化存储,即使底层进程重启,Agent 也能从上次中断的地方继续运行,无需手动恢复会话。
这种设计带来了三个实际好处:
Dapr Agents 支持三种编排策略(Orchestration Strategy):
| 编排模式 | 说明 | 适用场景 |
|---|---|---|
| LLM 驱动编排 | 由 LLM 自主决定下一步调用哪个 Agent | 复杂推理、动态任务分解 |
| 轮询编排(Round Robin) | 均匀分配任务给所有 Agent | 负载均衡、平等协作 |
| 随机编排(Random) | 随机选择下一个 Agent | 探索性任务、去中心化决策 |
在 LLM 驱动模式下,框架内置了任务规划(Task Planning)、进度检查(Progress Check) 和摘要生成(Summary Generation) 三个 Prompt 模板,Agent 之间通过 Dapr Pub/Sub 进行消息传递,每个步骤的执行都被 OpenTelemetry 链路追踪覆盖。
Dapr Agents 继承了 Dapr 生态的丰富绑定(Bindings),可直接连接超过 50 种企业数据源:
这意味着 Agent 不再只是"调用 API",而是可以直接与企业的数据基础设施对话,实现真正的数据驱动 AI。
框架内置两种代码执行器:
所有 Agent 行为均通过 OpenTelemetry 自动记录,包括:
支持导出到 Zipkin、Jaeger、OTLP 兼容后端。
Dapr Agents 的代码库结构清晰,采用模块化插件架构:
dapr_agents/
├── agents/ # Agent 核心实现
│ ├── base.py # Agent 基类,封装通用生命周期
│ ├── durable.py # DurableAgent:持久化 Agent(含 Workflow 集成)
│ ├── components.py # DaprInfra:基础设施抽象层(PubSub/State/Registry)
│ ├── configs.py # 大量 Pydantic 配置模型(AgentMetadata、LLMMetadata 等)
│ ├── executors/ # 代码执行器(Echo、Event、Docker、Local)
│ ├── orchestrators/ # 编排策略(已重构为 DurableAgent 内置模式)
│ └── schemas/ # 数据模型(AgentWorkflowMessage、ApprovalRequiredEvent 等)
├── llm/ # LLM 客户端适配层
│ ├── openai.py # OpenAI Chat/Embedding/Audio 客户端
│ ├── anthropic.py # Anthropic Claude 客户端
│ ├── huggingface.py # HuggingFace Hub 客户端
│ ├── nvidia.py # NVIDIA NIM 客户端
│ ├── dapr.py # Dapr 专用 Chat 客户端
│ └── elevenlabs.py # ElevenLabs 语音合成客户端
├── tool/ # 工具系统
│ ├── base.py # AgentTool 基类
│ ├── executor.py # 工具执行引擎
│ └── workflow/ # AgentTool 工作流集成
├── memory/ # 记忆系统
│ ├── ConversationDaprStateMemory # Dapr 状态存储记忆
│ └── ConversationListMemory # 列表记忆
├── workflow/ # 工作流引擎
│ ├── runners.py # AgentRunner:工作流运行器
│ ├── utils/ # call_agent、trigger_agent 工具函数
│ └── decorators.py # @workflow_entry、@message_router 装饰器
└── executors/ # 独立代码执行器模块
关键技术选型:
typing.Self 和结构化日志支持Dapr Agents 是一个 Python 库,而非独立服务,部署流程分为两个层次:
层次一(快速体验):仅安装核心库,通过 Python 代码直接调用 DurableAgent,适合本地开发和调试:
pip install dapr-agents
层次二(生产部署):需要先安装 Dapr 运行时(dapr init),然后启动 Dapr Sidecar,再运行 Agent 代码。由于 Dapr Agents 依赖 Dapr 的 Workflow 和 Pub/Sub API,没有 Docker Compose 一键部署包,需要手动编排 Dapr 环境。
框架的 openinference-instrumentation 集成意味着只需几行配置,就能将 Agent 的运行数据发送到 Phoenix(阿里云/Tracesight 等)进行可视化和分析,大幅降低生产监控的接入成本。
尽管 Dapr Agents 提供了强大的生产级能力,但当前版本(pre-alpha)也存在一些局限:
Dapr Agents 代表了一个重要趋势:将云原生领域的成熟工程实践(弹性、观测性、分布式)引入 AI Agent 开发领域。在此之前,Agent 框架多关注"如何让 AI 思考",而 Dapr Agents 专注于"如何让 AI 的思考在生产环境中可靠运行"。
随着 AI Agent 从实验室走向生产,这类框架的价值将愈发突出。如果你在构建需要长期运行、多步骤执行、多 Agent 协作的 AI 系统,Dapr Agents 值得密切关注。
图1:Dapr Agents 品牌标识

图2:GitHub 仓库预览图