Bug: Windows 盘符根目录(C:\ / D:\)作为项目目录时无法创建会话(fs.mkdir EPERM) #1268
leng870613
started this conversation in
General
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Category(分类)建议: 选 General(如果没有 General 就选最接近的 Feedback / Q&A)
Title(标题):
Bug: Windows 盘符根目录(C:\ / D:\)作为项目目录时无法创建会话(fs.mkdir EPERM)
Body(正文):
问题描述
在 Windows 上,把盘符根目录(如
C:\或D:\)选为项目目录/工作区时,工作区可以正常创建,但在该工作区里新建会话必然失败。失败在界面上是静默的:会话没有出现、工作区始终为空,只有浏览器控制台会打印new session failed: ...,看起来像是"新建会话跳到了别的工作区"。这不是沙箱/权限问题——工作区记录本身创建成功,只有会话创建这一步失败。
环境
@deepseek-ai/dsh0.1.0-rc.6(通过npx @deepseek-ai/dsh web运行)根因
dsh-host-apiproxy的ensureSession会无条件执行fs.mkdir(cwd, { recursive: true })来"确保项目目录存在":在 Windows 上,对已存在的盘符根目录(
D:\、C:\)执行fs.mkdir(recursive: true)会抛出EPERM——这是 Node.js 在 Windows 上的一个怪癖,违反了mkdir -p"目录已存在则不报错"的语义。普通已存在目录则完全正常。最小复现:通过 GUI 自身的 API 复现
session.create时拿到的原始报错:这个问题不只影响"选盘符根做工作区":如果从盘符根目录启动 harness(
defaults.cwd为盘符根),同样会踩中。复现步骤
npx @deepseek-ai/dsh web启动;D:\;new session failed: ... EPERM: operation not permitted, mkdir 'D:\'。期望行为
以盘符根作为 cwd 正常创建会话(至少也应给出用户可见的明确报错,而不是静默失败)。
修复建议
在
ensureSession(dsh-host-apiproxy)中容忍"路径已作为目录存在"的情形——遇到EPERM/EEXIST时 stat 确认是目录则放行:附注
我已在本地安装副本上应用了上述补丁并验证语法通过;此贴用于让官方修复进入 upstream。
All reactions