DeepSeek Harness 插件:dsh-fetch-data

前言

在 DeepSeek Harness(DSH)中,read_url 適合回答“這個頁面說了什麼”,但它將頁面解析爲文本或 Markdown 後,會丟失元數據(如排名、價格、點贊數)與具體條目之間的關聯。

dsh-fetch-data 旨在回答“這些數據到底是什麼”。它攔截頁面的真實數據 API(XHR/fetch JSON),提取出結構化的字段,保留精確的字段歸屬。

插件介紹

dsh-fetch-data 是 DeepSeek Harness 的結構化數據提取插件。它通過瀏覽器引擎(Playwright)捕獲頁面加載過程中的網絡請求,提取出 JSON 接口中的數據,並返回給 DSH 使用。

  • 插件名:dsh-fetch-data
  • 維護者:2672243194
  • 許可證:MIT

核心功能

該插件主要提供以下能力:

  1. 攔截 API:捕獲頁面的 XHR 和 fetch 請求,獲取真實的 JSON 響應。
  2. 模式提取:
    • 結構模式:返回自動選擇的端點結構以及所有 JSON 接口清單(路徑、大小、是否含數組),方便模型選擇具體接口。
    • 字段模式:提取指定的字段路徑(如 data.list[].title)。
  3. 自動選擇:自動從捕獲的 JSON 中選擇包含數組的最大端點作爲默認數據源。
  4. 增強捕獲:支持自動滾動觸發懶加載數據,支持自動解包 JSONP 響應。

安裝與啓用

使用前需安裝 Playwright 作爲瀏覽器引擎,然後通過 DSH 命令添加插件。

# 1. 進入 DSH 配置目錄
cd <DSH profile dir>

# 2. 安裝 Playwright 並安裝 Chromium 瀏覽器
npm i playwright && npx playwright install chromium

# 3. 添加插件
dsh plugin --profile web add github:2672243194/dsh-fetch-data

使用示例

插件提供 fetch_data 函數,支持以下參數:

fetch_data(url, api?, fields?, maxItems?)

1. 結構模式(默認)

不傳 fields 參數時,返回接口結構概覽和所有可用的 JSON 接口清單。這有助於模型確定具體的數據接口。

頁面 25 個 JSON 接口
選中: /x/web-interface/ranking/v2 (137763B)
結構: { code: number, message: string, ttl: number, data: { note: string, list: [100] { aid: number, ... } } }

接口清單(可傳 api=<路徑> 指定其中一個再提取字段):
  /x/web-interface/nav · 249B
  /x/vip/ads/materials · 1140B · 含數組
  ...

2. 字段模式

傳入 fields 參數,提取具體的字段值。[] 用於表示數組路徑。

data.list[].title (前5條):
  用MC還原《神的隨波逐流》 【B萌應援】
  WasteTheFallen丨首曝PV&實機演示:凝視深淵,人性漸泯
  ...

data.list[].stat.view (前5條):
  2428730
  10326863
  ...

3. 固定端點模式

通過 api 參數強制指定某個接口,忽略自動選擇邏輯。

fetch_data(url, "/x/web-interface/ranking/v2")

適用場景與限制

  • 適用場景:適用於需要精確數值、列表數據的抓取,如排行榜、商品價格、文章閱讀量等。
  • 登錄限制:無法訪問登錄牆後的 API(與 read_url 行爲一致)。
  • 靜態站點:純靜態站點會返回“no JSON API captured”錯誤。
  • 依賴要求:需要 Node.js >= 20。

插件設計爲零運行時依賴(除 Node.js 內置模塊外),但必須依賴 Playwright 作爲瀏覽器引擎來實現網絡攔截。

結語

dsh-fetch-data 通過攔截真實 API 彌補了文本提取器在數據精度上的不足,適合需要獲取精確數值和結構化數據的場景。

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

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

小夜