slo-implementation
作者 wshobson使用 slo-implementation 来定义面向 Reliability 工作的 SLI、SLO、错误预算和 burn-rate 告警。它可帮助团队把服务目标转化为可衡量的指标,并结合类似 PromQL 的示例与来自 SKILL.md 的实用指导推进落地。
该 skill 评分为 68/100,说明它可以收录到目录中供用户发现,但更适合被看作文档驱动的框架,而不是开箱即用的实现。仓库提供了足够真实的内容,能够帮助 agent 判断何时应使用它,也给出了实用的 SLI/SLO 示例;不过,由于除 markdown 外看不到支持文件、安装步骤或明确的运行规则,实际采用时仍需要一定自行理解和补充。
- 触发场景清晰:描述和“何时使用”部分明确限定了 reliability target、SLI/SLO、错误预算和告警相关任务。
- 工作流内容扎实:该 skill 包含具体的 SLI/SLO 概念,以及用于可用性和延迟的 PromQL 示例,比通用提示词更具可执行性。
- 安装决策信息较清楚:用户能够判断这是一套用于定义 SLI、SLO 和错误预算的框架,而不是占位性质或仅供演示的 skill。
- 在实际执行层面需要较多自行推断,因为仓库没有展示可将该框架转为可运行工作流的脚本、引用资源、配套文件或安装命令。
- 摘录中提到了外部文件 `references/slo-definitions.md`,但从仓库结构信号来看并没有对应的参考文件,这会削弱内容的可信度与完整性。
slo-implementation 技能概览
slo-implementation skill 用于把模糊的可靠性目标,落到可执行的 Service Level Indicators(SLI)、Service Level Objectives(SLO)、错误预算(error budget)和告警逻辑上。它尤其适合 SRE、平台团队、后端工程师,以及重视可靠性的产品负责人,用一套可复用的方法定义“服务健康到什么程度才算足够好”。
slo-implementation skill 适合解决什么问题
当你需要以下能力时,就应该使用 slo-implementation skill:
- 为某个服务定义可衡量的可靠性目标
- 选择合适的 SLI 类型,例如 availability 或 latency
- 设定与业务影响相匹配的 SLO 目标
- 从目标反推出 error budget
- 基于 burn rate 或 SLO 消耗情况设计告警
相比泛泛地让模型“帮我写一个 SLO”,slo-implementation 更有价值,因为它会按 SLI → SLO → SLA 的结构化层级来组织内容,并把设计落到 measurement window、PromQL 风格查询等实现细节上,而不只是停留在概念层面。
哪些人应该安装
如果你已经有 telemetry,或者很快就能拿到,那么 slo-implementation skill 会非常适合你。对于使用 Prometheus 风格指标、希望引入符合 SRE 实践的可靠性方法、又不想从零搭框架的团队,它尤其有用。
如果你属于以下情况,它的价值会相对有限:
- 还没有任何有意义的服务指标
- 当前核心问题是 incident response,而不是可靠性目标设计
- 你只需要一份面向客户或法律场景的 SLA 文档
用户在决定采用前最关心什么
大多数在评估 slo-implementation install 的用户,通常最关心这几点:
- 它给出的是否是可落地的 SLO 设计建议,而不只是理论
- 是否支持查询、告警等实现层细节
- 是否能帮助避开糟糕的 SLO,比如“好看但没意义”的 uptime 指标
- 是否足够简洁,能真正嵌入日常工作流
在这些点上,这个 skill 的实用性是比较强的:它覆盖了常见 SLI 类型、目标设定示例,以及 objective 和 error budget 之间的关系。
核心优势与取舍
slo-implementation 最大的差异点在于,它始终聚焦于可靠性度量与策略设计,而不会跑偏成泛泛的 observability 建议。正因为聚焦,实际调用时也更容易发挥效果。
它的代价在于:这个 skill 的输出质量,很大程度取决于你给出的服务上下文。如果你不说明 user journey、流量模式、依赖关系、阈值和 metric 名称,输出看起来可能很合理,但真正落地时会很难操作。
如何使用 slo-implementation skill
slo-implementation skill 的安装上下文
把这个 skill 安装到你的 agent 可以访问自定义 skills 的环境中。典型做法是:
- 将源仓库加入你的 skills 配置
- 启用
slo-implementationskill - 当任务是定义或修订 SLI、SLO、error budget 或基于 SLO 的告警时调用它
如果你的工具链支持直接安装 skill,可使用常规的 skill loader 加载以下仓库路径:
https://github.com/wshobson/agents/tree/main/plugins/observability-monitoring/skills/slo-implementation
从仓库内容来看,这个 skill 目前只提供了 SKILL.md,因此应优先阅读这个文件,而不要预期还有辅助脚本或额外参考资料。
先读这个文件
从这里开始:
plugins/observability-monitoring/skills/slo-implementation/SKILL.md
这个文件才是 slo-implementation guide 的核心内容,包含它的用途、适用场景、SLI/SLO/SLA 层级关系、常见 SLI 类型、目标示例以及实现模式。
想让 skill 产出有用结果,需要提供哪些输入
要获得高质量的 slo-implementation usage 输出,建议给 agent 这些信息:
- 服务名称,以及用户拿它来做什么
- 最重要的用户侧关键路径
- 当前已有的 metrics 和 labels
- 现有 dashboard、alerts 或 PromQL(如果有)
- 流量规模和季节性特征
- 业务关键程度和故障成本
- 各 endpoint 或 operation 的延迟预期
- 已知故障模式
- 你需要的是内部 SLO、对齐外部 SLA,还是两者都要
如果没有这些信息,这个 skill 依然能帮你草拟 SLO,但往往会退回到比较通用的 availability 目标,以及过于简单的基于请求数的 SLI 设计。
如何把模糊需求变成高质量 prompt
弱 prompt:
- “Create SLOs for my API.”
更好的 prompt:
- “Use the
slo-implementationskill to define SLIs and SLOs for a multi-tenant payments API. Our critical user journeys are charge creation and webhook delivery. We use Prometheus. Available metrics includehttp_requests_total,http_request_duration_seconds_bucket, and queue retry counters. Propose 2 to 3 SLIs, recommend SLO targets, calculate monthly error budgets, and suggest burn-rate alerts. Exclude admin endpoints and health checks.”
为什么这个 prompt 更有效:
- 它明确了服务边界
- 它指向了真实存在的指标
- 它把范围限制在真正有意义的 user journey 上
- 它请求的输出,正是这个 skill 擅长生成的内容
第一次使用 slo-implementation 的最佳工作流
一个实用的 slo-implementation usage 流程通常是:
- 先挑一个服务,而不是整个平台
- 明确 1 到 3 条关键 user journey
- 把每条 journey 映射到现有 signals
- 让 skill 给出候选 SLI
- 评审这些 SLI 是否真实反映用户体验,而不只是系统内部状态
- 设定初始 SLO 目标和 error budget
- 起草告警逻辑
- 验证现有 metrics 是否真的支持这套设计
- 在正式 rollout 前,继续修正阈值和 exclusions
这样做可以避免一种很常见的失败模式:试图一次性定义全公司的可靠性策略,结果什么都落不下来。
slo-implementation skill 最擅长输出什么
slo-implementation skill 最强的地方在于:
- 提出 availability、latency 等常见 SLI 模式
- 解释 SLI / SLO / SLA 的关系
- 把抽象的可靠性目标翻译成可度量的比例公式
- 给出目标区间和 error budget 的表达方式
- 设计基于 SLO 消耗的告警思路
如果你的诉求是尽快拿到第一版可运营的方案,并且希望它建立在标准 SRE 语言和方法上,这个 skill 会特别有帮助。
团队最常卡住的地方
实际采用时,通常会卡在以下问题之一:
- 团队无法就“面向用户的服务边界”达成一致
- 只有基础设施指标,没有 user journey 级别的指标
- 缺少 latency histogram,导致基于阈值的 SLI 很难做好
- 指标里混入了 bot 流量、内部任务或 health check,扭曲了分子和分母
- 目标值是出于政治或拍脑袋决定,而不是基于风险和成本
这个 skill 可以帮助团队把讨论结构化,但如果 telemetry 本身缺失,它也无法凭空创造可信的度量体系。
能明显提升输出质量的实用 prompt 模式
尽量让 skill 以“便于决策”的格式输出,例如:
- “List candidate SLIs with rationale and tradeoffs.”
- “Recommend one primary SLO and one secondary guardrail SLO.”
- “Show PromQL-style formulas for each SLI.”
- “Identify exclusions that should not count against the SLO.”
- “Suggest alerting windows for fast and slow burn.”
这类 prompt 会把输出拉向可实施级别,而不是停留在抽象的可靠性建议上。
如何把 slo-implementation 用在 Reliability 工作中
在做 slo-implementation for Reliability 时,以下这些时机尤其适合使用它:
- 新服务上线前
- 做 observability 改进时
- 反复发生事故,暴露出当前告警噪声过大时
- 管理层要求给出与客户影响挂钩的可靠性目标时
- 需要把工程交付速度和 error budget 策略关联起来时
当团队正从“什么都监控”转向“衡量真正影响用户的东西”时,它的价值最大。
slo-implementation skill 常见问题
slo-implementation 比普通 prompt 更好吗?
如果你的任务明确是做 SLI / SLO 设计,那么答案是肯定的。普通 prompt 也许能生成看起来还可以的定义,但 slo-implementation 更有可能保留正确层级、给出可测量的公式,并把目标与 error budget、告警联系起来。
slo-implementation skill 对新手友好吗?
中等友好。新手当然也能用,但如果你具备基础 SRE 概念,并且对现有 telemetry 有一定了解,效果会明显更好。如果你刚接触 SLO,建议先只针对一个服务使用这个 skill,并在采纳前逐条审查它建议的 metrics。
它必须依赖 Prometheus 吗?
不需要,但这个 skill 的内容明显和 Prometheus、PromQL 风格的方法很契合。如果你使用的是 Datadog、CloudWatch、Grafana 或其他监控栈,依然可以沿用其中的设计逻辑,再把 metric 表达式翻译成你所在平台的形式。
什么情况下不该使用 slo-implementation?
如果你符合以下情况,就不应把 slo-implementation 当作主要工具:
- 你需要的是法律意义上的 SLA 文案
- 你没有任何可用的服务 telemetry
- 你的真正问题是 ownership,而不是 measurement
- 你的服务还太早期,尚不足以定义稳定的 user journey
这类情况下,更合适的做法是先补仪表化,或者先解决 operating model 的问题,再来正式制定 SLO。
它也能帮忙做告警吗?
可以。这个 skill 不只是定义目标,还覆盖了 error budget 的运维侧实践,以及基于 SLO 的告警设计。这也是它比那种只停留在百分比目标模板更实用的原因。
如何改进 slo-implementation skill 的使用效果
提供业务上下文,而不只是技术指标
想让 slo-implementation 产出更好,不要只给技术指标,还要告诉 agent 可靠性在商业上意味着什么:
- 哪个流程一旦退化会直接影响收入?
- 哪些用户是 premium 用户,或对延迟更敏感?
- 可接受的影响时长是多少?
这些信息能帮助 skill 设定更现实的目标,而不是机械地默认 99.99% 这种看上去很漂亮的数字。
明确写出服务边界
更好的 slo-implementation guide 输入,一定会清楚说明哪些算、哪些不算。例如:
- 包含对外公开 API 的写请求
- 排除
/healthz、管理路由和内部 batch jobs - 只统计用户可见且成功完成的结果,而不是仅仅请求被接收
边界是否清晰,往往直接决定这个 SLO 最终是否会被团队信任。
提供 metric 名称和示例查询
只要你愿意分享真实 telemetry,skill 的输出会立刻从“概念上合理”提升到“接近可直接实施”。高质量输入通常包括:
- metric 名称
- label 维度
- histogram buckets
- 当前告警查询
- dashboard 链接或复制出来的查询片段
这样输出就能从概念性 SLO,推进到接近可上线的定义。
避免 vanity SLI
一个非常常见的失败模式,是选了“容易采集”却和用户体验关系很弱的指标。例如:
- pod 重启次数
- 单独看 CPU saturation
- 某个依赖的原始 uptime,但没有映射到服务影响
你可以要求 skill 说明:为什么每个 SLI 都能代表用户感知到的可靠性。如果它说不清,就应该替换掉这个 SLI。
第一稿之后一定要继续迭代
从 slo-implementation 拿到的第一版输出,应当被视为草稿。你可以继续追问来改进它:
- “Which SLI is most representative of user harm?”
- “What would make this SLO impossible to measure accurately?”
- “Which exclusions are risky or easy to abuse?”
- “How would this change for low-traffic services?”
- “What alerting would reduce noise while protecting the error budget?”
通常第二轮打磨出来的方案,会比直接接受第一组目标值更适合真实运维。
用历史事故给 slo-implementation skill 做压力测试
改进 slo-implementation skill 输出质量的最好方法之一,就是拿历史事故来对照它建议的 SLI 和告警。你可以问:
- 如果当时用了这个 SLO,是否能发现问题?
- 它会不会把无害故障算得太重?
- burn-rate 策略会不会过早或过晚触发 paging?
这个验证步骤能把“写得很漂亮的文档”,变成团队真正能跑起来的机制。
一次只做一个服务
如果你觉得输出过于泛化,通常不是 skill 不行,而是范围设得太大。这个 skill 最适合聚焦在单个服务或单条 user journey 上。大型系统应拆成多次分别处理,等模式稳定后,再做统一标准化。
