写了篇小文探讨: AI 编程 Agent 是如何通过 AST 分析实现安全的跨文件重构的?

5 月 21 日
 fds2003

各位 V 友,最近折腾 AI 自动编程 Agent 时发现,普通的 AI 补全遇到接口签名改动这种需要连带修改十几个文件的情况极易翻车。

调研了一下 Google 团队的 Antigravity ,整理了一篇关于它在后台如何进行 AST 依赖树解析、批量 surgical replace ,以及在隔离沙箱里跑编译进行自纠错闭环的技术架构解析。

感觉这比传统的正则替换靠谱得多。文章链接如下,感兴趣的 V 友可以看看: https://aidevhub.net/blog/google-antigravity-multi-file-refactoring

1037 次点击
所在节点    分享创造
4 条回复
hcy
5 月 21 日
https://aider.chat/2023/10/22/repomap.html
shyrock2026
5 月 21 日
读完了。但是没看出来比正则替换好在哪里。。。
arcsin1
5 月 21 日
我也觉得没看出来比正则替换好在哪里。。。
fds2003
5 月 22 日
确实,文章里这块一笔带过了。我自己实操下来,正则在应对跨文件重构时极易翻车,AST 主要降维打击在三个痛点:

解决别名 (Aliasing) 和作用域:如果在别的工程用 import { fetchData as getUser } 引入,或者有同名局部变量,正则直接抓瞎,而 AST 能精准顺藤摸瓜找到真实引用。
复杂的结构性重构:比如把 getUser(id, token) 升级为传入对象 getUser({ id, token, cache: true })。当参数跨越多行或有嵌套时,用正则捕获并重组简直是噩梦,但对 AST 来说只需转换一个节点类型。
绝对零误伤:纯文本正则分不清代码里到底是函数调用、注释还是字符串,极易误改。AST 结合编译器的类型检查,能确保 0 误杀。
感谢反馈!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1214379

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX