全文约 2000 字,看完约 2~3 分钟。
一个给我推拿的视障师傅,靠摸外卖包装认自己的那份。这件事,我花了一周,0代码,做出了一款开源的无障碍 APP。
我是个产品经理,长期对着电脑工作。肩周炎是职业病,不定期得去推拿理疗。
上次治疗中,和视障理疗师聊天,得知他生活里一个不便的问题:取外卖。
他为了避免拿错别人的外卖,只点同一家店,靠摸外卖包装的特征来辨认自己那份。
我很感慨,原来我们早已习以为常的场景,对他们来说,却是诸多不便。
据了解中国有 1700 万视障人士,取外卖这种小事,他们每天都要靠摸。
我想用 AI 为他们做点事情。
半年前我自己用TRAE vibe coding了一个微信小程序「虫记」,这个过程让知道与AI协作并不能简单地激情口喷,为了让AI做出更优质更稳定的东西,必须在开发前先敲定很多信息。从想法到上线:全程免费AI“零代码”上线小程序。
所以基于ai first,agentic engineering,loop engineering,这类先进的ai coding思想,我让TRAE先创建了一套基础文档:
SOUL.md定 AI 人格:
AGENTS.md写项目操作手册。
PROJECT.md写项目级知识库。记录架构决策、已知问题、技术债务、经验教训。 供所有 Agent 接手时阅读,避免重复踩坑。
USER.md定义慧眼 SmartEye 的目标用户特征和交互约束。所有功能设计必须以本文档为第一准则。
MEMORY.md记踩坑教训——跨会话的决策、踩过的坑、下次别再踩。
PRD.md和CHANGELOG.md也不能少。
文档建完,项目目录也搭好:

做项目先把规矩立好,这是磨刀不误砍材功。
文档到位,功能还得打磨。一到真机上,问题不断。
第一个坑:语音播报在 OPPO 上哑火了。
原方案用 flutter_tts,调用系统 TTS 引擎。模拟器里跑得挺好,拿到真机一测——speak() 返回成功,但扬声器半个字不响。系统设置里的 TTS 测试能播,第三方应用就是绑不上。
折腾了大半天,最后换了个笨办法:让AI预录 16 个 MP3 音频文件,用 MediaPlayer 顺序播放。文本拆成片段,映射到对应的音频文件,拼起来播报。
听着笨,但稳定。视障用户最怕的是关键时刻没声音,方案土不土倒不重要。
第二个坑:权限拒绝了,APP 直接死循环。
用户第一次安装,拒绝了摄像头权限——APP 没有任何反应,死了一样。视障用户听不到语音提示,完全不知道发生了什么。这是最严重的问题。
我紧急加了权限检测:拒绝时语音引导去系统设置开启。永久拒绝的,直接跳转设置页面。
这条教训我写进了项目文档:视障工具绝不静默失败,任何异常路径都必须有语音反馈。

第三个坑:多单识别要么哑巴,要么乱播。
画面里同时出现好几张外卖单,要么不播报,要么只播一个,偶尔几个语音叠在一起成一团乱码。跨帧合并、坐标去重、播报优先级,和 AI 来来回回调了好几轮才逐步稳定。
还有个细节我一开始根本没想到。原本设计的是"单击拍照,识别,播报"。做到一半突然意识到盲人用户看不到画面,他怎么知道什么时候该按快门?这个"手动触发"的设计,本身就对盲人不可行。
改成持续扫描,每 2 秒自动拍一次,连续两次结果一致才播报。后来小票倒着放识别不出来,盲人也判断不了方向。那就同时识别原图和旋转 180 度后的图,合并结果。
所有迭代的功能都是实际测试中发现问题,跟 AI 一起解决的。
夸一夸TRAE WORK的多端并行开发
作为产品经理每天琐碎的杂事多,不可能钉在工位上。TRAE WORK 可以手机绑定电脑,通勤路上发句"把多码识别的冷却逻辑改一下",开完会回来一看,改好了。非常方便。

碎片时间把版本从 v0.4 推到 v0.7.2。现在能自动测光,环境一暗就开手电,盲人用户判断不了亮度,得 App 自己判断。

说了这么多技术的事,这个 App 用起来到底什么样?
首次启动有完整语音教程,上滑屏幕回听最近记录。单击重听上次结果,三击重新识别,下滑听操作指南。全程不需要屏幕。
视障用户打开 App,举起手机对准外卖桌。摄像头扫到小票,两秒内语音播报:
"美团外卖 65 号,左下。"
不光念出取餐码,还告诉你它在画面的哪个位置。盲人知道这个,才更方便伸手去拿。
画面里多个外卖单同时出现?它会逐个播报,不重叠、不遗漏。小票倒着放?180 度旋转识别照常读。手机移开后想再找,App 会根据上次位置引导:"请向左下方移动手机。"

语音播报默认2.0x倍速,很多视障朋友还能听3倍速。
已兼容主流的外卖平台:美团、淘宝、京东、饿了么、朴朴、永辉,足够覆盖绝大多数外卖。
一个人能做的很有限。
取餐码识别只是第一步。药盒上的说明书、遥控器上的按钮、快递单上的信息,这些都需要更多人参与。
开源,是希望有更多人看到这个需求,一起把它做得更好。
如果你身边有视障朋友,或者你本来就对无障碍感兴趣,可以到仓库把 APK 下下来试试。Android 7.0+,无线调试或 ADB 装就行。
Github:
https://github.com/pomelo56/smart_eye
Gitee:
https://gitee.com/free-style_2_0/smart_eye
![]() | ![]() |
如果你认识视障的朋友,也可以推荐给他们用用。
另外,这个项目同时报名了 TRAE AI 创造力大赛。如果你正好在逛论坛,请帮忙投一票:https://forum.trae.cn/t/topic/74512