DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Weixin Reader — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
W

dsh-weixin-reader

Weixin Reader

DeepSeek Harness 的微信公众号文章阅读器:将 mp.weixin.qq.com 文章正文解析为适合模型使用的简洁 Markdown

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:jack1545/dsh-weixin-reader#f6d9973c5c07012dcd505e3aa60b8407cf0cb5c7
README兼容性版本

兼容性与来源证明

Weixin Reader 以 dsh-weixin-reader 发布,当前版本为 0.1.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
any
发布来源
github
Registry 更新时间
2026/9/21

版本

0.1.0stable
2026/9/21

相关插件

正在加载相关插件…

最新版
0.1.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
any
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/9/21
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 search-research 分类下经过校验的插件。

Browser Skill Dsh Plugin@wxg-prc-cpg/browser-skill-dsh-plugin向模型提供 BrowserSkill 浏览器自动化(browser_* 工具)的 DeepSeek Harness 工具插件Weknora@wxg-prc-cpg/dsh-weknora适用于 DeepSeek Harness (dsh) 的 WeKnora 知识检索工具:通过自有知识库进行语义搜索、文档阅读以及 RAG/代理回答。Modsearch@liustack/modsearch适用于编码代理的最强免费网页搜索插件。为不具备原生网页访问能力的模型提供网页搜索、X 搜索和页面抓取功能。开箱即用且免费:无需注册,无需 API 密钥(Firecrawl 无密钥模式,每月 1,000 个免费额度)Free Searchdsh-free-searchDeepSeek Harness 的免费网页搜索:13 个引擎(Bing/DuckDuckGo/AnySearch/SearXNG/Exa/Tavily/Keenable/Firecrawl 无需密钥;Parallel/Perplexity/SerpBase/DeepSeek 需要密钥),支持时间筛选、平台搜索和 web_fetch,并提供网页设置界面。

README

dsh-weixin-reader

English | 中文

A WeChat Official Account article reader for DeepSeek Harness. It fetches a mp.weixin.qq.com article and parses the body into clean Markdown for the model.

Why

Harness's built-in web_fetch often fails on WeChat articles: the site returns an environment-check page, the body is buried under heavy inline styles and nested containers, and images load lazily through data-src. This plugin handles those cases and exposes a single narrow tool.

What it provides

One model-facing tool, weixin_read:

ParameterTypeRequiredDescription
urlstringyesArticle link, e.g. https://mp.weixin.qq.com/s/xxxxxxxx
maxCharsintegernoMaximum body characters before truncation; falls back to the plugin config
saveToFilebooleannoWrite the full body to a workspace file; falls back to the plugin config

The canonical result carries title, author, publishedAt, sourceUrl, wordCount, imageCount, markdown, truncated, savedTo, and bodyChars. What the model sees is rendered Markdown: the title, a metadata line, then the body.

The plugin also registers a system-prompt section telling the model to prefer weixin_read over web_fetch for WeChat articles.

Install

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

Running from a source checkout, use pnpm dsh instead of dsh. Restart the Harness process to load the new layer.

Verify the layer without starting:

dsh --profile web --dump-config   # should contain a "# == dsh-weixin-reader" layer

Uninstall:

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

Configuration

Every tunable lives in the config block of cordis.patch.yml, and can be overridden by id in a profile's own cordis.patch.yml:

KeyDefaultDescription
timeoutMs30000Fetch timeout in milliseconds
maxChars60000Body character limit; longer bodies are truncated and flagged
saveToFilefalseWhether to save the full body by default
saveDir""Save directory; empty writes to <workspace>/weixin-articles/
systemPromptOrder10120Prompt-section order; later sits closer to generation
userAgent""Overrides the default desktop browser UA

Two design decisions

No subprocess for fetching. The Harness file sandbox blocks Node from reading a child process's pipes; execFileSync and piped spawn both fail with EPERM, so external fetchers such as url-md.exe cannot be used from inside a plugin. This plugin uses the host fetch instead, which inherits the process's existing proxy settings and is unaffected by that limit. Redirecting a child's stdout to a file descriptor rather than a pipe would work around it, but that adds temporary files and cleanup responsibility for no benefit here.

Zero external imports. A profile's node_modules does not provide @deepseek-ai/* runtime dependencies, so the plugin uses only Node built-ins and ctx, and does not use defineTool. The cost is manual argument validation, which is implemented and whose failure messages match the declared schema.

Limitations

  • mp.weixin.qq.com only. Other hosts are rejected, so it cannot be repurposed as a general fetcher.
  • Fails loudly rather than degrading. An environment-check page, a deleted or restricted article, and an unrecognizable page structure each raise an explicit error instead of silently retrying or returning an empty body.
  • The body is a parse result, not raw HTML. Rich layouts (custom cards, interactive components) degrade to text or image links; images stay as Markdown image syntax and are not downloaded.
  • No bulk fetching. Keep the request rate low and respect WeChat's platform terms; this plugin is for personal reading and research.

Layout

dsh-weixin-reader/
├── package.json         # declares dsh.bundle
├── cordis.patch.yml     # the layer applied on install
├── index.js             # plugin entry: registers weixin_read and the prompt section
└── lib/parser.js        # zero-dependency parser, testable outside Harness

lib/parser.js works standalone:

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));

Verification

Measured locally on 2026-09-21:

  • weixin_read fetched and parsed a real article: title, author, and publication time correct; 5049 characters and 16 images; clean Markdown structure.
  • Argument validation rejects, as intended: a missing url, a non-object argument, an empty string, a non-positive-integer maxChars, and an undeclared extra key.
  • A non-mp.weixin.qq.com host is rejected.
  • maxChars truncation applies and is flagged; saveToFile writes the correct path and full Markdown content.
  • The canonical result matches output.schema exactly: all required keys present, no undeclared keys.

License

MIT. This plugin is not affiliated with Tencent or WeChat, and is intended for personal reading and research.