[控场AI]
· 7 分钟阅读· 3,505 字

URL即文档:LaTeX渲染器的无服务器创新

URL即文档:LaTeX渲染器的无服务器创新

Simon Willison用Claude Code打造LaTeX渲染器,把整份文档压缩进URL片段,实现无服务器的AI内容交付。

文章介绍了Simon Willison受Tiny Little Office启发开发的浏览器端LaTeX渲染器。后者把整份文档数据编码进URL的#fragment片段,无需服务器、数据库或账号,保存即收藏链接,并提供llms.txt让AI代理学会构造这类链接。Simon用Claude Code(Opus 5.5 Extra)以一段简洁提示词复刻该思路,目标改为LaTeX渲染。技术栈包括Pako(DEFLATE压缩加LaTeX专用字典)、MathJax、基于WebAssembly的faster-latex排版引擎和DOMPurify,安全上借助iframe sandbox防御XSS,并支持从URL或GitHub Gist加载LaTeX源。文章认为这指向「URL即文档」的新范式,同时指出URL长度上限、字典一致性要求与不可被搜索引擎索引等现实限制。

从Tiny Little Office到LaTeX渲染器

Simon Willison发布了一款名为LaTeX renderer的浏览器工具,灵感来源于Paul Ford与Aboard Foundry打造的Tiny Little Office。后者是一套覆盖文字处理、大纲、演示、表格、计算器、绘图、图表、动画、日历与行程规划的Web应用矩阵,其核心设计思路是把整份文档的数据存进URL的#fragment片段里——保存文档只需收藏一个链接,无需服务器、数据库或账号。

这一模式很快被AI工具链吸收:Tiny Little Office提供了llms.txt文件,告诉AI代理如何构造能渲染成文档的URL。Claude据此直接生成了一份解释URL格式的演示文稿,把「文档即链接」的理念推向了可编程场景。

Tiny Little Office 演示文稿编辑器截图

LaTeX渲染器如何工作

Simon用Claude Code(Opus 5.5 Extra)复刻了这一思路,并把目标换成LaTeX渲染。核心提示词非常简洁:创建一个接收#code-here片段、将其视为LaTeX并高效渲染的工具,支持一个前缀表示用专门的LaTeX压缩字典压缩内容;无片段时展示编辑器,可粘贴LaTeX并切换到「已渲染」视图,该视图可被书签收藏;带片段的视图仍可切回编辑源码。

安全层面借鉴了他此前SVG in Markdown工具的<iframe sandbox="...">机制来防御XSS风险,并加入从URL或GitHub Gist加载LaTeX内容的能力——这意味着一段分享链接既可以是短小精悍的编码文本,也可以指向远端权威源。

LaTeX渲染器界面截图

#fragment(URL片段标识符) 是URL中#之后的部分,浏览器用它定位页面内的锚点,但规范上它不会随HTTP请求发送到服务器。这一特性被Tiny Little Office和LaTeX渲染器巧妙借用:把整份文档的状态压缩编码后塞进#之后,数据只存在于用户浏览器中。好处是没有服务器能记录、篡改或丢失这些内容,隐私与持久性由URL字符串本身保证。代价是数据量受浏览器与平台对URL长度的限制(实用上限通常在数万字符量级),且片段内容对搜索引擎不可见。这也是为什么工具需要引入压缩字典——把一段LaTeX源码压成尽量短的字符串,才具备实际可分享性。

<iframe sandbox> 是HTML中用于隔离不可信内容的属性。当一段由AI生成、来源不可控的HTML/LaTeX被渲染到页面时,一旦其中隐藏恶意脚本,就可能读取Cookie、发起请求或篡改宿主页面(即XSS攻击)。sandbox属性会强制iframe进入受限环境,默认禁止脚本执行、表单提交、同源访问等能力,从而把潜在的有害内容关进「沙盒」里。文章提到的markdown-svg-renderer与LaTeX渲染器都用这一机制作为第一道防线,再叠加DOMPurify对输出HTML做净化,形成纵深防御。

技术栈:WASM时代的浏览器排版

工具的依赖组合颇有代表性:

  • Pako 2.1.0:处理DEFLATE压缩,配合LaTeX专用预设字典实现高压缩比
  • MathJax 4.1.3:成熟稳定的数学公式渲染方案
  • faster-latex 0.3.1:基于WebAssembly的LaTeX排版引擎,承担「真正渲染」的角色
  • DOMPurify 3.4.16:净化HTML输出,作为XSS防护的最后一道关卡

值得关注的是faster-latex的WASM方案。过去浏览器端LaTeX渲染多依赖KaTeX/MathJax覆盖公式,TikZ、文档级排版无法处理;WASM把完整TeX引擎搬进浏览器,让「URL里的论文」真正可行。示例链接中的文档甚至可以包含定理、证明、编号公式与TikZ图形。

WebAssembly(WASM) 是一种可在现代浏览器中运行的二进制指令格式,由C/C++/Rust等语言编译而来,执行速度接近原生。传统上浏览器端展示数学公式靠KaTeX或MathJax,它们本质是「公式到HTML/CSS」的转换器,只能处理数学表达式本身,无法完成真正的文档级排版。而完整的TeX引擎(如pdfTeX、XeTeX)是庞大的C程序,过去只能装在本地电脑或服务器上。WASM让这类引擎能被编译进浏览器,于是TikZ绘图、定理环境、自动编号、页面布局等「整篇论文级」能力第一次无需后端即可实现在网页里。faster-latex正是这一路线的产物,它让「URL里的论文」不只是数学公式,而是排版完整的文档。

DEFLATE与预设压缩字典:DEFLATE是ZIP、gzip等广泛使用的无损压缩算法。常规做法是让每个文档独立压缩,但短文档往往压不动,因为缺少重复模式。预设字典(preset dictionary)的思路是:发送方和接收方事先约定一段公共文本(此处是LaTeX常用命令、环境名、常见公式等),压缩时将它们视为「已出现过的内容」,从而让小体积文本也获得高压缩比。这正是Pako 2.1.0配合LaTeX专用字典的作用。代价是字典必须双方一致——一旦工具更换字典,旧链接就无法再正确解压,跨工具复用也因此困难。

URL即文档:AI工具链的新范式

Tiny Little Office与LaTeX渲染器共同指向一个趋势:URL正在成为AI生成内容的分发格式。

传统路径是「AI生成→保存到数据库→返回短链」,而#fragment方案把数据完全托管在浏览器端。好处有三:没有服务器成本与隐私负担;链接永不失效;AI只需生成一段URL字符串就能交付完整产物。LLM天然擅长构造结构化文本,压缩字典又进一步把体积压到可分享的粒度。

风险同样存在:URL长度有上限,复杂文档会触及浏览器限制;压缩字典必须收发双方一致,跨工具复用困难;片段数据无法被搜索引擎索引,天然排斥可发现性。这些权衡决定了它更适合作为「AI与用户之间的交付管道」,而非面向公众的内容发布平台。

llms.txt 是一种约定俗成的文本文件,放在网站根目录,用来向大语言模型和AI代理说明本站点有哪些内容、如何调用其接口或构造可用链接。它与给搜索引擎看的robots.txt、sitemap.xml思路类似,但服务对象变成了AI。Tiny Little Office提供的llms.txt会告诉模型「如何拼接出一个能渲染成文档的URL」,于是Claude只需按规则生成一段URL字符串,就能交付一份可打开、可分享的成品演示文稿。这正是文章所说「URL正在成为AI生成内容的分发格式」的具体落地路径:模型不再只返回文字,而是返回一个能直接呈现结果的链接。

更多探索

LaTeX渲染器目前可在Simon的tools仓库的同一域名下试用,示例涵盖了二次方程、高斯积分、麦克斯韦方程组、注意力机制公式、矩阵、化学式、散文、TikZ与整篇论文等场景。对开发者而言,把这种「片段即状态」的模式套用到自己的工具上,成本已经非常低。

RSS来源截图:LaTeX渲染器

#LaTeX渲染器#URL片段#Tiny Little Office#faster-latex#WebAssembly#MathJax#AI工具链#Simon Willison
分享:

相关推荐