资讯详情

资讯详情

Agent技能层设计实战:从工具调用到技能编排的完整指南

这段时间一直在调一个带工具调用的智能体项目反复折腾之后发现真正决定一个 Agent 上限的往往不是底层模型有多强而是中间那层技能设计。agent-skills这个词在圈子里被聊了很久但大多数讨论都停在“给模型加工具”的层面真正把技能当成独立工程来做的团队其实不多。这篇文章把我自己从零搭技能层的完整过程、踩过的坑、最后的取舍都摊开讲一遍希望对正在做 Agent 落地的朋友有帮助。这套东西适合谁来参考如果你正在做智能体应用无论是客服、数据分析、自动化运维还是个人助手方向只要你的系统里出现了“模型需要调用外部能力”的需求技能层的设计就绕不开。文章里不会塞一堆云里雾里的框架概念更多是工程落地时的具体取舍和可复用的套路。1. 为什么要把 Agent 的能力拆成 Skills 来管1.1 从单体提示词到技能层的演进两年前我刚开始做智能体的时候思路非常简单把所有工具说明、调用方式、注意事项一股脑写进系统提示词让模型自己看着办。项目小的时候确实能跑十几个工具、几十条规则模型勉强处理得过来。但随着业务场景变多问题立刻暴露出来——提示词越长模型的理解准确率反而越低经常出现工具选错、参数漏填、调用顺序混乱的情况。后来我试过把工具说明做精简只保留最核心的调用信息但效果依然不稳定。某个工具的描述写得长一点模型就容易过度依赖它描述写短了模型又压根想不起来用。本质上是因为单体提示词把所有能力堆在一个平面里没有优先级、没有上下文边界、没有依赖关系模型全靠“临场发挥”自然不稳定。技能层的核心思路是换个组织方式不再把工具塞进提示词里让模型自由选择而是把一组相关的操作封装成带有明确意图定义、可独立调度、可复用的“技能单元”。模型面对的是“技能清单”而不是“工具清单”。这两个概念听起来差不多实际差别巨大。工具解决的是“能做什么”技能解决的是“在什么场景下、按什么逻辑、用什么工具组合来达成目标”。前者是原子操作后者是有目标感的流程。这个抽象层的存在其实就是在模型和原始工具之间加了一层路由和编排逻辑让模型不需要每次从头理解所有细节。还有个容易忽略的点单体提示词在模型版本升级后经常需要重新调优工具稍微改一下描述整套提示词可能就要重调。技能层把这种耦合拆开了底层工具变化不影响上层的技能定义模型升级也只影响技能选择和参数解析部分维护成本低了很多。我实际做下来这种架构上的收益比一开始预期的还要大。1.2 技能层要解决的四个核心问题技能层不是简单把工具“分个组”就算完事它至少要回答四个问题。第一个是语义映射问题用户说“把这份数据整理成周报发给领导”系统怎么知道应该先调用数据查询技能再调用文档生成技能最后调用邮件发送技能这需要在技能层做意图识别和技能匹配不能全推给模型。第二个是参数传递问题前一个技能的输出往往是后一个技能的输入这个中间格式谁定义怎么校验转换很多 Agent 项目死就死在技能之间参数对不上模型生成了结果但下游根本不能用。第三个是失败处理问题技能调用不总是成功网络超时、数据格式异常、权限不足都可能发生。技能层必须具备重试、降级、替代方案的能力否则一次小故障就能让整个 Agent 对话卡死。第四个是安全治理问题技能能操作真实系统就必须有权限控制、操作审计、资源隔离机制。这四个问题不是靠提示词工程能解决的。技能层本质上是把“模型决策”和“系统执行”之间的鸿沟填平需要一套工程化的调度框架。我见过太多团队在模型能力上反复较劲却忽略了这层问题的复杂度最后上线就崩。如果你正在设计自己的智能体系统建议先想清楚这四个问题的答案而不是急着接各种工具。1.3 一个我实际维护过的技能组样本拿我做过的一个数据分析和报告生成的场景举例这个 Agent 需要支持用户用自然语言查数据、生成图表、撰写分析报告最后通过企业聊天工具发出去。这里我拆出了五个独立技能。一个技能负责从数据仓库查询数据输入是 SQL 模板和筛选条件输出结构化的表格数据。一个技能负责根据数据特征选择合适的图表类型并生成图片输入是数据和图表配置。一个技能负责把多组图表和分析文字组装成完整报告文档。一个技能负责调用企业聊天工具的接口发送内容。还有一个比较关键的是数据脱敏技能任何从仓库出来的数据都要先过一遍脱敏规则否则不允许进入下游。这五个技能彼此独立但可以通过一个编排流程串联。整套系统的关键是每个技能都有非常明确的输入输出边界模型不需要知道数据仓库在哪、图表库怎么调用、聊天工具的 API 长什么样。它只需要理解每个技能的“语义描述”然后合理选择和组合。这种设计让整个系统的可维护性大幅提升后续哪怕数据源换了、图表库换了、聊天工具换了技能内部的实现随便改上层的 Agent 逻辑完全不用动。2. 技能设计与落地从定义到调用的完整链路2.1 技能定义模板名称、描述、参数和副作用技能定义是整套系统最基础的部分直接决定模型能不能正确理解和使用这个技能。我的经验是把每个技能定义成一个结构化的 JSON 对象包含技能名称、语义描述、参数 Schema、副作用声明、超时和重试配置、上下文要求六个字段。其中技能名称要短且语义清晰比如query_data、generate_chart、send_message让模型一眼能看出来是干什么的。语义描述是重中之重要写清楚“这个技能适合什么场景、输入需要什么、输出是什么样子、成功和失败的标志是什么”。参数 Schema 我推荐直接用 JSON Schema 标准模型的指令遵循能力对标准格式的理解比对自定义格式好得多。每个参数要声明类型、是否必填、取值范围、默认值、相互依赖关系。特别要注意枚举型参数一定要把可选项列全否则模型容易自己编造一个不存在的值。还有参数描述要写“人类能理解的语言”不要写太技术化比如不要写“通过 Unix 时间戳指定时间范围”要写“以 2025-01-01 的格式指定开始日期”。参数这块我还建议尽量把复杂结构拆平模型生成一层层嵌套的 JSON 时出错率会随着层级加深明显上升。副作用声明是我后来加上的效果很不错。副作用指的是这个技能执行后对外部系统产生的影响比如发送了消息、创建了工单、修改了数据库记录。模型在做决策的时候会参考这些信息尤其是在需要用户确认的场景下它会先问用户“我要发送一条消息确认吗”。这个字段能显著减少误操作强烈建议加上。还有上下文要求声明这个技能需要依赖哪些前置技能的输出这为后面的编排流程提供了重要依据。2.2 描述文本决定模型的调用成功率这是我在调试中最有体会的部分。技能描述的质量对调用成功率的影响大到你难以想象。同一个技能描述写得糊里糊涂模型可能只会在极少数场景下想起来用它描述写清楚之后调用频率和准确率几乎翻倍。我整理了一套心得第一句一定要写清楚这个技能的核心用途用动词开头比如“查询业务数据库获取结构化的数据表”不要用什么“本技能用于提供数据访问能力”这种绕弯的写法。第二句描述适用的典型场景用“当用户想要……时”句式给模型一个触发条件。第三句写清楚输入的约束和输出的形态让模型知道调用这个技能后的预期结果长什么样。我对比过两个版本的描述对模型调用成功率的影响。一个版本写的是“获取数据库里的数据参数为数据表名和筛选条件”另一个版本写的是“当用户想要查看任何业务数据报表时调用本技能。输入参数包括数据表名称、筛选条件列表和时间范围。该技能从数据仓库检索数据并返回格式化的表格结构。注意本技能只负责查询不做任何数据修改操作”。在实际测试中第二个版本的准确率提升非常明显。原因是模型在做工具选择时其实是在做语义匹配一个描述越接近用户自然语言的表达习惯匹配准确率就越高。还有一个容易被忽视的是负面描述。在描述末尾写清楚“什么情况下不要调用这个技能”也很有用。比如某个查询技能处理不了特别大规模的数据就要写明“如果请求的数据量超过百万行级别请先提醒用户缩小范围”。这类信息能有效阻止模型做出错误决策。2.3 参数设计要贴合模型 JSON 生成的习惯参数设计是另一个坑最多的地方。我第一版技能的参数设计完全按照后端接口的习惯来做结果模型生成 JSON 的失败率高得离谱。后来我总结了几个原则。第一个是参数尽量扁平避免三层以上的嵌套结构。模型生成嵌套 JSON 时少一个大括号或者写错一个引号整个调用就失败了。第二个是必填参数要少每个技能尽可能把必填参数控制在三个以内其余都用默认值补全。必填参数太多模型一犹豫就容易填错。第三个是参数类型要简单只使用 string、number、boolean 和简单的 object 数组不要搞联合类型、枚举映射这种复杂结构。第四个是布尔类型参数要有明确的默认值避免模型因为不确定而随意生成导致歧义。还遇到过一类很有意思的问题模型对时间格式的理解经常出错。比如你让它填2025-01-01它可能会填成2025/01/01这两种格式表面看差不多解析的时候却很容易出 bug。我的解决办法是在参数描述里给一个绝对明确的示例值而不是依赖格式化说明。比如“日期格式为 YYYY-MM-DD例如 2025-01-01不要包含时间部分”。实测下来给示例值的效果比给格式说明好得多。再补充一个关于默认值的心得。设计技能参数时尽量为每个非核心参数提供合理的默认值。模型有一个特点当它不确定某个参数应该填什么的时候会倾向于生成一个看起来“合理”的值而不是弃用这个参数。如果所有参数都是必填模型编排流程时就会因为需要决定太多细节而变得极不稳定。给足默认值能让模型把注意力放在核心决策上编排成功率会大幅提升。3. 技能编排把简单技能串成复杂流程3.1 三种编排模式顺序、条件路由和并行扇出单个技能能做的事情有限真正体现 Agent 价值的是技能之间的编排。我在实践中总结出三种最基本的编排模式。第一种是顺序编排前一个技能的输出作为后一个技能的输入一步步完成一个复杂的任务。比如前面提到的查数据、生成图表、组装报告、发送消息就是一个典型的顺序链路。顺序编排最重要的是参数传递每个技能的输出 Schema 需要清晰定义并且下游技能的输入字段要对得上。第二种是条件路由根据某个中间结果决定下一步调用哪个技能。比如查询数据时发现数据量过大就路由到数据抽样技能而不是直接生成图表。条件路由需要有一个“裁决者”我一般让模型基于上游输出做判断但在关键节点也会预设一些硬规则不依赖模型判断。因为模型在分支决策上的稳定性不如顺序链路一个关键分支判断错了整个任务就报废了。第三种是并行扇出一个任务同时调用多个独立技能最后汇总结果。典型场景是生成一份多维度分析报告需要同时查销售数据、用户反馈数据、竞品数据三个查询互不依赖可以并行执行。并行扇出能把任务耗时大幅缩短但也带来几个新问题并行任务的结果如何统一汇总、多个技能同时修改外部系统的冲突如何解决、部分成功部分失败怎么处理。我建议并行扇出只用于只读类操作涉及写入或修改的操作保持串行执行避免脏数据或竞争问题。3.2 上下文压缩与中间结果持久化技能编排的过程中上下文管理是非常关键的工程问题。一个很常见的现象是任务执行到第三步时对话上下文里已经积累了第一步的全部原始输出、中间产生的临时数据再加上用户的原始指令整个上下文变得异常臃肿。导致的结果有两个一是模型对后续指令的响应速度变慢二是模型会“忘掉”最初的目标执行偏离用户意图。我的做法是引入上下文压缩机制。每完成一个技能调用就把这个技能的原始输出做一次结构化摘要丢弃掉不需要在下游使用的细节只保留关键结果和必要元数据。比如数据查询技能的原始输出可能是一张两百行的数据表但压缩后的上下文里只保留“查询成功返回 200 行数据覆盖 2024 年 Q1-Q4 的销售记录字段包括日期、销售额、区域”这样的摘要。如果下游技能需要完整数据它会通过上下文中的引用 ID 去专门的数据存储里取而不是把所有数据都塞进提示词。这也引出了中间结果持久化的问题。我实现了一套简单的持久化方案每个技能的输出都存成独立的 JSON 文件返回一个result_id编排引擎通过这个 ID 管理数据流转。这看起来有点重但实际带来的收益非常大会话中断后可以恢复执行同一个中间结果可以被多个下游技能复用而不用重复计算调试时能把每一步的输入输出单独拎出来看排查问题快很多。如果你的 Agent 项目还处在原型阶段可以先不做完整持久化但至少要保证中间结果可以独立查看否则后面排查问题会非常痛苦。3.3 技能冲突消解与优先级技能多了之后必然出现一个问题用户的请求同时匹配多个技能到底选哪个比如“统计本月各区域的销售数据并生成对比图表”这个需求同时涉及查数、画图两个核心动作。模型需要判断是先用查询技能取数再调用生成图表技能还是有一个“一键生成销售图表”的组合技能可以直接用。组合技能其实就是在技能层预先定义好的一个子流程它把多次调用固化成一个高层技能模型只需要调用一次。优先级设计我踩过不少坑。最开始我把所有技能放在一个列表里完全靠模型的语义匹配来选择结果经常出现误选。后来我引入了一个简单的机制给每个技能定义一个priority_level字段当模型对多个技能的匹配度都很高时优先选择优先级高的技能。具体到执行层我会在技能选择提示里把高优先级技能排在最前面并且显式说明“以下技能优先使用”。这个办法不需要改模型就能显著提升选择准确率实现成本极低。更复杂的一层冲突消解发生在执行阶段。两个技能同时启动都要写同一个外部资源怎么办我在技能定义里增加了resource_lock字段声明这个技能执行时会占用哪些资源。编排引擎在执行前检查资源锁如果资源已被占用就排队等待避免并发写冲突。这个机制在个人项目里可能用不上但如果技能操作的对象是真实业务系统建议一定加上。4. 工具选型与实现路径从一个轻量级技能框架说起4.1 自研还是用现成框架的取舍聊完设计层面的东西再说实现。我在做了几轮技术选型之后最终的结论是第一版尽量不要依赖重量级的框架而是基于核心需求做一个轻量级的技能调度内核。现在市面上的智能体框架确实很多各有各的特点功能也很全但问题在于它们都有自己的预设模式。一旦你的业务需要一些比较特殊的编排逻辑套框架反而比自研更痛苦。适当参考一些成熟的设计思路实现一个灵活的内核往往是最稳妥的路径。轻量级框架的核心只需要四个模块。技能注册中心负责技能定义的注册、校验和查询。调度引擎负责接收任务、选择技能、编排流程、管理上下文。执行器负责实际调用技能实现支持函数调用、HTTP 调用、FaaS 调用等不同形态。存储模块负责保存会话状态和技能执行记录。这个四件套能覆盖绝大多数 Agent 应用场景而且整个系统的代码量并不大维护成本完全可控。4.2 调度引擎的数据结构设计与核心流程调度引擎是整个系统的核心数据结构设计直接决定后续扩展的弹性。我把任务定义成一张流程图节点分为技能节点和逻辑节点两种。技能节点声明执行哪个技能、参数从哪里来、结果往哪里去。逻辑节点包含条件判断、分支、聚合操作。整张图可以预先静态定义也可以由模型在任务开始时动态生成。静态定义适合流程稳定的场景动态生成适合开放探索的场景。两个模式可以混合使用。具体的调度流程我整理成五步。第一步是任务解析把用户的自然语言输入转成结构化意图。第二步是技能选择基于意图匹配技能列表计算匹配分数并排序。第三步是流程构建根据技能依赖关系生成编排图。第四步是执行与监控按编排图依序执行技能节点记录每个节点的状态和耗时。第五步是结果整合汇总所有技能输出生成最终回复。这五步看起来不复杂但每一步都有很多细节要注意。任务解析阶段要处理好指代消解比如用户上一轮说了“杭州门店”这一轮说“和刚才一样但换成上海”系统必须能理解这种上下文引用。结果整合阶段要处理好冲突信息两个技能的输出互相矛盾时要有一条规则决定采信哪个。这些细节如果在实现初期不考虑后期返工的成本非常高。我第一版就是先把流程跑通后来发现任务解析的指代问题直接导致多轮对话体验崩溃只能整体重构。如果重来一次我会在设计阶段就把这些问题列进需求清单。4.3 执行器的统一接口设计执行器是技能层和底层工具之间的桥梁。为了不让上层的编排逻辑被各种不同类型的工具实现绑架我为执行器设计了一个统一接口只有两个关键方法validate_params和execute。validate_params在调用前根据参数 Schema 做校验提前拦截模型生成的错误参数避免实际操作资源。这个设计的价值很高因为很多错误参数是模型随口生成的比如把用户 ID 填成了null或者把日期范围写反了校验环节能阻止这类请求进入真实系统。execute接收一个标准化的执行上下文对象包含参数、用户身份、会话信息、资源锁信息返回一个统一格式的执行结果对象包含状态、数据、耗时、错误信息。这个统一设计最大的好处是调度引擎不需要关心背后是数据库查询还是 HTTP 请求还是本地脚本所有技能在调度层看来都是一个黑盒子。工具的替换、升版、新接入都不影响上层逻辑。这是我做完第一版后最庆幸的一项设计。还有一个细节值得提超时和重试策略需要在执行器层面统一管理不能在技能实现里各搞一套。我最初的版本是把超时参数交给每个技能自己处理结果不同技能之间的行为完全不一致有的技能超时时间设了三秒有的设了三十秒调度层很难做整体的容错控制。后来我把超时和重试统一收到执行器配置里以技能维度做覆盖默认配置的设定行为一致性立刻提升了很多。5. 运维与安全技能上线之后才是麻烦的开始5.1 沙箱隔离与权限收敛技能一旦开始操作真实系统安全就是第一优先级。我的原则是只读类技能在沙箱中执行写入类技能必须走审批流程。沙箱的实现细节取决于后端基础设施。我用的方案是为每个技能拿到一个独立的工作目录文件系统访问被限制在这个目录内网络访问只能通过白名单网关。这样即使技能存在漏洞攻击面也受限。权限收敛是另一个重点。最初我为了方便省事每个技能都用一个功能强大的管理员账号来执行调用所有技能初始化的时候种下一个炸弹后面必然被炸。正确的做法是给每个技能分配最小权限的凭证它需要读数据就不给写权限需要写文件就不给网络权限。这套权限控制做起来繁琐但能避免大量后续风险。还有一点是技能调用审计。每一次技能执行都要记录调用者身份、目标资源、操作类型、执行耗时和结果状态为后续的排查和安全追溯提供基础。这些日志我习惯直接存到独立的日志系统中设置一定时长的保留期。审计日志看起来平时没用真正出现问题的时候没有它完全无从下手定位。个人项目哪怕不用正式日志系统也要保证输出的日志信息完整。5.2 可观测性技能调用链路怎么追踪Agent 系统调试是出了名的困难。模型决策是不确定的每个技能调用的成功与否受多种因素影响。要在这种神经系统里快速排查问题可观测性必须从第一天就考虑。我设计了一套轻量级的链路追踪方案核心是为每次技能调用生成一个唯一的trace_id贯穿从用户请求到最终回复的整个过程。所有的日志中都带上这个 ID后续链路中产生的任何事件都能串起来。我还在每个技能执行前后记录关键指标包括进入时间、参数摘要、执行耗时、返回的状态码和错误信息摘要。这些数据不只服务于排查还能用来做技能质量分析。一段时间之后可以统计出哪个技能的成功率最低、哪个技能平均耗时最长、哪个技能最容易导致对话重启。这些数据是持续优化 Agent 系统的关键依据。因为要保证内容的安全性我基于自己模拟项目和框架实现的观测方案做一个说明如果你的团队没有完整的可观测平台可以先从集中式日志开始关键字段规范化命名保证用日志查询就能串起一条调用链。这比依赖一套复杂的监控系统更实际落地。5.3 灰度发布与快速回滚技能层跟传统后端服务一样也需要灰度发布机制这一点很多做 Agent 的团队会忽视。技能改了实现但不是所有技能都能立刻对所有用户开放一旦新版本有问题会让整个 Agent 不可用。我的办法是在执行器前面加一层路由规则支持按用户比例、按技能版本、按请求特征三个维度决定走新版本还是旧版本。灰度发布前期可以先在内部小范围试点确认稳定后再逐步放开就能把法案影响的范围控制在一个比较小的范围内。灰度之外必须配套快速回滚机制。很多时候问题不会在执行链路中立刻暴露而是用户使用一段时间之后才反馈。如果发布系统不能支持一键回滚到上一版本就只能临时改代码影响面就会被迅速扩大。回滚机制建议做到执行器保留最近 N 个版本的技能代码新旧版本并行可用路由层决定实际用哪个版本。这种能力也是着眼于技能迭代频繁的情况下让上线新技能的时候保留后路。安全相关的设计在个人项目里可能显得繁琐但只要有一天需要把 Agent 从一个个人项目变成一个面向真实用户的服务这些设计就是保护防线。提前设计好这些策略能避免许多后面难以补救的麻烦。6. 常见问题与排查技巧实录6.1 高频问题速查表把实战里的高频问题整理成一张速查表定位问题时可以先回顾一遍。问题现象可能原因排查思路与解决建议模型从不调用某个技能技能描述语义模糊或与用户表达方式不匹配重写技能描述使用贴近用户口语的表达补充适用场景的例句调用技能时参数频繁报错参数 Schema 设计过复杂、必填参数过多简化参数结构减少必填项为可选参数提供默认值同一场景下技能选择不稳定多个技能描述语义重叠明确各技能边界并在描述中补充负面提示非本技能使用场景多步骤编排到某一步失败上游技能输出格式与下游技能输入不兼容检查参数映射关系必要时在中间增加一个适配技能任务执行到后面“忘掉”原始意图上下文过长模型注意力分散引入上下文压缩机制每个技能只保留摘要信息并发调用同一资源导致冲突技能未声明资源锁或锁未生效在技能定义中补充resource_lock字段执行前检查资源占用情况某技能一次成功一次失败技能实现存在非确定性行为或依赖外部环境状态检查外部依赖是否有状态问题在技能实现中确保逻辑可重入这张表覆盖了我遇到的约七成问题剩下的更多是业务逻辑层面的个案。排查问题的核心思路永远一致先确定是模型决策的问题还是执行层的问题再针对性地修。6.2 排查思路先分模型问题还是工程问题在调试 Agent 的时候我吃过最大的亏就是混淆了模型决策问题和工程实现问题。模型决策问题表现为技能选择可能是对的但参数生成有瑕疵多个技能顺序安排的可能不合理在复杂分支条件下可能选择了错误的路径。工程实现问题表现为接口参数解析报错、网络超时、数据格式不匹配、权限校验失败。两类问题的处理方式完全不同前者的修复靠优化提示词、调整技能描述、增加约束规则后者的修复靠改代码、调配置、修 Bug。我的排查流程分四步。第一步看错误日志确认问题是否在执行层暴露。如果日志里有明确的异常堆栈那基本是工程问题。第二步在模型侧记录决策过程把模型为每个决策生成的完整思维过程保存下来理解它为什么做出这个选择。第三步做手动复现把调用的参数和上下文固定住重新执行一遍技能看问题是否稳定复现。第四步是二分定位构造一个只包含部分技能的简化版任务逐步缩小问题范围。这四步走下来大部分问题都能定位到根因。我特别想强调第二步的价值。模型决策过程记录下来之后你会发现很多看似“随机”的错误其实是有规律的。比如某个模型在月份参数上经常从描述文本里错误理解年份这个问题通过调整参数描述的表述方式就能修复。这一步很值得自动化可以通过日志记录到模型侧的决策数据里后续分析非常方便。6.3 几项实战心得与踩坑记录最后分享几条实战中积累的具体心得。第一技能描述不是写一次就结束的。模型升级之后同一份技能列表的表现会发生漂移。建议在模型版本升级后做一次系统性的技能描述回归测试跑一组标准样例对比调用准确率和编排成功率。这个过程耗时不多但能避免线上突然冒出来一堆难以解释的偶发问题。第二不要过度依赖模型的工具调用能力。模型的原生工具调用模式虽然方便但参数校验、错误处理、上下文压缩这些关键环节还是要在工程层实现。模型的能力边界随着版本变化而变化把关键逻辑放在工程层至少能保证模型能力变化时系统仍然稳定可用。第三一定要设计好技能的版本管理策略。技能不是一次性交付的资产而是持续迭代的产物。我给每个技能定义维护了版本号并且把技能的版本与模型的版本做了关联记录。这套机制可以帮你在做回归测试时快速确认一个技能在哪个模型版本下表现最优避免出现“这个技能之前能跑现在不能跑”的情况还得花很长时间排查。第四如果你想在现有技能基础上再扩展可以把它做成一个“技能组合能力”的分享层。组合技能能直接减少任务执行步骤也能把多步流程收敛成一次决策降低模型出错的概率。比如把数据查询和图表生成组合成一个“快速打图”技能最常见的图表分析需求的成功率提升非常明显。如果让我给后来者一条最核心的建议技能层再小也值得当成独立的服务来做。独立的服务意味着独立的存储、独立的版本管理、独立的可观测性。这不仅是技术架构的选择更是一种维护方式的选择。一个能独立演进、独立部署、独立回滚的技能层才是 Agent 长期稳定运行的地基。我在实际项目中做到的这些设计每一项都是在这些朴素原则的支撑下完成的。希望文章里的经验能帮你少走一些弯路。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →