OpenCode v2.3.0的Code Mode工具返回值有哪些变化,怎样判断调用结果

作者:工具松鼠时间:2026-11-13 17:58:09浏览:429

理解OpenCode v2.3.0的write、edit、patch与skill结果形态,以及Code Mode工具建议、截断预览和异步结果的不同边界。

OpenCode v2.3.0简化了Code Mode中部分文件与技能工具的结果:write和edit以字符串返回确认信息,patch返回空结果,skill返回技能目录和内容。依赖工具结果的工作流,需要按具体工具理解这些返回形态,不能把空结果自动等同于失败,也不能仅凭确认字符串认定后续业务验证已经完成。

OpenCode终端产品展示

确认信息、内容数据与后续验证分开看待

write与edit的确认字符串描述工具调用后的确认信息;patch的空结果代表该工具约定的返回形态;skill返回目录和内容,提供的是加载技能需要的数据。v2.3.0没有把这几类工具统一成一种对象结构,依赖固定字段读取所有结果的方式需要重新核对。

这项变化针对Code Mode中的相应工具,不能扩展为所有SDK接口、插件或Shell都采用同样返回格式。正式说明没有给出一份通用结果样例,因此也不宜凭工具名称推断新的字段、状态码或对象层级。判断完成时仍需结合实际调用是否成功,以及任务要求的后续验证。

OpenCode v2.3.0 Code Mode结果与后台任务说明

命名空间调用错误为什么会出现建议

v2.3.0还改进了Code Mode中把命名空间误当作工具调用的报错:现在会建议该命名空间下最多三个真实工具。这个提示帮助缩小可调用入口的范围,并不是把命名空间本身变成了可执行工具;被建议的工具仍有自己的输入要求和返回约定。

工具输出被截断时,系统现在保留开头;如果完整输出无法保存,也尽量留下可用预览。开头预览与完整结果仍有范围差异,不能把预览当作已经覆盖全部日志。尾部读取不再把整个文件加载到内存,也是具体读取行为的调整,不应被理解成所有大文件处理都没有资源成本。

后台执行需要额外区分阶段结果

子代理默认在后台运行,立即返回会话ID,并在空闲时向父会话报告。若它自己的后台工作还在运行,报告会说明仍在运行,让父会话继续等待最终回报。因此,“工具有返回值”“子代理有会话ID”“最终任务已完成”是三个不同判断,不能互相替代。

TUI默认low详细度将连续的工具调用和思考汇为可折叠活动行,已有详细度设置保留。显示更紧凑不会改变工具真实返回形态;medium和high是更详细的显示选项,也不能替代对结果本身的核对。

实验接口不要当成默认稳定依赖

MCP事件支持仍放在mcp_events实验开关后;Shell超时后转入后台的实验能力由shell_timeout_background控制,开启时后台命令的显式超时会停止它。它们与默认异步的子代理属于不同能力,不能因为同一版本出现就假定同时默认生效。

网关双向TLS支持则允许提供方携带客户端证书,涉及settings.tls中的cert、key和可选passphrase,并支持类似apiKey的文件或环境变量取值。这里只能确认提供了该配置能力,实际网关是否要求双向TLS、证书是否有效仍取决于部署条件,不能把版本更新当成认证已经成功。

作者最新文章