dsh-read-url:为 DSH 智能体读取网页正文

前言

DeepSeek Harness(DSH)智能体可以搜索并拿到链接与摘要,但要把某个 URL 读成干净、可直接推理的正文,仍需要专门的读取步骤。官方 tool-webweb_fetch 会把整页 HTML 转成 Markdown,导航、广告、侧栏一并保留,默认上限 200,000 字符,容易占满上下文。社区里也有若干网页抓取插件,但在正文清洗、中文编码、默认输出长度等方面各有取舍。

下面介绍 dsh-read-url(维护者 2672243194,GitHub 14 stars,分类:联网工具)。它面向 DSH 的 URL 读取场景:抓取网页、JSON API、RSS/Atom,自动识别编码,提取主内容,并以紧凑纯文本或 Markdown 返回,默认 6,000 字符上限,附带缓存与 offset 续读。

这是什么

dsh-read-url 是 DeepSeek Harness 的 URL reader 插件,零运行时依赖(Node 20+ 内置 fetch/解码/提取),无需 API Key,无需自建服务端。安装到 DSH 后,智能体可通过 read_url 等工具把任意 http(s) 链接读成清洗后的正文,而不是整页 HTML 堆砌。

插件遵循 DSH 官方能力接缝设计:网络请求优先走 ctx.web.fetch(),会话缓存在 ctx.effect 下注册并在卸载时清理,工具超时通过 timeoutMsexec.signal 协作,模型侧输出为紧凑纯文本,无需再解析 JSON。

核心功能

正文提取与 Token 控制

插件从 HTML 中定位文章/主内容容器,剥离导航、页脚等噪声,默认最多返回 6,000 字符,并支持按段落对齐截断。长文可用 offset 从缓存续读,避免重复发送已读段落。同一会话内 5 分钟 TTL 缓存,重复读取同一 URL 会标注 (cached)

多格式 URL

除普通网页外,插件原生处理 JSON API(紧凑渲染,长值裁剪)与 RSS/Atom(条目列表 + feedCount)。分页文章(小说、新闻、论坛等)默认自动拼接最多 3 页。

中文与多语言编码

自动检测并规范化 UTF-16 BOM、GBK/GB2312、UTF-8、Big5、Shift-JIS 等编码,含 mojibake 回退。相较部分同类插件,README 中标注其对 GB2312 与中文站点的处理更完整。

页面元数据与跳转

正文之外,插件按 meta → schema.org JSON-LD → byline 三级回退采集 publishedauthor 等字段(v1.3.0 起 JSON-LD 可补全新闻站发布时间)。遇到 <meta http-equiv="refresh"> 壳页、反盗链跳转或无 JS SPA 入口时,自动跟随真实页面(最多 3 跳,防循环);声明 <base href> 的页面会据此解析相对链接。

并行与批量

自 v1.1.0 起,四个工具均声明 isConcurrencySafe,智能体可并行发起多次 read_urlread_url_batch 一次读取 1–10 个 URL,并发 4,单页失败不影响其余结果。

网络层

请求优先经 ctx.web 能力接缝;接缝不可用时回退全局 fetch。配置代理时,直连与代理 curl 竞速,先完成者胜出。README 实测提到:使用完整浏览器 UA 时,部分站点(如百度)可拿到完整静态内容,而官方 web_fetch 在相同环境下可能因 TLS/UA 特征拿到降级页。

安装与启用

从 GitHub 安装(README 推荐,便于更新):

npx @deepseek-ai/dsh plugin --profile web add github:2672243194/dsh-read-url

本地开发时可指向目录:

npx @deepseek-ai/dsh plugin --profile web add ./dsh-read-url

安装后重启 DSH(Web 或 TUI),在 Settings → Plugins 中确认 dsh-read-url 已启用。当前 package.json 版本为 1.3.1,许可证 MIT,要求 Node >= 20。

典型用法

安装完成后,直接用自然语言让智能体读 URL 即可,例如:

Read https://example.com/article and summarize the key points
Read https://docs.example.org/guide in markdown mode
Read these URLs together and compare their viewpoints: <url1> <url2> <url3>

单页读取 read_url

参数 类型 默认值 说明
url string 必填 http(s) URL
maxChars number 6000 正文最大字符数(500–20000)
offset number 0 从该字符偏移续读(走缓存,不重复前文)
mode string text text 纯文本;markdown 结构化
includeLinks boolean false 是否额外返回最多 20 条页内链接

输出示例(README 实测):

title: 新闻中心首页_新浪网
charset utf-8
(chars 800/12398 — 截断,offset 续读)

批量读取 read_url_batch

一次传入 1–10 个 URL,并行清洗,合并为一份紧凑报告。失败 URL 单独标注,例如:

读取 2/4 页成功,2 页失败
--- 阮一峰的网络日志 (491 字符) ---
--- Example Domain (127 字符) ---
[失败] https://zh.wikipedia.org/... — Fetch failed: HTTP 403 ...

长文续读

对超过 maxChars 的文章,先用默认参数读首段,再增大 offset 继续读后续片段;缓存命中时不会重复抓取。

适用场景与注意

适合: 需要把网页、API 响应或 RSS 条目读入上下文做摘要、对比、调研的 DSH 智能体场景;中文站、老编码页面、分页长文;希望控制 Token 消耗、避免整页 Markdown 的场景。

注意:

  1. 插件以当前 DSH 进程权限发起网络请求,安装前请阅读 GitHub 源码 与 MIT 许可证,确认符合你的安全策略。
  2. 反爬、403、超时等失败会如实返回,批量读取时单 URL 失败不阻断其余 URL。
  3. 社区目录 SkillHub 插件页 为独立社区站点,与 DeepSeek / 幻方无官方从属关系;插件列表与星标等信息以 GitHub 为准。

小结

dsh-read-url 补上了 DSH 智能体「把链接读成干净正文」这一步:零依赖、无 API Key,默认 6,000 字符紧凑输出,支持编码检测、分页拼接、缓存续读与批量并行。若你已在用 DSH 做联网调研,可按上文命令安装试用。

  • 社区目录:https://www.skillhub.cn/plugins/2672243194/dsh-read-url
  • GitHub:https://github.com/2672243194/dsh-read-url
羽毛球分组比赛记分
小程序二维码

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

小夜