dsh-annotation:DSH Web 選中批註,回車隨消息發送

前言

在 DSH Web 裏和模型對話,常見做法是複製助手回覆裏某段文字,貼到輸入框再寫問題。多段引用時,消息會越堆越長,氣泡裏也很難區分「原文」和「你的追問」。

dsh-annotation 是 omdsh-dev 維護的 DSH 客戶端插件(GitHub 約 95 stars)。它在瀏覽器端實現「選中 → 批註 → 回車發送」:批註塊隨消息發給模型,但你的氣泡裏只顯示問題和「批註 ×N」標籤,模型回覆按 Annotation N 逐條對照。插件以官方 bundle 形態發佈,不改 DSH 核心文件。

這是什麼

dsh-annotation 是 DSH Web 的選中批註插件,維護者爲 omdsh-dev,分類爲客戶端插件,許可證 MIT。

形態上是官方 bundle 插件:package.json 裏聲明 dsh.bundledsh.client,經 client-modules 把 client.js 注入瀏覽器;Node 側爲空實現。cordis.patch.yml 僅插入自身 id 一次,profile patch 保持 [],不修改 DSH 本體。

核心功能

下面按交互順序介紹已覈實的能力。

選中即批註

在助手回覆裏選中任意文字,工具條點「批註」,寫下批註內容(可留空,僅標記原文)。點選外部或按 Esc 收起。原文位置會出現藍色編號腳標和高亮,視口內錨定並做碰撞避讓,滾出屏幕也不丟失。

跨回合收集

批註可跨消息、跨回合累積,編號從 1 開始遞增。輸入框旁出現「批註 ×N」標籤,懸浮可查看全部批註,也可逐條刪除。

回車隨消息發送

直接回車,批註塊與輸入框裏的問題一併發給模型。模型收到完整批註協議塊;你的氣泡裏不出現批註塊文本,只顯示問題和「批註 ×N」標籤。發送瞬間在瀏覽器繪製前從 DOM 隱藏批註塊,實現零閃爍;刷新後歷史消息會自動修復顯示。

回覆逐條對照

插件向消息注入格式指令,引導模型按 Annotation 1:…Annotation N:… 逐條回應。回覆裏的 Annotation N: 會渲染爲可懸浮芯片,hover 可查看對應原文與批註內容。UI 文案與批註協議塊跟隨 DSH locale 服務(zh/en)即時切換。

安裝與啓用

安裝走官方 bundle 路徑,任選其一:

# npm 公開包(無需 npm 賬號)
dsh plugin --profile web add @changfenhuang/dsh-annotation

# 從 GitHub 公開源碼安裝
dsh plugin --profile web add git+https://github.com/omdsh-dev/dsh-annotation.git

# 本地路徑(開發調試)
cd /path/to/dsh-annotation
dsh plugin --profile web add .

僅作 Node 依賴、不註冊到 DSH 時:

npm install @changfenhuang/dsh-annotation

npm install 不會把插件註冊進 DSH,在 DSH 中使用時仍需執行 dsh plugin add

若在 v1.4.2 之前裝過舊包名,先遷移:

dsh plugin --profile web remove @omdsh-dev/dsh-annotation
dsh plugin --profile web add @changfenhuang/dsh-annotation

安裝後按平臺重啓 web 服務。Linux/WSL 下常見命令:

systemctl --user restart dsh-web

部分容器環境無需重啓,client.js 按請求 no-cache 提供,硬刷新(Ctrl+Shift+R)即可。

自檢是否生效:

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/@changfenhuang/dsh-annotation/client.js"   # 200

注意:只做 dsh plugin add,不要在 profile 或 home 的 cordis.patch.yml 裏重複 insert 同 id。

典型用法

交互流如下:

選中助手文字 ──▶ 工具條「批註」──▶ 寫批註/留空保存 ──▶ 原文亮藍編號+高亮
        ▲                                                    │
        └────────────── 任意多條、跨回合累積 ◀────────────────┘
                        │
                        ▼
              輸入框旁「批註 ×N」標籤(hover 看內容/刪除)
                        │
                    回車發送
                        ▼
   模型收到:批註塊(編號+原文+批註)+ 你的問題
   你的氣泡:只顯示問題 +「批註 ×N」標籤
   模型回覆:Annotation 1:… Annotation 2:…(可懸浮芯片)

實際操作可概括爲:

  1. 在助手回覆中選中要討論的文字,點「批註」,寫下備註(可留空)。
  2. 繼續對話、繼續選中並批註,多條會累積在「批註 ×N」裏。
  3. 在輸入框寫好問題,回車發送。
  4. 查看模型按 Annotation 1Annotation 2 等編號逐條回覆;hover 芯片可對照原文與批註。

中文環境下,發給模型的批註塊格式類似:

我批註了以下 N 處內容…

1. 原文
   批註:…

請用「Annotation 1:…」…

提問:

適用場景與注意

適合需要在 DSH Web 裏對助手長回覆做分段追問、又不想把大段引用塞進氣泡的場景。純瀏覽器端實現,不依賴 Node 側邏輯;與 dsh-focus-chat 聚焦會話視圖兼容。

安裝前請注意:

  • 插件以當前 dsh 進程權限運行,安裝前應自行檢查 GitHub 源碼 與 MIT 許可證。
  • 當前 npm 包名爲 @changfenhuang/dsh-annotation(v1.4.2),與 GitHub 倉庫 omdsh-dev/dsh-annotation 對應;舊名 @omdsh-dev/dsh-annotation 已棄用。
  • 需要 Node >= 20,peer 依賴 cordis ^4.0.0-rc.7 或 ^4.0.1。

DSH 生態主張「一切皆插件」;社區目錄 SkillHub 是獨立站點,與 DeepSeek / 幻方無官方從屬關係。

結尾

dsh-annotation 把「選中批註 → 隨消息發送 → 編號對照回覆」做成一條完整鏈路,氣泡側隱藏批註塊、回覆側懸浮芯片,改動集中在 bundle 插件內。可在目錄頁查看條目,或到 GitHub 閱讀完整文檔與架構說明。

  • 目錄頁:https://www.skillhub.cn/plugins/omdsh-dev/dsh-annotation
  • GitHub:https://github.com/omdsh-dev/dsh-annotation
羽毛球分组比赛记分
小程序二维码

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

小夜