前言¶
在 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:...。
- 按 README 將倉庫克隆到本機(命令見下)。
- 在 Harness 插件管理器中使用「install local bundle」/
install_bundle,目標爲包目錄的絕對路徑;profile 會記錄爲@local/dsh-vim-nav。 - 安裝後重建或重載 Web UI 一次;桌面端可重載頁面,若快捷鍵僅在啓動時同步則需重啓應用。
git clone https://github.com/Endermy/dsh-vim-nav.git
該包爲本地 bundle,非 npm 發佈產物;無構建步驟,client.js 由 DSH 客戶端模塊加載器直接加載。
典型用法¶
下面按常見操作順序說明,均可對照 README 復現。
- 讀長會話:保持 Normal,
j/k按住滾動;到頂需要更早記錄時kk;gg/G快速頂底;Ctrl+J/Ctrl+K在頂層消息間跳轉。 - 寫回復:
i進入 Insert,寫完快速jk或Escape回 Normal;誤輸入草稿用dd清空。 - 換面板:
h/l在工作區、對話、Browser 間移動;Browser 內用頁面層滾動與f點鏈,再用Alt+H(Linux/Windows)或Ctrl+H(macOS)回到會話。 - 找會話:
Ctrl+F打開會話搜索(注意與消息跳轉的Ctrl+K區分)。 - 整理工作區:焦點在工作區列表時用方向邏輯定位行,
Space/Enter打開;歸檔則cx。
適用場景與注意¶
適合誰:日常在 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 爲準。