早上七点,阳台上的花还没醒,一份计划已经写好了。它只有一张图,最上面三分之一是空的——留给手机锁屏的时钟。看一眼,放下手机,去浇水。这就是全部交互。

做这个东西的人,阳台上养着两株印度木槿、一株绿萝、茉莉、蓝花丹、薄荷、圣罗勒和长寿花,全是盆栽。他每天早晚各浇一次水,从不间断。但他说,习惯不会抬头看天。它会在暴雨前一小时照常浇水,不知道下午要飙到38°C,更不会翻到叶子背面去找蚜虫。

打开网易新闻 查看精彩图片

他不想再做一个让人泡在里面的App。花园的意义本来就在于别盯着手机。于是他做了 Tendril,一个"你几乎不用打开"的花园助手。

一周计划,从天气开始

每周日早上7点,Tendril 读一遍天气预报,然后由一台跑在他自己机器上的小型开源模型写出这一周的计划。规则很克制:每天最多两个小任务,每个任务不超过六个词。

每天早上它还会再看一次天。如果夜里要下雨,或者气温要猛涨,它只悄悄改掉今天这一天,不动其余安排。

计划最终呈现为一张图,专门按手机锁屏尺寸来做,顶部三分之一留白给时钟。扫一眼,人就回到阳台上了。

说一句就行,它自己记账

告诉它你做了什么,方式有两种:点一下"完成",或者按住麦克风说一句,比如"浇了辣椒,圣罗勒叶子下面有蚜虫"。

它会勾掉浇水这件事。而蚜虫是严重问题,所以它会重排这一周剩下的安排,把苦楝油提到最前面。语音支持英语和印地语。

它一天只提醒一次。晚上6点之后,如果还有事情没做,页面上只出现一行温和的提示,仅此而已。没有连续打卡,没有负罪感。

没有账号体系。设置城市、添加植物、扫一个二维码、加到主屏幕,就结束了。

一个3B模型的小毛病

整套东西没有任何花哨的部分,这是刻意的。所有需要"思考"的环节都跑在同一台机器上:Python 和 FastAPI 搭应用,SQLite 存花园的记忆;Qwen 2.5(3B)通过 Ollama 在本地运行,负责写周计划和读笔记;faster-whisper 在 CPU 上把语音转成文字;Open-Meteo 提供预报和城市搜索,免费且不需要 API key;Pillow 负责画那张计划图,图里每一个图标——太阳、云、小叶子——都是代码画出来的;Docker Compose 一条命令全部拉起。

3B 模型很小,小到能跑在笔记本上,但也带着一些习惯。第一次真正跑起来,教给他的东西比所有测试加起来都多:

  • 它把指令原样抄进了回答。他要求每个任务配一句简短理由,结果收到的是"每天最多2个任务;安静的日子更少也可以"。
  • 它把示例抄到了每一天。他给了一个样例日,写着"在根部浇透",下一版计划里,两株植物连着七天全是深浇水。
  • 它很慢。第一版计划花了242秒。

解决办法不是换更大的模型,而是把活拆开。模型只做它擅长的事:给出多样、针对具体植物的建议,以及理解乱七八糟的笔记。剩下的交给普通代码。

天气规则——降雨概率超过60%就不浇水、超过35°C就遮阴、连续三天干燥后来一次深浇——在模型输出之后统一套用。重复项被裁掉,抄来的理由被换成真实的天气说明。

要求模型输出紧凑的 JSON 也帮了忙。那些缩进大约占了三分之一的 token。现在一份周计划大约100秒,对一个早上7点安静运行的东西来说够用了。

不让模型乱来

每一份计划都必须以规范的 JSON 返回:每天最多两个任务、动作不超过六个词、只能出现他真正拥有的植物、每个日期都要填上。服务器用 Pydantic 逐条校验。如果有问题,它会再问一次,并明确指出错在哪,比如"未知植物'Rose'"。如果还是不行,一个简单的规则规划器顶上。所以无论模型是否可用,计划总会出来。

语音笔记也加了一层小保险。有一次测试,模型把"我浇了辣椒……圣罗勒上有蚜虫"整句都归到了圣罗勒名下,浇水那件事被漏掉了。现在会有一个关键词检查并行运行,抓住"浇了"这类明显动作,并匹配到同一句话里提到的植物。

视觉上他想让计划像壁纸,而不是像应用。深森林绿,两张卡片,一个天气胶囊,写着类似"29° · 下午4点有雨",底部是未来六天的条带。标题用 Bricolage Grotesque,其余用 Figtree。

为什么开源这件事重要

花园留在家里。位置、声音、植物的历史,都放在一台他自己控制的机器上的一个小文件里。语音在同一台机器上转成文字。唯一离开的,是花园的坐标,用来取天气。

每天运行不花钱。一个每天早上醒来、永远运行的计划器,正是那种按请求付费会越滚越多的东西。用开源模型,就没有一张会涨的账单。

他能看见模型的错误,并绕开它们。上面每一个古怪习惯都出现在原始输出里,他当天就能在自己这边修好。不用等任何人。

换模型只要一行。如果下个月出了更好的小模型,他改一下 OLLAMA_MODEL 再拉下来就行。其余一切不变。

一个更大的闭源模型也许能写出更漂亮的理由。但一个小小开源模型,住在他自己的机器上,不花钱,还能干活,对阳台上的几盆花来说,已经足够了。

在自家阳台上试

阳台的第一份计划赶上下雨的一周。预报显示四天有雨,其中一天降雨概率高达94%。所以 Tendril 对那一周大部分时间的建议很简单:今天别浇水。

对一个不管怎样都一天浇两次水的人来说,这大概是最难听进去的一句话。