前言¶
在 DeepSeek Harness(DSH)里跑 agent,常见产出是 Markdown 或 HTML 正文。若要把内容落到微信公众号,往往还要手动登录公众平台、粘贴排版、上传图片。另一条路是用「在微信里对话操控 DSH」的通道插件,侧重点在交互而不是「把已有 HTML 一次性写进草稿箱」。
下面介绍社区插件 dsh-wechat-push(维护者 tangzijie716):它面向 web profile,提供工具与 Web UI 按钮,把 HTML 正文与图片 直接投递到公众号 草稿箱。插件 不负责群发——草稿创建后仍需人在公众平台后台点击发送。
这是什么¶
dsh-wechat-push 是 DSH 的联网类插件(SkillHub 分类为联网工具)。一句话定位:把 HTML 正文与图片直接投递到微信公众号草稿箱(manifest 说明其投递能力拆自 dsh-wechat-mp 的投递半边)。
- 仓库:
tangzijie716/dsh-wechat-push - 许可证:MIT
- SkillHub 目录页标注版本:v1.0.0,GitHub Stars:0
- 与
dsh-wechat-html(Markdown → 微信可用 HTML)互相独立:本插件 不排版,直接接收 HTML 文本或文件;不装排版插件也能用。
核心功能¶
工具(Agent 可调用)¶
| 工具 | 作用 |
|---|---|
mp_upload_image |
上传本地 jpg/png(小于 1MB),返回正文必须使用的 mmbiz.qpic.cn 地址 |
mp_create_draft |
从 HTML 创建草稿;正文用 html_path 或 html 二选一 |
mp_list_drafts |
只读列出最近草稿(新的在前),用于确认是否创建成功 |
mp_create_draft 支持标题、封面、正文图列表、可选作者/摘要/阅读原文链接等;封面必需。可一次调用带上封面路径与正文图路径,例如:
{
"html_path": "./content/article.html",
"title": "示例文章",
"cover": {
"path": "./content/cover.png"
},
"images": [
{ "token": "dsh-mp-image-0", "path": "./content/image-01.png" }
]
}
Web UI:「发公众号」按钮¶
每条助手回复后可点 发公众号,一次点击把该条回复排版(使用配置的模板)并放入草稿箱。按钮从 Markdown 起步,需要排版插件 dsh-wechat-html:已安装则走 ctx.get('wechatHtml') 渲染;未安装会明确提示缺什么。
按钮 没有地方选封面,须在 cordis.patch.yml 中配置 defaultCoverMediaId 或 defaultCover(见下文配置)。消息里的外链图片会保留,但结果可能警告被微信过滤。
凭据模型¶
插件 不读 环境变量、$DSH_HOME 或受管凭据库。每次调用须由调用方传入 凭据文件路径 credentials_path,文件内需要:
| 名字 | 含义 |
|---|---|
WECHAT_MP_APPID |
公众号 AppID |
WECHAT_MP_SECRET |
公众号 AppSecret |
支持 .env 的 NAME=value 或 .credentials.yaml 的 refs: 段。传路径而非明文密钥,是为避免密钥进入 DSH 工具参数与会话日志。
安装与启用¶
官方 README 给出的安装方式如下(需在 插件仓库根目录 执行;README 原文前提为已获得该目录源码):
dsh plugin --profile web add file:.
要求 Node.js ≥ 18。运行时由 DeepSeek Harness 提供 @deepseek-ai/dsh-tools 与 @deepseek-ai/dsh-typert-protocol 两个宿主依赖。
安装前请自行审阅 GitHub 仓库 源码与 MIT 许可证。插件在 当前 dsh 进程权限 下运行,可访问网络与本地文件;目录站点 SkillHub 与 DeepSeek / 幻方无官方从属关系,仅作社区索引。
典型用法¶
1、准备凭据文件¶
在公众平台 → 设置与开发 → 基本配置 获取 AppID、AppSecret(Secret 只显示一次)。将二者写入凭据文件,例如 D:\WeChat-Publishing\.env。
2、Agent 调用工具创建草稿¶
调用时始终带上 credentials_path,例如:
mp_create_draft(credentials_path="D:\WeChat-Publishing\.env", ...)
mp_upload_image(credentials_path="D:\WeChat-Publishing\.env", path="...")
mp_list_drafts(credentials_path="D:\WeChat-Publishing\.env", count=3)
若只有 HTML 字符串、没有文件,用 html 参数;若使用 html_path,提交后的正文会另存为 <html_path>.submitted.html(保存失败不会撤销已创建的草稿,但会返回警告)。
3、可选:Web UI 一键投递¶
在 profile 的 cordis.patch.yml 中为 wechat-push 配置默认封面后,可在对话界面使用 发公众号 按钮(需已安装 dsh-wechat-html 做排版)。
全部可选配置示例(不含凭据):
- id: wechat-push
config:
tokenCacheDir: ''
baseUrl: https://api.weixin.qq.com
defaultAuthor: ''
defaultCover: './content/cover.png'
defaultCoverMediaId: ''
requireApproval: false
补丁层会 整块替换 该 id 的 config,需保留的键都要写全。
写操作默认 不弹审批;若需 fail closed 的审批缝,可设 requireApproval: true(开启后「发公众号」按钮也不会绕过,须改用受保护的 mp_create_draft)。
适用场景与注意¶
适合谁
- 已在 DSH web profile 中生成或持有 微信可用 HTML,希望 agent 或按钮 写入草稿箱 再人工群发。
- 需要与
dsh-wechat-html搭配:Markdown 产出 → 排版 → 本插件投递。
务必知晓
- 权限与安全:安装即在本机以你的用户权限执行第三方代码;凭据只应放在你控制的文件中,通过
credentials_path传入。 - 公众平台 IP 白名单:API 调用来源须在白名单内,否则 errcode 40164;家宽 IP 变化会导致此前可用配置失效。
- access_token 互斥:同一 AppID 同时只能有一个有效 token,其他 CMS/脚本会互相顶掉(errcode 45009 等);本插件会磁盘缓存并合并并发刷新,但无法控制外部系统。
- 账号能力:README 说明 未认证个人订阅号 可使用草稿箱与素材接口;不能 通过 API 群发,与本插件「只建草稿」一致。无权限时常见 48001。
- 图片限制:正文图走
media/uploadimg,仅 jpg/png 且 < 1MB;封面走永久 thumb 素材接口,由插件处理。
结尾¶
dsh-wechat-push 把 DSH 里的 HTML 产出与微信公众号草稿箱接上:工具侧适合 agent 流水线,Web UI 按钮适合单条回复快速入库;群发仍留在公众平台人工确认。