一键把当前页面所有可见文字原地译成中文
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/17 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add 7gzgn/dsh-inpage-translator该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
是什么
dsh 原生插件 · ui
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 15 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🟢 扫描:未发现敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。
扫描于 2026/11/1(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-system-prompt@deepseek-ai/dsh-tools给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
在智能体正在看的页面里放一个翻译按钮:点一下就地替换所有可见文本节点,再点一下还原原文。长页面分块处理,重复内容只翻一次,翻译交给宿主 LLM 服务完成(插件不持有 API key)。
README
由 DeepSeek 最新模型翻译生成dsh-inpage-translator(整页翻译)
你把页面给 AI 看,它替你把整页翻成中文。
调一次 translate_page,页面右下角多出一个浮层按钮「🈯 译」;点一下,页面上每一个可见文本节点原地换成译文;再点一下,回到原文。
它是第 8 个作品,也是第一个「动别人的网页」的插件:前 7 个动的是本机、文件、窗口、发布链路,这个动的是一张陌生的页面 ——所以两条边界写在最前面:只改文本、只加内联样式;插件自己不持有任何 API key。
它做什么
| 步 | 动作 | 细节 |
| ① | 取浏览器会话 | 默认用自己的会话键(dsh-inpage-translator),也支持 session 参数翻别的会话 |
| ② | 装浮层按钮 | 内联样式 + position:fixed + z-index:2147483647,不注入 (页面 CSP 管不到它) |
| ③ | 打标 | TreeWalker 遍历文本节点,可译的父元素记下原始文本与编号(data-dsh-pt="12") |
| ④ | 等点击(action=install) | 每 1.2 秒读一次页面状态,默认等 60 秒;用户点了就在同一次调用里翻好 |
| ⑤ | 分块送翻 | 相同字符串只翻一次;按字符/节点数分块;译文由宿主 LLM 服务生成 |
展开完整文档(README 剩余 1 节)
dsh-inpage-translator(整页翻译)
你把页面给 AI 看,它替你把整页翻成中文。
调一次 translate_page,页面右下角多出一个浮层按钮「🈯 译」;点一下,页面上每一个可见文本节点原地换成译文;再点一下,回到原文。
它是第 8 个作品,也是第一个「动别人的网页」的插件:前 7 个动的是本机、文件、窗口、发布链路,这个动的是一张陌生的页面 ——所以两条边界写在最前面:只改文本、只加内联样式;插件自己不持有任何 API key。
它做什么
| 步 | 动作 | 细节 |
| ① | 取浏览器会话 | 默认用自己的会话键(dsh-inpage-translator),也支持 session 参数翻别的会话 |
| ② | 装浮层按钮 | 内联样式 + position:fixed + z-index:2147483647,不注入 (页面 CSP 管不到它) |
| ③ | 打标 | TreeWalker 遍历文本节点,可译的父元素记下原始文本与编号(data-dsh-pt="12") |
| ④ | 等点击(action=install) | 每 1.2 秒读一次页面状态,默认等 60 秒;用户点了就在同一次调用里翻好 |
| ⑤ | 分块送翻 | 相同字符串只翻一次;按字符/节点数分块;译文由宿主 LLM 服务生成 |
| ⑥ | 回填 | 按编号写回 textContent,并记下译文(再点按钮即还原) |
| ⑦ | 还原 | 点按钮或 action='restore' → 全部回到原文 |
回执里一定有:送翻条数、回填条数、模型调用次数、字符数、唯一串数、超限丢弃段数、兜底原文条数,以及任何一条警告。不编数字,不静默丢。
已知边界(先说清,再说好用)
| 边界 | 说明 |
| 不是原生工具栏按钮 | 内置浏览器的工具栏是宿主硬编码的 HTML(dsh-builtin-browser/host-main.js:123 的 TOOLBAR_HTML),宿主不读任何外部字段 —— 第三方插件没有加工具栏按钮的扩展点。所以按钮做进页面里。 |
| 导航后按钮会消失 | 注入是运行期一次性的(宿主没有 addScriptToEvaluateOnNewDocument 这类通道)。再调一次 translate_page 即可重装;按钮状态原本也无法跨页保留。 |
| 跨域 iframe 翻不到 | 只能进当前文档的 DOM。同源 iframe 有机会,跨域没有。 |
| 只翻可见文本节点 | 图片、background-image、canvas 里的文字不动; / 的值不动。 |
| 字符上限 | maxChars 默认 6000(省钱)。超出部分如实回报并跳过,不做静默丢弃。 |
| 文本节点被包了一层 | 元素上只打标、不重排子树(span 用 display:inherit),但页面自己重写这段 DOM 时译文可能被覆盖 —— 那时重跑一次即可。 |
它依赖什么
- 内置浏览器插件(ctx.get('browser'))—— 没有时明确报错,不会假装能用。
- 宿主的 LLM 服务(ctx.get('llm'))—— 翻译由它完成,插件不读任何 API key、不直接调任何 HTTP。
调用形状与宿主里已验证的两个先例一致(dsh-meme 的识图、dsh-better-sidebar 的提交信息): resolveCallConfig → prepareCall → stream。
安装
市场收录后在 DSH 里搜 dsh-inpage-translator 安装。手动安装:
New-Item -ItemType Junction -Path "$env:USERPROFILE\.dsh\profiles\desktop\node_modules\dsh-inpage-translator" -Target "D:\dsh\projects\dsh-inpage-translator"
profile 的 package.json:dependencies 加 "dsh-inpage-translator": "link:D:/dsh/projects/dsh-inpage-translator" 并把 "dsh-inpage-translator" 加进 dsh.profile.bundles(漏了不加载)→ 重启 DSH
用法
translate_page action=install # 装按钮并等用户点(默认等 60 秒) translate_page action=translate # 不等点击,立刻翻 translate_page action=restore # 回到原文 translate_page action=status # 只读状态
可选参数:target(zh 默认 / en / ja / ko / ru)、 mode(replace 默认 / bilingual 双语对照)、maxChars、waitSec、 session、provider、model。
典型流程:
1. 让 AI 打开你要读的页面(浏览器窗口就在你眼前);
2. translate_page(action:"install") → 你点一下右下角的「🈯 译」;
3. 同一次调用里页面就变成中文了;
4. 想对照原文,再点一下按钮(或让 AI 调 restore)。
三条设计取舍(都被现场逼出来的)
1. 按钮为什么在页面里、而不是工具栏里 宿主工具栏没有第三方扩展点(见上表),而「往页面里放一个浮层」是宿主自己就在用的姿势(dsh-builtin-browser 的 virtual-cursor.ts:69-81 就是这么画那个虚拟光标的)。
零宿主改动、可随时卸载、升级不会被打回。
2. 按钮点击为什么由插件处理,而不是页面自己翻译 页面里没有到宿主的 bridge(也没有凭据,也不该有)。所以按钮只写一个请求标记 (data-dsh-pt-req),插件轮询读到后去翻译 —— 这样凭据永远留在宿主侧。
3. 为什么「相同文本只翻一次」 网页里菜单、按钮、表头经常重复几十次。去重发生在限额之前,所以 6000 字符的额度能覆盖的页面比不去重时大得多。
安全与隐私
- 不发外部请求:插件自己只做两件事 —— 在页面里跑脚本、调用宿主 LLM 服务;没有 fetch、没有本地 HTTP 端口、没有凭据读写。
- 不改页面结构以外的东西:只写文本、只加内联样式与三个 data-dsh-pt* 属性。
- 翻译内容会经过你本机配置的模型(DSH 的 provider)—— 这是这类功能的固有代价,页面上若有敏感信息,请自行判断要不要翻。
测试
node test/smoke.mjs # 50 项:纯逻辑 / 页面脚本 / 编排层(假 LLM)/ 驱动层(假浏览器与假页面)
测试不联网、不碰真实浏览器、不读任何凭据。
在活代码树(D:\dsh\projects\dsh-inpage-translator)里跑会直接退出,请先复制到 D:\dsh\sandbox\ 再跑(避免在真宿主上生效)。
许可
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
7gzgn/dsh-inpage-translator
一键把当前页面所有可见文字原地译成中文
相关插件 · UI / 主题
破甲增强版JeffKeeping/dsh-purge-plus
dsh-purge 的非官方分支fork:适配 DeepSeek Harness 0.2.1-rc.2、破甲内核…
★ 387已汉化DeepSeek 客户端
71.9
无代码业务系统平台nocobase/nocobase
NocoBase 是什么
★ 24,798已汉化DSH
71.8
1Panel 服务器面板1Panel-dev/1Panel
全球 250 万+ 自托管用户共同喜爱。
★ 37,327已汉化DSH
71.5
终端编码代理esengine/DeepSeek-Reasonix
· 指南 · ACP · 扩展开发 · 规格 · 官方网站 · Discord · QQ
★ 36,021已汉化DSH
71.2
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 150,486已汉化DSH
71.1