Skip to content

因为mcp服务启动失败导致创建的工作区删除失败 #19564

Closed

Description

@pkyes54

Description

根因追踪完成
从日志中找到了完整的时间线和两个根因:

时间线(来自 opencode-desktop_2026-03-29_06-47-25.log)
时间 事件
22:47:26 OpenCode 服务启动,监听 127.0.0.1:58605
22:47:44 Pencil MCP 以 quiet-wolf 为 cwd 启动 — 虽然你没打开过 quiet-wolf
22:47:44 Pencil MCP 启动失败:Connection closed
22:47:54 你点击删除 → EBUSY
22:49:07 第二次删除 → EBUSY
根因 1:MCP 服务占用文件句柄
OpenCode 桌面端启动时,会为所有工作区(包括 quiet-wolf)自动初始化 MCP 服务。

日志证据:

cwd=C:\Users\Administrator.local\share\opencode\worktree...\quiet-wolf
error=MCP error -32000: Connection closed local mcp startup failed
Pencil MCP 以 quiet-wolf 目录为工作目录启动 → 启动失败 → 但 sidecar 进程仍然持有对该目录的引用/句柄 → 你立即点删除 → EBUSY。

关键洞察:你根本不需要"使用"这个工作区。OpenCode 在创建它时就自动初始化了后台服务,这些服务持有锁。

根因 2:Windows 保留文件名 nul
在 proud-falcon 目录中发现了一个名为 nul 的文件:

-rw-r--r-- 1 Administrator 197121 0 Mar 29 06:55 nul
nul 是 Windows 保留设备名。日志中大量 snapshot 报错:

error: invalid path 'nul'
error: unable to add 'nul' to index
这是一个额外的 bug — OpenCode 的 snapshot 功能在 Windows 上会把某些输出重定向到 nul 文件,而不是丢弃到 /dev/null,导致创建了这个有问题的文件。

结论
根因 说明 责任方
MCP 服务自动初始化 创建工作区后立即以该目录为 cwd 启动 MCP 服务,即使工作区未被使用 OpenCode 桌面端
句柄未及时释放 MCP 启动失败后,sidecar 进程未清理对目录的引用 OpenCode 桌面端
Windows 保留名 nul snapshot 功能在 Windows 上创建了 nul 文件,导致 git 报错 OpenCode 桌面端
这不是你的操作问题,是 OpenCode 桌面端在 Windows 上的工作区生命周期管理 bug。

22:47:44 Pencil MCP 以 quiet-wolf 为 cwd 启动 → 失败退出
↓
OpenCode sidecar 仍在执行内部操作:
- 读取 .opencode/ 配置
- 发现技能文件
- 初始化 LSP
- 写入数据库记录
↓
22:47:54 你点击删除(仅 10 秒后)
↓
sidecar 还持有目录句柄 → EBUSY
核心问题:OpenCode sidecar 在初始化每个工作区时会打开目录句柄,但没有及时释放。禁用 MCP 不影响 sidecar 对目录的持有。

完整根因链
用户创建 quiet-wolf 工作区
↓
OpenCode sidecar 自动初始化该工作区的 MCP 服务
(Pencil MCP 以 quiet-wolf 为 cwd 启动)
↓
MCP 启动失败,但 sidecar 仍在执行其他初始化:

  • 扫描 .opencode/ 配置
  • 发现技能文件
  • 注册 LSP 服务
  • 写入 opencode.db (WAL 模式)
    ↓
    用户立即点击删除(sidecar 还没释放目录句柄)
    ↓
    EBUSY: resource busy or locked

关键点:

Pencil MCP 本身不是锁源(它已退出)
OpenCode sidecar 进程 (opencode-cli.exe) 才是持锁者
你禁用 MCP 只阻止了新 MCP 启动,不影响 sidecar 对目录的持有
数据库 (opencode.db WAL 文件) 也记录了 quiet-wolf 的 sandbox 引用

当前我的解决办法:关闭opencode,运行两条ai给的命令手动删除。我不是技术不懂这些东西,但我觉得我再用mcp还是会出现这些问题。

Plugins

No response

OpenCode version

1.3.3 桌面端

Steps to reproduce

1、一个无法正常启动的mcp
2、配置这个mcp,我使用的是pencil
3、opencode桌面端点击新建工作区
4、然后直接删除这个工作区
5、报错无法删除

Screenshot and/or share link

No response

Operating System

win10

Terminal

win 桌面端

Activity

  1. github-actions commented on Mar 28, 2026

    @github-actions
    Contributor

    This issue might be a duplicate of existing issues. Please check:

    If your issue is not covered by these, please add a comment there explaining how your case differs, or a maintainer will triage accordingly.

  2. removed
    bugSomething isn't working
    webRelates to opencode on web / desktop
    on May 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions