My yard is dying, so I made an app for that

My yard is dying, so I made an app for that

我的院子快枯死了,所以我为此做了一个应用程序

How a yard work to-do list turned into a vibe-coding project. 一份院子工作待办清单是如何变成一个“氛围编程”(vibe-coding)项目的。

by Allison Johnson | Jun 13, 2026 作者:Allison Johnson | 2026年6月13日

When I returned to my computer five minutes after giving Gemini a lengthy prompt, I had two things: a functional app in a preview window, and a message about a bug. “~ Channel is unrecoverably broken and will be disposed!” Sounded bad! But right below it was a button to fix the bug. Pretty weird that I just instructed a computer to build a whole app for me with a single prompt, but it needed me to click a button to fix a bug. I did anyway, and in 233 seconds Gemini reported back that it had succeeded, using words like “blockages” and “race conditions.” I didn’t understand a bit of it. It was thrilling.

当我给 Gemini 发送了一长串提示词,五分钟后回到电脑前时,我得到了两样东西:一个在预览窗口中运行的应用程序,以及一条关于错误的提示信息。“~ 通道已无法恢复,将被销毁!”听起来很糟糕!但就在它下方有一个修复错误的按钮。我刚刚用一个提示词就让电脑为我构建了整个应用程序,结果它却需要我点击按钮来修复错误,这真是太奇怪了。但我还是照做了,233 秒后,Gemini 回报说它已经成功了,并使用了诸如“阻塞”和“竞态条件”之类的词汇。我一点也没听懂,但这令人兴奋。

This was my second or third attempt at vibe-coding an app, depending on if you count one that I never took out of the preview stage. The project that never fully launched was a web app with one job: to check if a local high-end grocery chain is running its annual Peach-o-Rama event. So far, no peaches. However you count it, the project at hand is more ambitious: an app that will help me master my unruly yard.

这是我第二次或第三次尝试“氛围编程”一个应用程序,具体取决于你是否算上那个从未走出预览阶段的项目。那个从未完全发布的项目是一个功能单一的网页应用:检查当地一家高端连锁超市是否正在举办年度“桃子节”(Peach-o-Rama)。到目前为止,还没看到桃子。无论你怎么算,手头的这个项目都更有野心:一个能帮我打理杂乱院子的应用程序。

All the best yard projects start with a natural language prompt in a chatbot.

所有最好的院子项目,都是从聊天机器人里的自然语言提示词开始的。

When my husband and I moved into our house eight years ago, we didn’t give a lot of thought to yard work. Sure, you mow the lawn and stuff, but don’t the shrubs and trees pretty much take care of themselves? We ignored the yard until the weeds moved in. The flower beds bordering the house and the boundaries of the yard quickly filled with weeds of biblical proportions. Clearly there was more to this whole “yard” business than we anticipated.

八年前我和丈夫搬进这所房子时,并没有太在意院子里的工作。当然,你会修剪草坪之类的,但灌木和树木难道不是基本能自生自灭吗?我们一直没管院子,直到杂草丛生。房子周围的花坛和院子的边界很快就被疯长的杂草占领了。显然,这整个“院子”生意比我们预想的要复杂得多。

We won a couple of battles with the weeds but eventually lost the war and called in a landscaper. His one-time visit let us leave the yard mostly on autopilot for a few years. It worked, but then the weeds started creeping back and the shrubs were showing signs of distress. When the weather started turning spring-ish this year, I resolved to figure out what was going on with our yard.

我们与杂草进行了几次斗争,但最终输掉了战争,不得不请来园丁。他的一次性上门服务让我们在几年内基本可以对院子采取“自动驾驶”模式。这招确实管用,但后来杂草开始卷土重来,灌木也出现了枯萎的迹象。今年天气开始转暖时,我下定决心要弄清楚我们的院子到底出了什么问题。

I had a rough idea where to start, but I wanted some help along the way and a method of organizing the chores that needed to be done. Why not make an app for that?

我大概知道从哪里开始,但我需要一些帮助,以及一种整理待办事项的方法。为什么不为此做一个应用程序呢?

I tried to be as descriptive as possible with my prompt, which was basically a list of demands: Help me manage a long list of yard care chores; Make recommendations; Take weather into consideration; Use image recognition to help diagnose problems with plants. I entered it all into Google’s AI Studio with the goal of creating an Android app that I could load on my phone and bring outside. You know, where the plants live. I figured it would take an hour or so and I could spend the rest of the day documenting the state of my yard and doing whatever the app told me to do.

我尽量让提示词描述得详尽一些,基本上就是一份需求清单:帮我管理长长的院子护理清单;提供建议;考虑天气因素;使用图像识别来帮助诊断植物问题。我把这一切输入到 Google 的 AI Studio 中,目标是创建一个可以加载到手机上并带到户外的 Android 应用程序。你知道的,就是植物生长的地方。我以为这大概需要一个小时左右,剩下的时间我就可以记录院子的状况,并按照应用程序的指示去做事了。

My calculus was a little off. Sure, I had a working app in a preview window within a few minutes. It was logically organized, with sections to manage different plant zones and an AI “plant doctor” where I could upload images from my phone. But it had a major color scheme problem.

我的算盘打错了。确实,几分钟内我就在预览窗口中得到了一个可用的应用程序。它的逻辑组织得很好,有管理不同植物区域的部分,还有一个我可以上传手机照片的 AI“植物医生”。但它的配色方案有个大问题。

Why, Gemini? For some reason, Gemini had decided on dark mode for my app, with dark purple and brick red accent colors. The text was illegible, but also, it was hideous. I suggested a white background with light green, pink, and blue colors, and reminded it to care about human readability. It returned with something more pleasing, and an enthusiastic greeting at the top of the app homescreen: “Welcome Back, Gardeneer!” Honestly, I like the adventurous edge of “gardeneer,” so I kept that bit.

为什么会这样,Gemini?出于某种原因,Gemini 为我的应用程序选择了深色模式,并配以深紫色和砖红色的强调色。文字不仅难以辨认,而且非常丑陋。我建议使用白色背景,搭配浅绿色、粉色和蓝色,并提醒它要考虑人类的可读性。它返回了一个更令人愉悦的版本,并在应用程序主屏幕顶部显示了一个热情的问候:“欢迎回来,园丁(Gardeneer)!”老实说,我喜欢“Gardeneer”这个词的冒险感,所以我保留了它。

I kept the basic structure that Gemini had come up with, too. I did have a few tweaks, like integrating live weather data rather than some weird climate presets that the AI had come up with. Apparently Gemini figured I could just pick the right “profile” to match the day’s weather conditions and it would adjust its watering recommendations accordingly. It seemed like an odd choice when live weather info is easy enough to call in via API, and it wasn’t the last time I’d have to remind Gemini of the difference between the physical world and a theoretical one. Otherwise, I beamed it up to my phone and started using it as quick as I could, too excited about shipping my first app to be bothered with iteration.

我也保留了 Gemini 设计的基本结构。我做了一些调整,比如整合了实时天气数据,而不是 AI 提出的那些奇怪的气候预设。显然,Gemini 认为我只需要选择合适的“配置文件”来匹配当天的天气状况,它就会相应地调整浇水建议。当实时天气信息可以通过 API 轻松调用时,这似乎是一个奇怪的选择,而且这也不是我最后一次提醒 Gemini 物理世界和理论世界之间的区别。除此之外,我把它传到了手机上,并尽快开始使用它,因为太兴奋于发布我的第一个应用程序,以至于没心思去进行迭代。

Except there were some critical things I’d missed when I’d glanced over the app on my laptop screen. I couldn’t edit chores once they’d been created, or schedule them for particular days. I could create profiles for individual plants and group them by zone, but couldn’t tie them to particular tasks or… do much of anything with them, really. There were separate tabs for one-off and recurring tasks, but every chore I added to the app seemed to disregard this sorting and landed on the recurring tab.

但我在笔记本电脑屏幕上浏览应用程序时,忽略了一些关键问题。一旦创建了任务,我就无法编辑或安排它们在特定日期执行。我可以为单个植物创建配置文件并按区域分组,但无法将它们与特定任务关联,或者说……实际上对它们做不了什么。虽然有单独的“一次性任务”和“循环任务”标签页,但我添加到应用程序中的每个任务似乎都无视了这种分类,全都跑到了“循环任务”标签页下。

This turned into a lot of tedious back-and-forth. I requested an update, waited for Gemini to implement it, deleted the old version of the app on my phone, and replaced it with the new one. I’d notice something else not working, like a date picker that doesn’t actually let you pick a date, and then have to go back to the chatbot. Rather than just an unruly yard, I now had an unruly app to tend, too. There’s a lesson somewhere in there, I’m sure.

这变成了一场繁琐的来回折腾。我请求更新,等待 Gemini 实现,删除手机上的旧版本,然后替换为新版本。我会发现其他无法工作的地方,比如一个实际上无法让你选择日期的日期选择器,然后不得不回到聊天机器人那里。现在,我不仅要打理杂乱的院子,还要打理一个杂乱的应用程序。我相信这其中一定有什么教训。

On the other hand, the AI plant doctor was very effective right out of the box. It’s essentially just a “Hey Gemini, figure out what’s wrong with this plant” button, and I uploaded a picture of an ailing rhododendron. After a minute or so it spit out a detailed report card on it.

另一方面,AI 植物医生从一开始就非常有效。它本质上就是一个“嘿 Gemini,帮我看看这株植物出了什么问题”的按钮,我上传了一张生病的杜鹃花照片。一分钟左右,它就吐出了一份详细的诊断报告。