我教 AI 像资深开发者一样思考的那天 - 利用代码知识图谱提升 AI 代码理解能力
Namanyay Goel 的博客 ( )
我教 AI 像资深开发者一样思考的那天
2025年4月7日 Namanyay Goel
只有我这么觉得吗,我们现在用的那些代码生成 AI 从根本上就是坏的?
几个月来,我看着开发者们称赞 AI 代码工具,却默默地收拾着它们留下的烂摊子,不敢承认他们实际上需要多少“照看”。
我意识到 AI 集成开发环境 (IDE) 实际上并不_理解_代码库 —— 它们只是具有出色营销能力的高级自动补全工具。 皇帝的新衣,我已经厌倦了假装没看见。
在经历了两年多的挫败感,眼睁睁看着我的 AI 助手不断“忘记”文件在哪里、创建重复文件、使用完全不正确的模式之后,我终于构建出了大型 AI 公司无法(或不愿)构建的东西。
我决定弄清楚:如果我能让 AI _真正_理解我的代码库是如何工作的,会怎么样?
理解的错觉
去年 12 月,我忍无可忍了。 我那所谓“智能”的 AI 助手一直生成不遵循我们既定模式的组件。 当我指出这一点时,它道歉了 —— 然后在十分钟后继续犯完全相同的错误。
这并非个例,而是常态。
问题变得清晰:这些 AI 工具根本不具备将代码库视为相互连接的系统的实际理解能力。 它们在小范围的上下文窗口中运行,并且在维护项目的心智模型方面惨败。
特别令人沮丧的是,大型 AI 公司的营销暗示他们的工具“理解”你的代码。 它们并没有,它们只是在进行有根据的猜测 —— 并且在任何稍微复杂的项目中,这种差异都会变得非常明显。
关于代码的普遍真理
在思考这个问题时,我试图理解支配我们组织代码方式的基本原则。 我意识到的一些“普遍真理”:
- 相关文件分组在文件夹中,这在语义上表示目的。
- 同级文件夹反映了概念上的相似性。
- 子文件夹结构表示层次关系和依赖关系。
- 并非每一行代码都同样“相关”。 代码库包含大量的样板代码和库代码,这些代码虽然必要,但没有定义项目的独特特征。
这些见解对于经验丰富的开发者来说显而易见,但它们代表了 AI 助手完全错失的关键语义知识。
突破
解决方案出现在凌晨 2 点的编码过程中,当时我正在处理另一个错误生成的文件:如果我们把代码库视为分层知识图谱而不是扁平文件会怎么样?
人类开发者不会记住整个代码库。 我们构建组件之间如何关联的心智模型。 我们理解某些代码是样板代码,而其他部分是关键的业务逻辑。 我们根据想要完成的任务,自然地通过不同的“镜头”查看代码。
我开发了一种我称之为“排序递归摘要”(Ranked Recursive Summarization, RRS)的算法,该算法从项目目录树的叶子开始,并使用 LLMs 递归地向上构建理解:
# 伪代码:
def ranked_recursive_summarization(folder):
if is_file(folder):
chunks = split_into_chunks(read_file(folder))
ranked_chunks = rank_by_importance(chunks)
return summarize(ranked_chunks)
summaries = []
for child in folder.children:
summary = RRS(child)
summaries.append(summary)
return summarize(summaries)
这效果惊人地好,但我很快意识到这还不够。 根据我试图处理的内容,RRS 遗漏了一些细节。 如果它有关于架构和数据模型的信息,它就会错过前端组件。 如果它过于关注用户界面 (UI),它就会错过描述数据流。
我不得不更深入地思考:是什么使代码的某个部分变得_重要_?
透镜化理解
我的第二个洞察力导致了真正具有变革性的技术:“棱镜排序递归摘要”(Prismatic Ranked Recursive Summarization, PRRS)。
PRRS 没有一个关于“重要性”的全局定义,而是通过多个概念镜头来分析代码:
# 伪代码:
def prismatic_rrs(folder, lenses=['architecture', 'data_flow', 'security']):
summaries = {}
for lens in lenses:
context = f"Analyze importance from {lens} perspective"
summaries[lens] = RRS(folder, context=context)
return summaries
结果是无可否认的。 AI 突然明白了:
- 文件应该逻辑上放置在哪里
- 应该遵循哪些模式
- 如何扩展现有抽象而不是创建新的抽象
- 何时重用代码与创建新的实现
老实说,这种方法并不是特别复杂或计算密集。 大型 AI 公司本可以从一开始就实现类似的东西。 但他们没有,因为它不符合他们以最低 token 成本获得结果的动机。
为什么这很重要
其影响远远超出了修复基本错误。 当 AI 真正理解你的代码库时:
- 技术债务通过“架构”镜头变得可见
- 安全漏洞自然地通过“安全”镜头浮出水面
- 初级开发者可以通过高级的视角来浏览复杂的项目
- 新团队成员的入职时间大大缩短
当然也有黑暗面。 随着 AI 越来越擅长理解代码库,某些类型的编程知识的价值会降低:主要将需求转化为代码而没有架构洞察力的中级程序员可能会发现自己越来越受到挤压。
我已经将这种方法打包到我的工具 Giga 中。 它已被世界各地的数百名开发者使用,他们感到不那么沮丧并且看到了生产力的提高。
实施
即使没有我的特定工具,你也可以提高 AI 助手对代码的理解:
- 创建最重要的目录和文件的手动摘要
- 要求 AI 进一步改进你的手动文档
- 创建并确保多个文档文件,每个文件都基于项目的不同“镜头”
- 根据需要将相关文件包含到 AI 的上下文中
这些方法不如专门构建的解决方案那样无缝,但与默认体验相比,它们会显着改善你的结果。
上下文是未来
我相信我们正处于 AI 理解像代码库这样的复杂系统的根本转变的开端。 下一代工具不仅会创建代码的 embeddings —— 它们还会像经验丰富的开发者一样,从多个角度构建丰富的心智模型。
那些拥抱这种方法的公司将超越那些仍然只关注 token 预测的公司。 并且那些学会利用这些复杂工具的开发者将拥有仅仅通过“prompt 工程”无法比拟的可持续优势。
未来属于那些将 AI 视为人类创造力的力量倍增器,而不是人类开发者的替代者的人。
而这个未来从现在开始。
你对 AI 代码助手有什么不满? 我很乐意听到你的故事,地址是 athi@nmn.gl
附:我的 AI 改进了生产中的代码生成,并帮助你更快地交付产品。 受到世界各地开发者和团队的喜爱。 查看 Giga AI。
嗨,我是 Namanyay —— 从 14 岁开始成为一名专业开发者,现在正在构建 AI 工具以增强人类潜力。
我写关于技术、创业和工作未来的文章。在 X 上找到我。
← SF vs NYC as a Solo AI Founder
×
通过 AI 成为 10 倍速开发者
编程世界正在发生变化,你跟上了吗?
获取我的免费指南,并通过 AI 将生产力提高 10 倍。
订阅
我不发送垃圾邮件。 随时取消订阅。
关于 AI、创业和生活的思考,作者 Namanyay。
用 ❤️ 制作
© 版权所有 2010 – 2025