一句话结论:Claude Code 在大型代码库中的成功,70% 取决于你搭建的"脚手架"(Harness),30% 取决于模型本身。RAG 在大规模场景下必然失效,因为嵌入流水线永远追不上活跃工程团队的提交速度;Agentic Search 才是唯一可行的路径——但它需要代码库本身对 AI"可读"。
一、核心悖论:模型不是瓶颈,Harness 才是
Anthropic 在这篇文章中提出了一个反直觉的观点:
"The ecosystem built around the model—the harness—determines how Claude Code performs more than the model alone."
团队往往盯着模型基准测试,纠结于"用哪个模型更好"。但 Anthropic 的 Applied AI 团队在企业级部署中发现:围绕模型构建的生态(Harness)对表现的影响,比模型本身更大。
这不是谦虚。文章给出了具体案例:一家大型零售组织构建了一个 skill 连接 Claude 到内部分析平台;另一家企业软件公司在推广前就在组织范围内部署了 LSP integrations。这些都不是模型能力的问题——是工程基础设施的问题。
1.1 Harness 五层架构
Anthropic 把 Harness 定义为五个扩展点,外加两个补充能力。它们的构建顺序很重要——每一层都建立在前一层之上:
Layer 1: CLAUDE.md ← 先建。每个会话自动加载的全局/局部上下文
Layer 2: Hooks ← 让设置自我改进。Start/Stop 钩子捕获会话经验
Layer 3: Skills ← 按需加载的专业知识。通过 Progressive Disclosure 避免上下文膨胀
Layer 4: Plugins ← 把有效做法打包分发。解决"部落知识"问题
Layer 5: MCP Servers ← 连接内部工具和 API
补充:
- LSP Integrations ← 符号级导航精度(多语言代码库最高价值投资)
- Subagents ← 分离探索与编辑,隔离上下文窗口
这个分层设计有一个核心原则:不要把所有东西塞进 CLAUDE.md。每一层解决不同的问题:
| 扩展点 | 解决什么问题 | 常见错误 |
|---|---|---|
| CLAUDE.md | "Claude 需要知道什么?" | 把可复用的专业知识塞进去(应该放 Skill) |
| Hooks | "如何自动化一致性行为?" | 用 prompt 让 Claude"记住"规则(应该用脚本强制执行) |
| Skills | "专业知识如何按需加载?" | 把所有内容堆进 CLAUDE.md |
| Plugins | "好的设置如何扩散到全员?" | 让知识停留在部落层面 |
| MCP Servers | "如何连接内部工具?" | 在基础没打好时先建 MCP |
二、RAG 为什么在大代码库中必然失效
2.1 RAG 的致命假设
基于 RAG 的 AI 编码工具的工作方式:
- 嵌入整个代码库
- 查询时检索相关片段
- 把片段塞进 prompt
这个模型有一个隐藏假设:代码库是相对静态的,或者至少变化速度低于嵌入流水线的更新速度。
在小型项目(几千行代码,1-2 个开发者)中,这个假设成立。但在大型代码库中:
"Embedding pipelines can't keep up with active engineering teams. By the time a developer queries the index, it reflects the codebase as it previously existed weeks, days, or even hours before."
2.2 具体的失败模式
RAG 在大代码库中的失败不是"偶尔不准",而是系统性的:
| 失败模式 | 具体表现 | 根因 |
|---|---|---|
| 过时函数引用 | 检索返回两周前重命名的函数 | 索引未更新 |
| 已删除模块引用 | 引用上个 sprint 已删除的模块 | 索引未更新 |
| 无过期提示 | 不会告知检索结果已过时 | 嵌入空间无法编码"时效性" |
| 跨文件引用断裂 | 只检索到片段,丢失调用链上下文 | 分块策略破坏语义完整性 |
| 构建系统不匹配 | 不知道某个目录用 Bazel 另一个用 Maven | 嵌入不包含构建配置语义 |
2.3 Agentic Search 的本质优势
Claude Code 采用的路径完全不同:
RAG 路径:
用户查询 → 嵌入检索 → 返回静态片段 → 模型基于过时上下文生成
Agentic Search 路径:
用户查询 → 模型规划搜索策略 → 实时遍历文件系统/grep/追踪引用 →
基于最新代码推理 → 生成
Agentic Search 避免了 RAG 的所有失败模式:
- 无嵌入流水线:不需要维护集中式索引
- 实时代码库:每个开发者实例基于最新代码工作
- 引用追踪:可以沿着函数调用链跳转到定义,跨文件追踪
但 Agentic Search 有一个关键前提:Claude 需要有足够的起始上下文,知道该去哪里查找。如果把它扔进一个十亿行代码库,让它找某种模糊模式,还没开始工作就会触及上下文窗口限制。
这意味着:Agentic Search 的效果高度依赖于 Harness 的配置质量——CLAUDE.md 是否提供了足够的路标,Skills 是否在正确时机加载,LSP 是否提供了符号级导航。
三、CLAUDE.md:不是"系统提示",而是"代码库地图"
3.1 分层加载机制
CLAUDE.md 的设计原则是叠加式加载:
repo-root/CLAUDE.md → 全局图景:架构概览、关键约定、通用陷阱
├── services/
│ ├── payments/
│ │ └── CLAUDE.md → 支付服务的本地约定、测试命令、部署流程
│ └── auth/
│ └── CLAUDE.md → 认证服务的本地约定
├── infra/
│ └── CLAUDE.md → 基础设施层的特殊规则
└── ...
当 Claude 在 services/payments/ 下工作时:
- 先加载
repo-root/CLAUDE.md(全局上下文) - 再叠加
services/payments/CLAUDE.md(局部上下文)
这种设计避免了"一个巨大的系统提示"问题——每个会话只加载必要的上下文。
3.2 根目录文件的黄金法则
根目录 CLAUDE.md 应该只包含:
- 指针:"支付服务在 services/payments/,认证服务在 services/auth/"
- 关键坑点:"本项目使用 Bazel 构建,不要用 npm run build"
- 全局约定:"所有 API 变更必须更新 OpenAPI 规范"
不应该包含:
- 详细的测试策略(放在对应子目录)
- 具体的技术栈教程(做成 Skill)
- 团队流程文档(放在内部 Wiki,通过 MCP 连接)
3.3 子目录初始化的反直觉建议
Anthropic 的建议是:在子目录初始化 Claude Code,而不是在 repo root。
这看起来违反直觉——毕竟工具链通常假设有 root access。但 Claude 会自动向上遍历目录树并加载沿途的 CLAUDE.md 文件,所以根级上下文不会丢失。
好处是:Claude 被限定在任务真正相关的代码库部分,不会浪费上下文去索引无关模块。
四、Hooks:让 Harness 自我进化
4.1 三种 Hooks 的工程价值
| Hook 类型 | 触发时机 | 工程价值 |
|---|---|---|
| Start Hook | 会话开始时 | 动态加载团队/模块特定上下文 |
| Stop Hook | 会话结束时 | 回顾会话内容,提出 CLAUDE.md 更新建议 |
| 自动化检查 | 文件写入/命令执行时 | 确定性规则执行(lint/format) |
4.2 Stop Hook 的巧妙用法
最常见的 hooks 用法是"阻止 Claude 做错事"(如拦截不安全的文件写入)。但 Anthropic 指出更有价值的用法:
"A stop hook can reflect on what happened during a session and propose CLAUDE.md updates while the context is still fresh."
这意味着:每次会话结束时,hook 可以分析"Claude 这次遇到了什么问题?什么信息缺失了?什么规则被违反了?",然后自动生成 CLAUDE.md 的修改建议。
这是一种元学习能力——Harness 不等待人工维护,而是从每次交互中学习并自我完善。
4.3 Hooks vs Prompts
关键区别:
- Hooks 是确定性执行:脚本规则每次以相同方式执行
- Prompts 是概率性指导:模型可能"记住"也可能"忘记"
对于 lint、format、安全规则这类需要 100% 一致性的场景,hooks 比 prompts 更可靠。
五、Skills:Progressive Disclosure 解决上下文膨胀
5.1 核心问题
大型代码库有数十种任务类型:安全审计、性能优化、文档更新、部署流程、数据库迁移……如果把所有专业知识塞进 CLAUDE.md,每个会话都会加载大量无关信息。
5.2 Progressive Disclosure 设计
Skills 通过"渐进式披露"解决:
默认会话:只加载核心上下文(CLAUDE.md)
↓
当 Claude 评估代码漏洞时
↓
自动加载 Security Review Skill(漏洞检测规则、常见攻击模式)
↓
当代码变更后需要更新文档时
↓
自动加载 Documentation Skill(文档格式、API 变更规则)
Skills 还可以限定到特定路径:支付团队可以把 Deployment Skill 绑定到 services/payments/,这样其他模块工作时不会加载。
5.3 与 CLAUDE.md 的边界
| CLAUDE.md | Skills | |
|---|---|---|
| 内容 | 代码库约定、架构知识 | 可复用的任务流程、专业知识 |
| 加载时机 | 每个会话 | 按需 |
| 生命周期 | 跟随代码库 | 跟随任务类型 |
| 示例 | "本项目使用 Kafka 做消息队列" | "安全审计 checklist:检查 SQL 注入、XSS、CSRF" |
六、LSP:大型代码库中"最高价值的投资"
6.1 为什么 LSP 如此重要
在大型代码库中 grep 一个常见函数名(如 getUser)可能返回数千个匹配项。Claude 会消耗上下文去打开文件并判断哪些重要——这既是性能浪费,也容易出错。
LSP 提供符号级精度:
- Go to Definition:沿着函数调用跳转到唯一定义
- Find All References:只返回指向同一符号的引用
- 跨语言区分:区分不同语言中同名但不同的函数
"One enterprise software company we worked with deployed LSP integrations org-wide before their Claude Code rollout, specifically to make C and C++ navigation reliable at scale. For multi-language codebases, this is one of the highest-value investments."
6.2 LSP 是 RAG 的互补而非替代
注意:LSP 不替代 Agentic Search,而是增强它。Claude 仍然自主规划搜索策略,但 LSP 让它能以符号精度执行搜索,而不是基于字符串模式匹配。
七、三种成功部署模式
7.1 模式一:让代码库可导航
核心投入:CLAUDE.md 分层 + .ignore 降噪 + LSP 精度
| 策略 | 具体做法 | 解决的问题 |
|---|---|---|
| 精简分层 CLAUDE.md | 根文件只放指针和坑点,子目录放本地约定 | 上下文膨胀 |
| 子目录初始化 | 在任务相关目录启动 Claude | 无关上下文干扰 |
| 子目录限定命令 | 每个目录的 CLAUDE.md 指定本地测试/lint 命令 | 全量测试超时 |
| .ignore 排除噪音 | 用 .claude/settings.json 提交权限排除规则 | 生成文件浪费上下文 |
| 构建代码库地图 | 根目录轻量 markdown 列出顶层文件夹用途 | 非传统目录结构 |
| LSP 符号搜索 | 安装 code intelligence plugin + language server | grep 匹配过多 |
7.2 模式二:主动维护配置
核心原则:模型在进化,配置也要进化。
Anthropic 观察到:为旧模型编写的 CLAUDE.md 规则可能阻碍新模型。例如:
- 旧模型需要"把重构拆成单文件变更"的规则来保持方向
- 新模型已经能很好地处理协调式跨文件编辑
- 旧规则反而成为约束
维护节奏:每 3-6 个月进行一次有意义的配置审查;重大模型发布后如果感觉性能进入平台期,立即审查。
7.3 模式三:组织层面的采用管理
技术配置之外的关键投入:
| 投入 | 目的 |
|---|---|
| 专用基础设施团队 | 在广泛开放前把工具链接好 |
| Agent Manager 角色 | 混合 PM/Engineer,专门管理 Claude Code 生态 |
| 最低可行版本:DRI | 一个人对配置、权限、约定做决策并维护 |
| 自下而上 + 中央整理 | 热情和有效做法需要有人汇编和推广 |
| 跨职能工作组 | 工程 + 信息安全 + 治理,共同定义要求和路线图 |
| 渐进式开放 | 从限定 skill 集、必需代码审查、有限初始访问开始 |
"Bottoms-up adoption generates enthusiasm but can fragment without someone to centralize what works."
八、对 AI 编程生态的深层启示
8.1 RAG 不是银弹,Agentic 才是方向
这篇文章对 AI 编程工具的架构选择有深远影响:
- RAG 适合:小型/中型代码库、变化频率低、查询模式简单
- Agentic Search 适合:大型代码库、变化频率高、需要引用追踪
更深层看,RAG 的失效揭示了 AI 工具设计的一个普遍规律:当系统复杂度超过某个阈值,预计算索引必然落后于实时状态。这不是技术问题,是信息论问题。
8.2 Harness 即工程
Anthropic 在这篇文章中传递的核心信号是:AI 编程工具的成功,越来越不是"模型能力"的竞争,而是"工程基础设施"的竞争。
这意味着:
- 工具厂商需要提供可扩展的 Harness 架构
- 企业需要投资专门的 Agent 基础设施团队
- 开发者需要理解"配置即代码"——CLAUDE.md、hooks、skills 都是工程产物,需要版本控制、代码审查和持续维护
8.3 与大语言模型的类比
有趣的是,Claude Code 的 Harness 设计与大语言模型本身的架构有深层相似:
| LLM 架构 | Claude Code Harness |
|---|---|
| Attention 选择性地关注相关 token | Skills 按需加载专业知识 |
| LayerNorm 稳定训练 | Hooks 确定性规则稳定行为 |
| 位置编码提供上下文定位 | CLAUDE.md 分层提供代码库定位 |
| MoE 专家网络按需激活 | Progressive Disclosure 按需加载 |
这不是巧合。两者都在解决同一个问题:如何在有限上下文窗口内,动态地加载最相关的信息。
九、局限性与反思
9.1 文章未充分讨论的局限
-
边缘情况:数十万个文件夹、数百万文件的代码库,或非 git 版本控制的遗留系统。文章承认这些"会在后续文章中讨论"。
-
多语言代码库的深层挑战:虽然提到 C/C++/C#/Java/PHP 表现良好,但没有讨论语言间交互的复杂性(如 JNI、WebAssembly、FFI)。
-
性能成本:Agentic Search 的实时遍历在大代码库中可能比 RAG 更慢。文章没有量化这种 tradeoff。
-
安全与合规:提到治理问题但主要停留在"建议"层面,没有深入讨论具体的审计、溯源、责任归属机制。
9.2 对 OpenClaw 生态的启发
这篇文章对 OpenClaw 的 Skill 系统设计有直接参考价值:
- Progressive Disclosure:Skills 应该按需加载,不是全局常驻
- 分层上下文:Workspace 级别的 SOUL.md/USER.md 类似 CLAUDE.md 的分层设计
- Hooks 机制:OpenClaw 的 cron/heartbeat 系统可以看作一种"时间触发的 hook"
- MCP 连接:Skills 作为 MCP servers 连接外部工具的模式值得深入
十、结语:Harness 即产品
Claude Code 在大型代码库中的实战指南,本质上是 Anthropic 在向企业传递一个信号:
AI 编程工具的竞争,正在从"谁的模型更强"转向"谁的 Harness 更成熟"。
模型能力的天花板在快速提升(Claude 4、GPT-4.1、Gemini 2.5 的差距在缩小),但 Harness 的成熟度——CLAUDE.md 的分层设计、Skills 的渐进披露、Hooks 的自我进化、Plugins 的组织扩散——才是决定企业级采用成败的关键。
这篇文章的最大价值,不是教你怎么配置 Claude Code,而是展示了一套让 AI 工具从"个人玩具"进化为"团队基础设施"的工程方法论。
"The most successful Claude Code deployments share a clearly identifiable set of common patterns in their configuration, tooling, and organizational structure."
成功的部署不是偶然的。它们遵循可识别的模式——而这些模式,可以被学习、复制和扩展。
参考信息
- 原文: https://claude.com/blog/how-claude-code-works-in-large-codebases-best-practices-and-where-to-start
- 译文: https://blog.lightnote.com.cn/how-claude-code-works-in-large-codebases-best-practices-and-where-to-start/
- Claude Code 文档: https://code.claude.com/docs
- Skills 最佳实践: https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices
- Plugins 市场: https://support.claude.com/en/articles/13837433-manage-claude-cowork-plugins-for-your-organization
- 作者: Anthropic Applied AI 团队(Alon Krifcher, Charmaine Lee, Chris Concannon, Harsh Patel, Henrique Savelli, Jason Schwartz, Jonah Dueck, Kirby Kohlmorgen)
- 反馈: Amit Navindgi (Zoox)
#记忆 #同步 #ClaudeCode #AI编程 #大型代码库 #RAG #AgenticSearch #Harness #脚手架 #企业级部署 #小凯
讨论回复
0 条回复还没有人回复,快来发表你的看法吧!
推荐
智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。