中文EN

dsh-wewrite

workflow已测通过npmMIT

公众号 AI 写作管线:六步成文(选题、大纲、成稿、门禁、渲染、配图)+ 启动 brief 合同、热榜逐条 AI 速览、RRULE 定时推草稿箱、写作台与对话工具(/wewrite 命令与 @ 引用),推送草稿箱前经宿主审批 fail-closed 确认。

下载量 / Downloads
1,216
依赖体积 / node_modules
76.5 MB
测试时间 / Tested
2026-11-06
DSH 版本 / Version
0.2.2-rc.1

安装

dsh plugin --profile web add dsh-wewrite

沙箱测试结果

阶段结果
1 安装✓
2 列装✓
3 挂载✓
4 启动—

四阶段在隔离沙箱里跑:安装(有网)→ 列装 → 挂载 → 启动(后三步断网)。

README

<p align="center"><img src="assets/logo/mark-1024.png" width="120" alt="dsh-wewrite logo"></p>

dsh-wewrite

![CI](https://github.com/jerryjiao/dsh-wewrite/actions/workflows/ci.yml)

![Website](https://github.com/jerryjiao/dsh-wewrite/actions/workflows/website.yml)

一个 DeepSeek Harness(DSH) 插件:把一整套微信公众号 AI 写作管线(选题 → 大纲 → 成稿 → 质量门禁 → 排版渲染 → 配图 → 草稿箱)产品化。任何 DSH 用户一条命令安装,在本地 Web UI 里完成从选题到草稿箱的全流程。模型与凭据全部走你自己的账号,数据只落本地。

5 分钟快速开始

前提:Node ^22.19.0 || >=24.0.0,已能运行 npx @deepseek-ai/dsh。

第 1 步:安装插件

npx @deepseek-ai/dsh plugin --profile web add github:jerryjiao/dsh-wewrite#v0.2.0

安装完成后如需卸载:npx @deepseek-ai/dsh plugin --profile web remove dsh-wewrite。

关于产物形态:仓库直接提交了 lib/ 预构建产物(dist-committed),这是有意决策——DSH 从 git 安装插件不会执行 build 脚本,预构建路径让你不必在 pnpm 侧加任何 allowBuilds 信任声明,装完即用。

第 2 步:启动 DSH Web

npx @deepseek-ai/dsh web

打开 http://127.0.0.1:3080 ,会话视图环里会出现「wewrite 工作台」tab。

第 3 步:配置凭据

模型不需要在本插件里配:文本生成直接用 DSH 原生的模型配置(ctx.llm)。你只需要在工作台「设置」页填:

  • 公众号 AppID + AppSecret(来自公众平台「设置与开发 → 基本配置」),保存后只存本地,界面回显掩码
  • 图片供应商 API Key(可选,不配则文章无图推进,不阻塞发布)

填完点「连接测试」。通过即可进入下一步;如返回 errcode 40164,见 [FAQ](#faq) 的 IP 白名单条目。

第 4 步:出第一篇

「选题」面板选一条热榜(内置 Hacker News,可配自定义聚合源),点开条目先看一眼 AI 速览(抓原文后的中文要点总结,抓不到则给标题解读),合适就点「写这个」,或直接输入固定主题。管线自动执行六步(选题 → 大纲 → 成稿 → 门禁 → 渲染 → 配图),进度实时可见。完成后在编辑器里改稿——选中任意一段点「AI 改写」下一句指令即可局部重写(Ctrl+Z 可撤销),右侧微信预览与最终推送产物字节一致。确认后点「推草稿箱」,到微信公众平台后台「内容与互动 → 图文素材」里查看草稿。群发请你在公众平台后台人工执行(本插件 v0.1 没有任何群发调用路径,见[安全声明](#安全声明))。

一步步用起来

以下截图来自 v0.5.x 真机运行(本机 DSH Web 实拍),按使用动线排列。

对话框直写(推荐入口,v0.4.0 起)

装好后在 DSH 对话框里直接说「用 wewrite 写一篇……」——agent 会驱动写作管线,六步进度(选题 → 大纲 → 成稿 → 门禁 → 渲染 → 配图)以卡片形式实时出现在对话流里;管线跑完出成稿卡(标题/字数/门禁结论),门禁未过会给出可行动的失败引导。对 agent 说「推草稿箱」时,宿主原生审批面板先弹出(含文章标题与门禁状态)——你点允许之前,插件零微信 API 调用(fail-closed:审批不可用即拒绝执行)。另有 /wewrite <主题> 命令与 @ 引用已有文章两个轻入口。

<p><img src="assets/screenshots/09-chat-run-progress.png" alt="对话直写:写作管线运行卡实时出现在对话时间线,显示六步进度" width="720"></p>

<p><img src="assets/screenshots/10-chat-final.png" alt="对话流中的成稿卡与失败引导卡,模型尝试推送时弹出宿主审批面板等待人工确认" width="720"></p>

写作台精修

另外两种进入方式:会话顶部 tab 环里的「写作台」(在会话里聊着写),或侧边栏底部的「打开写作台」按钮——不进任何会话,一键全屏铺开完整工作台,Esc 收起。

写作工作区

<p><img src="assets/screenshots/01-workbench.png" alt="写作工作区界面:左栏文章列表(搜索、状态筛选、门禁标记、新文章入口),主区编辑器默认载入最近一篇,顶部为写作/选题/定时导航与设置入口" width="720"></p>

打开即工作区:左栏是你的全部文章(状态点 + 门禁标记 + 筛选搜索),主区直接进入最近一篇的编辑器——选文章、改稿一步到位,不再有「列表页 → 下钻」两跳。零文章时主区是启动卡(输入主题开写 / 去选题中心 / 先配置凭据)。

选题中心

<p><img src="assets/screenshots/02-hotspots.png" alt="选题中心界面:热门榜按序号列出多条 Hacker News 条目,每条带来源与「写这个」按钮" width="720"></p>

热门榜实时拉取(上图为真实 Hacker News 数据),行上直接「写这个」进管线,右栏管理你的选题关键词。点开任意条目,AI 会抓取原文给你一段中文速览——「这条在讲什么」加两三条具体要点(带「读了原文」徽记);抓不到原文的站点自动降级为标题解读与写作角度。速览按条当日缓存,不点开不消耗。

编辑器(双栏)

<p><img src="assets/screenshots/04-editor.png" alt="编辑器双栏视图:左 Markdown 改稿,右微信预览显示同名文章排版效果,顶栏一行含标题、三视图切换(仅编辑/双栏/仅预览)与推草稿箱按钮" width="720"></p>

顶部 chrome 压缩为两行;视图一键切换「仅编辑 / 双栏 / 仅预览」,双栏可拖拽调宽;门禁报告从右侧滑出(不再挤占视图位);字数、门禁、保存状态全部归拢到底部状态条。改稿不顺手时选中一段文字,上方浮出「AI 改写」——输入一句话(更口语 / 精简一半 / 扩写细节 / 更有数据感,或自定义),AI 只重写选中段落并原位替换,Ctrl+Z 即可撤销;全文其余部分一个字不动。

编辑器(仅预览)

<p><img src="assets/screenshots/05-editor-preview.png" alt="仅预览视图:文章渲染在带边框圆角的白底画布上,外围井底色与手机 notch 装饰营造「这台手机」实感,支持 100/90/75% 缩放" width="720"></p>

预览画布立在井底之上,所见与推到草稿箱的产物字节一致;缩放只是视觉变换,不改载荷。

定时任务

<p><img src="assets/screenshots/06-schedule.png" alt="定时任务界面:计划卡片显示 RRULE 原文、人类可读翻译与下次运行时间,右上角有新建定时按钮" width="720"></p>

RRULE 规则与下次运行时间人类可读展示(规则原文收进悬停提示,不再占版面),可暂停/恢复。

设置

<p><img src="assets/screenshots/07-settings.png" alt="设置界面:公众号、模型服务、图片供应商、API 代理、发布纪律分组配置,凭据输入框回显掩码" width="720"></p>

公众号凭据、模型服务、图片供应商链、API 代理分组配置;AppSecret 只回显掩码,连接测试在此。

功能亮点

  • 主题写作 + 热门榜选题:固定主题直写,或从热榜选题。内置 Hacker News(官方 Algolia 索引,无需 key),支持自定义聚合源(DailyHotApi 兼容形态,配 URL 即启用)。单源失败只标记该源,不影响其余源展示。
  • 逐条 AI 速览:点开热榜条目,后台抓取原文(8 秒超时 / 2MB 上限 / 仅 text/html)、抽出正文,LLM 输出中文速览(这条在讲什么 + 具体要点);抓不到原文自动降级为标题解读与写作角度。点开才生成,按条当日缓存。
  • AI 选中改写:编辑器里选中一段文字,浮条点「AI 改写」,一句话指令只重写选中段(四个快捷方向:更口语 / 精简一半 / 扩写细节 / 更有数据感),原位替换、Ctrl+Z 可撤销,全文其余部分不动。
  • 侧边栏直进:不进任何会话,点侧边栏底部「打开写作台」即全屏铺开完整工作台,Esc 收起;会话内「写作台」tab 保留,双入口并存。
  • Markdown 编辑器 + 微信预览:CodeMirror 编辑器改稿,右侧实时微信预览(host 侧渲染,预览 HTML 与推送载荷字节一致,所见即所推)。三套排版主题:professional-clean / tech-dark / minimal-gray。
  • 质量门禁:成稿先过门禁(内容质量校验 + 编号配图一致性校验),门禁未过会阻断默认推送路径;你可以改稿重过,或显式覆盖。
  • RRULE 定时,默认进草稿箱:RRULE 规则(如每个工作日 04:00)定时跑管线,产物恒定推草稿箱,运行历史完整可审计。错过计划时刻不补偿,下次启动时提示错过数。
  • 9 家图片供应商,gpt-image-2 优先:openai(gpt-image-2)→ doubao → dashscope → jimeng → minimax → azure_openai → gemini → openrouter → replicate 的 fallback 链。单家失败自动降级下一家,产物标注实际使用的供应商;全部失败时无图推进,不阻塞成稿。缺省只配 openai 一家,其余按需在设置页增排。
  • 模型走 DSH 原生配置:不另建模型账号体系。管线文本步直接用宿主 ctx.llm(即 DSH 设置页里配的模型),也可对单次运行覆盖 provider/model。

架构

单包双端(host + client),DSH Cordis 插件形态:

<p><img src="assets/diagram/architecture.png" alt="dsh-wewrite 架构图:DSH Web 工作台经 RPC 到宿主插件(写作管线/定时调度/微信草稿箱/图片生成),落本地存储/凭据/DSH 模型,草稿箱指向公众号" width="768"></p>

<details>

<summary>文字版</summary>

<pre>

DSH Web UI(React 18,http://127.0.0.1:3080)

├─ 侧边栏「打开写作台」入口(sidebar.footer.action)→ shell.overlay 全屏浮层

└─ wewrite 工作台 tab(conversation.view,双入口并存)

│ 选题(热榜 + 逐条 AI 速览)│ 编辑器(Markdown + AI 选中改写)│ 微信预览

│ 运行历史 │ 定时计划 │ 设置

│ connection.rpc(仅 loopback 回环,authority 校验)

▼

DSH Host(Node + Cordis)

└─ dsh-wewrite 宿主插件:WeWriteService(唯一写权威,操作串行化)

├─ pipeline/ 六步引擎:选题→大纲→成稿→门禁→渲染→配图

│ 文本步调 ctx.llm,确定性步骤纯代码执行

├─ scheduler/ RRULE 归一化 → durable occurrence claim → 派发 run

├─ wechat/ token / uploadimg / material / draft

│ apiBaseUrl 可配 = 代理缝(全部调用统一走该地址)

└─ providers/ 9 家图片供应商 + fallback 编排

凭据:ctx.credentials(~/.dsh 本地) 数据:storageDomain(~/.dsh 本地)

<

…(truncated)

以上内容来自 npm 上的 README,我们只做格式化,不改内容。

版本

npm 上共发布:3,最后更新 2026-08-26

链接

GitHub · Homepage · npm

同类插件