用 dsh-annotation 給 DeepSeek Harness 網頁對話加上選中批註

前言

DeepSeek Harness(簡稱 DSH)的核心理念是「一切皆插件」:模型適配、工具、會話界面都可以用插件拼起來。網頁端對話用久了,會碰到一個很具體的問題:助手回覆很長,你其實只想針對其中兩三處原文提問,但每次都得把段落複製進輸入框、自己編號、再交代「請按條回答」。編號一亂,對照就斷了。

dsh-annotation 把這件事收成網頁裏的選中操作:在助手回覆裏劃一段文字、寫批註(也可以只標記不寫字),回車後批註塊隨當前問題一起發給模型,回覆按 Annotation 1Annotation 2 逐條對照。本文按插件目錄頁、GitHub 倉庫 README / package.json 覈對後整理,說明它是什麼、怎麼裝、怎麼用。社區插件目錄是獨立站點,與 DeepSeek / 幻方沒有官方從屬關係,安裝前仍應自己看源碼和許可證。

這是什麼

dsh-annotation 是一款面向 DSH Web 界面的界面增強插件,由 GitHub 組織 omdsh-dev 維護,npm 包名爲 @omdsh-dev/dsh-annotation。目錄頁分類爲「界面增強」,許可證爲 MIT。倉庫 package.json 在本文覈對時版本爲 1.3.16,要求 Node.js >=20dsh.client.platform 聲明爲 web

它解決的是網頁對話裏「對着原文提問、並按條拿回復」這件事,而不是給 TUI 或無界面 profile 加能力。形態上走的是 DSH 官方 bundle 插件機制:package.json 裏聲明 dsh.bundledsh.client,瀏覽器端由 client-modules 注入;Node 側 apply() 是空實現,真實邏輯都在 client.js。README 強調 零核心改動——不改 DSH 本體文件,cordis.patch.ymlinsert 一次自身 id,profile patch 保持空數組。

截至 2026-08-17,GitHub 倉庫星標爲 67(目錄頁當時顯示 46,以倉庫頁面爲準)。倉庫創建於 2026-08-10,目錄收錄日期爲 2026-08-15。

核心功能

下面這些能力來自倉庫中文 README 的功能表,與目錄頁簡介一致。

選中即批註

在助手回覆裏選中任意文字,工具條出現「批註」,寫入說明後保存。批註正文可以留空,效果等於只標記這段原文。點選空白處或按 Esc 可以收起工具條。

原文位置會留下亮藍色編號腳標和高亮。腳標在視口內錨定,並做碰撞避讓;滾出屏幕後也不會丟。

跨回合收集,回車一併發送

批註可以跨消息、跨回合累積,編號從 1 起。輸入框旁會出現「批註 ×N」標籤:鼠標懸停可查看全部內容,也可以逐條刪除。

準備好問題後直接回車。發給模型的是:批註塊(編號 + 原文 + 批註)+ 輸入框裏的問題。你自己的氣泡裏不會出現整段批註文本,只保留問題和「批註 ×N」標籤,懸停才能看到內容。README 寫明:批註塊在瀏覽器繪製前就從氣泡 DOM 裏拿掉,用來避免閃一下原文。刷新後,歷史消息會再修一次。

回覆按編號對照

發送時會往消息裏注入格式指令,要求模型按「Annotation 1:…」「Annotation N:…」逐條回應。流式結束後,回覆裏的這些標籤會渲染成可懸浮芯片,懸停顯示該條對應的原文和你的批註。

和聚焦對話一起用

README 寫明:它兼容 dsh-focus-chat 的聚焦會話視圖。選區批註、回覆芯片、角標重新定位在聚焦標籤頁和主聊天視圖裏都可以用。這是倉庫聲明的兼容性,不是第三方評測。

安裝與啓用

目錄頁給出的安裝命令如下,在 DeepSeek Harness 終端中運行:

dsh plugin add github:omdsh-dev/dsh-annotation

該插件只聲明瞭 Web 端,倉庫 README 把官方 bundle 安裝路徑寫成指定 web profile(作者稱爲「唯一」路徑),不需要 npm 賬號:

dsh plugin --profile web add git+https://github.com/omdsh-dev/dsh-annotation.git

本地開發調試可以在克隆目錄裏執行 dsh plugin --profile web add .

需要可復現安裝時,目錄頁建議固定 commit 哈希。本文覈對到 main 最新提交爲 0b0ceb6415c5c1204b9f73716e905b392acd729b(2026-08-16),可以寫成:

dsh plugin add github:omdsh-dev/dsh-annotation#0b0ceb6415c5c1204b9f73716e905b392acd729b

或按 README 的 git URL 形式,在地址後同樣加上 #<commit>。commit 會隨倉庫更新變化,安裝前請再覈對一次 GitHub。

README 提醒:只通過 dsh plugin add 或只寫 bundles 接入;不要再在 profile / home 的 cordis.patch.yml 裏對同一個 id 做一次 insert,否則配置裏會出現重複項。

安裝後按 README 自檢(rg 爲 ripgrep;Web 默認端口以本機實際爲準):

dsh --profile web --dump-config | rg "id: dsh-annotation"   # 必須恰好 1 行
curl -s -o /dev/null -w '%{http_code}\n' "http://127.0.0.1:3080/plugins/@omdsh-dev/dsh-annotation/client.js"   # 期望 200

README 給出的重啓示例如下,這是 macOS 的 launchctl 寫法:

launchctl kickstart -k "gui/$(id -u)/com.dsh.web"

其他系統按本機啓動 DSH Web 的方式重啓即可,倉庫沒有另寫 Linux / Windows 命令。

典型用法

交互流程按倉庫 README 可以復現如下:

  1. 在助手氣泡裏拖選一段文字。
  2. 點工具條「批註」,寫說明或留空保存;原文出現亮藍編號和高亮。
  3. 需要的話繼續選其他段落,編號依次累加。
  4. 看輸入框旁的「批註 ×N」,懸停覈對,刪掉不需要的條目。
  5. 在輸入框寫下問題,回車發送。
  6. 看自己的氣泡:應只有問題 + 標籤,沒有整段批註塊。
  7. 等回覆結束,按「Annotation 1」「Annotation 2」對照;懸停芯片覈對原文。

模型實際收到的協議塊,倉庫寫成下面這種結構(分隔標記是「提問:」,不是「問題:」):

我批註了以下 N 處內容…

1. 原文
   批註:…

請用「Annotation 1:…」…

提問:

README 解釋了爲什麼不用「問題:」:助手氣泡標題行裏的「回答我的問題:」也包含這幾個字,若按它切割,氣泡隱藏會誤命中。這是實現細節,日常使用不必改;如果自己改協議字段,需要避開這個衝突。

中文輸入時,Enter 攔截帶有 isComposing / keyCode 229 守衛,避免拼音還沒上屏就把稿發出去。setDraft 只在提交前一刻拼批註塊,不會覆蓋輸入框里正在寫的草稿。

適用場景與注意事項

適合已經在用 DSH 網頁界面、經常要對長回覆裏的具體句子追問或糾錯的人。純終端 TUI、headless profile 不在 dsh.client.platform 聲明範圍內。若同時使用 dsh-focus-chat,倉庫聲明聚焦視圖同樣可用。

使用前注意這幾件事:

  • 權限與來源:目錄頁寫明,插件以當前 dsh 進程的權限運行,安裝時可能執行代碼。安裝前檢查 GitHub 源碼和 MIT 許可證;不信任就不要裝。社區目錄收錄不等於 DeepSeek 官方背書。
  • 只裝一次 idcordis.patch.yml 內容是向配置 insert id: dsh-annotation 與包名 @omdsh-dev/dsh-annotation。重複 insert 會導致 dump-config 裏同一 id 出現多行,自檢會失敗。
  • 能力邊界:批註對照依賴模型遵守注入的格式指令。倉庫沒有承諾任何模型 100% 按「Annotation N」輸出;回覆芯片是在流式結束(data-streaming 去掉)之後才替換標籤。
  • 實現位置:Node 半邊是空的 apply(),不要到 lib/index.js 裏找界面邏輯。瀏覽器端是手寫的 CJS client.js,無構建步驟,按請求讀取且 no-cache。
  • 版本:當前 README 將 v1.3.x 記爲「回覆逐條對照 + 可懸浮芯片」;v1.2.x 是氣泡隱藏;v1.x 用 capture Enter 拼稿發送,取代了 v0.9 的 insertReference / slash codec 方案。以倉庫版本說明爲準。

小結

dsh-annotation 把「對着助手原文提問」收成 Web 上的選中批註:劃詞、編號、回車隨消息發送,回覆按 Annotation 編號對照,氣泡裏不刷出整段批註塊。它是 omdsh-dev 維護的 MIT 開源 bundle 插件,走 DSH 官方插件機制,不改核心代碼,但只覆蓋網頁端。

目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-annotation/

GitHub:https://github.com/omdsh-dev/dsh-annotation

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜