前言¶
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 倉庫 | 社區目錄。