AI 推理 API 中的会话可移植性:挑战与社区观点

可移植性问题

现代推理 API 正在背离“用户拥有的转录文本可以完全捕捉 AI 会话”这一理念。供应商现在返回的是文本与不透明的、绑定在服务器端的各种状态的混合体,例如加密的推理 token、隐藏的搜索证据以及只有原始供应商才能解密的压缩上下文块。因此,本地保存的转录文本只是会话的部分视图,而其运行状态仍然保留在供应商的服务器上。

供应商如何破坏可移植性

供应商为每个不透明的功能都提供了以用户为中心的辩护,但这些功能共同侵蚀了所有权。示例包括:

  • 向用户计费的推理 token,但仅以带有无用摘要的加密 blob 形式返回。
  • Web 搜索中,模型看到了客户端从未见过的源材料,仅返回引用或片段。
  • 服务端压缩,它会发出被描述为“不透明且不旨在供人类理解”的加密压缩项。
  • 子代理(subagent)指令和消息被隐藏为加密负载,无法被另一个模型检查或重放。
  • 文件、向量库、容器和缓存引用仅在供应商的环境中解析。
  • 会话状态通过完全存储在供应商服务器上的 ID 进行键值化,使得响应 ID 变成了用户无法控制的数据库的外键。

可移植性的实践测试

本文提出了五个具体的测试,用于评估一个会话是否真正具有可移植性:

  1. 检查性 (Inspection): 用户能否看到模型看到了什么、工具做了什么以及代理之间说了什么?
  2. 导出性 (Export): 除了也可以下载的普通产物外,会话本身是否是自包含的?
  3. 重放性 (Replay): 另一个实现能否从导出的数据中重建语义等效的上下文?
  4. 审计性 (Audit): 人类事后能否解释系统为何采取某项行动?
  5. 删除性 (Deletion): 用户能否识别并删除会话所依赖的每一个服务端副本? 响应 ID 或密文无法通过这些测试,因为数据驻留在服务器上,或者用户无法对其进行解密。

社区反应

Hacker News 上的评论者表达了赞同与不同的观点:

  • 一位用户指出,这篇文章让他们重新考虑是否继续使用 Codex 订阅,因为隐藏的推理破坏了可审计性。
  • 另一位用户报告称成功在 Claude 和 Codex 会话之间切换,并接受一定的质量损失,认为这与上下文压缩相当。
  • 一条评论:“我经常在 Claude/Codex 之间无障碍地延续彼此的会话。”
  • 几位评论者认为,供应商故意隐藏实现细节,是为了防止用户窥探内部运作。
  • 一种相反的观点认为,对于长篇且重要的对话,留在单一供应商处并在别处重新开始是可以接受的。
  • 有人指出,通过 MCP 服务器实现工具外部化,或构建自定义代理状态数据库(例如一个独立的 MCP 可访问数据库),可以恢复控制权。
  • 其他人建议了实际的变通方法,例如维护一个带有 Markdown 摘要的笔记目录(任何模型都可以读取),或使用记录微型提示词(micro-prompts)以实现审计性的中间件。
  • 少数人强调,开源权重模型(open-weight models)提供了永久性,因为它们不会被公司收回,使用户可以无限期地保留指南、治疗师或朋友。
  • 一位评论者警告说,除非监管有利于闭源模型,否则可能会向开源权重模型迁移,并将成本和透明度视为驱动因素。
  • 另一位强调了会话中期的成本驱动型模型切换,即使用强大的模型进行探索,使用较小的模型进行执行。

迈向可移植的 API

本文列出了推理供应商和代理构建者应采用的七条规则,以恢复可移植性:

  1. 将本地事件日志视为规范;服务端存储可以作为其镜像,但客户端必须能够在不引用服务端 ID 的情况下重建会话。
  2. 使存储显式化:store: false 应该是简单、有文档说明且最好是默认选项;任何需要保留数据的功能必须在调用点声明这一点。
  3. 确保没有任何不透明项是意义的唯一载体:加密的推理、压缩和工具签名可以伴随一个可读的、供应商中立的交接表示。
  4. 要求托管工具记录全保真证据:包括准确的输入、输出、过滤、来源、时间戳和内容哈希,而不仅仅是精炼的答案和引用。
  5. 通过为每个代理持久化精确的可读任务、消息、结果、谱系、模型和工具权限,使子代理通信具有可审计性。
  6. 返回可检查的压缩:一个可读的摘要、用于创建它的指令,以及足以理解哪些内容被丢弃的谱系。
  7. 允许将文件、容器输出、搜索快照和生成的媒体等产物导出到内容寻址的本地存档中。

蒸馏与模型层锁定

除了会话可移植性,本文还指出了一个相关的模型层锁定问题。主要实验室声称拥有输出的所有权,同时禁止客户使用其服务来训练竞争模型,但他们自己在内部却在使用蒸馏技术。本文认为,对待蒸馏的态度应该从敌视转向支持,因为蒸馏可以将昂贵的尖端能力转化为在本地、离线或用户控制下运行的更小、更便宜、更快的模型,从而增加竞争,并在 API 消失时保留能力。

结论

核心矛盾在于:一方面是依赖于不透明、绑定服务端的性能优化驱动的供应商需求,另一方面是用户对检查、导出、重放、审计和删除的需求。如果没有可移植性,用户积累的上下文将被困在单一生态系统中,削弱了供应商在质量、价格、可靠性和信任方面进行竞争的动力。实现可移植会话需要显式存储、所有不透明功能的读写交接、全保真工具日志、可审计的子代理通信以及可导出的产物——这些步骤将允许用户注销账户、保留会话,并将其交给另一个模型,即使新模型持有不同意见或表现较差。

Sources