dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
Translate the English description of a skill into Chinese and restore the original in one click; a newly installed skill is surfaced right away.
dsh-plugin-skill2cn)English | 简体中文
把 DSH skill 的英文 description 翻译成简体中文,可一键还原。
SKILL.md frontmatter 的 description 值;name 与正文逐字节不动SKILL.md(架构决策见 docs/adr/0001-write-to-disk-translation.md),改完由 DSH 热刷新自动生效,无需重启manifest.json;面板按「磁盘 ↔ 清单」对账决定「未翻译 / 已翻译 / 无需翻译 / 已过期」
https://github.com/user-attachments/assets/a98d7649-052b-4912-8ff5-1a472abf2dda
介绍视频与上方使用说明海报(源文件 HTML)由队友阿根制作;视频文件同时保留在仓库 docs/assets/introduction-video.mp4 中。
从注册表安装(需要 Node ≥ 22.13 和 pnpm 11):
dsh plugin --profile web add dsh-plugin-skill2cn
从源码安装(需要 Node ≥ 22.13 和 pnpm 11):
git clone https://github.com/kaluosifa/dsh-plugin-skill2cn.git
cd dsh-plugin-skill2cn
pnpm install
pnpm build # 产出 lib/index.js + lib/client.js——插件入口(lib/ 已被 git 忽略)
dsh plugin --profile web add .
web 换成你的 DSH profile 名。link: 安装(本地路径)不跑 prepare,无需 allowBuilds——但它也不会替你构建,所以要先 pnpm build。安装后重启一次 DSH(首次加载 host 半身),此后:
src/service.ts、src/core/**)→ pnpm build 后重启 DSHsrc/client/**)→ pnpm build 后刷新浏览器git pull && pnpm install && pnpm build(host 半身有改动则重启 DSH)先在「已翻译」页点「全部还原」。写盘改写不会随卸载自动复原(ADR-0001 Consequences)。
dsh plugin --profile <profile> remove dsh-plugin-skill2cn
清单文件 $DSH_HOME/skill2cn/manifest.json 会残留(无害,可手删)。
pnpm install
pnpm dev # tsdown watch(先 tsc 转译标准装饰器到 lib-tsc,再打包)
pnpm test # core 单测(vitest)
pnpm typecheck # host + client 两套 tsconfig
pnpm build # 产出 lib/index.js(host ESM)+ lib/client.js(closure-factory CJS)
@Remote 装饰器需要 TypeScript 的标准装饰器转译,esbuild/tsdown 不处理,因此 build 分两步:
tsc -p tsconfig.build.json 产出 lib-tsc/,再由 tsdown 以 lib-tsc/index.js 为入口打包成 lib/index.js。
lib-tsc/ 是中间产物(已在 .gitignore 中),由 pnpm build 自动重新生成。
新增 skill 落盘后,界面右下角弹出一张卡片问「要不要翻译」,只列没被问过、没有译文、描述不是中文的 skill([翻译] [忽略])。
prompted.json,之后不再问,但该 skill 仍留在面板「未翻译」页随时可手动翻。已知依赖(DSH 升级需复核):靠 registry 的 skills/change 事件(无载荷、无过滤)触发重算,靠 skill-filesystem 的 chokidar watcher 发现文件新增;skills/change 在 DSH 全库目前没有消费者,是事实上的无主扩展点。若语义变化,症状是「不再提示」而不是报错。
不想被提示:把卡片点「忽略」即可(或删 $DSH_HOME/skill2cn/prompted.json 让所有 skill 重新变成「没问过」)。
| 内容 | 位置 |
|---|---|
| 备份清单(已翻译状态唯一事实源) | $DSH_HOME/skill2cn/manifest.json |
| 翻译路由配置 | ctx.settings 命名空间 skill2cn(~/.dsh/settings.yaml) |
| 自定义端点 API key | 同上,字段标记 .role('secret') → 视图脱敏,不回传明文 |
跟随 DSH 当前会话路由(默认):取最近一次会话请求的 provider/model。尚未捕获到路由时「测试」会提示先发一条会话消息。
使用已配置的 provider/model:下拉来自 ctx.remote.llm.listConfigurableProviders();「发现模型」按 provider 的 settingsNs 调 discoverModels(部分 provider 未注册发现能力,此时可手工输入 model 名)。
自定义端点:在「高级」里选协议(OpenAI 兼容 / Anthropic 兼容),再填 Base URL / API key / model 名。两者都是非流式:
POST {baseURL}/chat/completions(Authorization: Bearer)POST {baseURL}/messages(同时带 x-api-key 与 Authorization: Bearer,官方与中转都能过;anthropic-version: 2023-06-01,max_tokens 必填)Base URL 请填到版本段(如 https://api.deepseek.com/v1 或 https://api.anthropic.com/v1),资源路径由插件追加。注意这与 DSH 里写 anthropic provider 的写法不同——那边 base 不含 /v1(它把路径交给 SDK),照那边填会 404。
「测试」按钮用当前路由跑一次真实小翻译,结果以判决在前的形式给出:绿色「配置成功」/ 红色「配置失败」,第二行才是明细(译文 + 耗时 + 实际模型名,失败时是宿主的原始原因)。试译例句固定在宿主里(Use when translating skill descriptions into Simplified Chinese.),刻意用本插件的自述句 —— 测试结果本身就说明「这套配置能翻好我要翻的东西」,句中的 skill 标识符还顺带验证内置 prompt 的「标识符不译」规则。
session.header.cwd;尚无会话事件时用 ctx.sessions.list() 里最近一个有 header 的会话兜底,都没有才退回进程 cwd)。所以「工作区」是你在 DSH 里打开的那个项目,而不是启动 DSH 的目录 —— 从 DSH 检出目录启动不会把检出自身的项目 skill 当成翻译目标。ctx.skills registry 胜者集合:同名被覆盖的落选 skill、以及无磁盘文件的内存 provider skill 不进入面板。dingtalk-*、Shadcn/ui、utility-first、spec/tickets),按「多于」会误判成待翻译;反过来英文里冒出的几个中文词仍因比例不足判为可翻译。真实数据核验见验收记录。no adapter registered for provider "..."(错误已如实透出)。SPEC §7 九条的逐条实测记录见 docs/ACCEPTANCE.md(含实现期发现的 DSH API 偏差与由此修复的缺陷)。
CONTEXT.md — 术语表,插件全部概念的权威定义docs/SPEC.md — 产品规格与验收标准docs/adr/0001-write-to-disk-translation.md — 架构决策:写盘改写docs/ACCEPTANCE.md — 实施验收记录docs/README.md — 文档导览