真正的后端是电子表格 —— 而你的智能体刚刚获得了写入权限
问一个工程师他们公司的业务逻辑在哪里,他们会指向一个 Git 仓库。问财务团队、运营团队或销售团队,诚实的回答是一个名为 pricing_model_v7_FINAL_final.xlsx 的文件。定价公式、人员编制计划、佣金计算、月末对账宏 —— 大多数公司的运营核心都运行在 Excel 和 Google Sheets 上。它没有类型,没有测试,没有代码审查,也没有部署流水线。它是像餐巾纸草图一样被维护着的生产基础设施。
三十年来,这套系统基本行得通,因为读取和写入这些文件的只有人类 —— 动作缓慢、谨慎,并且具备“这个数字看起来不对”的直觉。那个时代刚刚结束了。适用于 Google Sheets 和 Excel 的 MCP 服务器现在将完整的“增删改查(CRUD)”权限作为一等公民 Agent 工具开放,而且每个 Agent 平台都提供电子表格连接器,因为那里才是客户数据真正存放的地方。我们将有史以来构建的最快的写入者连接到了有史以来部署的最脆弱的生产系统上,而大多数团队只花了一个下午就完成了这项工作,甚至没有进行过一次设计评审。
这种失效模式并非假设。2024 年的一项商业电子表格研究发现,94% 的电子表格中都存在错误 —— 而这仅仅是 Agent 在触碰它们之前,这些系统原本的基准质量。问题不在于你的 Agent 是否会损坏电子表格,而在于在它损坏的数字变成决策之前,你是否能察觉到。
电子表格是无类型的生产环境 API
剥离掉网格界面,商业电子表格同时具备三种身份:数据库、程序和报告。C 列是仅存在于表头单元格文本中的表模式(Schema)。D14 中的公式是业务逻辑。总计行上的条件格式是监控仪表盘。所有这三层都存在于相同的可变单元格中,并且没有任何机制来强制划分它们之间的边界。
这使得电子表格成为了一个拥有最糟糕合约的 API:
- 无类型。 日期列可以静默地包含字符串。百分比在一行中可能存储为 0.15,在下一行却存储为 15。在下游的 SUM 计算出垃圾数据之前,没有任何机制会报错 —— 甚至在那之后通常也不会。
- 无模式强制。 在 B 列和 C 列之间插入一列,每个通过位置寻址数据的消费者现在读取的都是错误的字段。没有编译器错误。没有运行时异常。只有排版精美的错误数字。
- 无测试。 计算毛利率的公式没有断言检查。它的正确性仅由编写者在看结果时“凭感觉”验证过一次。而那个人可能已经离职了。
- 无审核。 编辑直接进入生产环境。版本 历史确实存在,但没有人会像阅读 Pull Request 那样去阅读 Google Sheets 的修订日志。
所有这些错误的检测系统一直以来都是人类的感知。某位高层扫一眼季度汇总表,然后说“这看起来不对”。这种检查不仅缓慢、不可靠,而且最关键的是,它是针对人类的编辑模式进行校准的。人类会进行一两次编辑并查看结果。而 Agent 在你阅读这句话的时间里,就能完成四百次编辑。
Agent 会破坏哪些人类不会破坏的东西
人们很容易认为 Agent 只是一个更快的人类编辑者,因此现有的非正式保障措施可以随之扩展。但事实并非如此,因为 Agent 的失败方式在结构上是不同的。
Agent 会用数值覆盖公式。 最常见的损坏模式:Agent 被要求“更新第三季度收入数字”,它将 1250000 写入了一个原本包含 =SUM(Sheet2!B4:B87) 的单元格。表格现在显示了一个看起来合理的数字,但它永远不会再更新了。未来的每个季度都会静默地报告陈旧的数据。人类也可能这样做 —— 但人类通常会注意到公式栏;而通过 API 工作的 Agent 看到的只是单元格地址和数值,且许多电子表格工具默认返回的是计算后的值而非公式,因此 Agent 甚至可能不知道那里原本有个公式。
Agent 信任位置寻址。 大多数 Agent 与表格的交互都解析为 A1 样式的引用。但 A1 引用是布局中的指针,而不是模式中的指针。如果自 Agent 上次读取表格以来,有任何人(无论是 人类还是 Agent)在目标上方插入了一行,写入操作就会偏移一行。在代码库中,这是一个合并冲突;但在电子表格中,这是一个静默的对齐错误,导致整列数据与其标签发生错位。Git 能从结构上捕获的“先读后写”竞争,在这里是不可见的。
Agent 会拍平它们看不见的内容。 隐藏的表格、宏、透视表缓存、数据验证规则、解释“别碰这个,这是发给董事会的简报”的单元格批注 —— 大多数程序化访问路径要么不显示这些内容,要么在写入时主动销毁它们。目前的几种 AI 电子表格工具在文档中注明,它们会将带有宏或隐藏工作表的复杂文件拍平为原始值。工作簿作者在结构和格式中编码的不变量,恰恰是 Agent 在文件表示中丢弃的部分。
Agent 会进行大规模的类型强制转换。 Excel 的类型强制转换曾因弄乱遗传学研究而臭名昭著 —— 它坚持将 SEPT1 和 MARCH1 等基因名称转换为日期,以至于这些基因最终被迫改名(SEPT1 现在叫 SEPTIN1:科学命名法因为电子表格不肯妥协而改变了)。那还只是人类粘贴数据的结果。一个在万行数据中进行批量富化的 Agent,会一次性触及该格式中所有的强制转换极端情况,而且与遗传学家不同,它不会为此发表论文。
- https://phys.org/news/2024-08-business-spreadsheets-critical-errors.html
- https://eusprig.org/research-info/horror-stories/
- https://theconversation.com/excel-errors-the-uk-government-has-an-embarrassingly-long-history-of-spreadsheet-horror-stories-147606
- https://theconversation.com/excel-autocorrect-errors-still-plague-genetic-research-raising-concerns-over-scientific-rigour-166554
- https://www.theregister.com/2020/10/05/excel_england_coronavirus_contact_error/
- https://github.com/xing5/mcp-google-sheets
- https://developers.google.com/workspace/sheets/api/samples/ranges
- https://developers.google.com/apps-script/reference/spreadsheet/protection
- https://www.llamaindex.ai/blog/introducing-the-spreadsheet-agent-in-private-preview
