前言¶
在 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 插件頁。