Repository navigation
Replies: 2 comments
|
补充:独立复现(非本帖作者)+ 最新版 0.2.2-rc.1 仍未修的证据 环境:Windows 11 家庭中文版 10.0.26200 x64; 1. 补充证据一:这不是"某次更新引入的",标签早就落地了
⇒ "更新把默认预设改成 workspace-write 才崩"在源码上不成立;而"回退到旧版本仍然崩"正好与"标签早已常驻"一致。 2. 补充证据二:0.2.2-rc.1(当前最新)仍未修按
⇒ 这也解释了为什么重装无效、更换 3. 补充证据三:被打标的一棵树会"次生不可修"根目录同时被写入 4. 现成的守卫可以照抄
最小补丁建议:在 5. 我们这边的规避(有效,但不是修复)把 profile 的 6. 复核命令# 标签:根 / 安装树 / exe
icacls D:\DeepseekHarness
icacls "D:\DeepseekHarness\Desktop\DeepSeek Harness.exe"
# 预检收据:证明"何时、以哪个根"跑过预检
Get-ChildItem D:\DeepseekHarness\home\dsh-ops\acl-backups\*.json |
ForEach-Object { (Get-Content $_ -Raw | ConvertFrom-Json).workspace }English TL;DR — Independent reproduction (different user, different machine): same layout — install tree and |
|
复发记录(2026-11-11 晚,0.2.2-rc.1/rc.2 均在场)
|
Uh oh!
There was an error while loading. Please reload this page.
Uploading DSH-崩溃反馈-完整性标签与沙箱自伤.md…
DSH 桌面版崩溃反馈:workspace 与安装目录同树时,沙箱完整性标签导致启动失败且重装无效
@deepseek-ai/dsh-desktop0.2.1-rc.2(Electron 44.7.0 / Node 24.21.0)workspace-write;workspace 根 =E:\AI-Agent\DeepseekE:\AI-Agent\Deepseek\Harness(位于 workspace 根之下)修订记录
Get-Acl C:\正常(返回NT SERVICE\TrustedInstaller),且PSModulePath包含C:\Windows\system32\WindowsPowerShell\v1.0\Modules;因此「本机 5.1 缺该模块」不成立,故障范围收窄为 DSH 派生的预检子进程环境。ready/EXIT=0,确认脚本与机器正常;缺陷定性为「预检所需权限被预检所在沙箱剥夺」的自举循环,并附内部排查线索(dsh-pwsh-sandbox、@dsh-ops/*-win32-x64、S-1-4-*授权)。1. 摘要
把 DSH 安装目录放在
workspace-write的 workspace 根之下后,DSH 沙箱对 workspace 根设置的完整性标签/安全元数据随目录继承覆盖了应用安装树,并继续覆盖后续重装产物。结果:应用启动即崩(渲染进程launch-failed、退出码0x80000003),且无法写入自身 AppData 状态目录。卸载重装、更换 DSH_HOME/APPDATA 均无效;只有管理员把安装树的完整性级别改回Medium后应用才恢复。2. 现象(可观察)
0x80000003(STATUS_BREAKPOINT,Chromium 致命断言);--no-sandbox后不再崩于该点。Error: Desktop renderer exited: launch-failed(logs\crash-2026-10-17T11-41-14-202Z-renderer.log:12)。%APPDATA%\@deepseek-ai\dsh-desktop创建单实例锁与 GPU 缓存,ACCESS_DENIED (0x5);随后主进程以process.exit结束。Medium;留在该树中则为Low(外部排查会话的对照实验)。Medium后,应用正常开窗。3. 最小复现(供厂商验证)
若第 3 步预检被跳过(例如策略非
workspace-write),可直接用icacls E:\repro /setintegritylevel "(OI)(CI)Low" /t后重装一次,复现"重装仍坏"。4. 关键证据
%APPDATA%\@deepseek-ai\dsh-desktop\logs\crash-2026-10-17T11-41-14-202Z-renderer.log(launch-failed);同目录crash-2026-10-16T03-11-10-331Z-host.log:12记录 host 退出1073807364(0x40010004)。dsh-ops/bin/prepare-workspace.ps1:17注释原文WRITE_OWNER, needed to set the sandbox integrity label;dsh-ops/lib/workspace-preparation.js:34用 Windows PowerShell 5.1 执行该预检,且仅在mode === 'workspace-write'时触发。diagnose-windows-sandbox-acl明确写明「DSH 的S-1-4-*授权与 Everyone 的DeleteSubdirectoriesAndFiles拒绝是预期状态,不是冲突」;这两个条目恰好出现在被标记的 workspace 根上,说明该目录确被 DSH 沙箱改写过。(OI)(CI)继承 ⇒ 重装写入的新文件继续继承Low。icacls <安装树> /setintegritylevel "(OI)(CI)Medium" /t后,--version与正常启动均恢复正常。5. 我对机制的判断(含不确定项,请勿直接采信为定论)
Medium后故障消失;重装无效是因为缺陷在目录级元数据而非文件。launch-failed。外部排查中的"同文件换目录 → IL 变化"对照,可能混入了排查工具自身沙箱令牌的影响(该实验同时改动了多个变量)。6. 影响与成本
launch-failed,缺少完整性级别等关键上下文,用户与客服都难以定位。S-1-4-*与 Everyone 删除拒绝恰恰是沙箱正常足迹;用户若按字面清理,可能破坏沙箱授权。7. 建议修复(按优先级)
Medium)Integrity Level、workspace 预检结果、AppData 写权限自检结果(现在只能靠外部脚本自测)8. 附带发现的独立缺陷:workspace 预检子进程环境导致所有 shell 工具不可用
现象:在本机日常使用中,所有 shell 工具(bash / pwsh)均在执行前失败,且不是权限拒绝:
已排除:普通 Windows PowerShell 5.1 会话中
Get-Acl C:\正常(返回 Owner =NT SERVICE\TrustedInstaller),PSModulePath含C:\Windows\system32\WindowsPowerShell\v1.0\Modules;Modules\Microsoft.PowerShell.Security\仅有.psd1、实现 DLL 在 GAC(93,696 B)属于该 Windows 版本的正常布局,不是缺 DLL。判定实验(2026-10-17,决定性):用与 DSH 完全相同的标志在普通会话执行同一脚本——
⇒ 脚本、机器、参数组合均正常(且该次未改动任何 ACL,说明 WRITE_OWNER 已具备)。唯一变量是「谁派生这个子进程」。因此缺陷位于 DSH 的派生环境:令牌与
PSModulePath二者之一或叠加。内部排查线索(供厂商参考,本机可见):profile 中存在
@deepseek-ai/dsh-pwsh-sandbox组件与内置运行时@dsh-ops/bash-win32-x64、@dsh-ops/pwsh-win32-x64;workspace 根上恰有 DSH 自己写入的S-1-4-*受限 SID 授权(见 §4)。这与「shell 侧使用受限令牌」一致;若该令牌被沿用到预检子进程,则Get-Acl所在的模块装载与 GAC 访问会被访问检查拒绝,而预检又必须在该 workspace 根上取 WRITE_OWNER——这是一个自举循环:预检需要的权限,正好被预检所在的沙箱剥夺。因此故障范围:仅在 DSH 以
spawn(..., ['-NoProfile','-NonInteractive','-File', script, ...])派生的那个 PS 5.1 子进程里出现。可能方向(需厂商内部确认):PSModulePath改写/裁剪后传给子进程(例如只保留 pwsh 7 的模块路径),导致 5.1 自动加载失败;供厂商复现的判定命令(在普通 PS 5.1 中直接跑预检脚本,绕开 DSH):
ready/prepared且退出码 0 ⇒ 脚本与机器正常,缺陷在 DSH 的派生环境(上述 1–3);Get-Acl找不到 ⇒ 缺陷在脚本内部逻辑/参数。建议:
System.Security.AccessControlAPI,不再依赖 PS 5.1 的模块自动加载;PSVersion与PSModulePath。当前形态是:一个用于“准备权限”的辅助步骤一旦失败,整条 bash/pwsh 工具链全部不可用,用户侧表现为“DSH 的命令行彻底坏了”,且 DSH 之外无法自行诊断。9. 请一并附上的取证命令(便于厂商复现)
10. 附件清单
crash-2026-10-17T11-41-14-202Z-renderer.log(rendererlaunch-failed)crash-2026-10-16T03-11-10-331Z-host.log(host 退出0x40010004)dsh-ops/bin/prepare-workspace.ps1、dsh-ops/lib/workspace-preparation.js(含行号)icacls输出(安装树根目录、Harness、exe)——该项现场未落盘,需按附录 A.6 补采;第 1–3 项原文已内嵌于附录 A。附录 A:相关日志与命令输出(原文摘录)
A.1 渲染进程启动失败日志(完整,17 行)
文件:
%APPDATA%\@deepseek-ai\dsh-desktop\logs\crash-2026-10-17T11-41-14-202Z-renderer.logA.2 host 进程退出日志(完整 33 行;其中 11 行为 rea MCP 工具日志,已明确省略)
文件:
%APPDATA%\@deepseek-ai\dsh-desktop\logs\crash-2026-10-16T03-11-10-331Z-host.log(版本 0.2.0-rc.2,即更新前)A.3 DSH 内 shell 工具报错(GBK→UTF-8 捕获,语义还原)
DSH 每次执行 bash/pwsh 前的 workspace 预检失败,工具调用直接返回该错误;用户侧表现为“所有命令行工具不可用”:
(原始捕获片段中的中文为乱码,例如
��ģ�顰Microsoft.PowerShell.Security,属编码显示问题,不影响语义与判定。)A.4 用户侧实测输出(普通 Windows PowerShell 5.1)
测试 1:
Get-Acl C:\(外层双引号被父 shell 展开,导致模块路径被当命令执行;但末尾Get-Acl仍正常返回)测试 2:以与 DSH 相同标志执行同一预检脚本
实测
PSModulePath(三路径,含系统模块目录):A.5 相关源码行(DSH 0.2.1 安装包内)
dsh-ops/bin/prepare-workspace.ps1:dsh-ops/lib/workspace-preparation.js:A.6 未随本反馈保留的日志(如需请按下列命令补采)
icacls修复前/后的原始输出(安装树根、Harness、exe 三级)——现场未落盘。补采:Chromium
--enable-logging=stderr --v=1的完整 stderr——排查中曾重定向到%TEMP%,会话结束清理后未留存;如需复采可在启动命令追加该参数并保留输出。退出码换算:
1073807364 = 0x40010004(DBG_TERMINATE_PROCESS);0x80000003 = STATUS_BREAKPOINT(Chromium 致命断言触发点)。All reactions