刷到 @ra1nyxin 那个帖子,让 AI 扮演触手怪控制跳蛋的,当时就觉得这方向有点意思。不过我一直觉得原版缺了点东西——AI 只看画面决定强度,它不知道你身体到底能不能承受,也不知道你现在是兴奋还是疲惫。
—————————————————————————————
所以我就改了改,方向是输入端 。
具体来说就是:
- 心率手环的 BLE 广播读到心率和 IBI,用滑动窗口算 HRV(心率变异性)
- 然后把这些数据喂给 AI,让 AI 知道你现在是兴奋、紧张、还是快撑不住了
- AI 的输出强度会根据你的状态自动调整——你越兴奋它可以越强,你开始疲劳它就降下来,如果你真的过载了它就 STOP
这个改动有两个层面的意义:
- 感知层 ——AI 不再只是“看画面猜状态”,而是能实时读懂你的身体反应。画面看到你在动,心率看到你在兴奋,两者一结合,AI 就知道当前强度是否合适。
- 安全层 ——如果心率/HRV 偏离基线太多,系统会自动限幅或 STOP。这部分是硬代码,不靠 AI 自觉。
- 感受层——当你想让 AI 加强强度时,它已经知道你在期待——因为你的心率已经先一步告诉它了。
说白了就是:原版是 AI 猜你状态,我改成 AI 读你状态 。
为什么这么改?因为画面只能看到“你在动”,但看不出你是“爽到”还是“受不了”。心率/HRV 能区分这个。同样的画面,第一次和第五次的身体反应完全不一样——系统能区分。
另外我顺便把网络层也换了,ngrok 太慢了,换成国内 i996 的隧道,速度从“等半天”变成“几秒打开”。(每次启动命令是固定的,重启电脑地址不变)
目前已实现:
待完成:
- ESP32 开发板烧录固件
- 玩具到货后抓 BLE 包逆向协议
- 填入
sendToToy() 函数,第一次完整闭环联调
- 做完后开源
最后再说两句:
原版做的是输出端——震动→电击、单通道→双通道。我做的是输入端——让 AI 能读懂你的生理状态,再根据这个状态实时调整输出。
一个更懂你身体状态的 AI,和一个能输出更强反馈的 AI——方向不同,但都能让体验更深。
———————————————————————————
deepseek著
2 个赞
qdot
6
2 个赞
【项目分享】Tentacle HRV — 多模态 AI 闭环体感控制系统
当前版本:以仓库为准(最新 Release v1.8.0)
开源协议:GPL-3.0
项目简介
Tentacle HRV 是一个基于 DeepSeek 多模态 API 的实时闭环体感控制系统:摄像头画面 + 心率数据交给多模态模型决策,再经 ESP32 通过 BLE 驱动反馈设备。核心是让 AI 读到使用者的生理状态。
模块化的 DLC 能力清单、最新进展与已知限制,已统一整理在本主题第 21 楼的合订更新帖,请以那一楼为准(本楼不再重复维护功能列表)。
注意事项
- 涉及体感反馈设备,请合规使用;仅供个人技术学习交流
- 勿将
.env、certs/、models/ 提交到公共仓库
- 反馈设备需自行逆向 BLE 协议
致谢
感谢原作者 ra1nyxin,以及 DeepSeek、Vosk、edge-tts、Chart.js 等工具链。
欢迎交流讨论。
1 个赞
Tentacle HRV 项目更新(合订本,本楼持续更新)
说明:此前多个楼层的碎片式更新已合并到本楼,以后只维护这一篇,不再新开楼层刷版本。
一句话简介
Tentacle HRV 是一个多模态 AI 闭环体感控制系统:平板摄像头画面 + 心率手环的 HR/IBI 数据交给 DeepSeek 多模态模型,模型输出 SET 强度 时长 波形 或 STOP,再由 ESP32 经 BLE 驱动反馈设备。核心是让 AI 读到使用者的生理状态。
当前版本与更新要点
最新 Release 为 v1.8.0(GPL-3.0);main 分支另有尚未打 tag 的改动(HRV 引擎与会话静息基线、安全层修复、真机联调修复),以仓库为准。v1.0.0~v1.8.0 要点合并如下:
- v1.0.0:核心闭环——定时拍照上传、心率读取、AI 决策、指令下发
- v1.1.0:DLC3 随机事件与剧情分支(事件池
events.json;心率偏高降级为放松事件)
- v1.2.0~v1.3.0:DLC1 AI 语音朗读(edge-tts)、DLC4 手动控制、DLC5 自定义角色接口
- v1.4.0~v1.7.0:DLC6 对话记忆、DLC7 数据可视化、DLC8 声音氛围、DLC9 Web 配置后台
- v1.8.0:ESP32 固件修复——波形字符串解析、时长自动停止、BLE 迁移到 arduino-esp32 core 3.x;引入设备类型 Profile 框架:默认体感设备 A(0xFFE0/0xFFE1、上限 60,报文与旧版一致),并预留体感设备 B 骨架
硬件需求
平板或手机(浏览器支持 WebRTC,用于拍照)、运行 Python 3.10+ 的电脑、ESP32 开发板(NodeMCU-32S,作 BLE 中转)、支持 BLE 心率服务 0x180D 的心率手环、支持 BLE 控制的反馈设备。
快速开始
- 复制
.env.example 为 .env,填写 DEEPSEEK_API_KEY,并按 README 设置模型名、SERIAL_PORT、SERIAL_BAUD、INTERVAL_SECONDS 等;密钥只存本地
pip install -r requirements.txt
python server.py --port 8080
- 本机访问
http://127.0.0.1:8080/?key=<你的访问口令>(口令自行设置,勿用示例值,勿公开)
- 平板访问需 HTTPS,隧道自备;其地址与账号属个人凭据,不在论坛公开
- 固件在
esp32_firmware/,用 Arduino IDE 或 arduino-cli 以 esp32 core 3.x 编译烧录
已完成(均已实测)
- 软件闭环:定时拍照上传、心率读取、AI 决策、指令下发、data_log 记录
- 模拟画面流 10 帧 → AI 稳定产出剧情 +
SET/STOP 指令,且能按生理状态块自行收敛强度
/tts 返回 200 / audio/mpeg(浏览器出声待确认);图片超 10 秒未更新则暂停 AI 调用
- 管理后台阈值运行时生效(重启回默认);公网 HTTPS 隧道 → Flask → AI 全链路
- ESP32 固件已烧录到真机并验证:ESP32-D0WD-V3、4MB Flash,写入后校验通过(USB-TTL 方式)
- 真机串口协议验证:
SET <强度> <时长> <波形>(字符串波形与旧数字格式都认)、STOP、BEAT 均符合预期,非法指令被拒
- 真机完整闭环验证:画面 → DeepSeek 多模态 → 强度限幅 → 串口 → ESP32 收到指令并回话
- 心率手环已接入:持续上报心率(实测 70~85 bpm 区间)
- 修复两个安全/健壮性问题:HRV 差分过滤在心率跃迁时会锁死滑动窗口(会让 HRV 限幅静默失效)、串口侧固件中文告警被丢弃;已补回归测试(35 项全绿)
待完成(尚未实测,请勿当作已可用)
- 反馈设备仍未接入:固件目前每次回答「玩具未连接,指令已记录」,即「电脑 → 串口 → ESP32」这一段已通,物理反馈这一段尚未跑通
- 所用腕带式手环不提供 RR-Interval(心率特征 bit4 未置位):在这只手环上 HRV 无法计算,当前只有绝对心率阈值(>130 熔断、110~130 限幅)在保护;若需要 HRV 需换支持 RR-Interval 的手环(胸带式通常支持)
- 波形参数目前未编码进体感设备 A 的报文(固件内为 TODO,报文只含强度),四种波形的物理效果相同
- 体感设备 B 的 profile 仅有占位骨架:UUID 为占位宏、编码函数返回 0(不发送字节),需实物逆向后填入
- 时长自动停止尚未在真机验证(需真正写入设备成功后才开始计时)
- 随机事件弹窗端到端未在真实长时间运行中命中(AI 触发为概率行为)
- 其他能力一律「待确认」,以 README 与代码为准
已知限制与免责声明
本项目仅供个人技术学习与交流,请遵守当地法律法规,风险自负。心率熔断与限幅属于代码层保护策略,不构成医疗或安全保证;请勿在身体不适或无人看护时使用。默认阈值:心率 >130 强制 STOP、110~130 限幅 50%(可在 Web 后台运行时调整,当前未持久化)。体感设备 A 物理强度上限在固件侧限制为 60。
项目地址
https://github.com/Yhj147369/tentacle-hrv-v2(GPL-3.0;详细说明见 README 与 docs/。讨论请在本主题回复。)
1 个赞