前言¶
在 DSH 里写公众号文章,常见做法是模型直接产出 Markdown,人再复制到微信公众平台后台排版、上传封面、建草稿、点发布。模型看不到草稿箱,也不知道 publishId 是什么,发没发出去全靠人盯着。这个插件(@local/wxmp,目录页名 wodaimnd/wxmp,分类「客户端」)把一个 wxmp CLI 注册成名为 wxmp 的模型工具,让模型能调用 article_new、cover、draft_create、publish_submit 这类操作,界面侧再配一个三栏工作台(文章列表 / 预览 / 发布流水线)。也就是说,写稿、排版、封面、草稿、发布这一段流程可以在 DSH 内串起来。README 里的定位是”把 wxmp CLI 注册成一个模型工具”,插件本身不重新实现公众号接口。
需要先说明的是:这是社区目录上的第三方插件,目录站与 DeepSeek / 幻方没有官方从属关系;GitHub 仓库当前星标数为 0,README 按本地工作区路径编写,使用前应自己核对源码。
适合谁¶
在 Windows 上用 DSH 做公众号内容、想用模型驱动从写稿到建草稿全流程的人。前提是已经安装并配置好 wxmp CLI(包括公众号的 appid / secret)。如果只想用插件附带的客户端界面、不打算让模型调用工具,这个插件的价值会打折扣,因为界面侧的三栏工作台和模型工具是配套的。
安装与启用¶
安装命令写在 README 里,指向本机路径,不是从 GitHub 拉取:
dsh plugin --profile web add G:\AI PGRM\DSH\wxmp\dsh-plugin
或把插件目录链接到 DSH 的本地插件目录,本工作区用的是 G:\AI PGRM\DSH\plugins\。也就是说,使用前需要先准备好 G:\AI PGRM\DSH\wxmp 这棵 CLI 目录树,插件只负责把它注册成工具。
启用后在配置里插入插件条目,配置项来自 README:
- insert:
- id: wxmp
name: '@local/wxmp'
config:
cliPath: '' # 默认自动定位 ../bin/wxmp.js
stateDir: '' # 空 = 用 CLI 自己的目录(%LOCALAPPDATA%\wxmp)
timeoutMs: 120000
cliPath 留空时插件会自动定位 CLI 的 ../bin/wxmp.js;stateDir 留空则由 CLI 自己管理状态目录。timeoutMs 是调用 CLI 的超时时间,默认 120000 毫秒。
工具形态¶
模型调用工具时传 operation 和 params,返回固定形状的产物,DSH 按 output.schema 校验:
{
"operation": "draft_create",
"params": { "file": "文章.md" }
}
返回体形如:
{ "ok": true, "exitCode": 0, "data": { "mediaId": "draft_7", ... }, "text": "草稿已创建: draft_7 ..." }
其中 render() 只把 text 字段交给模型,data 字段留给程序侧消费。也就是说模型在对话里看到的是自然语言摘要,而 mediaId 之类的结构化字段由工作台或编排程序读取。
操作与参数¶
README 给出的全部 operation:
| operation | params |
|---|---|
config_show |
— |
config_set |
appid, secret |
doctor |
— |
article_new |
title(必填), author?, theme?, cover?, force? |
article_list |
— |
article_show / article_check |
file?(缺省取最新一篇) |
article_preview |
file?, out?, open? |
cover |
file?, subtitle?, badge?, theme?, out? |
draft_create |
file?, dryRun?, thumbMediaId? |
draft_list |
offset?, count?, full? |
draft_get / draft_delete |
mediaId |
draft_update |
file?, mediaId?, index?, dryRun? |
draft_count |
— |
publish_submit |
file? 或 mediaId, yes? |
publish_status / publish_wait |
publishId, timeoutMs?, intervalMs? |
publish_list |
offset?, count? |
publish_delete |
articleId, yes?, index? |
参数里的 file 指的是本地文章 Markdown 文件,? 表示可选。所有操作都接受 baseUrl,默认指向 api.weixin.qq.com,需要走自建或内网网关时覆盖这个值即可。mediaId 也接受 media_id、publishId 也接受 publish_id 等下划线写法。
一次典型的串联是:article_new 新建文章 → 编辑 .md → cover 生成封面 → draft_create 建草稿 → draft_update 更新 → publish_submit 提交发布 → publish_wait 轮询发布结果。
安全默认¶
README 明确写了几个有意为之的默认行为,值得在使用前知道:
publish_submit不带yes: true时只 dry-run,不会真的发出去;publish_delete同理;- 凭据在输出里始终打码;
- 发布是异步任务,工具会提示用
publish_wait轮询,而不是假装 submit 成功就算完事。
这里包含两层安全考虑:一是写操作默认可回放,二是异步接口不假装同步成功。
设计要点¶
README 里列出的设计约束,和实际使用有直接关系:
- 只注入
tools:systemPrompt是可选增强,不需要描述也能调用工具; - 不 import
@deepseek-ai/*:插件手写 raw JSON Schema,link:加载也不会解析失败; - 子进程 stdio 指向文件:受限沙箱里管道会 EPERM,所以不靠 stdin/stdout 管道传数据;
- 所有操作串行:
draft_create会把media_id写回文章 front matter,publish_submit依赖它,并发会互相踩踏; - 重新 apply 先释放旧注册:配置变更会重新调用
apply,避免重复注册。
串行这一点尤其重要:写操作之间有先后依赖,不要为了让模型”更快”而并发调用同一素材的操作。
适用场景与注意¶
适合已经在 Windows 上跑 wxmp CLI、希望把公众号生产流程并进 DSH 工作台的开发者。工作台是 web 平台,package.json 里 dsh.client.platform 为 web,需要对应的 web profile。
几点使用前的检查:
- 插件以当前 DSH 进程的权限运行。
publish_submit会真的触发公众号发布(带yes: true时),安装前先确认 CLI 与插件源码、许可证。包信息里许可证写的是 MIT,仓库是第三方个人维护,仍有源码审查的必要。 - 插件只注册工具,不安装 wxmp CLI 本体,也不向公众号发起它自己生成的请求之外的操作。CLI 的目录和公众号凭据需要自己准备。
- package.json 里
@deepseek-ai/cordis和@deepseek-ai/dsh-tools都是 optional peer dependency,但 client 和 bundle patch 功能依赖 DSH 的运行时;版本不匹配时先看报错再改配置。 - 卸载不会删除
G:\AI PGRM\DSH\wxmp本身,也不影响已发布的文章,这一点 README 已经说明。
卸载¶
README 给出的卸载步骤,本质是摘掉注册项而不是删代码:
# 1. 从 profile 清单里去掉依赖与 bundles 条目
# %USERPROFILE%\.dsh\profiles\desktop\package.json
# 2. 删链接
Remove-Item "$env:USERPROFILE\.dsh\profiles\desktop\node_modules\@local\wxmp" -Force
# 3. 重启 DSH
结尾¶
这个插件解决的是”公众号文章怎么在 DSH 里走完从写到发的一段路”:模型侧有统一的 operation 表和 dry-run 默认,界面侧有三栏工作台看文章列表、预览和发布流水线。对已经用 wxmp CLI 维护公众号的人,接入成本主要是按 README 装好插件和配置 appid / secret;对还没有 CLI 的人,得先准备好这一步,插件不替你做。
- 目录页:https://www.skillhub.cn/plugins/wodaimnd/wxmp
- GitHub:https://github.com/wodaimnd/wxmp