peterwangze/dsh-novel-writing ↗★ 4
dsh-novel-writing
DSH (DeepSeek Harness) 自动化小说写作发布流水线插件:项目管理 + Agent 预设 + 可视化工作台 + 多平台发布配置与数据闭环
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:peterwangze/dsh-novel-writing说明文档
阅读完整 README ↗使用指导
第一步:准备与启动
- 安装并重启 DSH 后,侧栏底部出现「📖 小说管理工作台」区块(纯主入口):点标题行打开/关闭小说管理工作台控制台(反选语义),或点书目卡片直接进入该书的小说创作工作台(未绑定首次点击自动创建会话并关联);没有书目时显示「打开工作台界面创建第一本小说」;控制台打开期间点击侧栏其他会话会自动退出工作台界面(控制台随之关闭);创作工作台打开期间点击侧栏其他会话同样自动退出(分栏随之关闭,与管理台行为对齐);
- 打开的管理控制台是全屏管理界面(覆盖内容区,不遮侧栏):顶部栏工作区路径旁的「切换 / 新建工作区…」打开「选择小说创作工作区」对话框——仅支持切换与新建:从已配置工作区中选中一项即切换(
workspaceRoot自动同步为该工作区路径,管理工作台随后显示该工作区书目),或「选择文件夹」/「在其下新建目录」新建工作区(对话框不再创建小说会话——会话创建与绑定经首次点击书目卡片自动完成或卡片 🔗 手动管理); - 控制台卡片网格末尾的「+ 虚线磁贴」点开居中模态新建对话框(UX-012:全屏遮罩 + 居中卡片,Esc/遮罩/✕ 关闭):只需三步——填目录名(书目 id,书名由工作流后续确定,确定前卡片名=目录名)→ 点「创建」(仅建书目,不自动启动任何东西)→ 点击新书卡片(首次点击自动创建会话并关联此书,见下)进入小说创作工作台,再在创作台中窗下半区左侧(与章节列表列等宽,工作台右移收窄——空出章节标题栏正下方一块)工作流控制面板点「▶ 开始工作流」启动创作;想先看看效果,把
examples/demo-novel整个目录拷到工作区目录下,工作台即出现《示例小说》(含 1 章 + 看护卡,可体验阅读/编辑/门禁/发布面板); - 小说创作工作区 = 所选 DSH 工作区目录(其路径自动同步为小说
workspaceRoot);工作区根目录的切换/新建在管理控制台顶部「切换 / 新建工作区…」对话框(选中即切换,UX-014 起创作工作台左窗仅展示当前书目文件树); - 也可沿用传统路径:新建会话时在预设选择器选「小说写作工作流」,或在对话输入
开始小说创作工作流(旧项目输入继续小说创作工作流,从workflow-state.json断点续传),再在控制台卡片上用 🔗 把会话与书绑定。
第二步:跟着工作流走(你在决策位)
作品类型 → 平台调研 → 竞品分析 → 题材选择 → 作品确认 → 创作规划
→ 大纲(三审) → 章节细纲(三审) → 正文(看护) → AI合规 → 质量审查(6审)
→ 上架发布 → 变现 → 数据监控 → 读者互动
- 每个阶段切换都有进度面板与结构化选项(继续/回退/查看产出/退出)——所有关键决策由你确认;
- 市场/平台数据全部来自实时搜索,无来源的结论会标注「推测」;
- 正文保存被代码门禁保护:必写场景缺失或命中禁止项时拒绝保存并给出明细;你在工作台手改的稿子可以「强制保存(人工改稿)」,但会打
forced标记提醒协调者重新审查。
第三步:用两级工作台看与改
小说管理工作台(侧栏区块 = 纯主入口):点标题行打开管理控制台——全屏管理界面(覆盖内容区,不遮侧栏),只管三件事:工作区的创建/切换、小说的创建(+磁贴)与删除(🗑)、卡片化呈现;抽屉书目卡片为小一档(标题 13.5px/副行 12px/紧凑内边距与 8px 状态点,较管理控制台卡片更小巧——UX-015④ 两级层次感 + UX-055⑥ 微调);标题行再点 / 控制台 ✕ / Esc 关闭;点书目卡片 = 直接进入该书的创作工作台(UX-014⑦——未绑定首次点击自动创建会话并关联,见下卡片主体点击);控制台打开期间点击侧栏其他会话也会自动退出工作台界面(自动关闭控制台,参照 dsh-worktable 项目×会话联动;插件自身链路——卡片打开/找到会话/新建——不受影响):
- 顶部栏:📖 小说管理工作台 · 当前工作区名 + 紧邻路径的「切换 / 新建工作区…」· ✕(最右);
- 排序控制(网格上方):「默认 / 手动」两态切换——默认 = 工作区顺序;手动 = 卡片可拖拽换位(拖动中半透明、落点虚线框),顺序记忆在本地(
dsh.novel.order.v1); - 底部搜索行(搜索引擎风格大药丸,高 48px 居中):关键词同时过滤①小说卡片(书名/目录 id)②会话快照(标题/id 匹配 →「找到的会话」行,点击 = 打开那个会话并关闭控制台——「关键词找到 session」);
- + 虚线磁贴(网格末尾,过滤时也始终显示):点开居中模态新建对话框(UX-012:全屏遮罩点击/Esc/✕ 关闭 + 居中卡片 min(520px,100%))——表单仅目录名(必填;书名由工作流确定,确定前卡片名=目录名),按钮仅「创建 / 取消」;创建成功即关窗并在控制台提示点击卡片进入创作台(不再自动建会话/挂预设/绑定/发指令——启动动作归创作台中窗下半区左侧(与章节列表列等宽,工作台右移收窄——空出章节标题栏正下方一块)工作流控制面板「▶ 开始工作流」钮);busy 期间禁关窗/禁连点、错误红字就地提示;
- 小说卡片网格(UX-055 视觉 V2 构成重构——DEC-021 修订版主题无关自适应,在 UX-053 V1 基础上叠加:minmax 320px / gap 20px——宽容器 3 列均分;卡片与「+」磁贴统一 min-height 180px):Linear 式卡构成——①monogram 首字色块(40×40 圆角方块,
color-mix(accent 14%)派生底 + 书名首字 18px/600 accent 色,替代 📖 图标位);②标题区(monogram + 书名 17px/600(字阶第二级)+ 阶段徽标 pill)与数据区之间 1px 分隔线(label-primary 8%派生);③数据 chips(「38 章」「89232 字」「信号 N」独立 chip:2px 8px/圆角 6px/500 12px,label-primary 6%/9%派生底边,tabular-nums)+ 状态 chips(「已发布」ok /「未发布」danger /「已开通变现」ok /「未开通变现」muted——.nv-chip组件data-tone,状态色 tint 12% 底/25% 边);④底部状态带(绑定双圆:○○ 空心未绑定 / ●● 实心已绑定 / 工作中=accent 蓝脉冲 / 待决=黄 / 完成=绿 / 会话失效=红 + 最近更新时间 11px);数据卡片:每书卡内一行最近 metrics 摘要(完读率/读完率/追读/日增收藏/收益,无数据显示「尚无数据信号」);右下角两个 22×22 图标钮(🔗 绑定·重绑 / 🗑 删除);书目 >8 本时折叠为前 8 + 「展开全部(N)/折叠」行;0 本书为英雄空态(48px 图标 + 28px「从第一本书开始」+ 「+ 新建小说」主按钮,隐藏网格/磁贴);1–2 本书网格内容居中(DEC-022 白名单,R1 修复真交付:该分支网格容器内联条件模板repeat(auto-fit,minmax(320px,420px))+justify-content:center——轨道组不再恒满宽,居中真实生效;≥3 本恢复标准模板repeat(auto-fill,minmax(320px,1fr)));+磁贴为label-primary 15%派生虚线 + 20px muted + 图标; - 🗑 删除小说(UX-011,管理工作台职责):点卡片右下角 🗑 弹确认框「确定删除《书名》(目录 id)?将删除整个书稿目录,不可恢复。」——确认后调用宿主
novel-delete接口(id 校验与新建同规 + 路径穿越防护,只删该书目录)并自动清理该书绑定键;取消则不动;无任何自动删除路径(P-07);删除不依赖会话服务(降级态仍可用); - 卡片主体点击 = 打开该书:已绑定 → 切换绑定会话 → 进入小说创作工作台分栏(控制台自动关闭);未绑定(首次)→ 自动创建会话并关联(按当前工作区
workspaceId创建,未命中则用工作区根目录/书目id作 cwd → 自动挂载「小说写作工作流」预设 → 写入绑定 → 打开分栏,提示「已为《书名》创建并关联新会话」;预设挂载失败会告知会话已建、不绑定不打开,可手动重试);会话失效 → 引导重新绑定;自动链不发送启动指令——启动归创作台中窗下半区左侧(与章节列表列等宽,工作台右移收窄——空出章节标题栏正下方一块)工作流控制面板「▶ 开始/继续工作流」; - 🔗 绑定会话:面板按工作区分组列出全部会话,点击即绑定(1:1)并可一键「新建会话并绑定」(新书目录为 cwd + 自动挂预设);绑定会话失效时卡片标「会话失效」,点击引导重新绑定;
小说创作工作台(打开小说后的分栏工作区):管理小说本身的创作与内容/状态/数据——左窗(当前书目 novel-project/ 文件树——UX-014①:创作台关联具体小说,不显示工作区其他小说,去工作区行与书目列表,可「«」折叠)|中窗(五个内容页签)|右窗 = 官方对话窗本身(margin+width 双压挤法(UX-018):margin 贴边挤压之外显式 width=chatW——margin 不改变元素 content-box 尺寸,单纯 margin 挤压在「页面先全宽挂载、后加挤压」的真实时序下无尺寸事件、宿主不重排,hero 保持全宽坐标仅露右缘碎片(=渲染异常);显式 width 使 border-box 真变小 → 宿主必然重排,两种时序统一;⇄ 可换边到左侧;对话窗保持整高不被下推——首入截断修复);两条分隔线可拖拽调宽,宽度与换边记忆在本地(dsh.novel.split.v1);小窗口下聊天窗默认加宽(UX-017 再宽一档:无存档默认 ≈50% 且 ≥320px,左窗下限 120px / 中窗下限 300px 预留重分配——1078×593 实测 378px,hero 页不再折行/截断;标题栏与控制台头部有 .nv-tag 版本徽标(当前 v4),用于核对浏览器实际加载的客户端包版本);关闭创作台后视图区原 width/margin 恢复原值(UX-018);标题栏(UX-015① 加高至 38px、标题/徽标/按钮随栏放大):「📖 小说创作工作台 ·《书名》」+ 阶段徽标 · 绑定会话状态点 · ⇄ 换边 · ✕ 关闭(均为 32×32 醒目钮,UX-015① 放大,Esc 同)(UX-059:「▶ 开始/继续工作流」启动钮已迁至中窗下半区左侧(与章节列表列等宽,工作台右移收窄——空出章节标题栏正下方一块)工作流控制面板);打开期间点击侧栏其他会话自动退出(分栏关闭,与管理台行为对齐);
- 中窗下半区左侧(与章节列表列等宽,工作台右移收窄——空出章节标题栏正下方一块)工作流控制面板(UX-059,位于数据/发布/请求工作台左侧):状态指示(运行中 · 空闲 · 未绑定状态点)· ▶ 开始/继续工作流 / ⏹ 停止工作流 合并主按钮(按绑定会话状态切换形态——运行中=⏹ 停止(
sessions.cancel,队列保留),空闲=▶ 开始·继续)· 压缩上下文(对绑定会话发/compact,需空闲)· 绑定新会话(create→预设→绑定,不自动打开);未绑定/会话失效/服务缺席三态提示沿用(UX-059); - 文件树:当前书目
novel-project/的完整文件树(目录默认全部折叠(UX-014③),点击展开;点击文件就地预览,.md 渲染阅读)。
配置边界:业务配置统一在两级工作台内(工作区根目录 = 管理控制台顶部「切换 / 新建工作区…」对话框——UX-014 起创作台左窗不再放工作区行;平台发布模式/命令/数据抓取 = 发布页签「⚙ 平台发布配置」;小说↔会话绑定与删除 = 管理工作台控制台卡片 🔗/🗑);设置 → 小说写作只保留插件级开关(启用/轮询/预设自动同步/LAN 暴露),与具体小说无关。
| 页签 | 用途 |
|---|---|
| 章节 | 左侧章节列表(每行显示章节名(第N章 名称,无装饰圆点〔UX-021〕,无章节名回退 第N章,不显示字数;列宽默认 160px、右缘分割条常驻可视可拖宽 120–360px 持久化〔UX-022〕;滚动条默认隐藏、悬停/拖动才显〔UX-022〕;章节多时列表上下滚动且与正文滚动隔离——UX-019②③/UX-020/UX-021/UX-022)/已发布/门禁⚠);中间阅读(场景分隔渲染,含「需求项」提示与机器审计折叠)或编辑(Ctrl+S 保存、未保存切换确认、保存跑门禁) |
| 工作流 | 当前阶段(含大纲三审/细纲三审/AI 合规子阶段)、完成清单、发布/变现/AI 路径门禁、请求列表 |
| 数据 | 信号看板(阈值/现值/建议行动)+ 最近 7 天记录表 + 每日指标录入(完读率/读完率/追读/日增收藏/收益) |
| 发布 | 选平台 → 导出 / 导出+命令 / 仅清单(可勾选「含已发布」重发);发布历史;⚙ 平台发布配置(模式/命令/fetchCommand 就地编辑) |
| 请求 | 向协调者提交「优化第 N 章 / 审查 / 发布推进 / 补录数据 / 人工指令」,AI 接单处理 |
会话运行状态零轮询镜像到抽屉卡片、控制台卡片(双圆状态点)与分栏标题栏(工作中=蓝发光 / 待决=黄 / 完成=绿;绑定会话被删除 → 红点「会话失效」)。会话服务缺席时自动降级:状态点隐藏、打开/绑定禁用并提示。
第四步:发布与数据闭环
- 「小说」工作台 → 发布页签 → ⚙ 平台发布配置:给目标平台选模式——
export(导出定稿产物+发布清单)、command(导出后执行你的自动化脚本,可用环境变量DSH_NOVEL_DIR/DSH_DIST_DIR/DSH_PLATFORM)、manual(仅清单);数据抓取fetchCommand也在此配置; - 质量审查与 AI 合规通过(
release_allowed)后,对话里让协调者发布或在工作台点发布; - 每天把后台数据填进「数据」页(或配置
fetchCommand输出 JSON 行{"date":"...","完读率":..,"追读":..}自动入库); - 信号触发时(如完读率 <10%),协调者按
data-driven-optimization给出「定位→对策→影响→预期」方案,你确认后才动稿,改后 7 天观察验证。
常用话术
开始小说创作工作流 / 继续小说创作工作流
处理工作台请求 # 接单 UI 侧请求
给第 3 章优化建议 # 单章优化
发布最近 5 章到番茄小说
把本周数据入库并分析信号
抓取番茄数据入库 # 执行平台 fetchCommand 适配器(需在设置里配置)