1. 前言
我一直同时使用 Claude Code、Omp 和 OpenCode,OpenCode 最近版本是 1.18.4,但是 OpenCode 从来没有进步的感觉。
这篇文件说明了 OpenCode 的历史问题。参考 InfoQ 文章《16 万 Star 的 OpenCode 彻底重写:API 全部重做、Bun 换 Node、桌面端迁移 Electron》,OpenCode 的发展经历了一个复杂而曲折的过程。本文将从以下几个维度对 OpenCode 1.x 的历史问题进行系统分析。
1.1 OpenCode 项目概况
| 指标 | 数据 |
|---|---|
| GitHub Stars | 188K+ |
| Forks | 23.7K+ |
| 月活跃开发者 | 7.5M+ |
| 贡献者 | 900+ |
| 总提交数 | 13,000+ |
| 仓库 URL | https://github.com/anomalyco/opencode |
| 创建时间 | 2025-04-30 |
| 当前最新 | v1.18.4 (2026-07-20) |
| 主要语言 | TypeScript |
1.2 OpenCode 的历史演变
OpenCode 的发展可以划分为两个主要阶段:
第一阶段:sst/opencode(早期版本)
OpenCode 最初由 SST 团队开发,早期版本代码仓库为 sst/opencode。这一阶段 OpenCode 主要是一个面向开发者的 CLI 工具,支持基本的 AI 编码代理功能,使用 Bun 作为运行时环境。早期版本虽然获得了社区关注,但也积累了不少技术债务和功能局限。
第二阶段:anomalyco/opencode(重写版本)
2025 年 4 月,OpenCode 被 Anomaly 公司收购并完成彻底重写。新版代码仓库迁移至 anomalyco/opencode,带来了以下重大变化:
- API 全面重做:旧版 API 被废弃,新的 API 体系重新设计,不再兼容旧版
- 从 Bun 迁移到 Node.js:解决 Bun 兼容性问题,扩大跨平台支持
- 桌面端迁移至 Electron:从纯 CLI 工具扩展为桌面应用,支持 macOS、Windows 和 Linux
- Zen 模型服务集成:内置经过测试和基准测试的 AI 模型集合,提供一致的性能体验
这一重写带来了巨大的社区反响 — Star 数从早期水平飙升至 188K+,但也意味着 旧版 1.x 用户需要完全迁移到新版架构。
1.3 为什么我觉得"没有进步"
从我实际使用感受来看,OpenCode 1.x 的"没有进步感"主要源于以下几个方面:
- 核心体验反复波动:provider API 变更导致模型连接不稳定,频繁的兼容性问题
- 性能问题长期存在:内存泄漏、CPU 占用过高、响应延迟等问题反复出现
- 功能迭代与稳定性不成正比:新功能上线快,但旧功能修复慢
- 中文支持薄弱:对中文用户的本地化支持不足
接下来,我将逐一深入分析这些问题。
2. OpenCode 中文问题
2.1 中文 UI 本地化缺失
OpenCode 的界面、配置文件、错误提示、帮助文档等全部为英文,对非英文用户存在天然的使用障碍。
具体问题:
- 配置文件的术语理解:如
provider、agent、subagent、permission等术语,中文用户需要反复对照理解 - 错误提示的歧义:当 API 调用失败时,返回的英文错误信息(如
Bearer token expired、401 Unauthorized)对新手用户不够友好 - 文档生态以英文为主:社区讨论、Issue、PR 描述全部以英文进行,中文用户参与贡献存在语言门槛
2.2 中文语境下的特殊使用场景
中文开发者在使用 OpenCode 时,还会遇到一些特定的问题:
- 中文注释的代码理解:OpenCode 对包含大量中文注释的代码文件的理解能力,与其对英文代码的理解能力是否一致,缺乏充分测试
- 中文文件名/路径兼容性:虽然理论上 Node.js 支持 UTF-8 文件路径,但在实际使用中,某些工具链可能对中文路径的处理不够稳健
- 中文输出格式化:当 OpenCode 返回中文内容时,终端渲染和复制粘贴的兼容性可能存在编码问题
2.3 与 Claude Code 的对比
Claude Code 在中文支持方面做得相对较好,其开发团队 Anthropic 本身就重视多语言支持。相比之下:
- Claude Code 的中文 UI 和提示有更好的本地化
- Claude Code 的文档有官方中文翻译
- OpenCode 的中文支持主要依赖社区自发贡献,缺乏官方投入
建议方向:OpenCode 可以考虑建立社区驱动的中文翻译项目,至少在关键配置项和错误信息上提供中文对照。
3. OpenCode 处理能力问题
3.1 内存泄漏问题(Memory Leak)
这是 OpenCode 最严重的长期问题之一。
问题表现
OpenCode 在长时间使用后会出现明显的内存增长,从正常使用到占用 1-2GB 甚至更多内存。官方甚至专门建立了 #20695 Memory Megathread 来集中收集和修复这个问题,该 Issue 已有 119 条讨论,说明问题影响面之大。
官方应对措施
官方提供了两种堆快照收集方式:
- 手动快照:使用
Ctrl+P选择 heap snapshot,手动上传到 Dropbox - 自动快照:设置环境变量
OPENCODE_AUTO_HEAP_SNAPSHOT=1,当 RSS 超过 2GB 时自动写.heapsnapshot文件
可能的原因分析
- 订阅/事件监听器泄漏:Issue #7032 和 #7914 专门提到
fix(core): add dispose functions to prevent subscription memory leaks,说明代码中存在未正确清理的订阅 - Session 历史数据累积:每次对话的上下文信息可能在内存中未被有效释放
- 桌面端 Electron 特性:Electron 应用天然存在多进程架构,内存管理比纯 Node.js 应用更复杂
对用户体验的影响
对于大型项目或多轮对话场景,内存泄漏会导致:
- 应用响应变慢,操作卡顿
- 系统整体性能下降(尤其是内存有限的开发机器)
- 频繁重启 OpenCode 以释放内存,打断工作流
3.2 响应性能问题
GPT 模型响应延迟
Issue #29079 GPT Models takes too long to respond 已有 118 条讨论,是当前的热门 Issue 之一。高延迟主要可能来源于:
- 模型选择与路由:OpenCode 支持多个 provider(OpenAI、Anthropic、Gemini、Kimi 等),provider 选择和路由逻辑可能引入额外延迟
- 上下文窗口管理:OpenCode 需要构建完整的上下文发送给模型,上下文越长,处理时间越久
- 网络链路:从 WSL/国内网络访问海外 API 服务器,网络延迟本身就是一个因素
CPU 占用过高
Issue #30086 High CPU usage in newer versions of OpenCode 已有 33 条讨论,说明新版 OpenCode 在某些场景下 CPU 占用异常。可能原因:
- TUI 渲染开销:终端界面的实时更新(代码高亮、diff 展示、进度条)可能消耗大量 CPU
- 后台进程:Electron 应用的多进程模型 + Node.js 事件循环的开销
- 无效循环:如 Issue #2940
[BUG] OpenCode just hangs randomly after receiving instructions(39 条评论)描述的无响应挂起问题
3.3 工具执行与文件写入问题
“Preparing write…” 卡住
Issue #11112 always stuck at “Preparing write…” 已有 76 条讨论,是一个困扰许多用户的顽固问题。表现为:
- LLM 返回了文件修改内容,但 OpenCode 卡在 “Preparing write…” 状态
- 工具执行被中止(
Tool execution aborted),用户需要手动重试 - 重试后又可能再次卡住,形成循环
可能的根因
- 文件系统锁竞争:多个 subagent 同时写文件时的竞争条件
- 权限检查阻塞:权限自动接受(auto-accept)逻辑的缺陷
- 文件 diff 计算开销:大文件 diff 计算可能耗时过长
3.4 模型兼容性与 API 问题
Claude Max 连接失败
Issue #7410 Broken Claude Max 是关闭 Issue 中评论数最多的(386 条评论),说明这是一个广泛且严重影响使用的问题。即使官方修复后,社区中仍存在反复。
Copilot 认证与计费问题
Issue #8030 Copilot auth now sets far too many requests as “user” 已有 225 条评论,Issue #18267 Claude code OAuth broked!? 有 154 条评论。这些反映了 Copilot 集成的认证和计费逻辑存在严重缺陷。
Azure OpenAI 端点问题
Issue #13999 Azure OpenAI Cognitive Services endpoint 提到 Responses API 未正确附加 ?api-version 参数,导致无法使用 Azure 托管的模型。这是企业用户的重要痛点。
3.5 平台兼容性问题
Windows 支持
Issue #631 Windows Support 是 OpenCode 最早期的 Issue 之一,已有 207 条评论,是评论数第三多的 Issue。这反映了 Windows 平台的兼容性一直是 OpenCode 的短板。
具体问题:
- Bun 运行时在 Windows 上的兼容性问题(Bun 虽然支持 Windows,但生态不如 Node.js)
- 文件路径分隔符(
\vs/)的处理问题 - Windows 特有的权限模型和进程管理
macOS 构建问题
近期 Issue #38211 bug(desktop): macOS x64 build shows prohibited icon and cannot run on Intel Mac 表明即使在新版本中,macOS Intel 架构的构建仍存在缺陷。
3.6 安全与沙箱问题
沙箱需求
Issue #2242 Is there a way to sandbox the agent? 已有 80 条评论,反映了用户对代码执行安全性的担忧。OpenCode 的 agent 具有文件读写和命令执行能力,在生产环境中缺乏沙箱机制是一个安全隐患。
权限管理
Issue #16331 Permissions ignored 已有 40 条讨论,说明权限控制系统存在漏洞,可能导致 agent 执行未授权的文件操作。
3.7 并发与 Subagent 问题
Subagent 嵌套问题
Issue #12661 [FEATURE]: Add Agent Teams Equivalent or Better 有 36 条讨论,而 v1.18.2 的更新中专门提到了 Stopped subagents from launching nested subagents by default,说明 subagent 的嵌套行为曾是一个需要控制的问题。
消息分页
Issue #6548 [FEATURE]: Paginated message loading for long sessions 和 #8535 feat(session): bi-directional cursor-based pagination 反映了长会话的消息加载性能问题。当对话历史很长时,加载和渲染所有消息变得非常慢。
4. 总结与展望
4.1 问题汇总
| 问题类别 | 严重程度 | 代表 Issue | 评论数 |
|---|---|---|---|
| 内存泄漏 | 🔴 高 | #20695 Memory Megathread | 119 |
| Claude Max 连接 | 🔴 高 | #7410 Broken Claude Max | 386 |
| Copilot 认证/计费 | 🔴 高 | #8030 Copilot auth issues | 225 |
| 响应延迟 | 🟡 中 | #29079 GPT slow response | 118 |
| 文件写入卡住 | 🟡 中 | #11112 Preparing write stuck | 76 |
| Windows 兼容 | 🟡 中 | #631 Windows Support | 207 |
| CPU 占用过高 | 🟡 中 | #30086 High CPU usage | 33 |
| 沙箱安全 | 🟠 中高 | #2242 Sandboxing | 80 |
| 中文本地化 | 🟢 低 | — | — |
4.2 与 Claude Code 的差距
从我同时使用 Claude Code 和 OpenCode 的体验来看,两者的主要差距在于:
- 稳定性:Claude Code 的 provider 连接更稳定,较少出现需要反复重试的情况
- 性能:Claude Code 的内存管理和响应速度更成熟
- 工具链集成:Claude Code 与 GitHub Copilot 的集成更顺畅
- 用户体验:Claude Code 的错误提示和交互设计更精细
4.3 为什么 OpenCode 仍有价值
尽管问题不少,OpenCode 仍然值得关注和继续使用:
- 开源免费:核心功能免费,不依赖特定 AI 提供商
- 多模型支持:支持 Claude、GPT、Gemini、Kimi 等多个模型,灵活性高
- 隐私优先:不存储用户的代码或上下文数据
- 社区活跃:900+ 贡献者,188K+ Stars,社区生态活跃
- 持续迭代:从 v1.17.19 到 v1.18.4,仅 7 天内发布了 5 个版本,迭代速度极快
4.4 个人使用建议
- 多工具并行使用:不要依赖单一编码代理,OpenCode + Claude Code + 其他工具搭配使用
- 定期重启:鉴于内存泄漏问题,建议每使用一段时间(如 2-3 小时)重启 OpenCode
- 关注更新日志:OpenCode 迭代非常快,每次更新都可能修复或引入新问题
- 关注社区 Issue:遇到问题的先搜索 GitHub Issues,很可能已有解决方案
- 考虑使用 Zen 模型服务:OpenCode 的 Zen 服务提供经过基准测试的模型,可能比直接使用各提供商 API 更稳定
4.5 未来的关注点
- 内存泄漏的根治:这是影响用户体验最严重的技术债
- Windows 平台的完善:随着用户基数的扩大,Windows 兼容性必须提升
- 中文本地化的推进:对于中文开发者,这是影响使用意愿的重要因素
- 安全沙箱机制:企业用户尤其关注 agent 执行的安全性
- 与 Claude Code 的功能对齐:在核心功能体验上缩小差距
本文基于 GitHub 公开 Issue、Release Notes 和社区讨论整理,数据截至 2026-07-22。

506

被折叠的 条评论
为什么被折叠?



