一场官司三万条法条,一位不说"详见法条"的 AI 法律顾问:法晓如何用端到端具身交互智能把法律服务搬进社区

社区调解室的周五下午,张阿姨攥着一叠单据坐下来:装修公司收了他两万定金,工期拖了三个月,现在人也联系不上了。他想问"这钱还能要回来吗",值班律师刚开开口"根据民法典第五百八十七条……",阿姨的手就缩了回去——他听不懂,也不好意思再问了。

开庭前:为什么社区法律咨询特别适合端到端具身交互智能?

公共法律服务站建了很多,但"咨询率"始终上不去。拆开看原因很直白:老百姓觉得那是"给懂法的人用的地方"——律师说话带法条编号,问完更糊涂;而线上法律机器人更糟,你问"装修定金能退吗",它回你三百字法条原文加一句"具体情况请咨询专业律师"。
好的社区律师在倾听的全程,一直在做翻译:听你讲装修纠纷,脑子里已经在拆解——合同签没签、定金还是订金、有没有书面催告;你每补充一个细节,他嘴上说的是家常话,脑子里的案情结构就重排一次。

这套 持续感知 → 持续理解 → 持续决策 → 持续表达与行动 → 持续反馈 的循环,就是星云里的 Continuous Interaction Loop(持续交互循环)。说人话就是:不是"你问一句,它答一句",而是他一边听你絮叨,一边继续判断你还缺哪块拼图、下一句该问什么。这才是"咨询"和"普法"的区别。
ASR → LLM → TTS → 屏幕 / 机器人

单拎出来每个模块都能跑,但它们各管各的状态。放到法律咨询里短板立刻被放大:老人絮絮叨叨讲五分钟,直线架构抓不住散落的关键要素;咨询到一半补充"对了,我有转账记录",上下文早乱了;更要命的是,法律回答要求"边说边校验",可直线架构里模型一句话说满,你根本拦不住它把"定金"和"订金"混着说。
这就是典型的"不是端到端"。

端到端具身交互智能要解决的不是"给 AI 接一个身体",而是让 AI 能持续地:多模态感知 + 专属智脑 + 多模态表达 + AI 端渲 + 数字与物理行动。
这几件事落到一间社区调解室里,各自对应的是很具体的问题:

魔珐星云是一套端到端具身交互智能平台,让 AI 通过屏幕和机器人进入真实世界,成为能够感知、理解、表达并行动的智能体。

法律咨询的门槛,从来不在法条有多难,在**"听懂你的话"和"把话说成你的话"这两头**。

咨询室:一个 SDK 撑起一间调解室

法晓基于魔珐星云端到端 SDK XingyunAvatarAgent 构建,核心业务代码不到 500 行。整个前端对接只需要三步:提供一个 DOM 容器、注册一组回调、调用 agent.ask() 发送消息。

import { XingyunAvatarAgent } from '@xingyun/avatar-agent';

const counsel = new XingyunAvatarAgent({
  container: document.getElementById('law-root'),
  avatarId: 'faxiao-law',             // 控制台配置:律师形象、亲和不失稳重
  persona: FAXIAO_PERSONA,
  voice: { rate: 0.94 },              // 慢一点,给老人留出"哦——"的时间
});

// 用户中途补充关键细节:案情结构当场重排,不打断倾诉
counsel.on('interrupt', (partial) => {
  const patch = extractFacts(partial);       // "我有转账记录" -> 证据节点+1
  if (patch) caseGraph.merge(patch);
  counsel.ask(`这条很重要,我记下来了。${patch.followUp}`);  // 顺势追问下一要素
});

// 一轮陈述结束:缺口驱动追问,而不是等用户"说完了"
counsel.on('replyDone', () => {
  const gap = caseGraph.missing();           // 合同/付款/催告/对方主体...
  if (gap) counsel.ask(gap.question);        // "这两万是转账还是现金给的?"
  else counsel.ask(buildAdvice(caseGraph));  // 要素齐了才给路径
});

await counsel.init();
counsel.ask('您慢慢说,事情的经过从头讲一遍就行,我边听边帮您理。');

社区司法所智慧屏首屏:法晓顾问形象 + "免费咨询"大字引导

先选择顾问形象:
在这里插入图片描述

要素缺口驱动追问(gap-driven)是法律咨询和闲聊机器人的分水岭:法晓永远知道案情还缺哪块拼图,追问一句补一块——这恰恰是真人律师最贵的技能,现在变成了一张案情图谱的遍历
在这里插入图片描述
在说"他答得怎么样"之前,得先说他为什么跑得动。 法晓要同时出现在三个地方:司法所大厅的竖屏智慧屏、社区小程序、还有老人自己那台用了五六年、内存常年告急的手机。如果走传统的云端渲染 + 视频流方案,每台终端都在持续吃云 GPU 和公网带宽——四个街道并发一上来,成本不是线性的,是指数往上翻的;而且社区服务站的 WiFi 本来就不稳,视频流一卡就是黑屏。

星云的做法是端侧实时渲染:云端只下发参数流,画面在终端上就近渲染。带来的实际差别是——云 GPU 成本可控、不用扛高清视频流带宽、延迟更短,而且弱网可用。我第一次在司法所那台老智慧屏上看到法晓完整开口说话,是有点意外的:那块屏的配置,按视频流方案根本推不动。

AI 端渲和 Real-time Interaction Runtime 在星云体系里不是孤立能力,而是关键技术和工程基础设施:前者解决"画面在哪渲染",后者解决"这一整套交互的时间轴怎么对齐"——法晓说完一句要停多久才轮到你、你插话时他停在哪个字上,这些都不只是表达层的事。

阅卷:法晓的"智脑",就是一本随时在写的案卷

上面讲了怎么把他接进来,但接进来只是让他能开口。真正决定他像不像一个"敢把话说成人话"的社区法律顾问的,是他背后那层东西——专属智脑。

这东西不太好用架构图讲清楚。不过律师对这行有个现成的理解方式:一本合格的案卷,是有固定编目的。从封面到封底,每一页回答的都是不同的问题——封面写"我是谁、我代理谁、受什么约束",目录写"我手里有哪些材料",正文写"事实和法律怎么对应",最后那页移送单写"这事儿该送到哪儿去"。

法晓的智脑,本质上就是这么一本一边咨询、一边在建的案卷。我按案卷的顺序,一页一页翻开说。

封面页:他是谁、代表谁、受什么约束

案卷封面最上面那行不是案由,是代理关系。这一页决定了律师说话的姿态——是站在原告这边,还是中立调解,还是只做见证。

法晓的封面长这样:

// 专属智脑的角色配置(节选,实际在控制台可视化配置)
{
  身份: '社区法律顾问',
  人设: '在司法所坐了十年的老顾问,只讲人话,不吓唬人',
  角色: '中立顾问,不做任何一方的代理人',
  规则: [
    '引用法条必须当场翻译成"这对您意味着什么"',
    '禁止连续引用两条以上法条',
    '定金/订金、抵押/质押等易混词,每次出现都要确认',
    '只给下一步路径,不给结论',
    '每轮结尾必须带免责声明'
  ],
  任务: '让来咨询的人走出门时,知道自己下一步该干什么',
  对话流程: '倾听 → 抽取要素 → 缺口追问 → 翻译法条 → 给路径',
  Workflow: '涉继承、股权等多主体纠纷,直接转人工,不硬答',
  音频: '语速 0.94、音色温和、不用播音腔',
  工具调用: ['案情图谱', '法条检索', '生成咨询回执', '转值班律师']
}

这一页最要紧的其实是角色那行:中立顾问,不做任何一方的代理人。你注意看法晓的用词——“您有权解除合同”“建议先去市场监管部门投诉”,他从不说"你应该告他"“我帮你打这个官司”。这不是话术上的客气,是角色定位在约束他的表达方式。

换一个封面,同一个模型就变成另一种人:如果角色写成"诉讼代理律师",任务写成"促成委托",他照样很能说,但会开始倾向于给你下结论、放大对方的责任、暗示"这个案子能赢"——对社区法律咨询来说,这是有害的。

这就是需求文档里说的岗位化、场景化、流程化:不是让模型更聪明,而是让它清楚"我是谁、代表谁、服务谁、守什么规矩、这一步该做什么、下一步该调哪个能力"。而且用户用哪个大模型是可以自己配的——有惯用的就接惯用的,没有的话就用星云自研智脑,它在这类"身份和规则"的事情上做得比较扎实。

材料目录:他读过的东西,比"一堆法条"复杂得多

案卷的第二部分是材料目录,一份份编号列下去:合同、转账凭证、聊天记录、送达回证、判例。

很多人以为法律 AI 的难度在于"法条多",其实难在材料之间的关系。这就落到全模态数据解析这一层——不是把文件转成文字,而是转的过程中尽量保住原始结构:

  • 层级关系:法条是"编—章—节—条—款—项"六级嵌套的。层级丢了会发生什么?民法典里大量"但书"(“……但是,……”)是跟在款后面的例外情形,层级一丢,但书可能被当成正文念出来——法晓就会把"一般可以要求返还"讲成"一律可以要求返还"。

  • 表格关系:类案检索表里的"案由 / 标的额 / 裁判结果 / 裁判日期"是一组绑定的数据,拍平之后会串行——2021 年的判决可能配上了 2019 年的案由。

  • 说话人信息:这个我印象最深。社区调解记录进了知识库之后,法晓一度开始引用"对方当事人陈述"——调解记录里对面那位装修老板说"我们只是延期,没说不干",法晓在给张阿姨的建议里把这句话当成了客观事实讲出去。少了说话人归属,一方的辩解会被读成双方认定的事实。

  • 图文关系:合同照片里的手写补充条款、聊天记录截图里的转账凭证和金额,都要跟着图一起被理解,否则他只会看到截图里的文字,读不出"这是转账 5000 元"。

光解析还不够,法律咨询真正需要的是关系,不是"最像的那一段"。

举个法晓最常见的错法:张阿姨问"这两万定金能退吗"。如果只做向量检索,最像"定金"的一段话大概率同时包含"定金"和"订金"——两个词在法律上是完全不同的东西:定金适用罚则(付方违约不退、收方违约双倍返还),订金只是预付款,原则上可退。普通 RAG 不做区分地引用,就会把这两个词混着说——在法律场景里,这不是措辞问题,是钱的问题。

知识图谱 + RAG 深度融合解决的正是这个。让"定金"和"订金"成为两个独立实体,各自挂着自己的关系:

  • 定金 → 担保方式 → 罚则 → 双倍返还 → 数额上限(合同标的额 20%)

  • 订金 → 预付款 → 无罚则 → 原则上可退

而张阿姨手里只有"两万 / 装修 / 拖了三个月"三个碎片的时候,法晓能给出一条完整的链:

装修合同 → 承揽合同性质 → 逾期履行 → 民法典 563 条法定解除 → 对方失联构成根本违约 → 若约定的是"定金"则适用双倍返还 → 四万 → 小额诉讼程序受理费可免

这条链的每一跳分散在合同性质认定、法条、司法解释、诉讼程序规定里,它不在任何一份文档中。底层是把向量语义、关键词和知识图谱三种召回混着用,面对跨资料、跨知识点的问题时才不是命中一个片段就交差——这也是"找到一段话"和"基于关系组织答案"的差距。在法律场景,这两者的差距就是"念法条"和"给方案"。

最后是知识治理这一层,法律场景里它比别处更要命:法条是会变的。

  • 民法典 2021 年施行后,合同法、物权法同时废止。旧条文没清掉的话,法晓会拿一条已经失效的法律给建议——用户拿着这个去开庭,后果不是"体验差"三个字能概括的。

  • 地方性规定、司法所内部的调解指引,更有适用时间和适用范围的问题。一份 2023 年的地方指引放到 2025 年,可能已经不适用了。

  • 还有一条:来源必须可追溯。法律回答要能说清"依据是《民法典》第 X 条第 X 款,2021 年 1 月 1 日施行",而不是"根据相关法律规定"。

所以知识治理要持续跑着:知识块、标签、实体、关系、向量索引、来源信息,在资料新增、修改和废止之后同步更新,让检索结果和问答结果保持一致。法晓能说"这条是现行有效的",靠的就是这个。

移送单:他答完之后,这事儿要去哪儿

案卷最后一页通常是移送单或者联系函——案子在自己这儿办完了,接下来要交给谁。

法晓也有这一页。原文里那段"三件事"建议,看起来是一段话,但在系统里它是三次流程推进:

  • “先去市场监管部门投诉备案” → 对接投诉入口,生成一份可打印的诉求材料

  • “同时准备材料申请人民调解” → 生成材料清单,推给社区调解平台

  • “调解不成再起诉,小额诉讼两千以内标的免费” → 转值班律师窗口,附上已梳理好的案情摘要

一个只会答题的助手,说到这里就结束了。法晓说完这三句,系统里会留下三样东西:一份给用户的咨询回执、一份给调解员的案情摘要、一条待办的转介记录。

这要求智脑能真正接进业务系统:

  • 咨询人档案、历史咨询记录 → CRM 客户系统

  • 案情摘要、材料清单、工单流转、内部审批 → OA / ERP

  • 转值班律师的排队与排班 → 司法所内部系统

  • 人民调解申请与进度 → 人民调解平台

  • 投诉备案入口 → 市场监管服务接口

  • 法条检索 → 国家法律法规数据库

  • 大厅智慧屏、取号机、未来的导览设备 → IoT 与终端设备

差别就在这儿:普通法律机器人给你一段话,法晓留下一件事在系统里。这才叫进入业务。

活页环:他的零件是可以换的

案卷夹是活页的,内页可以换。这套系统在设计上也是——因为真正落地时,客户的模型栈、语音供应商、硬件往往早就定了。

但可插拔不等于把 API 拼起来。感知、认知、表达、执行之间有时序依赖和状态关联——谁先谁后、事件怎么流转、会话状态怎么保持、时间戳怎么对齐、异常怎么兜底。星云是靠标准化的接口契约和统一的状态管理保证的:换掉一个模块之后,事件流转、会话状态、时间同步、异常处理仍然一致,端到端的交互体验不会因为换了零件就崩。

对司法所这种预算有限、技术人手也有限的单位,这一条最实际的意义是:不用为了用上一个能力,把已有的系统全部推倒。

卷末批注:把规矩写在便签上,它迟早会掉

第一版我是把"必须翻译"“禁止连续引两条”"必须带免责"全写在系统提示词里的。头两周效果很好,我一度觉得这事儿成了。到第三周,问题一个接一个:

  • 法条开始连着引。提示词里明明白白写着"禁止连续引用两条以上",但咨询一超过七八轮,他就开始"根据民法典第五百六十三条、第五百七十七条以及相关司法解释……",一口气三条。老人听不懂,也不好意思打断。

  • 免责声明会被吞掉。这条规则在每一轮结尾都要出现,可对话一长,它就成了最先被省略的东西——偏偏这条最不能省。

  • 遇到没见过的案由,他会开始编。 有个用户问的是宅基地上房屋的继承份额,我们的知识库里没有足够材料。他没有说"我不确定",而是给了一个听起来非常合理的答案。一个只会"要回答"的模型,不知道"不知道的时候该说什么"。

把这三条从提示词搬到配置层(规则、任务、Workflow、工具调用)之后才稳定下来。那次之后我确认了一件事:专属智脑不是一段更长的提示词,而是另一样东西——它是身份、知识、规则、记忆、任务和业务能力集中存放的那一层。大模型解决的是"我能不能回答这个问题",专属智脑还要解决"我是谁、我代表谁、我掌握哪些知识、当前任务是什么,以及下一步该调用哪个系统"。

一张时间线:先理事实,再谈法律

法晓的人设核心是"翻译官",而领域代码的核心是"案情结构化":

const FAXIAO_PERSONA = `你是社区法律顾问法晓。规则:
1. 引用法条时必须当场翻译:"民法典587条,意思是——定金付了您反悔,钱要不回来;但对方违约,可以要双倍"
2. 禁止连续引用两条以上法条;用户露出困惑,立即改用大白话重讲
3. 定金/订金、抵押/质押这类易混词,每次出现都要确认用户说的是哪个
4. 只给"下一步路径",不下结论:"您这个情况,建议先做三件事……"
5. 每次咨询结束前提醒:我的分析仅供参考,正式意见请到值班律师窗口`;

// 案情图谱:要素抽取 + 缺口追问(装修纠纷模板节选)
const caseGraph = {
  nodes: {
    contract: { q: '签书面合同了吗?', weight: 3 },
    payment:  { q: '这两万是"定金"还是"订金"?合同上写的是哪个词?', weight: 3 },
    deadline: { q: '合同里写工期了吗?写的是多少天?', weight: 2 },
    urge:     { q: '逾期之后,您有没有发消息催过他?', weight: 2 },
    evidence: { q: '转账记录、聊天记录还在吗?', weight: 3 },
    subject:  { q: '收钱的是公司还是个人?有合同章吗?', weight: 2 },
  },
};

// 输出路径:永远是"三件事"结构,不写论文
function buildAdvice(g) {
  return `情况我理清了,给您捋成三件事:
  第一,对方收钱不开工还失联,已经涉嫌违约,您有权解除合同;
  第二,如果合同写的是"定金",您可主张双倍返还,就是四万——
  所以关键是找到那份合同,或者聊天记录里他承认收钱的截图;
  第三,建议先去市场监管部门投诉备案,同时准备材料申请人民调解,
  调解不成再起诉,小额诉讼程序两千块以内标的免费。`;
}

案情时间线可视化:用户陈述,法律顾问分析解答
在这里插入图片描述

"双倍返还就是四万"这种换算,是内测里满意度最高的一类回复——法条本身没变,变的只是说法。而"三件事"输出结构是和司法所值班律师一起定的:社区群众离开咨询室后能记住的行动上限,就是三条。

这里还有一件容易被当成"UI 细节"、其实很要紧的事:他说话的样子。

法晓讲"定金"两个字的时候会咬得重一点、语速再放慢,讲到"双倍返还就是四万"会把手摊开、身体往前倾一下;用户露出"没听懂"的神情,他会停下来,换一种说法,眼神也重新对上用户。这些不是预制动画在轮播,也不是把话说完之后再想该配什么表情。

真实的交流里,语言、语气、停顿、表情、手势本来就是同一次表达。星云的表达层做的就是这个统一:根据当前的语言内容、用户状态、智能体角色、情绪和场景,实时驱动语音、口型、情绪表情、眼神、头部动作、手势和身体动作——这正是它和"TTS 念完再贴个口型"最本质的区别,后者是两件事先后发生,前者是一件事。

还有个细节能说明表达和感知不是前后两个阶段:法晓讲法条的时候,耳朵一直开着。阿姨一句"等等,你刚说那个什么金",他能立刻停下来重讲,而不用等整段播完再重启对话。对老人来说,这个"随时能打断"比语速调慢重要得多。

卷宗归档实测

某区 4 个街道司法所 + 社区小程序,91 天:

不回避的问题:涉继承、股权这类多主体纠纷,案情图谱复杂度陡增,目前只能引导人工;用户反馈"语速太慢、想直接看文字版"——适老和适轻的语速分歧,靠的是双端配置分开调。97% 的翻译准确率离敢说"可靠"还有距离,所以免责提醒永远挂在每轮咨询的结尾。

说到语速和"接得住",得单独讲讲听觉这一环——司法所大概是所有场景里最难听清的地方之一。

大厅里同时有取号广播、其他等候群众聊天、空调风声,老人的声音又轻、语速慢,好几位还带方言。要让法晓在这种环境里听明白,语音侧得连着做完一串事:

先把真实的人声从环境里分出来(算法降噪、远场语音);再处理他自己的声音——他讲着话,智慧屏喇叭的输出会从麦克风绕回来,AEC 抗回声和本体声音抑制就是防止他把"自己的声音"当成用户在说话,这个在空旷的大厅里尤其容易出问题;然后靠 VAD 判断哪一段是有效人声。

最关键的是打断。老人一大特点是不敢打断,但真打断了就得立刻接住:阿姨一句"等等,你说啥"冒出来的时候,法晓得马上停下来听——这就是 Double Talk / Barge-in 智能打断。但打断不能太敏感:老人习惯性地应"嗯"“对”“你说”,这些是 Backchannel,意思是"我在听",不是要插话。分不清这两者,他就会变成那种老人一吭声就闭嘴、老人以为他没听见的糟糕助手。

视觉侧在司法所还有个特别实用的地方:老人不太会用屏幕,不会主动点"开始咨询"。所以大厅那台智慧屏用的是摄像头感知有人进入交互范围后主动开口——阿姨在屏前站定、看了两秒,法晓那边就先出声了:"您好,有什么想问的,我在这儿帮您理一理。"这一句话把咨询率拉起来的作用,比我们后来做的任何 UI 优化都大。

这些合起来才是多模态感知:系统要知道的不是"这句话说了什么",而是现场此刻正在发生什么。

散庭后:法律普惠的最后一公里卡在哪

做完法晓我才看明白:公共法律服务缺的从来不是律师,是**“听得懂的语言"和"不害怕的门”**。同一部民法典,编号是给专业人士的,翻译才是给张阿姨的。法晓做的事情没有任何一条超出"翻译 + 梳理",但把咨询量拉高了七倍——需求的闸门,一直都在。

端到端具身交互智能在这个场景的价值,是让"絮叨、补充、听不懂再问"这些社区咨询的真实状态,全部成为系统能接住的信号,而不是噪音。

而且他的身体可以换。现在他在司法所的智慧屏和社区小程序里;再往前走一步,如果把他放进一台服务机器人——身份、法条知识、案情规则、咨询记录全部复用,只是多了一副能动的身体:在司法所门口接待,听完情况带着人往调解室走,到了窗口前停下来指一下"就在这儿取号"。这些属于数字与物理行动里的"物理行动"——转向、靠近、移动、导航带路、跟随、上肢动作,以及更复杂的 Robot Skill。

这也是星云这套体系里我很喜欢的一个说法:同一个智能体,可以拥有不同的身体。身体可以换,但他的身份、知识、记忆、任务和业务能力持续存在——智能体持续存在,身体不断升级。

回到法律咨询本身:他不替律师出庭,也不替代值班律师做判断。他守在律师前面那道门——先把人留住,把话翻译成人话,把该准备的材料理清楚,然后把人送到真正需要人的地方去。

魔珐星云是一套端到端具身交互智能平台,让 AI 通过屏幕和机器人进入真实世界,成为能够感知、理解、表达并行动的智能体。这大概就是法晓能一边听张阿姨絮叨、一边把"该做三件事"讲清楚的原因。

你遇到过想咨询法律问题却没去问的时刻吗?是怕贵、怕听不懂,还是怕麻烦?评论区聊聊,这三个答案决定法律普惠该先修哪条路。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐