Title: 带 scope 的插件包加载时抛 TypeError: settings namespace "@scope/name" must match /^[a-z][a-z0-9-]*$/
Labels: bug
===== 以下为 Issue 正文 =====
现象
宿主日志稳定复现一条 [E] 级错误:
TypeError: settings namespace "@goodandready/dsh-context-lens" must match /^[a-z][a-z0-9-]*$/
被排查的会话中,该错误在宿主进程内多次出现(示例:会话运行约 6 分钟时)。
影响
^[a-z][a-z0-9-]*$ 不接受 @、/ 与大写,因此任何以 @scope/name 形式发布的 npm 插件都无法注册自己的 settings 命名空间。而 npm scoped package 是官方生态的常见形态(@deepseek-ai/* 自身就是),所以这条限制会阻断第三方插件。
从错误信息看,settings 命名空间是从包名派生的;派生时没有对 scope 形式做转换。
期望 vs 实际
- 期望:scoped 包能正常注册 settings 命名空间(由包名做安全字符转换派生,或要求插件显式声明)。
- 实际:插件加载阶段抛
TypeError,其 settings 相关贡献缺失;用户只能从宿主日志的错误行发现,插件表面"已挂载但没生效"。
环境
@deepseek-ai/dsh 0.1.5-rc.2
dsh-plugin-desktop 2.0.10
- Windows 11 build 26200 AMD64
- 涉事插件:
@goodandready/dsh-context-lens
建议
- 命名空间派生时对
@scope/name 做规范化转换(例如 scope--name 或去掉 @ 并把 / 换成 -)。
- 或者:在插件清单中支持显式
settingsNamespace 字段,并在缺少该字段且包名含 scope 时给出明确的、指向文档的报错,而不是裸 TypeError。
- 无论采用哪种方案,建议把这类加载期失败在 UI 上可见化——目前只有宿主日志能看到。
Title: 带 scope 的插件包加载时抛
TypeError: settings namespace "@scope/name" must match /^[a-z][a-z0-9-]*$/Labels:
bug===== 以下为 Issue 正文 =====
现象
宿主日志稳定复现一条
[E]级错误:被排查的会话中,该错误在宿主进程内多次出现(示例:会话运行约 6 分钟时)。
影响
^[a-z][a-z0-9-]*$不接受@、/与大写,因此任何以@scope/name形式发布的 npm 插件都无法注册自己的 settings 命名空间。而 npm scoped package 是官方生态的常见形态(@deepseek-ai/*自身就是),所以这条限制会阻断第三方插件。从错误信息看,settings 命名空间是从包名派生的;派生时没有对 scope 形式做转换。
期望 vs 实际
TypeError,其 settings 相关贡献缺失;用户只能从宿主日志的错误行发现,插件表面"已挂载但没生效"。环境
@deepseek-ai/dsh0.1.5-rc.2dsh-plugin-desktop2.0.10@goodandready/dsh-context-lens建议
@scope/name做规范化转换(例如scope--name或去掉@并把/换成-)。settingsNamespace字段,并在缺少该字段且包名含 scope 时给出明确的、指向文档的报错,而不是裸TypeError。