利益相关声明:作者与文中产品有直接的利益相关(开发者、自家产品等)

Matrix 首页推荐 

Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。 

文章代表作者个人观点,少数派仅对标题和排版略作修改。

利益相关声明:作者是文中产品 Await 的开发者。


我女友在网上看到一张 ADHD Bingo 卡片。它把一些日常自我管理事项做成 bingo 格子:规律睡眠、少刷信息流、运动 15 分钟、晒太阳、刷牙、出门……每完成一项,就划掉一个。

它是手绘的,质感很好,但只存在于截图收藏夹里。

我看到它的第一个念头是:这不就是一个主屏小组件该有的样子吗?点一下格子,完成;零点自动清空,明天重来。如果它真的放在主屏上,每天打开手机都能看到,就会和收藏夹里的那张截图完全不一样。

我打开 Codex,用自己做的工具 Await 复刻了一版。基础结构大概一分半,再调几轮:用手绘网格替换方正边框,用荧光笔替换完成标记,加上每天零点重置。前后五分钟,它就从一张纸上的想法,变成了真的放在我女友 iPhone 主屏上的小组件。

放到 iPhone 主屏上的 ADHD Bingo 小组件
放到 iPhone 主屏上的 ADHD Bingo 小组件

那些太小、又太值得存在的点子

有很多点子就停在这里:聊天记录里、截图收藏夹里、某个「有空再做」的念头里。

不是不够好,而是太小了。小到不值得专门做一个 App,但如果真的存在,又会是每天都用得到的小作品。

iPhone 主屏上的小组件,可能是离人最近、也最小的一种界面。问题是,正常的 iOS 开发路径对这类小作品太重了。哪怕只是想在主屏上放一个自定义的小界面,仍然要面对 Xcode、工程结构、WidgetKit extension、打包、读完仍然不知道怎么回事的文档……这些准备工作加在一起,常常比想法本身还要重。

对普通用户来说,这条路几乎不存在;对开发者来说,也往往会因为麻烦而搁置。

Await 想做的,就是缩短这段距离。

描述出来,放上去

Await 是一个 iOS App,可以用 TypeScript 创建真实的 iPhone 小组件。它不是把网页塞进小组件,也不是生成静态图片,而是可以交互、有状态、真的能放在主屏上长期使用的小组件。

它的工作方式很接近今天的 vibe coding 流程:把想法告诉 Cursor、Claude Code、Codex 这类 AI 工具,让它写出 TypeScript;再把代码放进 Await,在 iPhone 上实时预览,调整,然后放到主屏。

一个基础小组件长这样:

import {Text} from 'await';

function widget() {
	return <Text value='Hello World'/>;
}

Await.define({widget});

你可以让 AI 把这段改成倒计时、状态卡片、ADHD Bingo,或者任何你能说清楚的作品。对于一个想快速落地的小工具来说,这比从零开始配置 Xcode 工程要轻得多。

不会写代码的人也可以用。把想法告诉 AI,让它写,你负责看预览、说「这个格子再大一点」「颜色换成这个」。

现阶段,Await 没有把对话式 AI 直接做进 App。

AI coding 工具本身还在快速变化,模型、编辑器、工作流都会继续变得更好。Await 更想专注在它们之后的那一步:把 AI 写出来的 TypeScript,变成可以在 iPhone 上预览、调整、放到主屏、甚至打包分享的小组件,让这些小作品最终真正落到 iPhone 上。

写完之后,还可以继续调

不是所有调整都适合交给 AI。字号差一号、颜色深一点、间距松一些,这些改动说清楚比直接拖一下滑杆要麻烦得多。

代码写完之后,Await 可以生成可调整参数的面板
代码写完之后,Await 可以生成可调整参数的面板

Await 支持把代码里的参数标记成可调节项,App 里会自动生成对应的控制面板:文字、字号、颜色、开关,拖动或点击就能改,代码同步更新。

这一步同样可以交给 AI。跟它说「把标题、颜色和字号都标记成可调节的」,它改完代码,面板就出现了。

面板和代码是双向同步的:你在面板里改了一个值,代码里对应的参数也会随之改变。

这样,一个小组件可以先由 AI 或开发者搭出基本结构,再由使用者在面板里仔细调到自己想要的样子。

我录了短视频,展示这些小组件在主屏上的效果,以及编辑、预览、调整的过程:

小,但不只是信息卡片

ADHD Bingo 是一个生活化的例子,但 Await 能承载的不止于此。

它可以是倒计时、服务状态面板、纪念日提醒、常用动作的主屏入口。这些是最容易想到的「信息和按钮」。

也可以是连续弹奏的 MIDI piano 和 drum pad;是带翻页动画的翻页时钟和阅读器;是 2048、推箱子这样按步骤推进的小游戏;是可以自定义秒针样式的模拟时钟;是高帧率 GIF 动画;也是功能完整的 Apple Music 播放器。

这些例子在市面上的小组件工具里并不常见。它们更像是在说明:一旦小组件可以承载更复杂的界面、状态和交互,它就不再只是一张静态信息卡片,而可以变成一种很小、很贴近生活的作品。

Await 可以自由地创作各种小组件
Await 可以自由地创作各种小组件
Await 小组件的可能性
Await 小组件的可能性

当然,小组件不是完整的 App,iOS 仍然会限制小组件的内存和刷新频率。但我反而觉得这是它的魅力。

它不是让你把 App 缩小,而是让你重新想清楚:哪些作品值得常驻在主屏上,哪些信息应该在打开手机那一刻就被看见,哪些动作可以不再绕进 App 里。

做得不错,也可以分享出去

Widgy 和 Scriptable 社区里有一种很有活力的现象:有人认真做一套小组件包,放到网上分享,甚至卖几美元。

Await 也希望让这种创作更容易发生。一个小组件包可以包含小组件本身、图片资源、参数设置,以及作者设计好的自定义面板。哪些文字可以填写,哪些颜色可以选择,哪些开关或数据源可以配置,都可以由创作者在制作时决定。

这样分享出去的不是一张截图,也不是一段需要别人自己读懂的代码,而是一件可以安装、配置和使用的作品包。它保留了作者的审美、结构和想法,也让认真做小组件的人有机会把作品分享给更多人。好的作品,不仅值得被分享,也值得获得收入。

换句话说,小组件包有价值的地方,往往不是代码本身,而是某种已经存在的创作资产、数据资产或服务能力,被做成了更贴近手机使用习惯的主屏入口。

比如插画师可以把一组角色、壁纸或视觉风格,做成主题时钟、倒计时、音乐控制器、每日签语小组件;用户买到的是这套审美在主屏上的延伸。

长期整理小众信息的人,也可以把自己的数据源做成小组件:演出开票、球鞋发售、游戏活动日历、潮汐和钓点、某个社区的内部日程,或者带有红包 CPS 的优惠信息入口。用户买到的不是一个空模板,而是持续维护的数据和更方便的查看方式。

如果是一个课程、社群或服务,也可以把打卡进度、活动倒计时、会员提醒、关键状态做成专属小组件。它不一定要服务很多人,但只要对那一小群人足够有用,就有被付费支持的理由。

现在可以下载

 

接下来我会继续做更多有意思的示例,让小组件包更适合在社区里分享和传播;也会继续做更多面向 AI coding 的教程,让更多不熟悉开发人也能用 Await 做自己的小作品。

如果有人用 Await 做出了好作品,我也希望把它们展示出来,让创作者有被看见的机会。

我希望 Await 最后留下的,是一种更轻的创作入口:不必很大,但足够好看和好玩,也足够贴近自己每天使用手机的方式。

> 关注 少数派小红书,感受精彩数字生活 🍃

> 实用、好用的 正版软件,少数派为你呈现 🚀

19
9