跳到主内容
快讯直播
AI智模界
AI 词典

MCP 的 Elicitation:工具执行中途可以回头向用户追问

一句话定义:Elicitation(向用户追问)是 MCP(Model Context Protocol,AI 词典:模型上下文协议">模型上下文协议)里的一种交互机制——服务器在执行工具的过程中,可以主动通过客户端向用户提问、补齐缺失的信息,拿到回答后继续执行,而不是直接报错收场。

它为什么存在

MCP 解决的是“AI 应用(客户端)如何连接外部能力(服务器)”的问题。常规流程是单向的:模型决定调用某个工具,客户端把参数发给服务器,服务器执行并返回结果。

麻烦在于,模型给的参数常常是猜的。让它订会议室,它不知道要哪一间;让它查订单,它不知道用哪个账号。过去的做法只有一条路——服务器报错“参数不全”,模型看到错误再猜一轮,用户在这场来回里完全缺席,最后只看到一句“执行失败,请提供更多信息”。

Elicitation 把这条单向路改成双向:服务器发现缺东西,就发一个追问请求,客户端用自己的界面(对话框、表单、确认弹窗)呈现给用户,用户填写或拒绝,答案回到服务器,工具接着往下跑。

打个比方

去政务大厅办事,材料少了一页。最差的体验是窗口把材料一推:“下次带齐再来。”好一点的体验是窗口人员抬头问一句:“身份证带了吗?给我看一下。”你递过去,事情接着办。

这里的分工很关键:问什么由窗口(服务器)决定,怎么问、要不要替你问由大厅(客户端)决定,答不答由你决定。三个角色各管一段,谁也不越界。

几个容易混的概念

机制方向人在不在环里干什么
Tool Call(工具调用)模型 → 服务器否交代任务、拿结果
Elicitation(向用户追问)服务器 → 用户 → 服务器是执行中途补信息、做确认
Sampling(采样)服务器 → 客户端的模型否借宿主的模型生成一段内容
报错返回服务器 → 模型否把问题抛回去让模型自己重试
传统配置页事先一次性填完是与本次调用无关的静态设置

最实质的区别在最后两行:报错返回是把球踢给模型,让它猜着重来;Elicitation 是把球递给真正知道答案的人。

两个值得注意的边界

一,用户可以不答。客户端有权不展示、用户有权拒绝或取消,服务器必须能处理“没问到答案”的情况,而不是卡在那里。所以它适合少量、扁平、简单的补充字段,不适合拿来做复杂表单。

二,它也是“危险操作确认”的天然位置。删数据、发邮件、扣款这类动作,与其在提示词里反复叮嘱模型“先问用户”,不如让服务器在协议层面直接发起一次追问。具体支持哪些字段和能力,以官方规范页面为准。

对两类人的意义

对开发者:少写一堆“参数不全请重试”的分支,把校验和追问变成一条正常路径,而不是异常路径。

对普通使用者:AI 助手不再动不动就“失败”,而是当场问你一句;真要动你的东西之前,它会先停下来。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。