开发
development 分支
使用开发服务和凭据编写、运行、调试并发布工作流变更。
允许发布
生产级 AI 工作流
让开发、预发布和生产分别运行独立的 Dagu 实例。通过 Git 只晋级经过评审的工作流定义,同时让每个实例保有自己的凭据、worker、历史记录、访问策略和事件路由。
name: release-review
steps:
- id: collect_context
run: ./scripts/collect-context.sh
output: CONTEXT
- id: draft
action: harness.run
with:
provider: codex
prompt: |
Review this release:
${steps.collect_context.outputs.CONTEXT}
retry_policy:
limit: 2
approval:
prompt: Review the agent output before release
rewind_to: collect_context
depends: [collect_context]
- id: publish
run: ./scripts/publish.sh
depends: [draft]
每个环境使用独立 Dagu 实例
通过 Git 评审晋级工作流
审批、重试、日志、指标和追踪
Slack、PagerDuty 与经过认证的 MCP 恢复
环境架构
同一服务器中的开发工作区不是生产隔离边界。为每个环境配置独立的 Dagu 服务器、存储、凭据、worker 和网络访问,并让各实例的 Git Sync 跟踪该环境已批准的分支。
development 分支
使用开发服务和凭据编写、运行、调试并发布工作流变更。
允许发布
staging 分支
将评审后的定义拉取到隔离实例,并针对预发布依赖进行验证。
只读 Git Sync
受保护的 main 分支
仅使用生产专用凭据、策略、遥测和事件路由运行已经晋级的修订。
只读 Git Sync
生产控制
模型或智能体运行时可以更换,而运维契约保持不变。Dagu 让外围执行路径明确、可评审且可恢复。
将 DAG 定义和工作流编写技能保存在 Git 中,评审差异,并在环境之间晋级已知修订。
在智能体生成输出后暂停,收集评审意见,并在生产操作前批准、拒绝或退回工作流。
使用依赖、超时、有上限的重试策略、队列和并发控制,而不是没有边界的提示词粘合逻辑。
在审批或发布前,将确定性测试、策略检查或外部评估命令作为普通工作流步骤运行。
检查运行历史、日志和产物;向 Prometheus 导出工作流与 worker 指标,并通过 OpenTelemetry 导出 DAG/步骤追踪。
通知运维人员,在重试耗尽后创建事件,并允许获授权的 MCP 客户端检查和恢复运行。
基于 Git 的晋级
开发环境可以发布变更。预发布和生产通常应设置 `push_enabled: false`、跟踪受保护分支,并只拉取经过评审的定义。预发布适合自动拉取;生产可以自动拉取受保护分支,也可以在部署审批后执行受控拉取。
Git Sync 跟踪 DAG 文件和工作流编写技能。密钥、服务器配置、存储、运行历史、worker 和网络访问仍由各 Dagu 实例独立持有。
git_sync:
enabled: true
repository: github.com/acme/ai-workflows
branch: main
push_enabled: false
auth:
type: token
token: ${GITHUB_TOKEN}
auto_sync:
enabled: true
on_startup: true
interval: 300
失败与恢复
Dagu 将普通通知与事件生命周期管理分开,并通过认证向 MCP 客户端开放工作流操作。
工作流或智能体步骤失败,并执行已配置的重试。
重试预算耗尽后,Dagu 将最终失败发送到已配置的 Slack 通知路由。
PagerDuty 事件路由可为失败工作流创建或更新一条去重后的事件。
获授权的 MCP 客户端读取运行、跟踪日志、预览 DAG 变更,并通过 Dagu 工具重试或停止运行。
后续运行成功后,只要仍能识别同一提供商路由,Dagu 就会解决未关闭事件。
准确边界
Dagu 是 AI 系统外围的工作流控制层。明确边界能让架构更安全,也让“投入生产”的主张更可信。
| Dagu 提供 | 边界 | |
|---|---|---|
| 环境隔离 | 独立服务器、存储、凭据、worker、访问策略和事件配置,并使用 Git Sync 同步定义。 | 单个实例内的 workspace 和 runtime profile 不能替代强环境隔离。 |
| 工作流可观测性 | 运行与步骤状态、日志、产物、历史、Prometheus 指标,以及 OpenTelemetry DAG/步骤追踪。 | 提示词追踪、token 与成本遥测和语义输出质量,需要由智能体或评估栈产生或测量。 |
| 评估与护栏 | 用于确定性验证器、外部评估命令、审批门和有界重试的执行图。 | Dagu 不会判断 LLM 回答是否事实正确,也不会判断其在特定领域是否安全。 |
| 安全与事件响应 | 认证操作、限定范围的 API key、通知、MCP 控制和事件提供商路由。 | 自托管的审计日志和事件集成需要有效的自托管许可证或试用;托管版 Dagu 已包含。 |
常见问题
如果需要环境隔离,就不应该共用。运行独立 Dagu 实例,使凭据、存储、worker、网络访问、日志和策略不共享同一运维边界,再通过 Git Sync 晋级工作流定义。
不会。Git Sync 让 DAG 文件和工作流编写技能与仓库保持一致。密钥、配置、存储、运行历史和 worker 仍保留在各实例中。
不能单独完成。Dagu 可以把确定性测试或评估工具作为工作流步骤运行,并根据结果控制下一步,但评估逻辑属于这些工具和领域评审者。
在 Dagu 认证和授权允许的范围内,它可以检查 DAG、运行和日志;预览或应用经过验证的 DAG 变更;并通过 Dagu MCP 工具启动、入队、重试、停止或跟踪运行。
下一步
把一个现有智能体命令放入 Dagu DAG,验证其输出,加入审批边界,再把同一份经过评审的定义晋级到相互隔离的开发、预发布和生产实例。