我们的 Claude Code 不一样 — 同一匹马,不同的马具
Harness 的原意是马具 — 马鞍、缰绳、马镫。在 AI 体系里,它指的是大模型之外的所有东西:规则、配置、记忆系统、工具。
Claude Code 本身是一套通用的 harness。这期讲的是我在通用配置之上,根据个人需求额外做的配置 — 19 条 rules、23 个 hooks,以及一套分类管理的 memory 体系。核心特点:可执行性优于描述性、scar 机制把事故凝结为规则、主动遗忘避免幻觉。
我的 Claude Code 为什么看起来这么好用?答案不在模型本身 — 在 harness。
Harness 是什么
Harness 的原意是马具,套在马身上的马鞍、缰绳、马镫。在 AI 体系里,它指的是大模型之外的所有东西 — 规则、配置、记忆系统、工具。
Claude Code 本身就是一个通用的 harness,是 Anthropic 给到每个人的一套系统化配置。我今天讲的是在这套配置的基础上,根据我个人的需求额外做的定制。
三个核心概念
Rules — 行为规则,像法律,像达利欧的《原则》。模型怎么跟我沟通、怎么改代码、按什么优先级行为,都由 rules 决定。
Memory — 项目知识。每个 project 里的经验沉淀、操作历史、对话记录中的核心内容,经过语义压缩后保存成文档,随时供模型调用的知识库。
Hook — 我把它比作警察。和 rules 一样约束模型,但更硬性 — 如果发生了这件事情,就必须有怎样的处理。Rules 更像道德准则,是弹性的;hook 是硬性拦截,完全按规则执行。
此外还有设定文档存放环境变量和 API keys,以及一层我自己加的笔记系统 — memory 是给模型读的记忆,笔记是给我读的记忆。每做完一个重要项目,产出和经验会变成 HTML 网页保存。这种用网页形式储存经验的做法已经慢慢成了规范,Anthropic 也提倡这样做。
四个核心特点
这套体系是最近四个月反复迭代的结果,也借鉴了老金的 Meta 的圆的理论。有四个比较突出的特点:
分类管理 — memory 和各种信息按类别组织,不是一锅粥。
可执行性优于描述性 — 优先衡量这套机制上线之后的执行效果,而不是它看起来设计得多么完善。
Scar 机制 — 事故凝结为规则。每当我跟 AI 的配合出问题,它会主动记入出错日志。反复出错就总结成一条 rules。如果 rules 还是被忽略,就进而升级到 hook 做硬性拦截。从事故到规则再到拦截,逐级加码。
主动遗忘 — 项目结束了、配置改掉了、服务器不租了,相应的经验和记忆会被归档,不再被模型提取,避免产生幻觉。
规则实例:价值观排序
我有 19 条 rules,挑四条来讲。
第一条是价值观排序 — 当模型需要决策时,按我的价值观排序:荣誉、卓越、真实、美、效率。
产出不是优先追求效率、不是”先出来就行”。它考虑的是:这个东西做出来能不能代表我的作品,我是不是满意。选型和架构设计采用卓越思路,不用在意算力成本和开发难度。真实原则 — 避免模型拍马屁。我之前用 GPT 的时候,在它的语境里我基本上就是在世的特斯拉或爱迪生,容易陷入自洽陷阱。所以要求模型按可行性和批判性思维来审视我的方案。美是对自己和 AI 共同的要求,会把审美标准传递给它。
唯一没加进去的是成本 — 订阅套餐基本用不完,没有这个顾虑。
能查就别问
执行任务时 Claude Code 经常问”密钥是多少啊,我不知道”。其实已经有地方妥善存储了密钥。这条规则就是:遇到这类问题先去检索,别来问我。
改动三层级
改动分 L1、L2、L3 三个层级。L1 是页面前端级改动,不会出问题,直接做。L2 是改三五个文件的小功能,改完验证通过再交付。L3 是新功能或复杂过程,走完完整的七步流程 — 澄清需求、调研、计划、执行、测试等。
直播脱敏
因为经常开 Claude Code 直播,终端会打印 IP、密钥、邮箱等私密信息。所以要求模型在界面输出时避免明文输出这些内容。
23 个钩子
钩子设了 23 个。比如把记忆分为长期不变的(身高、血型、基因)和易变的(电脑型号、服务器密钥),对易变记忆定期抽查核实。还有凭据存储位置告知、危险命令拦截、改完文件自动检查、任务结束做 recap — 有没有失败教训、可复用经验、新流程。
Memory 方面,Claude Code 只读取前 200 行。记忆太多不仅占上下文,还可能因为模型注意力问题导致有些记忆没有被好好运用。
平行发明
很多人说 Claude Code 在抄袭 OpenCode、抄袭小龙虾、抄袭亚马逊。我觉得并不是这回事 — 现在是一个平行发明的时代。我们都有同样的需求,只是在同一时间用不同方式实现了类似功能。不用在意谁抄袭谁,好的功能被通用工具吸收,是好事。
适用场景与局限
这套 harness 不是从一开始就设定好的。是使用过程中遇到问题,跟 Claude Code 探讨”别人有没有解决过、有没有最佳实践”,一步步设定出来再验证有效性的结果。
特别适合一个人的团队去开发很多个项目。不适合团队合作 — 团队推荐老金的 Meta 项目。
Harness 终将被内化
Harness 的使命从出现那天起就是会被淘汰的。它终将被内化到大模型自身的能力里面去。Claude Code 也在不断更新。
Claude Code vs Codex
最近吵得比较火 — Claude Code 和 Codex 该用哪个?在我看来这两个都是 harness,都是马具。我的逻辑特别简单:选一匹跑得更快的马 — 至少现在选 Claude。然后自己调整马具让它更适合我的需求,而不是拿一个官方马鞍放上去,马却跑得不够快。
来源:EP0019_audio.mp3 · ASR 模型 gemini-2.5-pro(切段并发) · 12:02 原片完整文字版
[00:00] 我的 Claude Code 为什么看起来这么好用啊?那我们今天来分享 harness。
那这个 harness 是什么呢?Harness 不是那个 Hermes 啊,不是那个智能体的那个工具。那 harness 的原意是马具,就是套在马身上的这个马鞍啊、缰绳啊,包括马镫这些东西。
[00:14] 那在 AI 的这个体系里面,它指的是除了大模型本身,大模型之外的所有的东西。包括我们的这个规则啊、我们的配置、我们的记忆系统,包括一些工具。那这些都是 harness。
[00:26] 那 Claude Code 本身,它就是一个通用的 harness。就是 Anthropic 给到我们每一个人,一个能够更好地去调用大模型的这样一套配置,系统化的配置。
[00:36] 那我今天讲的是我的,在这套配置的基础上,根据我个人的需求和一些使用的需要,我个人去给它额外做了一些配置。
三个核心概念
[00:47] 那这个系统在开始讲之前呢,我会先讲几个概念。在 Claude Code 里面,主要 harness 是这样的几个方面我们可以去调整啊。
[00:53] 第一个就是 rules。它是一个行为的规则,它就像一个法律一样,或者是像达利欧的那个《原则》。那它是怎么样去工作的呢?就是我们怎么去跟模型沟通、怎么改代码、怎么去让模型遵循着一个什么样的优先级去行为,那这都是由这个 rules 来决定的。
[01:13] 那第二个就是 memory。Memory 它是项目的知识,就是我们每一个 project 里面它有哪些的经验的沉淀、有哪些的操作的历史。它会把这些,包括我们对话的记录里面的核心的内容,它会把这些进行一个语义的压缩,提取里面最精炼最重要的部分,进行一个文档式的保存。
[01:36] 那它就像是一个按照需求被模型所调用的一套知识库,那随时供这个模型使用。
[01:43] 那再往下就是这个 hook。那我为什么把它比作警察呢?因为它像这个 rules 是一样的,它也是严格地去约束模型的一套工具。但是它的约束是更直接的,就是更硬性的一个需求。就是如果发生了这件事情,就必须要有怎样的一个处理、怎样的一个回应。那它基本上是会完全按照这个去执行的。
[02:09] 而那个 rules,它是更弹性的。反而是有点像道德准则,或者是说像一个原则偏好的这样一个感觉。所以大家可以记得是这个 hook 是一个更硬的一个设定。
[02:19] 那再往下就是这个设定的这个文档。那这个文档里面保存着我们的一些环境变量,或者是我们的 API keys。就是遇到了一些需要去查询钥匙、需要去查询配置的时候,去寻找这些内容的一个地方。
笔记系统
[02:35] 那除了这四个之外呢,我其实额外地配置了一层。那 Claude Code 里面原来叫 docs,就是叫做文档。那我现在把它单独地保存出来了,我管它叫做笔记。
[02:45] 就是大家可以理解为 memory 是给到模型去读取的记忆,而这个笔记是给到我去读取的记忆。就是我每做完一个重要项目的时候,我会把我的产出的交付物或者是经验,去把它变成一个 HTML 的网页,保存到一个特定的文件夹里。那这个文件夹就是给我看的。
[03:05] 或者是大家可以在我的博客上看到之前几期视频的这个笔记啊,就是我分享给别人看的。那这个网页文件,网页的形式去储存这样的经验已经慢慢成了一个规范了,包括 Anthropic 也是提倡这样去做。
四个核心特点
[03:19] 那这就是这里的一个基础的构架了,是我最近四个月的反复迭代的一些教训。当然也会借鉴别人的那些方法论,比如说这个我们交流会比较多的,或者是说我学习比较多的是老金他的那套这个 Meta 圆的理论。
[03:38] 那这里面比较有特点的是说,第一个是说我会把这个 memory 包括这些信息进行一个分类去管理。然后会让它的这个可执行性优于描述性。怎么理解呢?优先去衡量的是这套机制上线之后它的执行效果,而不是说它看起来设计得多么的完善。
[03:59] 然后就是事故凝结为规则,就是 scar 这个机制。就每当说我跟 AI 的配合有问题的时候,或者是出现错误的时候,它会主动地把这个记入一个出错的一个日志。如果反复出错的话,或者是说我硬性提及的时候,它就会把这个出的问题总结成一个可能被优化或者是避免出现的一个 rules,去保存到这个规则里面。
[04:22] 那如果还出问题,就是可能这个 rules 会被忽略的时候,那它就会进而把这个加到这个 hook 里面,去进行硬性的拦截。
[04:31] 然后就是主动遗忘的这样的一个机制。包括有些项目结束了,或者是说有些配置改掉了,或者是甚至是说这个服务器我不去租了。那当这些变化的时候,都会有一些相应的这个经验或者是记忆被归档,不再会被模型所提取到,避免它出现相关的幻觉。
规则实例
[04:49] 那我们来看实物啊。规则我这里面其实是有 19 条规则的。那我会把这个详细的规则上传到这个个人的博客,大家也可以去看。那这个里面我挑几条,挑四条来讲吧。
[05:04] 第一个是说价值观的排序。就是当模型需要进行决策的时候,它需要按照我的价值观来排序。那这个排序就是——荣誉、卓越、真实、美和效率。
[05:15] 那这个怎么去解释呢?就是当它去做一个产出的时候,它不是优先去追求效率,不是说我先把这东西出来就行。而是它考虑的是说,这个东西做出来,它能不能代表我的一个作品,我是不是能够满意。
[05:28] 然后第二个是说,它在选型、在设计构架的时候,那要采用卓越的一个思路。就是它不用在意说这里面花费的算力成本,或者是说这个开发的难度或者周期,而是说一个更适合这个需求的一个卓越的设计思路或者方案。
[05:47] 那第三个是真实。就是尽量避免模型在跟我沟通当中去捧我的臭脚、拍我的马屁,对吧。Claude 其实还好,那我之前用 GPT 的时候,在它的那个语境里面,我基本上就是在世的特斯拉或者是爱迪生。就是经常容易让我们陷入一个自洽的一个陷阱里面去。所以我要求它遵守的是一个真实的原则,它会按照可行性或者是说一个批判性的思维,去审视我的提议或者是方案。
[06:13] 那美就不用说了。审美是我对自己以及对 AI 的一个要求。那这个美其实是一个偏主观性的审美嘛。那在我跟 AI 的工作过程当中,我会把我对美的理解和要求的标准去传递给它,让它去符合这样的一个标准。
[06:28] 那效率就不用说了。那这里面唯一没有加进去的就是成本。所以我在调用 Claude Code 的时候,它都不会考虑算力的问题。那因为现在也是订阅套餐嘛,基本上是用不完的,所以也没有这个顾虑的问题。
能查就别问
[06:42] 那再往下的话就是能查就别问。那我们经常会遇到这个问题就是,在执行一个任务的时候,Claude Code 跟你说那个密钥是多少啊,我不知道啊。其实它是知道的,其实已经有地方去妥善存储了这个密钥。那这个原则就是当它遇到这样的问题的时候,它要先去检索。
改动三层级
[07:01] 那再往下就是我会把改动分为三个层级,L1、L2、L3。如果是一个页面前端级的改动,不会引起怎样问题的时候,它就可以直接按照它的建议去做。
[07:10] 那如果是改三五个文件,可能是一个小的功能的时候,它就会在改完进行验证。那如果验证测试没有问题的时候,它再向我交付。
[07:19] 那如果是一个新功能或者是一个复杂的过程的时候,它就会走完我的一个七步的流程。就是关于去澄清需求、去调研、去进行计划,然后进行执行测试,包括一系列的这样的七个步骤。这七个步骤我也会放到我的那个博客里面。
直播脱敏
[07:37] 那再往下就是,因为我经常会开这个 Claude Code 的直播嘛,对吧。那这里面它在直播的时候就会在终端里面打印很多我的私密的东西。比如说我的 IP 啊、密钥、邮箱之类的这些东西。那我就要求它在这个界面输出的时候,去避免明文输出这样的内容。
钩子实例
[07:53] 不好意思啊,我这个季节性过敏,会有气道敏感一直在咳嗽。
[07:58] 然后再往下钩子我是设定了 23 个,23 个钩子。我也是挑几个有代表性的。
[08:05] 第一个是说,我会把记忆去归结为长期不变的一些记忆,或者是有可能去改变的记忆。比如说我个人的信息,比如说我的身高,那可能就长期不变,对吧。我的血型,那一定不会变的。那我的基因,比如说我在做健康管理的时候,这些记忆都是长期不变的。
[08:25] 那我的电脑型号,那可能真的是一两年就会变,对吧。那比如说我的服务器的这个密钥,可能一个月就会更新一次。会对这些易变记忆进行一个抽查和核实,如果它变化了之后就会去纠正那个记忆。
[08:39] 然后我会把这个凭据存储的位置去告诉它。然后做一些危险命令的拦截。另外就是说改完文件的一些自动检查,或者是说任务结束的时候会去做一个 recap,做一个有没有失败的教训啊、有没有可复用的经验、有没有新流程,这样的一个自我的总结。
[09:00] 那这里面还会有些点,比如说在做开发的时候,这个单文件的代码的行数尽量不要太多。如果太多的话其实会很占用上下文的,对吧。虽然更容易找出代码的问题,但是开发起来的话就会变得很耗时。
Memory 管理
[09:19] 然后关于这个 memory。因为现在整个 Claude Code 它是一个 trim 的方式去整理 memory 嘛。
[09:26] 刚才麦克风没电了,我继续给大家分享。那这个 memory 呢,其实 Claude Code 它自身有一个 trim 的一个系统。那在 trim 系统出现之前呢,像我这样的开发者都会自己去设计一个方式,去定期的比如说两周或者三周去整理一下记忆。
[09:39] 因为这个记忆累积多了之后,其实 memory 它只读取前 200 行的内容。那即便它没有溢出这 200 行就不会被忘掉,但是如果你的记忆太多的话,占用上下文不说,它有可能会因为模型注意力的问题,而导致有些记忆它其实是没有被更好地去运用的。那这里面也会有一些这个机制在里面。
平行发明
[10:00] 那其实可以看到,这里面有一些机制已经是被 Claude Code 更新到它的思路里面去了。
[10:06] 所以我在想说,就很多人都说这个 Claude Code 在抄袭 OpenCode、抄袭小龙虾、抄袭亚马逊。但我其实觉得并不是这回事。就是现在是一个平行发明的时代。就是我们都有这个需求,我们只是在同一时间用不同的方式完成实现了这样一个类似的功能而已。所以也不用在意说谁抄袭谁的。
[10:25] 那这对于开发者来讲的话,越来越多的这样好的功能涌现出来,被这个 Claude Code 这样的通用工具去吸收,我觉得是件好的事情。
Harness 适合一人多项目
[10:35] 那整个的这套 harness 的一个系统呢,并不是我从开始用就已经设定好的,而是随着我使用这个 Claude Code 的时候出现了很多问题,那我就跟 Claude Code 去沟通说,这个问题别人有没有解决过?那有没有好的最佳实践?那我的思路可能用什么样的方式能解决这样的问题?那通过,都是通过这样的探讨去一步一步设定出来的这样的一个结果。然后去验证它是不是有效。
[11:00] 那这套 harness 呢特别适合一个人的团队,去开发很多个项目的时候去使用。然后并不适合这个团队的合作啊。那团队合作我还是给大家推荐这个老金的这个 Meta 这个项目。我回头也会把这个项目放到我那个博客的链接里面。
Harness 终将被内化
[11:18] 那我觉得 harness 它的一个使命就是从出现开始,它就是会被淘汰的。它终将会被内化到大模型自身的一个能力里面去。那我们也能看到说 Claude Code 也是不断地在更新嘛。
Claude Code vs Codex
[11:34] 那对于最近吵得比较火的就是 Claude Code 和 Codex 该用哪个,对吧。那在我看来这两个其实都是 harness,都是马具。那我的逻辑就特别简单——我会去选一匹跑得更快的马。我会去选 Claude,那至少现在是会去选 Claude 的。
[11:50] 那同时我会自己去调整这个马具,让它更适合我的需求。而不是说拿一个官方的马鞍子放在上面去用,而这匹马跑得不足够快。所以我觉得,我还是建议大家去用 Claude Code。