【社会服务赛道】 - 洞洞:一个零社交压力的情绪出口
【标签】社会服务、社会公益
【标题】社会服务赛道 - 洞洞:一个零社交压力的情绪出口
1. Demo 简介
是什么: 洞洞是一个不进行任何评价的情绪出口——一个零社交压力的社区日记本。它不强行给你建议、不会一直告诉你"应该怎么做",只提供一个"你说,我听着,我不评判你"的安全空间。名字取自"树洞":把情绪倒进洞里,洞不会回嘴。
面向谁: 12-30岁的青少年(中学生、大学生,社会压力大的人群),以及所有"想倾诉又怕被评判"的人——深夜睡不着不敢打扰别人、考试失利怕被说矫情、和朋友吵架怕被当负担的那些时刻。
核心理念: 这个世界从不缺愿意教你做事的人,缺的是愿意听完你说话的人。洞洞只做一件事——倾听和回应。
主要功能:
-
**AI共情对话 · 只听不说教:**24小时在线的AI倾听者,对话原则是"先倾听、再回应、不给建议、不说教、不评判"。用户不想聊时,它就安静陪着。支持文字和实时语音通话两种方式。
-
情绪日记 · 只记录不诊断: 文字+语音混合记录的块编辑器,本地ONNX小模型实时识别情绪倾向(积极/消极/中性),但只用于帮你看清自己,不会弹出"你抑郁了请就医"这类评价。日记是你的私人空间,不公开、不评分、不推送。
-
匿名社区 · 倾诉不被贴标签: 发现社区里所有人都是匿名的,发帖只展示内容不展示身份,没有点赞排行、没有粉丝关注、没有"优质内容"算法筛选——避免一切会让倾诉变成"表演"的社交压力。
-
情绪空间 · 看见自己而非评价自己: 五维情绪雷达图+趋势图+洞察卡,把情绪"可视化"而不是"诊断化"。它告诉你"这周你大部分时间在焦虑",而不是"你患有焦虑症"。
-
关联空间 · 让守护你的人更懂你: 高度隐私化的可视化的情绪温度计,帮助身边的人更懂如何关心你。可定制化的小精灵陪填补你每一次情绪空洞。
2. Demo 创作思路
灵感来源:
深夜两点,一个16岁的女孩在被窝里哭。她不敢告诉父母,怕被说"矫情";她不敢发朋友圈,怕被同学议论;她甚至不敢跟闺蜜讲,怕成为负担。她需要的不是一份心理测评量表,不是一个冷冰冰的"建议",而是一个永远不会评判她、永远听她说完的出口。
想解决的问题——"评价"和“建议”本身就是压力:
-
社交平台的评价压力: 朋友圈、微博、小红书——每次倾诉都暴露在点赞、评论、转发的凝视下。倾诉变成"表演",情绪变成"内容",越倾诉越孤独。
-
心理类App的评价压力: 心理测评给你贴上"中度焦虑"的标签,咨询App给你推"建议就医",情绪记录App给你算"幸福指数"——这些都在用"评价"代替"陪伴"。
-
真实人际关系的评价压力: 父母会说教,朋友会有自己的烦恼,老师会"上报"——没有任何一个真人能做到"听完不评价"。
-
结果: 中国17岁以下青少年中约3000万人有心理问题,但真正求助的不到20%。他们不是不想求助,而是没有一个足够低门槛、足够安全、足够不评价的出口。
为什么做"不评价"这个方向:
-
评价≠帮助: 很多时候人倾诉不是为了被"解决",而是为了被"听见"。一句"我懂你"比一百条建议更有用。
-
匿名+无评价=真正的零压力: 只要还有点赞、粉丝、排行、标签,倾诉就会被异化。只有彻底去掉"评价体系",社区才能回到倾诉的本质。
-
AI适合做"不评价的倾听者": AI没有价值观、没有情绪、不会疲倦、不会"上报"——它是天然适合"只听不说"的角色,配合明确的提示词约束(不给建议、不说教),可以做到真人做不到的"纯粹倾听"。
-
主动权归用户: 家长端只能看到孩子主动授权的脱敏数据。它不是监控工具,是孩子主动让渡有限信任的桥梁——评价权始终在孩子手里。
核心取舍: 我们刻意不做"心理测评"“抑郁筛查”“风险等级评定"这类看似专业但本质是"评价"的功能。洞洞的价值不是"诊断你有没有病”,而是"接住那些没人接住的情绪"。
3. Demo 体验地址
在线体验: http://120.27.160.252:3002/
APK下载: 通过网盘分享的文件:dongdong-mvp-demo.apk
链接: 百度网盘 请输入提取码 提取码: sqq3
4. TRAE 实践过程
整个项目从需求文档撰写、技术框架确立、核心功能实现、到跨平台能力落地,全部在 TRAE IDE 中通过 AI 协作完成。以下按真实工程演进顺序展开。
阶段一:需求文档撰写
起点是把"零社交压力"这一定位想清楚并落成文档。 与 TRAE 对话反复推敲"为什么不做心理测评"“为什么去掉点赞排行”“匿名到什么程度才算零压力”,最终形成两份基础文档:
- 产品需求文档,明确"零压力、零评判、高度隐私"三大核心设计原则,定义青少年端/家长端/咨询师端三端边界
- MVP 范围与里程碑规划
这一阶段的关键产出不是代码,而是通过对话把模糊的"不评价"直觉,打磨成可执行的设计约束——后续所有功能取舍都回到这三条原则上来。
Session ID: 3974101309594131:81de7cb9bdacb4d4f0e441bc4634a8d0_6a32276b22e6c1145457d6e2.6a32276b22e6c1145457d6e5.6a32276b22e6c1145457d6e3:TRAE Work
阶段二:技术框架确立
框架不是一开始就定的,而是随 MVP 验证逐步演进。 实际经历了两次技术栈迁移:
1. MVP 验证期(Vite + React + localStorage):
最初按开发计划用 Vite + React 搭建最小可运行版本,AI 回复用模拟数据,数据存 localStorage。目标是一周内验证"不评价"的交互体验是否成立,不追求工程完备性。
2. 工程化重构期(Next.js + Go + PostgreSQL + Redis):
MVP 验证通过后,进入实质性产品开发,技术栈升级为:
| 层级 | 技术方案 | 说明 |
|---|---|---|
| 前端(青少年端) | Next.js + React + Tailwind | 静态导出,支持 Capacitor 打包 |
| 后端 | Go(Koa 风格中间件) | 直接服务 8081 端口,处理 WebSocket 鉴权 |
| 数据库 | PostgreSQL | 16 个 migration 文件管理 schema 演进 |
| 缓存 | Redis | 邮箱验证码 60s 冷却、会话管理 |
| 管理后台 | 独立 Next.js 应用 | heart-hole-admin,LLM 配置/用户/Agent/认证审核 |
| 语音转写 | FunASR | WebSocket 流式 ASR |
| 部署 | Docker Compose + frp 隧道 | 一键部署脚本 + LAN/frp 双通道 |
这一阶段通过 TRAE 对话生成项目骨架、数据库 schema、路由结构与中间件,并约定了"前后端分离、后端直连 WebSocket、Admin 独立部署"的工程边界。
Session ID: 3974101309594131:1b95cc2354d52bc37bab7710990e8293_6a32276b22e6c1145457d6e2.6a324406d42885c7ffe75a40.6a324406d42885c7ffe75a3e:TRAE Work CN.0.1.31.no_sid.no_ppe.T(2026/6/17 14:51:50)
阶段三:核心功能实现
框架确立后,核心功能按"先骨架后细节、先能用后打磨"的顺序推进:
1. AI 共情对话 · 提示词工程实现"只听不说教"
设计 AI 对话提示词,明确约束"先倾听、再回应、不给建议、不说教、不评判、用户不想聊就安静陪"。后端 Go 实现 WebSocket 流式传输 + FunASR 实时转写,前端设计语音交互状态机。
2. 情绪日记 · TextBlock+VoiceBlock 混合块编辑器
设计块编辑器:文字块自适应高度、语音块插入时按光标位置切分前后段、Backspace 删除前一录音块、语音转写支持重试。日记数据存储支持 content 纯文本 + contentBlocks JSON 双格式,并兼容旧版数据。
3. 情绪空间 · “看见"而非"评价”
五维情绪雷达图 + 趋势图 + 洞察卡。文案刻意避免"诊断/风险/异常"等评价性词汇,只用描述性表达。每 30s 刷新 + visibility change 触发。
4. 守护关联 · 主动权归孩子
家长端只能看孩子主动授权的脱敏数据,绑定需孩子发起邀请码。不是监控工具,是"孩子主动让渡有限信任"的桥梁。
5. 匿名社区 · 刻意去掉社交评价机制
发现社区去掉点赞排行、粉丝关注、优质内容算法推荐——只保留匿名发帖与温和回应,避免倾诉变成表演。
6. UI 设计语言统一 · 让界面本身不带有"评价感"
统一设计 token(bg-surface/bg-page/text-text-*/rounded-apple*/shadow-card)、柔和动效(0.28s fade+slide 路由转场、whileTap 0.97)、温暖配色。
7. LLM 多用户路由与配置
Admin 后台支持 OpenAI/Anthropic/DeepSeek/NVIDIA/自定义多供应商配置,用户可在设置中绑定自有 API Key,Agent 提示词可视化编辑。
8. 咨询师认证
认证心理咨询师入驻流程,Admin 后台审核。
9. FunASR 语音转写兜底
FunASR 容器禁用 SSL 允许 ws://,转写失败时支持点击重试。
Session ID: 3974101309594131:7269782c86b9273b3f83d0d4fb0dad30_6a32276b22e6c1145457d6e2.6a32dbe7d42885c7ffe76249.6a32dbe7d42885c7ffe76248:TRAE Work CN.0.1.31.no_sid.no_ppe.T(2026/6/18 01:42:14)
阶段四:跨平台能力落地
Web 端跑通后,目标是让"不评价的情绪出口"能装进口袋。这一阶段解决三个跨平台难题:
1. Android 打包(Capacitor)
使用 Capacitor 将 Next.js 静态导出打包为 Android APK:
- 注入
NEXT_PUBLIC_API_BASE_URL与NEXT_PUBLIC_LAN_API_BASE_URL - AndroidManifest.xml 声明 RECORD_AUDIO / MODIFY_AUDIO_SETTINGS / CAMERA 权限,启动时申请运行时权限
- WebView 自动授予 AUDIO_CAPTURE 资源请求
- APK 最终产物 89MB,已包含全部核心功能与 ONNX 模型
2. 本地情绪模型(ONNX Runtime Web)
原方案情绪判定走后端 LLM,但跨平台(移动端 WebView)下不可靠。改为嵌入式本地小模型满足跨平台需求:
- 模型选型 ,用 convert-emotion-model.py 转 ONNX int8 量化(98.3MB)
- 通过 ONNX Runtime Web(WASM SIMD)实现浏览器内推理,300ms 防抖实时分析
- 模型与 wasm 运行时预打包在随 APK 内置
- Diary 页异步推理 +
emotionSeqRef防竞态,先 fallback 关键词算法、后 ONNX 覆盖
3. API 地址双通道自动切换
实现 800ms 健康检查 + 5 分钟缓存,保证移动设备在不同网络下都能连上后端。
Session ID: 3974101309594131:32653915b42041204cfc0821dbaa8054_6a32276b22e6c1145457d6e2.6a33d94bd42885c7ffe786c8.6a33d94bd42885c7ffe786c6:TRAE Work CN.0.1.31.no_sid.no_ppe.T(2026/6/18 19:40:59)
开发心得与踩坑
-
TRAE最值得说的价值: 不是"帮你写代码快",而是"帮你把模糊的产品直觉打磨成清晰的设计原则"。通过反复对话"为什么不做测评"“为什么去掉点赞”,最终才把"不评价"这个定位立住。
-
"不评价"也是工程问题: 提示词约束AI不评判、ONNX模型只输出情绪倾向不输出诊断、社区算法去掉排行——每一个"不评价"背后都是具体的工程实现。
-
踩坑经历:
-
WebSocket语音流必须直连后端(8081),不能走Next.js代理(3002),否则鉴权失败
-
Turbopack开发模式下
process.env.NEXT_PUBLIC_*不内联到客户端bundle,必须硬编码fallback -
本地ONNX模型需要WASM SIMD支持,移动端WebView需手动放行
.wasm资源 -
@capacitor/preferences在web端proxy的then()未实现,需改用localStorage -
jd-binary模型训练数据为电商评价,对中性日记句判定偏正向,后续考虑换
uer/roberta-base-finetuned-dianping-chinese
报名帖链接
备注: 本项目已构建Android APK,包含全部核心功能、ONNX情绪模型与WASM运行时,可在Android设备上完整体验"不评价的情绪出口"。Web端可通过在线体验链接或本地一键部署访问。














