DeepSeek Harness(DSH)的插件機制允許開發者通過特定接口擴展運行器能力。dsh-plugin-cdp 是一款基於 Chrome DevTools Protocol(CDP)的插件,旨在解決使用瀏覽器擴展進行自動化時可能遇到的標籤頁清空、借用用戶標籤頁失效以及成功彈窗不可信等問題。它通過驅動一個受控的 Chrome 實例,提供了一套零運行時依賴(基於 Node ≥ 22 內置模塊)的自動化方案。
核心能力¶
該插件主要提供以下四個核心能力:
- CDP 驅動受控實例:不依賴瀏覽器擴展,直接通過 CDP 協議與 Chrome 通信,避免被目標網站反制。
- 彈窗收集規則:插件本身不攜帶任何預設規則。首次使用時,會通過 DSH 內置的
ask_user_question彈窗收集信息,包括崗位方向、工作地點、薪資下限、投遞平臺、瀏覽器選擇及排除規則。收集到的答案落盤後不再重複詢問。 - 純文本可視化:提供基於 Unicode 字符畫的薪資分佈、地點條形圖、平臺佔比及投遞時間線等可視化報告。不依賴外部圖表庫,中文按雙寬計算以防止表格錯位。
- 無停機熱替換:當規則變更時,採用“先起新進程、再退舊進程”的策略。新舊進程在重疊期內共享一份
append-only(僅追加)的狀態記錄,確保任務不斷檔。
工具列表¶
插件提供 15 個工具以支持自動化流程:
| 工具名 | 作用 |
|---|---|
cdp_status |
查看受控 Chrome 的狀態、端口及標籤頁信息 |
cdp_navigate |
導航至指定 URL 並等待加載完成 |
cdp_eval |
在標籤頁上下文中執行 JS 代碼並返回 JSON |
cdp_read |
讀取當前標籤頁的 URL、標題或可見文本 |
cdp_screenshot |
將當前標籤頁截圖並保存到本地文件 |
cdp_new_tab / cdp_use_tab |
創建新標籤頁或切換到指定標籤頁 |
cdp_apply_verified |
帶校驗的操作:等待詳情面板穩定、校驗薪資一致性,防止誤點 |
cdp_prefs |
讀取或寫入瀏覽器偏好設置(含規則問卷) |
cdp_browser_info |
報告實際使用的瀏覽器及可執行文件是否存在 |
cdp_jobs_report |
生成崗位/薪資/地點的文本可視化報告 |
cdp_jobs_data |
獲取原始 JSON 數據 |
cdp_runner_status |
查看運行器狀態,包含“規則已變更但未生效”的提示 |
cdp_runner_reload |
同步規則並執行熱替換 |
cdp_runner_stop |
停止運行器 |
安裝與配置¶
在項目目錄下執行以下命令安裝插件:
npm i dsh-plugin-cdp
安裝後,需要在 DSH 的插件配置中引入該插件:
- id: cdp
name: "dsh-plugin-cdp"
config:
port: 9222
配置項說明¶
在 YAML 配置中,以下字段爲必填或常用項:
chromePath:Chrome 可執行文件路徑,留空則自動探測。userDataDir:受控實例使用的獨立用戶目錄。注意:由於不復用日常瀏覽器的配置,你需要在此目錄中單獨登錄目標站點。windowSize:瀏覽器窗口大小,格式爲寬,高。defaultTimeoutMs:單條 CDP 命令的超時時間。loadEventMs:等待頁面加載事件的最大時長。settleMs:導航後額外的穩定等待時間。prefsPath:偏好設置(含規則問卷)的落盤路徑。stateDir:運行器狀態目錄。
運行與熱替換流程¶
在倉庫目錄下,可以使用以下命令進行自檢和測試:
node run-all-tests.mjs
node --test lib/jobs.test.mjs
node --test lib/report.test.mjs
熱替換機制¶
插件支持在不中斷服務的情況下更新規則。流程如下:
- 變更規則:修改規則配置,觸發指紋變化。
- 啓動新進程:啓動新一代運行器進程,與老進程並存。
- 心跳驗證:等待新一代進程輸出心跳信號,證明其正常運行。
- 退位:老進程退出,新一代接管。
若新一代進程在就緒窗口內未輸出心跳,系統將保留老進程繼續運行,不會終止任務。
注意事項¶
- 輸出字段嚴格校驗:返回值必須與
output.schema逐一對應,且additionalProperties: false。多一個字段都會被宿主拒絕。 - 運行器默認心跳模式:未配置命令時,運行器不執行實際操作,僅維持心跳。這是爲了驗證鏈路通斷。
- 狀態存儲方式:熱替換依賴
append-only的狀態存儲。如果狀態是整份重寫,重疊期間會互相覆蓋,導致更新丟失。 - 結果驗證:頁面彈出的“成功”對話框不等於操作已記錄。請務必到目標站點的記錄頁進行人工複覈。
總結¶
dsh-plugin-cdp 適合需要在 DSH 環境中通過 CDP 協議進行高可控性瀏覽器自動化的場景。它通過強制可驗證的操作流程和零依賴設計,爲開發者提供了一個穩定的自動化通道。完整的文檔與源碼可參考 GitHub 倉庫。