Skip to content

带 scope 的插件包加载时抛 TypeError: settings namespace "@scope/name" must match /^[a-z][a-z0-9-]*$/ #608

Description

@ewanchen0314-boop

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

建议

  1. 命名空间派生时对 @scope/name 做规范化转换(例如 scope--name 或去掉 @ 并把 / 换成 -)。
  2. 或者:在插件清单中支持显式 settingsNamespace 字段,并在缺少该字段且包名含 scope 时给出明确的、指向文档的报错,而不是裸 TypeError。
  3. 无论采用哪种方案,建议把这类加载期失败在 UI 上可见化——目前只有宿主日志能看到。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions