前言¶
在 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