dsh-chat-find:在 DSH 對話視圖裏做瀏覽器式查找

前言

在 DeepSeek Harness(DSH)裏跑長對話時,助手輸出、工具卡片和已加載的歷史頁會堆在同一條 transcript 裏。要在整段內容裏定位某個錯誤碼、函數名或 API 標識,靠肉眼滾動效率很低;把內容複製到外部編輯器再搜,又會打斷當前會話節奏。下面介紹社區客戶端插件 Chat Find(bulzz1233/dsh-chat-find):在 DSH 桌面 UI 的對話區域提供類似瀏覽器或 IDE 的查找條,只搜已渲染的聊天節點,不碰輸入框草稿和查找條自身。

這是什麼

Chat Find for DeepSeek Harness 由維護者 bulzz1233 發佈,分類爲客戶端插件。它在對話視圖頂部或快捷鍵喚起查找條,對當前 DOM 裏已渲染的用戶消息、助手文本、工具卡片以及分頁加載進 transcript 的歷史內容做字面量搜索,並支持大小寫、全詞匹配、匹配計數與快捷鍵跳轉。插件以 MIT 許可證開源,當前 GitHub 星標爲 0;在插件目錄頁與倉庫 README 中的簡介一致:Browser/IDE-style in-conversation find bar,含 match case、whole word、history,以及面向流式輸出的 streaming-aware 行爲。

核心功能

以下能力均來自倉庫 README,安裝後可在對話內直接使用。

打開與關閉

  • Ctrl+F / Cmd+F,或對話標題欄上的查找按鈕,打開查找條。
  • 任意焦點下按 Esc 關閉(包括查找輸入框或 composer 有焦點時)。

搜索範圍與選項

  • 搜索對象:所有已渲染的聊天節點;composer 草稿、隱藏節點、輸入框、contenteditable 草稿以及插件自己的查找條會被排除,避免「幽靈匹配」。
  • Match case(Aa) 與 whole word(ab) 開關,便於搜錯誤碼、函數名、API 標識。
  • 查詢爲字面文本,不是正則表達式;全詞模式使用 JavaScript/Unicode 詞邊界,不是按自然語言分詞。

導航與歷史

  • 實時顯示 n / total;Enter / Shift+Enter 在首尾處循環切換上一處/下一處匹配。
  • F3 / Shift+F3、Ctrl+G / Ctrl+Shift+G 與下一處/上一處按鈕行爲相同。
  • 搜索歷史:ArrowUp / ArrowDown 瀏覽,最新在前、自動去重;越過最新條目時會恢復正在輸入的草稿。

反饋與流式場景

  • 零結果時計數與邊框變紅,查找條輕微抖動一次;連續按 Enter 會再次抖動。系統開啓 prefers-reduced-motion 時不播放動效。
  • Streaming-aware:通過防抖的 MutationObserver 在回覆流式輸出或舊頁加載時重新搜索;當前匹配按 { text node, offset } 錨定,歷史前插或 token 追加不會把光標跳到別的匹配;重搜不會改變滾動位置。

實現要點(便於排查問題)

  • 從活動的 [data-conversation-scroll] 視圖採集 conversation.chat.flow 子樹文本;塊邊界保留,匹配可跨行內 <span>(例如語法高亮代碼),但不跨無關塊。
  • 高亮使用 CSS.highlights 與 Range,不插入 <mark>,避免改動 React 持有的 DOM。
  • UI 使用 --dsw-alias-* 主題 token,文案支持英文與中文。

環境與限制

  • 需要帶 Chromium 引擎的 DeepSeek Harness Desktop,且支持 CSS Custom Highlight API(Chromium 105+)。
  • README 寫明在 DeepSeek Harness 0.2.1-rc.5 上做過測試。
  • 僅已渲染文本可搜;虛擬化或未掛載的摺疊節點無法匹配。

安裝與啓用

官方 README 的安裝分兩步:先把倉庫放到本機穩定目錄,再在當前 DSH profile 中以 local bundle 方式安裝。資料中的示例爲 clone 到本地;你也可以用其它方式取得相同目錄結構,關鍵是安裝時使用絕對路徑。

取得插件目錄後,在 DSH 會話中讓 agent 安裝本地 bundle,例如:

Install this local plugin bundle: /absolute/path/to/dsh-chat-find

agent 會通過 plugin_manager 的 install_bundle 傳入該絕對目錄;bundle 會鏈接進 profile,之後若在目錄內更新源碼,客戶端重載後可生效。若插件未立刻出現,重載一次 DSH 窗口即可。

插件 bundle 名在 package.json 中爲 @local/dsh-chat-find,版本 1.0.0;客戶端側爲 web 平臺、immediately: true,並注入 @deepseek-ai/dsh-client-locale 與 @deepseek-ai/dsh-client-ui-conversation。

安全說明:客戶端插件在當前 DSH 進程權限下運行。安裝前請自行閱讀 client.js 等源碼並確認 MIT 許可證(見倉庫 LICENSE)是否符合你的要求。

典型用法

安裝並重載客戶端後,在任意對話中打開查找條,輸入要搜的字面字符串,用快捷鍵或按鈕在匹配間跳轉。常用操作如下(與 README Usage 表一致)。

操作 快捷鍵
打開查找條 Ctrl+F / Cmd+F,或標題欄查找圖標
關閉 Esc
下一處 Enter、F3、Ctrl+G
上一處 Shift+Enter、Shift+F3、Ctrl+Shift+G
上一條/下一條搜索詞 ArrowUp / ArrowDown
切換大小寫 Aa 按鈕
切換全詞 ab 按鈕

當前匹配以品牌色高亮,其餘匹配爲半透明品牌色高亮。適合在長 transcript 裏快速定位某次 tool 輸出裏的字段名、日誌片段或文檔裏反覆出現的標識符;不適合依賴正則或搜索尚未加載進 DOM 的歷史頁。

適用場景與注意

適合:經常在 DSH 單會話內核對長回答、工具返回和已加載歷史;需要大小寫或全詞約束的標識符搜索;助手仍在流式輸出時需要查找條自動跟上 DOM 變化。

注意:

  • 未渲染內容搜不到,需要先滾動或加載到對應頁。
  • 社區插件目錄(SkillHub 等)爲獨立站點,與 DeepSeek / 幻方無官方從屬關係;DSH 生態強調「一切皆插件」,本文介紹的是社區維護的客戶端擴展,不是官方應用商店條目。
  • 星標、測試版本等信息以倉庫與目錄頁當時展示爲準;升級 DSH 或 Chromium 內核後,若 Highlight API 行爲變化,需自行迴歸測試。

結尾

dsh-chat-find 把瀏覽器/IDE 熟悉的查找體驗搬進 DSH 對話視圖,在不動 composer 草稿的前提下搜已渲染 transcript,並對流式輸出做了錨定重搜。若要查看元數據或 issue,可打開 GitHub 倉庫;若要瀏覽插件條目,可訪問 SkillHub 目錄頁。

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

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

小夜