在任意仓库中输入 /init 并发送。Agent 会读取代码库、筛选出关键信息,在项目根目录生成一份 CLAUDE.md。此后每次在该项目中发起对话,都会自动加载这份上下文——全程无需手写一字。
Agent 每次开始关于你项目的对话时,都是从零出发。它只能看到被要求查看的文件,对其余部分只能靠推断。对于简单任务——查找某个函数、修改一处错别字——这没什么问题。但凡是涉及代码库中约定俗成的事情,就很难处理了:用的是哪个测试库、部署流程是什么、规范的 README 在哪儿、哪些已废弃、团队避免哪些写法。
放在项目根目录的 CLAUDE.md 文件正是解决这种信息不对称的方式。它是一份简短、精心维护的项目级上下文文档,LingCode 会在每次有关该项目的对话中自动加载它。写得好,它能让 Agent 从"猜测"变为"了解"。代价是需要有人来写——但通常没人真的去写,因为给工具写文档感觉像是额外负担,而不是正经工作。
/init 就是这个捷径。Agent 会自行读取代码库——文件结构、清单文件、依赖项、README、脚本、近期提交记录——并据此写出 CLAUDE.md 的初稿。你读一遍草稿,改掉不对的地方,提交。从"空白"到"每次对话都了解项目",只需五分钟。
/init 会读取哪些内容来生成草稿CLAUDE.md 应包含哪些内容(以及不该有什么)/init,何时手动更新打开一个已加载该项目的对话,输入 /init 并发送。技能随即启动——Agent 会遍历文件树,读取明显的入口点(README.md、package.json、Cargo.toml、Makefile、.github/、scripts/ 等),查看近期提交记录以了解进行中的工作,然后在项目根目录写出 CLAUDE.md 草稿。
对于一般规模的项目,整个过程需要一两分钟。Agent 会展示其工作过程——你可以在对话中实时看到它读取的文件。输出的是一个真实存在于磁盘上的文件,随时可以查阅。
打开 CLAUDE.md,一份好的草稿应包含:
npm test 比"用 npm 运行测试"有用得多。.editorconfig、lint 配置和近期提交中推断出一部分,但其余的它会遗漏。一份差的草稿读起来像 README——只有描述,没有指导。这时就应该动手编辑,而不是照单全收。
草稿善于捕捉代码中可见的事实,却会遗漏只有人类才知道的东西:
integration/ 里的测试在慢速机器上不稳定;如果偶尔失败,重跑一次,不用深究。"这些条目才是回报最丰厚的部分。用你自己的语言把它们加进去。Agent 不是在写一份精致的文档——它只是在替你播下种子,等待你来培育。
CLAUDE.md 会在每次对话中全量加载。Agent 每次都要把它全部读完,占用你的 token 配额。目标是用最少的内容改变行为——不是教程,不是宣传,不是导览。"只留高价值的注意事项"是这里的原则。
像对待其他文件一样,将 CLAUDE.md 暂存并提交。它是项目级的上下文;你的队友发起对话时同样受益。每次新克隆、每位新开发者的第一次对话、每次 CI Agent 运行——所有人都会获得同一份上下文。
一个合理的提交信息:Add CLAUDE.md for agent context。
一旦 CLAUDE.md 就位,重新运行 /init 会覆盖它。这几乎永远不是你想要的——你已经添加了 Agent 看不到、也不会重新生成的人工撰写内容。
在以下情况下可以重新运行 /init:
其他情况直接手动编辑即可。大多数更新只是一行新增:记录一个新踩到的坑、补充一条废弃说明、记下一个约定。
LingCode 会从三个位置读取 CLAUDE.md,并在对话开始时合并:
/init 写入的位置。对该项目下的每次对话都会加载。~/.claude/CLAUDE.md — 跨项目的个人习惯("我希望提交信息始终使用祈使语气")。/init 不会触及此文件。CLAUDE.md 仅在该文件夹内工作时生效。适用于每个包有自己约定的 monorepo。若对话处于 packages/api/ 目录下,则三者同时生效:用户级、项目根目录以及 packages/api/CLAUDE.md。项目约定会覆盖用户习惯;子目录规则会覆盖项目根目录。
CLAUDE.md 当作公开文件对待,即使你的仓库是私有的。