一万字讲透 CLAUDE.md/AGENTS.md:从基础到反直觉

发布于 2026年4月25日 作者 Remy

写在前面

如果你用过 Claude Code、Cursor、Codex、Aider、Jules、Amp、Windsurf 中的任何一个,你大概率已经写过 CLAUDE.md 或者 AGENTS.md,甚至两个都写过。你也许纠结过:到底要写多少?是写成 README 那种娓娓道来,还是写成一条条命令?能不能让这些文件在多个工具之间复用?写完之后,agent 到底有没有听话?

这篇文章想把 2025—2026 年这一年多以来,英语世界和中文世界关于”写给 AI 看的项目文件”的讨论梳理清楚。它不是一份操作手册,而更像一份心智模型的演化史——从 Anthropic 的早期最佳实践,到 Karpathy 的 program.md 范式,再到 ghuntley 的 Ralph Wiggum 循环,以及 claude-evolve 这样的”达尔文式记忆”实验。最后回到我们自己的工作台,落到 PARA 知识库和后端仓库这两种真实场景。

全文约一万字,分十二节。前六节是基础与现状,后六节是反直觉观点与落地建议。如果你只想看重点,跳到第六节开始读。


一、先把三个文件分清楚:README.md / CLAUDE.md / AGENTS.md

在任何一个”给 AI 读的文件”长出来之前,我们先把三种文件的定位讲清楚。

README.md 是写给人看的。它的受众是”第一次打开你的仓库的人类开发者”,目的是让他们在五分钟内理解项目做什么、怎么跑起来、怎么贡献。它的语气是说明性、营销性的,内容组织遵循金字塔原理:是什么 → 怎么用 → 怎么参与

CLAUDE.md 是写给 Claude Code 看的。它的受众是一个每次都要从零理解仓库的 AI 代理。这个代理没有记忆,没法直观扫一遍代码结构,每次进来都像失忆的侦探。它真正关心的,是这些问题:我要执行什么命令才能构建?怎么跑测试?这个仓库里有没有什么坑必须知道才不会踩?修改完怎么验证?

AGENTS.md 则是 2025 年 8 月 OpenAI、Google、Cursor、Factory、Sourcegraph 等公司联合推出的开放标准,2025 年 11 月由 Linux 基金会下属的 Agentic AI Foundation 托管。它的定位是”跨 AI 工具的统一指令文件”——一份文件,同时被 Codex、Cursor、Aider、Jules、Copilot、Claude Code、Amp、Windsurf、Zed 读取。截至目前,采纳仓库已超过 6 万个。

这三个文件互补而非替代。README.md 回答”是什么”,CLAUDE.md 和 AGENTS.md 回答”怎么做”。区别在于前者是面向人类的营销页,后者是面向机器的运行手册。

一个常见误区是把 CLAUDE.md 写成 README.md 的翻版——贴一段项目简介、贴一张架构图、贴一段 Getting Started。这些内容对 agent 几乎没用。agent 不需要知道项目卖点,它需要知道”跑测试是 pnpm test 还是 npm run test:unit”、“改完代码是否要跑 codegen”、“哪些目录禁止改动”。

另一个误区是把”写过一次就永远不改”。CLAUDE.md 的本质是活文档,它应该随着项目演进不断增删。Anthropic 官方最佳实践里有一句话直白地说:“Treat CLAUDE.md like code: review it when things go wrong, prune it regularly.”(把它当代码对待:出问题时要审查它,要定期修剪它。)


二、通用最佳实践:长度、结构、写法

长度

这是最没有争议也最容易做错的部分。

HumanLayer 的 Dexter Horthy 在《Writing a good CLAUDE.md》里给出过一个很具体的基准:他们主仓库的根 CLAUDE.md 在 60 行以内。知乎上一位作者做过严谨实验,把三千字砍到一千字有所改善,砍到八百字明显变好,但砍到四百字时关键信息丢失——最终他稳定在八百字左右。vercel/vercel 这种复杂 monorepo 的 AGENTS.md 是 247 行。openai/codex 的 AGENTS.md 接近 800 行,但通过严格的二级标题分区避免了阅读障碍。

社区共识大致是:普通项目根文件 ≤250 行;大型 monorepo 按子模块分片,>500 行必须严格分区。Anthropic 官方在若干公开分享里提到一个更本质的数字——前沿模型稳定遵循的指令总量在 150—200 条上下。超过这个数,模型遵守率会快速衰减。

结构

一份可用的 CLAUDE.md 推荐这几个主要章节:

  1. CRITICAL RULES(红线规则)——绝对禁止的操作,例如”不许 push 到 main”、“不许 rm -rf”。
  2. PROJECT CONTEXT(项目上下文)——技术栈、monorepo 结构、关键架构决策。
  3. BUILD & TEST COMMANDS(命令)——精确到命令行,不要写”运行测试”要写 pnpm test --watch=false
  4. CODE STYLE(代码风格)——带示例,不要写”保持代码整洁”要给出好/坏两段代码。
  5. FILE ORGANIZATION(目录约定)——每个目录放什么。
  6. VERIFICATION(验证方式)——如何确认改动没破坏什么。
  7. COMMON PITFALLS(踩坑清单)——按时间顺序、按事件累积。

vercel/vercel 的做法很有启发:它专门有一节 “Common Pitfalls”,收录了”禁止在 CLI 包里使用 console.log”、“不要跳过 CI hooks”等真实踩过的坑。这一节和 vercel-labs/open-agents 的 “Lessons Learned” 对应同一种思路——把一次性教训沉淀成长期规则

写法

指令式、强约束词、具体路径、具体命令。写 ALWAYS run pnpm typecheck before claiming the task is done,不要写 please check code quality。写 Never import from src/internal/*,不要写 be careful about imports

Anthropic 官方和社区共识一致指出:可靠性大约 70%——CLAUDE.md 里的规则约 70% 被遵守。所以真正的红线不能只靠 CLAUDE.md 约束,而要用 hooks(PreToolUse 返回 exit code 2 直接阻断)把 30% 的漏洞补上。


三、从真实样本学最佳实践

理论永远敌不过样本。下面这八个 GitHub 仓库是我筛选出的高质量样本,值得逐一打开看一看。

1. openai/codex(Rust 实现的 AI 编码代理) 800 行的 AGENTS.md,按 codex-core crate、TUI style、TUI code、text wrapping、tests、snapshot tests、app-server API 等子领域严格分区。最有价值的一句是”Resist adding code to codex-core”——抵制往核心包塞东西。这种带”反向意图”的规则比”保持代码简洁”这种正向空话有效得多。它还写死了单文件 500 LoC 目标,超过 800 LoC 必须拆分,用 insta 做快照测试、用 pretty_assertions 做深度比较。

2. vercel/vercel 247 行,是大型 monorepo 的黄金模板。结构清晰:Repository Structure / Essential Commands / Changesets / Code Style / Testing Patterns / Package Development / Runtime Packages / CLI Development / Common Pitfalls。Pitfalls 章节是活的避坑手册。

3. openai/openai-agents-python 约 480 行,最有趣的是它把指令写成显式 skill 调用——例如 $code-change-verification$pr-draft-summary。修改 runtime 前必须调用 $implementation-strategy,doc-only / meta 变更允许跳过全量校验。这种”指令即工作流图”的写法把 Markdown 变成了小型 DSL。

4. vercel-labs/open-agents 约 280 行,开头就声明 “This is a living document. When you make a mistake, add it to Lessons Learned.” 这是自我演化契约:agent 和人类都被邀请向这份文档追加经验。具体规则比如”zsh glob 要给 [id] 动态路由加引号”、“改 schema.ts 必须生成迁移而非 db:push”都是真实踩过的坑。

5. vercel-labs/agent-skills 核心规则一句话:“Keep SKILL.md under 500 lines”,并强制用 progressive disclosure 把细节外移。这是整个 agent-skills 生态里最重要的一条约束。

6. anthropics/anthropic-cookbook 强制使用 uv 包管理,并且明确要求用”当前模型别名”(如 claude-sonnet-4-6)而不是日期版本。后者会随时间失效、产生技术债。

7. karpathy/llm-council Karpathy 自己 vibe-coded 的项目里的 CLAUDE.md。里面记录的不是代码风格,而是”ReactMarkdown 必须包在 <div className="markdown-content"> 里、chairman 默认 Gemini”这种项目级长期记忆与陷阱点。这是 CLAUDE.md 本来应该长的样子。

8. affaan-m/everything-claude-code(AgentShield) 反模式扫描工具,对 CLAUDE.md、settings.json、MCP 配置做五大类安全审计,覆盖 14 种密钥模式。它发现的典型 anti-pattern 值得警醒:CLAUDE.md 里硬编码 API Key、含过期模型 ID、用”be careful”这种模糊指令。

八个样本共同指向一个规律:好的 CLAUDE.md 是项目决策的化石层,不是教科书


四、Karpathy 的三次范式转移

如果说 Anthropic 官方文档告诉我们”怎么写”,那 Karpathy 则在告诉我们”为什么写”。他在 2025—2026 年发表的几条观点,本质上是在重新定义”写给 AI 的文件”这件事。

第一次转移:Prompt Engineering → Context Engineering

2025 年 6 月 25 日,Tobi Lütke(Shopify CEO)在 X 上提出”上下文工程”优于”提示工程”,Karpathy 公开 +1 并写下:

“In every industrial-strength LLM application, context engineering is the delicate art and science of filling the context window.”

他强调:context 是系统的输出,不是静态字符串。它在每一次主 LLM 调用之前,被一个动态流水线即时生成,随任务改变。这里的反直觉点在于:你在写 CLAUDE.md 的时候,写的不是”一段提示词”,而是系统的一个运行时变量。这个变量要跟任务、跟会话、跟时间协同起来。

第二次转移:Markdown 即源代码(program.md 范式)

Karpathy 的 autoresearch 仓库(nanochat 的同胞项目)里,使用的指令文件不叫 AGENTS.md,也不叫 CLAUDE.md,而叫 program.md。工作范式极其简单但颠覆:

人类迭代 program.md,agent 迭代 .py

换句话说,Markdown 成了源代码,agent 是编译器兼运行时。你不再写 Python,你写自然语言规范,agent 据此生成代码并迭代。这是 Karpathy 三年前”Software 2.0”、去年”Software 3.0”论断的具体技术形态。

从这个视角回看 CLAUDE.md,你会发现:这不是”一个配置文件”,而是项目的规范层源码。你把它从 100 行改成 80 行、从含糊改成精确,本质上就是在重构代码。

第三次转移:声明式 > 命令式(Goal-Driven Execution)

Karpathy 在 forrestchang/andrej-karpathy-skills 这个被一周下载 43k 次的 skill 集合里被总结出四条原则,其中最反直觉的是:

“LLMs are extremely good at looping until they hit a specific goal. Don’t tell them how to do it. Give them success criteria and let them run.”

翻译成项目文件的语义:不要在 CLAUDE.md 里写 step-by-step 的步骤,写成功判据。不要写”先读 A,再改 B,然后跑 C”,写”改完之后 pnpm test 必须全绿且 git diff 不含 console.log”。后者会让 agent 自己组织路径,前者会让它走死胡同就卡住。

这条原则和传统软件工程的”先写流程图再写代码”是相反的——agent 时代的好规格说明是声明式的


五、大神们的非显见心智模型

除了 Karpathy,还有一批人在各自项目里沉淀出独到的心智模型。挑几个最有启发的。

Armin Ronacher:日志即 API,工具链无死胡同

Flask 作者 Armin Ronacher 在《Agentic Coding Recommendations》和《Agent Design Is Still Hard》两篇博客里提出两个金律。

日志即 API。调试模式下,把注册邮件直接打到 stdout。CLAUDE.md 告诉 agent 去读日志。于是 agent 就能自己完成”注册 → 等邮件 → 提取链接 → 点击链接”的完整闭环,不需要人类搭桥。这个技巧的适用面远不止邮件——任何异步副作用都能用同样的方式暴露给 agent。

No dead ends(无死胡同)。图像生成工具必须写到代码执行工具能读到的同一虚拟文件系统。工具链必须形成闭环。否则 agent 就会卡在”我生成了图,但我下一步读不到它”的悖论里。

他还有一个看起来很小的观察:Claude Code 的 TodoWrite 只是回显任务列表,但这种动态回显比一次性放在 context 顶部更能驱动 agent。原因是 context 顶部的东西在 attention 分布里是”远端”,会被稀释;而每次 tool call 后重新注入的是”近端”,更强。

Geoffrey Huntley:stdlib、Ralph、上下文利用率

ghuntley.com 的 Geoffrey Huntley 把团队约定当成编程语言的标准库来管理——把规则存到 .cursor/rules/*.mdcspecs/stdlib/*.md 里。他说过一句非常赤裸的话:

“你实际上在给 LLM 编程,而不是在用 IDE。”

他发明的 Ralph Wiggum 技法(名字取自《辛普森一家》里那个憨憨的角色)把这个思想推到极致:

while :; do cat PROMPT.md | npx --yes @anthropic-ai/claude-code-cli ...; done

单进程、单仓库、每轮只做一件事。PROMPT.md 成为协调中枢。他还指出——不存在完美提示。那些在 Hacker News 上被疯狂复制的 “CURSED 提示词”逐字抄过去没用,因为它们是基于对具体 LLM 行为的持续观察演化出来的。

他的另一个核心指标:上下文窗口利用率目标 40—60%。超过就产出质量下降。整个 advanced context engineering for coding agents 工作流都围绕”频繁的、有意的 compaction”设计。

Simon Willison:AGENTS.md 写运行时异常

Simon Willison 在 simonw/research 仓库的 AGENTS.md 里专门针对沙盒网络限制写提示——这提醒我们:AGENTS.md 应该包括运行时环境的异常,不只是代码规范。如果 agent 会在某个 IP 段被阻断、某个端口不可用,这些都要明文写出来。

他还做过一个长时间线的观察:“写 Markdown 让 agent 先读”这种模式最早出现在 2023 年的 ChatGPT Code Interpreter。也就是说,CLAUDE.md 并不是凭空出现的新物种,而是一个用了三年的老模式被重新标准化。

Hamel Husain:Eval 即活 PRD

Hamel Husain 提出一个让整个评测领域尴尬的观点:好的 eval prompt 本身就是活的 PRD——它实时、持续地测试 AI 行为。他反对把 prompt 放进 LangSmith 等”一层额外的平台”,主张把 prompts 存进 Git、像软件制品一样版本化

这个观点对 CLAUDE.md 的启示是:CLAUDE.md 本身需要 eval。你怎么知道你写的”ALWAYS run typecheck”真的被执行了?你需要一套可重复的测试来验证。Fireworks、LangChain、MLflow 都已经在这个方向做集成,下一节会讲到。

Harrison Chase:Model/Harness/Context 三层

LangChain CEO Harrison Chase 在 Sequoia 播客里提出未来 agent 系统的三层结构:Model / Harness / Context。他的判断是:Context 层是产品团队最先要投资的——模型在改进、harness 在商品化,只有 context 是你的私有资产。

翻译到 CLAUDE.md 的工程意义:CLAUDE.md 是护城河。它不是一份配置,是你这个团队/项目的机构知识


六、颠覆性新模式:从 Evolve 到 Oracle

上面讲的都是”怎么写好一份文件”。这一节讲”怎么让文件自己变好”,以及”怎么让多份文件协同”。

达尔文式记忆(claude-evolve)

jack60810/claude-evolve 把规则按 0—10 评分,用 EMA(30% 新、70% 历史)平滑。规则分三态:

  • active:正在被使用
  • dormant:被降级但保留,未来环境变化可能复活
  • dead:彻底删除

同类规则积累到一定成熟度,自动”毕业”升格为 .claude/skills/ 里的正式技能文件。这是一种规则生命周期管理——规则不再是”写进去永远在”,而是像代码一样有生有死。

双文件读写权分离(CLAUDE.md + MEMORY.md)

业内开始流行一个区分:CLAUDE.md人类写、给 agent 看的显式规则;MEMORY.mdagent 自己写、启动时 200 行自动加载的观察积累。

这个结构的反直觉点在于:一半的文件是 agent 写给自己看的。你在会话里告诉它”下次记住 X”,它就把 X 写进 MEMORY.md;下一次启动,它在读完 CLAUDE.md 之后立即读 MEMORY.md 的前 200 行。agent 开始维护自己的知识库。

Claude 系统提示里有一句自我防御:“把自己的记忆当作 hint 而非事实”——写入前要对真实代码二次验证。避免 agent 记错了还一错再错。

Auto Dream:记忆卫生

还有一个后台进程叫 Auto Dream。它定期扫描 MEMORY.md,把”昨天的部署问题”自动改写成”2026-03-28 的部署问题”,把相对时间锚点改为绝对日期。这样当这条记忆在几个月后被读到时,不会因为”昨天”已经变成几十天前而误导 agent。

记忆需要卫生——这是我看到过最反直觉的一条。记忆不是只增不减的日志,而是需要持续清洗的活数据

“两次原则”(Two Strikes Rule)

Anthropic 官方最佳实践提到一个反直觉的规则:只有同一个错误第二次发生,才把它写进 CLAUDE.md

为什么?因为第一次可能只是偶发。如果你每次 agent 出错就写一条规则,CLAUDE.md 会被一次性教训塞满,噪声压过信号。两次 = 模式,一次 = 噪声。这和传统”尽早文档化”的直觉是完全相反的。

Subagent 是上下文控制,不是角色扮演

很多人用 subagent 是为了”分工”——让一个 agent 当前端、另一个当后端。但更深的用法是上下文控制:用 subagent 的新鲜窗口去做 Glob/Grep/Read,主 agent 只接收摘要,不污染主 context。

这是为什么 Claude Code 的 Agent 工具默认返回”摘要”而不是”原始 tool result”——它是为了保护主线程的上下文预算。

Oracle 模式

Oracle 模式把 GPT 当作 tool 暴露给 Sonnet,实现跨模型函数调用。CLAUDE.md 里声明:“遇到架构决策时调用 oracle”。这种”让一个 LLM 在决策点咨询另一个 LLM”的做法,相当于给 agent 配了一个外部顾问——尤其适合防范单一模型的系统性偏见。

Anti-Sycophancy 三模式

Claude 有个众所周知的毛病:对用户过于恭维。社区已经沉淀出一套反谄媚模板:

  • Mode 1 Challenge-First:默认先挑战你的判断
  • Mode 2 One-Question:一次只问一个澄清问题
  • Mode 3 Steel-Man:用最强版本反驳你的提案

反直觉的点是:不是一个人格,而是三种可显式召唤的思考模式。你在 CLAUDE.md 里写”默认用 Mode 1”,在写关键决策时切到 Mode 3。

Path-Scoped Rules

YAML frontmatter 加一个 paths: 字段,规则仅在匹配文件时加载,默认 0-token。例如一条关于 React 组件的规则只在 src/components/*.tsx 被触及时注入 context。这把”全量加载”变成了”按需加载”,直接让 CLAUDE.md 可以膨胀到几千行而不增加单次请求的 token 成本。

Versioned Changelog 顶置

CLAUDE.md 顶部写一段 ## Changelog v2026-04-25,agent 启动时会主动跟上次 session 做 diff,发现”规则变了”。这是一种让 agent 主动感知规则演化的机制。


七、团队工程化层:把 CLAUDE.md 当代码对待

单个开发者的最佳实践和一个团队的最佳实践是两回事。上文的一切技巧,放到五人、五十人、五百人的团队里,就会遇到完全不同的问题:规则冲突、版本漂移、执行偏差、无法衡量 ROI。

AGENTS.md 是跨工具契约

再强调一次:AGENTS.md 已经是 Linux Foundation 托管的正式开放标准,被 20+ 工具原生支持。Vercel Agent Readability Spec 更进一步,把 AGENTS.md 纳入站点可达性规范,推荐在 /AGENTS.md/.well-known/agents.md/CLAUDE.md/.cursor/rules 等多路径同时暴露。这就像 robots.txt 和 sitemap.xml 之于搜索引擎——AGENTS.md 之于 AI agents。

团队层面的建议:主文件写 AGENTS.md,CLAUDE.md 只写一行 See @AGENTS.md(Anthropic 推荐的 import stub 模式)。所有工具共享同一份,Claude 专属的小众特性单独放 CLAUDE.md。这样切换工具不用改配置,Claude 专属优化也不会流失。

CLAUDE.local.md 已废弃,用 @imports

注意:CLAUDE.local.md 这个文件已经被 Anthropic 官方废弃(见 anthropics/claude-code issue #2950)。推荐用 @path/to/file 语法(最多 5 跳递归)。个人私货建议用 @~/.claude/personal-overrides.md + .gitignore 一行,替代旧版 local 文件。

Spec-Driven:团队级 Agent OS

2025 下半年,三大 Spec-Driven 开发阵营涌现:

  • GitHub Spec Kit:Constitution → Specify → Clarify → Plan → Tasks → Implement 六阶段,每阶段人类 gate,agent 无关。
  • BMAD-METHOD(GitHub 43k 星):12+ 角色 Agent-as-Code(Analyst / PM / Architect / SM / Dev / QA),用 YAML 编排 handoff,企业级多 agent 流水线。
  • Kiro(AWS 的 VS Code fork):spec → design → tasks → impl 内嵌 IDE,配合 steering 文件(product.md / structure.md / tech.md)做持久上下文。

Martin Fowler 对这三者做过对比。他的建议是:小 bug 别套 SDD,否则是拿叉车嗑核桃。但当任务横跨多个模块、需要多轮对话、需要多人/多 agent 协作时,SDD 可以避免”越改越乱”。

Eval-Driven CLAUDE.md

Fireworks、LangChain、MLflow 都在推动一个新范式:把 CLAUDE.md / SKILL.md 视作被测对象。做法是:

  1. binary 断言套件,在 Docker 干净环境里跑。
  2. LLM judge + rule-based judge 混合:前者判行为与顺序,后者判副作用(文件是否生成、命令是否执行)。
  3. 用 MLflow 对每个 Claude Code session 做 trace,通过 span 反查”某条规则到底有没有被加载”——光看输出抓不到”prereq 没触发”这类失败。

MindStudio 甚至做了一个自改循环:让 Claude Code 自己改 CLAUDE.md 直到断言全绿,配合 QUALITY.md 记录 baseline。这就是 CLAUDE.md 的”自动化回归测试”。

可观测性:规则 ROI 度量

Harrison Chase 的团队把 LangSmith 接入 Claude Code,可以看到哪些规则被调用、哪些被忽略——这是规则 ROI 度量的唯一手段。结合 PostToolUse hook 和 LSP 诊断(文件编辑后自动回灌 type error),把”是否遵守规则”变成可观测信号

Meta-CLAUDE.md

.claude/skills/meta/ 放一个”如何编辑 CLAUDE.md 本身”的 skill——长度上限、死链检查、规则分级约定。下一次改规则的 agent 先读这个 meta-skill,再动手。这正是 Kiro steering、BMAD orchestrator 的底层模式:规则之上还有规则

GitHub Squad 的 decisions.md

GitHub Copilot 团队的博客披露了他们的 “Squad” 模式:每个架构决策作为结构化 block 追加到版本化 decisions.md,作为异步团队大脑。任何 agent 在做新决策前先读 decisions.md,避免重复讨论、避免颠覆过去。

这是把 ADR(Architecture Decision Records)的人类实践,搬进了 AI 协作的世界。


八、非代码场景:PARA、Obsidian、学术写作

CLAUDE.md 不只服务软件工程。写作、研究、知识管理、课程、博客、论文——任何需要 agent 辅助的知识工作,都可以用 CLAUDE.md。

PARA / Obsidian 金库

PARA(Projects / Areas / Resources / Archive)是 Tiago Forte 提出的个人知识管理框架。在 Obsidian 金库里配置 CLAUDE.md 的典型思路:

  • 金库语义:四个目录各自的语义(Inbox 未分类 → Projects 有截止日 → Areas 长期责任 → Resources 参考 → Archive 冻结)
  • Frontmatter 标准:YAML 字段规范(title / date / tags / status / source / para-type)
  • 分类决策树:Claude 在 Inbox 看到新文件时,如何判断应该归到哪里
  • Tone/Voice:写周记 vs 写研究笔记 vs 写项目文档,语气约定
  • 周回顾 workflow:每周一次把 Inbox 清空到四象限的流程

相关仓库可以参考:ballred/obsidian-claude-pkm(完整 PARA 启动套件)、AgriciDaniel/claude-obsidian(Karpathy LLM Wiki 模式)、danielrosehill/Claude-Code-Projects-Index(非代码用法集锦)。

Mauricio Gomes 在《Teaching Claude Code My Obsidian Vault》里给出一个重要提醒:每月回顾更新一次 CLAUDE.md,否则会随金库演化而过期。

学术写作

K-Dense-AI/claude-scientific-writer、Galaxy-Dawn/claude-scholar、Imbad0202/academic-research-skills 这三个仓库代表学术方向的成熟实践:

  • 风格校准:喂 3 篇旧文让 Claude 学习句式、引用习惯
  • 优先级:学科规范 > 期刊规范 > 个人风格
  • 引用红线:明确写”绝不使用未经核实的引用”,加 claim-citation 对齐检查,避免幻觉 BibTeX
  • AI 使用披露:Methods 节声明用了 Claude 做什么
  • Writing Quality Check:禁用词表(25 个 AI 高频词)、破折号 ≤3、句长 burstiness 检查

博客/内容仓库

GitHub Blog 在《How to write a great agents.md》里总结了从 2500 个仓库观察到的规律:

  • 用强命令词 ALWAYS / NEVER / MUST
  • 显式 Personality 区块(Tone / Style / Voice 三分)
  • 输出格式模板(H1 / meta / H2 节 / CTA / tags)
  • 词汇黑白名单(“challenge” 代替 “problem”)

HumanLayer 建议博客 AGENTS.md < 60 行;共识上限 < 300 行。


九、中文社区的独有视角

中文开发者写 CLAUDE.md,和英文社区同中有异。

“八百字”基准。知乎一位作者的严谨实验:三千字砍到一千字有所改善,砍到八百字明显变好,砍到四百字时关键信息丢失,最后稳定在八百字左右。这个数字和英文社区 “60—250 行” 的基准换算下来基本一致。

四工具碎片化是中文开发者独有的痛点:Cursor + Claude Code + Trae + 通义灵码要维护四套配置。Mr-chen-05/rules-2.1-optimized 这种专门为中国开发者打造的规则体系,一键同步到 Augment/Cursor/Claude Code/Trae 四家工具,是这种痛点下的典型产物。

双语 Skill 结构:hong111109/humanizer 用 zh/ + en/ 子目录分别存中英模式,自动检测输入语言。这是中文圈独有的 skill 组织形式。

“使用中文交流”几乎是每个中文开发者全局 CLAUDE.md 的标配。加上”python 包管理默认 uv”、“node 包管理默认 pnpm”这类工具链偏好——中文圈的全局 CLAUDE.md 倾向于工具链偏好 + 语言偏好混排,非常务实。

宝玉(@dotey)是中文 AI 编程第一 KOL,最近重点推荐 shareAI-lab/learn-claude-code——30 行代码实现 nano Claude Code,帮开发者看穿 harness 本质。他的另一个观点是”Vibe Coding 不神奇”:先手工跑通再交给 AI,小版本迭代(滑板车 → 自行车 → 摩托车 → 汽车)。这个隐喻契合 CLAUDE.md 的演化逻辑——从粗糙到精细,不追求一次到位。

公众号发布流水线是中文独有的非代码场景。oaker-io/wewrite、geekjourneyx/md2wechat-skill 把”抓热点 → 选题 → 排版 → 推草稿箱”做成 Skill,这在英文生态里几乎没有对应物。


十、落地清单:从全局到项目

把前九节的内容落到你自己的工作环境,下面是一个可执行的清单。

全局 ~/.claude/CLAUDE.md

保持精简,只写跨项目的偏好

  1. 语言(“使用中文交流”)
  2. 包管理器默认值(“python 用 uv,node 用 pnpm”)
  3. 隐私(“所有推送仓库默认 private”)
  4. 协作底线(“修改交互细节必须加 e2e 测试”)
  5. 自改进机制(“每次会话失败要追加避坑规则”)

行数控制在 10 行以内。它每次会话都被加载,越短越好。

PARA 根 CLAUDE.md

C:\Users\Remy\PARA\ 放一个 CLAUDE.md,内容:

  1. PARA 四目录语义与分类决策树
  2. Frontmatter 标准(title / date / tags / status / source)
  3. 语言优先级(中文优先,引用保留原文)
  4. 禁用 emoji(与全局一致)
  5. 每周 Inbox 清空 workflow

代码项目 AGENTS.md + CLAUDE.md

以 AOE 后端为例:

  • AGENTS.md 为主文件(构建命令、测试命令、Code Style、Common Pitfalls、Lessons Learned)
  • CLAUDE.md 只一行:See @AGENTS.md
  • .agents/decisions.md 版本化记录架构决策
  • .claude/skills/meta/claude-md-editing.md 规范如何编辑 CLAUDE.md 本身

引入”两次原则”

把”每次 bash 失败都写规则”改为”同一失败第二次才写规则”。第一次发生时,在 MEMORY.md 里记一笔”观察到 X”;第二次发生时,把它提升为 AGENTS.md 里的正式规则。这样信号/噪声比显著上升。

Oracle 模式(可选)

重大架构决策时,让 Claude 主动调 GPT 咨询。在 AGENTS.md 声明触发条件:

When deciding on system architecture that affects >3 modules, consult the GPT oracle via the oracle tool and record the exchange in decisions.md.

避坑清单

  • ✗ 把 CLAUDE.md 当文档塞(每行都进每次 context)
  • ✗ 硬编码 API Key、过期模型 ID(claude-3-opus
  • ✗ 场景化指令(“如何设计新的订单 schema”——只有你做订单时有用,其他时候是噪声)
  • ✗ 与 README 重复项目介绍
  • ✗ 用模糊词(“be careful”、“be nice”)
  • ✓ 每月回顾修剪一次
  • ✓ 规则有生命周期:active / dormant / dead
  • ✓ 失败进 pitfalls,成功进 lessons learned

十一、未来方向猜想

如果把 2025 年视作 CLAUDE.md 这类指令文件的元年,2026 年会发生什么?我有三个不确定但倾向性明显的猜测。

第一,CLAUDE.md 会分裂成多个层次。就像代码从”一个文件”分裂到”源码 + 配置 + 测试 + 迁移”四层一样,CLAUDE.md 会分裂成:persona(身份)/ rules(规则)/ memory(记忆)/ decisions(决策)/ pitfalls(陷阱)五层,每层有自己的生命周期和维护节奏。

第二,规则会被正式”版本化 + 签名”。就像 Docker 镜像有 tag 和哈希,未来的 AGENTS.md 会有 semver,有 checksum。“这个 agent 基于 AGENTS.md v2.3.1 做的决策” 会变成可审计的事实。这对合规场景(金融、医疗)尤其重要。

第三,会出现 CLAUDE.md 的市场。现在的 awesome-claude-code 和 aitmpl.com 是免费共享层。下一步可能会有付费的 AGENTS.md 集——针对 Stripe 集成、针对 Supabase、针对 Next.js + Drizzle + Clerk 这种组合的”成熟仓库规则包”,像 npm 包一样被 require。


十二、结语:从提示到上下文,从文件到系统

回到开头那个问题:到底要写多少 CLAUDE.md?

如果 2024 年的答案是”尽量详细”,那 2026 年的答案是”尽量少,但尽量活”。少——因为每一行都在消耗 agent 的注意力预算;活——因为规则不是静态合同,而是持续演化的机构知识

Karpathy 说 Markdown 是源代码,ghuntley 说你在给 LLM 编程,Chase 说 Context 是团队护城河。这三句话说的是同一件事——你写 CLAUDE.md 的方式,本质上是在定义你和 AI 的协作契约。这份契约写得好,agent 像一个专业的新同事;写得不好,agent 像一个健忘、恭维、动不动就自作主张的实习生。

所以不要把它当作”配置文件”。把它当作你团队/项目最重要的那份规范文档。像代码一样 review,像代码一样重构,像代码一样测试,像代码一样淘汰过时的部分。

祝你写出一份能用三年的 CLAUDE.md。


参考资料

Ad Blocker Detected

We noticed that you are using an ad blocker. This site relies on advertisements to provide free content and stay operational.

How to whitelist our site:

To continue accessing our content, please disable your ad blocker or whitelist our site. Once you've disabled it, please refresh the page.

Thank you for your understanding and support! 🙏