# [Bug] DSH 0.1.7 下 @deepseek-ai/dsh-session-reference codec 不兼容导致 session/list 定义撤回,且 npm latest 标签指向旧版本 #7872
Replies: 2 comments 1 reply
那个校验点在加载器里,而且它要求每个 codec 提供
|
|
补充一条不同于原报告的触发路径:用户没有显式安装任何核心包,但第三方插件会把旧版核心包"传染"进 profile,产生完全相同的 环境
现象(与主帖一致)实际影响面(呼应主帖里"session/list 撤回后影响到什么"的追问):
与主帖的差异:传染路径 vs 显式安装主帖的路径是 // dsh-set-model@0.1.0 的 package.json —— peerDependencies 完全未声明
"dependencies": {
"@deepseek-ai/cordis": "4.0.2",
"@deepseek-ai/dsh-agent": "0.1.2-rc.1", // ← 硬依赖旧版
"@deepseek-ai/dsh-llm": "0.1.2-rc.1", // ← 报错就出在它身上
"@deepseek-ai/dsh-session": "0.1.2-rc.1",
"@deepseek-ai/dsh-tools": "0.1.2-rc.1",
"@deepseek-ai/schemastery": "3.18.2",
"zod": "^3.24.2"
}连带带入 9 个包( 其中的机制是:
用户完全无感——他没有安装过任何 codec 契约差异(供交叉验证)// @deepseek-ai/dsh-llm@0.1.2-rc.1(旧)—— 键名 schema
codec: { mode: 'strict', typeSymbol: '@deepseek-ai/dsh-llm#llm/discoverModels:settingsNs',
schema: _deepseek_ai_dsh_llm_llm_discoverModels_parameter_0$schema }
// @deepseek-ai/dsh-llm@0.1.7-rc.2(新)—— 键名 create,loader 硬要求
codec: { mode: 'strict', typeSymbol: '@deepseek-ai/dsh-llm#llm/discoverModels:settingsNs',
create: _deepseek_ai_dsh_llm_llm_discoverModels_parameter_0$schema }( 一分钟自查:profile 内是否有旧版核心包# 列出 profile 内所有 @deepseek-ai 包及版本
node -e "const fs=require('fs'),p=require('path');const home=process.env.DSH_HOME||p.join(process.env.USERPROFILE,'.dsh');const d=p.join(home,'profiles','web','node_modules','@deepseek-ai');for(const n of fs.readdirSync(d)){try{console.log(n,JSON.parse(fs.readFileSync(p.join(d,n,'package.json'),'utf8')).version)}catch(e){}}"
# 对照宿主版本
node -e "console.log(require('@deepseek-ai/dsh/package.json').version)"只要 profile 内出现与宿主版本不一致的 临时修复在 profile 的 overrides:
'@deepseek-ai/dsh-agent': 0.1.7-rc.2
'@deepseek-ai/dsh-brand': 0.1.7-rc.2
'@deepseek-ai/dsh-llm': 0.1.7-rc.2
'@deepseek-ai/dsh-session': 0.1.7-rc.2
'@deepseek-ai/dsh-timeout': 0.1.7-rc.2
'@deepseek-ai/dsh-tools': 0.1.7-rc.2
'@deepseek-ai/dsh-typert-protocol': 0.1.7-rc.2
'@deepseek-ai/dsh-util-crypto': 0.1.7-rc.2
'@deepseek-ai/dsh-util-values': 0.1.7-rc.2
注意:这是止血,不是根治——每次升级 DSH 都要同步改这里的版本号。 建议(回应 PerryLink 对归因的追问)这条路径下"该改哪边"是三方关系,其中宿主侧可补的防线我认为优先级最高:
已就触发源插件(把宿主包声明为 |
Uh oh!
There was an error while loading. Please reload this page.
环境
0.1.7-rc2(升级后出现)v24.19.0D:\JavaScript\nodejs\node_globalweb@deepseek-ai/dsh-session-reference问题描述
升级 DSH 核心到
0.1.7-rc2后,运行dsh web出现以下问题:@deepseek-ai/dsh-session-reference的 Typert 注册失败,报错:parameter codec has no create() factorysession/list的严格定义被网关撤回:typert gateway: session/list: its strict definition was withdrawn and SRC fallback is forbiddendsh-task-board插件轮询会话列表失败,任务板主机会话名册自动发现被禁用。dsh plugin --profile web add @deepseek-ai/dsh-session-reference@0.1.7-rc2安装指定版本时,pnpm 报ERR_PNPM_NO_MATCHING_VERSION,因为 npm 上不存在该版本号。latest标签指向旧版0.0.1-rc.1,而实际与 DSH 0.1.7 匹配的预发布版本在next标签下:0.1.7-rc.2。复现步骤
0.1.7-rc2。@deepseek-ai/dsh-session-reference。dsh webtypert-loader注册失败、session/list定义撤回、dsh-task-board轮询失败等错误。dsh plugin --profile web add @deepseek-ai/dsh-session-reference@0.1.7-rc2ERR_PNPM_NO_MATCHING_VERSION。实际行为
终端关键错误:
安装指定版本时:
临时解决方案
使用
next标签安装,而不是手动指定不存在的版本号:安装后
@deepseek-ai/dsh-session-reference会解析到0.1.7-rc.2,session/list和dsh-task-board的连锁报错消失。期望行为
@deepseek-ai/dsh-session-reference应与 DSH 核心0.1.7-rc2的 Typert 严格 codec 规范兼容,不应在启动时注册失败。latest标签应指向与当前 DSH 核心匹配的稳定/预发布版本,或至少文档中明确说明需要安装@next。建议
@deepseek-ai/dsh-session-reference的sessionReferenceResolver/candidates参数 codec 是否已按新 Typert 规范提供create()工厂。@deepseek-ai/dsh-session-reference的 npmlatest/next标签是否与 DSH 核心版本同步。@deepseek-ai/dsh-session-reference,建议在启动日志中给出明确的修复命令,例如:dsh plugin --profile web add @deepseek-ai/dsh-session-reference@nextAll reactions