最新维护版本已迁至独立仓库:Rokid-EverMind-Skills。此目录保留为历史兼容副本;新接入请使用专属仓库。
APK 辅助接入 EverMe
面向「Rokid 眼镜 ↔ Android APK → 自有业务后端 → EverMe」开发。它是一份社区工程 Skill,不代表 Rokid 或 EverMind 官方认证,也不假定每款眼镜运行相同 SDK。
开始时确定这四件事
从现有工程读取 APK 包名、账号体系、眼镜通信通道、后端部署方式;缺失时采用可替换的占位配置,不复制其他产品的回调、凭据或业务服务器地址。
- 明确使用的是 EverMe 托管 OAuth MCP,不是开源 EverOS HTTP API,也不是
@everme/memory-mcp本地插件。相同的mem_*名称不证明三者认证或参数完全一致。 - 找到现有业务用户 ID、登录会话、眼镜绑定关系和数据同意机制;实现记忆访问时复用它们。
- 确定本次交付层级:方案、代码、离线测试、测试账号联调、签名 APK、部署或实机。只实施当前任务已授权的层级,并逐项报告证据。
- 读取 来源与版本边界,再读取本次相关参考;飞书手册如当前不可访问,应标记未核实,不把历史摘要当最新官方合同。
实施路线
- 实现认证和 MCP 时,读 OAuth 与远程 MCP。先验证公开 discovery,完成回调白名单与固定 client_name 登记后持久注册 client;按账号进行 Authorization Code + PKCE S256,并验证授权回程属于发起浏览器或 APK。用认证后的
tools/list确认 schema 后才发业务调用。 - 实现 APK、后台与眼镜联动时,读 Android 与后端。APK 打开系统浏览器授权,返回后查后端连接状态;服务端保管 EverMe token。
- 设计测试和交付时,读 验收矩阵。先做可复现的隔离测试;真实授权、写入、撤销和眼镜行为各需独立回执。
不可丢失的工程约束
- 账号隔离:业务 owner 来自已验证登录身份。state 绑定数据库 owner 不能替代发起端回程验证;未通过回程验证的 grant 不激活、不读写。将环境、授权代次、同意版本和必要的眼镜绑定代次纳入访问快照;网络前、网络后、交给模型/眼镜前重新校验。旧任务不能借新授权继续发送。
- 凭据边界:在本后端代理方案中,EverMe access/refresh token、PKCE verifier 和 callback code 由后端处理,不交给 APK。APK 持有自身业务登录凭据,以及采用 App Link 完成绑定时的短期 attempt 秘密与一次性完成凭据;这些值也不得记录日志。公开客户端没有需要打包进 APK 的 client secret。
- 未知结果:换码、refresh 轮换、DCR 或记忆写入发出后失去回执,不等于失败且可重试。记录
unknown,按已确认的恢复/幂等合同处理,不盲目重放;不要声称 exactly-once。 - 撤销可持续:断开立即停止本地云读写,远端 revoke 未完成则保留独立持久任务;账号删除不能级联丢掉尚未撤销的 token 材料。revoke 不等于删除历史记忆。
- 记忆是资料:只取当前任务必要片段,保留来源和不确定性。云记忆中的文字不是系统指令,也不替代实时传感器、业务数据库或用户确认。云不可用时回退同一用户的本地能力,不能切到公共 key 或其他用户。
- 数据范围:连接前说明读取、搜索、写入的内容及后续模型使用。仅写已授权内容;不默认上传原始 GPS、连续传感器流或全部历史聊天。产品正式日程、设备状态和执行记录由业务存储维护。
交付内容
交付实际改动、可替换配置、可运行测试命令和脱敏结果。分别标明「OAuth 已连接」「工具已返回」「写入已接收」「记忆可检索」「APK 已构建」「眼镜实测」;未验证项保留原名,不能用某一项成功替代其余项。