dsh-annotated-browser:在真實頁面上標註並把說明送進對話

前言

在 DSH 裏讓模型改「網頁上這一塊」,通常要同時解決兩件事:頁面能看見,且能精確指向是哪個元素或區域。側欄自帶瀏覽器若直接嵌遠程 URL,常被 X-Frame-Options 或 CSP 的 frame-ancestors 擋住;即便能顯示,跨源也無法穩定讀取 DOM,對話裏往往只能貼截圖或口頭描述,模型還要猜佈局。

dsh-annotated-browser 面向上述場景:在宿主機用 headless Chromium 渲染頁面,再從 DSH 同源代理出 HTML,使側欄與頁面同源,從而點擊元素或框選區域,把選擇器、可見文本、矩形與備註一併送入會話。

這是什麼

  • 名稱:dsh-annotated-browser(DeepSeek Harness 客戶端插件)
  • 維護者:KirinKylin-1
  • 分類:客戶端(platform: web,注入右側欄與會話相關 UI)
  • 許可證:MIT

插件在 DSH 側欄瀏覽器中提供標註能力:通過同源主機代理渲染頁面後,點擊元素或拖拽區域,將備註寫入對話。模型收到的是選擇器、可見文本與矩形信息,而非需要猜測含義的截圖。

核心功能

同源代理,提高可嵌入與可標註性

部分站點禁止被 iframe 直接加載遠程地址。本插件不在側欄裏直連遠端 URL,而是在宿主機用 headless Chromium 執行頁面,再把結果從 DSH 源站提供,從而避開典型的嵌入限制,頁面更易正常顯示。

渲染結果與 DSH 面板同源後,才能滿足 DOM 標註前提,支持:

  • 點擊元素並生成 選擇器(#id、data-testid,或沿祖先鏈行走的 CSS 路徑);
  • 拖拽區域時收集 區域內所有元素,而不只是最外層節點;
  • 一併記錄可見文本、元素位置與備註;
  • 連續選取,最終按選取順序 合併爲一條消息 發送。

與現有瀏覽器標籤的協作方式

配置項 takeover 默認爲 true 時,插件直接提供 browser 標籤類型,打開的頁面默認可標註。設爲 false 時不替換原有 browser 標籤:快捷鍵、在系統瀏覽器中打開、歷史記錄及其他依賴 browser 的插件行爲保持不變,並額外提供標註標籤與標籤條上的切換入口。

整頁評審少佔輪次

添加備註後仍留在選取模式,可按 Esc 結束。備註會進入列表,通過「發送到對話」一次性發出,整頁走查不必每條備註佔一輪。

已是同源時的直連

若頁面本就由當前 DSH 提供(例如另一插件的頁面),則直接 iframe 加載,保留 cookie,不再多跑一遍 Chromium。

無法標註時的明確降級

僅在本機可達的地址(例如映射到本地的端口)等情況下,面板可回退爲 直接加載(只讀):頁面仍可見,並明確提示無法標註,而不是空白 iframe。

界面語言

面板跟隨 GUI 語言(Settings → General),可隨設置切換;內置英文與中文,字符串集中在 i18n.js。

安裝與啓用

官方推薦從 GitHub Releases 安裝預構建包(README 記載在乾淨 profile 上驗證約 9.4 s,包約 273 KB):

dsh plugin --profile web add https://github.com/KirinKylin-1/dsh-annotated-browser/releases/download/v1.2.2/dsh-annotated-browser-1.2.2.tgz

安裝後需 重啓一次 dsh web(宿主機側需加載),並刷新 GUI。

另有兩種 README 記載的替代方式(按需選用):

# 直接從 git(下載更大,從源碼運行)
dsh plugin --profile web add github:KirinKylin-1/dsh-annotated-browser

# 自 npm 發佈後即可(README 中稱「once published」)
dsh plugin --profile web add dsh-annotated-browser

環境要求(來自 package.json 與 README):

  • Node >=22
  • DSH >=0.2.1-rc.1 <0.3.0
  • 宿主機需有基於 Chromium 的瀏覽器(Chrome、Chromium 或 Edge);自動探測常見路徑,或通過 CHROME_PATH / PUPPETEER_EXECUTABLE_PATH 指定。探測失敗時可在 profile 補丁中寫明路徑:
# ~/.dsh/profiles/web/cordis.patch.yml
- id: dsh-annotated-browser
  config:
    browserExecutable: /usr/bin/google-chrome

配置項

字段 默認值 含義
browserExecutable 自動探測 Chrome/Chromium 可執行文件絕對路徑
proxyServer 空 渲染頁面時使用的 HTTP 代理,例如 http://127.0.0.1:7890
timeoutMs 30000 頁面加載超時(毫秒)
allowRemote false 是否接受非環回地址的代理請求(僅當 DSH 直接暴露在局域網時考慮)
takeover true 是否接管 browser 標籤類型;false 保留原版瀏覽器並增加標註入口

典型用法

README 記載的操作順序如下:

  1. 右側欄 → Browser → 輸入 URL。
  2. 工具欄 → Annotate(按 Esc 可退出標註模式):單擊元素,或按住拖拽框選區域。
  3. 填寫備註 → Add to list;添加後自動繼續選取。
  4. Send to conversation 將所有備註按添加順序作爲 一條消息 發到當前會話。

備註列表在刷新後仍保留:按 Session 存在 localStorage 中,直到清空或發送。

適用場景與注意

適合:需要在真實頁面佈局上與模型對齊修改意見的前端或 UI 相關工作流;需要把「改這裏」落實爲可機器讀取的選擇器與文本,而不是截圖猜測的場景。

侷限(README「Limits」):

  • 頁面由 headless Chromium 渲染後回源提供;登錄態、重度交互應用可能與日常瀏覽器表現不一致。
  • 代理頁面視爲「較可信」內容,只瀏覽你本會在 GUI 中打開的站點。
  • 不會共享你本機瀏覽器裏的 cookie。

安全與權限:插件以當前 dsh 進程權限在宿主機啓動 Chromium 並代理請求。安裝前宜閱讀源碼與 MIT 許可證,確認可接受其網絡與本地瀏覽器調用行爲。社區目錄 skillhub.cn 爲獨立收錄站點,與 DeepSeek / 幻方無官方從屬關係;DSH 生態遵循「一切皆插件」的擴展方式。

結尾

dsh-annotated-browser 把「看見頁面」和「指名部位」合成側欄裏的標註流程,並以結構化信息進入對話,適合整頁走查類任務。進一步瞭解可訪問社區目錄頁與項目倉庫:

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

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

小夜