dsh-annotation:在 DSH 裏對回覆與側邊欄文檔做行內批註並一次性發給 Agent

前言

在 DeepSeek Harness(DSH)裏和 Agent 協作時,經常要對某段回覆或預覽文檔裏的幾句話單獨發表意見。把整段複製到輸入框再寫註釋,容易打亂上下文,也不利於一次說明多處修改點。社區插件 dsh-annotation(npm 包名 @fanfan4589/dsh-annotation)走另一條路:在對話正文或右側欄可選中文本上直接彈出批註框,批註彙總成輸入框上方的「N notes」卡片,再按需一次性發給 AI。

下面介紹插件定位、能力邊界、安裝方式與典型操作;事實以 GitHub 倉庫 README 爲準。

這是什麼

dsh-annotation 是由維護者 feifandiv 發佈的 客戶端 類 DSH 插件。當前 npm 版本爲 2.3.0,許可證 MIT,要求宿主 DSH >= 0.2.1-rc.1。

插件實現的是「行內批註」:選中 DeepSeek Harness 回覆正文,或右側欄裏 Markdown / 純文本 / 代碼等預覽中的文字,旁邊出現批註輸入框;確認後批註進入聚合卡片,可用快捷鍵把全部待發送批註作爲一條用戶消息交給 Agent。README 英文簡介概括爲:對回覆與側邊欄文檔做 inline annotation,在 composer 上方收集筆記併發送給 agent。

實現上爲 純客戶端 bundle:index.js 的 apply() 爲空,邏輯在 client.js;通過 DSH 的 additive slots(overlay、composer 上方卡片、右側欄 tab、側欄底欄入口等)掛載 UI,不替換內置界面。批註高亮使用 CSS Custom Highlight API,避免直接改動 React 持有的 DOM。

目錄頁:SkillHub — feifandiv/dsh-annotation。社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。

核心功能

選文批註與快捷鍵

操作 效果
選中文字 選區旁出現批註框並聚焦
輸入後 Enter 確認批註,收入 composer 上方的「N notes」卡片
Cmd/Ctrl + Enter 確認並立即把當前所有待發送批註發給 AI(可在批註框內,或沒有任何輸入聚焦時)
Shift + Enter 批註框內換行
批註框內無選中文本時 Cmd/Ctrl + C 複製打開批註框時所選原文
Esc 關閉批註框
點擊「N notes」卡片 展開引用與筆記,可跳轉或刪除
composer 裏已有正文時發送 已輸入文字與全部待發送批註合併爲一條消息(附件保留)
點擊編號圓點 / 高亮文字 編輯或刪除對應批註,編號與列表一致
側欄底欄 → Annotations 在右側以原生 tab 打開批註列表(與對話並列,不遮擋聊天)

發給 Agent 的消息格式

批註批量發送時,AI 收到結構化說明(語言隨當前 DSH UI 語言),例如:

I annotated 2 specific places below. Please review and act on each one:

1. Quote: "…"
   Location: conversation reply
   Note: …
2. Quote: "…"
   Location: `docs/report.md`
   Note: …

可用表面與限制

表面 是否支持
對話中的助手回覆(含展開的 reasoning) 是
右側欄 Markdown / 純文本 / 代碼預覽 是
右側欄 PDF、Word/PPT 轉 PDF 的可選中文本層 是(文本可選時)
右側欄 Excel 預覽 否(網格非文檔文本)
右側欄 HTML / 網頁預覽 否(opaque-origin iframe,父頁面無法讀選區)
圖片、終端 否

上述限制來自宿主對各表面的渲染方式,非插件單獨裁切。

設計與數據生命週期

  • 高亮顏色單一,強調放在批註文字上;批註不會把大段文字貼進 composer,而是聚合在卡片裏。
  • 批註保存在瀏覽器 localStorage,鍵名 dsh.annotation.v1(按瀏覽器配置隔離,同配置多窗口通過 storage 事件同步)。
  • 列表展示當前會話的對話批註加上文檔批註;刪除的會話在啓動或打開列表後會自動清理對話批註;歸檔會話的批註會保留直至手動「Clean up」。
  • 文檔批註在批量發送後約一秒清除;對話批註發送後需通過「Clean up → Clean sent annotations」清理。
  • 插件不提供導出、複製合集或診斷等額外功能,只做批註與發送。

安裝與啓用

從 npm 安裝(命令來自官方 README):

dsh plugin --profile <profile> add @fanfan4589/dsh-annotation

也可讓 DSH Agent 通過 plugin_manager 的 install_bundle 安裝 checkout,刷新頁面一次後生效。卸載走 Plugin Manager;卸載後 localStorage 中的批註仍會保留。

安裝前建議自行查看 源碼與 LICENSE;客戶端插件隨當前 DSH 進程與頁面環境運行,權限邊界與瀏覽器配置一致。

典型用法

1、在助手回覆裏選中需要質疑或修改的句子,在彈出框裏寫簡短說明,按 Enter 確認。可繼續在其他位置選文添加批註。

2、需要讓 Agent 一併處理時,在批註框或空閒焦點下按 Cmd/Ctrl + Enter,或在 composer 寫好補充說明後正常發送;待發送批註會隨同一條消息發出。

3、批註較多時,點擊 composer 上方的「N notes」或側欄底欄 Annotations,在右側 tab 中展開列表,逐條跳轉、編輯或刪除。

4、在右側欄打開項目裏的 Markdown 或 PDF(可選中文本層),對具體段落批註;發送後文檔側批註會按 README 描述的生命週期清理,避免舊高亮干擾下一輪修改。

流程概覽:

flowchart LR
  A[Select text] --> B[Comment box appears]
  B -->|Enter| C[Confirm + collect into the card]
  C -->|Keep annotating| A
  B -->|Cmd/Ctrl + Enter| D[Send all annotations to the AI]

適用場景與注意

適合需要在 DSH 裏多點、原位向 Agent 反饋的場景:代碼審查式對話、對照側邊欄文檔改稿、對長回覆分段提修改意見等。

應注意:

  • 批註只存在於當前瀏覽器配置;換機或清站點數據會丟失。
  • 掃描版 PDF(無可選文字層)無法批註。
  • 修改 client.js 後需刷新頁面;第三方側欄若在選區上疊放按鈕,批註框會嘗試避讓,仍可能偶發遮擋。

已知宿主要求 dsh >= 0.2.1-rc.1;無額外 npm 運行時依賴(開發構建僅需 Node 內置模塊)。

結尾

dsh-annotation 把「選中 → 旁註 → 聚合 → 一次發送」固化爲 DSH 客戶端內的標準動作,減少複製粘貼與遺漏上下文。進一步瞭解能力與快捷鍵表,見 GitHub README(含 中文版 README.zh.md);在生態目錄中檢索:SkillHub 插件頁。

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

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

小夜