AAIPROS

AIPROS · Static Essay Page

别把 Agent 做成聊天框:能力与技术设计

Agent治理 公众号文章 2026-06-11 7 min

别把 Agent 做成聊天框:一次鲜食备货的 Harness 能力与技术设计 门店每天晚上最怕的一件事,不是“要不要用 AI”。

别把 Agent 做成聊天框:一次鲜食备货的 Harness 能力与技术设计

门店每天晚上最怕的一件事,不是“要不要用 AI”。

而是第二天早高峰前,三明治、沙拉、甜点到底备多少。

备少了,顾客买不到。备多了,当天卖不完,第二天就变成损耗。

我们先看一个连锁咖啡品牌的鲜食备货场景:系统要根据历史销量、当前存量、临期损耗、天气、商圈活动和配送窗口,生成第二天的备货建议。

这个场景看起来简单。

店长要看历史销量、当前存量、临期损耗、天气、商圈活动和配送窗口。总部要控制浪费率,也要避免早高峰断货。

如果你把它做成一个聊天框,让店长问一句“明天三明治备多少”,模型回一段建议,这不是业务 Agent。

最多是一个会解释业务的助手。

真正的难点是: 这个系统能不能把业务事实收进来,把工具按顺序跑起来,把输出变成结构化对象,把规则校验做实,把失败路径也设计成正式流程。

这篇文章会尽量用业务语言解释技术设计。

技术词会保留,因为真正落地时绕不开它们。但每个技术词前面,都会先讲它解决的业务问题。

一、先定“交付物”,不要先定聊天入口

业务 Agent 的第一个设计动作,不是画聊天框。

而是定义它最后要交付什么东西。

在鲜食备货场景里,这个东西不是“回答”,而是一张正式的备货计划单。

技术上可以把它叫 ReplenishmentPlan,你也可以先把它理解成“系统能保存、能审批、能追溯的一张业务单据”。

它至少要包含五类信息:

计划头:门店、日期、生成时间、数据快照版本、策略版本。

明细行:SKU、时段、建议数量、建议原因、证据来源。

风险标记:断货风险、临期风险、配送冲突、异常波动。

审批状态:自动通过、需要店长确认、需要区域经理确认。

审计轨迹:用了哪些输入、调用了哪些工具、哪个校验器放行。

这一步一旦定清楚,产品和技术的争论会少很多。

因为大家不再争“AI 要不要会聊天”,而是在争这个对象能不能进入业务流程。

能保存,能编辑,能回滚,能导出,能被后续系统消费,才叫能力闭环。

二、把能力拆成四段,模型只负责其中一段

把整个备货 Agent 拆开看,它不是一个大模型动作。

它至少是四段能力的组合。

第一段是收集事实。 系统读取销量、存量、配送、天气、活动和门店状态,形成一份“事实包”。

第二段是生成草案。 系统基于规则、历史模式和模型判断,生成一版或多版备货草案。

第三段是检查约束。 系统检查保质期、配送截止、最小陈列、异常波动、审批阈值。

第四段是落到业务。 系统把通过检查的方案写成草稿、推给人确认,或进入后续订货流程。

模型可以参与候选生成和解释。

但事实采集、硬规则校验、权限判断、发布动作,都不应该交给模型自由发挥。

这就是能力设计里的边界感:AI 可以参与判断,但不能替代流程边界。

三、每个工具都要有说明书,不能只写“查询数据”

很多 Agent 应用会输在工具设计上。

工具名字看起来都有了:查销量、查库存、算建议、做校验。

但开发一问参数、返回值、超时、错误码、幂等性,就发现全是口头描述。

这就是“工具契约”。

你可以把它理解成工具的使用说明书:谁能用,怎么用,用完会返回什么,出错时怎么告诉系统。

一份可运行的工具说明书,至少要说清六件事:

输入参数:storeId、businessDate、skuGroup、timeWindow 这些字段谁必填。

返回结构:返回明细、聚合值、置信标记,还是只返回摘要。

数据版本:本次运行读的是哪个快照,不允许前后工具读不同口径。

错误语义:缺数据、无权限、接口超时、业务无结果,要分开返回。

动作边界:查询工具只读,发布工具才允许写入,重复点击不能生成两份订单。

超时策略:工具慢了是重试、跳过、降级,还是直接进入人工确认。

这也是为什么我说,数据不是页面装饰,而是 Agent 的工具。

工具不是把数据库函数暴露给模型。

工具是带契约、带权限、带错误语义的业务能力接口。

四、Harness 的最小架构,是五个“控制台”

Harness 这个词听起来技术味很重。

你可以先把它理解成:让 AI 按业务规矩工作的控制台。

如果要让开发团队真正接得住,我会把这个控制台拆成五层。

第一层:流程指挥台(Orchestrator)。 决定本次运行走到哪一步,是否继续、暂停、重试或降级。

第二层:工具登记表(Tool Registry)。 登记所有可调用工具,管理工具字段、权限、超时和错误码。

第三层:规则引擎(Policy Engine)。 保存业务规则,例如保质期、配送截止、审批阈值和门店特殊策略。

第四层:质检员(Validator)。 检查输入、工具返回、模型输出和最终业务单据,失败时给出机器能读懂的原因。

第五层:运行记录本(Trace Store)。 记录每次运行编号、工具调用编号、数据版本、规则版本、提示词版本、模型版本和每一步耗时。

这五层不是为了显得复杂。

它们分别解决五个工程问题:流程控制、能力调用、规则治理、结果可信、事后复盘。

没有这五层,prompt 写得再好,也很难进入生产系统。

五、先画“流程站点”,再谈对话体验

技术上,我不建议从“多轮对话”开始设计。

先把系统会经过哪些站点画出来。

开发会把它叫状态机。业务可以把它理解成一张流程路线图。

一个最小闭环可以这样设计:

发起草稿:用户或定时任务发起备货请求。

采集事实:读取销量、存量、天气等事实,并锁定数据版本。

生成草案:由规则、模型或二者组合,生成备货候选方案。

检查方案:跑字段检查、业务规则检查和异常检查。

人工确认:命中风险阈值时,让店长或区域经理确认。

等待发布:通过检查后,等待写入订货系统。

发布或降级:发布成功,或进入可解释的降级方案。

状态机的好处是,开发者知道每一步的输入、输出和失败处理。

产品经理也知道哪里可以自动化,哪里必须让人确认。

这比一句“让 Agent 自主规划”更稳。

六、固定表头不是格式问题,是责任边界问题

如果模型最终只输出一段自然语言,后面所有系统都会难受。

它不能稳定入库,不能稳定校验,也不能稳定触发审批。

所以最终输出要先定义固定表头,也就是技术上说的结构化 schema。

例如每一行建议至少要有:商品、日期、时段、建议数量、建议原因、证据来源、风险等级、是否需要审批。

开发实现时,这些字段可以对应 skuId、date、timeWindow、recommendedQty、reasonCode、evidenceRefs、riskLevel、approvalRequired。

字段不是越多越好。

关键是每个字段都要有人负责解释。

建议数量来自候选生成器。建议原因来自规则或模型归因。证据来源指向工具返回的事实。风险等级来自校验器。是否需要审批来自策略引擎。

这样设计以后,模型不是在“写一篇建议”。

模型是在一个受控 schema 内补全可校验对象。

如果解析失败、字段缺失、字段越权、证据引用不存在,就不能发布。

七、质检员比提示词更重要,而且要分层

不要把所有控制都写进 prompt。

prompt 可以提醒模型,但不能替代质检员,也就是校验器。

我会把校验分成四层。

结构校验。 字段是否完整,类型是否正确,枚举值是否落在允许范围。

事实校验。 证据引用是否存在,输入快照是否一致,工具返回是否过期。

业务校验。 是否超过保质期,是否违反配送截止,是否触发审批阈值。

运行校验。 工具调用顺序是否完整,关键工具是否缺失,是否出现未授权调用。

这里要区分两个概念。

Agent 框架里的 guardrail,可以理解成安全护栏,适合做输入输出拦截和工具调用保护。

业务系统里的 validator,可以理解成业务质检员,还要承担领域规则校验。

二者可以协作,但不要混成一个东西。

八、过程可见不是给用户看热闹,而是留下运行证据

业务用户要看的是“为什么给这个建议”。

技术团队要看的是“这次运行到底发生了什么”。

所以运行记录不能只是一段聊天历史。

它至少要包括:

运行编号:一次端到端运行的唯一编号,也就是 runId。

工具调用编号:每次工具调用的编号、入参摘要、出参摘要和耗时。

数据版本:本次读取的数据快照版本,避免前后口径不一致。

规则版本:本次使用的规则版本,方便解释“为什么今天不一样”。

提示词和模型版本:方便复盘模型行为变化。

校验结果:哪些规则通过,哪些规则失败,失败原因是什么。

这不是为了给页面加一个漂亮进度条。

这是为了让系统能调试、能审计、能回放、能做回归测试。

九、失败预案要写成清单,不要只说“规则兜底”

很多 AI Demo 一到失败路径就露怯。

接口断了,就红字报错。模型没返回,就一直转圈。输出格式不对,就让用户重试。

这在业务系统里不够。

门店今晚还是要下单。明天早高峰不会因为模型超时就推迟。

所以失败预案要提前写成清单。

配置缺失:不启动模型,提示配置入口,不允许伪装成功。

工具超时:重试一次,仍失败则进入人工确认,不自动发布。

数据缺口:使用最近有效快照只能生成草稿,必须标记证据不足。

模型超时:用规则基线生成保守方案,并标记为规则兜底。

解析失败:丢弃模型输出,返回结构错误,不让自然语言绕过固定表头。

业务校验失败:保留候选方案,但进入 NeedsReview,不进入发布。

降级不是“模型不行就规则上”。

它要说明:哪个故障发生了,损失了哪类能力,系统还能交付什么,哪些动作必须交给人。

十、真正沉淀下来的,是业务专家的规则册和测试题

这类应用最后沉淀的,不只是一个补货助手。

更重要的是业务专家的判断路径。

过去,经验常常藏在店长脑子里、运营群里、日报里、Excel 里。

现在要把它拆成规则册和测试题。

规则册,也就是 policy,负责回答:什么情况下加量,什么情况下减量,什么情况下必须人工确认。

测试题,也就是测试集,负责回答:系统改版以后,这些判断有没有被破坏。

我会准备三类用例。

黄金用例:最常见、最稳定、应该自动通过的场景。

边界用例:临期、缺数据、配送截止、天气突变、活动冲击。

反例用例:模型容易说得很合理,但业务上必须拒绝的方案。

不写测试题的 Agent,很难从演示走向生产。

因为你无法证明下一次 prompt、模型、规则或工具升级以后,它还在正确工作。

十一、真正要迁移的,是你把经验讲成工程的能力

这套方法不只适用于鲜食备货。

合同评审、采购比价、项目周报、质量异常分析、门店巡检、客服工单分派,都可以用同一套思路重新设计。

不要先问“模型能不能回答”。

先问十个更硬的问题:

最终交付物是什么,能不能进入现有业务流程?

输入事实来自哪里,数据快照版本如何锁定?

哪些工具只读,哪些工具有写入副作用?

工具字段、错误码、超时和权限有没有写清?

状态机有哪些状态,失败后进入哪个状态?

输出对象的字段由谁负责,能不能被机器校验?

哪些规则是硬约束,哪些规则只是建议?

哪些结果必须人工确认,哪些可以自动通过?

失败预案是否明确说明能力损失和人工责任?

有没有正常题、边界题和反例题?

当你能回答这些问题,AI 应用就不再只是“会不会用模型”。

它开始变成流程设计、产品设计和工程设计的结合。

这也是我这次实践最大的收获。

业务专家的价值,不是去背模型参数,也不是去模仿开发写代码。

真正的价值是把经验拆成交付物、工具、规则、流程站点、质检、记录和测试题。

开发者看到这些,不会觉得你只是在讲概念。

他会知道接口怎么定义,状态怎么流转,失败怎么处理,哪些地方不能交给模型自由发挥。

对流程负责人、产品经理和业务专家来说,能力迁移的第一步很具体:明天就找一个高频闭环,先写清最终交付物,再列出输入事实、工具说明书、业务规则、质检规则、流程站点、失败预案和测试题。不要急着做大平台,先把一个小闭环跑扎实。跑通之后,再把这套结构复制到下一个流程。

未来的企业 AI 差距,很可能不在谁的模型更新更快,而在谁更早学会把业务经验变成可运行、可校验、可复盘、可测试的工程。

参考阅读: OpenAI Agents SDK:Agents、 Tools、 Guardrails、 Tracing。