Repository navigation
profile 清单缺 version 时,经官方适配器发出的每一次请求都在 HTTP 之前失败
#8265
Replies: 1 comment
|
Confirmed at source, with two refinements that make the trigger sharper than the report states. 1. The tolerance rule is narrower than "loose handling for a manifest without an identity". 2. The generated manifest is not merely "one of the ways in" — it is the shape that triggers it. I also confirmed the wrap point is unchanged on the current tree: On your three suggestions, I agree with all of them, and I would rank them: (1) is the smallest and removes the self-trigger for everyone; (2) alone leaves While the core side decides, the operational half is available today as a plugin:
One
Verified against the build you are running: Two boundaries worth stating, because they are the difference between this and your suggestion 1:
|
Uh oh!
There was an error while loading. Please reload this page.
环境
操作系统:Windows 11 家庭版,版本 10.0.26200,64 位,AMD64。
运行时:Node.js v26.9.0(fnm 管理)、PowerShell 7.6.6。
软件:
@deepseek-ai/dsh0.1.7-rc.2(经 npx 安装,以dsh web启动);profile 组合为@deepseek-ai/dsh-base+@deepseek-ai/dsh-web-app;dsh-plugin-package-inventory-deepseek、dsh-llm-deepseek、dsh-app-boot与dsh同版本。观测时间:2026-09-29(CST,UTC+8)。
现象
部署的预设含有相对路径插件行(
name: './…'形态)时,如果该插件行解析落点的 profile 清单(profiles/<profile>/package.json)缺少version字段,则经 DeepSeek 官方适配器发出的每一次请求都在 HTTP 之前失败,错误为DeepSeek request extension preparation failed(REQUEST_EXTENSION)。失败独立于请求内容:一个用户消息只有单个字符、此后未做任何操作的最短会话,也一样连续 5 次尝试全部失败、一轮未完成。同一进程、同一预设、同一时段,经第三方兼容适配器发出的请求不受影响。触发链(
0.1.7-rc.2安装树回读,行号为包内产物行号)dsh-plugin-package-inventory-deepseek/lib/index.js:34的identityFromManifest要求清单的name与version都是非空字符串,否则抛plugin-package-inventory-deepseek: <路径> must declare non-empty name and version。判据具有组合性:清单无name时按松散模块返回undefined(同文件:33),而有name、缺version恰好落入抛错分支。:53-62的nearestManifest从插件模块所在目录向上取最近的package.json;相对路径插件行经:89-92走到该函数。:73-96的PackageIdentityResolver.resolve与:110-127的collectActivePluginPackages,后者在每次请求时枚举宿主 Loader 树与发起请求的会话预设树的全部活动条目。dsh-llm-deepseek/lib/index.js:1341-1350的prepareRequestExtensions把prepare的错误包成LlmError("DeepSeek request extension preparation failed", "REQUEST_EXTENSION", { cause }),因此失败发生在每一次 HTTP 请求发出之前。dsh-app-boot/lib/index.js:575-586的initProfile只在清单不存在时写出name、private、dependencies、dsh.profile.bundles四项,不含version。也就是说 profile 目录一旦被重建、或清单被删除,下一次启动就会自动生成一个必然触发本失败的清单。静态复现
对同预设的 3 条相对路径插件行求值:清单缺
version时 3 条全部抛must declare non-empty name and version;写入version后 3 条全部返回包身份;对照形态(清单无name)不抛错。影响
受影响面主要是「自定义预设 + 官方适配器」的部署,失败后官方通道完全不可用,且报错文本不指向清单文件。由
initProfile生成的清单天然缺version,任何导致清单被删或 profile 重建的操作都会让官方通道在下次启动后再次全灭。「相对路径插件行的最近清单必须含非空name与version」在任何文档里都没有说明。建议
initProfile写出的清单补上version(取当前 dsh 版本或由调用方传入)。name无version的情形采用与无name一致的宽松处理,两者都不构成可归因的包身份。All reactions