这篇文章的目标不是简单列一份名词清单,而是把几类和 SafeOps Agent 方向相近的方案,按“它到底解决什么问题、核心模型是什么、我能怎么上手”讲清楚。
我重点看的官方资料包括:
- StackStorm
- Rundeck / PagerDuty Runbook Automation
- OpenTelemetry Collector
- PagerDuty SRE Agent
- LangChain / LangGraph 的 human-in-the-loop
- OpenAI Agents SDK
如果先给出一句总判断,那么我的结论是:
- StackStorm / Rundeck 最接近“运维执行与 runbook 编排层”
- OpenTelemetry Collector 最接近“标准化采集层”
- PagerDuty SRE Agent / LangGraph HITL / OpenAI Agents SDK 最接近“AI 辅助分析与审批执行层”
所以,最先进的架构通常不是“让 LLM 直接 SSH 上去乱跑”,而是:
- 先把数据采集标准化
- 再把执行层做成确定性 workflow
- 然后加审计、审批和权限边界
- 最后再把 LLM 叠在上面做分析、归纳和建议
这也是为什么当前 非 LLM、低权限、规则型 的 SafeOps 路线是合理的。
1. StackStorm:事件驱动自动化的完整参考
官方资料:
- https://docs.stackstorm.com/overview.html
- https://docs.stackstorm.com/actions.html
- https://docs.stackstorm.com/workflows.html
- https://docs.stackstorm.com/orquesta/index.html
- https://docs.stackstorm.com/sensors.html
- https://docs.stackstorm.com/rules.html
- https://docs.stackstorm.com/reference/traces.html
1.1 它真正解决的问题
StackStorm 不只是“自动跑脚本”,它解决的是:
- 系统里发生事件后,如何自动识别并触发运维动作
- 如何把单步动作组织成 workflow
- 如何追踪一条自动化从触发到结束的全链路
它的核心模型非常经典:
sensor观察外部世界trigger把事件结构化rule决定是否启动自动化action执行单步动作workflow执行多步编排trace把整条链路串起来
这个模型非常值得你学习,因为它把:
- 采集
- 判断
- 执行
- 编排
- 审计
拆成了不同层,而不是堆在一个 shell 脚本里。
1.2 最应该记住的几个概念
actions
action 是基本执行单元。官方示例里可以是:
- 本地 shell
- 远程 shell
- Python 脚本
- HTTP 请求
- workflow 本身
更重要的是 StackStorm 有 runner 抽象。也就是说它不是直接“随便跑命令”,而是先定义动作运行在什么执行器里。
这点对 SafeOps 的启发特别强:
- 未来最好不要只靠一个大而全的 shell runner
- 应该逐步区分:
- 只读检查类动作
- 远程执行类动作
- HTTP 集成类动作
- workflow 编排类动作
rules
规则的作用不是“执行”,而是“把事件和执行连接起来”。
一个 rule 通常包括:
- 触发器类型
- 匹配条件
- 执行的 action / workflow
- 参数映射
这意味着判断条件不再埋在脚本内部,而是外显成配置。
workflows
StackStorm 现代 workflow 引擎是 Orquesta。
官方强调它支持:
- 顺序流程
- 分支与汇合
- retry
- transition
- 上下文变量
这说明它已经不是“顺序跑几条命令”,而是一个真正的运维编排层。
traces
trace 是 StackStorm 的高级能力之一。
它可以把:
- 某个事件
- 哪条 rule 命中
- 哪个 action 被执行
- 执行结果如何
串成一条完整链路。
这一点非常像你以后可能需要的:
- run id
- workflow id
- 触发源
- 任务结果
- 最终报告
1.3 可以直接上手的命令
这些是官方 quick start 里非常值得自己跑一遍的命令:
| |
这组命令可以帮助你建立最基本的直觉:
- StackStorm 不是先从 UI 学起,而是先从 CLI 学起
- action / trigger / rule / execution 是几个核心对象
- 执行历史天然是第一等公民
1.4 Rule 的最小学习例子
官方文档展示了 rule 采用 YAML 定义。一个简化学习版长这样:
| |
部署 rule 的典型命令:
| |
测试 rule 的命令也很重要:
| |
这说明 StackStorm 不仅支持“上线规则”,还支持规则调试,这是成熟平台很重要的特征。
1.5 Workflow 的最小学习例子
官方 Orquesta 文档展示的是 YAML workflow 定义。 学习时你应该关心的不是语法细节本身,而是它表达了什么:
- 任务间依赖
- 成功或失败时如何跳转
- 上下文变量如何流动
官方的创建方式大概是:
| |
然后 workflow 会像普通 action 一样被注册。
这个设计非常漂亮,因为它意味着:
- workflow 本身也是 action
- 上层调度不用关心它内部是单步动作还是多步编排
1.6 对 SafeOps 的现实启发
如果你只从 StackStorm 学一件事,我建议学下面四件:
trigger -> rule -> action/workflow的边界划分- action schema 和 output schema
- trace 思维
- workflow 不只支持 happy path,还支持失败路径和重试
2. Rundeck / PagerDuty Runbook Automation:以运维作业为中心的平台
官方资料:
- https://docs.rundeck.com/docs/enterprise/
- https://docs.rundeck.com/docs/about/introduction.html
- https://docs.rundeck.com/docs/manual/jobs/index.html
- https://docs.rundeck.com/docs/manual/jobs/job-workflows.html
- https://docs.rundeck.com/docs/manual/jobs/workflow-strategies/
- https://docs.rundeck.com/docs/administration/security/authorization.html
- https://docs.rundeck.com/docs/administration/security/audit-trail.html
- https://docs.rundeck.com/docs/api/
2.1 它真正解决的问题
Rundeck 不是一个“智能体平台”,它更像是:
- 多节点作业执行平台
- 可审批、可授权的 runbook 平台
- 面向人类操作员的自助运维系统
如果说 StackStorm 更像“系统自动响应事件”,那么 Rundeck 更像:
- 运维人员运行受控 job
- 或者系统通过 schedule / webhook / API 去触发已定义 job
2.2 核心对象
Rundeck 的核心对象是:
ProjectNodeJobWorkflowACLExecution
其中 Job 是核心单元。
一个 Job 里通常包含:
- 输入选项
- 节点过滤
- workflow 步骤
- 执行策略
这和“脚本扔到服务器上自己跑”的区别非常大,因为它把运维过程变成了可复用的、可被授权的对象。
2.3 最值得学习的设计点
Job 是一等公民
在 Rundeck 里,运维过程不是“命令历史”,而是 Job。
这带来的好处是:
- 别人能复用
- 权限可以绑定到 job
- 审计可以围绕 job 展开
Node Steps vs Workflow Steps
这是 Rundeck 文档里最容易被忽略,但非常重要的一个区别:
Node Steps:对每个匹配节点执行Workflow Steps:全局执行一次
对多节点系统非常关键。
Workflow Strategies
官方文档里的三种策略特别有用:
Node FirstSequentialParallel
这意味着 workflow 不只是“按步骤排好顺序”,还可以表达:
- 在单节点维度滚动执行
- 在全体节点维度分阶段执行
- 并发执行
2.4 上手时最值得跑的接口
Rundeck 很多操作偏 UI,但官方也给了 API / CLI 路线。
最典型的 API 运行 job:
| |
官方文档里还给了带 options 的 JSON 示例,学习时可以把它理解成:
| |
也就是说,Job 运行时输入被正式建模了,而不是全靠 shell 参数拼接。
如果你偏 CLI,官方还有 RD-CLI。学习时建议重点记住:
- 它本质是 Rundeck API 的命令行封装
- 它能管理 jobs、executions、projects、keys、nodes 等对象
2.5 Webhook 驱动 Job 的方式
Rundeck 官方有 Run Job Webhook Plugin。
它的核心思路是:
- 接收 JSON webhook
- 把 payload 传给 job
- 支持把 payload 映射为 options、node filter,甚至 run-as user
这很像 StackStorm 的 webhook 触发规则,但它更偏 job 平台风格。
从你的角度看,这一点很重要,因为它表明:
- 一个 runbook 平台也可以接受外部事件触发
- 只是它的中心对象仍然是 job
2.6 ACL 和审计
Rundeck 官方在 ACL 和审计上的重视程度非常高。
这意味着它不是只解决“怎么执行”,而是同时解决:
- 谁可以看 job
- 谁可以运行 job
- 谁可以编辑 job
- 谁可以查看执行历史
一旦你的 SafeOps 从个人脚本变成团队工具,这部分几乎是必须补的。
2.7 对 SafeOps 的现实启发
如果你从 Rundeck 学习,我建议重点学:
- Job / Workflow / Execution 作为正式对象
- Node Steps 与 Workflow Steps 的区分
- ACL 与审计思维
- 错误处理不是附加逻辑,而是 workflow 的组成部分
3. OpenTelemetry Collector:现代采集层的标准答案
官方资料:
3.1 它真正解决的问题
Collector 不是修复平台,也不是 workflow engine。 它的核心问题是:
- 如何把 metrics、logs、traces 用统一方式接收、处理、导出
也就是说,它是一个“遥测中转与处理层”。
3.2 你需要记住的组件模型
Collector 的核心组件是:
receiversprocessorsexportersconnectorsextensions
这对应一个非常现代的流水线模型:
- 先接收
- 再处理
- 再导出
这个抽象特别重要,因为它把“采集”和“最终去哪儿”解耦了。
3.3 学习时最值得动手看的配置
Collector 的学习入口不是 CLI,而是配置文件。 一个最小学习配置大概长这样:
| |
这段配置足够帮助你理解:
- receiver 负责接入
- processor 负责处理中间层逻辑
- exporter 负责输出
3.4 为什么它对你重要
SafeOps 当前是轻量自定义方案,这没有问题。
但如果以后数据量、节点量、数据类型增长,你就会明显遇到两个问题:
- 采集格式不统一
- 后续分析层难以复用
这时 OTel Collector 的启发很重要:
- 采集层应该逐渐标准化
- 不同目标系统不应该各写一套 ad hoc 采集器
3.5 对 SafeOps 的现实启发
如果你只学一件事,就是:
- 采集层和执行层最好分开
这会让你后面无论接规则引擎、报表系统、AI 分析层,都更容易。
4. PagerDuty SRE Agent:AI 调查与事故辅助层
官方资料:
- https://support.pagerduty.com/main/docs/sre-agent
- https://support.pagerduty.com/main/docs/agent-tooling-configuration
- https://support.pagerduty.com/main/docs/workflow-integrations
4.1 它真正解决的问题
PagerDuty SRE Agent 不是在解决“如何安全执行 shell”。 它更像在解决:
- 事故发生后,怎么更快理解上下文
- 怎么把日志、runbook、历史事件统一起来
- 怎么让值班工程师少花时间在重复调查上
4.2 最重要的能力边界
官方文档强调它可以:
- 摄取 runbook 与 SOP
- 结合历史 incident 学习
- 建议下一步动作
- 生成或优化 playbook
- 从日志系统检索上下文
换句话说,它更像:
- 调查型 AI copilot
而不是:
- 本地执行层
4.3 最值得学习的设计点
证据驱动,而不是空想推理
官方资料显示,它会从:
- Grafana
- Datadog
- CloudWatch
- Confluence
- GitHub
等系统取数据。
这意味着它不是只靠大模型瞎猜,而是:
- 先取证据
- 再组织上下文
- 再给建议
Memory 层
官方提到了:
- incident playbook / scratchpad
- runbook memory
- incident summarization memory
这点很重要,因为这代表它并不是“单次问答工具”,而是带有事故记忆能力的系统。
4.4 对 SafeOps 的现实启发
如果你以后要加 LLM,我认为最合理的位置不是:
- 让 LLM 直接执行高权限运维动作
而是:
- 先让 LLM 做调查、总结、生成建议、复用历史案例
这才是更稳的 AI 引入路径。
5. LangChain / LangGraph 的 Human-in-the-Loop:现代 agent 安全边界的核心模式
官方资料:
- https://docs.langchain.com/oss/python/langchain/human-in-the-loop
- https://docs.langchain.com/oss/javascript/langchain/human-in-the-loop
- https://docs.langchain.com/oss/python/langgraph/human-in-the-loop
5.1 它真正解决的问题
它解决的是:
- 当 agent 想调用一个高风险工具时,如何强制人类审批
这类高风险动作通常包括:
- 写文件
- 执行 SQL
- 改配置
- 调用危险 shell 工具
5.2 最重要的运行逻辑
官方模式大致是:
- 模型先提出一个 tool call
- middleware 判断这个工具是否需要人工介入
- 如需介入,则中断
- 保存状态
- 人类批准、编辑或拒绝
- 系统恢复执行
关键点在于:
- 审批不是口头建议,而是 runtime 强制机制
- 状态必须可持久化和可恢复
5.3 为什么这对运维系统极其关键
很多“AI 运维”项目的最大问题不是模型不聪明,而是:
- 没有把审批做成运行时的一部分
一旦你未来想给 SafeOps 接入 LLM,这个模式几乎是必须借鉴的。
6. OpenAI Agents SDK:构建智能层的工程化工具
官方资料:
- https://openai.github.io/openai-agents-python/
- https://openai.github.io/openai-agents-python/agents/
- https://openai.github.io/openai-agents-python/running_agents/
- https://openai.github.io/openai-agents-python/config/
- https://openai.github.io/openai-agents-python/multi_agent/
- https://openai.github.io/openai-agents-python/handoffs/
- https://openai.github.io/openai-agents-python/human_in_the_loop/
6.1 它真正解决的问题
OpenAI Agents SDK 解决的是:
- 如何用一套比较少但够用的 primitives 来构建 agent 应用
它不是现成的 VPS 运维平台,而是用来构建“智能层”的框架。
6.2 核心 primitives
官方重点强调的原语包括:
AgentHandoffsGuardrails
另外还有:
SessionsTracingHuman-in-the-loopMCP
6.3 最值得学习的最小示例
学习它时,最有价值的不是先追很复杂的多 agent,而是看最小 agent:
| |
这段例子虽然简单,但它让你建立两个关键认识:
- agent 是一个运行时对象,不只是 prompt
- 真正的应用能力来自 tools、handoffs、sessions、guardrails 的组合
6.4 更重要的是 Handoffs
官方多 agent 文档的一个非常重要的思想是:
- orchestration via LLM
- orchestration via code
这意味着你不一定要让模型主导全部流程。
对 SafeOps 而言,更合理的方式往往是:
- 执行层由 code 控制
- 分析层由 LLM 参与
6.5 HITL 的意义
官方 HITL 文档提到:
- tool 可以声明
needs_approval - run state 可以保存并在审批后恢复
这和 LangGraph 的思路是同一类现代安全模式:
- 高风险动作必须审批
- 运行时必须可中断、可恢复
6.6 对 SafeOps 的现实启发
OpenAI Agents SDK 不是替代你当前 agent 的东西。
它更像未来如果你要加:
- 智能分析
- 工具编排
- 多 agent 协作
- 批准后执行
时可用的上层框架。
7. 横向比较:到底谁更像你的方向
如果从“像不像 SafeOps 当前方向”看,我会这么排:
最像当前执行层
- StackStorm
- Rundeck
原因:
- 都强调工作流、动作、审计、执行
- 都不是纯粹的 LLM 框架
最像未来采集层
- OpenTelemetry Collector
原因:
- 它给你的是“采集标准化”的参考答案
最像未来 AI 分析层
- PagerDuty SRE Agent
- LangGraph HITL
- OpenAI Agents SDK
原因:
- SRE Agent 提供事故调查与知识复用思路
- LangGraph HITL 提供审批边界思路
- OpenAI Agents SDK 提供可工程化的 agent runtime
8. 对 SafeOps 的推荐演进路径
如果把这些官方方案真正转化成你的路线,我建议顺序是:
第一步:继续强化当前非 LLM 执行层
优先补:
- action 输入输出结构
- run id / trace id
- workflow 失败路径
- 审计日志
- 模板化配置
第二步:逐步补事件驱动和标准采集
优先借鉴:
- StackStorm 的 trigger / rule 模型
- OTel Collector 的采集层思路
第三步:只把 LLM 放到分析层
优先做:
- 事故摘要
- runbook 检索
- 历史案例总结
- guided triage
第四步:如果未来真的要让 LLM 介入执行
必须先有:
- human-in-the-loop
- 可中断恢复
- 审批流
- 权限分层
- 命令白名单
9. 一组我认为最值得你自己动手跑的内容
如果你真的想把这些知识学扎实,不建议只看一遍文章。建议按下面顺序动手:
9.1 StackStorm
| |
然后再动手试:
| |
9.2 Rundeck
学习重点不是先装一堆集群,而是先理解:
- Job
- Workflow
- Node filter
- API 运行方式
最应该看的调用入口:
| |
带 options 的 body:
| |
9.3 OpenTelemetry Collector
先读最小 pipeline 配置:
| |
9.4 OpenAI Agents SDK
先跑最小 agent:
| |
然后再理解:
- tools
- handoffs
- sessions
- HITL
10. 结语
如果把这篇文章收成一句话,我会这样说:
现代运维 agent 的正确方向,不是先让模型获得更高权限,而是先让系统拥有更清晰的结构、更严格的边界、更强的审计和更好的可恢复性。
对 SafeOps Agent 来说,当前最有价值的路线不是“马上变成一个全自动 LLM agent”,而是:
- 向 StackStorm 学事件与 workflow
- 向 Rundeck 学权限与 runbook
- 向 OTel 学标准采集
- 向 PagerDuty SRE Agent 学调查与知识复用
- 向 LangGraph / OpenAI Agents SDK 学审批与智能层
这样走,后面不管你是继续做非 LLM 版本,还是做受控的智能版本,都会稳得多。
参考资料
- StackStorm Overview: https://docs.stackstorm.com/overview.html
- StackStorm Actions: https://docs.stackstorm.com/actions.html
- StackStorm Workflows: https://docs.stackstorm.com/workflows.html
- StackStorm Orquesta: https://docs.stackstorm.com/orquesta/index.html
- StackStorm Sensors: https://docs.stackstorm.com/sensors.html
- StackStorm Rules: https://docs.stackstorm.com/rules.html
- StackStorm Traces: https://docs.stackstorm.com/reference/traces.html
- Rundeck Enterprise: https://docs.rundeck.com/docs/enterprise/
- Rundeck Introduction: https://docs.rundeck.com/docs/about/introduction.html
- Rundeck Jobs: https://docs.rundeck.com/docs/manual/jobs/index.html
- Rundeck Job Workflows: https://docs.rundeck.com/docs/manual/jobs/job-workflows.html
- Rundeck Workflow Strategies: https://docs.rundeck.com/docs/manual/jobs/workflow-strategies/
- Rundeck Authorization: https://docs.rundeck.com/docs/administration/security/authorization.html
- Rundeck Audit Trail: https://docs.rundeck.com/docs/administration/security/audit-trail.html
- Rundeck API: https://docs.rundeck.com/docs/api/
- OpenTelemetry Collector: https://opentelemetry.io/docs/collector/
- OpenTelemetry Collector Installation: https://opentelemetry.io/docs/collector/installation/
- PagerDuty SRE Agent: https://support.pagerduty.com/main/docs/sre-agent
- PagerDuty Agent Tooling Configuration: https://support.pagerduty.com/main/docs/agent-tooling-configuration
- PagerDuty Workflow Integrations: https://support.pagerduty.com/main/docs/workflow-integrations
- LangChain HITL: https://docs.langchain.com/oss/python/langchain/human-in-the-loop
- LangGraph HITL: https://docs.langchain.com/oss/python/langgraph/human-in-the-loop
- OpenAI Agents SDK: https://openai.github.io/openai-agents-python/
- OpenAI Agents SDK Agents: https://openai.github.io/openai-agents-python/agents/
- OpenAI Agents SDK Running Agents: https://openai.github.io/openai-agents-python/running_agents/
- OpenAI Agents SDK Handoffs: https://openai.github.io/openai-agents-python/handoffs/
- OpenAI Agents SDK HITL: https://openai.github.io/openai-agents-python/human_in_the_loop/