--- title: "大厂代码库几百万行,Claude Code怎么跑起来的?Anthropic首次公开全套打法" source_url: https://mp.weixin.qq.com/s/w38wMfQpOmcIJ53g5EfoVQ source_platform: wechat author: "AI寒武纪" publish_date: 2026-05-19 created: 2026-05-19 type: raw tags: [claude-code, anthropic, enterprise-deployment, harness, claude.md] review_value: ★★★★☆ review_confidence: ★★★★☆ sha256: 78a3b88773ef77c7871bdd979c7f84f3b64915670281e68acf1628e710778d6d --- --- # 大厂代码库几百万行,Claude Code怎么跑起来的?Anthropic首次公开全套打法 > 原文:https://claude.com/blog/how-claude-code-works-in-large-codebases-best-practices-and-where-to-start > 来源:AI寒武纪(微信),2026-05-19 ## Claude Code 如何理解与检索大型代码库 Claude Code正在被部署进数百万行代码的单体仓库、运行了数十年的遗留系统、跨几十个代码库的分布式架构,以及拥有数千名开发者的大型组织。 Anthropic刚刚发布了一篇面向企业规模部署的系列文章首篇,系统性地总结了这些场景下的最佳实践。 Claude Code的导航方式和一个软件工程师差不多:遍历文件系统、读取文件、用grep精确定位内容、跨代码库追踪引用。它在开发者本地机器上运行,不需要构建、维护或上传任何代码库索引。 这和RAG驱动的AI编程工具有本质区别。RAG的做法是对整个代码库做向量化嵌入,查询时再检索相关片段。在大规模场景下,这套机制容易失效,因为嵌入管道跟不上活跃工程团队的提交节奏。开发者查询时,索引反映的可能是几周前的代码,于是检索到了两周前已重命名的函数,或者上个冲刺已删除的模块,且没有任何过期提示。 Agent式搜索规避了这些问题。没有嵌入管道,也不需要维护中央索引,每个开发者的实例都直接基于当前代码库工作。 但这个方式有个代价:Claude需要足够的初始上下文才能知道去哪里找。这意味着代码库的组织方式,以及通过CLAUDE.md文件和技能(skills)叠加上下文的质量,直接影响Claude的导航效果。如果让Claude在十亿行代码库里找一个模糊的模式,还没开始工作就会撞上上下文窗口上限。在代码库配置上投入的团队能看到更好的结果。 ## Harness 和模型同样重要 对Claude Code最常见的误解是:它的能力完全由模型决定。很多团队盯着模型的基准测试分数,看它在测试任务上的表现。但实际上,围绕模型搭建的整个生态系统,也就是harness,对Claude Code表现的影响比模型本身更大。 harness由五个扩展点构成:CLAUDE.md文件、钩子(hooks)、技能(skills)、插件(plugins)和MCP服务器。每个组成部分功能不同,构建顺序也有讲究,因为每一层都建立在前一层之上。此外还有两种能力:LSP集成和子Agent,构成完整配置。 **CLAUDE.md文件是第一步。** 这些上下文文件在每次会话开始时自动加载:根目录文件提供全局视角,子目录文件提供局部约定。它们让Claude具备做好任何工作所需的代码库知识。由于每次会话都会加载,内容应聚焦在普遍适用的信息,避免臃肿拖累性能。 **钩子让配置持续自我改善。** 很多团队把钩子理解为阻止Claude做错事的脚本,但更有价值的用途是持续改进。结束钩子可以在会话结束后趁上下文还新鲜时回顾发生了什么,并提出CLAUDE.md的更新建议。启动钩子可以动态加载特定团队的上下文,让每个开发者无需手动配置就能获得适合自己模块的初始设置。对于代码检查(linting)和格式化这类自动化检查,钩子可以确定性地执行规则,比依赖Claude记住某条指令更一致。 **技能(skills)让专项能力按需加载,不撑大每次会话。** 大型代码库往往有几十种任务类型,不是所有专业知识都需要在每次会话里出现。技能通过渐进式披露解决这个问题:将专项工作流和领域知识从上下文空间中卸载出去,只在任务需要时加载。比如,评估代码安全漏洞时加载安全审查技能,代码变更后更新文档时加载文档处理技能。技能还可以绑定到特定路径,只在代码库的相关部分激活。负责支付服务的团队可以把他们的部署技能绑定到对应目录,这样在单体仓库的其他地方工作时永远不会自动加载。 **插件负责分发有效的配置。** 大型代码库面临的一个挑战是,好用的配置往往只停留在少数人手里。插件把技能、钩子和MCP配置打包成一个可安装的包,新工程师第一天安装后,立刻就能获得和老员工相同的上下文和能力。插件更新可以通过托管市场分发到整个组织。Anthropic提到,他们合作的一家大型零售企业,构建了一个连接内部分析平台的技能,让业务分析师不用离开工作流就能拉取性能数据,并在大范围推广前以插件形式分发出去。 **LSP集成让Claude拥有和开发者IDE一样的导航能力。** 把LSP能力暴露给Claude,就赋予它符号级别的精准度:可以追踪函数调用到其定义,跨文件追踪引用,区分不同语言中同名的函数。没有LSP,Claude只能做文本模式匹配,可能找到错误的符号。Anthropic提到,他们合作的一家企业软件公司在推广Claude Code之前,专门在全组织部署了LSP集成,目的是让C和C++在规模化场景下的导航可靠。对于多语言代码库,这是投入产出比最高的工作之一。 **MCP服务器扩展一切。** MCP服务器是Claude连接内部工具、数据源和API的方式。最复杂的团队构建了MCP服务器,把结构化搜索作为Claude可以直接调用的工具,也有团队用它连接内部文档、工单系统或分析平台。 **子Agent将探索和编辑分开。** 子Agent是一个独立的Claude实例,有自己的上下文窗口,接受任务、完成工作后只把最终结果返回给父Agent。脚手架搭好之后,一些团队会启动一个只读子Agent来绘制某个子系统的地图,把结果写入文件,再让主Agent拿着完整信息进行编辑。 ## 成功部署中出现的三种配置模式 ### 1. 让代码库在规模下可导航 - **让CLAUDE.md文件精简且分层**:Claude在遍历代码库时会叠加加载它们,根目录文件只放关键指针和需要注意的坑 - **在子目录而非仓库根目录初始化**:Claude会自动向上遍历目录树并加载沿途所有的CLAUDE.md文件,所以根目录的上下文不会丢失 - **按子目录设置测试和检查命令**:避免全套测试超时,浪费上下文在不相关的输出上 - **用.ignore文件排除生成文件、构建产物和第三方代码**:在.claude/settings.json中提交permissions.deny规则,团队里每个开发者都自动获得相同的降噪效果 - **当目录结构无法提供足够信息时,构建代码库地图**:在仓库根目录放一个轻量的Markdown文件,列出每个顶级目录并附一行描述 - **运行LSP服务器,让Claude按符号而非字符串搜索**:过滤在Claude读取任何内容之前就已完成 ### 2. 随着模型能力演进,主动维护CLAUDE.md文件 随着模型升级,为当前模型编写的指令可能会对新模型产生反效果。那些帮助旧版Claude处理它曾经不擅长的模式的CLAUDE.md规则,在新模型发布后可能变得多余,甚至变成束缚。团队应该预期每三到六个月做一次有实质内容的配置审查,同时在主要模型发布后性能感觉到了瓶颈时也值得做一次。 ### 3. 为Claude Code的管理和推广分配负责人 推广最快的项目,都在大范围开放访问之前做了专项基础设施投入。有一个新兴角色:**Agent Manager**,一个兼具产品经理和工程师属性的岗位,专门负责管理Claude Code生态。对于没有专门团队的组织,最低可行方案是设置一个**DRI(直接负责人)**:一个人拥有Claude Code配置的所有权,有权就设置、权限策略、插件市场和CLAUDE.md约定做出决策。 在大型组织中,尤其是受监管行业,治理问题出现得很早:谁来控制哪些技能和插件可以使用,怎么防止几千名工程师各自重新做同一件事,怎么确保AI生成的代码经过和人类代码相同的审查流程。Anthropic观察到,最顺畅的部署发生在那些尽早建立跨职能工作组的组织,把工程、信息安全和治理的代表召集在一起。 ## 核心观点 Claude Code围绕常规软件工程环境设计,工程师是代码库的主要贡献者,仓库使用Git,代码遵循标准目录结构。大多数大型代码库符合这个模型,但非常规设置(如有大量二进制资产的游戏引擎、使用非Git版本控制的环境)需要额外的配置工作。