只读提取表格坐标、影子DOM字段与代码块结构
30.7/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/20 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add LISHUANGXI1412/dsh-page-struct该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · search
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 14 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 14 处,展示前 14 条)
- 读取本地文件index.js:29
url = existsSync(abs) ? pathToFileURL(abs).href : abs - 读取本地文件index.js:38
if (!existsSync(portFile)) return undefined - 读取本地文件index.js:39
const port = String(readFileSync(portFile, 'utf8')).split(/ ? /)[0].trim() - 发起网络请求index.js:80
const response = await fetch(`http://127.0.0.1:${port}/json/version`, { - 读取本地文件vendor/page-struct/index.mjs:24
const PROBE = readFileSync(join(here, 'core', 'probe', 'inpage.js'), 'utf8') - 读取本地文件vendor/page-struct/index.mjs:47
for (const p of BROWSERS) if (existsSync(p)) return p - 读取本地文件vendor/page-struct/index.mjs:56
if (!existsSync(abs)) throw new Error(`本地文件不存在: ${abs}`) - 发起网络请求vendor/page-struct/index.mjs:63
const res = await fetch(`http://${host}:${port || 9222}/json/version`) - 写入本地文件vendor/page-struct/index.mjs:123
mkdirSync(dirname(outPath), { recursive: true }) - 写入本地文件vendor/page-struct/index.mjs:124
writeFileSync(outPath, snapshot, 'utf8') - 发起网络请求vendor/page-struct/core/cdp.mjs:22
const res = await fetch(`http://127.0.0.1:${port}/json/version`) - 执行外部命令来自配置/变量vendor/page-struct/core/cdp.mjs:63
const child = spawn(exe, args, { stdio: ['ignore', 'pipe', 'pipe'] }) - 执行外部命令固定命令vendor/page-struct/core/cdp.mjs:86
spawnSync('taskkill', ['/PID', String(child.pid), '/T', '/F'], { stdio: 'ignore' }) - 删除本地文件递归vendor/page-struct/core/cdp.mjs:103
rmSync(profileDir, { recursive: true, force: true })
扫描于 2026/11/1(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
DSH 的只读页面结构:表格坐标、shadow DOM 字段、代码块、置信度标签。
README
由 DeepSeek 最新模型翻译生成dsh-page-struct
给 DSH 用的只读页面结构读取器,挂在 CUA 浏览器上。 提取表格坐标、shadow-DOM 字段、代码块和置信度标签——不用截图,也不用整页 dump。
只读的页面结构读取器:CUA 负责浏览器和登录,page-struct 只负责把页面读成结构。不做点击、输入或页面操作。
架构
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 配置档写下的端口,通过 CDP 连上去,在同一个浏览器里打开页面。浏览器生命周期和登录状态都归 CUA 管。
展开完整文档(README 剩余 1 节)
dsh-page-struct
给 DSH 用的只读页面结构读取器,挂在 CUA 浏览器上。 提取表格坐标、shadow-DOM 字段、代码块和置信度标签——不用截图,也不用整页 dump。
只读的页面结构读取器:CUA 负责浏览器和登录,page-struct 只负责把页面读成结构。不做点击、输入或页面操作。
架构
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 配置档写下的端口,通过 CDP 连上去,在同一个浏览器里打开页面。浏览器生命周期和登录状态都归 CUA 管。
为什么需要它
原生快照经常丢掉智能体需要的结构:
- 表格的行列坐标、合并单元格、多级表头;
- shadow-DOM 组件字段(等级 = Lv.42);
- 不是 的 div/grid 伪表格;
- GitHub 风格页面上的代码块和日志块;
- 某个区域是否可信(high / partial / unreliable)。
在项目自带的 4 页 × 13 题基准测试里,结构化表示让 13/13 道题都能确定答案,扁平快照只有 2/13,字符数还少了 10 倍。基准测试和它的注意事项见上游 page-struct 项目。
前提:CUA 浏览器正在运行
先启动一次指定的 CUA 配置档:
browser_prepare({ profile: { mode: "isolated_named", name: "dsh-page-struct" } })
会弹出一个可见的 Chrome 窗口。在这个窗口里登录你要用的站点。配置档会持久化,所以持久 cookie 和 localStorage 重启后还在。
之后插件的默认端点就能用了:
{ "url": "https://example.com" }
CUA 浏览器没运行时,工具会返回明确的错误。用 browser_prepare 启动后重试。插件没法启动它,也没法维持它存活。
工具
| 工具 | 用途 |
| page_structure | 区域索引、表格矩阵、shadow-DOM 字段、代码块、置信度证据。 |
| page_region | 索引被截断后,单独取一个区域(T1 / P1 / X1 / S:<host> / C1)。尽量复用最近一次分析结果。 |
两个工具都是只读的。点击、输入、导航请用 CUA/浏览器工具。
配置
config:
proxy: ''
endpoint: cua:dsh-page-struct
cuaProfile: dsh-page-struct
exe: ''
cacheTtlMs: 120000
cacheMax: 3
| 键 | 含义 |
| endpoint | cua:<profile>(默认)、host:port,或 "" 表示一次性临时浏览器。auto 是 cua:<cuaProfile> 的别名。 |
| cuaProfile | 指定的 CUA 配置档。默认 dsh-page-struct。 |
| proxy | 仅用于 endpoint: ""。 CUA 或另一个浏览器必须在启动时配好自己的代理。 |
| exe | 可选,一次性临时浏览器用的 Edge/Chrome 路径。 |
| cacheTtlMs / cacheMax | page_region 使用的内存快照缓存。 |
端点模式
- cua:dsh-page-struct — 连接到正在运行的 CUA 浏览器,不新开浏览器。
- host:port — 连接到任何已暴露 CDP 的浏览器。
- "" — 启动一次性临时浏览器(若设置了 proxy 则带上);适合测试夹具、离线快照,或需要走代理的外部页面。
登录状态
CUA 的 isolated_named 配置档就是普通的持久化 Chrome 配置档:持久化 cookie 和 localStorage 在关闭并重新运行 browser_prepare 后依然保留。会话 cookie(没有 Max-Age)仍会按设计过期。
插件绝不碰你日常用的 Edge/Chrome 配置档,也绝不复制 cookie。
读取当前标签页
page_structure({ tab: "current" }) 连接到 CUA 浏览器里已有的页面,不新建标签页,也不导航。它共享 cookie/登录状态,读取当前的 DOM(点击后、登录后、SPA 路由切换后)。
选择顺序:
1. 显式指定的 targetId;
2. URL 精确匹配(url),再按 URL 前缀匹配;
3. 最后一个非空白页面目标。
CDP 不暴露「活动」标签页,所以有多个标签页时,要精确指定就传 targetId。输出的 页面: 行会报告实际读取的 URL。
示例:
{ "tab": "current" }
{ "tab": "current", "url": "https://example.com/report" }
{ "tab": "current", "targetId": "A95662CFE231DF63DE2DAEF4049DAB6F" }
page_region 接受同样的 tab/targetId,缓存键匹配时复用分析结果。
安全与隐私
- 页面内容作为工具结果返回给 DSH 模型。插件不会自行把它发给任何第三方服务。
- CUA 浏览器是带持久化配置档的真实 Chrome。把它当作已登录的浏览器对待:不要把它的 CDP 端口暴露给不可信的本地进程。
- proxy 可以让临时浏览器的流量走代理;CUA 浏览器的流量遵循 CUA 浏览器自身的启动配置。
- 插件运行在 DSH Host 进程里,只读取页面;不点击、不输入、不下载、不修改 cookie。
限制
- 仅支持 Windows。 依赖 CUA 的原生浏览器配置档布局。
- CUA 必须正在运行。 插件无法启动它;请用 browser_prepare。
- 只读。 不点击、不输入、不滚动、不导航。
- 标签页选择是启发式的。 打开多个标签页时,tab:"current" 可能选错;要精确指定就传 targetId。
- 延迟。 复用热浏览器约 0.6–0.8s;冷导航可能 1–2s。大页面会截断到索引;细节用 page_region。
- 不支持的内容。 闭合 shadow DOM、纯自定义绘制的 canvas,以及部分虚拟化列表会标记为 unreliable。
许可证
MIT。内置的 page-struct 核心(vendor/page-struct/)同样是 MIT;署名信息见其 package.json 和上游项目。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
LISHUANGXI1412/dsh-page-struct
只读提取表格坐标、影子DOM字段与代码块结构
相关插件 · 搜索 / 抓取
LLM 知识平台Tencent/WeKnora
概览 ·快速开始 ·新特性 ·功能 ·客户端 ·文档 ·开发
★ 36,161已汉化DSH
72.1
智能体记忆系统MemTensor/MemOS
MemOS 2.0 Stardust星尘
★ 12,195已汉化DSH
71.2
跨代理记忆库zilliztech/memsearch
跨平台语义记忆,专为 AI 编程智能体打造。
★ 2,799已汉化DSH
70.9
技能语料库EverMind-AI/SkillCorpus
SkillCorpus 能给你什么
★ 694已汉化DSH
69.7
代码图谱记忆syncable-dev/memtrace-public
你的智能体值得拥有结构化记忆。
★ 509已汉化MCP
67.9
AnySearch 搜索插件anysearch-team/anysearch-dsh
AnySearch 网页搜索服务商,为 DeepSeek Harness(DSH)提供高级搜索工具
★ 457已汉化DSH
66.6