资深工程师分享利用抽象语法树和Gemini快速理解代码库的实战经验,降低onboarding成本
交互式 D3.js 地图与免手持 TTS
我是 Tara,一名高级软件工程师兼顾问。这些年来,我辗转参与过许多不同的代码库。
每当加入一个新项目时,我都会发现完全相同的问题:新工程师往往需要 3 到 6 个月,才能真正理解一个复杂系统是如何组织和连接起来的。Copilot 和 Cursor 等 AI 工具非常擅长帮助我们更快地编写代码,但开发者仍然要花费近 50% 的时间阅读和浏览代码。
始终没有人在解决代码理解这一层的问题。因此,我决定亲自构建一款工具。
我非常激动地向大家分享这段时间一直在开发的产品:AuraCode(欢迎前往在线交互式 Demo 体验!)
AuraCode 是一个神经代码 Agent,可以将杂乱无章、缺少文档的代码仓库转化为交互式可视化地图,并提供具备上下文感知能力的对话功能。
以下是我目前已经构建的主要功能:
交互式架构画布 🗺️:粘贴一个 GitHub URL,它便会生成一棵精美且可交互的 D3.js 径向树,用来展示组件之间的关系和系统结构。
交互式架构画布 🗺️:粘贴一个 GitHub URL,它便会生成一棵精美且可交互的 D3.js 径向树,用来展示组件之间的关系和系统结构。
上下文对话 + Text-to-Speech 🗣️:你可以提出诸如“如果我修改这个 auth utility,哪些地方会出问题?”之类的问题,并获得以实际代码结构为依据的回答。我还将输出接入了 ElevenLabs TTS 引擎,因此你可以一边查看代码,一边让它免手持地为你朗读整个流程。
上下文对话 + Text-to-Speech 🗣️:你可以提出诸如“如果我修改这个 auth utility,哪些地方会出问题?”之类的问题,并获得以实际代码结构为依据的回答。我还将输出接入了 ElevenLabs TTS 引擎,因此你可以一边查看代码,一边让它免手持地为你朗读整个流程。
智能入职引导 ✅:告别已经过时的 setup.md 文件。AuraCode 会根据扫描到的代码库架构,自动生成专门适配该项目的结构化入职检查清单。
智能入职引导 ✅:告别已经过时的 setup.md 文件。AuraCode 会根据扫描到的代码库架构,自动生成专门适配该项目的结构化入职检查清单。
代码审查摘要 🚀:将它指向一个 PR,它就会进行趋势分析,并根据代码差异生成一份审查摘要。
代码审查摘要 🚀:将它指向一个 PR,它就会进行趋势分析,并根据代码差异生成一份审查摘要。
构建这款工具时,需要在上下文窗口与检索准确性之间取得平衡。以下是我的解决思路:
将代码视为“扁平文本”,会丢失所有重要的结构关系,例如调用图、依赖链等。为了解决这个问题,AuraCode 会根据代码仓库的规模采用两种不同的方法:
对于中小型代码仓库:我会将抽象语法树(AST)直接注入模型的上下文窗口。这样可以保留代码中的架构模式,让 AI 真正理解各部分代码之间是如何连接的。
对于大型 monorepo:我会使用一种自己称为 Lean RAG 的方法。它是一个轻量级检索层,会在注入上下文之前,有选择地找出结构上最相关的节点。这样既能保持较高的准确性,又不会突破 token 限制。
AuraCode 目前正处于发布前阶段。由于整个项目完全由我自行出资,而 LLM 的 token 成本会随着使用量迅速增长,因此我目前只向候补名单中的前 50 名开发者开放完整的私有代码仓库访问权限。
不过,网站上的 Demo 已经完全上线,并向所有人公开!
我之所以构建这款工具,是因为每次受聘为大型遗留代码库提供咨询服务时,我都希望当时已经有这样一款工具。
我非常期待听到大家的想法!你通常会如何快速上手规模庞大且没有文档的代码库?
如果你对技术栈、Lean RAG 方法或 D3 可视化有任何问题,请告诉我。非常期待在评论区和大家交流!👇
如需采取进一步行动,你可以考虑屏蔽此人和/或举报滥用行为。