Geoffrey Litt

Subscribe:

Contact

April 2025

Stevens: 用单个 SQLite 表和少量 cron jobs 构建一个可定制的 AI 助手

现在构建 AI 的模式有很多炒作。Agent,memory,RAG,助手——太多流行词了!但现实是,你不需要花哨的技术或库就可以用 LLM 构建有用的个人工具。

在这篇短文中,我将向您展示我如何使用一种非常简单的架构为我的家人构建一个有用的 AI 助手:一个包含记忆的单个 SQLite 表,以及一些用于提取记忆和发送更新的 cron jobs,所有这些都托管在 Val.town 上。整个东西非常简单,您可以轻松地复制和扩展它。

认识 Stevens

这个助手叫做 Stevens,取名于石黑一雄伟大小说 Remains of the Day 中的管家。每天早上,它都会通过 Telegram 向我和我的妻子发送一份简报,包括我们当天的日历安排、天气预报、我们预计收到的邮件或包裹,以及我们要求它跟踪的任何提醒。所有这些都写得很好很正式,就像你对一个真正的管家的期望一样。

这是一个例子。(我将在这篇文章中使用虚假数据,因为我们实际的更新包含私人信息。)

除了每日简报,我们还可以按需与 Stevens 进行沟通——我们可以转发包含一些重要信息的电子邮件,或者只是通过 Telegram 聊天留下提醒或提出问题。

这就是 Stevens。它很简陋,但对我来说比 Siri 更有用!

幕后花絮

让我们来分解 Stevens 背后的简单架构。整个东西都托管在 Val.town 上,这是一个很棒的平台,提供 SQLite 存储、HTTP 请求处理、计划的 cron jobs 以及入站/出站电子邮件:这是一组非常适合此项目的功能。

首先,Stevens 怎么知道早上简报的内容呢?关键是管家的笔记本,这是一份 Stevens 所知道的一切的日志。我们有一个管理界面可以查看笔记本的内容——让我们偷看一下里面有什么:

您可以看到一些输入到上面早上简报中的条目——例如,家长会有一个日志条目。

除了文本,条目还可以有一个 date,表示它们预计何时相关。还有一些没有日期的条目,作为一般背景信息,并且始终包含在内。您可以看到这些特定的背景记忆来自 Telegram 聊天,因为 Stevens 在您刚开始时会通过 Telegram 进行一次信息收集:

有了这本笔记本,发送早上简报就很容易了:只需运行一个 cron job,调用 Claude API 来编写更新,然后将文本发送到 Telegram 线程。作为模型的上下文,我们包括未来一周内注明日期的任何日志条目,以及未注明日期的背景条目。

在底层,“笔记本”只是一个带有几个列的 SQLite 表。这是一个更乏味的视图:

但是等等:各种日志条目最初是如何到达那里的呢?在管理视图中,我们可以看到 Stevens 忙于从各种来源将内容输入到日志中:

这只是一些数据导入器在填充该表:

这个系统很容易用新的导入器进行扩展。 导入器只是任何在日志中添加/编辑记忆的过程。记忆内容可以是任何任意文本,因为它们稍后会被反馈到 LLM 中。

反思

关于这个项目的一些快速思考:

对于个人 AI 工具来说,访问来自其他信息来源的更广泛的上下文非常有用。 了解我的日历和天气预报等信息会将一个愚蠢的聊天机器人变成一个有用的助手。 ChatGPT 最近添加了过去对话的记忆,但有很多信息没有存储在那个孤岛中。我之前写过 written before 关于 AI 驱动的个人软件的最终目标不是更多的应用程序孤岛,而是对我们生活的共享上下文池进行操作的小工具。

“记忆”可以从简单开始。 在这种情况下,助手的用例是有限的,并且它的信息本质上是受时间限制的,因此很容易查询相关的上下文以提供给 LLM。一些现代模型具有较长的上下文窗口也有帮助。随着可用信息量的增长,可能需要 RAG 和 fancier approaches 进行记忆,但您可以从简单开始。

Vibe coding 使更愚蠢的项目成为可能。 最初,Stevens 的语气很生硬,就像您对普通的 Apple 或 Google 产品的期望一样。但结果证明,让助手像一个正式的管家一样说话会更有 fun。这很容易做到,只是提示中的几行代码。同样,我决定让管理仪表板视图感觉像一个视频游戏,因为为什么不呢?我在 ChatGPT 中生成了图像素材,并在 Cursor + Claude 3.7 Sonnet 中 vibe coded 了整个 UI;它只花了一点额外的努力,却换来了更多的乐趣。

自己尝试一下

Stevens 不是一个开箱即用的产品,它只是我为自己制作的一个个人项目。

但如果您好奇,您可以查看代码并 here fork 这个项目。您应该能够应用这种基本模式——一个包含记忆的单个表和一组可扩展的 cron jobs ——来做很多其他有用的事情。

我建议使用您选择的 AI 编辑器和 Valtown CLI 编辑代码,以同步到本地文件系统。

Subscribe

我会定期写关于编程工具、最终用户编程和其他软件主题的文章。要获取有关新帖子的更新: Join my email newsletter Follow me on Twitter Subscribe via RSS