Dagu 工作流编排器
用单个自托管程序和 YAML 为现有脚本、容器及智能体任务添加调度、重试与审批。
- Star 数
- ★ 4.4k
- 最近更新
- 今天
- License
- GPL-3.0
- 主语言
- Go
- FA 评分
- 74/100 · 存在缺口
30 秒速览
- 运行形态
- 可在哪里用
- 通用 · 跨平台Codex · Claude Code · Claude API
- 费用
- 有免费版,另有付费云服务
- 上手难度
- 低 · 几分钟可跑通
- 开始前需要
- 典型场景
- 已有提取脚本、SQL、dbt 命令和加载程序的数据团队,可用 YAML 把它们连接成带依赖、重试和运行历史的 ETL 流程。
- 不适合
- 需要开箱即用 SSO、RBAC 与审计日志的团队
- 不愿自行承担备份、共享存储与容量规划的团队
- 希望把 Dagu 嵌入自有产品却无法接受 GPL-3.0 的团队
- 源码审查
- 74/100 · 存在缺口
这个 Agent 能做什么,适合哪些场景?
Dagu 是面向运维自动化和 AI 辅助操作的本地优先工作流引擎,适合不希望为编排另建复杂平台的团队。它通过声明式 YAML 定义 DAG,并直接运行 shell 脚本、Docker 容器、Kubernetes Job、SSH 命令、SQL、HTTP 请求、子工作流和外部编码智能体 CLI。单个二进制程序内置 Web UI、HTTP API、调度器、执行器和 MCP 服务器,状态、队列、日志及运行历史保存在本地文件中,不依赖外部数据库或消息代理。工作流可获得依赖控制、定时执行、重试、并发限制、人工审批、密钥遮蔽、通知、制品和 Prometheus 指标。部署范围从 Linux、macOS 或 Windows 上的单机进程延伸到基于 gRPC 协调器和带标签工作节点的分布式执行,也可用于本地、内网、隔离环境、边缘或云端。需要注意的是,部分团队治理能力属于自托管许可功能,而控制器工作流和编码智能体步骤仍依赖所选模型服务或外部 CLI。
Dagu 读取 YAML DAG,解析参数、步骤依赖、计划、重试策略、审批、生命周期处理器和执行位置,然后由 dagu start 或调度器创建运行。步骤可以通过 run: 执行现有命令和脚本,或调用 docker.run、kubernetes.run、ssh.run、http.request、数据库、S3、文件、制品、状态及 dag.run 等结构化 Action。harness.run 可启动 Codex、Claude Code、Gemini CLI、Pi、OpenCode 等外部编码智能体 CLI;type: controller 工作流则让配置的模型从动作目录中选择下一步,并以 tasks 判断完成条件。运行产生逐步骤 stdout/stderr、状态、历史记录和任意文件制品,操作员可以在 Web UI 中查看、重试、停止运行或完成人工任务。内置 MCP 端点 /mcp 通过 dagu_read、dagu_change 和 dagu_execute 让兼容客户端读取状态与 Wiki、预览或应用变更,以及启动、排队、重试或停止运行。分布式模式下,调度器写入文件队列,协调器通过 gRPC 分派任务,工作节点按标签拉取、执行并回报状态与日志。
- 已有提取脚本、SQL、dbt 命令和加载程序的数据团队,可用 YAML 把它们连接成带依赖、重试和运行历史的 ETL 流程。
- 依赖 cron 和 Bash 运维脚本的平台团队,可在不改写脚本的情况下增加计划、并发控制、日志、失败通知和人工审批。
- 管理私有服务器或隔离网络的运维人员,可通过 SSH 执行诊断、部署、健康检查与重启,并把结果集中保存在自托管实例中。
- 需要批量转码或容器任务的媒体与基础设施团队,可并行运行 FFmpeg、Docker 容器或 Kubernetes Job,并用分布式工作节点扩展执行。
- 希望让支持人员安全运行标准操作的内部工具团队,可通过带类型参数的 Web 表单、角色权限和人工任务提供经批准的诊断或修复流程。
- 需要周期性代码审查或 AI 辅助运维的团队,可用
harness.run调用编码智能体,将报告保存为制品,并在发布或变更前暂停等待人工批准。
如何安装或部署这个 Agent?
macOS 或 Linux 可运行:curl -fsSL https://raw.githubusercontent.com/dagucloud/dagu/main/scripts/installer.sh | bash。也可使用 brew install dagu,或在已安装 npm 的环境执行 npm install -g --ignore-scripts=false @dagucloud/dagu。Windows PowerShell 可运行:irm https://raw.githubusercontent.com/dagucloud/dagu/main/scripts/installer.ps1 | iex。Docker 部署命令为:docker run --rm -v ~/.dagu:/var/lib/dagu -p 8080:8080 ghcr.io/dagucloud/dagu:latest dagu start-all。Helm 部署依次运行 helm repo add dagu https://dagucloud.github.io/dagu、helm repo update 和 helm install dagu dagu/dagu --set persistence.storageClass=<your-rwx-storage-class>,其中 StorageClass 必须支持 ReadWriteMany。脚本安装器可引导配置 PATH、后台服务和首个管理员;简单本地 CLI 运行不需要模型凭据,使用控制器或外部智能体时则需安装相应 CLI并配置其凭据,例如 Anthropic 控制器使用 ANTHROPIC_API_KEY。
如何使用这个 Agent?
创建 hello.yaml,内容为 steps:\n - id: hello\n run: echo "hello from Dagu",然后执行 dagu start hello.yaml。若要启动 Web UI 和调度服务,执行 dagu start-all --dags .,再访问 http://localhost:8080。运行中的 HTTP 服务同时暴露 http://localhost:8080/mcp,可将这个 Streamable HTTP 地址配置给支持 MCP 的聊天或编码客户端。生产工作流可在 YAML 中加入 schedule、depends、retry_policy、approval、secrets 和 handler_on;提交前可运行 dagu validate <dag> 或 dagu dry <dag>。常用运维命令包括 dagu status <dag>、dagu history <dag>、dagu retry --run-id=<run-id> <dag>、dagu stop <dag> 和 dagu enqueue <dag>。
这个 Agent 有哪些优点和局限?
- 单个跨平台二进制程序集成 UI、调度与执行,并使用文件存储状态,因此基础单机部署不需要 PostgreSQL、Redis、消息代理或 Python 运行时。
- 工作流结构留在 YAML 中,现有脚本和工具无需导入 Dagu SDK;删除 YAML 后原脚本仍可独立运行。
- 执行面覆盖本地命令、Docker、Kubernetes、SSH、HTTP、SQL、S3、子 DAG、人工任务和多种编码智能体 CLI。
- 同时提供 Web UI、CLI、HTTP API、内置 MCP、运行制品、逐步骤日志和 Prometheus 指标,既方便人工操作也便于外部自动化。
- 可以从单机扩展到带标签路由的协调器/工作节点模式,并提供队列、资源限制、重叠策略、补跑和僵尸运行检测。
- 文件式状态和队列需要团队自行规划持久化、备份、共享存储与主机容量;实际吞吐量取决于 CPU、内存、磁盘和工作流形态。
- 增量复用的 build 工作流目前只能在本地运行,不能直接利用分布式工作节点。
- SSO、RBAC、审计日志和事故 SaaS 集成属于自托管许可增强功能;社区自托管版不包含全部团队治理能力。
- AI 控制器依赖所选模型提供商的网络和 API 密钥,
harness.run也要求另行安装并认证对应的编码智能体 CLI。 - 分布式部署引入协调器、gRPC、工作节点、标签路由和对等 TLS配置;Helm 持久化还要求支持 ReadWriteMany 的 StorageClass。
- 项目采用 GPL-3.0,嵌入其他产品前需要评估其许可要求;嵌入式 Go API仍标记为实验性,接口可能变化。
这个 Agent 与同类方案有什么区别?
与 cron 相比,Dagu 增加依赖图、重试、历史记录、日志、审批和 Web UI。与 Airflow 相比,它不要求维护调度器、元数据数据库、工作节点和 Python 环境的整套平台,也不要求把任务改写成 @dag/@task 代码。与 Temporal 相比,Dagu 把顺序、依赖、重试和计划保留在 YAML 配置中,现有业务脚本不必迁入专用 SDK 和编程模型;相应地,它的核心抽象是外部任务编排,而不是要求业务逻辑采用工作流 SDK。
与相关度最高的同类 agent 并排比较关键指标。
| Agent | 源码审查 | 形态 / 费用 | Star | 最近更新 | 主语言 | 完整支持的平台 |
|---|---|---|---|---|---|---|
| Dagu 工作流编排器 当前 | 74 · 存在缺口 | 命令行工具免费版 + 付费版 | ★ 4.4k | 今天 | Go | Codex · Claude Code · Claude API |
| Agentspan | 62 · 存在缺口 | 命令行工具免费 + 模型费 | ★ 497 | 23 天前 | TypeScript | OpenAI API · Claude API |
| Conductor 工作流引擎 | 68 · 存在缺口 | 命令行工具免费 + 模型费 | ★ 32k | 2 天前 | Java | Claude Code · OpenAI API · Claude API |
| Trigger.dev | 57 · 缺口较多 | 代码库 / SDK免费版 + 付费版 | ★ 17k | 今天 | TypeScript | — |
FollowAgents 如何评估这个 Agent?
查看各维度的扣分理由
最小权限方面,Chart CI 明确把令牌限制为只读,Helm 配置支持专用 ServiceAccount、RBAC、SSO 与既有 Secret;但产品本身可执行本地 Shell、SSH、容器、Kubernetes 和 MCP 操作,未见统一的运行时沙箱或逐项权限模型,故为 2。用户确认有 human.task、approval 和变更预览/应用流程,但并非所有高影响命令强制确认,故为 2。README 较清楚地说明本地文件、HTTP/MCP、gRPC worker、第三方 Action、外部代理及凭据所在位置的数据流,但未提供完整网络目的地或遥测清单,故为 2。敏感数据处理声明了 Secret provider 和日志遮蔽,Helm 也引用既有 Secret,安全报告指南要求脱敏;然而缺少实现代码、加密细节和默认暴露策略证据,故为 2。依赖有明确版本,GitHub Actions 固定到提交,工具还支持 SHA-256 固定;但依赖面很大,安装示例直接管道执行远程脚本,aqua registry 默认自动跟随最新版本,未见漏洞扫描或供应链政策,故为 2。外部效果通过命令、SSH、Issue 发布、启动/停止运行等示例明确呈现,并提供审批机制,但任意命令和 MCP 执行仍可能产生广泛效果,故为 2。重试、停止、历史记录、退出清理和部分结果复用有助恢复,但没有通用事务回滚或撤销保证,故回滚为 1。仓库模块名、安全联系地址及个别源码版权标头提供有限归属线索,但未验证发布者身份,也未见完整维护者清单,故来源归属为 1。
README、Helm CI、依赖清单和测试钩子对单机/分布式、健康端点、认证与部署模式形成基本一致的描述;但吞吐量、耐久执行和可复现性等较强主张没有基准或实现证据,故自洽性为 2。工具固定、缓存、控制器模型故障转移和多种安装方式改善依赖可用性;但运行仍依赖外部注册表、CLI、云 SDK 和众多传递依赖,离线可用性未被完整证明,故为 2。CI 包含明确的错误消息和失败断言,工作流支持重试、continue_on、失败处理器与状态日志;但未提供核心运行时错误实现或用户错误目录,故失败消息为 2。
目标用户、ETL、运维、媒体、支持、边缘、容器和代理工作流均有具体场景和示例,因此受众与场景为 3。README 清楚区分单机、分布式、无界面、build-local、外部工具和商业功能边界,但任意命令、MCP 与模型控制器的安全边界仍不够完整,故能力边界为 2。Cron、重叠策略、补跑窗口、依赖、事件、参数、审批和显式启动方式使触发语义具体,故触发精度为 3。Linux、macOS、Windows、Docker、Helm、Kubernetes、SSH、隔离网及分布式 worker 均有适配说明,且 Helm CI 覆盖多种配置,故环境适配为 3。
README 从定位、架构、部署到参数和示例层次清楚,并链接 CLI、API 和专题文档,信息架构为 3。安装覆盖脚本、Homebrew、npm、Docker、Helm、服务向导和 RWX 要求,故安装说明为 3。主要 YAML 名称与 action 引用较一致且 Action 可版本化,但示例混用 id/name,第三方 v1 引用未必不可变,故命名稳定性为 2。示例非常丰富并覆盖常见操作,虽未提供独立 FAQ,仍足以达到 3。明确指出 build workflow 仅本地运行、容量依环境而定、旧版本不受支持及部署责任,但缺少系统化限制/风险清单,故已知限制为 2。仓库提供完整 GPL-3.0 文本且源码有 SPDX 标识,故许可证为 3。Chart CI 强制版本递增,安全政策说明支持版本,依赖也版本化;但未提供实际 changelog 或总体发布规则,故版本与变更日志为 2。安全邮箱、响应时限、披露流程和发布工作流体现维护路径,但发布者未经验证且缺少维护者/治理信息,故维护责任为 2。
Web UI、逐步日志、运行历史、状态、结构化输出和 artifact 流程让产物可直接检查和传递,故输出可用性为 3。相对于 cron,产品把依赖、重试、审批、调度和可观察性加到既有脚本而无需改写业务逻辑,证据中的边际价值清晰,故为 3。单二进制和无外部数据库降低部署成本,并提供多种部署方式;但吞吐和运营成本主张未经执行验证,分布式依赖及部分 RBAC/SSO 功能涉及授权层级,故成本收益为 2。
多数功能主张配有具体 YAML、架构图、安装命令或配置名称,但性能、安全性、耐久性和可复现性等主张缺少相应实现或测量材料,故主张可追溯性为 2。README 的部分部署、安全与版本声明可由 Helm CI、SECURITY.md、go.mod、测试钩子和许可证交叉支持,但未提供核心执行代码或完整测试套件,故跨来源佐证为 2。材料会注明容量依赖环境、build 目前仅本地以及 registry 自动取最新等条件,事实与推断有一定分离;但仍有若干营销性结论未明确标注为未经验证,故为 2。
- 该系统可执行任意本地命令、SSH、容器、Kubernetes 任务及 MCP 操作;在启用代理控制或远程访问前,应使用低权限账户、网络隔离、命令白名单和强制审批。
- README 的 Secret 遮蔽、RBAC、SSO、审计和可复现性主张未由所给核心实现代码验证;尤其应确认哪些功能属于商业自托管授权以及社区版默认值。
- 安装说明包含将远程脚本直接管道给 shell/PowerShell,工具解析还可跟随最新 aqua registry;生产安装应固定修订、校验签名或哈希并审查脚本。
- 第三方 Actions、外部代理 CLI、模型提供商和自动下载工具扩大了供应链及数据外流面;应逐项固定版本并审查网络目的地和凭据范围。
- 未见通用事务回滚机制;会修改远端系统的工作流应自带补偿步骤、备份、幂等设计和演练过的恢复程序。
最近版本
来自该项目 GitHub Releases 的最新发布记录,说明为上游原文摘录,未经本站改写或测试。
-
发布说明摘录
Helm chart release for Dagu. This GitHub release publishes the packaged dagu Helm chart for the Helm repository at https://dagucloud.github.io/dagu. It is not a Dagu application binary release. Install the chart with: ```bash helm repo add dagu https://dagucloud.github.io/dagu helm repo update helm upgrade --install dagu dagu/dagu \ --namespace dagu \ --create-namespace \ --wait ``` The default standalone mode uses ReadWriteOnce access with the cluster's default StorageClass. Distributed installations can opt into separate workers and ReadWriteMany storage. …在 GitHub 查看 ↗ -
发布说明摘录
Highlights v2.21 adds a ClickHouse step, lets browser steps choose when the model is called, and makes headless runs behave like headed Chrome. Distributed runs can pick workers per run and wait for workers that scale from zero. Schedulers on a shared volume now see DAG edits made on other hosts. - ClickHouse: new clickhouse.query step over the HTTP interface (#3160). - Browser steps: - ai: every_run | on_miss | never sets how much the model decides for act and upload (#3186). …在 GitHub 查看 ↗ -
发布说明摘录
Highlights v2.20 redesigns the web UI and rebuilds how it monitors runs. The Overview now leads with what needs a person, including problems that hold back many runs at once. Run lists and logs stay fast on busy servers. Browser steps can upload files and trust private certificate authorities. Per-DAG webhooks can get a public URL through Dagu Cloud. MCP now works behind proxies and with ChatGPT's connector. v2.20.0 was tagged but not published, so v2.20.1 is the first v2.20 release. A redesigned web UI …在 GitHub 查看 ↗
常见问题
基础自托管是否需要购买许可证?
Dagu 必须连接云端或外部数据库吗?
如何限制谁能编辑或运行工作流?
builtin 认证模式提供 admin、manager、developer、operator 和 viewer 五种角色,也支持独立角色的 API key;OIDC/SSO、RBAC 和审计能力与许可配置有关。任务失败或调度器停机后会怎样?
运行 AI 工作流是否绑定某一家模型服务?
harness.run 支持多种外部编码智能体 CLI,控制器还支持模型数组故障转移;但每种提供商或 CLI 的安装、凭据和模型可用性仍需单独配置。