Repository navigation
Replies: 3 comments
|
Independent confirmation — but the drifted packages here are the profile's direct dependencies, not only transitive ones. Environment: DSH desktop 0.2.1-rc.3 (in-app upgrade from 0.2.1-rc.2; the updater had already placed What differs from the report's trigger
So there is a second path to the same silent loss: any profile package the upgrade does not own stays pinned, and every runtime bump disables it. User-added provider plugins (browser-use / computer-use / playwright-mcp / cua-driver) are exactly that class, so for those users the failure repeats on every upgrade, not just one regressed transitive dep. Reproduction check (read-only)(Get-Item "<install root>\DeepSeek Harness.exe").VersionInfo.FileVersion # 0.2.1-rc.3
Get-Content "$env:USERPROFILE\.dsh\profiles\desktop\package.json" # "@deepseek-ai/dsh-browser-use": "0.2.1-rc.2", ...
(Get-Content "$env:USERPROFILE\.dsh\profiles\desktop\node_modules\@deepseek-ai\dsh-browser-use\package.json" -Raw |
ConvertFrom-Json).peerDependencies.'@deepseek-ai/dsh-brand' # 0.2.1-rc.2After Fix proposals, tied to the sources at tag
|
|
Original reporter here (OP of this discussion) — thank you for the independent confirmation. Two additions that may help triage and other users: 1. Two distinct residue paths converging on the same gate. 2. Spawn probe — proving “never spawned” without stderr access. where Two small confirmations: (a) the profile-local |
|
Update — recurrence on 0.2.1-rc.5 (2026-10-30), confirming the "repeats on every upgrade" prediction. The in-app upgrade to 0.2.1-rc.5 reproduced the exact same silent loss:
This tightens the pattern: it is not a one-off transitive-resolution miss (the rc.3 incident) — the updater simply does not touch any profile re-pin-after-upgrade.ps1 (run after every in-app upgrade, then restart the harness)$ErrorActionPreference = "Stop"
$asar = "C:\Users\<you>\AppData\Local\Programs\DeepSeek Harness\resources\app.asar"
$prof = "$env:USERPROFILE\.dsh\profiles\desktop"
$node = "$env:USERPROFILE\.dsh\dsh-runtimes\dsh-primary-runtime\dependencies\node\bin\node.exe"
$pnpm = "$env:USERPROFILE\.dsh\dsh-runtimes\dsh-primary-runtime\dependencies\pnpm\bin\pnpm.mjs"
$ver = & $node -e "const fs=require('fs');const fd=fs.openSync(process.argv[1],'r');const h=Buffer.alloc(16);fs.readSync(fd,h,0,16,0);const hs=h.readUInt32LE(4);const jl=h.readUInt32LE(12);const b=Buffer.alloc(jl);fs.readSync(fd,b,0,jl,16);const idx=JSON.parse(b.toString('utf8'));const e=idx.files.dsh.files['package.json'];const db=Buffer.alloc(e.size);fs.readSync(fd,db,0,e.size,8+hs+parseInt(e.offset,10));console.log(JSON.parse(db.toString('utf8')).version)" $asar
Write-Output "runtime: $ver"
$pkg = Get-Content "$prof\package.json" -Raw | ConvertFrom-Json
$specs = @($pkg.dependencies.PSObject.Properties |
Where-Object { $_.Name -like '@deepseek-ai/*' } |
ForEach-Object { "$($_.Name)@$ver" })
$env:PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD = "1"
Push-Location $prof
& $node $pnpm add --save-exact @specs
if ($LASTEXITCODE -ne 0) { throw "pnpm add failed" }
Pop-Location
foreach ($s in $specs) {
$n = $s.Substring(0, $s.LastIndexOf('@'))
$v = (Get-Content "$prof\node_modules\$n\package.json" -Raw | ConvertFrom-Json).version
Write-Output ("{0}: {1} [{2}]" -f $n, $v, $(if ($v -eq $ver) { "OK" } else { "MISMATCH" }))
}
Write-Output "done - restart DeepSeek Harness"Will follow up once the restart verification confirms tools are back on rc.5. |
Uh oh!
There was an error while loading. Please reload this page.
Environment
desktop, MCP plugins registered viacordis.patch.yml(@deepseek-ai/dsh-mcp-client, stdio transport; one Playwright MCP entry + one Telegram MCP entry)TL;DR
After the in-app upgrade to 0.2.1-rc.3, all
mcp__<server>__*tools silently disappear. The upgrade reinstalls the profile dependency tree but leaves the transitive plugin package@deepseek-ai/dsh-mcp-clientat 0.2.1-rc.2 (lockfile/range resolution — it is not a direct dependency of the profile). Because the plugin has noengines.dshand instead pins every@deepseek-ai/dsh-*peer to the exact version0.2.1-rc.2, the boot-time compatibility gate (dsh-app-boot→evaluatePluginCompatibility) finds unmet requirements and rejects the plugin before the stdio child is ever spawned. Nothing is logged anywhere user-discoverable, andfailOnStartupErrornever comes into play because no connection attempt happens.Fix:
pnpm add --save-exact @deepseek-ai/dsh-mcp-client@0.2.1-rc.3inside the profile → restart → harness spawns the MCP child again (verified via process command line) → all 23mcp__playwright-mcp__*tools return in new sessions.Evidence chain
profiles/<name>/.playwright-mcp/).profiles/<name>/package.jsondirect deps pinned to exact rc.3 (e.g.@deepseek-ai/dsh-subagent-codex: 0.2.1-rc.3), butnode_modules/@deepseek-ai/dsh-mcp-client= 0.2.1-rc.2 (pnpm-lock resolves it as rc.2; transitive only).commandforcmd.exeunconditionally appending to a log file, then launching the original command via a Node wrapper that logsrequire()errors. After boot the log file did not exist → the plugin command was never spawned.dsh-app-boot): noengines.dsh→unmetRequirements()requires every@deepseek-ai/dsh-*peer to satisfy the runtime version. The rc.2 manifest pins peers to exact0.2.1-rc.2→ unmet → rejected pre-spawn.Ruled out during diagnosis (for triage hygiene)
apps/cli/reference/README.md). Launching Chrome from inside the agent sandbox does fail (0xFFFF7001— see [Bug/建议] Windows 沙箱内无法启动 Chromium 系浏览器(0x80000003)—— 根因定位与修复建议 #6544), but that pre-existing limitation is unrelated to this path.cordis.patch.ymlentry and all referenced paths were intact the whole time.0xFFFF7001is Crashpad's no-dump exit path, not a specific "sandbox denied" code.Asks for maintainers
@deepseek-ai/*packages with the new runtime rc (or warn when a profile-resolved plugin version ≠ runtime rc), so exact-peer gates don't start failing after an in-app upgrade. (Possibly related:minimumReleaseAge/minimumReleaseAgeExcludeinteraction with range resolution during upgrade — unconfirmed.)evaluatePluginCompatibilityrejects a plugin at boot. Currently the rejection is completely silent (logs.dbhas zero rows;failOnStartupErroris unrelated because no connection is ever attempted).failOnStartupErroronly governs post-connection activation behavior, and document the profile-vs-runtime module resolution precedence for patch entries (name:resolution order; whether/when the runtime mapping shadows stale profile-local copies).Notes
compatibility.jsonexact-version exemption ("@deepseek-ai/dsh-mcp-client@0.2.1-rc.2": ["0.2.1-rc.3"]) would also have unblocked boot, but updating the package is the correct remedy.All reactions