Step one: install
Only one thing matters: is node new enough? The 0.2.2 line wants >=24.9.0, the 0.2.1 line has no floor. Most failures happen here.
node -v npm i -g @deepseek-ai/dsh
Sticking point: treating EBADENGINE as harmless, then wondering why it will not start. Four capital letters mean stop.
Step two: start
Startup prints one line with a token. The sticking point is not the command — it is copying only the host and dropping the token, which buys you a 401.
dsh web
Second sticking point: port 3080 held by a process that never exited. You usually see EADDRINUSE or an immediate quit; check with netstat -ano | findstr :3080.
Step three: verify
The UI opening is not success; a message must come back with a result. A one-line smoke task is enough:
List the files and folders in the current directory. Report only the count and the first three names.
Sticking point: sending that before a model is configured returns something that looks like a network error. Configure the key in the model-and-gateway group first, then come back.
One self-check command (optional)
Dump the key facts at once so you can paste them when asking for help:
node -v && npm ls -g @deepseek-ai/dsh --depth=0 ; curl -sI http://127.0.0.1:3080/ | head -1
A final line of HTTP/1.1 401 means the service is alive; connection refused means it never started.