正常截图和长文本完整保存;一次展示或读取多少内容,单独处理。大小本身不应把成功的工具操作变成执行失败。数据库和可用资源仍有实际限制。
| 使用场景 | Codex | Claude Code | OpenCode | OpenProgram 设计 |
|---|---|---|---|---|
| 大截图 | 图片不占文字截断预算 | 图片仍受 MCP 输出 token 限制 | 本次未核实图片处理 | 完整保存图片;模型适配与局部查看单独设计 |
| 长日志 | 按文字预算截断模型可见内容 | 超限且不含图片的结果存文件,返回路径;默认 25,000 tokens,可配置 | 默认 2,000 行或 50 KiB;完整内容存文件,返回预览和路径,可配置 | 完整保存;模型侧预览、搜索、分段读取作为设计方向 |
| 大结果的界面记录 | MCP 事件副本超过 1 MiB 时转为文字预览,保留成功状态;不是完整结果的保存保证 | 超限且不含图片的结果以会话 tool-results 文件引用替代 | 预览附完整输出文件路径 | 展示内容分页,大文字通过结果引用保存;不改变工具成功状态 |
| 中断恢复 | 本次未核实完整恢复保证 | 本次未核实完整恢复保证 | 本次未核实完整恢复保证 | 结果与完成记录原子发布;恢复已完成工具的位置,避免因本次保存错误重复执行 |
Codex output · Codex events · Codex 事件阈值 · Claude Code MCP · OpenCode output
Codex 和 OpenCode 的说明来自公开源码;Claude Code 来自官方文档,不能据此推断未公开的持久化实现。未确认项不表示该框架不支持。以上阈值对应所引用行为,不是所有工具的统一限制。
保留检查点元数据、引用数量、控制消息预算、内容哈希和执行所有权校验。完整的助手回复与工具结果保存为按内容寻址的独立 blob,不受待处理消息的 64 KiB 限制。blob 存储不以 1 MiB 为拒绝条件;该值仍是展示分页或生产者分块的目标大小。模型输入策略不因此改变。
已实现并验证:大图片和文本的完整保存、新建 store 后恢复、完成记录引用复用、损坏检测。此前受影响层与契约检查为 1,422 项通过、1 项跳过。未在本次实现:模型侧统一预览与按需读取、图片局部查看;这些能力需先核实现状。原会话 reconciliation_required 状态没有自动恢复,原会话截图没有重新执行。
在已完成操作与下一次模型请求或工具调用之间接受的暂停,必须在下一次实际执行前处理。已经登记但尚未开始的操作记为未执行,并保留在 Agent 恢复位置中。首次操作前暂停的任务从原始持久化输入恢复,不生成虚构模型回复。保存结果期间控制命令改变执行状态版本时,只在相同 attempt 约束下重试 checkpoint 发布,不重新执行外部操作。
execute_code 公共工具将 Python 非零退出和超时标记为错误,同时保留 stdout、stderr,以及已观察到的退出码或超时。成功执行保持成功。本地沙箱拒绝保留原有结构化元数据。使用现有 ToolReturn 结果协议,不新增重试、不改变后端选择、不重复执行子进程。验收通过已注册工具的 AgentTool.execute 执行真实成功、失败和超时的 Python 片段;后端超时适配保留部分输出。源码验证与已安装 App 的显示验收分开记录。
协作链达到 agent.max_messages 时,job_output 仍可被发现和调用。读取已有 Job 结果不创建新执行、分支或投递,不消耗委派额度。已有会话及祖先所有权检查继续限制结果访问;消息耗尽时 agent 仍被隐藏,send_message 保留投递时的消息预算检查。验收在配置上限处解析公开可用工具目录,经 AgentTool.execute 读取本会话已完成 Job 的结果,并在等待前拒绝其他会话的 Job。不新增取消工具。独立审查和最终组合检查分别绑定实现证据。
已注册的 image_analyze、image_generate 和 mixture_of_agents 工具保留各自执行分支已经确定的成功或失败状态。局部 outcome 函数使用现有 ToolReturn 并明确设置 is_error,公开 AgentTool.execute 接收该结构化结果。原有普通 execute 函数保持原参数签名和字符串返回值。Provider 或模型不可用、显式模型引用无效、图片 Provider 调用失败、图片保存失败、所有参考调用失败和汇总调用失败返回明确错误结果。模型成功回答以 Error: 开头时仍然是成功。部分参考调用失败保留既有成功汇总或单参考回答行为。Schema、注册名称、源模块、后端选择、结果路径、重试预算、usage 标签和取消语义保持不变;公共 normalizer 不根据文本推断错误。验收通过真实已注册 wrapper 执行受控官方 Provider 传输回复和自有 PNG 输入输出,并验证未知模型、后端不可用、调用后端前的沙箱拒绝及取消传播。受控回复验证本地执行行为;真实凭证与远程模型或图片能力单独验收。
Canvas 与 agent_browser 注册返回既有 ToolReturn 协议的内部结果函数,普通 Python execute 保留原签名和字符串返回。Canvas 既有的参数校验、路径策略、权限和块不存在错误,以及 agent_browser 既有的参数、会话、URL 策略、缺少依赖、超时、二进制不存在和子进程非零退出错误,设置 is_error=true。成功读取的块正文和成功 CLI stdout 即使以 Error: 开头也保持成功;不根据结果文本判定失败。Schema、别名、路径与 URL 准入、CLI 参数、取消及会话生命周期保持现有行为,浏览器 close 保留既有的尽力清理契约。验收通过已注册工具操作自有文件与受控 CLI 响应,核对显式错误标记和原有文本,并检查 Error: 开头的合法内容与普通调用兼容。独立 specification 与 fresh quality 审查已通过。最终组合检查与安装界面验收仍待完成;受控检查不涉及真实模型、用户浏览器、App 或终端。
已注册的 ask_user_question 工具对既有的问题参数错误、基础设施不可用和无交互前端分支返回结构化错误,保留原始诊断文字。模块仍导出同一个经装饰的 AgentTool 对象,注册名称、schema、元数据及 interaction manifest 不变。有效答案仍返回字符串;用户拒绝及超时保留原有行为。不自动回答问题,不改变权限或审批策略。公开验收经 AgentTool.execute 检查不可用输入及受控前端的回答,不向实际用户发送问题。