前言¶
在 DSH 中接入插件索引源后,常见的问题是索引里的大部分内容是英文,难以判断源接得对不对、插件选得好不好。如果有一个本地镜像,把标题、分类、标签和描述补成中文,就能在「插件 → 发现」里直接用中文浏览。
dsh-plugin-market-zh 就是为此设计的一个插件。它不改变上游索引,只在本地生成中文镜像,对已存在中文的内容不做覆盖,仅补充缺失的部分。安装后,DSH 的「发现」页会出现多个中文市场入口,默认内置 6 个公开索引源。
它是什么¶
dsh-plugin-market-zh 是一个客户端插件,由维护者 shwili 开发。它的核心作用是:为多个 DSH 插件市场索引源,在本地生成机翻的中文镜像,直接显示在「插件 → 发现」里。
插件通过 Host 服务的 HTTP 路由,把每个上游索引映射为本地 JSON 接口,并在「发现」页注册为市场来源。它支持聚合多个来源、去重合并,首次启用时会并行预取索引,再逐条补齐中文。
核心功能¶
本地镜像路由¶
插件为每个上游索引开一条本地路由:
GET /plugin-market-zh/index/<id>.json返回单个来源的中文镜像(id是上游 URL 的 SHA-256 前 10 位)GET /plugin-market-zh/index.json作为第一个来源的别名(兼容旧地址)GET /plugin-market-zh/all.json返回所有来源聚合去重后的中文市场
补中文,不覆盖中文¶
- 插件包名保留原文
- 索引里已有的中文原样保留
- 只有缺中文的标题、分类、标签、描述才走机翻
聚合去重¶
插件额外注册一个「全部索引源 · 中文」市场,把各来源按包名合并,同一插件的版本取并集,重复来源只留一份。聚合按包名去重,但各目录自己的分类体系会保留。
零配置可用¶
默认内置 6 个公开索引源,启用后自动注册为市场来源。停用或卸载时自动移除。如需添加更多源,可在「发现 → 市场菜单 → 管理索引来源…」里手动添加 sources[].mirrorUrl。
安装与启用¶
- 克隆插件到本地任意目录:
git clone https://github.com/shwili/dsh-plugin-market-zh.git
- 在 DSH profile 的
package.json里挂上这个包,并加进bundles(以 Windows 路径为例,换成你的实际路径):
{
"dependencies": {
"dsh-plugin-market-zh": "link:D:/path/to/dsh-plugin-market-zh"
},
"dsh": {
"profile": {
"bundles": [
// ...原有条目
"dsh-plugin-market-zh"
]
}
}
}
- 重启 DSH,在「设置 → 插件」里启用。插件通过
inject等待webServer与pluginMarket两个 Host 服务就绪后才激活。
典型用法¶
-
打开「插件」→「发现」。市场菜单第一个是「全部索引源 · 中文」,后面是每个来源各自的中文镜像。
-
首次启用会并行预取所有索引,再按来源顺序串行机翻。大来源(7,000+ 条)要几分钟,期间部分内容仍是英文,刷新后补齐。
-
诊断:访问
http://127.0.0.1:<端口>/plugin-market-zh/status.json,端口就是当前 Web GUI 的端口(例如 63499)。 -
如果自动注册市场来源失败(
status.json里registered.sources=false),可以在「发现 → 市场菜单 → 管理索引来源…」里手动添加sources[].mirrorUrl,或者聚合地址http://127.0.0.1:<端口>/plugin-market-zh/all.json。
默认索引源¶
| 市场 | 上游索引 |
|---|---|
| Awesome DSH Plugin 插件精选 · 镜像 | https://dshmarket.com/index.json |
| DSH 插件索引 · 镜像 | https://realoiyo.github.io/dsh-plugin-market/index.json |
| Bruce 的精选插件 · 镜像 | https://bruc3van.com/dsh-plugins/index.json |
| DSH 插件健康索引 · 镜像 | https://easonmws.github.io/dsh-plugin-health/index.json |
| vlln 的 dsh 插件 · 镜像 | https://raw.githubusercontent.com/vlln/plugin-registry/main/index.json |
| 贾维斯机制插件族(六插件) · 镜像 | https://raw.githubusercontent.com/weft-audit/dsh-market/main/plugin_index.json |
dshmarket.com 是 dsh-plugin-catalog 自带的索引域名;cdn.jsdelivr.net/npm/dsh-plugin-catalog/index.json 与 awesome-dsh-plugin.com/index.json 是同一份目录的镜像,内容相同,所以没有重复添加。默认用 dshmarket.com 是因为 jsDelivr 在本机网络下出现过间歇性连接失败。
配置项¶
插件在 cordis.patch.yml 的 plugin-market-zh 行里配置。常见配置项如下:
| 键 | 默认值 | 含义 |
|---|---|---|
sourceUrls |
上表 6 个索引 | 要镜像的索引列表,按顺序注册为市场来源 |
aggregate |
true |
是否额外注册「全部索引源」聚合市场 |
maxSources |
8 |
最多镜像多少个来源 |
targetLanguage |
zh |
目标语言,zh/zh-CN 映射为简体 |
provider |
bing |
匿名翻译通道;google 在部分网络不可达 |
transport |
auto |
auto 优先 Host 服务、缺失时直连;也支持 service、direct |
translateTitles |
false |
是否翻译插件标题(默认保留包名/品牌名) |
autoTranslate |
true |
后台继续翻译未命中的描述 |
warmupOnStart |
true |
启动预取完成后立即开始后台翻译 |
prefetch |
true |
启动时预取所有索引 |
autoRegister |
true |
自动把镜像地址加入市场来源 |
removeSourceOnDispose |
true |
停用/卸载时移除所有镜像来源 |
工作方式¶
- 每个来源预取一次上游索引,校验格式 1,解析图标(相对路径按上游 URL 解析;
http:图标因为镜像域名不同会被丢弃),再逐条补中文,生成内存文档并写入本地翻译缓存。 - 翻译优先走 Host 的
translator服务(匿名 Bing 通道);该实验服务未挂载时,直连同一个 Bing Edge 匿名端点。多个来源共用一条串行队列,避免同时压满匿名端点;失败后按冷却时间重试。 - 缓存按来源分开:
$DSH_HOME/cache/plugin-market-zh/translations-<hash>.json。已存在的中文不会被覆盖,只补缺失的部分。 - 聚合用
mergeMarketDocuments:按包名去重,版本取并集,标题/描述优先保留中文,分类/标签/排序键加s<slot>:命名空间,避免不同目录的同名 id 冲突。 - 只在本地起 HTTP 路由,不向模型发请求,不记录会话事件。翻译文本只发往匿名翻译端点,且只缓存在本地。
适用场景与注意¶
适合在 DSH 的「发现」页需要用中文浏览插件市场的场景。安装前应检查源码与许可证。由于使用匿名翻译端点,翻译质量有限,仅供浏览;安装插件前请以插件主页和仓库为准。
已知限制:
- 机器翻译质量有限,仅供浏览;安装插件前请以插件主页和仓库为准。
- 匿名翻译端点由第三方提供,可能限流或变更;失败时保留英文原文,并按冷却时间重试。
- 上游索引会变,数字只是快照。
- 首次启用后的后台翻译需要几分钟;大索引在慢网络下预取可能超时(内置市场服务对单个来源有 15 秒读取期限)。
- 多个来源的文档同时驻留内存(原始 JSON 约 15–30 MB;聚合文档约 13 MB),内存占用高于单个来源。
- 汉化来源之间仍有重叠;聚合按包名去重,但各目录自己的分类体系会保留。
- 中文内容依赖 Web UI 当前语言为中文:镜像同时保留
en原文,英文界面下显示原文。 - 纯技术标识(例如
env ↔ JSON)会被翻译服务原样返回,此时保留原文而不生成中文。 - 翻译缓存写在
$DSH_HOME/cache,删掉它等于清空已机翻的内容,需要重新翻。
目录结构¶
index.js Host 侧入口:路由注册、来源注册、聚合、诊断
lib/source.js 抓取并校验上游格式 1 索引
lib/mirror.js 生成中文镜像文档
lib/translate.js 批量机翻(Host 服务 / Bing 直连)
lib/cache.js 本地翻译缓存
lib/dictionary.js 分类、标签、排序键的中文词表
lib/localized.js LocalizedText 的读写工具
lib/runtime.js 单个来源的运行时:预取、文档、缓存、后台补译
lib/aggregate.js 多来源按包名合并
cordis.patch.yml 插入一行 Host 插件配置
locale/zh.json 插件在市场里的中文标题与描述
locale/en.json 英文标题与描述
icon.svg 插件图标
总结¶
dsh-plugin-market-zh 在本地为多个 DSH 插件市场索引源生成中文镜像,让「插件 → 发现」页可以直接用中文浏览。它支持聚合去重、零配置启用,默认内置 6 个公开索引源。如果你在 DSH 中需要中文插件市场索引,这个插件可以作为补充。