去年年底,我和团队在做一个企业知识库的AI助手时遇到了一个非常典型的瓶颈:模型能力已经足够强,prompt也调到了一定水平,但系统就是“不好用”。问题出在哪儿?出在系统根本就不是为智能体设计的。我们的CRM、工单系统、权限模块,全部默认使用者是“一个坐在电脑前的人”。当调用方变成AI Agent,当它一日可以发起上千次工具调用、当它需要自己理解API语义、当它出错后需要机器可读的修正建议——传统软件的那套“人先看界面再点按钮”的交互假设,立刻失效了。
这就是“agent-native”(智能体原生)这个热词真正想表达的东西:并不是在产品里接一个大模型就叫智能化,而是从底层架构上把“智能体”当作第一公民来设计。你可以把它理解成“云原生”的后续版本:云原生改变了软件的部署方式,agent-native将改变软件的交互和架构方式。这篇文章我会用一个实践者的视角,把agent-native的核心概念、技术拆解、改造路线和踩坑经验全部讲透,适合后端工程师、AI应用开发者、SaaS产品负责人,以及所有正在做Agent落地的人参考。
1. 什么是“agent-native”:从“给人设计”到“给agent设计”
1.1 一句话定义,外加一个恰当的类比
agent-native,直译过来是“智能体原生”。它指的是一种软件架构理念:系统在需求分析、数据建模、接口设计、权限管理和运维观测等所有层面,都把“AI智能体直接使用系统”作为默认场景来考虑。换句话说,智能体不是这个系统的外部插件,而是它的原生用户。
类比一下就很好懂了。cloud-native(云原生)不是说“把服务器搬上云”,而是按云的特点重构系统:弹性伸缩、不可变基础设施、故障恢复、分布式容错等等。如果只把虚拟机从机房搬到云上,你只是“上云”,不是“云原生”。agent-native同理:给系统加一个聊天窗口,让用户在对话框里查数据,这不叫agent-native;把系统的能力设计成可以被Agent自主发现、自主调用、自主纠错、可审计的形态,才叫agent-native。
这里的关键转变是“交互主体”变了。传统软件默认使用者是人,人有眼睛、有上下文记忆、能理解模糊语义、能容忍不完美的界面;而Agent没有眼睛(即使有多模态能力,也不该靠截图去读界面),它靠API、工具描述、结构化数据来理解世界。它需要的是清晰的能力边界、稳定的返回结构、可纠错的错误信息、以及完整的调用记录。
判断一个系统是不是agent-native,我有一个很粗暴的自检方法:把这个系统的UI全部遮住,只留下API、事件和文档,一个训练良好的Agent能不能独立完成一个完整的用户旅程?如果能,说明它在架构上已经原生支持智能体;如果不能,说明你只是给系统“加了AI”。
1.2 agent-native、AI-native、LLM-native到底差在哪
这几个词在圈子里经常被混用,但它们的层级完全不同。
AI-native是一个更宽泛的产品理念,指产品从诞生之初就把AI能力内建为核心竞争力,比如一家公司用推荐算法重构了内容分发,这可以叫AI-native,但它可能完全没有面向Agent开放接口。LLM-native则更强调以大语言模型为交互核心,比如聊天式UI、自然语言查询,它改变的是“人机交互”的表面形态。而agent-native落在更底层的架构维度:它强调的是系统能力的可程序化消费(programmable consumption),让外部智能体能够把系统当成工具箱来使用。
打个比方:AI-native是这家餐厅主打“智能点餐”,LLM-native是服务员能听懂你随口说的话,而agent-native是整个厨房的供应链、备菜流程、出餐口都设计成可以对接“机器人服务员”的标准接口。三者可以互相叠加,但agent-native解决的不是“怎么对话”,而是“怎么执行”。
对于正在做Agent落地的团队来说,分清这个差异非常重要。我见过不止一个项目,花大力气把产品改成了LLM-native,但Agent调用后端服务时还是在爬接口文档、解析不规则JSON、手动处理各种边缘错误——这就是典型的“只改了表面,没改骨架”。
1.3 典型特征:五个可以自检的指标
结合我自己的实践经验,一个真正agent-native的系统通常会具备以下五个特征。你可以拿自己负责的系统逐条对照。
- 能力可发现:系统暴露的能力清单(工具/API)可以被Agent或Agent框架动态获取,而不是藏在几百页的开发者文档里。比如提供一个
GET /.well-known/ai-tools的端点,返回JSON格式的能力描述。 - 输出可消费:所有返回结果都遵循明确的Schema,甚至直接返回JSON,而不是渲染好的HTML。金额、时间、状态码这些字段有严格的定义,不需要Agent去“猜”。
- 输入可预期:每个操作定义了清晰的入参要求、校验规则、默认值和幂等性保障。Agent在并发调用、重复调用时不会把系统数据搞脏。
- 错误可修复:错误信息不仅告诉Agent“哪里错了”,还告诉它“下一步该怎么办”,比如“参数customer_id不能为空,可先调用search_customer接口获取ID”。
- 行为可观测:系统记录每一次工具调用的调用方身份、目标、消耗、结果,能够复现Agent的行为轨迹,便于审计和调试。
这五条不是理论上的完美指标,而是我在多次Agent开发中被现实教训逼出来的。接下来说说为什么这个时间点必须认真对待这些问题。
2. 为什么这个时间点必须谈agent-native
2.1 终端用户正在从“人”变成“智能体”
一个不能忽视的事实是:过去一年,AI Agent的角色正在从“聊天机器人”进化成“数字员工”。聊天机器人只负责生成文本,而Agent要负责执行任务——订机票、查库存、生成报表、修改工单状态、协调多个系统。当Agent开始执行任务,它就会像一个真正的员工一样,深入你系统的每一个业务流程。
我自己接触到的企业客户里,已经有相当一批开始用Agent做售前客服、售后跟进、内部知识查询和数据分析。一个常见的场景是:用户给Agent发一句“把上周所有待处理的工单汇总,并按优先级给我列出来”,Agent先去工单系统查数据、再去ES查关联文档、然后调用报表服务的接口做聚合、最后才把结果渲染成回复。但这里有个显而易见的问题:这些系统的API大多是为“网页前端”设计的,一次标准的REST调用需要十几个字段,错误码含义含糊,限流策略不确定,接口返回嵌套了七八层。人看这种返回还能忍,Agent在这种接口上跑起来,效率极低且错误频出。
从产业趋势看,未来几年企业软件的交互入口会越来越多地从“人直接操作”迁移到“人下发目标、Agent执行操作”。这不是科幻电影,MCP这类协议的流行就是证据——整个行业都在努力让Agent和工具之间的交互标准化。
2.2 传统系统的三个“不兼容”
我在改造系统的过程中,把传统系统与Agent之间的问题归纳为三类不兼容。
第一个是“界面导向”的不兼容。传统系统的业务逻辑往往隐藏在UI后面,很多操作只能通过点击按钮触发,Agent无法调用。比如某后台系统的“导出报表”功能只有一个前端按钮,没有对应的后端接口。Agent想做这个事,只能干瞪眼。
第二个是“语义缺失”的不兼容。传统API的参数和返回值能被人看懂,但对Agent来说信息量不够。举个例子,一个接口返回"status": 1,人知道1是“成功”,但Agent从接口描述里未必读得出来。如果接口文档说“status字段含义见附录”,Agent更是一头雾水。这类模糊性,在Agent批量调用时会被无限放大。
第三个是“权限模型僵化”的不兼容。传统系统的权限设计通常服务于“人”——人可以从登录态推断身份,可以在界面上做二次确认。而Agent没有天然的“人味”,它使用的是API凭证或服务账号,一旦权限粒度太粗(比如一个token拥有全库读写权限),Agent一个误操作就可能造成大范围影响;如果粒度太细,Agent又无法完成跨模块任务。
所以agent-native不是“锦上添花”的架构审美,而是Agent规模化落地前必须解决的基础设施问题。
2.3 适用场景判断清单
当然,不是所有系统都需要立刻做agent-native改造。我建议你用下面这个清单来判断优先级:
- 你的系统是否会被AI Agent高频调用?如果只是企业官网展示页,那优先级很低;如果是核心业务系统(如CRM、ERP、客服平台),优先级就很高。
- 你的业务事件是否具有“高频、标准、可审计”的特点?工单流转、订单处理、库存查询这类动作天然适合Agent执行,反之适合人工判断的场景(比如复杂的商务谈判)就缓一缓。
- 你的用户是否正在用Agent替代传统交互?比如你已经发现用户习惯用AI助手查订单、改预约,那说明系统已经到改造窗口期了。
在我做过的项目里,判断标准其实就一句话:如果明天有一个企业级Agent框架要接入你的系统,你是直接开放API给他,还是需要先花一个月补接口、写文档、改权限?如果答案是后者,那agent-native改造就该提上日程了。
3. 拆解agent-native的技术骨架
3.1 接口层:agentic API的设计要点
agent-native最核心的承载体是接口层。我把适合Agent调用的API称为“agentic API”,它在传统RESTful API的基础上增加了几个关键设计:
第一,接口要有“自我描述”能力。传统API文档是给开发者看的,Agent框架要真正利用接口,最好能让接口动态暴露自己的用途、入参Schema、出参Schema和调用约束。实践中可以提供一个统一的工具注册端点,返回标准化的工具描述。MCP(Model Context Protocol)里就定义了类似机制,OpenAI的function calling也支持你传入工具描述。无论用哪种规范,核心思想都是让“工具清单”变成运行时可读取的数据,而不是静态文档。
第二,返回结构要语义化、扁平化、可预测。Agent拿到的返回数据如果嵌套七层、字段命名混乱、可空字段遍布,模型理解的准确率会明显下降。我的经验是:接口返回尽量使用明确的业务对象,关注id、name、status这类“机器语义”明显的字段,同时给关键的枚举值加上自解释的description。如果原接口返回一段很长的文本报表,改造时可以新增一个结构化版本,而不是让Agent自己去解析文本。
第三,入参设计要支持“渐进式发现”。Agent不知道用户具体要查哪条数据时,它往往会先调一个“搜索/列表接口”拿到候选ID,再调“详情接口”拿完整数据。传统分页接口通常只返回第N页,Agent不知道总共有多少页。所以agentic API的分页设计要支持cursor模式,并在返回值里明确告知“还有更多数据”。
第四,幂等性是刚需。Agent在调用失败后会自动重试,如果重试时重复创建了工单、重复扣款,那问题就大了。给写操作加上Idempotency-Key(幂等键)是最基本的做法,服务端用这个键做去重,确保同一请求多次执行结果一致。
下面是一个简化的对比表,它很能说明问题:
| 设计维度 | 传统API风格 | agentic API风格 |
|---|---|---|
| 能力描述 | 写在PDF或Wiki里 | 通过工具注册端点动态暴露 |
| 返回格式 | HTML/JSON混合,结构随意 | 严格Schema,机器可解析 |
| 错误信息 | “请求失败,请重试” | 结构化错误码+修正建议 |
| 分页方式 | page/pageSize | cursor分页,携带“是否有更多”标记 |
| 写操作 | 无幂等保障 | 强制或支持幂等键 |
| 限流策略 | 面向人的频控 | 面向Agent的配额+退避建议 |
3.2 数据层:让agent看得懂、拿得到
接口之上,数据层是另一个大头。Agent要完成任务,不仅需要API,还需要理解业务数据的含义。我在实践中总结出一条经验:Agent理解数据的能力,直接取决于系统是否提供了“语义层”。
具体来说,有四个工作值得做:
- 建立统一的字段字典。把系统里所有核心实体的关键字段、枚举值、单位、业务含义整理成机器可读的字典,能挂到Schema描述里最好,比如通过OpenAPI的
description字段。 - 提供自然语言查询能力(可选)。如果数据规模很大,可以在数据层之上做一个文本到查询(text-to-SQL)的服务。注意这是可选增强,不是必需。很多系统连结构化查询都没做好,直接上text-to-SQL反而会让Agent产生更多幻觉。
- 数据权限必须前置。Agent能查询什么数据,要严格遵循底层权限模型。千万不要为了让Agent“更智能”就给它一个绕过权限的super token。后面治理层会展开讲。
- 对非结构化数据做索引。如果Agent要处理PDF、聊天记录、工单备注这类内容,建议通过检索增强生成(RAG)的方式,提前把内容切片、向量化,并提供检索接口。这样Agent拿到的不是整堆原始文件,而是定位到相关片段,既省token又提高准确率。
3.3 工具与编排层:MCP与自定义工具协议
到了工具与编排层,我们需要回答的问题是:Agent如何发现、选择、调用系统能力?目前业界没有终极标准,但MCP(Model Context Protocol)是值得重点关注的方案。
MCP把工具调用变成了一个标准化的运行时协议:AI客户端通过MCP Server获取工具列表、调用工具、获得结果,整个过程都有统一的规范。我在两个项目里试过MCP,最大的感受是它把“工具暴露”这件事从“给每个Agent写定制适配器”变成了“写一个标准server”。一次接入,多种Agent框架都能复用,典型的write once, run anywhere。
不过也要泼一盆冷水:MCP目前还在快速演进中,它的发现机制、鉴权方式、流式传输等细节在不同版本里都有变化。如果你的系统有严格的内部安全要求,或工具类型高度定制化,也可以先用自定义工具协议,只暴露给内部Agent。我的建议是:优先把“工具描述规范化”“返回结果语义化”这两件事做好,具体是走MCP还是自定义协议是次要的,因为核心设计理念是通的。
另外一个容易忽略的细节是工具聚合。一个大型系统可能有几百个API,全部暴露给Agent反而会让模型“选择困难”。实践中我会做一层“能力聚合层”,把细粒度的API聚合成粗粒度的“任务型工具”。比如把“创建客户”“创建联系人”“关联商机”聚合成一个create_customer_full工具,减少Agent的工具选择次数,成功率和响应速度都会显著提升。
3.4 治理层:身份、权限、审计与护栏
这是agent-native落地时最容易被低估、但出问题后果最严重的部分。Agent的调用频率可能是人的几十倍甚至上百倍,如果权限和审计设计不到位,事故也会是几十倍的。
身份认证方面,需要给Agent一个独立的身份,而不是复用员工的token。常规做法是服务账号(service account)或专门的Agent凭证,凭证粒度可以细分到“只读工单”“只写任务”“可修改客户”等等。这里的关键认知是:Agent身份与人类用户身份需要建立映射关系,任何Agent执行的操作最终归属于某个负责人。
权限模型方面,粗粒度的RBAC(基于角色的访问控制)往往不够用。原因在于Agent的自主性很高,会执行一连串动作,而每个动作的合法性取决于上下文。例如,“删除客户资料”这个动作,人类用户需要管理员权限,但如果这个动作是由Agent根据用户明确指令执行的,是否放行?实践中,建议引入更细粒度的授权模型,比如基于属性的策略或关系型授权(如Google Zanzibar的FGA模式)。同时,对高风险操作(删除、批量修改、发送外部消息)增加“人工审批”或“二次确认”的网关,Agent只能发起请求,真正执行前必须过一道审批流。
审计方面,只记录“谁调用了什么API”远远不够,要记录完整的调用链:用户的原始意图、Agent的决策过程、调用了哪些工具、每个工具的入参与出参、中间是否有重试、最终结果是什么。这种追溯能力在排障和安全核查时极其重要。我见过一些团队用LangSmith、Langfuse这类工具做Agent的链路追踪,值得尝试,但自研系统里的业务审计还是建议落在自己的数据仓库里。
护栏方面,要给Agent设置配额、限流和熔断机制。给一个Agent分配“日调用上限”“错误率报警阈值”“单次执行超时时间”,防止它在失控时把系统打到不可用。我在生产环境里踩过Agent死循环调用查询接口的坑,如果没有配额保护,Llm和API账单会在半小时内把你震惊到怀疑人生。
4. 实操:把一个CRM系统改造成agent-native
4.1 盘点能力地图:先清楚要让Agent干什么
理论讲完,该动手了。我以一套典型的中小企业CRM系统为例,完整走一遍agent-native改造流程。
第一步永远是做能力盘点,而不是急着写代码。找一个白板或Excel,把系统里所有能对外提供的业务能力列出来,分类标注:
- 查询类能力:查客户列表、查客户详情、查订单、查工单、查历史互动记录;
- 操作类能力:创建客户、更新客户信息、创建工单、流转工单状态、发送通知邮件;
- 分析类能力:统计各阶段商机金额、客户流失预警、销售漏斗汇总;
- 管理类能力:用户管理、角色权限配置(这一类通常不需要Agent碰)。
然后评估每个能力的“Agent友好度”:接口是否已存在?参数和返回结构是否清晰?涉及权限复杂度如何?把评估结果按“高优先级+低改造成本”排序。我的经验是从“只读查询类”开始,原因很简单:查询接口不涉及数据变更,风险低,Agent成功率容易度量(查出来的数据对不对一目了然),而且能立刻在客服问答、数据分析等场景里产生价值。
4.2 agent-friendly接口长什么样:附一个实例
拿“查客户详情”这个接口举例。传统实现可能是这样的:
GET /api/customer/1001 Response: { "code": 0, "data": { "cust_id": 1001, "nm": "张三", "lvl": 3, "orders": [ {"oid": "A100", "amt": 1200} ] } }这段返回有几个对Agent不友好的问题:字段用缩写(nm代表姓名,lvl代表客户等级),状态码code:0没有说明含义,嵌套结构让人理解成本变高。
agent-native改造后,我倾向于这样的设计:
GET /v2/agent/customer/1001 Response: { "customer": { "id": 1001, "name": "张三", "level": {"value": 3, "label": "VIP客户", "description": "近12月累计消费超过10000元"}, "orders_summary": { "total_count": 8, "total_amount": 8600.00, "latest_order": {"order_id": "A108", "amount": 1200.00, "created_at": "2025-06-01T10:00:00Z"} } }, "meta": { "request_id": "550e8400-e29b-41d4-a716-446655440000", "tool_name": "get_customer_detail", "schema_version": "2.0" } }这个设计做了什么?字段全称化;枚举值自带label和description;多层嵌套被压缩成“摘要对象”;增加了meta信息便于追踪溯源。真正执行时,Agent可以一次拿到它决策所需的全部字段,而不需要另外再猜接口文档。
注意“摘要对象”这个技巧。Agent不需要看到订单的全部明细,只需要知道订单数量、总金额、最近一单时间。把原始数据聚合好再给Agent,是减少token消耗、降低幻觉的关键操作。
对写操作,我强烈建议所有创建类接口统一支持幂等键。示例:
curl -X POST https://api.example.com/v2/agent/ticket \ -H "Authorization: Bearer <agent_token>" \ -H "Idempotency-Key: agent-1001-20250601-001" \ -d '{"customer_id": 1001, "subject": "退款申请", "priority": "high"}'服务端识别到相同幂等键时直接返回上一次结果,这样Agent在超时重试时就不会创建重复工单。
4.3 错误处理:给Agent一条“退路”
错误处理是agent-native改造里最容易被忽视、却最能拉开体验差距的环节。传统API的错误提示是给人看的,比如“操作失败,请联系管理员”,而Agent看到这种信息等于收到一张废纸。
我给生产环境定了一个错误返回规范,核心是“错误码+人读信息+机器可读修正建议”三段式:
{ "error": { "code": "MISSING_REQUIRED_PARAM", "message": "缺少customer_id参数,无法创建工单", "hint": "请先调用 search_customer 接口,使用返回结果中的 customer.id 作为参数重试", "retryable": false } }几个关键设计点:
code使用机器可读的枚举字符串,方便Agent和程序精确匹配;hint是给Agent的“下一步行动建议”,相当于喂给它的提示词,能显著减少Agent陷入无序探索的概率;retryable明确告诉Agent这次失败是否值得重试。如果为false,Agent就不应盲目重试,而是应该换一种策略,比如先查询再操作。
另一个常见场景是限流。传统限流返回429 Too Many Requests就完事了,agentic API应额外返回Retry-After建议时间,并给出减少调用频率的建议。
4.4 可观测性:搞清楚你的Agent到底在干嘛
Agent系统上线之后,最可怕的不是出错,而是出错了你不知道它是怎么错的。Agent的执行路径是动态的,同一个问题可能每次走的工具链都不一样。所以可观测性建设必须和接口改造同步推进。
我建议的数据模型长这样:
| 维度 | 具体内容 |
|---|---|
| session_id | 一次用户与Agent的完整交互 |
| task_id | 一次具体的任务执行,包含用户目标 |
| trace_id | 一次工具调用的全链路唯一ID |
| tool_name | 调用了哪个工具 |
| input_snapshot | 工具入参的完整快照 |
| output_snapshot | 工具出参的完整快照 |
| client_agent | 调用方Agent的标识和版本 |
| token_cost | 本次调用的token消耗与费用估算 |
| latency | 从Agent决策到工具返回的总时长 |
在实现上,不要每次调用都往日志里灌完整JSON,那会让存储成本急剧上升。我通常会设计一个“摘要+详情分离”方案:实时日志只记录摘要字段(时间、Agent ID、工具名、结果码、耗时、token数),详情通过trace_id去对象存储里捞。
有了这些数据,排查Agent问题的效率完全不一样。遇到用户投诉“Agent乱改客户信息”,你可以直接把该用户session的完整trace拉出来,看到底是Agent理解了错误、选择了错误工具、还是参数传错了,三分钟内定位问题,而不是靠猜。
5. 落地过程中的常见坑与我的取舍建议
5.1 高频问题速查表
这部分把我踩过、以及同行在社区里常问的问题整理成一张速查表,直接抄作业就行:
| 问题现象 | 根因分析 | 解决方案 |
|---|---|---|
| Agent调用接口时经常“想不出正确参数” | 接口入参字段命名不清、缺少示例 | 在Schema description中给每个字段加语义说明和示例值 |
| 返回的JSON嵌套太深,Agent解析错误 | 接口返回结构复杂,缺乏摘要字段 | 增加系统摘要对象,扁平化关键字段,提供专门给Agent用的精简端点 |
| Agent反复重试同一个失败请求 | 错误信息未区分retryable与不可重试 | 错误返回增加retryable:false标记和hint建议 |
| Agent创建的重复工单/重复订单 | 写接口缺少幂等保障 | 所有写操作支持Idempotency-Key,服务端去重 |
| Agent用量激增,API账单暴涨 | 缺乏配额和缓存机制 | 给Agent设置配额,对高频查询类接口增加缓存层 |
| Agent访问了不该访问的数据 | 权限模型沿用人类用户逻辑,token权限过宽 | 为Agent建独立身份,最小权限授权,高风险操作走审批流 |
| 无法定位Agent的错误行为 | 日志缺失关键上下文 | 建立session/trace链路,记录工具调用输入输出摘要 |
5.2 什么时候不该上agent-native
很多团队看到新概念就冲动,但agent-native真不是所有系统的万灵药。我在评估项目时会先问三个“有没有”:有没有真实Agent调用场景?有没有稳定可控的工具协议?有没有足够的可观测性投入预算?如果三个答案里有两个是否定的,那这个改造就应该推迟。
具体到场景,下面这几类系统不建议当前做agent-native改造:一次性内部脚本(写好就跑,没有持续演进的需要);以人为核心、强主观判断的决策系统(比如法务审核系统,贸然开放API给Agent,短期只会增加事故率);以及本身数据质量差到连人都搞不清字段含义的老旧系统。面对后者,先把数据治理做了,比急着让Agent接入更有意义。
5.3 关于成本与性能的几条经验
最后聊聊钱和性能。Agent-native架构会带来一个直接问题:调用量变大了,成本也跟着变大。而且这个变大的幅度不是线性增长,是“暴力增长”——一个Agent可以在一分钟内调用几十次工具,一个接口被高频反复查询是常态。
我的应对策略有三个:
一是缓存前置。高频只读接口的响应结果尽量缓存,即使只有30秒的TTL也能挡住80%的重复请求。AI Agent倾向于在同一任务里反复查询同一个列表,做好缓存效果立竿见影。
二是批量聚合。Agent有时候为了完成一个目标会拆出好几个子调用,其实很多可以合并。比如Agent要查询一百个客户的等级,如果系统支持批量接口,就不要让Agent循环一百次单查接口。在设计agentic API时,批量能力应该作为默认选项。
三是Token节约。给工具的描述不要写成长篇大论,每个字段的描述精确、简洁、带示例就够。因为这些描述会被塞进每轮请求的context里,描述越长,token成本越高,模型聚焦核心信息的效率反而越低。我见过一个项目的工具描述文件写了3万字,每次调用还没干正事就烧掉几千个token,属实没必要。
最后再说几句实际感受
做agent-native改造这一年多,我最大的体会是:它不是一个“做完就交付”的功能,而是系统架构的一种长期演进方向。你不需要一次性把整架飞机拆了重装,而是可以从一个高频查询接口开始,给它加上语义描述、梳理返回结构、补上幂等和可观测性,然后让一个Agent接入跑起来。等这条链路稳定了,再逐步把写操作、审批流、数据权限模型一个个纳入进来。这个“从只读到读写、从单工具到多工具、从灰度到全量”的路径,比从头规划一个宏大的agent-native平台要靠谱得多。
也送给所有正在做Agent落地的同行一句话:先别急着调模型、写更复杂的prompt,先把你的系统从“给人用”变成“给machine用”,Agent的智力才能被充分释放。别问我是怎么知道的——那半年的深夜排查日志,都是这么来的。