dsh-read-url
DeepSeek Harness URL reader: fetch any webpage, auto-detect encoding (GBK/GB2312/UTF-8/Big5), extract clean main content, output compact text/Markdown to save tokens. Zero runtime dependencies.
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:2672243194/dsh-read-url说明文档
阅读完整 README ↗dsh-read-url
DeepSeek Harness 的 URL 阅读插件:抓取任意网页,自动识别编码(GBK/GB2312/UTF-8/Big5),提取干净正文,输出省 token 的紧凑文本或结构化 Markdown。
零依赖(Node 20+ 内置能力),免 API key,免服务端,装完即用。
为什么做它
DSH 的 Agent 能搜索(返回链接和片段),但缺"把 URL 读成干净正文"这一步。官方 tool-web 的 web_fetch 是整页 turndown 转换(导航/广告/侧栏全保留),默认上限 20 万字符——token 黑洞。本插件只返回模型真正需要的:净化后的正文 + 必要元数据,并默认截断。
同类插件对比(2026-08-15 实测源码/文档)
| 能力 | 官方 tool-web web_fetch | dsh-webfetch | dsh-scrape-webpage | dsh-read-url |
|---|---|---|---|---|
| 正文净化(容器级提取) | ❌ 整页渲染 | ⚠️ 标签级去噪,nav/footer 仍混入 | ⚠️ 自研,含噪音 | ✅ article/main 容器 + 噪音剥离 |
| 默认输出上限 | 200000 字符 | 50000 字符 | 30000 字符 | 6000 字符 + 段落级截断 |
| 中文 GBK/GB2312 | 视 provider | ⚠️ 未归一化,GB2312 易乱码 | ❌ 未处理 | ✅ 归一化 + 乱码回退 |
| 会话级缓存 | ❌ | ❌ | ❌ | ✅ 5 分钟 TTL |
走 ctx.web seam | ✅ 官方本体 | ❌ 全局 fetch | ❌ | ✅ 优先 seam,缺失回退 |
ctx.effect 卸载清理 | ✅ | ❌ | ❌ | ✅ |
| 协作式超时(不暴露给模型) | ✅ | ⚠️ 自管 | ⚠️ 自管 | ✅ timeoutMs + exec.signal |
| 模型视角输出 | 整页 Markdown | 紧凑文本 | 15 字段 JSON | 紧凑文本(无需解析 JSON) |
| 依赖 | 官方 | TS 需构建 | 零依赖 | 零依赖(JS ESM 即装即用) |
遵循 DSH 架构理念
按官方文档实现(docs/capability-seams.md、docs/cordis-primer.md、docs/tool-execution-pipeline.md):
- 网络访问走
ctx.web能力缝——所有 web 访问优先通过ctx.web.fetch()(seam 内解析 provider,与官方tool-web一致),seam 缺失时回退全局 fetch。网络层可替换,不绑定任何具体 provider; - 可逆副作用——会话缓存注册在
ctx.effect下,插件卸载即自动清理(时间可组合性); - 协作式工具调用超时——
ToolDefinition.timeoutMs声明预算, 把 转发给 fetch,超时策略由管线强制执行,不把超时暴露给模型;