
核心功能变化
OpenCode 团队发布了 v2.3.0 版本,这次更新带来了一些基础交互逻辑的调整。最显著的变化是子代理(Subagents)现在默认在后台运行。主会话发出指令后,子代理会立即返回会话 ID,然后在后台继续执行任务,完成后汇报结果。这意味着用户可以同时处理多个子代理任务,而不需要等待每一个任务结束。(#63382)
为了让屏幕上的信息更少干扰阅读,TUI(终端用户界面)调整了默认行为。现在每次工具调用和思维过程会被汇总成一行可折叠的活动记录,回答过程看起来更整洁。如果用户想查看每一步的细节,可以在设置中将“详细程度”调整为 medium 或 high,或者在 TUI 配置文件中设置 session.verbosity。(#63207)
桌面端应用增加了一个快速跳转功能。用户通过命令面板打开“跳转到消息”,或者按下快捷键 Cmd+Alt+G(Windows 和 Linux 上是 Ctrl+Alt+G),就能在当前的会话历史中搜索并直接定位到某个提示词。(#63585)
底层机制与工具优化
- 子代理机制全面背景化,当子代理空闲时,如果其后台工作尚未完成,它会向父级报告“仍在运行”,防止父级误判为任务结束。(#63675)
- 增加了 MCP 事件支持,需启用 mcp_events 标志。(#63254, #63261, #63269)
- Shell 命令现在在服务端切换时能保留输出,即使被中断也能维持结果。新增了实验性功能,允许在超时后将 Shell 命令移至后台,需启用 shell_timeout_background 标志。(#63024, #63703)
- 本地 Windows Shell 命令改由进程守护线程处理,提升了稳定性。
- 针对兼容的模型,支持了自由形式的工具输入,并增加了对 LM Studio 决策模型的支持。
- 当会话是分支(fork)时,代理会被明确告知,避免了状态混淆。感谢贡献者 @hasta84。(#63235)
- 工具输出截断策略优化,优先保留开头部分,确保即使无法保存完整输出,用户也能看到可用的预览。
- 读取文件尾部不再加载整个文件到内存,降低了资源占用。
- 支持通过 settings.tls 配置客户端证书,用于需要双向 TLS 认证的网关。支持通过文件路径或环境变量引用证书。(#61832)
界面与体验修复
TUI 终端界面
TUI 的详细程度默认值设为 low,使活动记录更紧凑。已存在的 session.verbosity 设置会被保留。另外,修复了多个交互问题:撤销操作现在能正确恢复粘贴占位符对应的文本;浏览提示历史后,当前草稿不再丢失;命令面板关闭时,Mini 输入框的光标位置得以保留。修复了浅色和深色主题下粘贴芯片的对比度问题,和插件提供的主题无法实时更新的问题。(#63207)
桌面应用
桌面端引入了实验性的“最近会话”侧边栏,支持跨服务器排序、本地固定和拖拽调整顺序。最近会话限制为最近 7 天内的 30 条,用户可以隐藏或静音这些会话。Mermaid 图表现在支持最大化、缩放和平移。新增快捷键 Alt+Enter 将后续指令排在队列首位,Mod+Enter 用于引导下一个排队的提示词。修复了近期会话排序不稳定、浏览器面板在插件加载后不重试、SSH 连接后无法推进等问题。(#63585, #59250)
开发者接口与扩展
- SDK 事件订阅现在可以接收来自 MCP 事件订阅的实验性事件 experimental.mcp.event。
- 模型能力模式(schemas)现在会公开支持自由形式工具输入的特性。
- 会话吞吐量的计算起点调整为第一个流式 token。
- 扩展功能方面,基于 Promise 的工具现在可以通过 ToolContext.signal 协作式停止。新增了实验性的 session.fork 钩子。
- 修复了插件清理失败导致后续插件替换中断的问题。@opencode/plugin/effect 现在导出 Tool,让 execute.before 钩子可以使用 Tool.Error 拒绝调用,而无需额外导入 @opencode/schema/tool。(#63698)
本次更新还修复了大量 Bug,包括修复大小写不敏感文件系统下的重命名补丁、修复 Claude Agent 提示词变更后的陈旧思维、修复本地模型发现(Ollama, LM Studio, vLLM)等待超时导致远程端点无法列出模型的问题等。详细的修复列表涵盖了从 API 密钥发现到 GitHub Copilot 端点错误等多个方面。











