01
终端不持有 API key
设备身份与短期令牌API key 可代任何人读写,不能放在不可信的设备上。设备另走一路:服务端注册获得 secret,以 secret 换取 15 分钟短期 token,身份固定在 token 内;参数不符即拒绝,不静默忽略。
设备接入流程
接入四步 —— 终端不持有 API key
POST /v1/devices 服务端用 API key 注册一台设备
→ { "device_id": "…", "device_secret": "mds_…" }
device_secret 只返回这一次,库里只存哈希
POST /v1/devices/token 终端以 secret 换取短期 token,这一步不需要 API key
→ { "access_token": "mdt_…", "expires_in": 900 }
subject 固定在 token 内,请求参数与之不符即拒绝
POST /v1/remember 上报。Idempotency-Key 让离线队列可以安全重试
Authorization: Bearer mdt_…
Idempotency-Key: 018f2c1a-… 同一个键重复提交只写一次,重放原样返回首次回执
GET /v1/changes?since=<cursor> 另一台设备拉增量。失效的事实也在 feed 里,
终端据此在本地作废,而不是发现它「消失了」吊销切断的是「换取新 token」这条路径;已签发的 token 需等待过期,因此有效期限定为 15 分钟。这是无状态签名的固有取舍,如实说明。
02
先落盘,再重试,不丢失也不重复
本地队列与幂等键车内、户外、地下车库,网络天然不稳。三件事缺一不可:
01
先落盘再返回
上报先入本地队列,再返回;队列满时丢最旧并计数,不静默丢失。
02
幂等键
超时分不清「未送达」与「未收到回执」:不重试会丢,重试会重。同一幂等键只写一次,两头都覆盖。
03
游标续传
先落地数据,再存游标,顺序反了会丢。拉取而非推送:后台或断网后,恢复即续传。
03
一人一脑,换设备不换记忆
按人隔离与会话统一隔离的单位是人,不是设备。音箱、手表、App 写入同一份记忆,谁写、何时写均可查;换设备,记忆随人。
两道隔离
应用层三级作用域,加数据库行级安全,覆盖全部数据表。同一台设备上的两个人,记忆互不可见。
会话统一
同一人在多台设备上的发言,间隔不长即归入同一会话,不会被切成碎片。
场景锚定
每条事实带场景标签,词表受控(居家、通勤、驾驶、户外),「地铁上」「上班路上」均可归一。
行级安全策略 2026-08-30 首次实测:8 项通过,0 项失败。验收脚本随仓库提供,可在你自己的数据库上复跑。
数据
延迟与成本
中位延迟与成本估算332ms
整条召回延迟(中位数)
口径 · 一次返回事实与其出处对话 · 并发 3 · 200 道 LoCoMo 题 · 零错误 · p95 427ms · 含一次远程向量化调用 · 2026-09-28
≈8元/用户/月
全天候语音场景的记忆成本
口径 · 可穿戴全天候口径 · 日均佩戴 8h · 有效人声 15% · VAD 门控后 36 音频小时/月 · 自建 ASR + 错峰批量 LLM · 5 万 DAU · 按公开挂牌价推算,不是实测账单
0.5–1.5元/用户/月
对话场景的记忆成本
口径 · 不含 ASR · LLM 日终批处理 + 存储与检索 · 方法性估算,上线后用真实对话量回填校准
两项成本均按公开牌价推算,属于方法性估算,并非实际账单。签约前,我们会按你的真实用量重新核算。