代理很难构建。但如果做得好,它们会高度通用且可扩展。它们就像一个系统,就像 Web 浏览器或数据库引擎一样。
我知道!有一些框架可以用来构建代理。但那些大多是骗人的,而且它们通常会跳过最难的部分。
警告:如果你说的代理指的是使用法学硕士(LLM)的剧本,那么可以继续写代理。太好了,继续。
Web 浏览器和数据库
每个人都在使用这两款软件,每个人都在它们的基础上进行开发,但没有人愿意拥有它们。
这是怎么运作的?它们都是可脚本化的。浏览器使用 JS、CSS 和 HTML,数据库使用 SQL。两者都是系统软件。高度可定制,高度可复用,并且经过了严格的测试。它们非常可靠,你可以在其基础上构建,而不是构建它。
系统软件。
曾经有一段时间,每家公司都认为他们需要拥有自己的数据库引擎。有些大型系统基于 MUMPS 和 4GL 等框架构建,以创建自定义数据库引擎。基本上,业务软件与底层数据库紧密耦合,以至于数据库引擎实际上是定制的。
SQL 最终获胜,因为它可以编写脚本并且可高度定制。
网络浏览器也有类似的发展轨迹。Nexus、Lynx 和 Mosaic 都曾由大学和初创公司拥有,它们认为自己需要定制体验。如今,Chrome 和……实际上,我认为就是这样了。
当每个人都有自己的数据库和网页浏览器时,所有的软件大部分时间都非常不稳定,而且容易出问题。我们之所以能够发展成为高度可扩展且可靠的软件,部分原因在于我们意识到,我们不需要像我们想象的那样进行大量定制。
所以你想成为一名代理人……
代理方法有很多,但实际有效的产品( Claude Code 、 codex 、 Manus等)都遵循深度代理模式(哦,我讨厌这个名字)。

去读读那篇博客,了解详情吧,挺有意思的。它刚出来的时候,我写了一个实现,包括一个独立的文件系统和子代理。虽然能用,但哇,代码量太大了。我最终决定,我不想拥有那段代码。
为什么?因为这些都与我公司的业务无关。我们不需要构建深度代理,只需要使用一个就行。这工作量很大,但并不能给我们带来竞争优势。
MCP 客户端很难
遵守规范并不难,难的是让它们性能良好且安全可靠。MCP 倾向于让服务器端的实现变得异常简单。客户端的实现则困难得多。
- 错误处理——服务器直接抛出错误,客户端必须弄清楚如何处理。重试?让 LLM 自己解决?还是中断?
- 资源——它们在提示符下会去哪里?什么时候?你会使缓存失效吗?这些都不在规范中。
- 工具— 如果服务器改变了工具列表,这是否会增加提示前缀缓存?
- 权限——所有这些都需要 UI,而任何 MCP 库都无法提供帮助
- 采样—嘿,天哪,我头疼
它只是继续
- 提示缓存——如何处理它?
- 特定于提供商的 LLM API — 例如 Claude 具有上下文垃圾收集,OpenAI 具有个性
- 代理间交互——即使你从框架中免费获得此功能,它是否与事件循环绑定?代理之间是否并行运行?你的代理是否能够查看子代理的任务状态?以及更深层次的子代理?
- 沙盒
- 安全
我应该坚持多久?
LangChain 愿景
我从 LinkedIn 影响者那里得到的感觉是,每家公司都会有 500 名不同的代理商,他们都将通过这个庞大的代理网络进行连接和交流。
这什么时候奏效过?就像计算机历史上任何时候一样。一旦实现的数量增加,每个实现就会变得非常不稳定,它们之间永远无法很好地通信。这就是事情的运作方式。很确定某个地方有一条互联网法律来解决这个问题。也许是XKCD。
我们不可能有数千个代理实现。
Claude Code 和 Codex 是总代理
是的,我知道它们被当作编程工具出售。而且它们确实很擅长编程。但你需要访问文件系统才能拥有强大的代理。
文件为代理提供了一种管理自身内存的方法。它可以搜索文件来查找信息,也可以给自己写笔记来记住事情。临时文件系统对于强大的代理至关重要,但只有编码代理才能提供这种文件系统。
但我也有一些朋友使用 Claude Code,但并非用于编写代码。他们不是软件工程师。他们用它来做市场营销、销售等等。他们是总代理。Anthropic 已经变得聪明起来,正在将 Claude Code 迁移到云端,并删除了名称中的“Code”部分。不过,情况是一样的。
它们是可定制的
当 Anthropic 宣布Claude Skills时,我的灯泡熄灭了。
任何你想让代理做的事情,你都可以通过 Claude Code 以及一些提示、技能、MCP 服务器,甚至脚本(如果你喜欢的话)的组合来实现。Codex 也一样。
为每个公司构建 500 个代理的方法是对 Claude Code 和 Codex 等开箱即用的通用代理进行高度定制。为它们提供提示、MCP 服务器,并将它们连接起来等等。不要从头构建代理,那样太疯狂了。
另一个让我灵光一现的时刻是,我和一家企业讨论如何实现A2A 。那次讨论很棒,但我得告诉你,除非它相当于通过标准协议将一个应用程序连接到另一个应用程序,否则这根本行不通。
代理是系统软件
系统软件开发很难。这没关系,甚至可以说很好。因为很多人可以从中受益。你应该这么做!