一次看起来干干净净的重构,可能同时弄坏32个集成。核心测试全过,代码检查全绿,一切看起来都没问题——但问题就藏在看不见的地方。
2026年10月16日,Home Assistant 合并了 PR #186863。这次重构把传感器实体类移到了单独的模块里。核心测试通过,linting 也是绿的。但有一个隐患:32个自定义集成依赖了这次重构后不再暴露的内部符号。当这个改动到达用户手里,这些集成可能直接加载失败。
这是 Hyrum 定律的典型案例:只要依赖你系统的人足够多,就一定有人依赖你从未打算支持的行为。而随着 AI 编码代理写代码、重构代码的速度越来越快,提前抓住这类问题正变得越来越重要。
ShadowGraph 是什么
ShadowGraph 为 WeMakeDevs × FalkorDB Graph Hacks 黑客松而建,帮开发者在合并代码之前就理解一次改动的影响。它不只检查核心仓库,而是把依赖关系映射到 Home Assistant 及其外部自定义集成上。
它的工作方式分几步:
- 构建依赖图:用 Python AST 分析找出哪些集成导入了哪些符号。
- 模拟改动:创建一份隔离的图副本,检查某个符号被移除或修改后什么会坏。
- 识别爆炸半径:区分哪些集成在导入时就失败,哪些可能在运行时才失败。
- 用 AI 代理验证:调查潜在的破坏点,并把发现与静态分析结果对比。
- 给出迁移修复建议:生成草稿补丁,供维护者审阅和应用。
Home Assistant 的数据集包含 4,814个集成和 562,444条导入关系。这个体量下,靠人眼盯依赖几乎不可能。
为什么选 FalkorDB
FalkorDB 让 ShadowGraph 能把依赖表示成图,并高效探索一次改动如何影响下游项目。它的图复制能力还支持隔离模拟,不用改动正在使用的图。
这已经超出了传统 CI 的范畴。传统 CI 告诉你自己的测试有没有过,ShadowGraph 问的是另一个问题:你的测试过了,但依赖你代码的所有人会坏掉什么?
它还把工具通过 MCP 暴露出来,让 Claude Code、Cursor、Codex 这类 AI 编码代理在动手改代码之前,先检查一次改动的潜在影响。
ShadowGraph 以 MIT 许可证开源,GitHub 地址是 github.com/prem-programs/shadowGraph。它面向 Graph Hacks 的三个赛道而建:连接数据、代理记忆与协调、公司知识。目标很简单:在用户发现之前,先抓住破坏性改动。
当 AI 代理开始大规模重构代码,测试通过已经不够了。真正的问题是:你的测试过了,但依赖你代码的人会坏掉什么?
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
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.