kingcharleslzy-ai/dsh-purge
kingcharleslzy-ai/dsh-purge独立维护的 dsh-purge 社区分支,提供宿主策略补丁、提示词与规则设置、诊断、独立的更新检查与安装控制,以及本机备份回滚。
按模型设置工作语言:有序的正则规则把模型 id 映射到 BCP 47 语言代码,发送前用 DeepSeek Flash 把你的输入翻译成模型的工作语言,每轮结束后把回答翻译回你的语言,可原位切换查看原文和实际发送内容;对桥接模型加一条系统提示规则保持工作语言,翻译失败时在消息下方提示,语言相同时不翻译、不产生费用。
给每个模型指定一种工作语言 —— 你用自己的语言输入,模型用它的工作语言回答,DeepSeek Flash 在中间翻译。
中文 · English · 日本語 · Español · Français · Deutsch · Русский · Português
DeepSeek Harness 社区插件。你用自己的语言输入,DeepSeek Flash 把它翻译成模型的工作语言再发送;模型的回答再翻译回你的语言,显示在原位。任何语言、任何模型都可以配置——例如你用西班牙语,Claude 和 Gemini 设为英语,某个中文模型设为 zh-CN。
你的语言为 auto(跟随中文界面),Claude 的工作语言为英语。回答结束后自动换成中文;「查看原文」显示模型的英文回答,「查看发送内容」显示实际发给模型的英文。
es、ja、zh-CN…),或 auto 跟随界面语言。@路径 原样保留。en-GB 与 en)时,不翻译、不加系统提示、不产生费用。
翻译失败时,原文照常发出,消息下方显示警告。
需要:DeepSeek Harness(已在 macOS 版 0.2.1-rc.5 上测试),并在其中配置 DeepSeek API key 或登录 DeepSeek 账号,翻译由 DeepSeek Flash 完成。
最快:把下面这句话发给 DSH 里的任意会话,让它自己安装:
帮我把 DeepSeek Harness 插件 https://github.com/tonyzdev/dsh-language-bridge 安装到当前 profile。有 plugin_manager 工具就直接调用 install_bundle 安装并启用;否则读取 profile 名(bash 用 $DSH_PROFILE,PowerShell 用 $env:DSH_PROFILE),运行 `dsh plugin --profile <profile> add github:tonyzdev/dsh-language-bridge`,profile 为 desktop 时用 app.asar 同级 runtime/cli/bin 下自带的 dsh(Windows 为 dsh.cmd);受沙箱限制时申请审批。不要手动改 profile 文件。
在 Harness 的「插件」页点 添加插件,填入下面的地址;安装完成后点 立即启用;若插件的按钮没有出现,刷新页面或重启 DeepSeek Harness。
https://github.com/tonyzdev/dsh-language-bridge
先完全退出 DeepSeek Harness,再运行(这是 macOS 上 dsh 的路径):
DSH="/Applications/DeepSeek Harness.app/Contents/Resources/runtime/cli/bin/dsh"
"$DSH" plugin --profile desktop add github:tonyzdev/dsh-language-bridge
想改代码时,克隆到本地并以链接方式安装,改动直接作用于这份副本:
git clone https://github.com/tonyzdev/dsh-language-bridge ~/.dsh/local-plugins/dsh-language-bridge
"$DSH" plugin --profile desktop add link:$HOME/.dsh/local-plugins/dsh-language-bridge
移除:在「插件」页卸载,或退出 Harness 后运行:
"$DSH" plugin --profile desktop remove dsh-language-bridge
打开「插件 → 语言桥接」,保存后从下一步开始生效,不用重启。
| 字段 | 说明 |
|---|---|
| 你的语言 | 填 auto 时,浏览器把界面语言上报给 Host 并保存下来;界面语言 zh 按 zh-CN 处理。 |
| 模型规则 | 可增删、上下移动。正则和语言代码在表单里即时校验,有错误时不能保存。 |
| 测试模型 id | 输入一个模型 id,查看会命中哪条规则、是否需要翻译。 |
默认规则
| 模型 id 正则 | 工作语言 |
|---|---|
claude | en |
gemini | en |
(^|[^a-z0-9])(chat)?gpt($|[^a-z]) | en |
GPT 规则带边界,匹配 gpt-5、openai/gpt-4o、chatgpt-4o、gpt-oss,不会误中 egpt-1、mygpt 这类 id。
[!TIP] 设置保存在
$DSH_HOME/storages/language-bridge.json(DSH_HOME默认为~/.dsh),优先级高于cordis.patch.yml。也可以在cordis.patch.yml里用rules、userLanguage设初始值,用provider(auto/deepseek-official/deepseek-account)、translateInput、translateOutput调整行为。
flowchart LR
A([你的输入]) -- 语言检测 --> B[DeepSeek Flash<br/>翻译]
B --> C[["模型<br/>工作语言 + 系统提示规则"]]
C -- 语言检测 --> D[DeepSeek Flash<br/>翻译]
D --> E([你看到的回答])
classDef tr fill:#4d6bfe,stroke:#4d6bfe,color:#fff
classDef model fill:#1f2335,stroke:#4d6bfe,color:#fff
class B,D tr
class C model
语言检测判断文本已经是目标语言时,跳过翻译,直接发送或显示。
| 文件 | 位置 | 作用 |
|---|---|---|
index.js | Host | agent/pre-step 翻译输入;系统提示段落;/api/language-bridge/* 接口(回答翻译、设置读写、上报界面语言,仅限 owner) |
rules.js | 共用 | 规则匹配、语言代码校验、设置合并、系统提示文本(纯函数) |
detect.js | 共用 | 判断文本是否还需要翻译(纯函数) |
protect.js | 共用 | 用占位符保护代码和链接,分块翻译 |
client.js | 浏览器 | 回答原位替换和切换、用户消息的「查看发送内容 / 查看原文」和失败警告、设置页 |
cordis.patch.yml | 补丁 | 插入 translator 服务行和本插件行 |
@deepseek-ai/dsh-experimental-translator,优先 deepseek-official(API key),其次 deepseek-account。付费结果存在会话里,重新打开不重复收费。source.languageBridge,模型看不到,只用于界面显示。plugins.bundle.config 槽位,没有用 Harness 自带的配置表单:后者需要 schemastery,而 link: 安装的本地插件解析不到这个包。needsTranslation(text, { target, source }) 判断一段文本是否还需要翻译成 target,依次看:
parseConfig、foo_bar、src/app.ts、v2、--flag、缩写)。没有剩余字母就不翻译。Intl.Locale 推算目标语言用的文字,不需要语言表。其他非拉丁文字占比够高就翻译。目标不是拉丁文字时,拉丁字母要占到 60% 以上才算外文,因为中日韩俄文里夹英文名词很常见。run tests),其他情况都翻译。[!IMPORTANT] 取舍是宁可多翻译,不漏翻译。多翻译一次只是一小笔 DeepSeek Flash 费用,而且译文和原文相同时不会替换,也不显示切换按钮;漏翻译则是模型收到错误语言的文本,而且没人发现。
代价:
run tests 这类没有虚词的短句,会多一次调用;本插件的前身是只支持中文的 claude-zh-bridge;没用过它可以跳过这一节。
[!WARNING] 两个插件不要同时启用,否则会翻译两次。先在「插件」页卸载旧插件,或用命令行:
DSH="/Applications/DeepSeek Harness.app/Contents/Resources/runtime/cli/bin/dsh" "$DSH" plugin --profile desktop remove @local/claude-zh-bridge
旧会话不受影响:旧插件存在 source.claudeZhBridge 里的原文照常显示。翻译缓存的键包含文本片段、语言和路由,本插件保持了相同的占位符和分块方式(有单元测试保证),所以你的语言解析为 zh-CN 时,旧会话里已付费的译文直接复用。
node --test test/*.test.js
测试覆盖规则顺序和匹配、语言检测(拉丁↔拉丁、中日韩/西里尔/阿拉伯/天城文双向、标识符混排)、受保护片段、占位符回退,以及旧字段的读取和失败警告的显示。
[!NOTE] 修改
index.js或cordis.patch.yml后需要重启 DeepSeek Harness;修改client.js后若界面没变化,重新安装并刷新页面。
[!CAUTION] 系统提示规则只能提高概率,不能强制。 测试中见过模型不遵守:翻译失败、Claude 直接收到日文时,它用日文回答;会话中途才加规则时,已有西班牙语历史的 Gemini Flash Lite 继续用西班牙语回答。回答已经是你的语言时不会再翻译。
@路径 受保护。没加反引号的命令和引文也会被翻译,比如 printf "..." 里的字符串。不想被翻译的内容请放进反引号。英文句子里夹的一段中文也会被翻译。auto 在浏览器上报界面语言之前无法判断是否同语言,这期间只靠语言检测。