如何编写一条真正能够被执行的 CLAUDE.md 规则

发布日期:2026-05-10 10:34:08   浏览量 :1
发布日期:2026-05-10 10:34:08  
1

2026西湖龙井茶官网DTC发售:茶农直供,政府溯源防伪到农户家 

随机打开一个 CLAUDE.md 文件,你会发现构建命令、架构说明和规则。这些规则往往属于无法强制执行的那一类。“编写整洁的代码。”“谨慎处理类型。”“遵循我们的约定。”作者写下的每个字都是认真的。智能体也会阅读这些规则。但没有任何机制能检查智能体是否遵守了它们,因为根本无法做到。

在来自拥有 10 个以上星标的公共 GitHub 仓库的 580 个 CLAUDE.md、AGENTS.md 和 .cursorrules 文件语料库中,74% 的文件包含零条机器可提取的规则。这并不是因为作者不重视规则。而是因为大多数规则是以一种解析器无法将其提取为确定性检查的形式编写的。

本文探讨的就是这种差异。具体来说:如何表述一条规则,使得解析器能够提取它,验证器能够检查它,同时又不牺牲你原本想要表达的含义。

原则

可执行性源于可验证的表层特征。当代码中存在与之匹配或不匹配的具体模式时,规则就是可验证的。“函数名使用 camelCase(小驼峰命名法)”是可验证的:读取抽象语法树,列出函数名,检查大小写格式。“命名保持一致”则是不可验证的:没有具体的模式可供检查,只能依靠主观判断。

两者之间的差距,即是意图与执行之间的差距。在这两种情况下,你的本意是相同的。但只有其中一种能在转化为检查机制后存活下来。

这是我使用的经验法则:一名没有背景知识初级工程师能否仅通过阅读规则并查看代码,机械地检查代码是否遵循了该规则?如果是,则该规则是可执行的。如果他们不得不问“这里的‘一致’是什么意思?”,则该规则不可执行。

三组对比案例详解

选取几个常见的意图,看看它们是如何失败或成功的。

类型安全。你希望使用强类型。

差:  谨慎处理类型。
好:  `src/` 目录下禁止使用 `any` 类型。异步函数必须显式声明返回类型。

差的版本没有可验证的表层特征。“谨慎”不是一种检查。好的版本有两个检查点:一个禁用的标记(any)和一个结构属性(异步函数声明上的返回类型注解)。两者都直接针对抽象语法树进行检查。

模块结构。你希望导入和导出具有可预测性。

差:  倾向于清晰的模块结构。
好:  仅使用命名导出。禁止默认导出。文件名使用 kebab-case(短横线命名法)。

“清晰”对解析器来说毫无意义。仅使用命名导出和使用短横线命名法都是代码的二元属性,即要么存在,要么不存在。第一个版本听起来更像指导,因为它更宽泛,但宽泛正是问题所在:它涵盖了一切,却什么也强制执行不了。

偏好优于替代方案。你希望使用 React 函数式组件,而不是类组件。

差:  编写现代化的 React 代码。
好:  优先使用函数式组件而非类组件。

“现代化”是一个移动的目标,没有固定的表层特征。另一方面,“优先使用 X 而非 Y”的模式有一个清晰的检查方法:统计每种情况的实例数量,计算比率,并根据阈值进行评分。这是指令文件中最有用的模式之一,因为它以可衡量的方式捕捉了现实世界中的偏好(而非绝对禁止)。

参考表

十二种常见意图,成对列出:

意图 不可执行 可执行
命名

免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。

关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
回到顶部