wodaimnd/wxmp:把微信公衆號寫稿、排版、發草稿接進 DSH

前言

在 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。

幾點使用前的檢查:

  1. 插件以當前 DSH 進程的權限運行。publish_submit 會真的觸發公衆號發佈(帶 yes: true 時),安裝前先確認 CLI 與插件源碼、許可證。包信息裏許可證寫的是 MIT,倉庫是第三方個人維護,仍有源碼審查的必要。
  2. 插件只註冊工具,不安裝 wxmp CLI 本體,也不向公衆號發起它自己生成的請求之外的操作。CLI 的目錄和公衆號憑據需要自己準備。
  3. package.json 裏 @deepseek-ai/cordis 和 @deepseek-ai/dsh-tools 都是 optional peer dependency,但 client 和 bundle patch 功能依賴 DSH 的運行時;版本不匹配時先看報錯再改配置。
  4. 卸載不會刪除 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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜