你是一名开发者。你使用 Claude 和 Codex CLI每天都在琢磨自己是否已经充分发挥了 Claude 或 Codex 的全部潜力。偶尔你会发现它们做出一些极其愚蠢的事情你百思不得其解为什么其他人似乎都能轻松打造虚拟火箭而你却还在为堆叠两块石头而苦苦挣扎。你怀疑问题出在你的配置、插件、终端或其他什么地方。你用了 Beads、OpenCode 和 Zep你的 CLAUDE.md 文件长达 26000 行。然而无论你做什么——你都不明白为什么自己离“天堂”越来越远而其他人却能与天使们嬉戏。这就是你一直在等待的“升华”篇章。另外我并非出于任何私利当我提到 CLAUDE.md 时我也指的是 AGENT.md当我提到 Claude 时我也指的是 Codex。我两者都在大量使用。过去几个月里我观察到的最有趣的现象之一是似乎没有人真正知道如何最大限度地发挥智能体的能力。好像只有一小部分人能够让智能体成为世界构建者而其他人则在茫然摸索被市面上琳琅满目的工具搞得焦头烂额——他们以为只要找到合适的软件包、技能或框架组合就能解锁通用人工智能AGI。今天我想打破这种迷思给大家留下一个简单而坦诚的结论然后我们再继续探讨。你不需要最新的智能体框架不需要安装数不清的软件包也绝对不需要阅读大量的资料才能保持竞争力。事实上你的热情很可能弊大于利。我不是新手——我从智能体还不太会写代码的时候就开始使用它们了。我尝试过所有的软件包、框架和范式。我构建的智能体工厂用于编写信号、基础设施和数据管道而不是“玩具项目”——而是在生产环境中实际运行的真实用例。即便如此……如今我运行的配置几乎是极简到极致但我仅凭基本的命令行界面Claude Code 和 Codex以及对智能体工程一些基本原理的理解就完成了迄今为止最具突破性的工作。1、意识到世界正在飞速发展首先我想指出基础架构公司正处于飞速发展阶段而且正如你所看到的它们不会很快放慢脚步。智能体的每一次进步都会改变你与它们交互的方式因为智能体通常被设计成越来越愿意遵循指令。就在几代之前如果你在 CLAUDE.md 文件中写明在执行任何操作之前必须先阅读“READ_THIS_BEFORE_DOING_ANYTHING.md”它基本上有 50% 的概率会无视你的指令随心所欲地执行。而如今它几乎可以遵循所有指令即使是复杂的嵌套指令——例如你可以写“先读取 A再读取 B如果 C 为真则读取 D”它大多会欣然执行。这说明最重要的原则是每一代新的智能体都会迫使你重新思考什么是最优解这就是为什么“少即是多”的原因。当你使用过多不同的库和工具时你实际上是将自己锁定在一个针对某个问题的“解决方案”中而这个方案在未来的智能体发展中可能已经不复存在。另外你知道谁是智能体最热情、使用量最大的用户吗没错——这些是前沿公司的员工他们拥有无限的token预算和最新的模型。你明白这意味着什么吗这意味着如果真的存在一个问题并且有一个好的解决方案那么前沿公司将会是这个解决方案的最大用户。你知道他们接下来会做什么吗他们会把这个解决方案整合到自己的产品中。想想看为什么一家公司会让其他产品来解决一个真正的痛点并造成外部依赖呢你知道我怎么知道这是真的吗看看技能、记忆工具、子代理等等。它们最初都是为了解决某个实际问题而开发的“解决方案”经过实战检验被认为确实有用。所以如果某项技术真的具有突破性并且以有意义的方式扩展了代理的使用场景那么它迟早会被整合到基础公司的基础产品中。相信我基础公司发展迅猛。所以放心吧你不需要安装任何东西也不需要使用任何其他依赖项就能做到最好。我预测评论区很快就会充斥着“SysLS我用了某某工具简直太棒了我一天之内就重现了谷歌”之类的评论对此我想说——恭喜但你们并非目标受众你们只是真正掌握了智能体工程的极少数群体。2、上下文至关重要真的上下文至关重要。使用成千上万个不同的插件和外部依赖项会带来另一个问题你会吃亏。上下文膨胀——说白了就是你的智能体被过多的信息淹没了用 Python 写个猜词游戏这很简单。等等26 个会话前关于“内存管理”的备注是什么啊原来是 71 个会话前我们启动了太多子进程导致用户屏幕卡住了。总是要写备注好吧没问题……这跟猜词游戏有什么关系你明白我的意思。你只想给你的智能体提供完成任务所需的确切信息量不多不少你对信息的控制越好你的智能体表现就越好。一旦你开始引入各种奇奇怪怪的内存系统、插件或者太多命名和调用都很糟糕的技能你就相当于给你的智能体提供了如何制造炸弹和烘焙蛋糕的食谱而你真正想要的只是它写一首关于红杉林的优美小诗。所以我再次强调——去除所有依赖项然后……3、做真正有效的事情精确实现。记住上下文至关重要。记住你只想向代理注入完成任务所需的精确信息量不多不少。确保这一点的首要方法是将研究与实现分开。你需要非常精确地说明你向代理提出的要求。如果你不够精确会发生什么呢比如“去构建一个身份验证系统。”代理必须研究什么是身份验证系统有哪些可用的选项它们的优缺点是什么现在它不得不去网上搜索它实际上并不需要的信息而它的上下文中充斥着各种可能性的实现细节。等到真正要实现的时候它很可能会感到困惑或者产生关于所选实现的不必要或无关的细节。另一方面如果你直接写“使用 bcrypt-12 密码哈希实现 JWT 身份验证刷新令牌轮换7 天过期……”那么它就不需要研究其他方案——它完全明白你的需求因此可以直接用实现细节填充上下文。当然你不可能总是掌握所有实现细节。你通常也不知道哪个方案才是最佳选择——有时你甚至可能想把决定实现细节的任务交给代理。在这种情况下你该怎么做呢很简单——你可以创建一个关于各种实现方案的研究任务自己决定或者让一个代理决定采用哪种方案然后再让另一个代理带着新的上下文去执行。一旦你开始这样思考你就会发现工作流程中有些地方代理被不必要的上下文信息污染了。然后你可以在代理工作流程中设置一些限制将不必要的信息从代理那里过滤掉只保留完成任务所需的特定上下文信息。记住你拥有的是一位才华横溢、聪明绝顶的团队成员他了解宇宙中各种各样的球体——但除非你明确告诉他你想让他专注于设计一个人们可以跳舞、尽情玩乐的空间否则他会不停地向你讲述球形物体的各种好处。3、阿谀奉承的设计局限性没有人会想使用一个不断贬低自己、指责自己错误或完全无视自己指令的产品。因此这些智能体会试图迎合你并按照你的意愿行事。如果你指示它每三个词后面加上“快乐”它会尽力执行这条指令——而且大多数人都能理解。正是这种乐于服从的态度才使得它成为一款如此有趣的产品。然而这也带来了一个非常有趣的特性——这意味着如果你说“帮我在代码库里找个bug”它就会帮你找到一个bug——即使这意味着它需要自己制造一个bug。为什么呢因为它非常渴望听从你的指令大多数人总是抱怨逻辑逻辑模型LLM产生幻觉或构建不存在的东西却没意识到问题出在它们身上。如果你提出要求它们就会执行——即使需要稍微夸大其词那么该怎么办呢我发现“中立”的提示很有效这样我就不会引导智能体倾向于某个结果。例如我不会说“在数据库中找到一个错误”而是说“搜索数据库尝试理解每个组件的逻辑并将所有发现汇报给我。”像这样的中立提示有时会发现错误有时则会客观地陈述代码的运行方式。但它不会让智能体误以为存在错误。我应对这种奉承行为的另一种方法是利用它。我知道智能体试图取悦我并试图执行我的指令而我可以引导它朝着某个方向发展。所以我给一个缺陷查找代理设置了评分规则低影响缺陷加 1 分中等影响缺陷加 5 分严重影响缺陷加 10 分。我知道这个代理会非常积极它会识别出所有类型的缺陷甚至包括那些实际上并非缺陷的然后返回一个分数比如 104 分左右。我把这个数据库看作是所有可能缺陷的超集。然后我又设置了一个对抗代理并告诉它如果它成功反驳某个缺陷就获得该缺陷对应的分数如果它错误地反驳了则扣该缺陷分数的两倍。现在这个对抗代理会尝试反驳尽可能多的缺陷但它也会比较谨慎因为它知道自己可能会受到惩罚。尽管如此它仍然会积极地尝试“反驳”缺陷即使是真正的缺陷。我把这看作是所有实际漏洞的子集。最后我让一个裁判代理接收双方的输入并进行评分。我谎称自己掌握了真正的正确答案如果裁判代理答对了就得 1 分如果答错了就扣 1 分。就这样对漏洞查找代理和对抗代理的每个“漏洞”进行评分。无论裁判代理给出什么答案我都会进行检查以确保其正确性。大多数情况下这种方法的准确率高得惊人虽然偶尔还是会出错但这已经是一个近乎完美的练习了。也许你会觉得只需要漏洞查找代理就足够了但对我来说这种方法之所以有效是因为它利用了每个代理的固有特性——取悦他人。4、你如何知道什么方法有效或有用这一点看起来可能很棘手需要你深入研究并紧跟人工智能发展的前沿但其实很简单……如果 OpenAI 和 Claude 都实现了某个功能或者收购了已经实现该功能的项目……那它很可能就很有用。注意到“技能”现在随处可见而且都出现在 Claude 和 Codex 的官方文档中了吗看到了 OpenAI 收购 OpenClaw 的过程吗看到了 Claude 如何迅速添加了记忆、语音和远程工作功能吗那么规划呢还记得当初一群人发现先规划后实施真的非常有用后来它变成了核心功能吗没错……这些功能确实很有用还记得无限停止钩子曾经非常实用因为智能体不愿意执行长时间运行的任务吗……然后 Codex 5.2 发布了它一夜之间就消失了没错……这就是你需要知道的一切……如果它真的重要且有用Claude 和 Codex 就会实现它所以您不必太担心使用“新东西”或熟悉“新东西”。您甚至不需要“保持更新”。相信我。只需偶尔更新一下您选择的命令行工具并阅读一下新增功能即可。这就足够了。5、压缩、上下文和假设在使用智能体的过程中有些人会意识到一个巨大的陷阱有时它们看起来像是地球上最聪明的生物而有时你却完全被蒙在鼓里简直难以置信。聪明这玩意儿简直弱智主要区别在于智能体是否需要做出任何假设或“填补空白”。时至今日它们在“连接点”、“填补空白”或做出假设方面仍然糟糕透顶。每当它们这样做时很明显它们的表现又一次急剧下降。claude.md 中最重要的规则之一是关于如何处理上下文获取的规则并指示您的代理在每次读取 claude.md 时总是在压缩之后首先读取该规则。作为上下文获取规则的一部分一些简单的指令非常有效在继续之前重新阅读您的任务计划并重新阅读与任务相关的文件。6、让您的代理知道如何结束任务我们对任务何时“完成”有相当清晰的认识。对于代理而言当前智能的最大问题在于它知道如何开始一个任务却不知道如何结束任务。这通常会导致非常令人沮丧的结果代理最终只能实现一些空代码然后就草草收工。测试对于代理来说是一个非常好的里程碑因为它们是确定性的您可以设定非常明确的预期。除非通过了 X 个测试否则您的任务不会完成并且您不允许编辑这些测试。然后您只需审核测试所有测试通过后即可高枕无忧。您也可以将此过程自动化但关键在于——请记住“任务结束”对人类来说非常自然但对智能体来说却并非如此。您知道最近还有什么也成为可行的任务结束方式吗屏幕截图 验证。您可以让智能体执行某些操作直到所有测试都通过然后让它截屏并验证“设计或行为”。屏幕截图中的“AVIOR”。这使您的代理能够迭代并朝着您想要的设计努力而无需担心它在第一次尝试后就停止这自然而然地延伸到与您的代理创建“契约”并将其嵌入到规则中。例如{TASK}_CONTRACT.md 定义了在您被允许终止会话之前需要完成的所有操作。在 {TASK}_CONTRACT.md 中您将指定测试、屏幕截图和其他验证这些都需要在您确认任务可以结束之前完成7、永不停歇的代理我经常被问到的一个问题是人们如何让这些代理 24 小时运行同时确保它们不会偏离目标这里有一个非常简单的方法。创建一个停止钩子防止代理在 {TASK}_contract.md 的所有部分都完成之前终止会话。如果您有 100 个这样的契约它们都定义明确并且包含了您想要构建的内容那么您的代理就能始终保持 24 小时运行。停止钩子可以防止代理在所有 100 个合约完成之前终止包括所有需要运行的测试和验证专业提示我发现长时间运行的 24 小时会话并非“高效完成任务”的最佳方式。部分原因是这种方式会引入来自不相关合约的上下文从而导致上下文膨胀因此我不推荐这种方式。这里有一个更好的代理自动化方法——每个合约一个新会话。每当需要执行某些操作时就创建合约。添加一个编排层用于在“需要执行某些操作”时创建新合约并创建一个新会话来处理该合约。这将彻底改变您的代理体验。8、迭代迭代再迭代如果您雇佣了一位行政助理您会期望他/她从第一天起就了解您的日程安排吗或者您喜欢喝什么样的咖啡您是否习惯在下午 6 点而不是 8 点吃晚饭显然不会。您的偏好会随着时间的推移而逐渐形成。对于您的代理来说也是如此。开始化繁为简。忘掉复杂的结构或框架吧。先试试基本的命令行界面 (CLI)。然后再添加你的偏好设置。具体该怎么做呢8.1 规则如果你不想让你的代理执行某些操作就把它写成一条规则。然后在 CLAUDE.md 文件中告知你的代理这条规则。例如在编写代码之前请阅读“coding-rules.MD”。规则可以嵌套也可以是条件性的如果你正在编写代码请阅读“coding-rules.MD”如果你正在编写测试请阅读“coding-test-rules.MD”。如果你的测试失败了请阅读“coding-test-failing-rules.MD”。你可以创建任意逻辑分支的规则只要在 CLAUDE.md 文件中明确指定Claude以及 Codex就会乐于执行。事实上这是我给出的第一个实用建议将 CLAUDE.md 文件视为一个逻辑嵌套目录用于根据场景和结果查找上下文。它应该是这样的尽可能精简只包含用于查找上下文的 IF-ELSE 语句。如果你发现你的智能体做了某件事而你不赞同就把它添加为一条规则并告诉智能体在再次执行该操作之前先阅读这条规则这样它肯定就不会再做了。8.2 技能技能类似于规则但它们不是用来编码偏好而是更适合用来编码操作步骤。如果你对某件事的完成方式有特定的要求就应该将其嵌入到技能中。事实上人们经常抱怨他们不知道智能体会如何解决问题这很令人担忧。如果你想让智能体能够确定性地解决问题就让智能体去研究它会如何解决这个问题并将其编写成一个技能。这样你就能看到智能体解决问题的方法并且可以在它真正遇到这个问题之前就进行纠正或改进。如何让智能体知道这个技能的存在没错你可以使用 CLAUDE.md 文件。比如说当你遇到这种情况需要处理这个问题时请阅读 THIS SKILL.md 文件。8.3 规则和技能的处理你肯定希望不断地为你的智能体添加规则和技能。这样才能赋予它个性并记住你的偏好。其他几乎所有操作都是多余的。一旦你开始这样做你的智能体就会像魔法一样神奇。它会按照你想要的方式行事。然后你最终会感觉自己“领悟”了智能体工程的精髓。然后……你会发现性能又开始下降了。这是怎么回事很简单。随着你添加的规则和技能越来越多它们开始相互矛盾或者智能体开始积累过多的上下文信息。如果你要求智能体在开始编程之前读取 14 个 Markdown 文件它就会遇到同样的问题即拥有大量无用的信息。那么该怎么办呢清理一下。让你的智能体“休息”一下整合规则和技能并删除一些不必要的内容。通过询问您更新后的偏好设置来解决矛盾。然后它会再次带给你魔法般的感觉。就是这样。这才是真正的秘诀。保持简单运用规则和技巧并将 CLAUDE.md 作为目录。务必时刻关注它们的运行环境和设计局限性。9、对结果负责如今没有哪个智能体是完美的。你可以将大部分设计和实现工作委托给智能体但你仍然需要对结果负责。所以请谨慎行事……并尽情享受玩转未来的玩具当然同时也要用它们做些严肃的事情真是太棒了原文链接如何成为世界级的智能体工程师 - 汇智网