dsh-plugin-renamer
by Fiker1203
DSH Web UI 插件改名器:解决 plugin-switch 插件清单里插件名雷同不好分辨的问题,自动提取每个插件的说明并支持自定义别名(友好名),可与 plugin-switch 搭配使用。| Friendly user-editable names for the DSH plugin inventory, fixing duplicate-looking names in plugin-switch.
安装
dsh plugin --profile web add github:Fiker1203/dsh-plugin-renamerGitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试
安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗
安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。
README
让 DSH Web UI 的插件清单显示友好名称:自动从每个插件包的 package.json 提取 description,并允许用户自定义别名;显示层映射,不删除、不改变底层插件。
解决什么问题: 使用 plugin-switch 时,插件清单里很多插件名是雷同的模块名/条目 ID(如一堆
dsh-xxx),光靠默认名称很难分辨哪个是哪个。本插件给每个插件显示易读的友好名,并可自定义别名(如「插件开关」「插件市场」),让你一眼认出每个插件;还能直接复用 plugin-switch 的开关做启停,两者互补使用。
功能
- 新增独立设置页标签「插件改名器」(id:
renamer),以卡片形式展示:- 友好名(自定义别名 >
package.jsondescription > 模块名 > 条目 ID) - 模块名、条目短 ID、启用/停用状态
- 搜索(别名 / 模块名 / 条目 ID)与筛选(全部 / 已启用 / 已停用)
- 友好名(自定义别名 >
- 别名编辑:每条插件可保存自定义别名;留空保存或「恢复自动名」后回落到自动提取的名字
- 别名持久化:浏览器
localStorage(key:dsh.pluginRenamer.aliases.v1) - 一键启用/停用:复用
dsh-profile-plugin-switch的/plugin-switch/toggle接口;未安装 plugin-switch 时开关不可用但列表仍可浏览 - 显示层兼容:以 700ms 间隔把 plugin-switch 原始清单中的
.psw-title(条目 ID)和模块名详情替换为友好名(React 重渲染后会自动再次替换)
安装
从 GitHub 安装(推荐):
dsh plugin --profile web add github:Fiker1203/dsh-plugin-renamer
本地开发时也可直接指定路径安装:
dsh plugin --profile web add C:/path/to/dsh-plugin-renamer
然后重启 Web UI 并刷新浏览器(Ctrl+Shift+R)。
写代码阶段不需要安装;本地安装/写入 profile 需要用户把权限调为 full access(danger-full-access)。
结构
dsh-plugin-renamer/
├─ package.json # dsh.bundle + dsh.client 声明
├─ cordis.patch.yml # 仅插入 plugin-renamer 条目,不 disable 任何插件
├─ index.js # host:GET /plugin-renamer/list(读取 loader 条目 + package.json description)
├─ client.js # browser:设置页标签 UI + localStorage 别名 + plugin-switch 显示层重写
└─ README.md
接口
GET /plugin-renamer/list
返回:
{
"ok": true,
"value": {
"entries": [
{
"entryId": "...:dsh-profile-plugin-switch",
"moduleName": "dsh-profile-plugin-switch",
"enabled": true,
"description": "DeepSeek Harness (DSH) web plugin: toggle any plugin on/off from the GUI, live, without restarting the server."
}
],
"switchAvailable": true,
"switchEntryId": "plugin-switch"
}
}
description读取自 profilenode_modules/<模块名>/package.json;读取失败为nullswitchAvailable表示 loader 中是否存在 plugin-switch 条目,客户端据此决定是否渲染开关
与 plugin-switch 的兼容性
- 不改写
cordis.patch.yml,不注册 id 为all的 tab,因此不会与 plugin-switch 争夺清单页 - 开关动作直接 POST
/plugin-switch/toggle,写配置与备份仍由 plugin-switch 统一负责,避免双写冲突 - 显示层替换采用定时 DOM 重写,属于尽力而为的显示层;不影响 plugin-switch 的逻辑与持久化
开发验证
node test.mjs # host 路由与 package.json description 提取冒烟测试
node --check index.js client.js
未安装到 profile 前,host 的 resolveNodeModulesDirs() 会优先使用 DSH_HOME(默认 ~/.dsh)下的 profiles/web/node_modules,因此本地路径安装(symlink)时也能读取到 profile 内各插件的 package.json。
已知限制:plugin-switch 原始清单的搜索框仍按原始条目 ID / 模块名匹配;本插件自己的标签页已支持按别名/友好名搜索。原始清单标题与模块名详情会尽量替换为友好名,但 React 重渲染后需等待下一次间隔(约 700ms)才会恢复替换。
内置中文名
client.js 内置了一份 BUILTIN_ALIASES(源码:zh-names.json),为当前 profile 中 178 个插件条目提供默认中文名,例如:
@dsh-external/dsh-client-ui-skin-maid-atelier→ 鲸鱼娘女仆主题@linxin666/dsh-pet→ 鲸鱼娘宠物dsh-profile-plugin-switch→ 插件开关dsh-plugin-renamer→ 插件改名器dshmarket→ 插件市场dsh-vision-router→ 视觉路由@linxin666/dsh-ssh→ SSH 远程操作@linxin666/dsh-live-stats→ 实时 Token 统计@linxin666/dsh-task-board等 → 任务看板 / Git 图形 / AionUI 右侧面板 / 手机远程控制 / 皮肤中心 / 梁神预设 / 图像描述工具- 系统条目统一为「会话存储服务」「Web 服务器」「插件清单(只读投影)」等清晰中文名
用户自定义别名仍优先于内置中文名。修改 zh-names.json 后,需要同步更新 client.js 内嵌的 BUILTIN_ALIASES。
原始 README: https://github.com/Fiker1203/dsh-plugin-renamer/blob/master/README.md ↗
同类插件
查看全部 →
dsh-web-ui-all
DSH Web UI 插件与皮肤合集:任务看板、git 图、右侧面板、远程移动端 UI、桌宠、实时 token 统计与皮肤中心。

dsh-web-ui
DSH Web UI 插件与皮肤合集:任务看板、git 图、右侧面板、远程移动端 UI、桌宠、实时 token 统计与皮肤中心。

dsh-TUI
Claude Code 风格全屏终端 UI:像素鲸鱼顶栏、实时工作状态行、思考流式展开。

DSH-better-sidebar
侧边栏完整工作台:内置文件渲染编辑、终端、Git 与子代理,支持三方插件注册新 Tab。

working-activity
让 agent 的"工作状态行"活过来——实时工具动态与进度、俏皮文案、模型自述、上下文预警。同一套想法,适配两个平台: pi CLI 与 DeepSeek Harness(DSH) 。

deepseek-idesign
可视化设计工作室,支持网站、App 原型、海报、信息卡、报告和杂志的模板创建、元素编辑、选区级 AI 草稿衔接与导出。