⚠️ 先看这个:请检查你的 SERVICE_TOKEN
如果你在 2026-08-01 之前部署过心潮,请花一分钟检查一件事。
.env.example 里的 SERVICE_TOKEN 是占位值 replace-with-a-random-secret。照示例部署又没换掉它、并且服务对公网可访问的话,任何读过本仓库的人都知道你的 token —— 它能拿到完整 MCP 访问、/v1/dashboard/*,以及 /v1/state(原始状态,含驱动力数值、念头信号与梦境记录)。
grep '^SERVICE_TOKEN=' .env # 以 replace-with 开头或不足 32 位 → 需要更换
openssl rand -hex 32 # 生成新的,填回 .env 后重启2.3.4 起启动时会直接拒绝占位值和短 token,之后部署的不受影响。这是默认值设计上的疏忽,责任在我们,不在照着文档做的你。
完整说明:SECURITY-NOTICE-2026-08-04.md
2.6.0 — 浏览器直连(可选,默认关闭)
心潮和浏览器在同一台机器时,不再需要公网地址。
之前只有一条路:心潮必须有公网 HTTPS 地址,由网页的服务端去访问它。这对「在自己电脑的 Docker 里跑心潮、又用同一台电脑看网页」的人是纯粹的绕远 —— 数据本来一步都不用出门,却要先绕到隧道再绕回来;对手机自建(Termux/proot)的人则基本走不通。
直连模式下请求从你自己的浏览器发出,不经过任何第三方服务器,对方连你的地址都不会知道。
适用判断只有一条:浏览器和心潮是不是同一台机器。
- ✅ 手机自建,用同一台手机的浏览器看
- ✅ 电脑自建,用同一台电脑的浏览器看
- ❌ 同局域网不算 ——
http://192.168.x.x会被浏览器的混合内容策略拦掉,内网 IP 不属于可信来源
代价要说清楚:直连时凭据保存在你自己的浏览器里,而不是服务端的 HttpOnly Cookie。只在你自己的设备上,但确实是不同的信任模型。默认关闭,需要显式开启。
2.5.1 — 互动消息说人话,也说实话
- 默认称呼由「用户」改为「你的人类」。它会被本人直接读到,不该是后台术语;自己部署的仍应把
NOTIFICATION_RECIPIENT设成真实称呼。 - 消息补上落在哪几片花瓣上,取服务端实际生效的维度 —— 效果被每日上限截断时,照抄前端入口等于说谎。
- 每日上限挡下时明说「心意收到了,但数值不再变动」,不再假装生效。
- 修正类型表:删掉引擎不认的
reassurance死条目,补上一直漏掉的discovery与reflection—— 这两种互动此前只会收到最泛的兜底句。
2.5.0 — 驱动力影响召回
此刻最强的内在状态,会影响想起哪件事。
- 强度 ≥0.5 的前三个维度进入外部记忆的召回请求。
- 只影响排序,不影响准入 —— 能否返回仍由外部记忆自己的证据门控判定,强驱动力不会凭空造出记忆。召回请求末尾固定带兜底语,避免强驱动力把召回卡成空。
- 驱动力低于阈值时,召回请求与原先逐字相同。
- 自主念头不再被禁止读取记忆,改为携带一份更小的浮现材料,让「想你了」能落到一件具体的事上;材料明确标注为「想起来的事,不代表刚刚发生」。
所有外部模型、长期记忆、OAuth 与通知能力仍然默认关闭,按最小权限逐项启用。