跳到正文

Vibe Projects

一个人的 monorepo:六个由 AI 生成的项目——一个 Android agent 运行框架、一个按 hunk 审阅改动的 VS Code 扩展,以及四个小型 Android 应用——被刻意当作「模型现在能造出什么」的持续标尺。

Screenshot of Vibe Projects
编辑截图, 29 Sep 2026Vibe Projects ↗

这是什么

一个仓库里装着六个由 AI 生成的项目,以及每个项目由哪个模型所建的记录:一个原生 Android agent 运行框架,用你自己已登录的账号操作你自己的手机;一个按 hunk 逐块审阅 agent 改动的 VS Code 扩展;以及四个小型 Android 应用——一个能把亮度压到硬件下限以下的调光层、一个滚动距离统计器、一个吉他调音器,和一个用 Flutter 重写的离线力量训练记录应用。README 把这批东西称为「当前大模型能力的个人标尺」,而它的免责声明直白得少见:代码大量由 AI 生成、只经过非常有限的审查、只用于快速验证想法、不适合生产环境,风险自负。

谁做的GitHub 账号 steveimm,99 个公开仓库,账号建于 2018 年;主页填了个人站 steveimm.id,公司、所在地和简介都留空。这里 103 次提交全出自他手,用了个人 Gmail 和一个 lunit.io 域的地址。仓库从 2026 年 1 月一直跑到今天,还在动。

制作过程

9 个阶段
  1. 01

    一个标尺,也是一堆应用

    Vibe Projects 于 2026-01-25 以一次 initial commit 开场,同一天还打了一个带 APK 的 1.0.0 release。README 用两句话说明它是什么:一个用 AI 实现随机想法的地方,以及——更有意思的那句——「my personal benchmarks of the current capability of LLM」。它的项目表里有一列是本档案在别处见不到的:每一项由哪个模型所建。extradim 和 scrollmuch 记在 Claude Opus 4.5 与 4.8 名下;cherry-diff 是 Opus 4.8、Fable 5 和 GPT 5.6 Sol;Fretmate 是 GPT-6。这张表落后于仓库本身:它列了四个项目,而目录树里有六个,缺的恰好是最大和最新的两个——PocketPilot(1,195 个文件里占 913 个、37 MB 里占 19.2 MB),以及表里完全没有一行的 fitnotes++。其余数字都很小,也不遮掩:0 星、0 fork、0 watcher,一位作者在八个月里提交 103 次,而 2 月、6 月、7 月一次提交都没有。

  2. 02

    模型的名字写在提交尾注里

    Git 是查「谁干的活」的好地方,而这里它写下的是模型。19 次提交带共同作者尾注,每一条都是一个模型:Claude Fable 5 出现八次,Claude Opus 4.8 (1M context) 十一次。仓库还把 agent 配置当文件存着,而且是按项目而不是全局:PocketPilot 有一个 2,880 字节的 CLAUDE.md,AGENTS.md 是指向它的九字节软链接——和 DeepSeek Harness 的布置正好相反——外加七个 .claude/skills/,覆盖动作调试、autotune 循环、构建修复、prompt 调优和视觉 UX 调试,还有一个 architect 子 agent。cherry-diff 和 scrollmuch 各自带着自己的 AGENTS.md,分别 12.6 KB 和 8.8 KB。六个项目里有三个把自己建造时所用的指令一起发布了出来,这是这个仓库里最接近「方法」的东西。

  3. 03

    PocketPilot 占了这个仓库的 95%

    最大的那个项目是一个开源的 Android agent 运行框架,而 README 直接给出了它相对替代方案的理由:多数 phone-use agent 要么需要一台用 ADB 连着的电脑来驱动手机,要么跑在一个没有登录你账号的云端虚拟手机里。PocketPilot 跑在你手上这台手机上,对着你已经登录的应用,不需要电脑,也不需要重新登录。架构是一个 ReAct 循环,没有外部编排器。基础工具集刻意做得很小——mobile_action 负责点、输入和滑动,open_app 与 system_button 负责导航,scratchpad 与一个待办清单工具当作会话内工作记忆——子 agent 走 delegate_task,长期记忆以 markdown 形式按用户/设备/单应用三层存放(标注为初步)。有三个工具是逃离「点与滑」的出口:shell 跑 Android toybox 命令,一次一条,不支持管道与重定向;termux_shell 在设备上提供完整 Linux 工具链;browser_script 通过 DevTools 协议对真实 Chrome 跑 JavaScript,循环与重试都在一次工具调用内部完成。感知默认走无障碍树,可选截图模式;通过 Shizuku 开一个虚拟显示后,agent 可以在旁边那块屏上干活,前台仍然归你。

  4. 04

    两种技能,第二种才是有意思的那个

    PocketPilot 的技能分成两类。agent-skills 遵循 agentskills.io 格式、按需渐进加载,目前随应用打包,README 说发现机制仍在开发中。app-skills 是作者自己的设计:每个包一份 SKILL.md,教 agent 怎么操作某一个具体应用,每当那个应用切到前台就自动加载。树里装了十七份——Chrome、Photos、Calendar、Files、Settings、VLC、OsmAnd、Markor、Tasks、OpenTracks、Retro Music、Broccoli、Audio Recorder、Expense、Simple Calendar、Simple Gallery 等。想法很朴素,后果很实在:通用 agent 保持通用,而关于某个应用的知识住在它旁边的一个文件里,而不是塞进系统提示词。

  5. 05

    一个会去改 agent 自己的评测回路

    仓库里有一个 eval/ 目录,README 说明了它的用途:拿一套 AndroidWorld 任务去测这个 agent,让一个 autotune 装置分析失败,由它提出 prompt、工具和技能层面的修改,然后再跑一遍。这条回路的零件都以目录形式在场——eval/tests、eval/results、eval/analysis、eval/tools,外加一个带回放模式和自带测试的 inspection_tool/——而 .claude/skills/ 里有一个 autotune 技能挨着一个 autotune-loop,两者都挂着参考材料和脚本。同一份 README 还写明了安全姿态,对一个业余项目来说绝对得少见:银行类、验证器类和加密货币钱包类应用被硬性拦截,没有任何设置可以覆盖;不熟悉的应用按应用逐个询问(始终允许/仅本次会话/拒绝);标了 FLAG_SECURE 的界面在设计上对感知不可见;并且没有遥测、没有第三方分析,轨迹留在设备本地。

  6. 06

    另外五个

    cherry-diff 是唯一一个不是 Android 应用的:一个 VS Code 扩展,按下开始后为受跟踪的文件拍一份基线快照,此后每一次编辑都变成一份按 hunk 逐块接受或拒绝的审阅。它在构造上就是 agent 无关的——监听编辑器与文件系统事件,所以没有任何东西需要与它集成——而且不需要 Git,因为拒绝是从它自己的基线快照恢复的。有两个细节看得出是真用过:每十秒轮询一次,以捕获 VS Code 监听器漏掉的新建与删除,包括被 files.watcherExclude 屏蔽的路径;拒绝是逐字节精确的,所以二进制和非 UTF-8 文件能原样往返,UTF-8 BOM 也不会丢。四个 Android 应用都小而具体。extradim 在屏幕之上画一层软件调光,让亮度能压到硬件下限以下,跑在前台服务里,配一个快捷设置磁贴和触摸穿透。fretmate 是给 Android 15 及以上写的吉他调音器与节拍器,33 个测试通过、analyze 干净、格式检查通过——而 README 明说它的 Android 构建从未验证过,因为没装 SDK。fitnotes++ 用 Flutter 重写 FitNotes(一个离线、无账号的力量训练记录应用),依据是一份逆向出来的参考文档,涵盖数据库结构、动作类型、图表指标、Brzycki 单次最大重量公式和 CSV 格式;M0 到 M4 已完成,两个自定义功能尚在计划中,但它们的结构接缝已经预留好了,所以落地时不需要迁移。

  7. 07

    滚动统计器,或者说当 API 说谎时怎么办

    scrollmuch 统计你在所有应用里滚了多远,以米为单位,并给出单应用明细。有意思的地方在测量本身。Android 在滚动事件上暴露 scrollDeltaX 和 scrollDeltaY,而 README 直说:多数应用报的是 0,或者只有一个方向的正负 1,而不是真实像素距离。于是距离按可信度分三层推导:当上报的增量绝对值大于 1 时就采用它;否则把该应用的绝对滚动位置与上一次做差,并且只在滚动器报的是像素级位置、且变化不是瞬移也不是切换了滚动器时才采信;当某个应用完全给不出可用像素信号时,退回每手势约五厘米的固定估算。这是一个小应用,它的核心难题是一个平台 API 并不做它名字所说的事,而答案被写进 README,而不是藏在代码里。

  8. 08

    免责声明说的,和仓库里装的

    根 README 不吹任何东西。它说这些项目由 AI 大量生成、作者只对代码做了非常有限的审查、它们只为快速验证想法而存在、不适合生产使用、风险自负。那句话和这个仓库值得并排读,而不必互相消解。根许可是 MIT,PocketPilot 是 Apache 2.0。而表里没提的 PocketPilot——带着一个含隐私政策和商店截图的 Play Store 发布目录、一份 21.8 KB 的架构文档、一份状态机文档、一套带结果记录的评测装置、十七份单应用技能文件和一个回放检查工具。这些都不与「审查有限」矛盾:一个仓库完全可以同时是审查有限、打包讲究的。值得留意的只是那句声明针对的是两者中的哪一个。

  9. 09

    不体面的那一半

    仓库之外,没有任何人写过它。0 星、0 fork、0 watcher,而它历史上仅有的两次非作者产生的事件,都是 ImgBot 的 pull request——一次在仓库开张当天合入,一次自 2026-08-24 起一直开着,两次都是在报告图片被优化了。唯一的 release 1.0.0(带 APK)在第一天发出,此后没有再发过。有几件事被明确标为未完成:PocketPilot 的长期记忆与技能系统标着「初步」,fitnotes++ 在等两个计划中的里程碑,fretmate 则从未为 Android 构建过。而赋予这个仓库意义的那份模型归属,是自报的:提交尾注是它唯一独立留下的痕迹,而尾注只提到了 README 所列模型中的两个。

相关档案

全部档案 →