Gemini API 能否读取或导出 context cache 内容?
结论
Gemini API 可以通过 cachedContents.get 读取缓存资源,也可以列出缓存条目。根据当前文档,这些操作只能查看缓存元数据,无法取回缓存内容。因此,缓存 ID 可供后续请求引用,但不能作为可下载的内容备份;API 也没有受支持的接口可导出预处理后的 token 或压缩表示。
缓存资源的元数据可以读取,包括名称、模型、过期时间和使用情况等信息;缓存中实际保存的内容则无法通过读取接口恢复。Gemini API 资源定义也将 contents 标记为仅输入且不可变的字段。详见 Gemini API 缓存资源与方法文档 和 context caching 指南。
缓存接口能做什么
对于显式缓存,Gemini API 文档列出了创建、读取、列出、更新过期时间和删除等操作。get 会返回 CachedContent 资源。文档提供了读取资源的示例,同时说明缓存内容无法通过缓存接口查看。更新操作只支持调整过期时间,不能修改或导出缓存正文。
例如,可以使用 REST API 读取缓存资源:
curl "https://generativelanguage.googleapis.com/v1beta/cachedContents/CACHE_ID?key=$GEMINI_API_KEY"
返回结果可用于查看缓存资源信息,但不能据此认为响应中包含可还原或可移植的缓存正文。调用时需要使用有权访问该缓存的 API key,并将 CACHE_ID 替换为实际的缓存名称或 ID。
本地记忆如何保持可移植
对于 QonQrete 这样的本地优先编排层,建议将项目文件、长期记忆、摘要以及用于重建上下文的索引保存在本地。每次调用 Gemini 时,应用都可以从自己的存储中组装所需上下文,再按需创建或引用 Gemini 显式缓存。
Gemini context cache 用于减少重复处理带来的成本或延迟。本地存储则可供检查和备份,也能作为其他模型使用的记忆来源。如果创建缓存时使用了已上传文件,也应在本地保留原始文件或其可访问来源,避免把缓存条目当作唯一副本。
对 Gemini CLI 调用方式的影响
问题中的工作流通过 Gemini CLI 的 stdin/stdout 传递上下文,应用并未直接调用 Gemini HTTP API。cachedContents 接口说明的是 Gemini API 的能力,并不能证明 Gemini CLI 提供相应的缓存管理命令。继续使用 CLI 时,应以当前 CLI 文档和实际可用命令为准。若要由应用管理缓存,可以在本地层单独调用受支持的缓存 API。
以上结论适用于 Gemini API 的显式缓存资源。隐式缓存的管理方式有所不同,也不能假定可以从中读取或导出内容。具体能力可能因 API、模型和调用入口而异,实施前应核对相应接口文档。
备注:内容仅供参考。
