1. 从五个产品各自为战到一套底座统管:WorkBuddy 企业版套件化的真实动机
企业级 Agent 产品做久了,几乎都会撞上同一堵墙:产品线越铺越宽,底层能力却各写各的。WorkBuddy 企业版这次做的事情,说白了就是把原本散落在五个产品里的 Agent 能力抽出来,做成一套统一的底座,再让五个产品像插件一样挂上去。这个决策听起来像是架构师的洁癖,但真正推动它的,是运维和交付团队被反复折磨出来的痛。
我接触过不少做 Agent 平台的团队,早期几乎都是"一个产品一套 Agent 逻辑"。A 产品有自己的工具调用层,B 产品有自己的记忆管理,C 产品又搞了一套完全不同的权限模型。表面上看每个产品都能跑,但一旦客户要求"把这三个能力串起来做一个工作流",整个团队就得开始做集成地狱。更麻烦的是,当底层模型升级、工具协议变更、安全策略收紧时,你要在五个地方分别改五遍,还极容易漏掉某一个。
WorkBuddy 企业版套件化的核心思路,可以用一句话概括:把 Agent 当成操作系统,把五个产品当成运行在它上面的应用。这个类比不是修辞,而是实实在在的架构选择。操作系统负责进程调度、内存管理、设备驱动、权限控制,应用只管自己的业务逻辑。对应到 WorkBuddy 里,底座负责 Agent 的运行时、工具注册、上下文管理、安全沙箱、OpenAPI 网关,五个产品只管自己的场景编排和用户界面。
为什么这个选择在当下特别重要?因为 Agent 这个领域变化太快了。今天流行某种工具调用协议,明天可能就换成另一种;今天大家用某类向量检索方案,明天可能就被新的记忆机制取代。如果每个产品都把这些底层细节焊死在自己的代码里,那每次技术迭代都是一次全量重构。而有了统一底座之后,底层换血只需要在底座做一次,五个产品几乎无感。
这里有个容易被忽略的点:套件化不等于简单地把代码抽成公共库。很多团队以为把重复代码抽成一个 npm 包或者内部 SDK 就叫平台化了,结果发现五个产品对"公共库"的期望完全不同——A 产品要它轻量,B 产品要它功能全,C 产品要它能热更新。最后这个"公共库"变成了一个谁都不敢动的怪物。WorkBuddy 的做法是把它做成一个有明确边界和契约的运行时底座,产品通过标准接口接入,而不是直接依赖内部实现。这个区别,决定了后面能不能真正解耦。
从关键词里能看到不少相关线索:Agent、CodeBuddy、OpenAPI、Skill、Agent 架构、Agent 开发。这些词拼在一起,其实勾勒出了套件化的几个关键支柱——统一的 Agent 运行时、标准化的能力接入协议(OpenAPI)、可复用的技能单元(Skill)、以及面向开发者的扩展体系。下面我会逐个拆开讲,尽量把每个决策背后的"为什么"说清楚。
2. Agent 底座到底该管什么:边界划错的代价比不做还大
2.1 底座管太多会变成瓶颈,管太少等于没管
做统一底座最容易犯的错误,是把边界划得过于宽泛。我见过一个团队,他们的"Agent 底座"几乎接管了所有事情:从模型调用、Prompt 拼装、工具执行,到业务状态管理、用户会话、甚至前端渲染逻辑。结果就是底座变成了整个系统最复杂的部分,任何产品想改一点东西都要动底座,底座团队成了全公司的瓶颈。
WorkBuddy 企业版在划边界时,遵循的是一条很朴素的原则:底座只负责"所有 Agent 都必须有、且实现方式应该统一"的能力。具体来说,它管这几件事:
- Agent 运行时:Agent 的生命周期管理、任务调度、上下文窗口的分配与回收。
- 工具与技能注册:统一的工具描述格式、调用协议、执行沙箱。
- 模型接入层:多模型路由、降级策略、Token 计量。
- 安全与权限:Agent 能访问什么、能调用什么、数据边界在哪。
- OpenAPI 网关:对外暴露标准接口,让五个产品和外部系统都能接入。
而它不管的事情同样重要:具体业务逻辑、产品特有的交互流程、领域知识库的组织方式、前端展示形态。这些留给五个产品自己决定。这个边界不是拍脑袋定的,而是根据"变更频率"来划分的——底层能力变更频率低但影响面大,适合统一;业务逻辑变更频率高但影响面小,适合分散。
2.2 五个产品如何共用一套运行时而不互相踩脚
五个产品跑在同一套底座上,最直接的风险是资源争抢和故障扩散。A 产品的一个死循环把 CPU 占满,B 产品跟着卡死;C 产品的一个内存泄漏,把整个底座拖垮。这类问题在单体架构里很常见,套件化之后如果处理不好,反而会比各自为战更糟。
WorkBuddy 的解法是在底座里做资源隔离和配额管理。每个产品接入时会被分配独立的运行时上下文,包括独立的执行队列、内存配额、并发上限。Agent 执行任务时,底座会根据产品标识做资源核算,超限的任务会被排队或拒绝,而不是无限制地抢占资源。这个机制听起来像是基础设施层面的事情,但对 Agent 产品特别关键,因为 Agent 的任务往往是不确定时长的——一次工具调用可能 100 毫秒返回,也可能因为外部 API 超时卡 30 秒。
另一个关键设计是故障隔离。底座里的每个产品运行在独立的沙箱中,一个产品的异常不会直接传播到其他产品。底座会捕获异常、记录上下文、按策略重试或降级。这里有个实操经验:降级策略一定要在产品接入时就配置好,而不是等出事了再补。比如某个产品依赖的外部服务挂了,底座应该返回一个明确的降级结果,而不是让 Agent 无限重试把队列堵死。
2.3 底座与产品的契约:接口稳定性比功能丰富更重要
套件化能不能长期维持,取决于底座和产品之间的契约是否稳定。我见过太多平台,一开始接口设计得很漂亮,但随着产品需求变化,底座不断加参数、改语义,最后接口变成了一个谁都不敢碰的泥球。
WorkBuddy 在契约设计上做了两件事值得参考。第一是版本化:底座的 OpenAPI 有明确的版本号,产品接入时声明自己依赖的版本,底座保证同一大版本内的向后兼容。第二是能力声明式接入:产品不是直接调用底座的内部函数,而是通过声明自己需要哪些能力(比如"我需要工具调用""我需要长期记忆"),底座根据声明来装配运行时。这样底座内部实现怎么改,只要能力语义不变,产品就不用动。
这个设计的好处在实际运维中体现得很明显。有一次底座团队想换掉底层的向量检索实现,从一种方案换成另一种。因为产品只声明了"我需要记忆能力",没有依赖具体实现,所以这次替换对五个产品完全透明,上线后没有任何产品需要改代码。如果当初产品直接调用了具体的检索 API,这次替换就是五个产品的改造工程。
3. OpenAPI 与 Skill 体系:让五个产品说同一种语言
3.1 OpenAPI 不只是接口文档,而是能力契约的载体
很多人把 OpenAPI 理解成"给外部调用者看的接口文档",但在 WorkBuddy 套件化里,它的角色要重得多。它是底座和产品之间、产品和产品之间、以及外部系统和整个套件之间的统一语言。五个产品要互相调用能力、要共享工具、要串联工作流,靠的就是这套 OpenAPI 定义的契约。
具体来说,WorkBuddy 的 OpenAPI 定义了几类核心资源:Agent 实例、Skill、工具、会话、任务。每个资源都有标准的创建、查询、执行、销毁接口。产品接入时,实际上是把自己的能力包装成符合这套 OpenAPI 的服务,注册到底座的网关里。这样其他产品或者外部系统就能用统一的方式发现和调用它。
这里有个设计细节很关键:OpenAPI 的粒度。如果粒度太粗,比如只暴露一个"执行任务"的接口,那调用方就没法精细控制;如果粒度太细,比如把 Agent 内部每一步都暴露出来,那接口会变得极其复杂且难以维护。WorkBuddy 选择的粒度是"以 Skill 为单位"——每个 Skill 是一个独立的能力单元,有明确的输入输出定义,可以单独调用也可以组合调用。这个粒度刚好匹配 Agent 的工作方式,因为 Agent 本质上就是在编排一个个 Skill。
3.2 Skill 的标准化:从"每个产品自己写工具"到"一次编写处处可用"
Skill 是这套体系里最贴近开发者的一层。在没有统一 Skill 体系之前,每个产品要接入一个新工具,都得自己写一遍适配代码:参数怎么传、返回值怎么解析、异常怎么处理、权限怎么校验。五个产品就是五套适配代码,维护成本高不说,还容易出现行为不一致。
WorkBuddy 的 Skill 体系把这些统一了。一个 Skill 用标准格式描述:它叫什么、接受什么参数、返回什么结果、需要什么权限、在什么沙箱里执行。写好之后注册到底座,五个产品都能直接调用。这带来的直接好处是能力复用——比如一个"文档解析"Skill,A 产品用它处理合同,B 产品用它处理论文,C 产品用它处理工单,底层是同一份实现。
从关键词里能看到"skill 编码""skill 插件""codex 常用 skill"这些词,说明 Skill 生态正在成为 Agent 领域的一个热点。WorkBuddy 在这方面的做法是提供一套 Skill 开发规范和一个注册中心。开发者按照规范写好 Skill,提交到注册中心,经过审核后就能被所有产品使用。这个模式有点像应用商店,但更偏向企业内部的能力市场。
3.3 五个产品如何通过 Skill 组合出各自的差异化能力
统一底座和 Skill 体系会不会导致五个产品变得同质化?这是很多人的担心。实际上恰恰相反——底座统一的是"能力",产品差异化的是"编排"。就像所有手机都用同样的芯片和操作系统,但不同品牌的手机体验完全不同,差异在于它们怎么组合这些底层能力。
WorkBuddy 的五个产品各自有不同的场景定位。有的偏向代码开发(对应 CodeBuddy 这类关键词),有的偏向文档处理,有的偏向数据分析,有的偏向工作流自动化,有的偏向知识管理。它们共享底座的 Agent 运行时和 Skill 库,但各自编排出了不同的工作流。比如代码开发产品会重点组合代码解析、代码生成、测试执行这类 Skill;文档处理产品会重点组合文档解析、摘要生成、格式转换这类 Skill。
这种"共享底座 + 差异化编排"的模式,让五个产品既能快速迭代(因为底层能力不用重复造),又能保持各自的特色(因为编排逻辑是独立的)。从工程角度看,这是套件化最理想的状态——复用最大化,耦合最小化。
4. 套件化落地时最容易踩的五个坑
4.1 坑一:底座团队和产品团队的目标不一致
套件化推进过程中,最常见的组织问题是底座团队和产品团队的 KPI 不一致。底座团队想的是"接口要稳定、要通用、要优雅",产品团队想的是"这个需求下周就要上线,你能不能先给我加个特例"。两边拉扯的结果,往往是底座被各种特例污染,慢慢失去了通用性。
WorkBuddy 在推进时采取的做法是把底座当成内部产品来运营。底座团队有明确的"客户"——就是五个产品团队,有服务等级协议,有需求响应流程,也有拒绝不合理需求的权力。产品团队提需求时,需要说明这个需求是通用的还是个例的;如果是个例,底座团队会建议产品自己在编排层解决,而不是改底座。这个机制听起来有点官僚,但实际运行下来,它保护了底座的整洁性,也逼着产品团队想清楚自己真正需要什么。
4.2 坑二:过早追求统一,把还没稳定的东西也抽象了
另一个常见的坑是抽象过早。有些能力在五个产品里确实有重复,但重复的部分还在快速变化,这时候强行抽象成统一底座,反而会把变化锁死。我见过一个团队,把还在频繁调整的 Prompt 模板抽成了底座能力,结果每次调 Prompt 都要走底座的发布流程,产品团队怨声载道。
WorkBuddy 的策略是先观察再抽象。一个能力如果在多个产品里出现,且实现方式已经趋于稳定,才考虑下沉到底座。判断标准很简单:如果这个能力在未来三个月内不太可能大改,就值得抽象;如果还在快速迭代,就先让各产品自己实现,等稳定了再说。这个"延迟抽象"的原则,避免了很多返工。
4.3 坑三:安全边界在套件化后被放大
套件化之前,每个产品的安全边界是独立的。A 产品的 Agent 只能访问 A 产品的数据,B 产品的 Agent 只能访问 B 产品的数据。套件化之后,所有产品共享一套底座,如果权限模型没设计好,就可能出现 A 产品的 Agent 访问到 B 产品数据的情况。这个风险在 Agent 场景下尤其严重,因为 Agent 会自主调用工具,一旦权限失控,影响面比传统应用大得多。
WorkBuddy 在底座里做了细粒度的权限模型。每个 Agent 实例在创建时会绑定一个权限上下文,明确它能访问哪些数据、能调用哪些 Skill、能触达哪些外部系统。底座在执行任何操作前都会校验权限,越权操作直接拒绝并记录审计日志。这里有个实操建议:权限模型要在套件化设计的第一天就定好,不要等出了问题再补。因为权限是横切关注点,后补的话要改所有产品的接入代码,成本极高。
4.4 坑四:可观测性没跟上,出了问题不知道是谁的锅
五个产品跑在同一套底座上,一旦出现性能问题或者异常,定位难度会比独立部署大得多。是底座的问题还是某个产品的问题?是资源争抢还是代码 bug?如果没有完善的可观测性,排查会变成一场噩梦。
WorkBuddy 在底座里内置了全链路追踪和指标采集。每个 Agent 任务从创建到完成,每一步都有 trace 记录,包括调用了哪个 Skill、耗时多少、消耗了多少 Token、有没有触发降级。这些数据按产品维度聚合,产品团队可以随时看到自己产品的运行状况,底座团队也能看到整体资源使用情况。这个能力在套件化里不是可选项,而是必需品——没有可观测性,套件化就是黑盒运维。
4.5 坑五:文档和示例滞后,新接入方上手成本高
套件化的价值很大程度上取决于接入的便利性。如果五个产品接入底座要花几周时间读源码、猜接口,那套件化的收益就被抵消了。WorkBuddy 在这方面投入了不少精力做接入文档和示例代码,每个核心能力都有可运行的示例,新接入方可以照着示例快速跑通。
这里有个经验:文档要跟着接口版本走,而不是跟着发布时间走。很多团队的文档是"写一次就不管了",接口改了文档没改,结果文档反而成了误导。WorkBuddy 的做法是把文档生成集成到接口定义里,接口改了文档自动更新,保证一致性。
5. 从套件化实践中沉淀出的几条硬经验
5.1 底座的能力清单要定期审视,该砍的砍
底座做久了,能力会越来越多,这是自然趋势。但能力多不等于价值大,有些能力可能只有一两个产品用,维护成本却很高。WorkBuddy 会定期审视底座的能力清单,把使用率低、维护成本高的能力标记出来,要么合并,要么下放给产品自己实现。
这个"定期瘦身"的机制很重要。我见过一些平台,底座能力只增不减,几年下来变成了一个巨大的遗留系统,新来的工程师根本不敢动。底座的健康度不在于它有多少能力,而在于它的每个能力是否都被充分利用。
5.2 产品接入要提供"最小可用路径"
新产品的接入体验,直接决定了套件化的推广速度。如果接入一个新产品需要理解底座的全部设计,那没人愿意接。WorkBuddy 提供了"最小可用路径"——一个产品只需要实现几个核心接口,就能跑起来一个基础 Agent,然后再按需接入更多能力。这个渐进式的接入方式,降低了起步门槛,也让产品团队能快速看到效果。
5.3 版本升级要有灰度机制
底座升级影响所有产品,一旦出问题就是全局故障。WorkBuddy 的底座升级采用灰度机制:先在内部环境验证,再选一两个产品试点,确认没问题后再全量。产品也可以选择"锁定版本",在一段时间内不跟随底座升级,给自己留出适配时间。这个机制在快速迭代的 Agent 领域特别重要,因为底层变化频繁,没有灰度就等于每次升级都在赌。
5.4 把 Agent 安全当成底座的一等公民
Agent 安全是个容易被低估的话题。传统应用的安全边界相对清晰,但 Agent 会自主决策、自主调用工具,攻击面大得多。WorkBuddy 把 Agent 安全做成了底座的内置能力,包括输入输出过滤、工具调用白名单、敏感操作二次确认、异常行为检测等。这些能力对所有产品生效,产品不需要自己实现。
从关键词里能看到"agent 安全"这个词,说明这已经是行业共识。我的建议是:Agent 安全不要等到产品上线后再补,要在底座设计阶段就纳入。因为安全是横切的,后补的成本远高于前置设计。
5.5 套件化的最终衡量标准是交付效率
套件化做得好不好,最终要看一个指标:新能力从想法到上线的时间。如果套件化之后,五个产品接入一个新 Skill 只需要几天,而套件化之前需要几周,那这个方向就是对的。WorkBuddy 在推进套件化的过程中,一直用这个指标来校准方向——不是为了架构优雅而套件化,而是为了交付效率而套件化。
我在实际项目里最大的体会是:套件化不是一次性的架构改造,而是一个持续运营的过程。底座和产品的关系需要不断调整,能力边界需要定期审视,接入体验需要持续优化。把它当成一个产品来运营,而不是当成一个项目来交付,这套体系才能真正发挥价值。