DoorDash 如何做好 AI 购物助手:不全靠模型,靠工具和记忆落地

记忆系统上线后杂货结账转化率提升约24%,自动化评测让日均评测量从1条人工反馈扩到2000+场。
作者:DoorDash Engineering Blog07-14 · 14 分钟⚑ 厂商通稿 · 立场提示
🎧 听播客版0:00 / --:--
0:00 / --:--
深度 · 小互解读
速览
  • DoorDash 推出 Ask DoorDash,一款通过自然语言对话搜餐厅、规划三餐、建购物车的 AI 助手,目前在美国部分地区 iOS 端灰度上线。
  • 架构把编排智能体、专业化的领域智能体、共享工具层、托管服务拆成四层,业务逻辑收在共享工具层,不塞进提示词里。
  • 三层记忆系统(长期记忆离线批处理、会话内记忆实时更新、对话记忆显式提取)支撑个性化,7天生产数据显示:有记忆支持的生鲜杂货结账转化率相对提升约24%、客单量提升17%、对话轮次减少7%,餐厅推荐转化率提升15%。
  • 自建评测框架用AI模拟用户跑录制好的工具数据,日均自动评测超2000场,智能体质量分提升8分,回归测试从6小时压缩到20分钟,支撑了一次把延迟降低35%且不掉质量的模型底座迁移。
⚑ 立场提示:这篇解读的信息来源是 DoorDash 官方工程博客三部曲和联合创始人 Andy Fang 的公开表态,文中转化率、客单量、评测规模等数据均为 DoorDash 自评的7天生产窗口结果,未经第三方审计。
1发布动态

DoorDash 上线了什么

DoorDash 从2026年6月起连续发布三篇工程博客,详解一款刚上线的 AI 购物助手 Ask DoorDash:它的运行时架构、记忆系统,还有支撑它上线的评测框架。
用一句自然语言描述想吃什么、想买什么,AI 就能帮你搜餐厅、规划三餐、建好购物车,目前已经在美国部分地区的 iOS 端灰度上线。
◆
硬事实:评测团队把日均质量评测量从大约1条员工人工反馈,扩到了2000多场自动化评测;一次完整的回归测试,从人工6小时压缩到了20分钟。
一句话 说出想吃什么、想买什么 2 分钟内 AI 建好购物车 下单/微调 比手动操作快约5倍

目前只开放了两个场景:餐厅搜索和杂货购物,安卓和网页端还没上。早期数据显示,七成左右的消息都是找东西一类的需求,比如“附近的拉面”“今晚吃什么”“这周素食晚餐怎么买”;大部分用户会在同一个对话里来回改好几轮,边聊边调整,而不是问一句就走。DoorDash 也提到,目前生产环境里最容易出问题的地方是“信息对不上”:推荐了一家其实已经关门的店,报的价格和货架不一致,或者说加进购物车的东西其实没加进去。修法都是同一个思路,让 AI 每一句涉及事实的话,都必须真的调用一次工具去查系统里的真实数据,而不是凭上下文猜。

2运行轨迹

一次点单背后发生了什么

一句“给我建一份60美元的两人素食购物清单”,看起来是一句话,背后其实跑了不少东西。DoorDash 举了一个三轮对话的真实例子,能看出哪些步骤真的要过AI,哪些步骤根本不用。
Turn 1“给我建一份60美元的两人素食购物清单”
查用户记忆(饮食偏好/品牌/历史订单) 搜附近开着的杂货店 查单店库存 核对价格/优惠 规划展示widget 生成回复文案
Turn 2用户直接在购物车widget上换意面品牌、去掉一瓶已经有的酸奶、改数量
直接改购物车对象 小计实时按最新库存价格重算
Turn 3“再加点沙拉的食材”
读取带用户编辑的购物车 在同一家店核对库存 在剩余预算内追加食材 渲染更新后的清单
过AI模型不过AI,直接改数据

Turn 2 是关键的一处设计:用户在购物车widget上点点改改,这些操作全部直接改动购物车这个对象本身,不会再走一次AI模型判断,AI处于空闲状态。这意味着最耗时间的“调用AI”这一步,被从大部分交互里砍掉了。

6~8次
Turn 1 单轮触发的AI调用次数,外加多次工具调用
20~30秒
Turn 1 端到端耗时
一轮杂货购物请求的调用轨迹示意图
DoorDash 官方博客给出的原始调用轨迹图:一轮杂货购物请求背后串起的AI调用与工具调用节点。 · 来源:DoorDash 工程博客
3系统分层

四层架构怎么分工

Ask DoorDash 不是重新搭了一套系统,是在 DoorDash 现有平台上面加了一层。整个架构分成四层,业务逻辑只住在其中一层,不写进提示词里。
1 · Assistant Runtime(运行时)
客户端、负责收发消息和维持登录状态的 Gateway、决定由谁接手这轮对话的 Orchestrator(编排智能体),以及两个领域智能体:负责餐厅发现和负责杂货购物。
2 · Managed Agent Services(托管服务)
Artifacts(购物车、店铺卡这类widget,存成带版本号的对象)、会话状态、消费者记忆。这一层只建一次,公司里其他做智能体的团队都能直接拿去用,不用重新搭。
3 · 共享 MCP 工具层(业务逻辑住在这里)
MCP 全称 Model Context Protocol,可以理解成一套所有智能体都能调用的标准化工具箱:搜索、推荐、购物车、结账、订单历史、记忆检索,都是箱子里的一个个工具。买菜规则、优惠怎么算、库存怎么核,全写在工具里,不写进提示词。
4 · DoorDash 后端服务
和App其他地方共用的同一套搜索、商品库、订单历史、购物车、商家系统。后端升级一次,Assistant自动跟着受益。
打个比方:A2A协议

编排智能体和领域智能体之间靠一套叫 A2A(agent-to-agent)的协议互相传话,好比公司里不同部门约定好统一的公文格式:只要格式对得上,餐厅团队和杂货团队各自开发、各自发布,互不干扰,也不用绑在一起上线。

有个细节叫“智能体锁定”:如果用户上一轮问的是买菜,这一轮说“加到购物车”,系统会默认继续路由给杂货智能体,而不是重新判断一次,直到用户的意图明显变了才切换。每个智能体跑在Google的Agent Development Kit上,具体用哪个AI模型按角色配置,出了问题可以按角色单独换模型,不用发新版本。

DoorDash Assistant 运行时架构图
DoorDash Assistant 运行时架构图:客户端、Gateway、编排智能体、领域智能体,以及下面的托管服务与工具层。 · 来源:DoorDash 工程博客
Agent 开发的四根工程支柱
四根工程支柱:智能(记忆与个性化)、评测、平台(运行时与工具)、用户体验。 · 来源:DoorDash 工程博客
4核心机制·记忆

记忆系统:让 Agent 记住你是谁

核心创新一

智能体每次对话都是从零开始,不知道自己在跟谁说话。DoorDash 要解决的问题是把散在各处的用户数据,变成“在正确的时刻,给到正确的上下文”,靠的是三层记忆系统加一套四阶段的记忆调度流程。

这套系统上线后,有记忆支持的生鲜杂货对话,结账转化率相对提升了约24%,误解用户意图的概率降低了约33%。DoorDash 把记忆拆成三层,更新节奏完全不同。
记忆层更新节奏装的是什么
长期记忆每天/每周批处理饮食偏好、就餐习惯、品牌偏好、常去店铺
会话内记忆实时当前购物车、正在搜的东西、刚看过又跳过的商品
对话记忆随对话产生用户在这次对话里明说的、要长期记住的事

光有这三层记忆还不够,AI 得先搞清楚这一轮该查哪几类记忆。DoorDash 把这个过程拆成四个阶段:

意图与范围解析
→
查询规划
→
检索排序
→
上下文打包

拿“我想做鸡肉提卡马萨拉”这句话走一遍:第一步意图解析先认出这是一个菜谱请求,该查的是品牌偏好和份量偏好,不是查附近餐厅;第二步查询规划把它拆成“精确关键词查品牌偏好”加“语义查询份量历史”,只在杂货相关的记忆区块里找;第三步检索排序并行查完,把最近确认过的“常买两人份”排到最前面;第四步打包成几行结构化事实塞进提示词,比如“两人份、常买Oatly燕麦奶、不吃肉”,智能体照着这几行字去挑食材,而不是把上百条历史记忆全部堆给它。查询规划这一步还会按三个维度参数化:用语义相似度搜、还是用关键词精确匹配、还是直接按结构化字段取;查哪个记忆分区;以及限定条数、相似度门槛、时间窗口这些边界。

为了让关键词检索好用,系统还会在每次对话开始时,把这个用户当前记忆里实际存在的词汇列一份目录(Memory Bank Index)塞进提示词,智能体照着这份目录去搜,搜目录里没有的词只会白费token。对于订单历史这类特别庞大的记忆区块,智能体会先做一次轻量的“扫一眼”,拿到条数、可用性这些概要信息,再决定值不值得把完整内容读进来,避免一上来就把整块历史塞进上下文。

记忆撞上货架现实,谁让步

记忆和当下的真实情况是两回事。一个“一直买Oatly”的用户,如果最近的门店没货,智能体查库存时会发现这一点,转而找替代品;一个说好“60美元预算”的清单,如果凑齐这周要买的东西最低也要72美元,AI 会据实告诉用户,而不是硬凑一个假的60美元。这个校对不是单独一层做的,是同一轮对话里,智能体先取出存好的偏好,再拿它去对照搜索和购物车工具返回的实时价格、库存、营业时间,记忆和现实冲突时,按现实调整方案。

三层记忆在不同时间尺度工作:长期记忆、会话内上下文、对话与显式记忆
三层记忆各自节奏不同:长期记忆离线批处理,会话内上下文实时更新,对话记忆记录用户当面说出口的偏好。 · 来源:DoorDash 工程博客 Part 2
记忆系统架构图
记忆系统架构图:从记忆生成、工具编排层、存储、访问策略,到最终服务给各个智能体的完整链路。 · 来源:DoorDash 工程博客
5记忆生命周期

记忆怎么沉淀、又怎么被精准遗忘

一次购物会话可能有20轮对话,大部分都是临时的搜索结果和工具返回值,真正值得长期记住的可能只有一两句。DoorDash 用一套三阶段的异步流程,把这一两句从噪音里挑出来。

一句话怎么变成一条能用的记忆

发信号(用户说完这句就异步触发,不加延迟)
→
AI抽取分类(判断是不是耐用信号)
→
去重合并(跟已有记忆比对再写入)
对话原句

“我们家吃素,这周还是买两人份哈。”

写入的记忆
品类饮食偏好
内容家庭吃素,常买两人份
时效长期,除非用户改口

但如果一句话只是“这个是给朋友带的,今晚要用”,这种一次性说法会被跳过,不会写进长期记忆。判断标准还会按业务场景变:在餐厅场景里,用户说“我不想吃拉面”默认是一时的心情,除非用了“always”“never”这类明确的耐用性字眼,不然记下来反而会让智能体以后一直不推面食;换到杂货场景,用户随口一句“我喜欢Oatly”,恰恰就是要长期记住的品牌信号。价格敏感度这类偏好,只有用户主动发起才算数,比如自己问“Safeway有什么便宜的”才会被记下来,如果只是被动接受了AI推荐的便宜店,那不算是对这个人的持久判断。

“忘记”比“记住”更难

如果用户说“忘记我喜欢Nova家的烤芝士”,简单粗暴地按相似度或者关键词匹配删除,很容易把跟“Nova”或者“芝士”有关、但其实用户还想留着的记忆一起删掉。

语义检索候选集(跟Nova/烤芝士相关的记忆)
→
再让AI逐条判断哪些真该删
→
同步执行删除,并在回复里确认删了什么

删除动作和保存不一样,保存是异步触发不占用时间,删除是同步执行的,智能体能在回复里当场告诉用户具体删了哪几条。记忆也没有统一的过期时间:食用油买了80天,大概率还在厨房里;牛奶买了12天,大概率已经喝完了;素食这类用户自己说出口的偏好,压根没有失效期,除非用户自己改口。一条记忆该活多久,取决于它本身是什么,不是套一个统一的衰减公式。

6核心机制·评测

怎么知道 Agent 真的靠谱

核心创新二

智能体的对话没有唯一正确答案,人工抽查又扩不了量。DoorDash 建了一套自动化评测框架,把“这轮对话到底帮没帮到用户”变成一个能天天跑、能量化的问题。

框架由四个部件组成:定标准的rubric,把原始记录整理成可读证据的transcript builder,能批量造对话的conversation simulator,还有替代人工打分的AI裁判。
Rubric · 评分标准

把每条标准写成能二元判断的准则,比如“推荐的餐厅有没有满足用户说的送达时间、预算、忌口”。每条标准先判断适不适用这个场景,适用才打分,reorder专属的检查不会错误地扣到菜谱场景头上。

Transcript Builder · 记录整理

每场对话用OpenTelemetry打点,存进ClickHouse。原始记录信息量太大,Python脚本把它拆成每条评分标准专用的证据切片,裁判只看它需要看的那部分。

Conversation Simulator · 模拟对话

用AI扮演用户,按写好的场景脚本走完整段对话,配上一份提前录制好的工具返回数据(不查真实数据库),保证同一个场景每次跑起点都完全一样,分数才能公平对比。

LLM裁判 · 自动打分

用GEPA算法反复迭代打分提示词,直到跟人工标注的判断结果对得上,校准好了以后,一天能自动审2000多场对话。

打个比方:工具fixture

评测时不真的去调用线上库存、订单这些接口,而是回放一份提前录好、固定不变的返回结果。这样同一个测试场景不管跑多少次,起始条件都完全一样,分数变化才能归因到智能体本身,而不是货架今天恰好有没有货这种随机因素。

打个比方:GEPA提示词优化

一种自动改写打分提示词的算法:不断生成新版本的评分提示词,挑出跟人工标注结果最一致的那版留下来,反复校准,让AI裁判的判断尺度慢慢贴近真人评审。

50×8
一次典型的离线评测覆盖50个场景,每个场景跑8次,共400场对话
6小时→20分钟
同样规模的对话,人工逐个生成要6小时以上,模拟器压缩到约20分钟
评测体系镜像生产运行时架构
评测按层拆开:编排路由、护栏、领域智能体能力各自独立量,结构镜像生产运行时。 · 来源:DoorDash 工程博客 Part 3
评测系统架构图
评测系统架构图:rubric、trace记录、AI裁判等模块如何拼成一套完整评测系统。 · 来源:DoorDash 工程博客
7真实案例

评测系统在两个真实事故里怎么起作用

这套评测不是摆着好看的仪表盘,两个真实案例能看出它到底抓到了什么、又验证了什么。

案例一:AI说话像在念代码

线上评分揪出的问题

智能体确实把任务完成了,但回复用户时夹带了系统内部的黑话,比如“reorder skill”“fetch”“in parallel”这类词,听起来像是在给另一个程序汇报,不像一个导购员在说话。

改完之后

整理了智能体的沟通规则,把内部的技能指令和面向用户的话术分开。离线验证里,这类问题出现的比例降了11%,又跑了一遍全量场景确认没有引入新的问题,上线后线上监控确认改善持续存在。

案例二:换个模型,分数直接掉了

Gemini 3.5 Flash 发布时,DoorDash 的智能体正跑在 Claude Sonnet 4.6 上。Flash 的跑分数据显示它可能更快,团队想换过去把延迟降下来,但换底座模型这种大改动风险很高,得先验证质量没掉才敢上线。

把Flash接进离线评测跑一遍,分数大幅下滑
→
评测揪出真正原因:格式兼容问题
→
针对性修复后,分数追平Sonnet

评测揪出的原因,是格式兼容出了问题,不是模型能力不够:Flash 把一部分工具参数格式化成跟 Sonnet 不一样的样子,比如该传一个字符串的地方传成了一个JSON对象;系统提示词里有些约定,Sonnet 能自己脑补出来,Flash 读不出来。修复也是对症下药:一边给工具输入加上确定性的纠错逻辑,把格式不对的参数纠正回来而不是直接丢弃这次调用;一边把提示词里原本隐含的约定写明白,比如明确要求用数据里给出的门店原名,不许自己加工润色。修完之后重新跑评测,分数追平了 Sonnet,误差在评测系统本身的噪声范围之内。上线后跟踪线上质量和参与度指标,延迟降低了35%,质量指标没有下滑。

8复用价值

这套系统能带来什么

这套架构的价值不只在 Ask DoorDash 这一个功能上。

业务逻辑收进共享的 MCP 工具层,而不是写死在提示词里,意味着同一套搜索、购物车、库存工具,能被公司内其他做AI功能的团队直接拿去用,后端服务升级一次,所有上层智能体自动跟着受益,不用每个团队各自重复接入一遍。

记忆被设计成一个独立的工具层,而不是某一个智能体的专属功能。一个智能体在购物对话里学到“这家全吃素”,订位、外卖推荐这些其他智能体立刻就能用上这条信息,不用每个团队各自重新解决一遍抽取、去重、检索这套问题。

自动化评测把回归测试从6小时压缩到20分钟,意味着模型或者提示词的改动能在几十分钟内验证完,像“换掉底座模型”这种高风险操作,也能先在低风险的离线环境里验证过关,再暴露给真实用户。

购物车编辑这类操作直接改动版本化的对象,不经过AI模型往返,是一种不依赖模型本身变快、也能把端到端延迟压下来的思路,对任何“AI加实时库存或价格”类的应用都是可以直接搬过去用的做法。

9生产数据

生产数据说了什么

收尾一组硬数字,看这套系统目前的真实效果规模。以下均为七天生产窗口内的自评数据,不是第三方审计结果。
记忆相关
24%
有记忆支持的生鲜杂货结账转化率相对提升幅度
17%
生鲜杂货客单量(购物篮大小)相对提升幅度
7%
生鲜杂货场景对话轮次相对减少幅度
15%
开放式查询下餐厅推荐的相对转化率提升幅度
33%
有记忆支持时,智能体误解用户意图的相对概率降低幅度
评测相关
2000+/天
评测框架现在每天自动跑的评测场景数,上线前约等于1条员工人工反馈
+8分
评测体系上线后智能体质量评分的提升值
6h→20min
一次完整回归测试所需时间,从人工到自动化的压缩幅度
35%
从Claude Sonnet 4.6迁移到Gemini 3.5 Flash后,在保持质量前提下的延迟降低幅度
体验相关
5倍
联合创始人Andy Fang所述,单句提示建好购物车比手动操作快约5倍
<2分钟
Andy Fang所述,完成一次购物车所需时间
打造一个好用的AI智能体已经很难,知道它是不是真的好用,更难。Raghav Saboo,DoorDash 推荐与搜索团队负责人
内容来源:DoorDash 工程博客三部曲《Building DoorDash Assistant》系列(2026年6月至7月发布)及 InfoQ 2026年7月13日的报道综述。文中转化率、客单量、评测规模等生产数据均为 DoorDash 官方自评的7天生产窗口结果,未经第三方审计。
来源
DoorDash Engineering BlogDoorDash Engineering Blog·查看主材料
↑ 正文结束
✓ 本篇全文免费开放

会员可复制、下载全文 Markdown,还能让你的 AI 订阅和提问。

阅读原文 ↗
📮 新解读第一时间进邮箱

读完觉得有用?留个邮箱,每篇新解读发布就送达,随时退订。