国庆假期,读了一位老朋友写的长文。文章从 Claude Code 新发布的 Mods 出发,聊上下文记录层和 Agent 运行环境之间怎么分工。里面有一句话让我停下来想了很久:Trace 留下来,不必预先规定它将来所有的用途。
顺着这句话,最近几件看上去不相干的事慢慢串在了一起:Claude Code 推出 Mods,DeepSeek Harness 推进插件化,还有前段时间突然火起来的 Jev。我隐约觉得它们在回答同一个问题,但那天晚上一开始并没想清楚。拆开来看,大致有三层。
三件事,同一个方向
先看 Mods。官方的说法是,用几行 TypeScript 就能改造 Claude Code:定制界面、加面板、改它的行为。第一眼看上去,这是给极客准备的改装套件。
但翻官方文档会发现,着墨最多的是更底层的东西:工具调用发出时直接截下来,改写参数或者干脆替它作答;模型读到工具输出之前,先把里面的密钥删掉;动态批准或拒绝一次权限申请。最能说明问题的是一个细节:团队版和企业版会先加载内置的 sec-default 模组,加载顺序由管理员在托管配置里定,用户自己关不掉。它只做一件事,防止用户装的插件绕过组织定下的规则。
个人开发者改自己的工具,prompt 和 hooks 早就够用了。需要"管理员的规则永远排第一"这种刚性约束的,是企业。
再看 DeepSeek Harness。它把官方实现降格成一个默认插件,底层的模型、Agent Loop、记忆机制都能换。我在《DeepSeek Harness 真正开源的不是代码,是替换权》里写过,这套体系里真正稳定的,是身份、权限、审计和事件日志这一层契约,其余都可以按需替换。
然后是 Jev。它的技术谈不上代差,分类器业内早就有了。它做的事是把模型的出口收窄:不让模型自由写一段话,只让它在给定选项里做判断,再附上概率,下游程序拿到就能直接走分支。我之前做过一份讲解页,结论是它的新意主要在产品化,不在算法。
三件事拼在一起,方向就清楚了。Mods 在输入端和运行时装上闸门,Jev 把输出收成程序能直接消费的结构件,DeepSeek Harness 把整个运行环境拆成可替换的部件。过去我们把模型当成一个整体,丢进去一段 prompt,等它吐出答案;现在行业在做的,是把模型外面那层控制框架切成一片一片,让每一片都能插进确定性的规则。
商业上的账也就算得出来了。企业买 AI,买的从来不是聪明,是出了事能拦住、能查清、能回滚。模型是概率的,生产系统要的是确定的,中间缺的那一层就是 Harness。它是模型进入 B 端的防弹衣。
粘性也在跟着转移。换一个模型,往往改一行 API 配置就够了;可一家公司如果已经围绕某个宿主写了二十个拦截、脱敏、审计插件,换宿主就等于把整套安全防线重做一遍。模型越来越像自来水,接谁家的都能喝;值钱的变成了阀门。
C 端会不会有人用?会,极客一定会拿它玩出各种花样。但这套机制的重心在企业。把它理解成"个人 Agent 终于更灵活了",看到的是表面;它真正要解决的,是让企业 Agent 能适配进生产环境。
全埋点,当年我们走过一遍
回到朋友文章里那句话:Trace 留下来,不必预先规定它将来所有的用途。
读到这里,我第一个想到的是数据埋点的历史。早年做埋点普遍是写时定义:产品经理先想好将来要看哪些指标,研发对着需求一个点一个点埋。这样采回来的数据确实规范,代价是只能回答立项那一刻想到的问题。业务一调整,想看一个新维度,才发现当初没埋,历史数据再也找不回来。
后来行业推全埋点,逻辑反了过来:先把用户行为原样存下来,怎么建模、算哪些指标,交给下游在读的时候再定义。读时建模能跑通,前提是存储变便宜了,下游的计算和分析工具也变强了。
Agent 时代的协作记录,几乎是同一件事。群聊里的讨论、一个口径怎么改过来的、某个方案为什么放弃、调优时踩过的坑,这些都是已经发生、不可逆的事实。如果在记录时就预设好"这份纪要该提炼哪几条",等于用今天的理解力提前裁剪了明天的可能性。反过来,只要原始事实还在,半年后下游的模型、企业的记忆系统理解力上了一个台阶,就能倒回去重读,挖出当时谁都没注意到的前提。数据会随着读它的人变聪明而升值,这是一种认知复利。
这里有一处看上去的矛盾要说清楚。我在《存了一堆 Trace,Agent 为什么不会自己变聪明?》里写过,未经治理的生产流量是工业废水,不能连过滤都不做就接回饮用水管网。现在又主张全量留存,两个判断冲突吗?
我觉得不冲突,留存和回灌是两个阶段。全量留存是复利能发生的必要条件,不是充分条件;把原始记录不加筛选地直接喂回 Agent,照样会污染。全埋点当年踩过的最大的坑也在这里:什么都存,最后存成一片没人敢用的数据沼泽。所以留存这一步只守一条纪律:写入时只记事实,不记解读。解读是下游的事,随时可以推倒重做;事实一旦在写入时被加工过,就再也还原不回来了。
退半步做管道,进一步做账本
把前两层放在一起,会推出第三层:协作底座这类平台,到底该守住什么。
宿主开放了深度改装之后,端侧界面和个性化解读这件事,平台就不该再包揽了。同一份项目记录,管理者想看风险和资源缺口,一线工程师想看接口改了什么、要动多少代码。平台不管把默认摘要设计得多精致,都会让一半人不满意。更现实的是速度:平台靠自己的排期去做这些非标交互,对面是每个用户都能用几行代码改自己的宿主,这场比赛赢不了。所以要退半步,把交互和解读还给宿主生态,自己做好管道。
但退半步不等于全部放手。有两件事,端侧做不了,也不该交给端侧。
第一件是账本。端侧的 Agent 再强,也是单点的、临时的。工程师在终端里让 Agent 回滚了一次代码,产品经理在群里改了口径,运营在后台调了策略参数,这些事实散在各自的会话里,彼此不知道。把跨人、跨 Agent 的业务状态变化记成一本不可篡改的账,只有底座能做;这本账也是模型和宿主换了一轮之后,组织依然握在手里的资产。
第二件是总闸。全量留存加上端侧随意消费,就是一场等着发生的合规事故。一段包含敏感讨论的记录,被某个端侧插件总结一下转发到大群,泄露就已经发生了。不能指望每个第三方插件都自觉守规矩。权限校验和语义级的脱敏,要在服务端、在数据被取走的那一刻做完:谁在要、要给谁看、这个场景能看到哪一层,都由底座卡死。sec-default 在宿主那一头做的事,底座要在数据这一头再做一遍。
这样看,平台的位置反而清楚了:往后退,把龙头交给生态;往前进,守死账本和总闸。
阀门和水表
想到这里,那天晚上那点"隐约有些思考但不清晰"的感觉,终于落成了一句话。
模型正在变成自来水,接哪一家都能用。模型厂商在端侧装上了阀门,决定水什么时候流、往哪流、流之前要不要过滤。组织自己要守住的,是水表和总闸:每一滴水从哪来、流到了哪里,记得清清楚楚;该关的时候,能在总管上关掉。
阀门让 AI 敢进企业,水表让企业敢把 AI 用下去。