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 弥补了文本提取器在数据精度上的不足,适合需要获取精确数值和结构化数据的场景。

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

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

小夜