基于 graphify 构建,该工具受 Andrej Karpathy 的 LLM Wiki 概念 启发——与其每次查询时从头重新发现知识,不如让 LLM 构建一个持久、结构化的知识图谱,随着时间推移而不断丰富。Graphify 可将任意文件夹中的文件转化为一个可查询的图,包含社区、连接和置信度评分。此分支将其指向 Rootly API。
连接 Rootly API,收集指定时间窗口内的事件、告警、团队和服务目录,将其导出到本地语料库,然后将该语料库转化为可查询的知识图谱。使用 graphify rootly 进行收集,在 Claude Code 或 Codex 中使用 /graphify 进行更深层次的语义分析。
全新安装(Graphify + Rootly 导入器):
pip install "graphifyy[rootly]"
graphify install # Claude Code
graphify install --platform codex # Codex
为现有 Graphify 安装添加 Rootly 导入器:
pip install "graphifyy[rootly]" --upgrade
在项目根目录创建 .env 文件:
ROOTLY_API_KEY=rootly_...
获取事件、触发的告警和团队。使用严重级别颜色、告警过滤器和团队/服务层构建初始图谱。
graphify rootly
非交互式:
graphify rootly --api-key-env ROOTLY_API_KEY --days 30 --mode standard
输出写入 graphify-rootly-data/graphify-out/:
graph.html — 在浏览器中打开以探索图谱GRAPH_REPORT.md — 神节点、社区、建议问题graph.json — 用于查询的原始图谱在事件语料库上并行运行子代理,推断跨事件主题、重复模式和根因关系。
Claude Code — 在聊天中输入:
/graphify graphify-rootly-data --mode deep
Codex — 在聊天中输入:
run graphify on graphify-rootly-data --mode deep
| 资源 | 内容 | 过滤器 |
|---|---|---|
| 事件 | 标题、严重级别、状态、时间线、服务、团队、描述 | 日期窗口(--days) |
| 告警 | 摘要、状态、来源、噪音标志、时间线 | 仅已触发(关联到某个事件) |
一旦在浏览器中打开 graph.html:
rootly-graphify 包含 Rootly 收集阶段和图谱分析阶段。
确定性 Rootly 收集。 验证 API 密钥,选择 7、30 或 90 天窗口,获取 started_at 落在该窗口内的事件,通过每个事件下的子资源获取其触发的告警,获取所有团队数据,并将所有内容写入本地语料库目录。
初始 Rootly 图谱构建。 内置的 Rootly 运行器为事件、告警、团队和服务创建节点,用类型化边(triggered、affects、owns、responded_by、targets)将它们连接起来,对图进行聚类,然后写入 graph.html、GRAPH_REPORT.md 和 graph.json。HTML 包含严重级别颜色编码、团队/服务层和告警过滤器。
可选深度丰富。 运行 /graphify ./graphify-rootly-data --mode deep 可在 markdown 文件上派发并行子代理,推断跨事件主题、推理和概念连接。
使用当前顶级输出。 语义丰富后,打开 graphify-out/graph.html。当前通用导出器已直接包含维护的过滤器和可视化,因此无需单独的重新应用步骤。
聚类基于图谱拓扑结构——无需嵌入。 Leiden 算法通过边密度发现社区。语义相似性边(semantically_similar_to,标记为 INFERRED)直接影响社区检测。无需单独的嵌入步骤或向量数据库。
每个关系都标记为 EXTRACTED(直接从源中找到)、INFERRED(合理推断,带有置信度评分)或 AMBIGUOUS(需要审查)。
神节点 — 度最高的事件或服务(所有内容都通过它们连接)
令人惊讶的连接 — 按综合评分排序的跨事件链接,每条带有通俗易懂的解释
建议问题 — 4–5 个该图谱特别适合回答的关于你事件历史的问题
置信度评分 — 每条 INFERRED 边都有一个 confidence_score(0.0–1.0)。EXTRACTED 边始终为 1.0。
语义相似性边 — 没有结构连接的概念性跨事件链接。两个由相同根模式引起但共享不同服务或团队的事件。
Token 效率 — 首次运行提取并构建图谱(消耗 token)。随后的每次查询读取紧凑的图谱而非原始 markdown——这是节省成本的地方。SHA256 缓存确保重新运行时仅重新处理更改过的文件。
# --- Rootly 工作流(终端) ---
graphify rootly # 交互式 Rootly 导入流程
graphify rootly --days 30 # 收集最近 30 天的事件
graphify rootly --api-key-env ROOTLY_API_KEY # 从环境变量非交互式查找密钥
graphify rootly --output ./my-rootly-corpus # 将语料库写入自定义文件夹
# --- 语义丰富(代理:Claude Code / Codex) ---
/graphify ./graphify-rootly-data # 分析 Rootly 语料库
/graphify ./graphify-rootly-data --mode deep # 更激进的 INFERRED 边
/graphify ./graphify-rootly-data --update # 仅重新提取更改过的文件
# --- 查询图谱(代理) ---
/graphify query "which services have the most recurring incidents?"
/graphify query "what patterns connect the SEV1 incidents?"
/graphify path "payment-api" "auth-service"
/graphify explain "Incident: Database connection pool exhausted"
# --- 可选导出 ---
/graphify ./graphify-rootly-data --wiki # 每个社区的可供代理抓取的维基
/graphify ./graphify-rootly-data --no-viz # 跳过 HTML,仅报告 + JSON
/graphify ./graphify-rootly-data --obsidian # Obsidian 仓库
# --- 始终开启的助手指令 ---
graphify claude install # CLAUDE.md + PreToolUse 钩子(Claude Code)
graphify codex install # AGENTS.md(Codex)
# 获取新数据并重新构建
graphify rootly --api-key-env ROOTLY_API_KEY --days 30 --mode standard
# 使用语义步骤重新丰富(Claude Code)
/graphify graphify-rootly-data --update
| 模式 | 内容 | 图谱为何有帮助 |
|---|
| 服务事件热力图 | 哪些服务出了严重问题及其严重程度。节点大小 = 事件数量,颜色 = 最严重级别。 | 聚合经常一起出故障的服务,揭示隐藏的基础设施依赖关系。 |
| 团队值班与升级地图 | 一目了然地展示谁在所有调度和升级策略中负责什么。 | 发现单点故障——同一个人在 3 个团队中负责 4 个调度表——以及覆盖缺口。 |
| 告警到事件漏斗 | 哪些告警源真正产生了事件,哪些纯属噪音。 | 一个发出 200 条告警但 0 个事件的告警源,通过节点大小立即显现。 |
| 事件→行动项跟进 | 我们真的修复了出问题的部分吗?实线 = 已完成,虚线 = 未关闭。 | 围绕某个团队或服务的未关闭行动项集群,暴露出系统性的跟进问题。 |
| 跨服务故障相关性 | 哪些服务在相同时间窗口内同时发生故障。 | 社区检测能找到共享命运的群组,这些群组很可能依赖相同的基础设施。 |
| 团队 |
| 名称、slug、服务所有权 |
| 账户中的所有团队 |