dsh web启动后会先在终端打印一行地址,形如:
dsh web: http://127.0.0.1:3080/?token=cp0HyI6s8-uj9B-Meq2Kvmsq1BveDyX5FgAgAD09mP0 dsh web: opening the default browser; pass --no-open to disable
这行里的 ?token= 后面那串不是装饰。裸开 http://127.0.0.1:3080/ 会返回HTTP 401,正文写着authentication required / reopen the URL printed by dsh web。这不是端口没监听,也不是服务崩了,是浏览器信任围栏在拦。
判断方法:先
curl -sI http://127.0.0.1:3080/。返回 401 说明进程活着、只是没带令牌;如果连不上(curl报connection refused),那才是进程真的没了。完整步骤
- 先确认node版本满足engines。源码版要求
^22.19.0 || >=24.0.0;npm上的0.2.2系列要求>=24.9.0,两者门槛不同。 - 启动。源码checkout里跑的是TS入口,必须带tsx预加载;全局安装后则是
dsh web。 - 把终端里打印的完整地址(含
?token=)整条复制到浏览器。不要手输,token里含大小写与短横,容易错一位。 - 浏览器里能打开界面、能发一句话、能拿到回复,才算跑通。
- 把token记在你自己的密码管理器里,不要贴进任何公开页面或聊天记录。
源码checkout的启动命令(本机实测可用):
node --max-old-space-size=8192 --import tsx/esm apps/cli/src/bin.ts web
全局安装后的启动命令:
dsh web
token 会变
重启进程就换一个新token,旧URL立刻失效。所以「昨天还能打开、今天401」是正常现象,不是配置坏了。自启脚本里通常会带 --no-open,等于不自动弹浏览器,URL只落在日志里——这种情况去日志最后一行找。
tail -1 ~/.dsh/logs/dsh-web-autostart.log
默认端口是3080。这个端口被占用时启动会失败,要么先关掉占用进程(netstat -ano | findstr :3080),要么用 --port 换一个。