前言¶
在 DSH 里让智能体「读懂」网页,常见做法是粘贴链接或整段 HTML,模型往往只能依赖训练数据或一次性的抓取结果,对需要 JavaScript 渲染的 SPA、或你想精确指向某一个 DOM 节点的场景并不顺手。dsh-page-context 把网页浏览放进右侧栏:你在面板里打开页面、点选元素,选中结果以固定格式插入输入框;同时向智能体提供只读工具 page_context,按 URL 或选择器读取正文或交互元素列表。下面介绍插件定位、安装方式与典型用法,并说明桌面端与 Web GUI 的差异及使用边界。
这是什么¶
dsh-page-context 由维护者 liccq 发布,归类为联网工具,当前版本 0.1.0,许可证 MIT。插件在 DSH 右侧栏提供「页面上下文」标签页(地址栏、前进后退、刷新、「选择元素」),并在输入框工具行增加地球按钮;智能体侧注册工具 page_context,用于读取用户在面板中打开过的页面内容。要求 DSH >=0.2.1-rc.2,无额外运行时依赖。
社区目录页:https://www.skillhub.cn/plugins/liccq/dsh-page-context
源码与说明:https://github.com/liccq/dsh-page-context
核心功能¶
右侧栏页面浏览器¶
- 从右侧栏引导页(guide)的「页面上下文」卡片,或输入框左侧地球按钮(
aria-label= 打开页面上下文浏览器)进入同一标签页。 - 地址栏输入 URL 后回车或点「打开」;支持后退、前进、刷新。
- 「选择元素」开启后,悬停高亮、点击将把该元素的选择器、标签、文本等信息写回输入框光标处。
上下文插入格式¶
点选元素后,输入框会插入一行纯文本(可撤销的一次编辑),例如:
【页面元素】https://example.com/ | selector=#main > h1 | tag=h1 | text=Example Domain | page=Example Domain
DSH composer 对第三方仅公开纯文本插入,因此不是原子 chip;面板底部有「已插入」小标签作可视反馈。
智能体工具 page_context¶
只读工具,不执行页面脚本、不点击、不输入。可按 URL 读取网页正文,或列出带选择器的交互元素,也可按选择器只取一个元素。优先使用桌面端渲染完成后的 DOM 快照(输出会标明 Source: rendered DOM),便于 SPA 被模型读到。
工作原理(简要)¶
- DSH Desktop:通过外壳
dshDesktop.browser申请隔离的<webview>,真实执行页面脚本与样式;加载完成后将主文档outerHTMLPOST 到/page-context/snapshot,Host 净化后按 origin+path 缓存 10 分钟。 - 元素拾取:向访客注入拾取脚本(
executeJavaScript),用 CSSOM 描边悬停,点击后记录选择器等信息并由面板轮询取回。 - Web GUI / 回退:无桌面桥时使用同源代理 iframe 静态预览(不执行脚本);必要时在 provider 拒绝非公网地址后回退进程内
fetch并注入<base>与 CSP。
安装与启用¶
任选其一(命令与路径以 README 为准):
插件市场(dshmarket):搜索 dsh-page-context 一键安装(收录后生效)。
DSH Desktop:设置 → 插件 → 添加插件 → 输入 dsh-page-context。
CLI:
dsh plugin --profile <profile> add dsh-page-context
从 Git 源码:
dsh plugin --profile <profile> add git+https://github.com/liccq/dsh-page-context.git#v0.1.0
安装前请自行查看仓库源码与 LICENSE;插件以当前 DSH 进程权限运行。
典型用法¶
- 打开右侧栏引导页,点「页面上下文」卡片,或点输入框左侧地球按钮,右侧栏出现「页面上下文」。
- 在地址栏输入网址,例如
https://example.com,回车。 - 点「选择元素」,悬停高亮后点击目标元素;输入框光标处出现
【页面元素】…一行。 - 继续编写问题并发送。模型可结合该行上下文,必要时调用
page_context(url+ 可选selector)读取页面或该元素。
本机页面:桌面端对回环地址直接放行;localhost、127.0.0.1、[::1] 可直接输入,不带 scheme 的回环地址按 http:// 打开。模型工具仅读取用户在面板里实际打开过的 origin;若 localhost 解析到 ::1 而服务只监听 IPv4,可改用 127.0.0.1。
适用场景与注意¶
适合:需要把「当前打开的网页」或「页面上某一元素」写进对话上下文;希望智能体通过 page_context 读取渲染后正文或按选择器精读 DOM 片段;在 Desktop 下查看依赖 JS 的页面并拾取元素。
限制(摘自 README):
- 仅 Desktop 执行页面脚本;Web GUI 或桌面桥不可用时为静态预览,SPA 可能只有骨架。
- 快照只含主文档
outerHTML,不含 shadow DOM、iframe 内文、canvas;超过 1.5 MiB 会截断;缓存 10 分钟、最多 16 条;文档总大小上限 2 MiB。 - 访客分区 Cookie 与系统浏览器登录态无关;静态预览不发送 Cookie。
- 自签名 HTTPS 会失败;静态预览的直连
fetch不跳过证书校验。
安全:桌面访客由主进程 sandbox、无 Node/preload、独立分区;静态代理仅 http/https 且仅 GET;快照经 sanitizeHtml() 清洗,工具输出会带外部内容提示。
结尾¶
dsh-page-context 把「开网页 → 点元素 → 写进输入框」和「智能体只读读页」放在同一套右侧面板流程里,Desktop 下还能把渲染后的 DOM 交给 page_context。若要安装或查版本与限制,请以社区目录与 GitHub README 为准:
- 目录页:https://www.skillhub.cn/plugins/liccq/dsh-page-context
- 仓库:https://github.com/liccq/dsh-page-context