数据在链接里
为什么 URL 是放数据的正确位置——以及数据放进去之后会变什么。
稿子是 AI 写的。它需要一张图的时候,就做一张图。可它留下的是一张图—— 而数据进了图,就没再出来。
稿子发出去了,写它的上下文没有。下一个人来读——一个人、一个 agent、 或者一年后的你——手里只有那张图。
图不是数据
一张图能让你看出一百个数字的形状,但它没法把那一百个数字交给你。 所以正文里还得写一个数字——而那个数字是从哪儿来的? 从有人把那张图读回去的地方。
读回去这一步是有损的,而且损得很安静。那根柱子可能是 4.18, 句子里写的是 4.2,或者 4.3,或者 42%。没人能分辨, 因为数字从来就不在图里。
问题不在模型。问题在格式。图片没有地方放精度、单位、注意事项,也没有地方放第二条序列。
这件事网页在文档上早就解决了
URL 可以是一份文档。不是文档的指针——就是文档本身。
https://example.com/notes.md 就是那份笔记;服务器只是替我们保管并递交给别人的地方。
这是个早已确定、无聊、几十年前就有的想法,也正因为如此,网页才能被引用、被 diff、
被缓存、被争论。
我们把它扩展到数据上却慢了。图是最后一个地方:一份东西的实质, 被故意放在它的地址之外。
数据在链接里之后,什么变了
链接本身就是上下文。 不是指向上下文的指针——就是上下文。
拿到 datalink.ac/draw?type=pie&labels=TS,Py,Go&values=4821,2312,980 的 agent,
手里就有数字、标签和问题本身。不用取,不用看,也没有一段描述图片内容的话。
链接可以 diff。 两条只差一个参数的链接,字符上就只差一个字符。
values=4821 → values=5120 是一个可以被审阅的改动:
改一张图的 PR,其实就是改一条 URL 的 PR。这正是图表该出现在 GitHub issue、
release note 和 PR 里的原因——不是在那里好看,而是在那里可以被改,
而且历史会记下你当时的意思。
链接变成一次函数调用。 参数进,图出。没有会话、没有登录、没有仪表盘状态。 agent 想要同一份数据的另一个切面,就改写参数;人想探索它,编辑同一串字符。 谁都不需要为此学一套专门的工具。
链接才是留下来的东西。 聊天记录里的一张图是条死路。链接是一份报告, 数字还在里面——所以半年之后,有记忆的 agent 能从它里面把意图和数字读回来, 也能给它们建索引。
让人不舒服的那部分
链接是公开的。链接会被复制、转发、缓存、记录、截图。 如果背后的数据是私密的,那么数据链接就是错的形状,再聪明也改不了。 (这件事我们单独写过——见《URL 会暴露什么》。)
但看看我们已经在怎么用 URL。我们往 issue 里贴查询串。 我们把客户标识放进工单链接。我们给仪表盘加登录,然后再为这个登录花掉真金白银。 实际上,数据早就住在 URL 里了;被抽空的不是链接本身,而是链接的内容。
接下来
数据链接是个小想法,长尾很长。今天它画图表、结构图、表格、日历、幻灯片、 一张地图、一个分子。这些都是渲染器,而渲染器是链接的细节,不是链接的属性。
接下来要写下来的,是让它成为标准而不只是约定的那些东西:渲染器必须守住的不变量, 以及 agent 可以凭什么做假设。那就是数据链接规范,它现在是草案,欢迎争论。