最近半年技术圈里“AI Native”这个词几乎被说烂了,但很多人对它的理解停留在“把大模型接进现有系统”这一步。
我第一次听到这个概念时,心里想的也是:这不就是把后端加几个 API 调用、前端塞一个对话框吗?直到真正动手把一个老项目的核心链路从“流程驱动”改成“模型驱动”,我才意识到事情完全不是这样。AI Native 不是“在传统架构上叠加 AI 能力”,而是要求你在第一性原理层面重新思考数据怎么流动、流程怎么定义、系统边界在哪、甚至团队怎么协作。
这篇文章我打算从零开始,把 AI Native 架构的完整设计思路、分层方法、落地细节和踩坑经验一次性讲透。适合三类人看:正在规划新系统的架构师、想把老系统渐进式改造的技术负责人、以及想理解 AI 应用底层逻辑的开发者。
1. 先搞清楚:AI Native 和传统 AI 应用到底差在哪
1.1 三个层次:接入、改造、重构
我在实际项目里见过三类“用上了 AI”的系统,它们对外宣传时都可能被叫作 AI 应用,但架构层面的本质完全不同。
第一类是“接入式”。后端写一个 service,调用 OpenAI 或国内大模型的 API,把用户输入转发过去,再把响应原样返回给前端。这类系统占比最高,代码量最少,一个后端工程师两三天就能写完。但它的 AI 能力是“寄生”在传统架构上的,模型只负责最后一步的文字生成,业务逻辑、数据存储、状态管理全部和 AI 无关。
第二类是“改造式”。系统把大模型嵌入到某些关键节点,比如智能客服的意图识别、搜索的语义重排、推荐的个性化生成。这些节点原来用规则或传统 ML 模型实现,现在换成了 LLM。架构没有根本变化,但 AI 开始参与业务决策了。
第三类才是真正的 AI Native。系统从需求分析阶段就把“模型作为核心计算单元”当作前提,数据库 schema 是围绕“模型需要什么上下文”设计的,业务流程是围绕“Agent 如何决策和执行”编排的,前端交互是围绕“流式输出和人工干预”构建的。用户看到的是一个人机协作系统,而不是一个有 AI 插件的管理系统。
我自己的一个体会是:判断一个系统是不是 AI Native,可以不用看技术栈,只看一个现象——去掉 AI 模型之后,这个系统还剩多少业务价值。如果模型被移除后系统就变成空壳,那它就是 AI Native;如果只是回到一个普通系统,说明它本质还是传统架构。
1.2 从“模型为中心”到“数据与反馈为中心”
传统 AI 应用的核心假设是:模型能力决定系统上限。所以团队会把大部分精力花在选模型、调 prompt、优化 RAG 检索上。
但 AI Native 架构的成熟度其实另有关键——反馈闭环。
我先说一个自己经历的现象:同一款大模型,我们分别接在项目 A 和项目 B 里。项目 A 每天只有几百次调用,团队看到效果不好就持续改 prompt,改来改去还是不稳;项目 B 接入了完整的 trace、评估和用户反馈机制,每次调用都记录上下文、输出、用户是否采纳、为何不采纳,两周之后效果明显超过项目 A。模型完全一样,差距在系统承载反馈的能力。
所以我对 AI Native 架构的定义会再收紧一点:它是一个以模型为执行单元、以反馈数据为养分的闭环系统。模型负责理解和生成,而架构负责把模型的行为纳入可观测、可评估、可迭代的循环里。
1.3 传统架构与 AI Native 架构的对比
| 维度 | 传统三层架构 | AI Native 架构 |
|---|---|---|
| 核心计算单元 | 函数、服务、规则引擎 | LLM 推理 + 工具调用 |
| 数据组织方式 | 围绕业务实体建模 | 围绕上下文和记忆建模 |
| 流程控制 | 代码写死,状态机驱动 | 模型推理驱动,动态规划 |
| 用户交互 | 请求-响应 | 流式生成、多轮协商、人机协同 |
| 质量保障 | 单元测试、接口测试 | 离线评测集 + 线上追踪 + 在线反馈 |
| 扩展瓶颈 | 数据库连接、服务吞吐 | 上下文窗口、Token 成本、模型推理时长 |
| 失败模式 | 异常、超时、系统错误 | 幻觉、偏离指令、工具调用错误、级联失败 |
这个表格我后来在多次技术分享里都用过,它最大的作用是帮团队在立项阶段统一认知。很多项目返工,不是因为技术选型错了,而是因为所有人对“AI 在里面到底承担什么角色”的理解不一致。
2. 从零开始:AI Native 系统的分层架构设计
2.1 我推荐的四层架构模型
从零设计 AI Native 系统,我建议不要上来就画微服务拓扑图,而是先做逻辑分层。我目前在多个项目里使用的分层方式分四层:
交互层。负责用户所有输入输出形式,不仅管聊天框,还包括 API 网关、事件订阅、流式输出通道、富文本展示、图表渲染。在 AI Native 架构里这一层特别讲究“人机协商”能力,比如用户提出一个模糊需求,系统要能把需求拆分成可确认的子问题,再逐步推进。
编排层。这是 AI Native 架构的核心,也是和传统架构差异最大的地方。编排层的职责是接收交互层的意图,拆解任务,调用模型,决定是否需要使用工具,处理多轮上下文,并在关键节点引入人工确认。用行业惯用语来说,编排层是 Agent 的主干。
模型层。这一层屏蔽具体的模型供应商差异,让上层不关心调用的是 GPT-4、Claude 还是国产开源模型。同时还要负责 prompt 模板管理、模型路由、降级策略、上下文压缩等横切能力。
基础设施层。包括向量数据库、关系型数据库、对象存储、消息队列、缓存、可观测性平台等。这些组件本身不新鲜,但在 AI Native 架构里有不同的使用方式,尤其是向量库和消息队列,后面我会详细说。
有人说这四层太简单,不够“分布式”。我的观点是:AI Native 系统在初期最忌讳过度工程化。你可以在物理部署上拆分很多微服务,但逻辑上必须先跑通这四层闭环。等业务量上去了,再按压力和热点做物理拆分。
2.2 核心组件职责拆解
四层架构只是一个轮廓,真正落地时你需要在编排层里做几个关键组件的分工:
Agent Runtime是 Agent 运行时的核心,负责循环执行“接收输入 -> 模型决策 -> 工具调用 -> 结果回填”这个流程。Runtime 还管理循环次数上限、Token 上限、超时控制,避免 Agent 陷入死循环或者失控调用。
Memory 模块管理三种记忆:短期记忆(当前对话上下文)、长期记忆(跨会话的用户偏好和历史事实)、工作记忆(当前任务执行过程的中间状态)。我见过很多团队直接把所有上下文都塞进 prompt,效果差且成本高,本质就是没有做记忆分层。
Tools 层提供 Agent 可调用的外部能力,包括数据库查询、HTTP 请求、代码执行、搜索、内部 API 等。工具的注册格式、参数描述、返回值规范都要标准化,否则 Agent 很难稳定调用。
Context 工程模块负责从向量数据库、业务数据库、知识库中检索有用的背景信息,在做检索增强的同时还要做去重、过滤、排序,并把检索结果压缩成适合喂给模型的格式。
Eval 模块负责离线评测和线上指标计算。它虽然不直接参与业务响应链路,但它是 AI Native 系统能持续变好的关键。我后面会专门用一节讲评估闭环,因为大部分团队真的不重视这块。
2.3 为什么微服务不是 AI Native 架构的第一优先级
热词里频繁出现“微服务架构”和“分布式架构”,但是我注意到一个实际情况:很多第一次设计 AI 原生系统的团队,单体和微服务的边界经常画错。
原因在于 Agent 的执行链路天然是“长事务”和“状态密集”的。一次 Agent 操作通常要经历多轮模型推理、多次工具调用,中间存在大量中间状态。如果用微服务把每个步骤拆开,Agent 的状态同步成本、链路追踪成本、超时处理复杂度会呈指数级上升。
我目前的实践原则是:核心 Agent 链路先用单体承载,把记忆管理、工具调用、上下文组装放在同一个进程内,尽量减少网络 IO 开销;周边非核心功能(用户管理、计费、消息推送)可以拆成独立服务。只有当 Agent 链路里的某个子模块有独立扩缩容需求(比如知识库检索服务被多个 Agent 共用),才把它们拆出来。
3. 实操落地:编排层与 Agent 设计的核心细节
3.1 从一份“需求说明”到可执行的系统流程
我先给出一个最小可运行的 AI Native 流程定义,它是一个带工具调用的 Agent 循环,我用伪代码表示,方便后续讲解:
初始化: session_context = load_prior_memory(user_id) tools = register_all_tools() max_iterations = 8 循环: 1. 接收用户输入 user_input 2. 从 session_context 和 knowledge_base 组装 prompt 3. 调用模型,获得响应 response 4. 如果 response 包含 tool_calls: for call in response.tool_calls: result = execute_tool(call.name, call.arguments) 将 result 追加到 message history 回到步骤 3,继续循环 5. 如果 response 是最终答案: 流式返回给用户 保存 session_context 触发 eval 埋点 6. 如果达到 max_iterations 或 token 上限: 终止,返回当前最可能的答案,并标记“未完全解决”这段伪代码是 Agent 的“最小骨架”,看起来简单,但每一项展开都有细节。比如第 2 步的上下文组装,直接决定响应质量。这里我强调几个原则:
prompt 的开头要有“系统边界声明”,告诉模型它拥有什么工具、不能做什么、在不确定时如何求助。一个我常用的写法是:在 prompt 的 system role 部分,优先塞入工具说明,其次塞入业务规则,再放少部分用户画像,最后才放对话历史。顺序不能乱,因为模型对位置靠前的信息关注度更高。
对话历史不能全量保留。我一开始图省事,把所有历史都塞进去,结果上下文窗口很快耗尽,而且模型容易被早先的错误信息带偏。现在我的做法是:用摘要压缩旧历史,只保留最近 3-5 轮完整历史,更早的内容做语义摘要,摘要也参与检索召回。
工具调用的参数必须严格校验。Agent 生成的参数是模型预测出来的,不是系统计算的,所以一定要在 execute_tool 之前做 schema 校验、类型转换、枚举值过滤。我之前遇到过 Agent 把金额参数生成成负数的情况,校验层直接拦截比靠模型自律靠谱得多。
3.2 工具层的注册标准与调用规范
工具层是 Agent 的“手脚”,工具设计质量决定了 Agent 能完成多少真实业务操作。我强烈建议把工具当作接口规范来管理,而不是随手写的函数。
每个工具注册时需要包含四要素:
name:全局唯一,英文小写加下划线,模型通过这个名字发起调用,命名要直观,比如 query_order 比 do_query_order_by_id_123 好得多。
description:用两到三句话说明这个工具干什么、在什么场景下用、有什么副作用。这里有个技巧:description 里可以写“当用户询问订单状态时使用”,这比“查询订单”更能帮模型做意图匹配。
parameters:用 JSON Schema 描述参数结构,要包含每个字段的类型、是否必填、取值范围、示例值。示例值特别重要,模型在构造参数时会参考示例格式。
return_schema:返回值的结构描述,用于告诉模型“结果里有什么”。你还需要定义返回值的截断策略,避免大对象占满上下文窗口。
下面的 JSON 是一个订单查询工具的注册示例,我简化过:
{ "name": "query_order", "description": "根据订单号查询订单状态和物流信息。当用户询问订单进展、物流轨迹、预计送达时间时使用。", "parameters": { "type": "object", "properties": { "order_id": { "type": "string", "description": "订单号,通常是数字字符串", "pattern": "^[0-9]{8,20}$" } }, "required": ["order_id"] }, "return_schema": { "type": "object", "properties": { "status": { "type": "string", "enum": ["pending", "shipped", "delivered", "cancelled"] }, "tracking_list": { "type": "array", "items": { "type": "string" } }, "estimated_delivery": { "type": "string", "description": "RFC3339 时间格式" } } } }我想补充的是:工具数量不宜一开始就铺开很多。我推荐 MVP 阶段控制五个以内,让 Agent 先学会精准调用少数工具,再逐步增加。工具多了以后,模型的选择准确率会下降,这是实测出来的结果。你可以用“工具性能矩阵”来跟踪:记录每个工具在多少比例的场景下被正确选中、正确执行、正确产生结果。
3.3 模型层:路由、降级与成本治理
模型层要解决一个现实问题:不同任务用不同模型,成本和质量不可兼得。
我目前在模型层实现了三级路由:
轻量任务:意图识别、短文本分类、实体抽取,用小型模型或本地量化模型就够了。这类任务对输出质量要求不高,但调用量大,用小模型能把单次成本降到原来的 1/10 甚至更低。
标准任务:普通问答、RAG 检索后的答案生成、工具调用结果汇总,用中端模型。现在国产模型在这类任务上表现已经不错,延迟也可控。
复杂任务:多步推理、代码生成、长文档分析、跨工具调度的规划,用当前最强模型。这类任务调用频率低,但单次花费高,对模型推理能力要求高。
路由层还需要维护一个“模型健康表”,记录每个模型的错误率、平均延迟、Token 消耗。当主模型连续出错或延迟飙升,自动切换到备用模型。我遇到过主模型供应商升级版本后行为突然变化的情况,好在降级策略先把流量切走了,线上才没有大事故。
成本治理一个实操技巧是:尽量使用流式输出。一方面用户感知到的首字延迟大幅降低,另一方面很多供应商对流式字符计价相同但实际体验更好,还能在你设定 max_tokens 上限后自然截断而不浪费等待时间。
4. Agent 编排与多 Agent 协作的架构选型
4.1 单 Agent 还是多 Agent:一条判断标准
我一直强调 Agent 架构先要从单 Agent 开始。不少团队一上来就规划“规划 Agent + 执行 Agent + 审查 Agent”的豪华阵容,结果调试起来苦不堪言。原因很直白:多 Agent 之间的通信协议、错误传播、上下文隔离,每一样都远复杂于单 Agent。
我的判断标准可以这样量化:如果主任务的子步骤不需要异构模型,且子步骤之间的状态可以自然共享,那单 Agent 就够了。只有当任务明显存在以下特征时,才值得拆多 Agent:
任务内部有大量并行分支,不同分支可以独立调用工具,比如同时查库存、查物流、查优惠,并行推进能大幅缩短耗时。不同子任务对模型能力要求差异很大,比如一手抓代码生成、一手抓自然语言润色,分开调用不同模型更经济。子任务之间需要强隔离,避免上下文污染。比如处理多个用户文档时,一个文档的错误判断不应影响另一个文档。
4.2 三种常见编排模式
目前在业界从开源项目到商业产品,最常出现的编排模式有三种,我按复杂程度从低到高排列。
顺序管道模式:Agent A 的输出作为 Agent B 的输入,形成一条流水线。适合任务链条固定、步骤顺序明确的场景,比如先做意图理解、再做实体抽取、最后生成回答。优点是流程可控、易调试,缺点是灵活性不足。
路由分发模式:一个路由器 Agent 接收任务,判断类型后分发给不同的专业 Agent。适合任务类型多、差异明显的场景,比如一个智能助手要兼顾客服、文档答疑、内部系统查询。路由器相当于“总调度”,需要维护一张清晰的任务路由规则表。
分层委派模式:主 Agent 拆解任务后,动态创建或唤醒子 Agent,子 Agent 执行完把结果汇报给主 Agent。这是最接近真实公司协作的方式,也是实现难度最大的。子 Agent 的创建需要多少资源、怎么回收、结果如何汇总,都考验架构设计。
我目前最推荐的做法是:从顺序管道型起步,最多加一个路由分发层。等你真的跑通主流程、积累足够真实的调用日志,再考虑分层委派。没有真实数据支撑的多 Agent 设计,基本都会在调试阶段推翻重建。
4.3 多 Agent 协作中的关键坑
多 Agent 协作的架构成败往往集中在我下面说的两个地方。
上下文污染。多个 Agent 共享同一个 memory 时,信息很容易串味。我解决的办法是给每个 Agent 明确的“可读记忆范围”,子 Agent 默认只能读取自己被授权的 memory 片段,写入公共 memory 时需要带来源标记。用数据表字段来表示就是 memory 表额外加 agent_scope 字段,查询时强制过滤。
任务失败时的归因复杂度。单 Agent 系统出错时你很容易定位到是哪一轮推理出了问题。多 Agent 系统里一个错误可能是路由器分类错误、子 Agent 工具调用错误、主 Agent 汇总错误三者的叠加。所以多 Agent 体系要求你必须为每个 Agent 单独设置 trace id 前缀,比如 main-xxx、sub-query-xxx、sub-parse-xxx,排查问题时可以按前缀快速隔离阶段。
5. 数据、记忆与知识库:AI Native 的数据架构设计
5.1 从“业务表”到“上下文视图”
传统数据库设计从业务实体出发设计表结构,比如订单表、用户表、商品表。AI Native 架构仍然需要这些表,但会额外引入一个抽象层——“上下文视图”。
上下文视图的目的,是把分散在多个表中的数据快速聚合成模型可读的上下文片断。举例来说,用户问“我这个订单还能改地址吗”,模型需要同时知道订单状态、物流进度、改地址规则。如果没有上下文视图,你就需要写多段查询逻辑,再把结果拼装成文本。有了上下文视图,可以直接按 order_id 取回一份格式化文本,塞进 prompt 即可。
我强烈建议你在项目启动阶段就明确哪些操作是“高频上下文召回”。以电商为例,无非是订单状态、售后进度、商品参数、用户偏好这几类。针对每一种写一个上下文组装函数,比在业务代码里到处拼接字符串要优雅得多,也更容易做缓存。
5.2 记忆管理:短期、长期、工作记忆的落地方式
记忆管理是 AI Native 系统中被低估最多的一环。很多系统把“记忆”等同于“对话历史”,这是大错特错的。
我现在的设计按三类记忆做了分离存储:
工作记忆存储在当前请求的内存中,代表 Agent 执行当前任务过程中的中间状态。包括已经调了多少次工具、每一步的结果摘要、尚未完成的子目标。工作记忆不需要持久化,请求结束就销毁。它的核心约束是“轻”,因为每次模型调用都会携带它。
短期记忆存储会话级上下文,主要是最近几轮对话和相应的系统动作,存储在 Redis 之类的高性能缓存中,设置过期时间。短期记忆要控制条数,一般最近 3-5 轮,最多不超过 10 轮。
长期记忆存储跨会话的稳定信息,比如用户的偏好、历史订单摘要、常用地址、信用等级。长期记忆建议写入关系型数据库或专门的记忆服务,并在写入前做语义抽取——你不能保存原始对话,而应该保存从对话中提炼出来的结构化事实。比如用户说“我经常买黄色系的衣服”,长期记忆里存的是preference_color=yellow而不是原句。
记忆写入的时机也需要注意。我采用“延迟写入+人工确认”策略:Agent 判断出候选长期记忆后,不立即写入实体表,而是先放入“待确认记忆”队列,等用户后续行为验证或人工确认后再落库。这样可以大幅降低错误记忆的影响。
5.3 向量数据库选型与知识库设计
知识库这块的热度一直很高,但我观察到现在的问题是:团队把太多精力花在向量数据库选型上,却很少设计知识库的更新机制。
先给一个选型参考:
| 需求类型 | 推荐方案 | 理由 |
|---|---|---|
| MVP阶段、数据量小于百万级 | 使用 PostgreSQL + pgvector | 部署简单,复用现有运维体系 |
| 中等规模、需要混合检索 | Elasticsearch 或 OpenSearch | 稀疏检索与稠密检索融合 |
| 高并发、大规模 | Milvus、Qdrant | 专用向量库,扩展性好 |
| 轻量场景、本地优先 | sqlite-vec、LanceDB | 零运维,嵌入项目即可 |
我的实践是:起步一律推荐 pgvector。绝大多数团队的第一个知识库数据量根本达不到需要专用向量库的量级,用 pgvector 可以在一个事务里同时处理业务数据和向量检索,数据一致性天然有保障。等向量数据真超过千万级,再迁移不迟。
知识库设计的关键其实在更新链路。文档是要切片的,切片之后会产生向量,向量必须保持和源文档的版本一致。文档内容改了,旧向量不清理,检索就会返回过期信息。我建议为每个知识切片维护 document_id、chunk_id、content_hash 三个字段,定期执行全量或增量同步任务,比对 content_hash 来删除和更新向量。
5.4 RAG 的进阶段:混合检索与重排序
只做“用户问题转向量,向量库召回 top-k”的 RAG 效果上限很低,因为纯向量检索对专有名词、精确编号、实体离散信息的召回能力天生不如关键词检索。
混合检索的做法是把向量检索和 BM25 关键词检索并行执行,分别拿到候选集后做合并、去重、打分。实际操作中,我会让向量检索取 top 20,关键词检索取 top 10,合并后用一个轻量级的重排序模型对候选重新打分,再取 top 5 作为最终上下文。
加了重排序之后,RAG 的准确率提升肉眼可见。最明显的变化是原来的 top-1 经常是措辞相似但语义跑偏的无关文本,重排后真正包含答案的片段会被推到前面。
6. 评估、反馈与可观测性:AI Native 系统的质量闭环
6.1 为什么 AI Native 系统的测试方式要变
传统系统的主力测试方式是编写确定性用例。同一个输入,期望同一个输出。模型驱动的系统不存在这种确定性,同样的 prompt 不同模型实例的输出可能有细微差异。
所以 AI Native 系统需要一套新的评估体系。我把它分为三层:
离线评测集。准备一批真实或接近真实的输入场景,每个场景标注预期行为要点。不是要求模型输出逐字一致,而是由打分规则或一个裁判模型来判断输出是否满足要点。每次更换 prompt、调整模型或修改工具时,都跑一遍离线集,保证回归不“跑坏”。
线上追踪。所有线上调用记录 trace,包括 prompt 全文、模型回复、工具调用参数、工具返回结果、耗时、Token 消耗。这些记录是问题定位的第一手资料,必须全量保存而不是采样保存。
用户反馈采集。在交互层面设计反馈入口,让用户能标记“回答有用”“回答没用”“回答有误”。还可以用隐式信号作为补充,比如用户是否复制了回答内容、是否继续追问、是否直接离开页面。
我见过最可惜的做法是:用户反馈数据明明已经采集了,但团队没有把它落库和建立分析流程。反馈数据是 AI Native 系统最宝贵的资产,不利用起来相当于模型永远在盲跑。
6.2 可观测性设计的几个关键埋点
我整理了一个埋点清单,按优先级排序:
Agent 生命周期事件。Agent 会话开始、工具调用发起、每一步模型响应、Agent 循环结束、人工介入节点。每一个事件都要带上 trace_id 和 session_id。
模型质量事件。响应内容、响应耗时、用户后续动作、是否需要用户纠正。这类数据用于离线分析模型缺陷。
成本事件。每次调用的模型名称、输入 Token 数、输出 Token 数、估算费用。成本事件对资源规划很重要,很多项目死因不是技术问题,而是账单爆炸。
埋点的实现方式建议用独立的事件通道。也就是说业务响应链路不要被埋点阻塞,异步上报到消息队列,再由消费端写入日志库或对象存储。
6.3 从“人工修正”到“数据反哺”的闭环流程
闭环最关键的一步是把评估结果反哺回系统。我常用的流程是:
线上采集用户反馈和 trace,每周末抽取一部分低质量样本,人工或半自动标注问题类型(幻觉、误解意图、工具调用错误、上下文缺失),把标注结果沉淀成评估集的增量用例,再触发一周的模型与 prompt 调优工作。
这套流程跑起来之后,你每周都能看到明确的改进方向,而不是凭感觉调 prompt。这是 AI Native 系统最核心的迭代动力。
7. 从传统架构迁移:渐进式实操路径
7.1 三条迁移路径,我推荐第二条
多数团队面对的不是从零新建,而是让存量系统“长”出 AI Native 能力。我实操下来有三种迁移路径:
嵌入式:在现有系统里加 AI 能力,比如给搜索加语义理解、给工单系统加自动分类。改动小,见效快,但 AI 仍然是外围角色。
伴生式:新建一套 AI 编排层系统,与旧系统并存。AI 编排层通过调用旧系统的 API 获得能力,旧系统不用大改。这条路径的核心价值是风险可控,你可以先让 AI 编排层在低峰期试跑,验证效果后再逐步切换流量。
重写式:彻底替换旧系统,基于 AI Native 架构重新开发。适合业务逻辑已经无法适应新需求的系统,但成本和风险都最高。
我现在强烈推荐“伴生式”。原因很务实:旧系统往往承载稳定的业务流程和数据资产,全盘重写不但周期长,而且会丢掉多年积累的隐性业务规则。伴生式方式下,旧系统继续处理确定性的数据操作,AI 编排层负责理解和决策,两者通过清晰的接口边界协作。
7.2 一次伴生式迁移的实操记录
拿我一个具体项目举例:原系统是一个工单处理平台,用户提交工单后由分配规则(关键词匹配 + 人工选择)指定处理人。我们新增了一层 AI 编排服务,流程变成:
用户提交工单后,工单内容进入 AI 编排服务,由模型抽取问题类别、紧急程度、受影响系统,并生成处理建议。AI 编排服务调一个旧系统的“候选处理人查询接口”,拿到候选列表后,根据模型抽取的类别和紧急度,给每个候选处理人打分排序。最终结果以“推荐处理人”的形式展示给运营人员,运营人员可以一键采纳,也可以手动改派。
这个方案跑了大约三周,效果比预期好。关键点在于:
第一,AI 没有直接替代决策,而是给出可被人工覆盖的推荐。这既降低了模型错误的风险,也让运营团队更容易接受。第二,架构上 AI 编排服务只依赖旧系统的一个只读接口,不触碰任何写库逻辑。即使 AI 服务宕机,工单也能按原规则正常流转,只是没有智能推荐。第三,所有 AI 推荐记录落库,后续用来分析模型推荐准确率,反哺 prompt 和训练数据。
7.3 迁移过程中的三个阻力与对策
我实际遇到的阻力主要集中在三个方面,分享给准备动手的读者。
组织阻力:现有业务团队担心流程变化影响业绩。对策是先把 AI 定位成“增强工具”,不做替换承诺,用可量化的时间节省和正确率提升来推动同事接受。
数据阻力:旧系统接口的数据格式通常不是模型友好的格式。比如一个工单描述字段里塞了大量历史备注、HTML 标签、排版符号。处理办法是在 AI 编排服务入口先用轻量规则做文本清洗,再用模型做结构化抽取。
评估阻力:项目组无法回答“智能推荐到底准不准”时,方案就很难继续推进。所以要尽早建立标注集,比如抽取老工单数据,由业务专家标注“正确处理人”,再对比模型推荐的准确率作为基础指标。我第一次跑下来模型推荐准确率约 82%,再加上候选列表的覆盖率指标,说服力就比感性描述强很多。
8. 团队协作与研发流程:AI Native 带来的组织变化
8.1 新角色:Prompt 工程师与 Agent 产品经理
AI Native 架构对团队角色的冲击,不只是招聘要求变了,而是职责边界变了。当前最紧缺的两类角色,我认为是 Prompt 工程师和 Agent 产品经理。
Prompt 工程师不是“写提示词”的,而是负责把业务规则翻译成模型行为约束,同时维护 prompt 版本、评测集、工具描述体系。这是一个偏工程的角色,需要懂业务又能动手验证效果。
Agent 产品经理则要把“模型能做什么、不能做什么”讲清楚,把用户需求拆成模型可以执行的步骤,并设计人机协作的交互流程。如果团队没有这个人,一个常见现象是开发闷头把功能做出来了,但交互方式完全不符合用户习惯,AI 能力也发挥不出来。
8.2 开发者工作方式的四个转变
AI Native 项目里的开发工作方式和传统需求开发差别很大。这里重点说四个转变,都是我实际观察到的:
开发节奏从“等待完整需求”变成“小步试错快速上线”。传统项目需求要定义得非常细才能动工,AI Native 项目往往连需求边界都是模糊的。团队要有意愿把一个功能先切到 10% 流量灰度验证,而不是等 prompt 调到完美再上线。
写代码变得像在写 SOP。传统后端代码以函数和接口为单位,AI Native 研发要更多写结构化文本,包括工具描述、上下文组织规则、评估标准、人机交互流程。
故障排查从“看日志查堆栈”变成“看轨迹查上下文”。定位线上问题时,很多根因不是代码 bug,而是喂给模型的上下文里混入了错误信息,或者工具描述让模型产生了错误理解。排查这类问题,需要审阅大量 prompt 和模型回复轨迹。
持续集成重点从“功能测试”变成“效果回归”。每次微调模型或 prompt,都要靠评测集跑分来保障质量不回退。如果团队还没有一套评测集,上线质量只会越来越乱。
8.3 一个可参考的最小 AI Native 团队配置
如果是小团队启动 AI Native 项目,我建议六个人起步:一个后端工程师(负责编排层、工具层和基础设施)、一个前端工程师(负责交互层和流式体验)、一个算法或模型工程师(负责模型选型、路由和评测)、一个业务或产品负责人(负责定义 Agent 的目标和边界)、一个测试工程师(负责搭建评测集和线上回归)、一个数据工程师(负责追踪、标注和反馈闭环)。
六个角色并不是要求六个全职人手,小型团队可以一人多角,但职责一定要有人在承担。按我项目上的经验,最容易被遗漏的角色是“评测负责人”。没有评测,就没有迭代依据,团队会陷入反复调 prompt 看不到进展的困境。
9. 几个从实战里提炼的避坑清单
9.1 架构设计阶段容易踩的五个坑
我复盘自己的项目,会把五个高频问题列成清单,能帮读者提前避开。
过度工程设计。在业务还没有真实流量时就规划多 Agent、事件溯源、微服务拆分,只会拖慢上线节奏。第一版把单 Agent 跑通闭环最要紧。
上下文窗口崇拜。以为模型上下文越长越好,把所有历史都塞进去。这既浪费成本,也稀释注意力。正确的做法是分层管理记忆,让模型专注于当前真正重要的信息。
忽视工具失败模式。工具调用必然存在失败:网络超时、业务异常、返回空结果。Agent 需要感知这些失败,并自动生成给用户看的解释文案,而不是抛一个晦涩的异常。
没有人工接管节点。哪怕全自动能力强,也要在设计里保留人工确认和人工干预入口。AI Native 系统应该是一个可以随时“切到手动模式”的系统,而不是一个黑盒。
缺少成本预算控制。上线后每天都烧钱,但没人定义单次会话的成本上限。建议开发阶段就为模型调用配置预算告警,比如按日、按会话两个维度监控。
9.2 调优阶段我常用的 prompt 调试技巧
调试 prompt 可以说是 AI Native 项目里的日常,我说几个能直接提升效率的技巧。
每次只改变一个变量。同时改 prompt、换模型、调低温等等,成功后不知道是哪个改动起的作用,失败后也不知道是哪一项造成的回归。正确的做法是一次只动一个因素。
建立 prompt 版本库。我每次调整 prompt 都会保留版本号,并在测试集上对比新旧版本得分。这比“记住大概改了什么”要可靠得多。
给 prompt 加“思维链示例”而不是只给规则。模型更容易从 few-shot 示例中学习,而不是机械地遵循抽象规则。示例中要展示完整的思考过程,而不是只给输入输出对。
让模型先陈述计划再执行。在复杂任务里,要求模型先输出它的执行计划框架,再由用户确认后继续。这不仅能减少错误,也把模型的部分思考过程暴露给了用户,信任度会显著提升。
9.3 上线后重点盯的三组数字
AI Native 系统上线后的健康值,我建议团队每周复盘以下三组关键指标。
第一组是模型行为指标,包括工具调用成功率、规划有效率、响应超时率、主动求助率。这些指标直接反映模型能不能胜任当前任务。
第二组是用户价值指标,包括任务完成率、人工接管率、用户纠正率、会话满意度。人工接管率尤其重要,如果长期居高不下,说明模型给出建议的可信度不够,你需要在评估集上系统性地改进质量。
第三组是成本效率指标,包括单次会话 Token 消耗、单次完成任务成本、日均调用量。成本指标要和用户价值指标联动看,单次成本下降了但人工接管率上升,那其实是变相甩锅给人类员工,整体效率未必更好。
最后分享一个从实操中得到的体会
这套东西说得再多,真正决定项目成败的,其实是心态。我见过太多团队把 AI Native 当成“上一个新技术”,急着堆功能,急着展示成果,而忽略了整个系统的反馈闭环与人工协作边界。
在我的个人实践里,AI Native 系统的第一版宁简勿繁,一个 Agent、三个工具、几百条评测样本,足以跑通一个真实业务场景。跑通之后再谈迭代、谈多 Agent、谈全面自动化。用一次小范围的成功换取团队信心,远比一口气规划宏大架构更靠谱。
有一个小技巧或许能帮到正在动手的你:把系统第一次真正的智能时刻记录下来。比如第一次用户主动说“这个 AI 真懂我”,把这段会话保存下来,写进团队的复盘文档里。当后面遇到架构复杂度和成本压力时,这个“真正的价值瞬间”是最好的动力来源。