dsh-weixin-reader:微信公众号文章解析插件

前言

DeepSeek Harness 的内置工具 web_fetch 在处理微信公众号文章时经常失效,因为微信的站点返回环境检查页,正文被大量内联样式和嵌套容器包裹,且图片采用懒加载。dsh-weixin-reader 插件旨在解决这些痛点,将微信文章正文提取为干净的 Markdown 格式,并提供专门的工具供模型调用。

核心功能

该插件在 Harness 中注册了一个名为 weixin_read 的工具,供模型直接调用。

工具参数
| 参数名 | 类型 | 必填 | 说明 |
| :— | :— | :— | :— |
| url | string | 是 | 微信文章链接,例如 https://mp.weixin.qq.com/s/xxxxxxxx |
| maxChars | integer | 否 | 正文最大字符数,超出将被截断并标记 |
| saveToFile | boolean | 否 | 是否将全文保存到工作区文件 |

返回结果
工具返回包含以下字段的标准结果:
- title:标题
- author:作者
- publishedAt:发布时间
- sourceUrl:源链接
- wordCount:字数
- imageCount:图片数量
- markdown:解析后的 Markdown 内容
- truncated:是否被截断
- savedTo:保存路径(如果启用)
- bodyChars:正文实际字符数

此外,插件会注册一个系统提示段,告诉模型在遇到微信公众号文章时优先使用 weixin_read 而非 web_fetch。

安装与启用

在安装前,请确认当前 DeepSeek Harness 进程具备联网能力。

dsh plugin --profile web add github:jack1545/dsh-weixin-reader

安装完成后,重启 Harness 进程以加载插件层。可以通过以下命令验证插件是否生效(检查配置中是否包含 dsh-weixin-reader 层):

dsh --profile web --dump-config

如需卸载:

dsh plugin --profile web remove dsh-weixin-reader

配置说明

插件的各项配置位于 cordis.patch.yml 的 config 块中,支持在特定 profile 的配置中覆盖默认值。

配置项 默认值 说明
timeoutMs 30000 请求超时时间(毫秒)
maxChars 60000 正文最大字符数限制
saveToFile false 是否默认保存全文到文件
saveDir ”“ 保存目录,空字符串则保存至 <workspace>/weixin-articles/
systemPromptOrder 10120 系统提示段插入顺序
userAgent ”“ 自定义 User-Agent,留空则使用默认桌面浏览器 UA

技术细节与限制

依赖与沙箱限制
- 零外部依赖:插件不引入任何第三方包,仅使用 Node.js 内置模块和 Harness 提供的 ctx。
- 禁用子进程:由于 Harness 的文件沙箱限制了 Node 子进程的管道读写(execFileSync 和 spawn 均报 EPERM 错误),插件无法使用外部 fetch 工具或子进程。它使用宿主环境的 fetch,并继承当前进程的代理设置。

功能边界
- 仅限 mp.weixin.qq.com:插件明确拒绝其他域名,不可作为通用抓取工具。
- 显式错误处理:遇到环境检查页、已删除或受限文章、或无法识别的页面结构时,会直接抛出错误,而非静默返回空内容。
- Markdown 输出:返回的是解析后的 Markdown,而非原始 HTML。图片保留为 Markdown 语法,不进行下载。复杂的富文本布局(如自定义卡片)会降级为纯文本。
- 不支持批量:插件仅支持单篇抓取,且需遵守微信平台条款,请求频率应保持较低。

典型用法

1. 在 Harness 中调用
在对话或配置中直接调用 weixin_read 工具:

请使用 weixin_read 工具获取以下链接的正文并总结:
https://mp.weixin.qq.com/s/xxxxxxxx

2. 本地调试
插件包含一个独立的解析器 lib/parser.js,可在不依赖 Harness 的情况下运行:

import { fetchArticle, formatArticle } from './lib/parser.js';

const article = await fetchArticle('https://mp.weixin.qq.com/s/xxxxxxxx');
console.log(article.title, article.author, article.wordCount);
console.log(formatArticle(article));

结语

dsh-weixin-reader 为 DeepSeek Harness 提供了针对微信公众号文章的专用解析能力,解决了通用抓取工具在微信环境下的兼容性问题。其设计遵循了 Harness 的插件生态规范,支持零依赖运行和精细化的配置。更多详情与源码,请访问:GitHub 仓库 | 社区目录。

羽毛球分组比赛记分
小程序二维码

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

Xiaoye