前言¶
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 仓库 | 社区目录。