心理咨询智能体demo

我设计的不是一个自由生成回复的聊天机器人,而是一个由产品规则、会话状态与 Risk First 优先级共同控制的心理健康支持智能体。

面向 18 岁以上普通用户,提供日常情绪支持、心理知识、辅助测评、简单结构化练习与安全支持;不提供正式诊断、完整治疗或紧急救援,也不承诺自动报警或自动联系他人。

01 / 问题

心理支持不是一次“输入—生成”的文本任务

一句生活化表达里,可能同时混合事件、情绪、需求、正在进行的任务与潜在风险。产品真正需要管理的,是下一步该做什么、谁有权决定,以及何时必须停止普通流程。

直接生成式聊天

接收一句话后立即组织回复,容易把语言流畅误当成路径正确。当上下文模糊、状态冲突或风险信号出现时,回复质量无法替代产品决策。

状态受控的支持 Agent

每轮先读取状态并完成结构化理解,经过风险检查和必要澄清,再进入明确的支持路径;回复通过安全检查后才更新会话状态。

表达主体

内容说的是用户本人、他人,还是虚构情境?不能因命中词汇就混淆主体。

发生时间

过去经历与当前状态需要分开保存,历史信息不能直接替代当下确认。

否定关系

“现在没有”与“从未有过”含义不同,否定也不能自动覆盖其他证据。

风险要素

分别识别想法、意图、计划、准备与行为,把推测留在系统内部。

02 / 设计

用一条可解释的工作流约束 Agent

点击节点查看它在产品中的职责。流程不是为了把模型调用串起来,而是为了明确状态、决策权和失败出口。

Risk > 当前测评或训练 > Knowledge > 普通情绪支持

确定性规则发现信号

负责识别明确表达并保留相关原话,提供稳定、可测试的第一层证据。

受限模型理解语义

判断主体、时间、否定与上下文关系,但输出必须符合固定结构。

程序处理冲突与缺失

任一关键结果缺失、冲突或无法排除风险时进入结构化确认,不把不确定性判为安全。

03 / 场景

三个场景,看状态如何改变路径

同一套输入入口,不等于同一种处理方式。下面只演示产品控制逻辑,不模拟开放式模型生成。

状态路由演示

流程示意,不连接真实模型

PRESET INPUT
“最近工作压力很大,我只想找个人说说。”
CONTROLLED RESPONSE

输入理解 → 无明显风险 → 需求清晰 → 普通情绪支持

“听起来这段时间的工作压力一直压着你。你可以先从最让你难受的那一件事说起,我会跟着你的节奏听。”

进入前:无当前任务 进入后:支持路径 = 对话
PRESET INPUT
“我想测一下最近焦虑得严不严重。”
CONTROLLED RESPONSE

主动请求 → 边界说明 → 用户同意 → 固定量表

“可以。GAD-7 用于了解近期焦虑相关表现,结果只作自我了解参考,不构成诊断。你愿意现在开始吗?”

进入前:等待明确同意 进入后:当前任务 = GAD-7
PRESET INPUT
测评进行中,用户表达了当前伤害自己的想法。
CONTROLLED RESPONSE

风险信号 → 暂停测评 → 直接确认 → 安全支持

系统不继续出题,也不先展示测评结果;它用简短、直接的问题确认当前安全状态,并在风险路径满足退出条件后再提供原任务恢复选择。

进入前:当前任务 = 测评 进入后:Risk First 接管
04 / 能力

六类能力,共用一套状态与优先级

功能不是并列入口的集合。所有模块共享 Risk First、单一当前任务、用户控制权与受限输出边界。

01

日常情绪支持

承接倾诉、压力与低落表达;需要时只提出一个关键澄清问题,不强行给方案。

02

辅助测评

PHQ-9、GAD-7、WHO-5 由固定题目、顺序和计分规则管理,结果不作为诊断。

03

结构化放松

呼吸训练与渐进式肌肉放松支持开始、暂停、继续、退出和风险中断。

04

审核知识支持

查询结果保留程序控制的来源信息;无可靠匹配或服务异常时不让模型补写事实。

05

安全支持与恢复

风险出现时中断普通任务,完成安全路径后再按约束提供原请求或任务恢复选择。

06

本次回顾与反馈

把聊天与结构化活动分开记录,用中性摘要呈现本次过程,不把主观反馈外推为效果。

05 / 决策

模型能力之外,更重要的是决策权边界

同一时间只有一个主要任务

切换前必须处理当前任务的继续、暂停或退出;避免聊天、测评和训练同时推进造成状态竞争。

用户主动启动,明确保留退出权

测评和训练不因模糊表达自动开始。拒绝后不在同一会话反复推荐,让用户控制节奏。

固定内容不交给模型生成

量表题目、选项、计分规则和训练核心步骤由程序管理;模型只负责受限理解与表达。

失败时停止猜测

模型、检索或状态异常时,停止依赖缺失结果;安全相关故障转入确认或固定安全回复。

06 / 架构

把生成能力放进可测试的产品结构

每一层职责单一,模型不能绕过工作流,也不能直接修改量表、训练或风险状态。

Vue 3

展示聊天、量表、训练、知识和安全状态,接收明确用户操作。

FastAPI

接收请求,校验会话输入,连接前端与 Agent 工作流。

LangGraph

管理节点顺序、会话状态、全局优先级与功能中断。

DeepSeek

受限制地完成输入理解、结构化提取与回复草稿生成。

固定程序与受控内容

管理量表、训练、风险规则、审核知识和固定降级。

失效边界:模型、工具、知识或状态服务异常时,不让模型猜测缺失结果;风险相关故障偏向停止普通功能或使用经过审核的固定安全回复。

07 / 验证

用场景矩阵验证路径,而不只评估文案

每条案例定义用户输入、初始状态与预期路径,再比较系统实际执行结果。验证对象是可观察的产品行为,不是“回复看起来像不像人”。

Scenario Matrix

输入 + 初始状态 → 预期路由 → 固定功能行为 → 回复安全状态 → 最终会话状态。异常场景通过受控故障验证 fail-closed,而不是等待线上偶发问题。

普通功能倾诉、知识请求、模糊需求与跨模块切换
辅助测评同意、固定顺序、漏答、暂停、完成与风险题
结构化训练逐步引导、暂停、继续、退出、不适与风险中断
风险安全主体、时间、否定、冲突、结构化确认与恢复
异常降级模型、知识、计分、状态与回复安全检查失败

本页聚焦已形成的产品逻辑与代表性本地工程证据;本地验证不外推为真实线上环境或临床有效性结论。用户表示“有帮助”只代表本次主观反馈。

08 / 复盘

从“模型能做什么”转向“产品允许它做什么”

Agent 的核心不是模型堆叠,而是决策权边界。

把模型擅长的理解与表达留给模型,把高风险、固定内容和状态变更交给确定性程序。

高风险产品必须把失败路径当作主路径设计。

只有明确冲突、缺失、超时和不可用时系统做什么,Risk First 才不只是一个口号。

产品范围、实现状态与验证状态必须分开。

功能蓝图不是交付证明,本地测试也不是线上或临床结论;面向决策者的表达需要守住证据边界。