DeepSeek Harness 插件:dsh-plugin-cdp

DeepSeek Harness(DSH)的插件機制允許開發者通過特定接口擴展運行器能力。dsh-plugin-cdp 是一款基於 Chrome DevTools Protocol(CDP)的插件,旨在解決使用瀏覽器擴展進行自動化時可能遇到的標籤頁清空、借用用戶標籤頁失效以及成功彈窗不可信等問題。它通過驅動一個受控的 Chrome 實例,提供了一套零運行時依賴(基於 Node ≥ 22 內置模塊)的自動化方案。

核心能力

該插件主要提供以下四個核心能力:

  1. CDP 驅動受控實例:不依賴瀏覽器擴展,直接通過 CDP 協議與 Chrome 通信,避免被目標網站反制。
  2. 彈窗收集規則:插件本身不攜帶任何預設規則。首次使用時,會通過 DSH 內置的 ask_user_question 彈窗收集信息,包括崗位方向、工作地點、薪資下限、投遞平臺、瀏覽器選擇及排除規則。收集到的答案落盤後不再重複詢問。
  3. 純文本可視化:提供基於 Unicode 字符畫的薪資分佈、地點條形圖、平臺佔比及投遞時間線等可視化報告。不依賴外部圖表庫,中文按雙寬計算以防止表格錯位。
  4. 無停機熱替換:當規則變更時,採用“先起新進程、再退舊進程”的策略。新舊進程在重疊期內共享一份 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

熱替換機制

插件支持在不中斷服務的情況下更新規則。流程如下:

  1. 變更規則:修改規則配置,觸發指紋變化。
  2. 啓動新進程:啓動新一代運行器進程,與老進程並存。
  3. 心跳驗證:等待新一代進程輸出心跳信號,證明其正常運行。
  4. 退位:老進程退出,新一代接管。

若新一代進程在就緒窗口內未輸出心跳,系統將保留老進程繼續運行,不會終止任務。

注意事項

  1. 輸出字段嚴格校驗:返回值必須與 output.schema 逐一對應,且 additionalProperties: false。多一個字段都會被宿主拒絕。
  2. 運行器默認心跳模式:未配置命令時,運行器不執行實際操作,僅維持心跳。這是爲了驗證鏈路通斷。
  3. 狀態存儲方式:熱替換依賴 append-only 的狀態存儲。如果狀態是整份重寫,重疊期間會互相覆蓋,導致更新丟失。
  4. 結果驗證:頁面彈出的“成功”對話框不等於操作已記錄。請務必到目標站點的記錄頁進行人工複覈。

總結

dsh-plugin-cdp 適合需要在 DSH 環境中通過 CDP 協議進行高可控性瀏覽器自動化的場景。它通過強制可驗證的操作流程和零依賴設計,爲開發者提供了一個穩定的自動化通道。完整的文檔與源碼可參考 GitHub 倉庫。

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

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

小夜