Replies: 2 comments
|
Your diagnosis and your patch are both correct. Three things I can add: the four reports in this cluster are one mechanism, the root cause is a single default flip that was already partially reverted, and 1. This is one mechanism across four reports
Identical signature in all four: the first tool call fails with 2. Root cause: one line, and its desktop half was already reverted
const resolutionMode = packaged ? 'runtime' : options.resolutionMode ?? 'runtime'
The same commit also flipped a second carrier, and that half was undone 39 minutes later by the same author: Both commits are in 3. Why the flip splits module identity
Two URLs ⇒ two module instances. The crash site is
4. Your patch is sufficient — and here is why that is a finding, not a guess
I verified the two halves independently: a two-file micro-repro with the same-description 5. What the symbol fix does not restoreIt removes the symptom without restoring the invariant the note states — "Restart preserves one package identity per process" (its Alternatives section: "A resolution-table swap cannot invalidate every live module instance or object reference"). Two instances remain, so once the two planes hold different versions the failure mode changes from a loud crash to a silent mismatch. That is reachable here: #7108's repro builds Which argues for treating the default (or the isolation-healing path that link mode used to run) as the primary fix, with |
|
Worth adding since not everyone can patch: you don't need a fix to get tool calls working on the shipped 0.1.6-alpha.2. Run the built entry point instead of the tsx one, Same machine, ESM resolve hook on both launches: under 补一句:不是所有人都能改代码打补丁,而在原样的 0.1.6-alpha.2 上不一定要打补丁才能让工具调用跑起来。换成构建产物入口 同一台机器上用 ESM resolve 钩子看两种启动: |
Uh oh!
There was an error while loading. Please reload this page.
Summary
The Web runtime failed during bash execution with:
Root cause
agent-loopand the profile-loadedToolRuntimeresolved@deepseek-ai/dsh-toolsthrough different module URLs in the same Node process. Each module instance created its ownTOOL_RUNTIME_SCHEDULERsymbol withSymbol(...). The symbols had the same description but different identity, soctx.tools[TOOL_RUNTIME_SCHEDULER]returnedundefined.Printf diagnostics showed a real
ToolRuntimecontainingSymbol(@deepseek-ai/dsh-tools.scheduler), while the lookup fromagent-loopstill failed.Fix
The scheduler key now uses:
This preserves symbol identity across duplicate module instances. The temporary diagnostics were removed.
Validation
This is a runtime module-resolution duplication issue, not a pnpm version duplication issue.
All reactions