dsh-page-struct:为 DSH 提供只读页面结构

前言

在 DSH 里让智能体「看网页」,常见做法是拉一份扁平快照或截图。表格的行列坐标、合并单元格、Shadow DOM 里的字段、GitHub 式代码块,以及「这块内容是否可信」这类信息,往往在快照里丢失或难以稳定解析。结果是模型要猜结构,长页面又占满上下文。

dsh-page-struct(维护者 LISHUANGXI1412)走另一条路:挂在 CUA 已打开的浏览器上,通过 CDP 只读当前页面,输出带区域索引、表格矩阵、Shadow DOM 字段、代码块和置信度标签的结构化结果。不负责点击、输入或导航;浏览器生命周期和登录态由 CUA 管。

下面介绍它是什么、怎么用,以及适用边界。插件归类为 DSH 社区目录中的「联网工具」;目录页见 SkillHub:dsh-page-struct,源码与说明见 GitHub 仓库。

这是什么

一句话:dsh-page-struct 是 只读的页面结构读取器——CUA 负责浏览器和登录,本插件只负责把页面读成结构,不做页面操作。

架构关系(摘自 README):

CUA browser (profile: %LOCALAPPDATA%\CuaDriver\BrowserProfiles\dsh-page-struct)
  │  CDP 127.0.0.1:<port>
  ├── CUA tools: browser_navigate / browser_click / browser_type
  └── dsh-page-struct: page_structure / page_region
        → same process, same cookies, same localStorage

插件 不会自行启动或保活浏览器。它读取 browser_prepare 为指定 CUA profile 写入的端口,经 CDP 附着到同一浏览器实例,与 CUA 共用 Cookie 和 localStorage。

README 中给出的动机包括:原生快照常丢失智能体需要的结构——表格坐标与多级表头、Shadow DOM 组件字段、非 <table> 的 div/grid 伪表格、代码/日志块、以及区域可信度(high / partial / unreliable)。上游 page-struct 项目在「4 页 × 13 问」基准上,结构化表示使 13/13 问题可确定回答,而扁平快照为 2/13,且字符量约少 10×(详见上游项目说明与局限)。

当前 package.json 版本为 0.1.4,许可证 MIT;内嵌的 vendor/page-struct/ 核心同为 MIT。

核心功能

工具

工具 作用
page_structure 区域索引、表格矩阵、Shadow DOM 字段、代码块、置信度相关证据。
page_region 在索引被截断后,按区域 ID(如 T1 / P1 / X1 / S:<host> / C1)拉取单块内容;在可能时复用最近一次分析。

两者均为 只读。点击、输入、跳转请使用 CUA / browser 工具。

典型读取方式

按 URL 打开并分析(需 CUA 浏览器已在运行):

{ "url": "https://example.com" }

读当前标签页(不新建标签、不导航,适合登录后或 SPA 路由后的 DOM):

{ "tab": "current" }

多标签时可用 URL 或 targetId 精确指定(CDP 不暴露「当前激活标签」,多开时建议传 targetId):

{ "tab": "current", "url": "https://example.com/report" }
{ "tab": "current", "targetId": "A95662CFE231DF63DE2DAEF4049DAB6F" }

输出中的 页面: 行会标明实际读取的 URL。page_region 支持相同的 tab / targetId,并在缓存键匹配时复用分析。

安装与启用

已抓取资料中 未给出 DSH 官方的 dsh plugin add … 一类安装命令,本文不臆造。请从 SkillHub 目录页 或 GitHub README 按当前文档完成安装。

环境与约束(来自 package.json 与 README):

  • 操作系统:仅 Windows(os: ["win32"]),依赖 CUA 原生浏览器 profile 路径布局。
  • Node:>= 22。

插件在 DSH Host 进程内运行,页面内容作为工具结果返回给模型;README 写明插件 不会 自行把页面内容发往第三方服务。安装前建议阅读仓库源码与 MIT 许可证,并理解它以当前 DSH 进程权限读取你已登录的浏览器页面。

配置示例

config:
  proxy: ''
  endpoint: cua:dsh-page-struct
  cuaProfile: dsh-page-struct
  exe: ''
  cacheTtlMs: 120000
  cacheMax: 3
键 含义
endpoint 默认 cua:<profile>;也可 host:port 附着已有 CDP;"" 为一次性临时浏览器。auto 等价于 cua:<cuaProfile>。
cuaProfile 命名 CUA profile,默认 dsh-page-struct。
proxy 仅当 endpoint: "" 时 用于临时浏览器;CUA 浏览器代理需在 CUA 启动时自行配置。
exe 临时浏览器可选 Edge/Chrome 路径。
cacheTtlMs / cacheMax page_region 使用的内存快照缓存。

Endpoint 模式简述:

  • cua:dsh-page-struct — 附着已运行的 CUA 浏览器,不新开实例。
  • host:port — 附着任意已暴露 CDP 的浏览器。
  • "" — 启动一次性临时浏览器(可配 proxy),适合 fixture、离线快照或需代理的外站。

典型用法:先起 CUA,再读结构

1. 准备 CUA 浏览器

在需要访问的站点上,先启动命名 profile(只需做一次;profile 持久化,Cookie 与 localStorage 可跨重启保留):

browser_prepare({ profile: { mode: "isolated_named", name: "dsh-page-struct" } })

会打开可见 Chrome 窗口。在该窗口内完成所需站点的登录。Session Cookie(无 Max-Age)仍会按浏览器规则过期。

若 CUA 浏览器未运行,工具会返回明确错误;需再次 browser_prepare 后重试。插件无法代为启动或保活浏览器。

2. 调用 page_structure

默认 endpoint 指向 cua:dsh-page-struct 时,传入目标 URL 或 tab: "current" 即可(见上文 JSON 示例)。

大页面可能只返回索引;细节用 page_region 按区域 ID 补读。

3. 与 CUA 分工

导航、点击、输入:CUA 的 browser_navigate / browser_click / browser_type 等。读结构:page_structure / page_region。同一 profile、同一 CDP 会话,登录态一致。

适用场景与注意

适合谁

  • 需要在 DSH 智能体流程里稳定读取表格坐标、Shadow DOM 字段、代码块,并带置信度标签的场景。
  • 已与 CUA 浏览器工作流配合,希望「操作」与「读结构」分离的团队。

局限(README 原文要点)

  • Windows only;CUA 必须已运行。
  • 只读:无点击、输入、滚动、导航。
  • 多标签时 tab: "current" 可能选错标签,请用 targetId。
  • 延迟:温热浏览器约 0.6–0.8s;冷导航约 1–2s。
  • 封闭 Shadow DOM、纯 Canvas 绘制、部分虚拟列表等可能标为 unreliable。

安全与隐私

  • CUA 使用真实 Chrome 持久 profile,视为已登录环境;勿将 CDP 端口暴露给不可信本地进程。
  • 插件不操作你的日常 Edge/Chrome 配置,也不复制 Cookie。

DSH 生态强调「一切皆插件」;SkillHub 为社区目录站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-page-struct 把「看网页」从扁平快照推进到可引用的结构:表格、Shadow DOM、代码块与置信度标签,并明确只读、依附 CUA 的边界。若你已在 Windows 上用 DSH + CUA 做联网任务,可在目录页与 GitHub 查看 0.1.4 版本说明与 cordis.patch.yml 集成方式。

  • 目录页:https://www.skillhub.cn/plugins/LISHUANGXI1412/dsh-page-struct
  • GitHub:https://github.com/LISHUANGXI1412/dsh-page-struct
羽毛球分组比赛记分
小程序二维码

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

Xiaoye