为什么选择 K2F
为什么我们需要一种新格式
机器可编辑的文档。人类可信赖的页面。
PDF 在任何地方看起来都一样,但 AI 智能体无法可靠地修改它。HTML 很容易被软件重写,但页面无法保持稳定。Markdown 是有语义却没有页面。Word 和 PowerPoint 是人类可编辑的文件,机器继承到的却是一团混乱。K2F 之所以存在,是因为 AI 时代需要同时满足这两边——而现有格式都不是为此设计的。
要求
必须同时成立的事
当智能体编写合同、发票或报告时,有两件事必须同时成立。现有格式各自只能满足其中一件。
- 01
机器必须编辑语义
修改条款、合计金额或表格行——依据身份标识,而不是猜测像素或重绘页面。
- 02
人类必须信任页面
同一个文件必须在每个官方阅读器、每台设备、每次打开时都渲染出相同布局。就像 PDF 一样。
差距
为什么现有格式行不通
每种格式都只为要求的一边做了优化。没有一种能同时兼顾两边。
PDF
同样的页面。封闭的盒子。PDF 是一串绘制指令:把这个字形放在这里,把那条线画在那里。这种一致性正是它的意义所在——也是陷阱。智能体无法安全地修改“第 4 条”。你可以对 PDF 做 OCR。但你不能把它当作允许模型重写的文档。
HTML
可编辑。但无法保持稳定。HTML 和 CSS 很容易被软件读写。它们也被设计为可重排:每个浏览器、窗口尺寸和样式表都可能移动文本。一份在不同机器之间会变形的合同,不是你能签署的合同。确定性从来不是它们的职责。
Markdown
有语义。无页面。Markdown 是智能体已经喜爱的格式。它几乎没有布局。同一个文件在 GitHub、预览窗格和导出的 PDF 中看起来都不一样。你可以存储意图。但仅靠 Markdown 无法交付经过设计的页面。
Office
人类编辑。机器猜测。Word 和 PowerPoint 存储的 XML 由专有应用进行布局。智能体得到的是一个脆弱的树结构,没有稳定的“这个段落”身份标识,而且两台电脑可能渲染出不同的像素。布局存在于应用程序中,而不是文件中。
分离
让语义与像素分离
你无法在不放弃 PDF 本质——一幅绘制图——的情况下“让 PDF 可编辑”。你也无法在不放弃重排的情况下“让 HTML 像素级一致”。因此 K2F 是一种新格式,只有一条规则:语义存在于一处,像素存在于另一处,而固定版本引擎是唯一的桥梁。
语义意图。确定性几何。
智能体编辑文档的语义。由引擎而非作者决定它在页面上的位置。
内容 + 主题
可编辑源
固定版本引擎
编译一次
渲染锁
处处相同像素
语义树
content/root.json
由标题、表格、警告和正文组成的 JSON 树。每个节点都有一个稳定 id,例如 invoice.total 或 contract.clause_4。智能体修补这些 id。它们不绘制 PDF,也不手动放置 x/y 坐标。
主题
styles/theme.json
外观通过名称指定,而不是内联指定。节点声明 role:“warning”,而不是“把这个变成 13px 红色”。样式不能泄漏到内容树中。改变文档外观意味着更改主题,而不是重写文字。
渲染锁
document.K2F.lock
版本固定的引擎将内容 + 主题 + 字体编译为精确几何和绘制顺序。打开文件时会按此渲染锁绘制。它不会重新布局。字体随包携带。规范输出不得依赖查看者的操作系统。
一个 .K2F 文件就是一个 ZIP。语义树、主题和渲染锁都位于同一个包中:
目录结构
变化
这是用来做什么
对智能体而言
像编辑函数一样编辑条款——按名称进行。差异是语义 JSON,而不是截图噪声。回滚针对的是节点,而不是被压平的页面。schema 有意保持精简,这样模型不必学习一门排版语言。
对人类而言
打开文件,页面就已经确定。官方阅读器会报告渲染锁是否仍与语义树、主题、字体和引擎匹配。如果有人未重新编译就篡改内容,横幅会给出提示。导出为 PDF、PowerPoint 或 Word 只是对该渲染锁的绘制——源文件仍然是 K2F。
不可妥协
我们不会妥协的原则
语义优先
智能体编辑语义树,绝不编辑像素或任意绘制命令。
确定性渲染
相同的包、主题、字体和固定版本引擎必须生成相同的规范页面。无声漂移是缺陷,而不是“浏览器差异”。
语义与外观保持分离
角色和变体控制外观。内容树中禁止使用一次性内联样式。
最小、稳定的核心
新的外观应放在主题和具名原语中。格式本身保持精简,以便长久存在。
文件是完整的
字体、主题、资源和引擎标识随包携带。规范输出不得依赖查看者的机器。
边界
K2F 不是什么
这些不是缺失的功能。它们是让语义与像素保持分离所付出的代价。
PDF 不是源文件
PDF 是成品页面的绘制结果。导入 PDF 等于把像素伪装成语义。导出是单向的:该格式拒绝将 PDF 作为源文件。
官方查看器不会重排正文
重排正是 HTML 失去像素确定性的原因。打开已锁定文件时只会按渲染锁绘制,不会再次排版。
源文件中没有拖拽放置编辑器
布局由约束编译而来。鼠标坐标不属于语义树——幻灯片正是这样把语义困在布局里的。
幻灯片和无限画布不在 v0.1 中
它们是设计目标,尚未发布。v0.1 是分页文档。