惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

L
LangChain Blog
The GitHub Blog
The GitHub Blog
Recent Announcements
Recent Announcements
MyScale Blog
MyScale Blog
P
Proofpoint News Feed
S
Security @ Cisco Blogs
N
News and Events Feed by Topic
H
Hacker News: Front Page
Attack and Defense Labs
Attack and Defense Labs
S
Secure Thoughts
Microsoft Security Blog
Microsoft Security Blog
N
Netflix TechBlog - Medium
U
Unit 42
Stack Overflow Blog
Stack Overflow Blog
T
Threat Research - Cisco Blogs
Google Online Security Blog
Google Online Security Blog
Spread Privacy
Spread Privacy
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
L
LINUX DO - 热门话题
T
Tenable Blog
博客园 - 叶小钗
D
DataBreaches.Net
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园_首页
人人都是产品经理
人人都是产品经理
aimingoo的专栏
aimingoo的专栏
C
Check Point Blog
博客园 - 三生石上(FineUI控件)
量子位
P
Proofpoint News Feed
H
Help Net Security
Blog — PlanetScale
Blog — PlanetScale
宝玉的分享
宝玉的分享
Recorded Future
Recorded Future
The Register - Security
The Register - Security
F
Fortinet All Blogs
Engineering at Meta
Engineering at Meta
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Last Week in AI
Last Week in AI
S
Schneier on Security
V
Vulnerabilities – Threatpost
雷峰网
雷峰网
Microsoft Azure Blog
Microsoft Azure Blog
G
GRAHAM CLULEY
G
Google Developers Blog
月光博客
月光博客
V
V2EX
T
Troy Hunt's Blog
A
Arctic Wolf

博客园_首页

Linux实操--组管理、权限管理和定时任务 Java + EasyExcel 实现单个接口导出多个Excel Mem0 源码解析系列(二):提示词工程的深度剖析 Openclaw TaskFlow究竟是什么?和普通Skill技能有什么区别 博文阅读密码验证 - 博客园 嘉立创开源:应该是全网MicroPython教程最多的开发板 Hermes Agent 集成实践:从协议到生产 2026年AI编程工具横评:Cursor、Codex、Claude Code、Zed、Windsurf Java程序员必看的RAG入门教程 2026 AI效率神器:Superpowers + Claude Code 保姆级教程 本地大模型部署全攻略:从 0 到 1 玩转 Ollama 【从0到1构建一个ClaudeAgent】内存管理-上下文压缩 .NET 高级开发 | 设计、实现一个事件总线框架 电子小白入门之NE555 3. WorkBuddy:隐藏玩法,一键召唤专家,让 AI 以"专家身份"给你干活 和AI一起搞事情#3:Claude Teammate 游戏开发翻车实录 【OpenClaw】通过 Nanobot 源码学习架构---(7)Memory C# .NET 周刊|2026年3月3期 我在 Debian 11 上把 K8s 单机搭起来了,过程没你想的那么顺(/opt 目录版) 深度学习进阶(七)Data-efficient Image Transformer CLI+Skill搭建浏览器AI自动化框架,告别一切重复枯燥任务 告别Token账单无底洞:OpenClaw本地部署,重塑企业数据主权的唯一解 FastAPI+Vue:文件分片上传+秒传+断点续传,这坑我帮你踩平了! SBTI 爆火后,我做了个程序员版的 CBTI。。已开源 + 附开发过程 多模态检索开始进入工程期:用 Sentence Transformers 搭建可落地的 Multimodal RAG 100多行代码实现一个最简单的Agent(用ReAct) Claude Code 通关手册(八):推荐 5 个 Hooks,代码质量提升 3 倍 老板:“有人截图了!”。安全部门:“收到,马上查暗水印!” - why技术 技术之外,皆是人间 C#/.NET/.NET Core技术前沿周刊 | 第 69 期(2026年4.01-4.12) Snack JSONPath 项目架构分析 Claude Code Buddy 小析:一个非核心功能,如何体现产品的细节完成度 AI新时代下的图床管理方案-Cloudflare图床+MCP+Skills方案指南 化繁为简:顺丰速运App如何通过 HarmonyOS SDK实现专业级空间测量 从零实现富文本编辑器#13-React非编辑节点的内容渲染 AI开发-python-langchain框架(3-23-OpenAI Functions风格Tool Calling智能助手) .NET + AI 进阶实战:基于类的技能开发 - 打造可治理的 Agent 能力模块 【从0到1构建一个ClaudeAgent】规划与协调-技能 上周热点回顾(4.6-4.12) 电子小白的工具三件套:面包板、杜邦线、万能板 单表五亿数据的查询优化 | Mysql、StarRocks 2. WorkBuddy:从“我是谁”到“帮我干活” C# 如何减少代码运行时间:7 个实战技巧 基于HelixToolkit.SharpDX 渲染3D模型 - 笺上知微 从零开始的双臂具身VLA起源及现阶段发展综述 - SkyXZ 记对 xonsh shell 的使用, 脚本编写, 迁移及调优 - pluvium27 受够了Vibe Coding的失控?换个起点,让AI事半功倍 从开始配置漏洞环境到漏洞复现流程 - 難しい 关于10年工作经验的程序员对OpenClaw的实战经验分享以及看法 - 虚无境 Any metadata 的内存布局 C# .NET 周刊|2026年3月2期 - InCerry 我帮你测过了,测试圈排名第二的 Skill 依然很牛逼 Skill Discovery | 无监督技能发现的经典工作总结 - MoonOut PbootCMS 网站内容数量多导致访问慢?这些实用优化方案帮你提速! - 家兴网络技术工作室 上下文工程是什么?过时了么?一文讲明白! - 一枫说码 网站漏洞怎么发现并修复?一篇实用指南(附完整流程) - 家兴网络技术工作室 开了 TUN 模式还是直连?90% 的人都踩过这个坑 Github日报|2026年04月12日 - AI一族 AScript扩展多种脚本语言 - rockey627 AI 学习笔记:Agent 的记忆机制 你能被装进一个文件里吗?——7 万人把同事"蒸馏"成了 AI - 我没有三颗心脏 Claude Code 通关手册(七):给 AI 装上技能包——Skills 完全指南 - 暮色之狐 在浏览器中快速编辑代码:VSCode Web 集成实践 - Newbe36524 蒸馏自己 skill?基于 Deepseek 的蒸馏器,丐版蒸馏方式,简单便捷 - To_Carpe_Diem Spring AI Aliababa和AgentScope,哪个更好? - 苏三说技术 Etsy 把 1000 个 MySQL 分片迁进 Vitess:425TB 数据背后的真正问题不是性能,而是运维规模 MicroPython LVGL基础知识和概念:底层渲染与性能优化 - FreakStudio 数据库草图算法 Python 潮流周刊#146:CPython 引入 Rust 的进展 - 豌豆花下猫 最小生成树 - mofei1116 红日靶场七:从外网入口、容器逃逸到 AD 接管的完整利用链复盘 - YouDiscovered1t 分享四款开源且实用的 Kafka 管理工具 - 追逐时光者 vLLM 权重加载机制全解析:从挑战到理想架构 LCT 学习笔记 - ACehomoxue Avalonia UI 12.0.0 正式发布:架构演进和性能飞跃 - 张善友 当 AI Agent 把调用链拉长,延迟开始成为一门生意 conhost.exe 无法显示 U+2717 - 145a 太秀了,我把自己蒸馏成了 Skill!已开源 - 程序员鱼皮 ASP.NET Core 内存缓存实战:一篇搞懂该怎么配、怎么避坑 基于 Ghostty 带有分割标签页和为 Claude 编程设计的通知终端 - BugShare AI 焊死入口:教育的“操作系统级”重塑 - 郝hai 初级Java开发工程师使用sql脚本编写代码的过程是简单而且不糊涂 - CoderOilStation Claude Code通关手册(六):MCP协议完全指南 - 暮色之狐 边框灯光环绕动画特效实现指南 - Newbe36524 开源:子木蒸馏版的 SEO 审计工具 seo-audit-skill v1.0 我所理解的Python元模型 【从0到1构建一个ClaudeAgent】规划与协调-TodoWrite - 程序员Seven Claude 和 Codex 在审计 Skill 上性能差异探究 - ACai_sec AScript如何实现中文脚本引擎 - rockey627 【渗透测试】HTB Season10 Garfield 全过程wp - dynasty_chenzi Android 开发者为什么必须掌握 AI 能力?端侧视角下的技术变革 树状数组正确性证明 - AC-wyr 你的 AI 焦虑,可能比 AI 本身更危险——ATM 机没有消灭银行柜员,但恐慌消灭了你的判断力 - 我没有三颗心脏 一个拉胯的分库分表方案有多绝望?整个部门都在救火! - 冰河团队 动态规划入门必学之走方格问题 - Ofnoname PostgREST 与 PostgreSQL 角色权限配置全解析(生产级实践) - SheepDog1998 使用 UEFI 图形输出协议 GOP 在屏幕上显示图像的方法 - 阿源- Claude Code通关手册(五):组建你的AI专家团队,子代理系统 - 暮色之狐 一个程序员到架构师的催婚路之感悟(整整10年后的催婚相亲感悟) - MisterLip 用 Agent Skill 自动生成工作周报 - 赵康
我写了 200 行 CLAUDE.md,Claude 全忽略了——Karpathy 只用了四条
码哥字节 · 2026-06-24 · via 博客园_首页

封面图

https://github.com/forrestchang/andrej-karpathy-skills) — 原始仓库,当前 150,000+ stars

你有没有这样的经历——

用 Claude Code 帮你改一个函数,它顺手重命名了三个变量,删了一段「看起来没用」的注释,还把你写了两年的配置文件格式改了一遍。你没让它做这些,但它做了。你在 CLAUDE.md 里加了一条「不要修改无关代码」。下次又出了别的问题,又加一条。两个月后,你的 CLAUDE.md 有 180 行,Claude 照样我行我素。

这个场景我在三个不同的团队里见过。工程师们不是不努力,恰恰相反——他们太努力了,把 CLAUDE.md 当成了一个防御系统在建设,每出一个问题就打一个补丁,最后补丁比代码还多。

今年 1 月 26 日,Andrej Karpathy 在 X 上发了一条帖子,说这两年他的编程工作流发生了 20 年来最大的变化——从 80% 手写代码,变成了 80% 让 AI Agent 跑代码。他顺带列出了他观察到的 AI 写代码时的四种系统性失败模式。

第二天,开发者 Forrest Chang 把这四条观察翻译成了一个 CLAUDE.md 配置文件。到今天,这个仓库的 star 数已经超过 15 万。

这篇文章不是告诉你「赶紧去 copy 这个文件」——那太容易了,也没什么意义。我想聊的是:一个 70 行的文件为什么能跑赢几百行的「精心配置」?这背后有一个关于约束设计的反直觉原则,想清楚它,你写的每一个 CLAUDE.md 都会更有效。

Karpathy 发现了什么:四种系统性失败,不是偶发 Bug

很多人以为 Claude Code 出问题是随机的——有时候听话,有时候不听话,具体看运气。Karpathy 的观察否定了这个判断。他说这些失败是系统性的,每次出现,都来自同一批根因。

四种失败模式,逐一拆解。

第一种:静默假设(Silent Assumptions)

你说「帮我优化这个接口的性能」,Claude 默默选了一种解法,也许是加缓存,也许是改索引策略。它没告诉你它的假设,没问你当前的瓶颈在哪里,就开始写。等代码出来你才发现——它优化的方向完全不对,你们生产环境的瓶颈根本不在那里。

这不是 Claude 笨,这是它的训练目标之一就是「尽快给出答案」。在对话场景里这是优点,在写代码这件事上是隐患。

第二种:代码过度生长(Hypertrophy)

让它写一个简单的文件解析器,它给你来了一个带错误重试机制、支持多种编码格式、可以通过配置扩展的「企业级」版本。你没要这些,但它默认「加了更多等于更好」。

生产环境里最难维护的代码,往往不是逻辑复杂的那种,而是超出实际需求的那种——它的复杂度无法通过测试覆盖,无法通过代码审查发现,只有等到维护的时候才会爆。

第三种:附带修改(Collateral Changes)

这是最让工程师头疼的一种。让它修一个 Bug,它在修 Bug 的同时,顺手把旁边的函数重构了,把一个变量名「改得更规范了」,把一段死代码删了。每一个改动单独看都「有道理」,组合在一起就是一个很难 review 的 PR,和你以为的「只改了一行」相差甚远。

第四种:无验证完成(Unverified Completion)

「我已经修好了」。但它有没有跑测试?有没有检查边界条件?有没有验证和现有代码的兼容性?很多时候没有。它在完成一件你没有定义「完成标准」的任务。

这四个问题组合起来,就是工程师们普遍感受到的「AI 写的代码需要大量 review 才能用」——不是因为代码本身有语法错误,而是因为它做了你没要求的事、没做你真正需要验证的事。

Karpathy CLAUDE.md 四条规则的核心逻辑:针对四种系统性 AI 编程失败模式
图:四种失败模式与四条规则的对应关系

四条规则的原文和拆解

Forrest Chang 的 CLAUDE.md 文件里,对应这四种失败,写了四条规则。我把原文引用出来,逐条拆解它为什么这样写。

规则一:Think Before Coding(编码前先思考)

"State your assumptions explicitly. If uncertain, ask. Surface confusion and tradeoffs rather than proceeding silently."

针对静默假设。核心动作是把「隐藏的前提」显式化——在开始写代码之前,先说出你基于什么前提,如果有多种解读,先列出来,有不确定的地方先问。

这条规则改变的不是 Claude 的能力,而是它的行为模式——从「默认执行」改为「先对齐再执行」。对于一个做过大型项目的工程师来说,这和我们开需求评审会的逻辑是一样的:不是说你不懂技术,而是「对齐理解」这件事本身有价值。

规则二:Simplicity First(简单优先)

"Minimum code that solves the problem. Nothing speculative. No unrequested abstractions, no speculative features."

针对代码过度生长。关键词是「minimum」和「nothing speculative」——不写猜测性的功能,不搭用不到的抽象层。

这条规则反直觉的地方在于:它不是说写简单的代码,而是说「只写解决当前问题的代码」。用不到的抽象不是准备,是负债。我见过太多「以后可能用到」的 interface,最后一次都没被调用过,但维护新人要花半小时理解它为什么存在。

规则三:Surgical Changes(精确手术式修改)

"Touch only what you must. Clean up only your own mess. When editing code, restrict modifications to what's required and match existing style."

针对附带修改。「touch only what you must」这句话很有力度——你碰到的每一行代码都是修改范围,不是你要修改的就不要碰。「clean up only your own mess」更直接:不要去整理别人的代码,即使你觉得它不够优雅。

我用一个架构评审会的场景来类比:你来解决一个性能问题,不是来重构整个模块的。即使你顺手发现了三个可以优化的地方,正确做法也是记下来,另开 ticket,而不是一个 PR 塞进去。理由很简单——review 不了,出了问题不知道是哪行改的。

规则四:Goal-Driven Execution(目标驱动执行)

"Define success criteria. Loop until verified. Transform imperative instructions into declarative goals with verification steps."

针对无验证完成。不说「做这件事」,说「做这件事,完成的标准是 X,做完之后验证 Y」。给成功标准,给验证步骤,而不只是给任务描述。

Karpathy 在 X 上对这条的解释最直白:「LLMs 特别擅长循环直到满足条件为止。不要告诉它做什么,给它成功标准,看着它自己搞定。」

这四条规则,每一条都指向一个具体的失败模式,没有一条是泛泛的「写好代码」。这不是风格指南,这是故障修复手册。

为什么 15 万人 star 了这个文件

社区对这个文件的反应出乎意料的好。我梳理了一下原因,有几个层面。

数据层面:在 30 个代码库上的社区测试显示,没有 CLAUDE.md 的错误率约为 41%,用了这四条规则之后降到 11%,合规率约 78%。这不是一个学术 benchmark,是 X 上一个叫 Mnilax 的开发者做的开放实验,被 Dickie Bush 等人转发后广泛流传。数字有争议,但方向没有争议:少量精准的规则,比零规则有效得多。

工程直觉层面:四条规则每一条都能让工程师产生「对,就是这个问题」的共鸣。这不是 AI 优化技巧,这是 Code Review 里每周都在念叨的东西——只不过以前是对人说的,现在要对 AI 说。

极简层面:70 行,人类可读,几秒钟扫一遍。「最好的 CLAUDE.md 随着时间推移会越来越短——你删掉那些事实上用不着的规则。」这句话本身就是一种设计哲学的体现。

你的 CLAUDE.md 为什么越写越烂

这才是我最想聊的部分。

「规则越多越好」是一个直觉上正确、逻辑上错误的判断。表面上看,每次 Claude 出问题你加一条规则,下次不就不出这个问题了?实际上不是这么工作的。

上下文窗口的稀释效应

Claude 处理 CLAUDE.md 的方式,不是「逐条检查是否违规」,而是在生成响应时把规则文件作为上下文权重的一部分。当你的规则文件有 200 行,每一条规则分配到的注意力权重就低了一大半。

2025 年 Jaroslawicz 等人的研究给出了一个残酷结论:「指令数量翻倍,合规率减半。」 更直接的数据:即使是最好的模型,在 Agent 场景里,完美遵守所有指令的任务不超过 30%。你有 200 条规则,Claude 有效遵守其中 60 条,而且不是固定的那 60 条。

防御性写法的副作用

大多数工程师写 CLAUDE.md 的模式是这样的:发现 Claude 做了 X → 加一条「不要做 X」。这是响应式的、防御性的写法。问题在于,你不可能穷举所有的 X,而且「不要做 X」「不要做 Y」「不要做 Z」堆在一起,Claude 要在这个「禁令列表」里工作,认知负担很高,反而可能导致它在「有没有违反某条禁令」这件事上花太多注意力,而不是在「把这个任务做好」这件事上。

和 Karpathy 四条规则的本质区别

Karpathy 的四条规则不是禁令清单,是行为框架。它们定义的不是「不准做什么」,而是「决策时的优先次序和工作方式」。

「Think before coding」不是「不准瞎写」,是「先对齐再执行」。

「Simplicity first」不是「不准写复杂代码」,是「默认选最简解法」。

「Surgical changes」不是「不准动其他代码」,是「你的范围只有这里」。

「Goal-driven execution」不是「必须写测试」,是「定义验证标准,跑到标准满足为止」。

框架和禁令的区别,在于框架提供的是判断依据,禁令提供的是行为约束。判断依据让 Claude 在遇到新情况时知道怎么选,禁令只能管你已经见过的情况。

用架构的语言说:禁令是 blacklist,框架是 principle。principle 的复用性远高于 blacklist。

极简约束 vs 穷举禁令的对比:工作原理和效果差异
图:框架式约束与禁令清单的本质区别

怎么审视你自己的 CLAUDE.md

如果你现在有一个 CLAUDE.md,用下面三个问题扫一遍:

问题一:规则超过 80 行了吗?

如果超过了,先压缩。把所有「不要做 X」「禁止 Y」的条目找出来,问自己:这条规则对应的是一个 Claude 的系统性行为问题,还是某一次的偶发事故?偶发事故的规则,没有保留价值。

问题二:你的规则在说「禁止什么」还是「怎么做决策」?

比较这两个写法:

写法 A:「不要修改和任务无关的代码。不要重命名变量。不要删除注释。不要格式化代码。不要重构函数签名。」

写法 B:「Surgical changes:只改任务要求的部分,不动其他任何东西,包括格式、注释和命名。」

写法 A 有五条规则,写法 B 有一条。在实际效果上,写法 B 覆盖的情况更多,因为它给的是判断标准,不是列举清单。

问题三:有没有可以被强制执行的规则,用了 Hooks?

有一类规则比 CLAUDE.md 更可靠:Hooks。Claude Code 的 Hooks 是在特定 Agent 行为发生前后触发的脚本,它不依赖 Claude 读到规则、理解规则、决定遵守规则这一串概率链——它是代码强制的。

「每次生成代码后必须跑 lint」——用 Hook。

「提交前必须跑测试」——用 Hook。

「修改配置文件前必须备份」——用 Hook。

能用代码强制的事情,不要靠文字请求。CLAUDE.md 的规则只能管它决定遵守的时候。

实测:用四条规则两周的真实感受

我用 Karpathy 的四条规则工作了两周,说一下真实体验。

最明显的变化是「啊这里有歧义」的频率提高了。以前我发一个模糊的任务,Claude 直接就跑了,跑完才发现方向不对。现在它会先说:我理解你的需求是 A,基于这个前提我打算这样做,如果你的实际需求是 B,我需要调整一下方向。这个「对齐确认」动作,节省的时间远比多发了一条消息要值。

变化二是 diff 干净了很多。同样是「修这个 Bug」,以前的 PR 经常出现 20+ 个文件变更,其中 15 个是「顺带」的修改。用了 Surgical Changes 这条规则之后,diff 基本就是你要求改的那几行。Code Review 轻松了,出了问题也好 rollback。

变化三是「任务完成」这件事变得更可信了。以前 Claude 说「好了」,我还是要手动跑一遍测试。现在它会说「我跑了 unit test,全过,也验证了 edge case X 和 Y」。这不是 100% 可靠,但比以前好多了。

需要老实说的是:这四条规则对于复杂的大型任务效果最明显,对于「帮我看一下这行代码有没有问题」这类小任务,它有时候会过度谨慎——先对齐再执行,结果你觉得它在「问废话」。规则要加,但不是所有场景都一样适用。

常见问题

Q:这个 CLAUDE.md 只适合 Claude Code,用 Cursor 或者 Copilot 有用吗?

A:规则的内容适用于任何有类似 context 文件机制的工具。Cursor 的 .cursorrules、Windsurf 的 .windsurfrules 里用同样的逻辑都有效果。但 Claude Code 在「Goal-Driven Execution」这条规则上受益最明显,因为它的 Agent 模式本身就支持循环执行直到条件满足。

Q:Karpathy 的四条规则能直接 copy 用吗?需要修改吗?

A:可以直接用,原仓库(github.com/forrestchang/andrej-karpathy-skills)里的 CLAUDE.md 是经过社区打磨的版本,比 Karpathy 在 X 上的原始描述更具体。建议先整体 copy 跑两周,再根据你项目的具体情况微调。不建议一上来就大改——它的精简是有意为之的,你加的每一条规则都要想清楚「这条真的有必要吗,还是我只是想图个安心」。

Q:规则文件超过 80 行就一定不好吗?

A:不是绝对的。如果超过的部分是项目特定的技术约束(比如「这个项目用 Spring Boot 3.x,不要用 3.x 废弃的 API」),是有必要的。但如果超过的部分是大量「不要做 X」的禁令,特别是那些描述 Claude 通用行为倾向的规则,大概率在浪费 context 预算。一个有用的判断方法:把规则分成「通用行为框架」和「项目特定约束」两部分,通用行为框架保持简短,项目约束按需添加。

Q:这四条规则会不会让 Claude 的速度变慢?

A:Think Before Coding 会增加一轮确认往返,在简单任务上确实多一步。但 Goal-Driven Execution 反过来会减少「以为做完了但其实没做完」的返工。总的来说,复杂任务的净效率是正的,简单任务可以在 prompt 里加「直接执行,不需要确认前提」来跳过这步。
beeaa00ee37c5db0e2fb2c5c5efe4f29

总结

说到底,CLAUDE.md 是一个思维框架,不是一个行为合规文件。Karpathy 的四条规则胜在它告诉 Claude「怎么做决策」,而不是「不准做什么」。

后者你永远列举不完,前者四条就够了。你的 CLAUDE.md 如果写得越来越长,大概率说明你在用第二种思路在做第一种事。

写完这篇,码哥自己把团队的 CLAUDE.md 改了一遍,从 160 行压到 40 行,主要删的都是那些「不要做 X」的禁令。

跑了一周,差别比预期还明显。你身边有人也在配置 Claude Code 的 context 文件,这篇可以直接转给他,省他走一遍弯路。

下一篇打算聊 Claude Code Hooks 的具体用法——代码强制执行的那部分,感兴趣关注一下。