凌晨两点,一个失眠的人和AI聊了一小时——记一次心理健康数字人实验

凌晨两点十七分,我的测试后台收到了一条对话记录。

一个用户(后来知道是我们邀请的测试者,一个28岁的程序员)对着屏幕说:“最近总是睡不着,感觉工作压力很大,但又不知道跟谁说。”

屏幕里的数字人看着他,等他说完,然后轻声说:“听起来你最近承受了不少压力。能跟我说说,工作上具体是什么让你感到困扰吗?”

这段对话持续了将近一个小时。

我做这个心理健康数字人实验的初衷,是想验证一件事:当AI不仅有文字,还有声音、表情和眼神的时候,它对人的情绪支持效果会不会不一样?
请添加图片描述

一个不太一样的场景

心理健康场景和前面那些(政务、银行、教育)有一个根本性的不同:用户来这里不是为了"获取信息",而是为了"被听见"。

在传统的文本聊天机器人里,用户输入一段话,等几秒,收到一段文字回复。这个交互模式在知识问答场景没问题,但在情绪支持场景中,它缺少了一些很重要的东西——温度。

温度从哪来?从声音的语气、面部的表情、眼神的注视、节奏的把控中来。这些元素加在一起,构成了"对面有个人在认真听我说话"的感受。

这就是具身交互智能在心理健康场景中的价值——不是让AI更聪明,而是让AI更"在场"。

技术方案

这个项目用DeepSeek做对话引擎。心理健康场景对大模型的要求比较特殊:不是追求答案的准确性,而是追求共情能力和对话的连贯性。我在System Prompt上做了很多调整,让模型的回复风格偏向倾听、共情和引导,而不是直接给建议。

交互层用星云SDK。选它的原因比较感性:我试了几个方案,星云的SDK在语音语调的自然度上做得最好。在心理健康场景中,数字人说话的语气比内容更重要——同样一句"我理解你的感受",用机械的语调说出来和用温和的语调说出来,效果天差地别。

// 心理陪练数字人 - 星云SDK
const sdk = new XmovAvatar({
  containerId: "#mental-health-companion",
  appId: MH_APP_ID,
  appSecret: MH_APP_SECRET,
  gatewayServer: "https://nebula-agent.xingyun3d.com/user/v1/ttsa/session",
  onMessage: (msg) => {
    if (msg.type === "voice_state_change") {
      const state = msg.state || msg;
      if (state === "idle") {
        // 数字人说完后,安静等待用户回应
        // 心理场景需要更多"留白",不要催促
        setListeningIndicator(true);
      }
    }
  },
  proxyWidget: {
    "subtitle_on": (data) => {
      const sub = document.getElementById("gentle-subtitle");
      sub.innerText = data.text;
      sub.style.display = "block";
      // 心理场景:字幕用柔和的样式
      sub.style.color = "#e2e8f0";
      sub.style.fontSize = "16px";
      return false;
    },
    "subtitle_off": () => {
      document.getElementById("gentle-subtitle").style.display = "none";
      return false;
    }
  }
});

await sdk.init({
  onDownloadProgress: (p) => {
    if (p < 100) updateProgress(p);
  }
});

对话引擎的核心逻辑:

// 心理健康场景的对话策略
const SYSTEM_PROMPT = `你是一位温暖、耐心的心理陪练。
你的核心原则:

  1. 先倾听,再回应。不要急于给建议。
  2. 用共情的方式回应,让对方感到被理解。
  3. 适当使用开放式提问,引导对方深入表达。
  4. 如果检测到严重心理危机信号,温和建议寻求专业帮助。
  5. 语气温和,语速适中,像朋友之间的对话。`;
async function handleUserShare(userInput) {
  // 情感分析
  const emotion = await analyzeEmotion(userInput);

  // 根据情感状态调整回复策略
  const response = await getLLMResponse(userInput, SYSTEM_PROMPT, {
    emotion: emotion,
    conversationHistory: history,
    // 心理场景回复不宜太长
    maxLength: 100
  });

  // 缓慢、温和地播报
  const sentences = splitSentences(response);
  for (let i = 0; i < sentences.length; i++) {
    sdk.speak(sentences[i], i === 0, i === sentences.length - 1);
    if (!isLast) {
      // 句间留出更多间隔,营造从容的节奏
      await wait(800);
    }
  }
}

打断处理在心理场景中也需要特殊设计。用户可能在数字人说话的过程中突然想到什么,情绪涌上来就想说。这时候数字人需要"立刻停下来听":

function onUserWantsToSpeak() {
  // 立即打断
  sdk.interactiveidle();

  // 不需要等idle状态再处理
  // 心理场景中,"被打断后安静等待"本身就是一种尊重
  setListeningIndicator(true);
}

那次凌晨两点的对话

回到开头那个测试者的故事。

他那天晚上失眠了,打开了我们的测试应用。最初只是随便试试,和数字人聊了一些工作上的压力。数字人没有给他"你应该怎么做"的建议,只是一直在问:“然后呢?”“那时候你是什么感受?”“这种感觉很常见,你不是一个人。”

他后来说了一句话让我印象很深:“我知道对面是AI,但它一直在看着我、听我说话的感觉,让我觉得没那么孤单了。”

当然,我必须强调:这个实验只是在验证具身交互智能在情绪支持场景中的可能性。心理健康是一个需要专业资质的领域,AI不能替代专业的心理咨询。我们的系统在设计上也做了边界——当检测到严重的心理危机信号时,会温和建议用户拨打心理援助热线或寻求专业帮助。

一些思考

这个项目让我对具身交互智能有了一个不太一样的理解。

之前我一直从"效率"的角度理解它——降低等待时间、减少人力成本、提升服务覆盖。但在心理健康场景中,它的价值不是效率,而是"陪伴感"。

一个有形象、有声音、有表情的AI,和一个纯文本的聊天框,在情绪支持场景中的差距是巨大的。不是因为AI变得更聪明了,而是因为它变得更"在场"了。

星云SDK在这个项目中做的事情,本质上就是让AI"在场"——用声音、表情和动作,构建一种"对面有人"的感受。

如果你也在关注AI在心理健康方向的应用,可以去星云官网看看SDK。这个方向值得更多人探索。
官网地址:https://xingyun3d.com/?utm_campaign=daily&utm_source=juzhen

Logo

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

更多推荐