如果关键服务在产品发布前突然宕机,会发生什么?如果一个团队失去了对某项核心资源的访问权限,又会怎样?在相互连接的系统里,一次变更就可能触发连锁反应。WhatIf Graph 想做的,就是让团队在真正动手之前,先把这些假设场景跑一遍。
![]()
这个项目由 Tanya Garg 在 Graph Hacks 2026(WeMakeDevs × FalkorDB)上提交,核心是一句话:帮用户探索假设场景、理解潜在的下游影响,并看清每个结果背后的关系链。
问题出在“孤立”二字
现代应用、业务和项目都依赖相互连接的组件。支付服务可能依赖认证服务,一次发布可能依赖多个任务完成,一个团队可能依赖共享资源。当某个组件发生变化,后果会沿着连接扩散到多个环节。
传统仪表盘通常只展示单个指标、日志或状态指示。但要回答“为什么受影响”以及“还有哪些相连组件会被波及”,需要跨关系做推理。图数据库的价值就在这里:实体是节点,依赖是关系,一次变更如何传播,可以直接在图上查出来。
它怎么跑起来
WhatIf Graph 把服务、团队、资源、任务都建模成相互连接的实体。用户提出一个假设场景,系统用图关系去排查潜在后果。比如“支付服务宕机了会怎样”,答案不该只是“服务不可用”,而要指出相连组件、展示支撑分析的依赖路径,并帮用户判断哪些区域需要关注。
整个流程分五步:先把系统建模成节点和关系;接收用户输入的假设问题;用 Cypher 查询检索相关依赖并遍历图,遍历深度要受控,保证结果可读;分析返回路径,判断在建模假设下哪些组件可能受影响;最后输出受影响组件、证据路径、假设条件和可能的缓解步骤。
项目强调一个原则:证据先于解释。图关系负责确立潜在影响,AI 模型只负责用自然语言把发现讲清楚。如果图里信息不够,系统应该说“不够”,而不是编造一条依赖。
素材里给了一段示意查询:从某个服务节点出发,沿 DEPENDS_ON 关系向外遍历 1 到 5 跳,返回路径并限制 100 条。这里有个前提——关系方向是“源服务指向依赖它的组件”,如果实际 schema 方向相反,遍历也要反过来。这段查询只是起点,不代表返回的每个节点都会真的故障,真实影响分析还要考虑依赖语义、可选关系、冗余等规则。
别把基线图改坏了
一个重要的设计考量是:假设场景不能意外改动基线系统模型。用户问“某服务挂了会怎样”,系统应该分析这个假设状态,而不是永久改掉原始依赖图。更安全的做法是让基线图在模拟期间保持只读,把假设变更单独表示,再对比基线结果和场景结果。这样既保住了可重复性,也更容易解释两次分析之间到底变了什么。
项目也提醒,只读查询本身并不能模拟所有类型的状态变化,更复杂的场景可能需要单独的场景模型或临时内存表示,具体实现要在运行中的应用里验证。
这套思路的价值与边界
图驱动的场景分析带来几个实际好处:依赖可见,不再只看孤立记录;多跳排查,能看到超出直接依赖的潜在影响;解释有据,结论能追溯到支撑它的关系;实验更安全,探索假设变更而不误改基线图;决策更有依据,用识别出的依赖和假设指导下一步调查。
但结果质量仍取决于底层图的完整性和准确性。缺一条关系,就可能漏掉一个影响;建模出的依赖,也不总意味着必然故障。所以对假设和局限保持透明是必须的。
建设过程中也踩了不少坑:schema 要清晰表达依赖,遍历方向不能搞反,假设场景要和基线状态分离,AI 生成的解释必须和图返回的证据一致。这些考量最终指向一个结论——当 AI 能解释结构化数据里的证据,而不是靠没有支撑的猜测,它才真正有用。
后续可以探索的方向包括:多假设场景对比、基于图完整度和证据质量的置信度指标、依赖关键性与风险评分、多跳影响路径的可视化高亮、记录每条解释由哪些图证据支撑的审计轨迹,以及面向大图和复杂依赖结构的更稳健测试。这些都是潜在下一步,不是已实现功能的声明。
回到最初的问题:能不能在做决定之前,就理解它可能带来的后果?WhatIf Graph 给出的答案是——先看清一次变更会影响什么,并且能解释为什么。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.