让 Claude Code 读懂大代码库
Anthropic 最近发了一篇文章,讲 Claude Code 怎么在大代码库里工作。它里面最有用的点不是某个 prompt 技巧,而是一个更工程化的判断:Claude Code 在大仓库里好不好用,很大程度取决于仓库本身有没有被整理成 agent 能导航的环境。 Claude Code 不是先把整个仓库做成一个中心化索引,再从索引里召回答案。它更像一个坐在你电脑前的开发者,会读文件、搜关键词、看目录、跟引用、跑命令。这个模式的好处是它看到的是本地最新代码,不太会被过期索引误导;坏处是你不能只丢一句“帮我改一下支付逻辑”,然后指望它在几十万行代码里自己精准落点。 在大代码库里用 Claude Code,重点是减少它的无效探索。 从相关目录启动 如果是 monorepo,不要每次都从仓库根目录启动。改某个服务,就先进入那个服务目录;改某个 package,就从 package 目录启动。 Claude Code 仍然可以向上读取父级 CLAUDE.md,但它的第一视角会更接近当前任务。搜索范围变小,读到的文件更相关,后面跑测试、lint、build 也更容易收窄。 可以把日常入口做成 alias: alias c-api='cd ~/repo/apps/api && claude' alias c-web='cd ~/repo/apps/web && claude' alias c-worker='cd ~/repo/services/worker && claude' 这种小动作比写一大段 prompt 更稳定。 写分层 CLAUDE.md 根目录的 CLAUDE.md 只放全局信息:系统大概怎么分层、关键目录负责什么、通用代码规范、绝对不能踩的坑。 不要把它写成百科全书。根文件每次都会进上下文,越长越容易把真正有用的信息挤掉。 更适合的结构是分层: repo/ CLAUDE.md # 全局架构、通用约定、关键禁忌 apps/web/CLAUDE.md # 前端启动、测试、路由、组件约定 apps/api/CLAUDE.md # API 测试、数据库迁移、错误处理约定 services/worker/CLAUDE.md # 队列、重试、部署前检查 子目录里的 CLAUDE.md 要写具体命令,比如: ...