前言¶
在 DeepSeek Harness(DSH)桌面端裏讀長回覆時,若需要邊看原文邊對照另一種語言,常見做法是複製到外部翻譯工具,或依賴瀏覽器整頁翻譯。這兩種方式要麼打斷對話流程,要麼難以和 Markdown 標題、列表、代碼塊等結構對齊。dsh-bilingual 是面向 DSH Desktop 的客戶端插件:在聊天界面提供「雙語」開關,開啓後僅在顯示層爲助手回覆的每一段原文下方追加另一種語言的譯文,不改變會話記錄、發給模型的上下文以及複製內容。
這是什麼¶
- 名稱與歸屬:npm 包
dsh-bilingual,倉庫 Hemuchuan/dsh-bilingual,維護者 Hemuchuan;許可證 MIT。 - 分類:客戶端(DSH 插件目錄歸類爲客戶端)。
- 定位:給 DSH 桌面端聊天界面增加「中英逐段翻譯 / 雙語對照」——原文是中文則在下面加英文,原文是英文則在下面加中文。
- 運行環境:面向 DSH Desktop(Windows / macOS / Linux);插件安裝到
profiles/desktop。同一套 Web GUI 架構下也可用於dsh web,當前主要在桌面端驗證。package.json要求dsh版本>=0.2.1-rc.1 <0.3.0-0,Node>=20。
核心功能¶
下面介紹顯示規則與「只改顯示」的邊界,均來自項目 README。
段落與結構
- 標題的譯文拼在同一行(例如:
3. 重要物理性質 3. Important physical properties)。 - 列表項的譯文仍在該條項目符號內,前面留一個空行,與原文形成兩段。
- 代碼塊、塊級公式、HTML 塊原樣保留,不翻譯;表格會生成一張完整的譯文表附在原文表下方。
不翻譯或有限翻譯的範圍
- 只翻助手回覆正文:用戶消息、思考鏈、工具調用、工具輸出不翻;代碼塊、塊內公式不單獨翻。
- 只處理中文/英文;其他語言按「非中文即英文」的粗略判斷,可能不翻或翻錯方向。
- 目標語言是「另一種」:中文段配英文、英文段配中文,不做「固定翻成某一種語言」。
數據與費用
- 會話記錄、發給模型的上下文、複製按鈕都仍是原文。
- 每段未命中緩存的文本會發一次 DeepSeek 請求;長回覆首次開啓會批量請求,需留意 API 用量。
安裝與啓用¶
從 npm 安裝(推薦)¶
已發佈爲 dsh-bilingual@0.1.6。在 DSH 環境中執行:
dsh plugin --profile desktop add dsh-bilingual
也可以在 DSH 插件市場裏搜索 dsh-bilingual 或「逐段翻譯」。
本地 link(開發)¶
適合在插件源碼目錄調試。先退出 DSH(或裝完後再重啓),在插件目錄執行:
& "$env:LOCALAPPDATA\Programs\DeepSeek Harness\resources\runtime\bin\node.exe" install.mjs --profile desktop
install.mjs 會在備份 package.json 後:在 profiles/<profile>/package.json 的 dependencies 中加入 "dsh-bilingual": "link:<本目錄>";在 dsh.profile.bundles 中加入 "dsh-bilingual";在 profiles/<profile>/node_modules/dsh-bilingual 建立指向本目錄的 junction。也可用 DSH 插件管理器的「本地鏈接」方式,本質相同。完成後重新打開 DSH。
配置 API¶
- 打開 設置 → 雙語。
- 插件會優先複用 DSH 已保存的
DEEPSEEK_API_KEY(~/.dsh/.credentials.yaml);若 DSH 中沒有,可粘貼sk-...,點「保存」,再點「測試連接」。 - Key 優先級:插件裏填的 Key > 環境變量
DEEPSEEK_API_KEY> DSH 憑據。插件 Key 存在~/.dsh/dsh-bilingual.json(DSH_HOME下),不會寫進會話,也不會回傳到瀏覽器。 - 模型默認
deepseek-chat,Base URL 默認https://api.deepseek.com,可改成任意 OpenAI 兼容端點。
典型用法¶
經過上面的安裝與配置,按以下步驟在對話中使用。
- 回到對話界面,點會話頭部的 「雙語」 按鈕開啓(默認關閉;狀態存在
sessionStorage,僅對當前標籤頁生效)。 - 開啓後,已落定的助手消息會按可見區域逐條翻譯;滾動到新消息時繼續翻譯。翻譯發生在顯示層;刷新後同一段可命中本機緩存,不重複請求。
- 關閉開關即恢復原文顯示(緩存保留,下次開啓可複用)。
README 中的對照示例如下(節選):
### 3. 重要物理性質 3. Important physical properties
- **標量性**:磁通量是標量,但有正負之分。正負號取決於所選曲面的法線方向。
**Scalar nature**: Magnetic flux is a scalar quantity, but it can be positive or negative.
The sign depends on the direction of the normal to the selected surface.
實現要點(可選瞭解)¶
插件分「瀏覽器半」與「宿主半」:
- 客戶端(
lib/client.js)以priority: -10影子註冊conversation.chat.node的assistant-step渲染器;正文從數據層取原始 Markdown,經lib/markdown.cjs行級切分後插入譯文,再交給官方MarkdownText渲染。 - 宿主(
lib/index.js)註冊/api/dsh-bilingual/*,代理 DeepSeekchat/completions:API Key 只在服務端,瀏覽器不直連。 - 純函數(
lib/markdown.cjs)負責切分、語言判斷、譯文清洗與拼裝,並有獨立單測。
修改 lib/client.js 或 lib/index.js 後需重啓 DSH;僅改客戶端 bundle 時,重啓後刷新頁面即可。
適用場景與注意¶
適合誰
- 在 DSH Desktop 上頻繁閱讀助手長文,需要段落級中英對照、且希望保留 Markdown 結構的開發者或研究者。
安裝前建議
- 插件以當前 DSH 進程權限運行,會向配置的 DeepSeek 兼容端點發送譯文請求。安裝前應查看 GitHub 源碼 與 MIT 許可證,確認憑據與用量策略符合你的環境。
已知邊界
- 依賴 DSH 的
assistant-step數據形狀;DSH 大版本若改動node.data.blocks/MarkdownText,需插件跟進適配;渲染異常時會退回純文本。 - DSH 插件社區目錄(如 SkillHub 條目)爲獨立站點,與 DeepSeek / 幻方無官方從屬關係;DSH 生態理念是「一切皆插件」,本介紹不表述爲官方應用商店應用。
卸載(簡要)
編輯 profiles/desktop/package.json 移除 dsh-bilingual 依賴與 bundle 項,刪除 profiles/desktop/node_modules/dsh-bilingual,重啓 DSH。可選刪除 ~/.dsh/dsh-bilingual.json。
結尾¶
dsh-bilingual 在 DSH 桌面端對話裏用開關控制「顯示層雙語」,會話與上下文保持原文,適合需要中英逐段對照又不願離開 DSH 的場景。進一步說明與 issue 見 GitHub 倉庫,目錄頁見 SkillHub:Hemuchuan/dsh-bilingual。