文章目录
- [1. 做Agent的经典死局,十团队九个踩](#1. 做Agent的经典死局,十团队九个踩)
-
- [1.1 一个核心,两个产品,最后必分叉](#1.1 一个核心,两个产品,最后必分叉)
- [1.2 以前的插件系统,都在边缘挠痒痒](#1.2 以前的插件系统,都在边缘挠痒痒)
- [2. 真正的狠活:连核心循环都是可插拔零件](#2. 真正的狠活:连核心循环都是可插拔零件)
-
- [2.1 "万物皆插件",真不是营销话术](#2.1 “万物皆插件”,真不是营销话术)
- [2.2 五大核心能力,全是平等的插件](#2.2 五大核心能力,全是平等的插件)
- [3. 靠什么撑住?Cordis管的不止是注册](#3. 靠什么撑住?Cordis管的不止是注册)
-
- [3.1 不是简单的容器,是管全生命周期的](#3.1 不是简单的容器,是管全生命周期的)
- [3.2 理念很先进,但边界要认清](#3.2 理念很先进,但边界要认清)
- [4. 五个构件,拼出一个完整的可运行产品](#4. 五个构件,拼出一个完整的可运行产品)
-
- [4.1 Profile:先选好你的产品套餐](#4.1 Profile:先选好你的产品套餐)
- [4.2 Bundle:打包好的可复用能力集合](#4.2 Bundle:打包好的可复用能力集合)
- [4.3 Patch:精准替换,不是瞎合并](#4.3 Patch:精准替换,不是瞎合并)
- [4.4 Capability Seam:把接口和实现彻底拆开](#4.4 Capability Seam:把接口和实现彻底拆开)
- [4.5 Event Log:大家共用同一本账本](#4.5 Event Log:大家共用同一本账本)
- [5. 灵活不是免费的,复杂度只是换了地方](#5. 灵活不是免费的,复杂度只是换了地方)
-
- [5.1 好处确实香,边界切得很细](#5.1 好处确实香,边界切得很细)
- [5.2 代价也很实在,坑都在看不见的地方](#5.2 代价也很实在,坑都在看不见的地方)
- [6. 现在要不要上车?对号入座就行](#6. 现在要不要上车?对号入座就行)
-
- [6.1 这几类情况,可以大胆试试](#6.1 这几类情况,可以大胆试试)
- [6.2 这些场景,别瞎凑热闹](#6.2 这些场景,别瞎凑热闹)
- [6.3 关键生产环境?先等等](#6.3 关键生产环境?先等等)

P.S. 无意间发现了一个巨牛的人工智能教程,非常通俗易懂,对AI感兴趣的朋友强烈推荐去看看, 传送门https://blog.csdn.net/HHX_01
做过Agent产品的程序员,大概率都懂那种越做越心累的感觉。一开始就一个核心类,啥功能都往里塞,写的时候行云流水,等要做第二个产品线,当场就卡壳。
1. 做Agent的经典死局,十团队九个踩
1.1 一个核心,两个产品,最后必分叉
举个最常见的场景:同一个团队,要做两款Agent产品。
一款走Web界面,会话存在SQLite里,允许跑命令行、操作文件;另一款只跑一次性任务,数据写进JSONL,严禁碰本地Shell,纯靠Python SDK调用。
要是模型、循环、工具、存储、界面全揉在一个Agent类里,最后基本只有两个下场。
要么就是代码里堆满天眼if else,跟千层饼似的,加个小功能要翻三层判断,改个bug手心冒汗,生怕把另一条线搞崩。
要么就是直接fork一份代码,各玩各的。改着改着就发现,本来是孪生兄弟,半年之后见面都得递名片------你这bug我上周刚修过?哦不对,我这边逻辑改了,不算同一个问题。
说白了,就是核心焊死了,想做差异化,要么往里面塞垃圾,要么直接分家。
1.2 以前的插件系统,都在边缘挠痒痒
也不是没人想解决这个问题,市面上的插件框架一抓一大把。
但大多都有个默认规矩:核心循环不能动,你只能在周边加工具、加搜索、加第三方集成。就像给房子换家具贴壁纸,承重墙你半毛钱不敢碰。
直到DeepSeek把Harness放出来,直接掀了桌子:别搞什么核心不可动摇了,连Agent Core本身,我都给你做成插件。
2. 真正的狠活:连核心循环都是可插拔零件
2.1 "万物皆插件",真不是营销话术
很多人一听插件化,第一反应就是"哦,又能多装几个工具了"。格局小了。
DeepSeek说的Everything is a Plugin,是真的把底都掀开给你看了:模型适配器、Agent主循环、会话日志、工具注册表、甚至产品入口界面,全都是插件,全能通过配置替换。
以前的插件系统是智能手机装APP,系统本身你改不了;这波直接把手机系统、主板、基带都做成可插拔模块了,你看哪个部件不顺眼,直接拔下来换个新的。
2.2 五大核心能力,全是平等的插件
具体到核心部件,一共五个,全在同一套插件语义里,没有谁高人一等。
第一个是LLM适配器,统一管消息格式、流式输出和模型协议,换模型后端不用动半行循环代码。
第二个是Agent Loop,就是收输入、调模型、跑工具、判断停不停的主逻辑。以前这是Agent的心脏,碰都碰不得,现在就是个普通插件。
第三个是Session Log,存每一轮的消息、步骤和工具事件,存储后端可以单独演化,不用跟循环绑死。
第四个是工具注册表,管工具的Schema汇总和执行流水线,工具、执行方式、调用策略不用全塞在一个类里。
第五个是入口层,Web、无头模式、SDK都能用同一套底层,不用各自复制一份核心代码。
最离谱的就是Agent Loop都能换。正常插件系统哪有动主循环的?相当于你玩卡牌游戏,不仅能换卡牌,连回合制规则都能直接改成即时制。
当然了,能插不代表随便插个东西都能跑。错误处理、流式事件、安全策略、状态格式,这些都得按契约来,不然插上去直接冒烟。拆成模块是架构本事,能稳定组合才是工程实力。
3. 靠什么撑住?Cordis管的不止是注册
3.1 不是简单的容器,是管全生命周期的
能把核心部件都拆成插件还不乱,靠的是Cordis这套底层机制。
普通的依赖注入容器,就像小区物业登记,你住进来登个记,搬走了销个号,中间你干啥基本不管。但Agent运行时哪有这么静态?
工作区加载又卸载、某个服务临时上线又下线、配置热更新、局部能力只在某个Agent生命周期里生效,动态场景多了去了。
Cordis主打一个"时空可组合",说人话就是两件事:一是插件产生的所有副作用,卸载的时候都能追踪回收,别留垃圾;二是依赖的服务来了自动连上,走了自动调整,不用手动拉线。
3.2 理念很先进,但边界要认清
听起来很美好对吧?但有一说一,这东西现在API还没稳定。
可逆生命周期能解决很多耦合问题,但不是万能的。复杂插件图里的竞态问题、瞬时依赖缺失、版本兼容坑,该有还是会有。
就像酒店保洁号称走的时候全屋打扫干净,你真去翻床底,说不定还能发现上个客人留的半袋零食。
4. 五个构件,拼出一个完整的可运行产品
4.1 Profile:先选好你的产品套餐
光有一堆零散插件没用,怎么拼成能用的产品?第一个构件叫Profile。
说白了就是命名好的产品套餐。你要做Web端产品,就选对应的Profile,挑好要用的能力包,存上自己的配置;你要做无头模式跑批量任务,就选另一个套餐。
基础能力大家共享,差异部分各自配置,不用每次从零搭积木。
4.2 Bundle:打包好的可复用能力集合
Bundle就是把一组相关的插件、配置打成一个包,方便分发复用。
比如基础Bundle自带模型、工具、沙箱、权限、遥测这些通用能力,不同的入口再往上加自己的增量,不用一个个插件去装去配。
就像外卖全家桶,主食小吃饮料都给你配好了,你要加鸡翅加汉堡单独说,不用自己一个个点菜。
4.3 Patch:精准替换,不是瞎合并
然后是Patch机制,这个设计很有意思。
它不是那种常见的YAML深度合并,层层覆盖到最后,你都不知道最终值是哪来的。它是按行ID定位,直接整段替换配置。
好处是结果可预测,改了就是改了;坏处是你得精准知道自己改的是什么,替换错了行,直接启动失败。就像外科手术,精准切除是厉害,但你得下对刀。
4.4 Capability Seam:把接口和实现彻底拆开
要做到可替换,就得有标准的接缝。官方把一个完整的可替换能力拆成三个角色:接口定义、服务实现、调用方。
调用方只面向稳定接口,实现方你爱用本地实现、远端服务还是第三方协议,随便你。说白了就是插座标准统一,你插公牛还是插小米,只要插头对就能用。
但光有插座标准不够,电压、功率、安全规范这些,都得配套跟上,不然插上去容易烧设备。
4.5 Event Log:大家共用同一本账本
最后是事件日志,所有会话状态都以追加事件的方式存下来。
模型历史、UI展示、会话回放、断点续跑、分支派生,全都从这同一个日志流里来。不同入口不用各自维护一份状态,不会出现Web端显示一个样,SDK返回另一个样的离谱情况。
但也别神话它,有日志不等于跨机器恢复、副作用幂等、长任务可靠性就自动成立了,这些都得靠实打实的工程验证。
5. 灵活不是免费的,复杂度只是换了地方
5.1 好处确实香,边界切得很细
这套架构最直接的收益,就是把变化限制在了更小的边界里。
换会话存储后端,不用顺手重写Agent循环;想给受限产品禁掉Shell,直接从组合里撤掉相关插件就行,不用给代码加判断分支;Web端和SDK端共用同一套运行语义,不会越开发越分叉。
甚至单个工作区、单个Agent,都能拥有自己的局部能力和独立生命周期。对于要做多款Agent产品的团队,这吸引力确实不小。
5.2 代价也很实在,坑都在看不见的地方
但天下没有免费的午餐。你获得了多少灵活性,就得承担多少复杂度。
首先,你光看入口代码,根本不知道实际跑了哪些插件,最终行为得看最终生成的插件树,排查问题先得理半天组合关系。
其次,服务契约可不是定义个类型就完事了,错误怎么抛、流式事件怎么传、安全怎么控、版本怎么迁,全得考虑到,漏一个都是大坑。
还有生命周期的坑,搞不好就重复注册、事件悬挂、依赖突然消失,debug起来头都大。再加上多层Bundle和Patch,配置漂移、升级兼容全是麻烦事。
说白了,以前是一个大泥球,现在是一堆精密乐高。拼好了很精致,拼错了散一地,找零件找半天。
6. 现在要不要上车?对号入座就行
6.1 这几类情况,可以大胆试试
如果你是做Agent Runtime技术研究,要折腾不同的循环逻辑、状态存储、服务实现,那这东西很适合做隔离PoC。记得锁死Commit和包版本,导出最终插件树,别到时候跑不起来找不到原因。
如果你团队要基于同一个底盘,派生Web、Headless、SDK好几个产品入口,那值得验证一下组合收益,重点测测状态、权限和错误语义是不是一致。
如果你需要按工作区甚至按Agent动态装卸能力,那Cordis这套生命周期机制,刚好对口。
6.2 这些场景,别瞎凑热闹
要是你就一个固定场景,一套循环、一个后端、没几个工具,那真没必要凑这个热闹。
普通的显式工作流加依赖注入,足够用了,还简单好维护。别为了"架构先进"就上复杂方案,就像你每天就买个菜,开个货车去纯属油钱都赚不回来。
6.3 关键生产环境?先等等
至于想直接上核心生产业务的,我劝你先忍忍。
现在还是开发者预览版,官方自己都明说会有破坏性变更。真实模型端到端稳定性、故障恢复能力、安全审计、完整的迁移方案,这些都还没经过充分验证。
真想用,先在非核心场景踩坑踩够了再说。
总的来说,DeepSeek Harness最值得关注的地方,从来不是又多了多少插件。
而是它把Agent的核心从不可撼动的中心,降成了插件图里的普通参与者。产品不再围绕一个必须fork的核心类生长,而是靠Profile、Bundle、Patch、Seam、Event Log这一套构件组合出来。
它押注的是可组合的运行时能力,赢了就能大幅降低多Agent产品的开发成本,输了就是复杂度爆炸没人用。
至于现阶段,把它当成一个很有想法的架构提案就好,值得研究,别急着all in。
P.S. 无意间发现了一个巨牛的人工智能教程,非常通俗易懂,对AI感兴趣的朋友强烈推荐去看看,传送门https://blog.csdn.net/HHX_01