dsh-ui-web/packages/dsh-web-ui-settings

34Star2Fork0Issue0Watching

为 DSH 设置页提供 Web UI 全家桶的聚合卡片、可编辑的常驻人格(猫娘小咪预设)以及关于版权页;保存人格后 DSH 技能系统自动热加载。

语言
TypeScript
License
Apache-2.0
分支
main
dsh-plugindsh-plugin-marketdsh-plugins

安装

$ dsh plugin --profile web add github:CAPTAIN1275/dsh-ui-web/packages/dsh-web-ui-settings

在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程

一句话定位

DSH 设置页的「Web UI 全家桶」容器插件:把整个 dsh-web-ui 家族的功能插件折叠成设置页里的一张聚合卡片,并自带一个可编辑的「常驻人格」编辑器(默认提供猫娘小咪)和一个版权说明页。

核心能力

  • 在设置页「插件配置」区插入一张「Web UI 插件」组卡,所有家族功能插件的启用开关与配置表单都收纳在这张卡里
  • 提供设置页「人格设定」分区:开关、名称、描述、Markdown 正文四件套,一键填充「小咪」猫娘预设,保存即生效
  • 提供设置页「关于」分区:展示当前插件版本、基于的上游项目、第三方资源版权与商标声明
  • 后台 HTTP 路由:读取/写入人格配置、列出内置人格预设、查询聚合包版本(用于「检查更新」)
  • 启用人格时自动在用户级技能目录生成对应的 SKILL.md,DSH 技能系统热加载,无需重启

技术实现

  • 语言: TypeScript(ESM,target web)
  • 关键依赖: @deepseek-ai/cordis、@deepseek-ai/dsh-host-webserver、@deepseek-ai/dsh-client-runtime、@deepseek-ai/dsh-client-ui-settings
  • 架构模式: 双端插件——host 端(Node)注册 /api/persona/*/api/web-ui/version 路由,client 端(浏览器 React)注册 settings.plugin.item 组卡与 settings.section 中的两个分区
  • 入口文件: src/index.ts(host apply)+ src/client/index.ts(client apply)

适用场景

用 dsh-web-ui 全家桶(含看板、皮肤、SSH、看板娘等)但希望设置页不要被十几张独立卡片刷屏的用户。它把家族插件收纳为一张可折叠的「Web UI 插件」卡,并提供一个常驻人格编辑器(猫娘、虚拟伴侣、助手语气定制都能写)。

前置依赖与兼容性

依赖最低版本说明
DSH(host + client)0.1.0-rc.6+peerDependencies 锁定的官方包均为 ^0.1.0-rc.6
Node.js未声明源码未在 engines 中声明,遵循宿主要求
平台仅 Webpackage.json#dsh.client.platform = web
原生模块不引入 node-gyp 模块

安装方式

dsh plugin --profile web add github:CAPTAIN1275/dsh-ui-web/packages/dsh-web-ui-settings

配置项

本插件无需额外配置。它是设置页的容器,本身不暴露 ctx.config.* 字段。用户可编辑的内容是「人格设定」分区的表单(开关、技能名、描述、正文),保存后写到 ~/.dsh/persona.json~/.dsh/skills/catgirl-rp/SKILL.md,与插件配置无关。

配置类型说明默认值
启用人格开关是否常驻生效(关闭时 SKILL.md 被改名暂存)
技能名文本必须是「小写字母/数字/短横线」,会作为 SKILL.md 所在目录名catgirl-rp
描述多行文本写入 SKILL.md 的 frontmatter description,建议包含「Use when」内置猫娘描述
人格设定正文Markdown写入 SKILL.md 主体,每次对话的回复依据内置猫娘正文

常见问题

Q: 装上后没有可见效果,是不是没生效?

A: 这个插件是「设置页容器」型插件:装上后本身不会改变对话体验。它只会在 DSH 设置页多出「Web UI 插件」「人格设定」「关于」三个分区。要看到它承载的其他插件(如看板、皮肤)需要同时安装 dsh-web-ui-all 聚合包或其它家族包。

Q: 装上后人设就启用了吗?怎么关掉或改写?

A: 默认会启用「小咪」猫娘人格(每次对话都以小咪身份回应)。打开 DSH 设置页「人格设定」分区,关掉顶部开关即可停用,或编辑正文后点「保存」立即覆盖,无需重启。

Q: 人格保存后写到哪里?为什么对话立即生效?

A: 保存时写入 ~/.dsh/persona.json,同时在 ~/.dsh/skills/catgirl-rp/SKILL.md 生成一份技能文件,DSH 技能系统(dsh-skill-filesystem)热加载该技能,所有新对话自动套用。禁用时 SKILL.md 会被改名成 SKILL.md.disabled 而不是删除,再启用就恢复。

Q: 「关于」里显示的版本号是怎么来的?为什么有时显示「未知」?

A: 插件启动时读自身 package.json 拿到 current 版本,并在每次请求时去 npm registry 拉 @captain1275/dsh-web-ui-all 的最新版本做对比,8 秒内没拿到就当作查不到(latest 为 null),前端就会显示「未知」。这不影响使用,只影响更新提示。

Q: 这个插件能在桌面版/CLI 版用吗?

A: 不能。它在 package.json#dsh.client.platform 里声明 platform: web,只注入到 Web 设置页。DSH 桌面客户端走的是另一套 UI,需要装对应分支的 dsh-web-ui-settings 包。

Q: 我想完全卸载,连同猫娘人格一起清除,该怎么操作?

A: 先在设置页「人格设定」分区关掉开关(或点保存覆盖为空内容),让 ~/.dsh/skills/catgirl-rp/ 被改名暂存;然后用 dsh plugin --profile web remove 卸载插件包;最后手动删除 ~/.dsh/persona.json~/.dsh/skills/catgirl-rp/ 残留目录即可彻底清除。

上手难度

入门 — 装上即生效;不需要写代码,普通用户在设置页点几下就能编辑人格、查看版本、收拢家族插件卡片。

已知问题与限制

  • 「检查更新」功能强依赖 npm registry 可达性;离线或网络受限时永远显示「未知」,没有重试也没有降级提示
  • 默认行为激进:装上后人格就处于「常驻启用」状态且内容是一只猫娘人格,不熟悉的用户第一次进对话可能会被猫娘语气吓到,需要到设置页主动关掉
  • 默认写入 ~/.dsh/skills/catgirl-rp/SKILL.md 的目录名是硬编码的「catgirl-rp」,跟「小咪」人格内容强绑定;改成严肃人格后目录名还叫 catgirl-rp,需要一并改技能名
  • 插件本身没有 engines.node 声明,Node 版本兼容性完全由宿主 DSH 决定