Skip to content

搞定 Agent 六大支柱:今天出个 Manus 明天出个 OpenClaw,你到底应该学什么?

最近这大半年,搞技术的朋友应该都有一个感受:Agent 这个词,铺天盖地。

Claude Code 出了 /loop 定时任务,OpenClaw 的 GitHub star 飙到了 25 万但紧接着爆出了高危 RCE 漏洞,Cursor 搞出了 Automations 和自托管 Agent,OpenAI Codex 出了桌面客户端……社交媒体上,每个产品都说自己是"真正的 AI Agent",每篇文章都在教你"如何构建 Agent",信息量大到让人窒息。

有不少读者朋友跟我说过类似的话:

"我知道 Agent 很重要,但我不知道从哪学起。感觉每天都在出新东西,学不完。"

说实话,我特别理解这种状态。因为我也曾经经历过。

不过这些年下来,自己也做了一些 Agent 产品,也比较深入地研究过 Claude Code、OpenClaw、Manus 这些项目的原理和设计,踩了不少坑之后,我慢慢有了一个比较清晰的认知:

这些产品表面上形态各异,底层全在解决同一组问题。

而且这组问题的数量,远比你想象的少。

一次 Agent 调用背后发生了什么

我用一个你可能每天都在做的场景来说明。

假设你在终端里跟 Claude Code 说:

帮我把 src/utils.ts 里的 formatDate 函数重构一下,用 dayjs 替换 moment

然后你按下回车。从这一刻开始,到 Claude Code 跟你说"搞定了",中间发生了什么?

第一件事:它得决定先做什么。

Claude Code 不会上来就改代码。它会先"想"一下:我需要先读一下 utils.ts 看看 formatDate 长什么样,然后看看 package.json 里有没有 dayjs,没有的话要装一下,然后再改代码,改完跑一下测试……

这个"想一步、做一步、看一步"的循环,就是 Agent Loop。它是 Agent 的心跳——没有这个循环,AI 就只是一个问答机器。

第二件事:它得能读文件、跑命令。

光"想"没用,得有手。Claude Code 需要调用 Read 工具读文件、调用 Bash 工具跑 pnpm add dayjs、调用 Edit 工具改代码。

这些工具的定义、调度、权限管理、并发控制,组成了 Tool System。它是 Agent 的手脚——没有工具,Agent 就是个只会说不会做的嘴炮。

第三件事:它得记住前面做了什么。

假设这个重构涉及 15 个文件,Claude Code 改到第 10 个文件的时候,它需要记住前面 9 个文件改了什么、用了什么模式、有没有遇到什么坑。但上下文窗口是有限的——前面的信息太多了,塞不下了怎么办?

这就是 Context Engineering,上下文工程。它是 Agent 的大脑供血系统——决定大脑能获得多少养分、处理多少信息。这块我认为是整个 Agent 开发里最被低估、也最有含金量的部分。

第四件事:它得记住你是谁。

你上次跟 Claude Code 说过"这个项目用 pnpm 不要用 npm",它会记住。下次你开一个新的会话,它还能记得。

这是 Memory 系统——跨会话的长期记忆。和 Context Engineering 不同,Context 管的是单次会话内的信息,Memory 管的是跨会话的持久化。

第五件事:复杂任务,一个 Agent 搞不定。

如果你让 Claude Code 探索一个几万行的代码库,它可能会 fork 出一个子 Agent,让子 Agent 在干净的上下文里去探索,探索完把结果压缩成一两千 token 的摘要传回来。这样主 Agent 的上下文不会被撑爆。

这就是 Multi-Agent——不是为了"分角色"搞什么 PM + 设计师 + 开发者的 cosplay,而是为了分隔上下文。

第六件事:权限、Hook、重试、优雅退出……

Agent 要跑 rm -rf 的时候,谁来拦?API 挂了怎么重试?用户按了 Ctrl+C 怎么优雅退出?模型陷入死循环怎么检测?

这些"包裹在模型外面"的工程系统,就是 Harness Engineering。它是 Agent 的骨架——模型再强,没有一个好的骨架,也跑不起来。

六大支柱

你看,就这一次看似简单的工具调用,背后牵扯了六个大的系统:

六大支柱全景图

支柱一句话人体类比
Agent Loop想一步、做一步、看一步的循环心跳
Tool System读文件、跑命令、调 API手脚
Context Engineering管理有限的上下文窗口大脑供血
Memory跨会话的长期记忆长期记忆
Multi-Agent拆任务、分上下文团队协作
Harness Engineering权限、重试、Hook、生命周期骨架

记住这六个词。 后面不管出什么新的 Agent 产品、新的框架、新的论文,你都可以用这六个维度去拆解它。它在 Agent Loop 上做了什么创新?Context Engineering 怎么处理的?工具系统是什么设计?

这就是为什么我说"学 Agent 不要追产品、热点,要学底层问题"。产品会过时,但问题不会。

六大支柱,每个都有多深?

你可能觉得,这六个词听起来挺简单的嘛,有什么好学的?

那我给你展开聊聊,你感受一下每个支柱背后的水有多深。

Agent Loop:不只是个 while 循环

最简单的 Agent Loop 就是一个 while(true) { think → act → observe } 循环。10 行代码就能写出来。

但实际跑起来你会发现一堆问题:

模型说到一半被截断了怎么办?Claude Code 的做法是 3 次递进恢复——第一次把 max_tokens 设成 8192 希望它能说完,不行就升到 64K,再不行就注入一条"你的输出被截断了,请继续"的消息。超过 3 次就放弃。

Agent 陷入死循环怎么办?OpenClaw 设计了 4 种检测器:同一个工具反复调用(Generic Repeat)、无进展的轮询(Known Poll)、两个工具交替调用(Ping-Pong)、全局熔断(30 次重复强制停止)。不是一种检测就够了,实际场景中循环的模式五花八门。

API 挂了怎么办?Claude Code 有三层重试:内层 API 级重试(最多 10 次指数退避)、中层流式失败降级为非流式、外层快速模式失败降级为标准模式。OpenClaw 更夸张——重试预算最多 160 次,还有各种模型 Provider 相互兜底,具体我们先不展开了,后面的课程会展开。

就一个循环——Agent Loop,展开来讲可以讲很多篇。

Tool System:工具越多越不准

你可能觉得工具系统就是定义几个函数让模型调嘛,有什么难的。

实际上,工具数量一上去,问题就来了。10 个工具以内,模型选择准确率 > 95%;30 个工具,降到 ~85%;50 个以上,不做特殊处理就是灾难。

怎么解决?Claude Code 用了一个叫 Deferred Tool Loading 的设计——初始 prompt 里只放工具名和一句话描述,不放完整的 JSON Schema。模型需要用某个工具的时候,先通过 ToolSearch 按需加载完整定义。效果:初始 prompt 瘦身 30-40%,缓存命中率大幅提升。

Manus 走了另一条路——干脆只保留不到 20 个原子工具,复杂操作全部通过写脚本放 sandbox 里跑。工具定义只占 3K token,而不是 30K。

还有一个容易忽略的问题:工具定义一旦改了,后面所有的 KV Cache 全部失效。 这意味着你不能动态增删工具——看起来省了 token,实际上缓存失效的成本可能是 10 倍。Manus 的做法是 "Mask Don't Remove":不删工具定义,只标记哪些不可用,并通过比较巧妙的方式来限制模型的 Action Space,后续我们也会好好拆解。

Context Engineering:最被低估的护城河

这一块我认为是整个 Agent 开发里技术含量最高的部分。

一个数据帮你感受一下:一个典型的 Agent 任务,50 次工具调用,每次平均 2000 token 的结果,光工具输出就是 10 万 token。再加上 system prompt、工具定义、对话历史——200K 的窗口说满就满。

而且上下文不是越长越好。学术界有一个叫 "Lost in the Middle" 的现象:模型对上下文头部和尾部的信息注意力最强,中间的内容会被逐渐忽略。你往上下文里塞的东西越多,模型对中间信息的"记忆力"就越差。

所以上下文管理的核心不是"怎么塞更多",而是怎么让模型在有限的注意力预算内看到最关键的信息

我们在课程里会用五个维度来拆解 Context Engineering:

维度做什么
Offload(卸载)把信息搬到上下文之外——文件系统、sandbox、脚本
Reduce(压缩)就地缩小(Compaction)或用摘要替换(Summarization)
Retrieve(检索)从外部按需取回——RAG、文件读取、ToolSearch
Isolate(隔离)拆成多个独立上下文——Multi-Agent
Cache(缓存)复用已有计算结果——KV Cache、Prompt Cache

有意思的是,行业对这五个维度并没有共识。Manus 重度使用 Offload 和 Cache,但不太鼓励压缩——因为信息丢失风险太大。没有银弹,每个维度都有 trade-off。

还有一个点:压缩不等于删除。 好的上下文管理是可恢复的——信息不是真丢了,只是暂时移出了模型的视野。

Memory:简单方案反而更好

跨会话记忆听起来应该很复杂——向量数据库、语义检索、embedding 模型……

但 Claude Code 用的方案简单到让人意外:就是一个 MEMORY.md 文件。

模型自己用 Write 工具把值得记住的信息写进去,下次会话开始的时候读回来。没有向量数据库,没有 embedding,就是纯文本文件。

反过来,OpenClaw 走的是比较重的路线——SQLite + 向量混合检索,BM25 关键词权重 30% + 向量权重 70%,还有 MMR 去重和时间衰减。

哪个更好?取决于你的场景。Claude Code 面对的是单用户、记忆量不大的场景,文件方案简单可调试,人类可直接编辑。OpenClaw 面对的是多用户、大量记忆的场景,需要语义搜索能力。

没有最好的方案,只有最合适的方案。 这个判断力,比学会某个具体技术更重要。

Multi-Agent:不是分角色,是分上下文

市面上很多 Multi-Agent 的教程都在教你搞"角色扮演"——一个 Agent 当 PM,一个当开发,一个当测试。

但真的,业界用的 Multi-Agent,核心价值根本不在这里。

Manus 的联合创始人 Peak 说了一句很精辟的话:"人类按角色组织是因为认知限制。LLM 不一定有这些限制。"

子 Agent 的主要目标不是按角色分工,而是隔离上下文。 让每个子 Agent 在干净的窗口里工作,不被其他任务的信息污染。

Claude Code 的子 Agent 设计就是这个思路——Explore Agent 去探索代码库,在自己的上下文里可以读几万 token 的文件,最后只给父 Agent 返回一两千 token 的摘要。父 Agent 的上下文保持干净。

还有一个更硬核的场景:Claude Code 的 Worktree 隔离。子 Agent 在一个独立的 git worktree 里工作,文件系统都是隔离的。做完了再 merge 回来。这才是生产级的 Multi-Agent。

Harness Engineering:模型外面那层壳

最后这个,可能是最不性感但最重要的。

Harness 翻译过程可以叫“壳”,也可以叫环境,它的设计可能比模型选择的影响更大。

举个具体的例子。OpenClaw 今年爆出了 CVSS 8.8 的高危 RCE 漏洞,3 万多个实例受影响,800 多个恶意 Skill 混进了 ClawHub 市场。你猜猜是啥 原因?默认没开认证。

这不是模型的问题,是 Harness 的问题。权限系统设计得不够严格,一个漏洞就能让整个 Agent 变成攻击工具。

Claude Code 在这方面做得很细:6 种权限模式、Bash 命令专用风险分类器、危险操作模式检测(rm -rf /、fork bomb、sudo)、连续被拒会自动降级为手动确认。还有 14 种 Hook 类型让用户能在不改源码的情况下定制行为。

这些东西虽然看起来不够酷炫,但没有它们,Agent 就是一个随时可能失控的定时炸弹。

学的顺序很重要

这六个支柱不是平行的,它们之间有依赖关系。我建议的学习路径是从内到外:

学习路线图

  1. Agent Loop(心跳):先理解 Agent 的最小可运行单元
  2. Tool System(手脚):Agent 能"做事"了,你才能观察后面的问题
  3. Context Engineering(供血):Agent 跑起来之后,上下文爆了怎么办?这是深水区的入口。
  4. Memory(记忆):单次会话、跨会话,上下文记忆怎么来管理?
  5. Multi-Agent(协作):一个 Agent 不够用,怎么拆成多个?
  6. Harness Engineering(骨架):上面都搞定了,怎么包成一个生产级系统?

每一层都建立在前一层的基础上。你不理解 Agent Loop,就没法理解为什么 Context Engineering 这么重要;你不理解 Context Engineering,就不理解为什么 Multi-Agent 的核心价值是"分上下文"而不是"分角色"。

这门课怎么组织的

说白了,这门课就是沿着上面这条路径,一层一层往上搭。

每一篇我都会从一个生产环境里真实会遇到的问题出发——不是编一个教科书式的例子,而是你做 Agent 真的会踩到的坑。然后去看 Claude Code、OpenClaw、Manus 这些百万级用户的 AI 产品是怎么解决这个问题的。最后提炼出可复用的设计原则。

几个你可能关心的问题:

需要什么基础?

有前端或全栈开发经验就行。TypeScript 能看懂,命令行能用,API 调过就够了。不需要机器学习背景、不需要 AI 背景。下一篇我会专门讲做 Agent 需要了解的大模型底层知识,不多,但必须知道。

学完能做什么?

不管市面上出什么新的 Agent 框架、新的产品,你都能快速看懂它的架构,知道它在六大支柱的哪些维度上做了什么取舍。你也能自己从零搭一个 Agent 系统——不是调 LangChain 的 API,是真正理解每一个工程决策背后的 why。

根据我的调研,学习这门课程大部分都是命中了下面这些诉求:

  • 原来的技术栈快过时了,想要在 AI 时代提升自己,增强自己技术上的能力,提升竞争力
  • 公司业务有需要,agent 开发是一个刚需
  • 想要找工作面试,需要系统的资料来学习

如果你有类似的诉求,那这门课程还是适合你来学习的。

跟别的 Agent 课有什么不同?

大部分 Agent 课教你用某个框架——"用 LangChain 和 Langraph 搭一个 Agent"、"用 Pi 写一个 Agent"。框架一更新,课就过时了。

这门课不教你具体怎么用框架,而是教你理解框架背后在解决什么问题。我会带你从 Claude Code、OpenClaw、Manus 等等底层设计原理的角度跟大家拆解,让你们彻底搞明白到底怎么才能驾驭一个真实的 agent 系统。

温馨提示:安装 App 并开启通知

课程平台支持 PWA(渐进式 Web 应用),安装后拥有原生 App 体验,包括桌面图标、离线访问、每日复习提醒和课程更新推送。

强烈建议安装并开启通知,这样你能收到复习提醒和课程更新通知,帮助巩固所学知识。

iOS

  1. Safari 打开 https://sitor.ai (仅 Safari 支持,Chrome/Firefox 不行)
  2. 点击底部工具栏的 分享按钮(方框 + 向上箭头图标)
  3. 滑动菜单找到 「添加到主屏幕」,点击确认
  4. 从主屏幕打开 Sitor,进入后点击右上角 设置(齿轮图标)「开启通知」
  5. 在弹出的系统权限对话框中点击「允许」

桌面(Chrome / Edge)

  1. 打开 https://sitor.ai
  2. 地址栏右侧会出现安装图标(或页面顶部弹出安装横幅),点击安装
  3. 安装后点击设置 → 「开启通知」 → 允许权限

注意:目前推送通知支持 iOS(需添加到主屏幕)和桌面浏览器(Chrome / Edge),安卓暂不支持。

后面的路

然后我们就正式进入 Agent 的世界。从一个 while(true) 循环开始,一步一步搭起来。

上一页我为什么要做这门课,以及我是谁下一页从 ChatBot 到 Agent:一个 while 循环,凭什么让 AI 从"能聊天"变成"能干活"?