关于 zephyr-grafana-links
zephyr-grafana-links 是一项用于在烘焙日志中创建或更新 Grafana 仪表板链接的技能。它分别提供整段烘焙和批量发酵视图,并依据记录的事件时间设定窗口。
主要功能
- 01生成整体和批量发酵链接
- 02根据烘焙事件设置链接时间窗
- 03将日志本地时间转换为 UTC
- 04为已完成的烘焙固定结束时间
- 05保留 Grafana 注释代码块
适用场景
- 01为烘焙日志添加仪表板链接
- 02烘焙结束后更新链接
- 03缺少时间来源时标记为 TBD
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ gkwa/ volcanicviper --skill zephyr-grafana-links安装后在 Claude Code 中输入/zephyr-grafana-links确认已加载。
附带文件tile.json
详细介绍
概述
Grafana 链接为烘焙日志提供了仪表板的两个现成视图:一个涵盖整个烘焙过程,另一个涵盖主体发酵。
此技能刻意保持独立,因此可以替换为不同的链接实现,而无需修改 [[zephyr]] 技能。
文件名解析、event_time 标签、Starter peak duration 块和参数优先级由 [[zephyr]] 技能负责——此技能使用这些规则,但不会重复说明。
构建链接前,请先阅读 [[zephyr]] 技能,了解烘焙日志命名约定和参数默认值。
注释是完全不同的事项,由 [[grafana-bake-annotation]] 技能负责。请参阅下方的“章节归属”。
参数
- 仪表板基础 URL —
https://taylormonacelli1.grafana.net/d/tatmmtv/new-dashboard - 固定查询参数 —
orgId=1、timezone=browser、refresh=30m - 烘焙日志目录 — 根据 [[zephyr]] 技能的“参数”章节解析
触发条件
只有在收到明确请求时才构建或刷新链接。
切勿仅仅因为烘焙日志已打开,就自动重新生成链接。
会触发此组件的请求:
- “更新此日志中的 Grafana 链接”
- “将 Grafana 链接添加到烘焙日志 7-20”
- “烘焙结束了,修复 Grafana 链接”
- “将 zephyr 应用于烘焙日志 7-20”——[[zephyr]] 技能中定义的组合请求
不会触发此组件的请求:
- “应用 Grafana 注释”——这是 [[grafana-bake-annotation]] 技能的职责
- “路由此日志中的 Zephyr 条目”——这是 [[zephyr-routing]] 技能的职责
- 为其他目的读取烘焙日志
设置时间窗口
时间窗口应在烘焙过程前后留出余量,而不是紧贴烘焙过程。
每个链接都从各自起始事件前一小时开始,并在烘焙结束后约一小时结束。
这段余量可避免图表边缘截断轨迹,让前期准备和收尾阶段都清晰可见。
选择结束时间
to 参数取决于烘焙是否仍在进行。
烘焙进行期间,使用 to=now,这样图表会随着新读数不断延伸,并始终显示截至当前时刻的数据。
烘焙结束后,to=now 就不合适了:时间窗口会在最后一个读数后持续增长,导致烘焙数据在左侧压缩成越来越窄的一小段,而图表其余部分则被空白时间填满。
烘焙结束后,将 to 固定为烘焙结束约一小时后的时间戳。
查看 ## bake log 部分中是否存在烘焙结束条目,以判断适用哪种情况——面包出炉,或最后一条面包的烘焙结束。
此事件的注释标签为 bake_done;日志中也可能将其表述为“出炉”“烘焙完成”或“最后一条面包”。
如果不存在烘焙结束条目,说明烘焙仍在进行——两个链接都使用 to=now。
如果存在,则取其事件时间,加上一小时,转换为 UTC,并将此固定时间戳用作两个链接的 to 值。
如果只记录了最后一条面包开始烘焙的时间,没有记录结束时间,则将烘焙结束时间视为开始后 45 分钟,再额外加上一小时的余量。
两个链接始终使用相同的 to 值。
选择开始时间
写入两个链接,每个链接都有自己的 from 值。
| 链接 | 提前一小时开始的时间点 | 来源 |
|---|---|---|
| 整体 | 酵种喂养时间 | ## Starter peak duration 块中的 fed 字段 |
| 主体发酵 | 主体发酵开始时间 | 加入面粉的条目的事件时间 |
主体发酵的起始时间是 mix 事件——主体发酵从面团混合成形时开始,而不是从 long_bulk_start 开始。
如果缺少必需来源,或其值仍为 [TBD],则用 [TBD] 替代对应 URL,不要猜测时间。
某个来源缺失只影响对应的链接;另一个链接仍应照常写入。
时区
Bake 日志时间是本地墙上时钟时间。
Grafana 的 from 和 to 使用 UTC,因此写入前要进行转换——太平洋夏令时期间,这意味着减去 7 小时。
使用带毫秒且以 Z 结尾的 ISO 8601 格式,与仪表板自身的格式一致:2026-07-21T02:02:47.000Z。
字面值 now 不进行转换。
章节归属
链接位于 Bake 日志 ## grafana 章节顶部,格式必须完全如下:
overall
<URL or [TBD]>
bulk ferment
<URL or [TBD]>
每次运行时都替换整个链接块,无论其中当前是什么内容——将其视为重新生成的输出,而不是要修补的文本。
## grafana 章节中的其他所有内容都归 [[grafana-bake-annotation]] 技能所有,尤其是围栏代码块中的 annotate-grafana.py 命令块。
更新链接时,绝不要删除、重新排序或编辑这些代码块。
不要假设该章节已有占位符或任何特定内容——它可能为空、只有链接、只有注释,或两者都有。
刷新已完成的 Bake
Bake 进行期间写入的链接带有 to=now,Bake 一结束就会过期。
如果结束时日志中的链接仍写着 to=now,请用固定的结束时间重写两个链接。
对于此组件,这是最常见的情况:它通常每次 Bake 运行两次,一次在早期,一次在 Bake 完成后。
提交
更新链接后,提交 Bake 日志。