1. 项目简介:解决什么问题,目标用户是谁

我最开始的想法很简单:很多人在休息时也习惯低头看手机,很少留意身边的颜色、物品和环境细节。既然 AI 眼镜戴在眼前,能不能不用它增加更多信息负担,而是反过来提醒人抬头看看?

基于这个想法,我开发了「寻宝」。它是一款运行在 Rokid AI 眼镜上的现实寻宝小游戏。系统会随机给出一个寻找目标或一条线索,玩家在安全位置原地观察,找到物品后看向它,单击眼镜侧边拍照,由 AIUI 官方多模态模型判断是否找对。核对成功后,游戏会自动进入下一关。

这个项目想解决的不是“怎样把手机游戏搬到眼镜上”,而是“怎样借助眼镜,让人的注意力重新回到现实环境”。目标用户包括喜欢轻量小游戏、希望在休息时活动一下,或者想提高观察力的用户。

请添加图片描述

2. 场景与用户意图:什么时候触发,怎样承接需求

「寻宝」适合在家中、办公室休息区、公园等安全环境中使用。用户在眼镜端打开或唤醒「寻宝」后,智能体不会立刻要求用户寻找物品,而是先让用户选择室内或室外模式,并确认自己已经停在安全位置。

用户的意图可以概括为一句话:“我想在当前环境中玩一局寻宝游戏。”智能体会根据用户选择的场景,从对应目标池中随机生成任务,并通过画面和语音持续告诉用户当前应该做什么。

一次完整的体验流程如下:

  1. 左右转头,在“室内寻宝”和“室外寻宝”之间选择;
  2. 单击眼镜侧边,进入选中的模式;
  3. 确认自己已经停在安全位置;
  4. 画面和语音同步进行 3 秒倒计时;
  5. 根据屏幕显示的目标或线索原地寻找;
  6. 找到后看向物品,单击眼镜侧边拍照;
  7. AI 核对成功后给出语音鼓励,并自动进入下一关;
  8. 如果没有找到,可以重新拍摄;附近确实没有目标时,每关可以长按一次换目标;
  9. 完成 10 关后,生成本局能量、称号和发现册。

游戏始终强调“停稳后原地寻找”。走路、骑车、驾驶、过马路或上下楼时不建议使用,目标池也排除了交通、强光等不安全内容。

请添加图片描述

图1:早期版本真机录屏截帧。后续版本已经精简界面,并将场景选择改为更清楚的双选项布局。

3. 方案设计:智能体、页面、状态和能力怎样配合

「寻宝」不是在现实空间中放置一个虚拟宝物,也不依赖空间锚定。设备的 IMU 不能替应用定位某个现实物品,因此我没有让陀螺仪承担“物品在哪里”的任务,而是只让它负责菜单选择。最终有没有找到目标,由相机照片和 AI 核对共同决定。

整个智能体由一个主 Ink 页面承载,根据游戏状态切换不同画面。主要状态包括:场景选择、安全确认、倒计时、寻找目标、拍照、AI 核对、成功反馈、重新拍摄和十关结算。

场景选择 → 安全确认 → 3秒倒计时 → 寻找目标
    → 拍照 → 官方AI核对 → 成功 / 重新拍摄
    → 下一关 → 十关结算

各项能力的分工如下:

AIUI能力在项目中的作用
Ink 页面显示场景选择、倒计时、任务、核对结果和结算页面
相机能力拍摄玩家当前第一视角画面
LanguageModel理解照片内容,并严格核对当前目标
speechSynthesis播报操作说明、倒计时、任务和成功或失败反馈
Gyroscope等传感器只负责左右选择菜单,不负责定位现实物品
眼镜侧边输入单击确认或拍照,双击返回,长按换目标

为了让游戏不只是重复显示物品名称,我把一局设计为固定 10 关,并逐步增加难度:第 1~3 关直接显示目标;第 4~6 关只提供用途或特征线索;第 7~9 关需要同时满足颜色、形状或类别等条件;第 10 关为最终挑战。

请添加图片描述

游戏还包含“本局发现册”和“连续发现奖励”。每次成功后,系统会记录 AI 实际识别出的具体物品名称。只有没有换目标并且第一次拍照就成功,才算连续发现;连续 3、5、10 次会分别获得额外能量。

4. AIUI 实现:项目结构和关键 API

项目的核心结构比较精简:

app.json                    应用入口与能力声明
app.js                      应用版本和生命周期
pages/index/index.ink       页面、状态、相机、AI核对、语音与头控逻辑
assets/                     智能体图标

4.1 使用相机获取第一视角照片

拍照时优先使用 AIUI 环境中的相机上下文,并兼容另一种创建方式。核心思路可以简化为:

const camera = wx.media.createCameraContext();

camera.takePhoto({
  quality: 'high',
  success: (result) => verifyCapturedPhoto(result.data, 'image/jpeg'),
  fail: () => showCameraError()
});

照片只用于当前关核对,不在应用内保存。核对结束后,模型会话也会立即销毁。

4.2 使用官方多模态模型完成两阶段核对

视觉核对使用 AIUI 官方 LanguageModel

import { LanguageModel } from 'language-model';

一开始我采用了比较直接的核对方式:把目标名称和照片一起交给模型,询问是否找到。真机测试后发现,这种方式容易让模型受到目标提示影响,有时画面并不符合要求,也可能被判断为成功。

后来我把核对改成两步:第一阶段不告诉模型本关目标,只让它客观列出照片中清晰可见的物品;第二阶段再提供目标、核对标准、原图和第一阶段观察结果,进行严格复核。

只有画面可用、目标清晰可见、条件满足、观察结果支持、证据不为空,并且置信度达到 0.88,才会判定通过。任何一步不确定,都不会加分。

请添加图片描述

4.3 使用 IMU 完成头控选择

头控选择最初出现过方向相反、轻微转头连续跳动、转过去再回正又触发一次等问题。最后我使用 screen 坐标系下的 Y 偏航轴,累计转动约 9°后切换一次选项;必须回正到约 3.5°以内才重新解锁,同时增加约 500 毫秒冷却时间。

const sensor = new Gyroscope({
  frequency: 60,
  referenceFrame: 'screen'
});

陀螺仪不可用时,应用会继续尝试姿态、动作传感器和侧边滑动。需要强调的是,IMU 只决定当前选中了哪个按钮,不能用于定位寻宝物品。

4.4 让语音和画面保持同步

倒计时最初出现过“语音还在说 3、2、1,画面已经进入游戏”的情况。后来我不再只依赖固定计时器,而是同时等待语音播放完成和数字达到最短显示时间,再切换下一帧;如果设备没有返回语音事件,再使用超时兜底。

成功提示也会预留完整播报时间。系统说完“眼前的某某就是本关目标,下一关即将开始”后,才进入下一关。

5. 交互与体验:怎样让玩家知道下一步做什么

眼镜端的屏幕空间有限,因此我尽量让每个页面只表达一件事。

场景选择页只告诉用户左右转头选择、单击进入;倒计时页只显示当前数字;寻找页只保留当前关卡、难度、目标或线索以及拍照区域;拍照后只显示“官方AI核对中,请稍候”,不再继续显示“正在寻找某个物品”,避免误导用户。

成功后,画面和语音都会明确说出识别到的具体物品。例如目标是“白色物体”,眼前是白色苹果手机,反馈会说:“太棒啦,找到了!眼前的白色苹果手机就是本关目标。下一关即将开始。”

核对失败时,默认选中“再拍一次”。用户可以转头切换到“结束寻宝”,再单击确认。游戏内双击侧边返回上一页,长按约 1 秒可以更换一次目标。

为了增加成就感,连续一次命中会显示额外能量奖励,通关后会展示总能量、称号和本局发现册。发现册只保存物品名称,不保存照片。
请添加图片描述

6. 调试与验证:Craft 预览、真机测试和问题修复

Craft 预览能够帮助我快速检查页面结构和状态流,但头控方向、相机、侧边触控和语音节奏等问题,必须戴到真机上才能真正发现。

请添加图片描述

图2:真机第一视角录屏截帧。画面中的绿色手形装饰成为当前任务的候选目标。

开发过程中,我重点解决了以下问题:

遇到的问题解决方式
不管拍什么都提示找到了改为盲观察加严格复核,并设置完整证据条件和 0.88 置信度门槛
识别失败却提示检查相机授权将相机异常和模型异常拆开,只有真正拍摄失败才提示相机问题
拍照后还显示正在寻找目标核对期间只显示“官方AI核对中,请稍候”
左右转头方向相反或太灵敏固定屏幕坐标系 Y 偏航轴,加入触发角、回正解锁和冷却时间
单击太灵敏,同时触发进入和返回对重复事件去重,并在双击判定结束后再执行单击
双击无法返回上一页游戏内双击回到场景选择,最上一级再交给系统返回
结束一局后头控失效应用运行期间复用同一个传感器会话,只按页面状态暂停响应
麦克风阵列常开移除环境感知和持续录音能力,只保留必要的相机、语音播报与头控
文字重叠、眼镜画面信息过多寻找页只保留关键信息,其余操作说明改用语音提示
上传后仍显示旧界面清理旧发布目录、提高版本号,并比对源码和上传包的核心文件摘要
请添加图片描述

图3:早期版本真机核对失败画面。最新版已经进一步精简失败文案,并支持转头选择“再拍一次”或“结束寻宝”。

目前项目已经完成以下验证:

  • 在 Craft 和浏览器预览中验证完整状态流程;
  • 使用 Rokid AI 眼镜完成真机录屏,验证场景选择、倒计时、现实目标、拍照与失败反馈;
  • 完整实跑 10 关,验证线索任务、连续发现奖励和本局发现册;
  • 自动化测试 46 项全部通过;
  • 完美连续完成 10 关时,获得 16 点能量、10 项发现记录和“完美观察家”称号;
  • 最终 AIUI 上传目录只包含 5 个运行文件,大小约 0.62 MB;
  • 源码与发布包中的核心 Ink 页面摘要一致,避免上传旧版本。

7. 成果与复盘:完成了什么,还准备怎样改进

目前「寻宝」已经从最初的简单寻物,发展为一款可以在 Rokid AI 眼镜上运行的十关制小游戏。它包含室内和室外目标池、难度递进、线索任务、拍照核对、语音反馈、换目标、连续奖励、本局发现册和通关称号。

请添加图片描述

这次开发让我印象最深的有三点。

第一,眼镜端界面不是文字越多越清楚。真正重要的是当前只告诉用户一件事,并让语音和画面相互补充。

第二,设备能力必须用在合适的位置。IMU 可以帮助用户选择菜单,但不能代替空间定位;相机和多模态模型才负责判断眼前究竟是什么。

第三,AI 核对不能只追求“聪明”,还要足够克制。如果证据不完整,就应该明确让用户重新拍摄,而不是为了让流程顺畅而随意判定成功。

后续我希望继续增加安全、合理的目标和线索,优化不同用户和不同环境下的头控手感,并根据更多真机反馈调整语音节奏和关卡难度。

如果 AI 眼镜不仅能在眼前增加信息,也能让人重新注意到现实中的颜色、形状和小细节,那么它带来的就不只是效率,也可以是一种新的生活体验。这正是我制作「寻宝」最想实现的事情。

更多推荐