# 什么是自动化，以及它为什么在你的浏览器里运行

> 一份 AI 编写的报告，每次运行都基于你的表重新计算。它的设计、取舍，以及目前还做不到的事。

Canonical: https://memtomo.com/zh-cn/blog/what-an-automation-is/

“给我做一份按类别的每周消费报告”是在要一个程序。不是大程序——一次查询、一次分组、一幅图——但这个程序下周应该不用任何人重写就能再跑一次。这就是自动化。

## 形态

自动化是由步骤组成的短程序。每一步可以查询你的表、做计算，并展示一个醒目的数字、一段文字、一张表或一幅图。助手在核对真实的表名和列名后根据你的描述写出它，并在允许保存前进行验证——能解析、格式正确、用到的每个名字都有定义。有问题的自动化永远不会落地。

## 为什么是浏览器

显而易见的设计是一台运行自动化的服务器。我们没有那样做，有三个原因。

**隔离。** 在你数据上运行的代码应该在你所在的地方运行。自动化在你标签页内的沙箱里执行。它通过你已登录的会话、以你的权限读取表，别无其他。没有可以逃逸的共享执行器。

**成本。** 在我们的服务器上运行每个用户的每份报告将是账单上最大的一项，而买单的是你。你的电脑本来就开着。

**延迟。** 几千行的报告在本地远不到一秒就能跑完。没有队列。

## 你付出的代价

第一次运行要启动沙箱——几秒钟和几兆字节，之后会缓存。非常大的表会在到达浏览器之前由查询引擎聚合；自动化看到的是结果，而不是原始行。而且浏览器关闭时自动化无法运行，这就是为什么定时报告——“每周一发给我”——是我们接下来要做的：同一个自动化在服务器上同类型的沙箱里执行，配一个每次运行只能读取一个项目的令牌。

## 嵌入

自动化通过 wiki 链接 `[[automation:…]]` 引用，因此可以住在笔记里。打开笔记就看到上一次运行；打开自动化它就再跑一次。打开即重新运行是下一步。这就是整个仪表盘功能：内含活动部件的笔记。
