永远不要运行 Claude /init
了解自动生成的 Claude.md 文件为何会损害编码智能体,以及如何用更好的方案提高性能并降低成本。
本页目录
如果正在使用 Claude Code 或其他编码智能体,可能会看到一个 init 命令,它承诺创建一个 CLAUDE.md or agents.md 文件,用来记录代码库相关文档。
永远不要运行它。如果发现自动生成的文件,请删除。
它创建的文件会消耗 token、分散智能体注意力,而且过时速度比炎热天气中的梨腐烂还快。 研究已经证实这一点:不必要的上下文文件会让任务更难,而不是更容易。
智能体如何使用上下文
智能体的 上下文窗口 会被划分为多个阶段:
| 阶段 | 用途 | 灵活性 |
|---|---|---|
| 系统提示词 | LLM 指令、MCP Server、系统工具、 CLAUDE.md content | 不灵活,启动时固定 |
| 探索 | 理解代码库中的内容 | 非常灵活 |
| 实现 | 编写和修改文件 | 非常灵活 |
| 测试 | 运行测试、调试、反馈循环 | 非常灵活,遇到问题时可能急剧膨胀 |
探索、实现和测试都是灵活的。简单任务只需少量探索,没有 bug 的实现也只需少量测试。
但是, 系统提示词 is 会在智能体启动时立即固定。你的 CLAUDE.md 中的所有内容都会使其膨胀,给真正执行工作的阶段留下更少空间。
缩小系统提示词可以为实际工作提供更多空间,并降低成本。
指令预算
LLM 不仅有上下文窗口,还有 指令预算,也就是一次能够遵循的指令数量上限。
你的 CLAUDE.md 中的每句话都是一条指令。现实中,LLM 大约能处理 300~400 条指令 。更大的模型可能能达到 500 条。
如果向 CLAUDE.md塞入数十条无关指令,智能体还没开始处理任务,预算就已经被消耗了。
全局性问题
一个常见建议是:如果智能体做了你不喜欢的事情,就在 CLAUDE.md.
中添加规则。也许它使用 npm 而不是 pnpm,也许它采用了你讨厌的 React 模式,于是你加上一行。
问题在于 CLAUDE.md is global。每条指令都会应用于每个会话:前端、后端、文档、数据库,全部如此。
这条 React 规则对前端会话有用,但下一个会话可能只处理后端,它就完全无关;再下一个会话可能处理文档。
无论是否相关,新增的每一行都会在所有会话中持续累积成本。
Init 实际生成什么
Init 命令往往生成相同类别的内容,而这些内容全都有问题。
命令清单。 Init 喜欢把 package.json 中的每个脚本都倒进文件。这些内容很容易发现,智能体只需读取 package.json。你却在为重复真实来源的内容支付 token。
架构描述。 框架名称、渲染模式、编译器设置。智能体可以从配置文件和 import 中发现这些内容。一个 react-router.config 文件已经告诉它正在使用 React Router,一个 effect import 则告诉它正在使用 Effect。
文件和服务引用。 这是最糟糕的一类。Init 会记录具体文件、服务及其关系。一旦重命名文件、移动服务或修改实现,文档就会出错,并开始 主动误导 智能体。
实现模式。 具体功能如何工作、在哪里使用什么模式。这些信息不仅可以从代码中发现,也只与少部分会话相关。大多数任务不会涉及大多数模式。
贯穿始终的问题是:Init 生成的所有内容,要么很容易从源码发现,要么迟早过时。文件系统 is 本身就是文档。如果结构良好,智能体会从真实来源准确理解架构,而不是依赖腐化的摘要。
解决方案
信任探索步骤
现代编码智能体都有探索阶段。修改前,它会读取文件、搜索代码库,并针对当前任务即时构建上下文。
这严格优于静态的 CLAUDE.md ,因为它只加载相关内容,并始终反映代码当前状态。
使用 Skills 进行引导
确实存在 is 一些值得提供给智能体的有用引导。也许你希望它优先用 reducer 处理复杂 UI 状态,或遵循特定测试模式。
这些内容应该放进 skills:可发现的指令,由智能体在相关时加载,而不必在每个会话中消耗指令预算。
让 CLAUDE.md 几乎保持为空
如果基础设置不属于 CLAUDE.md,引导内容又属于 Skills,那么还剩什么?
几乎什么都不剩。我的整个 CLAUDE.md 只有:
you are on WSL on Windows
只有六个单词。之所以保留,是因为 WSL 存在智能体无法自行发现、并不直观的路径解析问题。标准应该是:只包含同时满足 undiscoverable and 全局相关.
结论
永远不要运行 Init。它生成的文件会把无关信息倒进全局上下文,膨胀系统提示词、浪费指令预算,并在代码变化的那一刻开始腐化。
你要么持续消耗 token 维护它,要么最终删除它。不如直接跳到删除这一步。
信任探索步骤,使用 Skills 进行引导,并让 CLAUDE.md 几乎保持为空。