一份材料跑三趟大厅,一位不让你跑第二趟的 AI 引导员:民顺如何用端到端具身交互智能治好_办事难_
文章目录
政务大厅上午十点,取号机前排着队。一位大爷攥着第三次打印的社保清单来到窗口——第一次缺居住证明,第二次证明开错了社区,这次窗口小姑娘看了三十秒:"您这个是老版本的表,得重新填。"大爷愣在窗口前,身后传来叹气声。他不是不配合,他是真的搞不清这十几张纸的规则。
民顺(Mínshùn)就是为这三趟而生的。她以政务引导员形象常驻在政务 App、大厅自助机和微信小程序里,你要办什么事,她先问清楚,然后把材料清单、表单版本、办理入口一次性给全——临出门还检查一遍"这四张都带了吗?我按顺序给你排好了"。她的目标只有一个:一次办结率。
端到端具身交互智能平台,让 AI 通过屏幕和机器人进入真实世界,成为能够感知、理解、表达并行动的智能体。本文以民顺为实战样本,拆解一个智慧政务应用如何基于这套平台,用一个 SDK 把感知、大脑、表达全链路打通,让 AI 引导员完成"事项澄清—材料预检—窗口接力"的完整办事闭环。
取号前:为什么政务服务特别适合端到端具身交互智能?
"最多跑一次"改革推了这么多年,窗口效率确实提上来了——但群众的痛点挪到了窗口之前:不知道带什么材料、表格填错版本、证明开错层级。改革减的是窗口里的十分钟,群众跑的是窗口外的三趟。
真实的好引导员不是这样。
大厅里最值钱的不是窗口,是那个主动迎上来的引导员:她看你攥着一沓纸,先问"办什么";三句话判断出你该走哪个窗口;扫一眼你的材料就发现"社保清单打的是老版本"。这种持续感知 → 持续理解 → 持续决策 → 持续表达与行动 → 持续反馈的循环,才是"引导"和"叫号机"的区别。
办事指南网页、电话热线、自助机,这三样本身都在发挥作用——指南覆盖了大多数标准情形,热线处理了大量咨询,自助机分流了简单业务。真正的坎在"连接":三样东西各自为战,中间没有一个人对"这位群众到底能不能一次办成"负责。指南写的是"标准情形",而大爷遇到的是"宅基地证明该去哪开"这种非标问题;热线要排队,队伍的另一头也不知道你缺哪张纸;自助机按键的选项是"事项名",而群众嘴里的需求是"我要办个那个……养老的证明"。拼接架构的客服机器人接不住追问和澄清的来回——你说到一半换个说法,它就答非所问,因为它那边"听"和"答"是两个独立流程。
这就是典型的"不是端到端"。
星云把多模态感知这一环,按大厅的真实声场重做了一遍:上午十点的大厅,叫号声、广播、排队交谈、脚步回声全叠在一起,大爷还习惯性凑得很近、嗓门很大。算法降噪、AEC 抗回声、本体声音抑制、VAD、远场语音这一整套,管的就是"在叫号声里听清那位大爷";Double Talk / Barge-in 智能打断管的是"民顺正在念清单,大爷突然想起来’哎对了还要带户口本不’——她立刻停下,先接这句"。方言是另一个硬骨头:粤语、川渝口音的"养老的证明"说得千差万别,ASR 层先过一遍,识别置信度低的自动放慢语速反问确认——持续感知,而不是一次输入,她要持续知道的是"这位群众此刻搞清了没有",不是"这句话转成文字了没有"。
政务服务的体验断层,不在窗口效率,在**"群众嘴里的需求"和"办事系统里的事项"之间那段翻译**。
材料预检:一个 SDK 撑起一座大厅
民顺基于端到端 SDK XingyunAvatarAgent 构建,核心业务代码不到 500 行。整个前端对接只需要三步:提供一个 DOM 容器、注册一组回调、调用 agent.ask() 发送消息。
import { XingyunAvatarAgent } from '@xingyun/avatar-agent'; const guide = new XingyunAvatarAgent({ container: document.getElementById('gov-root'), // App / 大屏双端 avatarId: 'minshun-gov', // 控制台配置:政务制服、清爽干练 persona: MINSHUN_PERSONA, voice: { rate: 0.92 }, }); // 需求澄清:办事群众说不清事项,就一层层问 guide.on('replyDone', () => { const gap = intent.missing(); // 事项识别还缺什么信息 if (gap) guide.ask(gap.question); // "是您自己领,还是帮家里人问的?" else guide.ask(buildChecklist(intent)); // 澄清完了才出清单 }); // 材料预检:拍照上传,缺件当场指出 guide.on('photo', (imgs) => { const report = verify(intent, imgs); // OCR + 版本校验 + 缺件比对 if (report.missing.length) { guide.ask(`还差${report.missing.length}样:${report.missing.join('、')}。` + `前三样大厅自助机就能打,我把机器位置发您了。`); } else { guide.ask(`齐了。取这个号:${ticket(intent)}。到号前把这张清单给窗口看,办事员核对快很多。`); } }); await guide.init(); guide.ask('您好,今天想办什么事?不用讲准确名称,大概说说就行。');
上面这段是"一切顺利"的主干。真上大厅,主干之外还有三条必须写死的兜底路径——它们决定了系统在异常时是"崩给群众看"还是"体面地退到人工"。
// ============ 兜底一:guide.init() 失败时的降级提示 ============
// 触发场景:大厅网络抖动、CDN 拉不到模型资源、自助机浏览器版本过旧导致 WebGL 初始化失败。
// 原则:初始化失败不等于服务失败——立刻退到"静态清单 + 人工指引",绝不让群众对着白屏。
try {
await guide.init();
guide.ask('您好,今天想办什么事?不用讲准确名称,大概说说就行。');
} catch (err) {
console.error('[minshun] init failed:', err);
// 降级:隐藏数字人容器,展示静态材料清单与人工热线
document.getElementById('gov-root').classList.add('is-fallback');
showStaticChecklist(intent); // 渲染纯 HTML 版清单,不依赖 SDK
showNotice('智能引导暂时不可用,请按下方清单准备材料,或拨打 6612345 转人工。');
reportMetric('init_failed', err.code); // 上报,便于运维定位是哪台终端、哪类错误
}
// ============ 兜底二:photo 回调中 OCR 置信度过低时的重拍引导 ============
// 触发场景:群众手抖拍糊、逆光、只拍到材料一角、或拍的是复印件导致字迹发灰。
// 原则:不猜、不硬判——置信度低于阈值就明确告诉群众"这张看不清",并给出可执行的重拍动作。
const OCR_CONFIDENCE_THRESHOLD = 0.75;
guide.on('photo', async (imgs) => {
const report = await verify(intent, imgs);
// 逐张检查识别置信度,挑出最差的那张作为重拍对象
const lowConf = report.pages
.map((p, i) => ({ index: i, conf: p.confidence }))
.filter((p) => p.conf < OCR_CONFIDENCE_THRESHOLD)
.sort((a, b) => a.conf - b.conf)[0];
if (lowConf) {
// 只让重拍一张,避免"全部重来"的挫败感
guide.ask(
`第 ${lowConf.index + 1} 张我没看清,可能是反光或者拍歪了。` +
`麻烦您把它平放在桌面上,正对着拍一张,四个角都露出来——我在这儿等您。`
);
highlightCameraGuide(lowConf.index); // 屏幕上高亮取景框与"四角对齐"提示
return; // 本轮不出结论,等下一张
}
// 置信度达标才进入缺件判断
if (report.missing.length) {
guide.ask(`还差${report.missing.length}样:${report.missing.join('、')}。` +
`前三样大厅自助机就能打,我把机器位置发您了。`);
} else {
guide.ask(`齐了。取这个号:${ticket(intent)}。到号前把这张清单给窗口看,办事员核对快很多。`);
}
});
// ============ 兜底三:agent.ask() 超时后转人工热线 ============
// 触发场景:后端大模型排队、知识库检索超时、或网络单向丢包导致请求悬空。
// 原则:给一个明确的等待上限,超时就主动交棒给人工,而不是让群众干等。
const ASK_TIMEOUT_MS = 8000;
async function askWithFallback(question) {
const timeout = new Promise((_, reject) =>
setTimeout(() => reject(new Error('ASK_TIMEOUT')), ASK_TIMEOUT_MS)
);
try {
// 与超时赛跑:谁先返回用谁
return await Promise.race([guide.ask(question), timeout]);
} catch (err) {
if (err.message === 'ASK_TIMEOUT') {
// 超时兜底:告知群众并给出人工通道,同时把当前会话上下文带过去
guide.ask('这边有点慢,我帮您转人工,您稍等一下。');
handoffToHuman({
hotline: '6612345',
context: intent.snapshot(), // 已澄清的事项、情形、缺件,人工坐席直接可见
reason: 'ask_timeout',
});
reportMetric('ask_timeout', { intent: intent.id });
} else {
// 其它异常:同样不硬扛,统一走人工
guide.ask('系统出了点小状况,我帮您转人工处理。');
handoffToHuman({ hotline: '6612345', context: intent.snapshot(), reason: err.message });
}
}
}
这三条兜底看着琐碎,但它们对应的是大厅里最真实的三种"不顺利":终端太旧、照片拍糊、后端排队。主干代码决定民顺好不好用,兜底代码决定她靠不靠得住——而政务场景里,后者往往才是群众敢不敢信她的分水岭。
政务 App 首屏:民顺形象 + "材料预检"入口 + 高频事项速达


"不用讲准确名称"这句开场白是产品哲学:群众不该被要求说出"灵活就业人员社会保险参保登记"这种十二个字的标准事项名——那是系统的事,不是群众的事。
窗口接力:清单的尽头是"按顺序排好"
民顺的知识层是一个事项图谱,每个事项挂四样东西:情形分支、材料清单、表单版本、兜底出口:
const MINSHUN_PERSONA = `你是政务引导员民顺。规则: 1. 群众说不清需求时,用是非题澄清,一次只问一个,最多问三轮 2. 材料清单必须按"办理顺序"排:先证明类、再表格类、最后复印件 3. 表单必须校验版本号,老版本当场指出并给新版二维码 4. 拿不准的情形(继承、涉外等)直接转人工热线,不硬答 5. 结束前主动说"如果窗口说还缺什么,拍下来发我,我帮您看是谁的责任" 6. 永不说"这不是我们窗口的事",只说"这事归XX,我教您怎么走"`; // 事项图谱(养老金资格认证场景节选) const item = { branches: [ { if: '本人办理', need: ['身份证原件', '社保卡'] }, { if: '代办', need: ['双方身份证', '授权委托书(新版2026.3)', '关系证明'] }, { if: '行动不便', route: '上门认证预约', need: ['身份证照片', '住址说明'] }, ], forms: { version: '2026.3', reject: ['2024.x 旧版'] }, fallback: '6612345 转人工(工作日 9:00-17:00)', }; // 情形澄清:是非题,不问开放题 const clarify = [ '是您自己办,还是帮家里人办?', '本人方便到现场吗?', '之前办过一次没有?', ];
材料预检实测:上传三张材料照片 → 民顺标出缺件 + 老版本表单提醒

人设第 5 条"我帮您看是谁的责任"是和窗口办事员共创时定的——它给了群众一个兜底:跑了空趟不怕,拍照回来,AI 判断是材料问题还是流程问题,把"来回跑"变成"问一次"。这句承诺让民顺的好评里出现最多的词是"心里有底"。
这里多说一句"念清单"这件事本身。同一份四行清单,用机器音匀速播完,大爷的体感是"又一个自动电话";民顺念的时候,语速比日常对话慢一档、每念完一样停半拍、说到"前三样自助机就能打"的时候手会往大厅自助机的方向指一下,眼神从屏幕转到大爷脸上确认他跟上了。多模态表达不是语音配口型:语音、口型、表情、眼神、头部动作、手势是同一次实时生成的,跟着上下文算——给年轻人办业务她语速正常、干脆利落,给大爷她自动放慢、表情更缓,这不是两套预制视频切换,是同一个表达系统对"对面是谁"的实时响应。而且她说话的时候感知没停:大爷听到一半打断"闺女你说慢点",她立刻降速重来,不会把清单念完再问"您听清了吗"。统一、连续、同步,在大厅里就是"她在给我讲"和"机器在放录音"的区别。
一段方言咨询的四道翻译工序:专属智脑在大厅里干什么
说到这,得把最重要的一层摊开:专属智脑。很多人以为政务 AI 就是"把办事指南喂给大模型"。真做完才知道,"大爷那句’我要办个那个……养老的证明’“到"取号机吐出一张 B023 号票”,中间隔着四道翻译工序,每道工序背后都是智脑的一层能力。
还是从那位大爷说起——粤语口音,第三次来大厅。我们把他这次咨询的完整翻译链路摊开:
第一道工序|把"大概说说"翻译成"办什么" 大爷说:“我想问问……养老金那个认证,今年还要不要弄哦?” 这句话里没有事项名、没有情形、连"认证"还是"参保"都不确定。民顺没有丢出一个八选项菜单,而是按人设层定死的规则走是非题:“是您自己的养老金吗?”(是)“您人在本地,方便到现场吗?”(腿脚不太方便)——最多三轮,她判进"行动不便 → 上门认证预约"分支。 这一道靠的是智脑第二层:她是谁。 身份是"引导员"而不是"问答机",任务是"让群众一次办成",规则写死了"是非题澄清、一次只问一个、最多三轮、拿不准就转人工"。可配置的不止人设——身份、角色、任务、规则、音频、Agent、Workflow、对话流程、工具调用全在这层。所以同一个底座,配成民顺是政务引导员,配成社区网格员助手就是另一套话术和边界,各守各的规矩。群众说不清不是群众的错,是翻译的第一道工序该干的事。
第二道工序|把"办什么"翻译成"情形分支" “行动不便"这个分支不是猜的。事项图谱里,“养老金资格认证"挂着三种情形(本人办理 / 代办 / 行动不便),每种情形挂各自的材料清单和表单版本。而这张图谱的底料,来自一整批真实文件:人社局的红头文件 PDF、办事指南的 Word 版、窗口办事员的培训录音、填表示范的图片、还有一张全事项的 Excel 底表——星云的全模态数据解析把这些都吃进去,PDF、Word、PPT、图片、音频、表格都支持,解析时保留层级关系、图文关系、表格关系和上下文,不是简单"转成文字”。所以"上门认证"这条分支是带着依据链的:哪个文号、哪一年发的、适不适用本市。 往上一层,知识图谱和 RAG 深度融合:把"养老金—资格认证—上门服务—居住证明—社区层级"这些实体和关系组织成网,检索时向量语义、关键词、图谱三条路一起召回。大爷追问"那我那个居住证明是不是回老家开?”——她能顺着关系网答"不用,住哪个社区就在哪个社区开,我教您怎么走",而不是只命中一句相似的话。
第三道工序|把"政策更新"翻译成"清单版本" 大爷上一趟跑空,就栽在"2024 版授权委托书"上——新政 2026 年 3 月起用新版。知识治理管的就是这个:政策文件会更新,旧版本要废止,改完之后挂在同一事项上的所有清单、所有问答、所有预检规则同时一致才叫治理。2026.3 新版生效那天,"授权委托书"这个知识块全库替换,来源标注文号和生效日期,2,186 次老版本表单就是这么拦下来的。资料持续新增、修改、废止,靠的是围绕知识块、标签、实体、关系、向量索引和来源信息的持续治理——政务知识一年一动,这套机制是"越用越准"的底账。
第四道工序|把"清单齐了"翻译成"系统动作" 澄清完、预检完,民顺做的事不是发一份 PDF:她调取号接口给你排号(B023,前面 4 人)、把自助机位置推到你手机上(三号机,进门左手)、把"到号前把清单给窗口看"写进提示、把拿不准的继承类情形直接转 6612345 人工热线。星云的智能体可以连接 CRM、ERP、OA、HIS、BI、商品系统、订单系统、客户系统、门店系统、IoT 以及第三方 Agent——在政务这个盘子里,就是一网通办平台、取叫号系统、审批流转 OA、大厅 IoT(叫号屏、自助机、引导屏)。这也是"智慧政务"的分水岭:一个只会答问题的 AI 是查询台,一个能取号、能预约、能转人工的智能体才是引导员。
贯穿四道工序的两条线。 一条是 Real-time Interaction Runtime:从第一句方言到吐出号票,她"记得"的东西全程一致——大爷第三句说过的"腿脚不方便",到第四道工序时还在生效(推的是上门认证,不是现场排号)。事件流转、会话状态、时间同步都在这层统一管。另一条是可插拔:大厅项目把 ASR 换过一次(本地化方言需求),TTS 换过一次音色(老年友好语速版),但要强调"可插拔"不等于"把 API 拼起来"——感知、认知、表达、执行之间有紧密的时序依赖与状态关联,星云靠标准化的接口契约和统一的状态管理,保证模块替换后事件流转、会话状态、时间同步、异常处理仍然一致。落到民顺就是:耳朵换成火山引擎或腾讯云的 ASR、声音换成微软 Azure / 字节豆包 / MiniMax 的音色、大脑接到 Dify、Coze 上重新编排,那六条底线——是非题澄清、清单按顺序、版本必校验、拿不准转人工、“我帮您看是谁的责任”、永不说"不归我管"——一条不变。魔珐自研的 Xmov 大/小模型 ASR、自研大脑(RAG + FAQ + 自研大模型 + 可视化编排)、自研 TTS 是默认开箱那套;民顺要是上了大厅迎宾机器人,机器人运控也能在魔珐自研运控和本体厂商运控之间选。
一句话收束:大模型解决"能不能听懂这句话",专属智脑解决"我是谁、我代表谁、掌握哪些知识、当前任务是什么,以及下一步该调用哪个系统"。
办结单:五个月的实测
某区政务服务中心,App + 大厅自助机双端,152 天:
还有一项基础设施账,直接决定这事能不能铺到更多大厅:AI 端渲。政务终端的现实是"配额制采购"——大厅里的自助机和引导屏一用就是五年,配置不高、系统不新,不可能为了一套 AI 引导员批量换硬件;大厅的人流还高度集中(周一上午和月底两天占全周三成流量),如果实时表达靠云端 GPU 渲染再推视频流,高峰期就是集体卡顿,而群众排队最烦躁的时刻恰恰是系统最忙的时刻。星云的端侧渲染把渲染下沉到终端:不依赖视频流长距离传输,延迟更短,五年前的自助机也能带得动,云 GPU 成本不随人流量涨。对政务信息化来说,"不换一台硬件就能上"往往是一个项目能不能立项的先决条件。
不回避的问题:跨部门数据还没全通,"证明 A 需要先开证明 B"这类循环依赖只能靠清单顺序硬排,个别复杂情形仍要两趟;41% 的老年用户说明适老化做对了,但也暴露方言识别的短板——粤语片区预检对话的澄清轮次明显偏多,方言模型在加急训练。

想亲眼看看?六个最适合现场演示的片段
要在评审会、汇报演示或者兄弟单位参观时展示民顺,讲参数不如演片段。这六个是我们验收演示反复用的:
两个小提醒:一是别配音、别加速,让真实的澄清轮次和停顿留在画面里,快剪反而像假的;二是第 ② 条一定要给手机屏一个特写——"老版本表单"四个字是全片最有共鸣的一帧,每个跑过空趟的人看到都会点头。还有一句给拍摄的私房话:第 ④ 条的叫号声直接用大厅实录背景音就行,不用专门雇人演嘈杂。
下班前:政务智能体该长的样子
做完民顺,我对"智慧政务"四个字的理解被刷新了一次:它的核心不是把窗口搬上网——网办率已经很高了——而是把"办事常识"从窗口办事员的脑子里,搬进群众出发前的手机里。清单谁都会列,难的是"按顺序排好、版本号校验、缺件兜底"这三件小事,它们才是跑三趟和跑一趟之间的全部差距。
端到端具身交互智能在这个场景的价值,是把"说不清的需求、拿不准的材料、跑了空趟的委屈"这些办事过程中的真实摩擦,全部变成可对话、可预检、可兜底的信号。她不替代窗口——她管的是你出门之前的那半个小时。
最后说"一个智能体,可以进入不同的身体"。现在民顺常驻在三处:政务 App、大厅自助机、微信小程序——这已经是三个身体共用一个智能体了。她的身份、知识、记忆、任务都在智脑里,不在某块屏上:明天下沉到社区服务站的 AI 大屏,她还是那个知道大爷腿脚不方便的民顺;再往后,大厅里的迎宾机器人装上这个智能体,她的行动就从数字与物理行动里的数字行动那一层,延伸到物理世界——转向你、走近你、在前头导航带路把你引到三号窗口、跟着你走、抬手指方向,甚至用上肢动作把叫号单递到你手里。智能体持续存在,身体不断升级——对政务信息化来说,这意味着一次投入的事项图谱和知识治理,可以用在 App、自助机、大屏、机器人和以后每一种终端上,不用每换一个终端重做一遍。
端到端具身交互智能平台的价值,在于让 AI 通过屏幕和机器人进入真实世界,成为能够感知、理解、表达并行动的智能体。民顺做的事说起来很小:她只是把"这四张都带了吗"这句窗口小姑娘的口头禅,提前到了你出门之前。但对那位跑了三趟的大爷来说,第四次出发前的那五分钟,就是全部。
你最近一次去政务大厅办事跑了几趟?卡在哪张材料上了?评论区讲讲——你跑过的空趟,就是民顺下一版的事项图谱。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)