分享一个 dsh 升级流程技能:升级前评估 → 审核放行 → 升级 → 验证(附 7 个实测坑) #6137
ybl2020
started this conversation in
Show Your Plugins!
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
升级 dsh 时踩了几个坑,整理成了一个升级流程技能,分享给同样要升级的人。
这个技能做什么
把「升级 dsh」变成一个可审核、可回滚、有证据的流程,而不是一次靠运气的操作:
lsof实际加载的原生模块路径,三判据证明新进程真的在跑新代码7 个实测坑
基于
0.1.2-rc.1→0.1.5-rc.1的一次真实升级,按踩到的顺序:--no-open、依赖数量写死)。install/postinstall脚本 —— 只打印一条 warning。node-pty这类包会缺编译产物。本次实测靠加载器回退到prebuilds/darwin-arm64/pty.node才没出事,并用pty.spawn实测确认;koffi则是自带平台包二进制。dsh web必然要求 token —— 无 token 请求返回 401 而不是 200,token 是内存态(launchToken,randomBytes生成、进程内 Map 缓存、从不落盘),只在启动时随 URL 打印一次。按旧写法用curl判断 200 会把成功判成失败。dsh --profile web --dump-config不是只读命令 —— 它要写~/.dsh/profiles/<p>/cordis.yml(prepareProfile里的writeFileSync),在受限沙箱下直接 EPERM 崩掉。而且这个 EPERM 长得很像文件属主问题,实际是沙箱拒绝。^0.1.2-rc.1在数学上不匹配0.1.5-rc.1:只有当范围里存在与目标版本同一[major,minor,patch]元组的预发布比较器时才可能满足。所以几乎所有把@deepseek-ai/*钉在^0.1.x-rc.y的第三方插件都会报 peer 不满足 —— 这是常态而非例外。反过来说,peer 不满足 ≠ 不可用(dsh 不强制校验,dump-config依然通过)。仓库
https://github.com/ybl2020/dsh-upgrade (MIT)
SKILL.md保持精简(流程骨架 + 审核门 + 两份交付物模板),深度细节放在references/按需加载:版本对比 / 第三方插件与技能排查 / 原生模块 allow-scripts / 升级后验证。说明
npm install -g安装的 dsh 编写,部分步骤需要工作区外的文件写权限欢迎指出与 DSH 实际行为不符的地方,我按实测更新。
All reactions