Vue3+LangGraph实战心理咨询AI,安全机制如何嵌入对话流程
一名开发者基于 Vue3、NestJS 与 LangGraph 1.x 构建心理咨询智能体,核心创新在于将危机筛查以确定性代码强制嵌入对话状态图,避免依赖大模型判断风险。项目实现 SSE 流式响应与双...
一名前端开发者近期公开其自研的心理咨询 AI 助手项目,技术栈为 Vue3 + NestJS + LangGraph 1.x + PostgreSQL,目标是构建一个具备安全兜底能力的对话智能体。该项目并非简单调用大模型 API,而是通过状态图显式定义对话流程,尤其将“危机安全筛查”作为不可绕过的强制节点,确保高危信号不被遗漏。
该系统前端采用 Vue3 + TypeScript + Vite,搭配 MateChat 与 DevUI 组件库实现会话 UI;后端使用 NestJS 模块化架构,智能体编排层基于 LangGraph.js 1.4 构建状态机,支持条件分支与检查点(checkpoint)机制;模型接入层兼容 ChatOpenAI 接口,可对接 OpenAI 或阿里云百炼等服务;数据层统一使用 PostgreSQL 存储业务消息与智能体运行时状态。
项目作者强调,心理咨询场景与普通聊天机器人存在本质差异:普通对话中回复质量不佳仅影响体验,而漏判一次自杀倾向可能造成严重后果。因此,从设计之初就确立一条原则——“安全不能全交给大模型,代码必须兜底”。这一理念直接导向了状态图驱动的架构选择。
传统 API 调用模式难以满足四类关键需求:一是对话状态管理(用户处于初始倾诉、情绪崩溃或稳定复盘阶段需差异化响应);二是流程分支控制(同一句“我好累”可能对应职场倦怠或抑郁前兆,需触发不同处理链路);三是长记忆维持(多轮中提及“三个月前失业”需被后续对话引用);四是安全闸门强制执行(风险等级判定必须由确定性逻辑完成,而非概率性模型输出)。
LangGraph 的状态图恰好提供了解决方案。开发者将整个咨询流程建模为有向图:入口节点接收用户输入 → 经过「情绪初筛」→ 进入「安全评估」子图(含关键词匹配、语义规则、阈值判断三重校验)→ 若未触发高危,则进入常规共情响应流;若命中任一高危指标(如“想死”“没希望”“吞药”等),立即中断当前对话流,跳转至紧急干预路径,推送本地化求助资源并记录事件。
该机制的关键在于“焊死”——即无论大模型如何生成回复,只要前置安全节点判定为高风险,后续流程将被强制拦截。例如,即使模型因训练偏差误判“我活够了”为调侃语气,代码层仍会依据预设规则触发危机响应。
在交互层面,系统采用 SSE(Server-Sent Events)实现流式输出,前端通过 ReadableStream 手动解析 token 分片,配合 McBubble 与 McMarkdownCard 组件实现增量渲染,保障长回复的流畅性。会话列表组件 SessionSidebar.vue 实时显示运行时状态与风险标记;CrisisBanner.vue 在检测到高风险时自动浮出,提供本地心理热线与危机干预指南。
值得注意的是,该项目在部署灵活性上做了特殊设计:支持“无 Key 无数据库”模式下完整运行。具体做法是将智能体检查点(checkpoint)与业务消息临时存于内存,配合前端本地存储缓存历史会话,适用于轻量级演示或隐私敏感场景。当然,生产环境仍推荐启用 PostgreSQL 持久化以保障数据一致性。
这一实践呼应了当前心理 AI 领域对“对话式模型边界”的反思。多项调研显示,尽管超六成青少年曾使用 AI 倾诉烦恼,且自助式系统能有效缓解抑郁与焦虑症状,但用户对其“情感信任”与“长期信任”始终有限。核心症结在于:对话模型依赖文本概率预测,无法理解语言背后的生命历程;它擅长安抚,却难以挑战;能提供共情,却难引发行为改变。
中国青少年研究中心 2025 年对 8563 名中小学生的调查显示,近半数孩子在心理困扰时优先选择 AI 而非真人咨询师,主因是“随时在线”与“永不评判”。但 Wiley 期刊一项针对中学师生的研究指出,受访者三大顾虑集中于:情感疏离、复杂情绪处理能力不足、缺乏非言语线索感知。
正因如此,行业正分化出两条技术路径:一条是以 Woebot、Wysa 为代表的对话式路线,聚焦降低倾诉门槛;另一条则是连信数字“洞见人和”人本世界模型所代表的评估式路线——通过多模态非接触感知(面部微表情、生理信号、行为规律)主动识别异常,而非等待用户开口。
前者解决“人愿意说时,给一个安全出口”;后者试图回答“人不愿说时,如何被发现”。两者并非互斥,而是在不同环节互补:评估模型可前置筛查高风险个体,再交由对话智能体进行干预承接。
回到 Vue3 + LangGraph 项目本身,其价值不在于模型能力有多强,而在于用工程化手段将临床安全规范落地为可执行代码。开发者踩过的 9 个坑中,多数涉及状态同步丢失、SSE 中断恢复、检查点版本冲突等问题——这些恰恰是智能体落地中最易被忽视的“非功能性需求”。
例如,在多轮对话中若用户中途刷新页面,系统需从最近检查点恢复上下文,而非从头开始;当 SSE 连接意外断开,重连后应续传未完成的 token 流;高风险事件触发后,即便用户关闭页面,后台仍需完成日志归档与告警上报。
这些细节决定了产品是“能跑”还是“可靠”。项目作者坦言,初期曾因忽略检查点序列号校验,导致两次会话状态错乱,险些将低风险用户误标为高危。
目前该方案已开源部分核心逻辑,重点展示如何用 LangGraph 定义带安全守卫的对话图谱。对于希望构建垂直领域智能体的团队而言,它提供了一种可复用的架构范式:将专业规则(如心理危机干预指南)转化为状态转移条件,而非寄望于模型“自己学会”。
随着《生成式人工智能服务管理暂行办法》对高风险应用提出更严要求,此类“规则+模型”混合架构或将成行业标配。尤其在医疗、教育、金融等强监管场景,确定性逻辑兜底不再是加分项,而是准入门槛。
