颈动书空与 AIUI 开发实践

做“颈动书空”时,我想尝试一件有趣的事:戴上 Rokid AI 眼镜,先看汉字笔画的提示,再轻缓地转动头部,在眼前写出自己的轨迹。

这个想法最后变成了一个可以运行的 AIUI 应用。这里的 AIUI,是 Rokid 面向带显示屏 AI 眼镜的交互式智能体开发框架。更想和大家分享的,是它的开发方式:把想要的功能和操作过程讲清楚,让装有 AIUI skill 的 Agent 帮忙实现,再拿到眼镜上反复调试。

下面这段 GIF 就是真机书写过程。横画之间逐渐出现的竖画,来自实际头部运动。

真机头动书写

真机录屏裁剪,01:25.8—01:32.0,保持原速,保留实际书写偏差。

AIUI 是什么

这里的 AIUI 指 Rokid 面向带显示屏 AI 眼镜的交互式智能体开发框架。它将智能体定义、交互界面、运行逻辑,以及设备和 AI 能力组织起来,让需求能够落到可操作、可反馈的应用流程中。可以结合 AIUI 官方总览 理解这四部分的关系。

AIUI 的四个组成部分

ImageGen 生成的概念示意图,帮助理解框架组成,非运行截图。具体应用按需选择设备和 AI 能力。

开发时还会接触两个相关名称:aiui-dev skill 是供编码 Agent 阅读的开发说明,帮助它按 AIUI 的结构和 API 写工程;AIUI Studio 是导入代码、预览、调试、打包和提审的工作台。框架负责组织应用,skill 帮助 Agent 实现,Studio 承接开发与交付流程。

以颈动书空为例:用户选中一个字,页面进入教学;用户开始练习,界面呈现画布和书写工具;头部运动通过陀螺仪变成输入,Canvas 再把轨迹显示出来。这些能力需要在同一个交互流程里协同工作。

AIUI 与 Intelligent UI 有什么关系

本文所说的 Intelligent UI(智能界面)是一类交互方向:系统结合用户的需求和上下文,呈现合适的信息、操作和反馈,让人可以继续确认、调整并完成任务。Rokid AIUI 则提供了一套面向设备应用的具体开发框架。两者处在“希望实现怎样的体验”与“用什么框架把体验做出来”这两个层面。

当前相关探索中,Generative UI(生成式界面)是一条具体路线。例如,微软研究院的 Promptions 会根据用户输入动态生成可调整的选项,帮助用户更精确地控制 AI 回应。智能界面的实现还可以使用预先设计的页面、组件和状态流转;动态生成整张页面并不是每个应用的必选项。

下面是我结合颈动书空整理的对照,比较的是设计关注点与本项目的落地方式:

比较角度Intelligent UI 关注的体验颈动书空用 AIUI 怎样实现
用户意图理解此时想做什么,并给出合适入口选字、跟学、练习和重写分别承接不同需求
界面变化随任务阶段呈现所需信息和操作教学显示笔画提示,练习显示画布和工具,完成后显示反馈
持续交互用户能确认、调整,并看到结果触控执行提笔、撤销和回中,Canvas 持续呈现轨迹
设备协作由具体产品选择输入与执行能力陀螺仪读取头部运动,页面状态与真实输入共同驱动反馈

Intelligent UI 与 Rokid AIUI 的关系

ImageGen 生成的概念示意图,说明交互方向与开发框架的关系,不是产品性能比较。

这里还要区分开发阶段和运行阶段:开发时,我让装有 AIUI skill 的 Agent 根据自然语言协助生成、修改工程;运行时,当前颈动书空按照预先定义的页面状态和真实传感数据响应操作。本文展示的功能没有依赖大模型每次重新生成界面,也没有宣称大模型在实时识别书写字形。

带着这个区分,再看下面的需求描述、Agent 协作和真机调试过程,就更容易理解每一步分别解决什么问题。

先把想法说成可以操作的需求

最初,我只是想把汉字学习和头部动作结合起来。真正开始做时,需要把这句话展开:给谁用,进入后先看到什么,怎么选字,什么时候跟学,什么时候自己写,写错以后怎么办。

我把这个项目的需求整理成了一段可以交给 Agent 的描述。下面是按当前体验归纳的可复用版本:

请基于 AIUI,为 Rokid AI 眼镜制作“颈动书空”。它是短时的汉字书写体验,先从简单字和基础笔画入门。

首页提供每日一字、学过的字、探索字库和校准。选字后先进入教学:同时显示整字参考与当前笔画,提示方向,再由用户确认下一步。

练习时显示书写画布,用陀螺仪采集头部运动。必须区分提笔和落笔;提笔时移动光标不留墨。提供撤销、重写、回中和完成。

按眼镜的单色显示和触控方式设计。每一步都要有明确状态和下一步操作。先做通一个简单字的完整流程,再逐步扩充字库。

这样的描述里,既有功能,也有验收条件。“能画线”还不够,“提笔移动不留墨”“回中保留已有笔画”“重写前再次确认”才说清了我要的使用体验。

开发的第一步,是把需求讲具体。 对我来说,这正是自然语言协作容易上手的地方:先从自己能理解的场景和动作出发,把技术实现交给 Agent 协助完成。

让 Agent 先装上 AIUI skill

要让 Agent 做对 AIUI 项目,需要先让它了解这个框架的写法。AIUI 官方提供了 aiui-dev skill,其中包括项目结构、Ink 页面、组件、设备 API 和调试检查等说明。安装入口见 AIUI 官方项目。

支持相应 skill 安装方式的编码 Agent,可以使用官方给出的命令:

npx skills add https://github.com/yodaos-project/AIUI/tree/main/skills/aiui-dev

也可以把官方链接交给 Agent,请它协助安装并确认已经读取。随后明确告诉它:本次开发按 aiui-dev skill 执行,涉及陀螺仪、Canvas、触控事件时,先查对应说明,再写代码。

我会把这样的要求放在开发指令开头:

先读取 AIUI 的 aiui-dev skill,确认目标是 Rokid 眼镜上的交互页面。根据下面的功能需求,先列出页面状态、输入方式和验收步骤,再生成工程。遇到不确定的 API,先查官方资料。

skill 让 Agent 有了更贴近平台的参考。例如,Ink 页面怎样组织,哪些组件可用,设备事件如何读取,都可以从具体说明入手,而不是仅凭熟悉的网页开发写法去猜。

AIUI Studio 也提供 AIUI CODING 入口。习惯在本地和 Agent 协作,可以先生成本地工程;希望在工作台里继续修改,也可以使用其对话开发能力。具体入口可参考 官方 QuickStart。

把功能逐步做成界面和状态

我没有把字库、教学、自由书写和反馈一次性全部堆进去,而是围绕“选一个字,学一遍,写一遍”逐步完善。每做完一步,就告诉 Agent 预期行为和实际差异,再让它修改。

颈动书空真机首页

真机首页。用户可以从每日一字进入,也可以浏览字库。

工程里,AGENTS.md 描述智能体,app.json 注册入口,.ink 页面承载界面和交互。页面内部用首页、字库、教学、练习、结果等状态组织流程,由 this.setData() 更新反馈。

核心能力的连接也很清楚:触控负责选字、选工具和确认,Gyroscope 提供头部运动数据,Canvas 绘制笔画与轨迹。教学时把动作对应到当前笔画的进度;练习时记录用户自己的书写路径。

这些内容由 Agent 协助落到工程中,我则持续检查它是否符合最初的需求。比如,教学结束后应由用户主动进入练习,不能让一次触控意外跨过两个阶段。

从描述需求到审核上架的 AIUI 开发流程

以颈动书空为例整理的开发路径。每轮修改都回到可运行的体验上验证。

戴上眼镜调试 才能知道哪里要改

能在预览里显示,只是开发过程中的一步。颈动书空依赖真实头部运动,必须戴上眼镜检查方向、幅度、按键和显示效果。

教学是否容易跟上。 眼前同时出现整字和当前笔画,小示范负责提示起点和方向。用户做小幅动作,界面给出进度,再确认下一步。

真机逐笔教学

真机录屏裁剪,00:24.5—00:30.3。以“王”字展示逐笔教学。

提笔后是否真的停止记录。 早期连续轨迹的原型容易把笔画连起来。我把问题进一步描述给 Agent:需要明确的提笔与落笔状态,提笔时允许移动到下一笔起点,已有墨迹保持不变。

真机提笔移动

真机录屏裁剪,00:44.0—00:48.5。提笔后移动,已有墨迹保留。

一次动作是否只执行一次。 滑动选工具后,如果释放动作又触发确认,就会误操作。工程逐步加入了输入去重、滑动后的确认抑制和焦点同步;方向映射则通过校准入口调整。

我给 Agent 的反馈尽量具体:在哪个页面,做了什么,实际发生了什么,希望变成什么。例如“练习时滑动只切换工具,不要顺便执行;回中只移动光标,不要清空笔画”。这样的问题描述,比一句“操作不太对”更容易变成有效修改。

现有交互回归检查已经覆盖提笔续笔、撤销、回中、重写确认和重复触发等逻辑;真机录屏补充展示实际操作。不同佩戴者的动作幅度、长时间漂移和舒适度,还需要继续验证。

用 AIUI Studio 导入 调试和提交审核

完成本地开发后,我把代码整理成独立的上传目录,再通过 AIUI Studio 导入。目录里保留页面配置、代码和运行所需的素材,历史安装包与无关制作文件另外归档。

当前中国站工作台可以看到 AIUI CODING、代码、模拟调试、真机调试和提审等入口。对我来说,它把“本地写好的项目”接到了设备验证和商店审核上。

这条路径可以分成四步:

  1. 导入工程。 在 AIUI Studio 新建智能体时选择本地文件夹导入,确认入口和素材完整。
  2. 预览与打包。 先检查页面和触控流程,再在真机调试页补全名称、类别、意图描述等信息,打包保存。
  3. 设备验证。 按工作台及配套 App 的当前指引更新调试资源,在眼镜上走完核心流程。继续修改后,再打包验证对应的新版本。
  4. 准备提审资料。 填写功能介绍、开场白、预览素材和更新日志,确认版本与实际功能一致,再提交审核。若被退回,就按原因修改、验证并重新提交。

AIUI Studio 提审页面

AIUI Studio 当前提审界面,仅展示本项目相关的功能区域。

截至本文整理时,中国站提审页要求 3—5 个预览素材,至少有一张图片和一段视频,支持 JPG、PNG 和 MP4;具体以提交时页面提示为准。文章里的 GIF 用来方便阅读,提审时仍需准备规定格式的视频素材。

“意图描述”也值得认真写。它要说明用户在什么场景下需要这个智能体、使用前提是什么、常见需求是什么。我会围绕“想体验汉字书写”“先跟学再自己写”来表达,避免只写一句空泛的应用名称。

整理文章时,我在 AIUI Studio 中核对到“颈动书空”显示为已上架。智能体 ID 为 ce0854a377874add8150673cff623c60。后续迭代仍需要按实际提交版本完成验证与审核。

开发变容易以后 更要把体验想清楚

颈动书空现在已经有每日一字、学习记录、教学、练习和字库浏览等功能。本地工程的字库扩展到 2,042 个完整汉字条目,但入门体验仍优先选择简单字。

真机字库浏览

真机录屏裁剪,02:28.5—02:34.0。通过横向字库继续探索汉字。

AIUI 和 Agent 让开发的起点更接近“我想做什么”。我可以用自然语言描述功能,让 Agent 按 skill 组织页面和设备调用,再通过预览、真机反馈和工作台审核逐步完善。

接下来,我想继续改善小幅动作下的光标控制、校准和中英文引导,让第一次体验更轻松。应用适合在安全、静止的环境里短时使用;反馈分数只用于回看本轮操作,不代表专业书法水平或学习效果证明。

从一个汉字的好奇出发,把需求讲清楚,把作品做出来,再亲自戴上眼镜试一遍。这是我使用 AIUI 开发颈动书空时,最愿意分享的一段经验。

项目与素材来源

作品名称:颈动书空 / Neck Writer。本文真机截图与四段 GIF 均来自作者提供的同一段视频;仅裁剪和转码,保持原速,未补画交互。封面与流程图为排版示意,Studio 配图仅保留本项目操作区域。

开发方法参考 AIUI 官方项目、aiui-dev skill及 QuickStart。中国站与 Global 站的入口和文案可能不同,按所用站点操作。

笔画数据使用 Hanzi Writer Data,上游来自 Make Me a Hanzi,遵循 Arphic Public License。字体欣赏素材来自 Noto Serif SC 与 Ma Shan Zheng,遵循 SIL OFL 1.1。

更多推荐