Area
Harness Adapter
Summary
opencode v1 的 serve --port=0 并不使用临时端口,而是绑定默认端口 127.0.0.1:4096(v2 才是真正的临时端口)。codexhost 为每个 Session 启动一个受管的原生 serve 进程,因此所有 v1 Session 共用同一个回环 origin。
Node 的全局 fetch 连接池按 origin 复用 keep-alive 连接。上一个受管 Server 退出后,针对同一 origin 的下一个请求可能复用连接池中已经失效的 socket,从而报 fetch failed。表现为:
- 恢复(resume / 重新 open)Session 时:
OpenCode health check failed: fetch failed
- 打开回滚(rollbackLastTurn)Session 时:
OpenCode Provider list failed: fetch failed
Expected behavior
同一 v1 CLI 下,连续创建 / 恢复 / 回滚 Session 都应成功;每个受管 Server 使用独立的回环端口(与 v2 的 --port=0 语义一致)。
Actual behavior
在 Linux(opencode v1.18.33)上,仓库自带的真实 CLI 测试可确定性复现:
packages/adapters/opencode/test/opencode-adapter.real.test.ts 在 resume 处失败:OpenCode health check failed: fetch failed
packages/adapters/opencode/test/opencode-adapter.rollback.real.test.ts 打开回滚 Session 时失败:OpenCode Provider list failed: fetch failed
同一提交在 opencode v2.0.18 上通过(v2 使用随机临时端口,origin 不会重复)。
Reproduction
环境:Arch Linux x86_64,Node v26.10.0,codexhost 源码 main(636b5013),opencode v1.18.33。
CODEXHOST_OPENCODE_REAL_COMMAND=<opencode v1 可执行文件> \
npx vitest run --config tests/vitest.config.js \
packages/adapters/opencode/test/opencode-adapter.real.test.ts \
packages/adapters/opencode/test/opencode-adapter.rollback.real.test.ts
观察到 resume / 回滚处报 fetch failed;ss -ltnp 可见多个受管 Server 依次绑定 4096。
codexhost version
源码 main(commit 636b5013,对应最新 release v0.10.2)
Codex Desktop version
不适用(直接运行 Adapter 的真实 CLI 测试)
OS / Architecture
Arch Linux x86_64
Installation
Source / 源码
Harness / Version
OpenCode v1.18.33(opencode-ai 最新 1.x);对照 OpenCode v2.0.18
Connection
Local
Redacted logs / Screenshots
Error: OpenCode health check failed: fetch failed
Error: OpenCode Provider list failed: fetch failed
Area
Harness Adapter
Summary
opencode v1 的
serve --port=0并不使用临时端口,而是绑定默认端口127.0.0.1:4096(v2 才是真正的临时端口)。codexhost 为每个 Session 启动一个受管的原生 serve 进程,因此所有 v1 Session 共用同一个回环 origin。Node 的全局 fetch 连接池按 origin 复用 keep-alive 连接。上一个受管 Server 退出后,针对同一 origin 的下一个请求可能复用连接池中已经失效的 socket,从而报
fetch failed。表现为:OpenCode health check failed: fetch failedOpenCode Provider list failed: fetch failedExpected behavior
同一 v1 CLI 下,连续创建 / 恢复 / 回滚 Session 都应成功;每个受管 Server 使用独立的回环端口(与 v2 的
--port=0语义一致)。Actual behavior
在 Linux(opencode v1.18.33)上,仓库自带的真实 CLI 测试可确定性复现:
packages/adapters/opencode/test/opencode-adapter.real.test.ts在 resume 处失败:OpenCode health check failed: fetch failedpackages/adapters/opencode/test/opencode-adapter.rollback.real.test.ts打开回滚 Session 时失败:OpenCode Provider list failed: fetch failed同一提交在 opencode v2.0.18 上通过(v2 使用随机临时端口,origin 不会重复)。
Reproduction
环境:Arch Linux x86_64,Node v26.10.0,codexhost 源码 main(
636b5013),opencode v1.18.33。观察到 resume / 回滚处报
fetch failed;ss -ltnp可见多个受管 Server 依次绑定4096。codexhost version
源码 main(commit
636b5013,对应最新 release v0.10.2)Codex Desktop version
不适用(直接运行 Adapter 的真实 CLI 测试)
OS / Architecture
Arch Linux x86_64
Installation
Source / 源码
Harness / Version
OpenCode v1.18.33(
opencode-ai最新 1.x);对照 OpenCode v2.0.18Connection
Local
Redacted logs / Screenshots