@nash_su: https://x.com/nash_su/status/2055541927508881654

X AI KOLs Timeline 工具

摘要

本文详细介绍了Claude Code在大型代码库中的最佳实践,强调工具链(CLAUDE.md、钩子、技能、插件、LSP集成、MCP服务器和子代理)比模型本身更重要,并建议团队优先投资代码库设置以获得更好效果。

https://t.co/CGERRFlISg
查看原文
查看缓存全文

缓存时间: 2026/05/16 13:19

Claude Code 在大型代码库中的运作方式:最佳实践与入门指南

Claude Code 已在数百万行规模的单体仓库、数十年历史的遗留系统、横跨数十个仓库的分布式架构,以及拥有数千名开发者的组织中投入生产。这些环境带来了小型代码库所没有的挑战——无论是每个子目录中不同的构建命令,还是散落在文件夹中、没有共享根目录的遗留代码。

本文涵盖了我们观察到的、在规模化采用 Claude Code 时取得成功的模式。我们所说的“大型代码库“涵盖多种部署场景:数百万行的单体仓库、历经数十年构建的遗留系统、跨独立仓库的数十个微服务,或以上任意组合。这还包括团队通常不认为与 AI 编码工具相关的语言,如 C、C++、C#、Java、PHP。(在这些情况下,Claude Code 的表现通常超出团队预期,尤其是在最近的模型版本中。)虽然每个大型代码库的部署都受其特定版本控制、团队结构和积累的惯例影响,但这里的模式具有普适性,是考虑采用 Claude Code 的团队的良好起点。

Claude Code 如何导航大型代码库

Claude Code 导航代码库的方式与软件工程师相同:它遍历文件系统、读取文件、使用 grep 精确查找所需内容,并跨代码库追踪引用。它在开发者的本地机器上运行,无需构建、维护或上传代码库索引到服务器

基于 RAG 的 AI 编码工具通过嵌入整个代码库并在查询时检索相关片段来工作。在大型规模下,这些系统可能失败,因为嵌入管道无法跟上活跃工程团队的步伐。当开发者查询索引时,它反映的是数周、数天甚至数小时前存在的代码库状态。检索结果可能返回团队两周前重命名的函数,或引用上个冲刺中删除的模块,且没有任何迹象表明它们已过时。

代理式搜索避免了这些失败模式。没有嵌入管道或集中式索引需要维护,即使数千名工程师提交新代码。每个开发者的实例都基于实时代码库工作。

但这种做法有一个权衡:当 Claude 有足够的起始上下文知道去哪里查找时,它表现最佳。这意味着 Claude 的导航质量受代码库设置方式的影响——通过 CLAUDE.md 文件和技能来分层提供上下文。如果你要求它在十亿行代码库中查找所有模糊模式的实例,你会在工作开始前就触及上下文窗口限制。投资于代码库设置的团队会看到更好的结果

工具链与模型同样重要

关于 Claude Code 最常见的误解之一是,其能力完全由所使用的模型决定。团队关注模型的基准测试及其在测试任务上的表现。实际上,围绕模型构建的生态系统——即工具链——对 Claude Code 性能的影响比模型本身更大

工具链由五个扩展点构建——CLAUDE.md 文件、钩子、技能、插件和 MCP 服务器——每个都有不同功能。团队构建它们的顺序很重要,因为每一层都建立在前一层之上。另外两个能力——LSP 集成和子代理——完善了整个设置。以下是每个组件和能力的说明:

CLAUDE.md 文件:首要步骤

这些是 Claude 在每个会话开始时自动读取的上下文文件:根文件用于全局概览,子目录文件用于局部约定。它们为 Claude 提供做好任何事情所需的代码库知识。由于它们无论任务如何都会在每个会话中加载,保持它们聚焦于广泛适用的内容,可以防止它们成为性能拖累。

钩子:使设置自我改进

大多数团队将钩子视为防止 Claude 做错事的脚本,但它们的更有价值用途是持续改进。停止钩子可以反思会话中发生的事情,并在上下文仍新鲜时提出 CLAUDE.md 更新。启动钩子可以动态加载团队特定的上下文,使每个开发者无需手动配置就能获得其模块的正确设置。对于 linting 和格式化等自动化检查,钩子确定性地执行规则,比依赖 Claude 记住指令产生更一致的结果。

技能:按需提供专业知识,不膨胀每个会话

在包含数十种任务类型的大型代码库中,并非所有专业知识都需要在每个会话中出现。技能通过渐进式披露解决这个问题,将专门的工作流和领域知识卸载,仅在任务需要时加载。例如,安全审查技能在 Claude 评估代码漏洞时加载,而文档处理技能在代码变更需要更新文档时加载。

技能还可以限定到特定路径,因此仅在代码库的相关部分激活。拥有支付服务的团队可以将部署技能绑定到该目录,这样当有人在单体仓库的其他地方工作时,它永远不会自动加载。

插件:分发有效的内容

大型代码库的一个挑战是,好的设置可能停留在小圈子内。插件将技能、钩子和 MCP 配置打包成一个可安装的包,因此当新工程师第一天安装该插件时,他们将立即拥有与长期使用 Claude 的人相同的上下文和能力。插件更新可以通过托管市场在整个组织中分发。

例如,我们合作的一家大型零售组织构建了一个技能,将 Claude 连接到他们的内部分析平台,使业务分析师无需离开工作流即可拉取性能数据。他们在向业务部门广泛推广之前,将其作为插件分发。

语言服务器协议(LSP)集成:赋予 Claude 与 IDE 相同的导航能力

大多数大型代码库的 IDE 已经运行着 LSP,支持“转到定义“和“查找所有引用“。将这一能力暴露给 Claude,使其获得符号级别的精度:它可以追踪函数调用到其定义,跨文件追踪引用,并区分不同语言中同名的函数。没有它,Claude 会进行文本模式匹配,可能定位到错误的符号。我们合作的一家企业软件公司在 Claude Code 推广之前,就在全组织部署了 LSP 集成,专门用于使 C 和 C++ 导航在大型规模下可靠。对于多语言代码库,这是最高价值的投资之一。

MCP 服务器:扩展一切

MCP 服务器是 Claude 连接到内部工具、数据源和 API 的方式,这些是它无法直接访问的。最成熟的团队构建了 MCP 服务器,将结构化搜索作为 Claude 可以直接调用的工具暴露出来。其他团队将 Claude 连接到内部文档、工单系统或分析平台。

子代理:将探索与编辑分离

子代理是一个独立的 Claude 实例,拥有自己的上下文窗口,它接受任务、完成工作,并仅将最终结果返回给父代理。一旦工具链就位,一些团队会启动一个只读子代理来映射代码库结构,而主代理则专注于编辑任务。

结论与主张

  • 投资于代码库设置CLAUDE.md 文件、钩子和技能的正确配置是成功的关键。团队应优先构建这些基础层。

  • 工具链比模型更重要:不要只关注模型基准测试。围绕模型构建的生态系统——包括 LSP 集成、插件和 MCP 服务器——对实际性能的影响更大。

  • 渐进式采用:从 CLAUDE.md 文件开始,然后添加钩子,再引入技能,最后扩展到插件和 MCP 服务器。每一层都建立在前一层之上。

  • 避免 RAG 陷阱:对于大型、活跃的代码库,基于嵌入的检索系统会因过时而失败。代理式搜索从实时代码库工作,避免了这些问题。

  • 利用 LSP 集成:对于多语言代码库,这是最高价值的投资之一。它使 Claude 能够像开发者一样精确导航代码。

  • 使用子代理进行探索:将探索任务(如映射代码库结构)委托给子代理,可以释放主代理的上下文窗口用于实际编辑工作。

  • 通过插件分发最佳实践:将成功的设置打包为插件,使整个组织都能受益,避免好的做法停留在小圈子内。

最终,Claude Code 在大型代码库中的成功取决于团队如何构建其工具链。那些投资于正确设置——从 CLAUDE.md 文件到 LSP 集成——的团队,将看到显著更好的结果。模型本身很重要,但围绕它构建的生态系统才是决定性的因素。

本文是使用 WisMe.ai 基于 Claude 官方博客文章的中文改写。

原文地址:https://claude.com/blog/how-claude-code-works-in-large-codebases-best-practices-and-where-to-start

相似文章

@yaohui12138: 已看完,整理一些精华分享给大家: 他在这场分享里主要拆解了一个被90%用户忽略的核心机制,也就是:CLAUDE.md的上下文注入系统 这套系统分三个层级: 企业级:组织强制规则,任何个人设置无法排除 项目级:团队共享的代码规范和工作流 本…

X AI KOLs Timeline

The article shares key insights from a workshop by Boris on using CLAUDE.md for context injection in Claude, highlighting three usage levels, specific commands like /loop, and plan mode to improve developer workflows.