作者 |Tofu
来源 | 至顶AI实验室
大家都在卷模型,真正决定Agent能不能干活的东西,却常常被忽略。
GPT、Claude、Gemini、Qwen、DeepSeek,模型能力一代代往上堆,很多人也习惯把一个Agent好不好用,直接归因到“它背后接了什么模型”。
但最近,Manolo Remiddi干了件挺有意思的事,他把注意力放到了模型外面:他拆开了一个完整Agent的运行结构,然后基于开源框架,给自己重新做了一套Agent。
这套Agent可以自由切模型、调用本地模型、控制电脑、操作浏览器、保存Prompt,还能直接看见上下文里到底塞了什么。做完这一圈之后,他得出了一个很明确的判断:让Agent真正拉开差距的地方,不只在模型,还有一个更关键的地方。
大模型只是发动机,Agent还缺一整套车
他先做了一件很基础的事——把现在一个Agent到底由什么组成拆开看。最底层当然还是模型本身,比如GPT、Claude、Gemini、Qwen、DeepSeek。模型上面还有推理引擎。对于本地模型来说,这一层可能是llama.cpp、vLLM、Ollama或者MLX;如果用云端模型,中间还会多一层API服务。
再往上,才是他最关心的Harness,可以理解成是Agent的“运行控制层”。模型负责推理,Harness负责决定这个模型到底怎么工作。
比如,一个任务交给Agent之后,它要不要继续执行下一步;什么时候调用浏览器;什么时候打开终端;上下文里应该放哪些信息;哪些文件能读,哪些文件能改;长期记忆要保存什么;Token用了多少、花了多少钱。
这些事情都不是模型自己完成的,而是Harness在管理。
Remiddi把模型比作汽车发动机。发动机决定动力上限,但如果没有方向盘、刹车、变速箱和车身,发动机本身并不能把人送到目的地。这也是他觉得很多人现在对Agent理解有偏差的地方:大家花大量时间比较模型,却很少关心模型到底被装进了一辆什么样的“车”里。
Agent为什么越来越笨?他盯上了上下文
在这套结构里,他尤其关注一个问题——上下文管理。Agent处理任务时,会不断往Context Window里塞东西,包括对话历史、文件内容、工具返回结果、系统提示词和项目状态。
问题是,上下文总会塞满。一旦塞满,很多Agent框架就会开始做Compaction,也就是把前面的内容压缩成摘要。
这一步看起来很合理,问题在于摘要天然会丢信息。第一次压缩,还只是少掉一些细节。继续工作之后,上下文再次塞满,又会继续压缩。最后就可能变成“摘要的摘要”。
这也是他解释很多长任务体验时很看重的一点,为什么Agent刚开始还记得很清楚,做到后面却越来越容易忘事?因为它看到的已经不一定是原始信息,而可能是被压缩过几轮的版本。
现在一种常见解法,是直接把Context Window做得越来越大。但代价也很明显:上下文越长,速度越慢,成本也越高。所以他更倾向于把重要信息留在上下文外。比如文档、代码库、数据库,或者一份长期维护的项目状态文件,都可以作为独立的“单一事实来源”。Agent需要时重新读取,而不是永远依赖上下文里的摘要。
这也让他开始重新判断一个Agent框架到底值不值得用。他看的已经不只是模型强不强,而是一些更底层的问题:上下文压缩能不能控制、工具调用过程能不能看见、权限能不能细分、长期记忆到底怎么保存,以及用户能不能随时把模型替换掉。
他干脆自己做了一个Agent
接下来,他没有继续停留在概念讨论里,而是直接在一个开源Harness上开始改。
首先是模型。他希望一个Agent里既能接云端模型,也能跑自己的本地模型,所以加了模型搜索、置顶和快速切换。模型多了之后,他又给项目做了文件夹和颜色分类,让不同任务能够分组管理。
然后是Prompt。他把常用Prompt做成了一个Prompt Library,比如新闻处理、英语润色、Prompt优化,都可以直接通过Slash Command调用。输入“/news”,对应Prompt就会自动注入。
再往后,他把语音、浏览器控制和电脑控制也接了进去。于是这个Agent不再只是一个聊天窗口。它可以悬浮在桌面上,需要的时候随时叫出来;也可以进入浏览器侧边栏,直接读取当前网页,执行多步操作。
他还做了一个很实用的功能:Prompt自动整理。哪怕用户输入一段很混乱的话,Agent也可以先把它整理成一个更清晰的Prompt,再继续执行。甚至连UI皮肤、背景和颜色,他也全部开放出来。
整套东西做下来,他真正想证明的其实不是“自己的Agent更好看”,而是另一件事,Agent完全可以按照个人工作习惯重新设计。有人需要浏览器Agent,有人需要桌面助手,有人长期做复杂项目,就需要文件夹、长期记忆和项目级上下文。这些需求不会因为大家用了同一个大模型,就自动变成同一种产品。
模型可以一直换,真正留下来的可能是这一层
基础模型正在越来越像一个可以替换的组件。今天可以接Claude,明天可以换GPT,后面也可以换Qwen、DeepSeek,或者直接接本地模型。但如果一个人已经积累了自己的Prompt、Skill、Memory、工具调用方式、项目结构和工作流,这些东西的生命周期很可能比某一个模型更长。
所以他开始更在意几个问题,这个Harness是不是开源?能不能自己修改?能不能看见Agent内部到底发生了什么?模型能不能自由替换?数据能不能留在自己手里?如果哪天不想用了,迁移出去到底麻不麻烦?
当大家还在争“哪个模型最强”时,他已经开始把模型当成一个随时可以更换的零件。真正每天陪着用户工作的,是模型外面的那套系统。如果这个判断成立,那么Agent下一阶段真正值得卷的东西,也许会越来越具体:上下文怎么管,记忆怎么存,工具怎么调,权限怎么控,界面怎么适应用户,以及最关键的——当模型越来越强时,用户能不能一直保留对自己工作方式的控制权。

