dsh-vim-nav:爲 DeepSeek Harness Web UI 提供 Vim 風格鍵盤導航

前言

在 DeepSeek Harness(DSH)里長時間用鼠標滾會話、點側欄、搶輸入框焦點,很容易打斷編寫提示詞和閱讀回覆的節奏。瀏覽器裏雖有 Vimium 一類擴展,但無法完整接管 Harness 的工作區列表、會話搜索、內置 Browser 面板,也難避免宿主在打開新會話時自動把焦點塞進 composer。下面介紹的 dsh-vim-nav 是 Endermy 維護的客戶端類 Cordis 插件(當前 GitHub 星標爲 0),在 DSH Web UI 內實現 Normal / Insert 兩套模式與一套對齊 Vim 習慣的快捷鍵,並針對 Harness 的 DOM 與快捷鍵服務做了綁定。

這是什麼

一句話:Vim-style keyboard navigation for the DeepSeek Harness Web UI(與倉庫簡介一致)。

插件在界面側提供模式徽章、滾動驅動和鍵盤控制器,依賴 Harness 客戶端模塊加載 client.js,通過 data-conversation-scroll、data-composer-input 等宿主鉤子與會話佈局協同。包名爲 @local/dsh-vim-nav(package.json 版本 1.4.0,許可證 MIT),安裝後在插件列表中顯示爲 Vim Navigation。DeepSeek Harness 生態奉行「一切皆插件」;社區目錄站 skillhub.cn 與 DeepSeek / 幻方無官方從屬關係,本文安裝與行爲均以 GitHub 倉庫 README 爲準。

核心功能

滾動與會話歷史

  • j / k:Normal 模式下按住線性滾動,松鍵下一幀即停,無排隊平滑滾動、加速或松鍵慣性。
  • kk:在會話頂部連按 k,觸發宿主自帶的「加載更早歷史」,並在下一次滾動鍵時釋放宿主的分頁位置鎖定。

面板焦點與工作區

  • h / l:在工作區、會話區、內置 Browser 之間左右切換焦點;Browser 激活時徽章顯示 NORMAL · Browser。
  • Space / Enter:工作區列表獲得焦點時,選擇光標所在行;切換會話時保持模式(見下文「模式保持」)。

Composer(Insert)

  • i:進入 Insert 寫消息。
  • 快速 jk 或 Escape:退出 Insert。
  • dd:清空草稿。

消息級跳轉

  • Ctrl+J / Ctrl+K:在當前會話內跳到下一條 / 上一條頂層 user 或 assistant-step 消息(跳過 tool call、進程行等),帶短線性滑動;首尾消息處停止。
  • gg / G:跳到會話頂 / 底。

鏈接提示(Vimium 風格)

  • f:爲可見會話鏈接打標籤,輸入標籤打開鏈接;Escape 取消,Backspace 改前綴,無匹配前綴則退出提示模式。

工作區歸檔

工作區面板聚焦且光標在某會話行上時,c 再 x 調用該行歸檔(與行 UI 按鈕相同);運行中的會話走宿主停止並歸檔確認;行消失後光標移到相鄰行。

內置 Browser 的 Vim 層

桌面端右側 Sidebar Browser 的 Electron <webview> 會注入頁面級 Vim 層:j/k 線性滾動(約視口 35%)、gg/G、f 鏈接提示等;可編輯字段不攔截。跨域 iframe 僅在同源或可腳本化場景生效。離開 Browser 內容焦點時,Linux/Windows 用 Alt+H、macOS 用 Ctrl+H 聚焦會話面板(僅在 Browser 聚焦時註冊,可在 Settings → Shortcuts 中改綁)。

會話搜索與快捷鍵整理

  • Ctrl+F:打開宿主會話搜索;插件會把宿主原 Ctrl+K 綁定遷移到 Ctrl+F(在 Settings → Shortcuts 可見且可改);若無法應用則回退爲點擊側欄搜索按鈕。

其它行爲

  • 模式保持:打開或切換會話不會把 Normal 誤切成 Insert;切換前若在 Insert(例如邊寫邊 Ctrl+J 跳消息),新 composer 仍保持 Insert。
  • Ctrl+W:在應用主體中屏蔽關閉窗口;僅在內置 Browser(webview、iframe、工具欄或地址欄有焦點時)按宿主邏輯關閉當前 Browser 頁。
  • 無 Visual 模式;不佔用 Win / Super / Meta 組合鍵,留給系統或合成器。

完整鍵位表見倉庫 README 的 Keymap 一節,此處不重複羅列每一行。

安裝與啓用

前提:已有可用的 DSH profile,且桌面/Web 運行時支持本地 Cordis bundle。

資料中的步驟是獲取源碼目錄後,在 profile 裏把該目錄註冊爲本地 bundle,而非憑名稱拼接 dsh plugin add github:...。

  1. 按 README 將倉庫克隆到本機(命令見下)。
  2. 在 Harness 插件管理器中使用「install local bundle」/ install_bundle,目標爲包目錄的絕對路徑;profile 會記錄爲 @local/dsh-vim-nav。
  3. 安裝後重建或重載 Web UI 一次;桌面端可重載頁面,若快捷鍵僅在啓動時同步則需重啓應用。
git clone https://github.com/Endermy/dsh-vim-nav.git

該包爲本地 bundle,非 npm 發佈產物;無構建步驟,client.js 由 DSH 客戶端模塊加載器直接加載。

典型用法

下面按常見操作順序說明,均可對照 README 復現。

  1. 讀長會話:保持 Normal,j/k 按住滾動;到頂需要更早記錄時 kk;gg/G 快速頂底;Ctrl+J/Ctrl+K 在頂層消息間跳轉。
  2. 寫回復:i 進入 Insert,寫完快速 jk 或 Escape 回 Normal;誤輸入草稿用 dd 清空。
  3. 換面板:h/l 在工作區、對話、Browser 間移動;Browser 內用頁面層滾動與 f 點鏈,再用 Alt+H(Linux/Windows)或 Ctrl+H(macOS)回到會話。
  4. 找會話:Ctrl+F 打開會話搜索(注意與消息跳轉的 Ctrl+K 區分)。
  5. 整理工作區:焦點在工作區列表時用方向邏輯定位行,Space/Enter 打開;歸檔則 c x。

適用場景與注意

適合誰:日常在 DSH Desktop 或支持本地 bundle 的 Web 運行時裏大量使用鍵盤、習慣 Vim / Vimium 的開發者。

權限與信任:客戶端插件在當前 DSH 進程權限下運行,會接管鍵盤與部分快捷鍵綁定;安裝前應閱讀 client.js、index.js 與 MIT 許可證,確認來源爲 Endermy/dsh-vim-nav。

兼容性:實現綁定了 Harness 特有 DOM 與 slots / locale / layout / shortcuts 等服務;宿主 UI 變更可能需要插件同步更新。README 註明在 DSH Desktop(Linux)等環境測試,截斷部分未在此複述。

開發自檢(維護者或自改代碼時):

node --check client.js
node --check index.js
python3 -m json.tool package.json >/dev/null

修改 client.js 後需在 profile 中重裝/重載 bundle;UI 由 shell.overlay 槽渲染,無獨立 dev server。

結尾

dsh-vim-nav 把 Vim 式 Normal/Insert、面板焦點、消息跳轉和內置 Browser 頁內操作收到同一套習慣裏,並處理 composer autofocus 與 Ctrl+W 等宿主衝突點。需要鍵位細節或 Browser 層說明時,以倉庫 README 爲準。

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

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

小夜