小说工坊:在 DeepSeek Harness 时间线上写小说

前言

在 DeepSeek Harness(DSH)里写小说,最大的痛点是「没有上下文延续」。用普通会话写,写到几章之后,Agent 很容易忘记前面的人物设定、世界观,或者把新写的内容和旧内容对不上。DSH 的设计是「一切皆插件」,一个插件负责提供新的视图或能力,把现有能力组合起来。小说工坊就是这样一个常驻插件:它把「时间线」和「世界快照」拉进 DSH 的会话体系,让一个作品绑定一个普通会话,用那个会话里的 Agent 按时间推进故事。

插件定位与解决的问题

  • 定位:DSH 的小说写作插件,提供拖拽式时间线、世界快照、章节大纲与正文编辑。
  • 维护者:XiaoOu2024。
  • 解决的问题:
  • 按天推进故事,每章跨多少天一目了然。
  • 世界观、角色、势力、关系随时间演化,每一份快照都独立保存。
  • 每章正文由作品绑定的 Agent,结合最近快照和之前章节生成,保证前后一致。
  • 工作目录下有独立文件夹存储作品信息、章节正文、大纲与快照,方便手动查看与迁移。

核心功能

1. 作品与会话绑定

  • 每个作品绑定一个普通会话,会话出现在左侧会话列表中。
  • 创建作品时会调用 sessionController.create 开启会话,会话归属到对应分组(同名目录下为「小说工坊 · 目录名」,否则新建分组)。
  • 作品的模型与会话模型保持同步,可以通过作品行的「模型」按钮切换,走 sessionController.selectModel。

2. 拖拽式时间线与世界快照

  • 时间线从第 0 天开始,向右延伸到最新世界快照的时间(故事写到快照之后则继续延伸)。
  • 快照间隔(7 / 15 / 30 / 90 / 180 / 365 天,也可手输)决定快照网格:第 15、30、45… 天。
  • 拖动时间线,下方会切换到该时间点之前最新的世界观、角色、势力、关系。
  • 拖到下一个快照点时,顶部出现「生成世界快照 · 第 N 天」;拖到已有快照的那天,则显示「重新生成快照 · 第 N 天」。
  • 手动生成与自动生成规则:
  • 手动:拖到网格点,点击生成或重新生成。
  • 自动:每次生成章节后检查两点:① 本章结束时间落在网格点上;② 上一格(当前点减一个间隔)已有快照(第 0 天视为已覆盖)。
  • 快照内容:世界观、角色、势力、关系、物品(名称 + 下落/用途)与事件(故事天数 + 标题 + 一句话)。
  • 改间隔不会重排旧快照,自动生成只沿着「上一格存在」的链条推进,断档处留待手动补。

3. 章节编辑与大纲

  • 章节故事页:左上「← 时间长河」返回时间线,右上「章节大纲 →」展开大纲页。
  • 左右切换章节,最后一章的「下一章 →」变成「+ 新建章节」。
  • 正文可直接编辑,底部「保存」成功后右上角弹出提示条。
  • 未保存修改时,任何离开动作(回时间线、翻章、进大纲、新建章节、返回作品列表、关闭工作室)都会先弹出确认,可选择「不保存离开」或「保存并离开」。
  • 章节大纲页:可改标题、时间长度、字数上下限、梗概最低字数与梗概;梗概达到最低字数且其他项填完才能保存。
  • 右上角「自动推演」会先提示「将覆盖现有内容」,确认后按当前字数与时间长度重新生成故事梗概 + 章节名称 + 整章正文并保存。
  • 「生成章节故事」会先问「是否以当前故事梗概生成故事」,确认后才重写正文。
  • 大纲不完整时「保存并离开」会被拒绝并提示。

4. 文件存储与迁移

  • 索引文件:<DSH_HOME>/novel-studio/projects/<项目id>/project.json(DSH_HOME 默认为 ~/.dsh)。
  • 正文、梗概、快照全部写到工作目录下、以作品名称命名的文件夹:
  <工作目录>/<作品名称>/
  ├── 作品信息.md                    作品参数总览 + 章节一览表
  ├── 第01章 章节名.md                章节正文(纯正文)
  ├── 章节大纲/
  │   └── 第01章 章节名.md            该章梗概 + 时间跨度 + 字数上下限 + 实际字数
  └── 世界快照/
      └── 第030天.md                 世界观 / 角色 / 势力 / 关系 / 阶段变化
  • 每次保存正文、生成章节、保存大纲、结算快照都会同步刷新这些文件;改标题会删除旧文件名。
  • 若直接编辑 .md 文件且比插件记录更新时间更晚,下次打开作品会以文件内容为准(梗概与快照目前是单向导出)。
  • 作品名称受文件名规则限制:不能为空、最多 60 字、不能以空格或点开头结尾、不能含 \ / : * ? " < > | 与控制字符、不能用 CON/NUL/COM1 等系统保留名。

安装与启用

插件通过官方插件命令安装:

dsh plugin --profile web add dsh-novel-generator

或直接安装仓库:

dsh plugin --profile web add https://github.com/XiaoOu2024/dsh-novel-generator

也可在 DSH 的 设置 → 插件 中安装(本包声明了 dsh.bundle)。装好后刷新页面,界面左下角会出现「小说工坊」按钮。

使用流程概览

1. 创建作品

  • 点击「小说工坊」进入项目管理界面。
  • 点击「创建作品」,选择工作目录(通过「选择」调用目录选择器,不能手填)、模型与预设。
  • 创建动作会自动调用 sessionController.create 为作品开启会话,会话出现在左侧列表中。
  • 每行显示当前模型,点击「模型」可切换作品绑定的会话模型。

2. 打开工作室

  • 点击作品行的「打开」进入时间线界面。
  • 右上角「快照间隔」选择或输入天数,决定快照网格。
  • 拖动时间线查看不同时间点下的世界观、角色、势力与关系。

3. 生成章节

  • 在时间线界面,点击「进入故事」进入离选中时间最近的章节。
  • 在章节故事页或大纲页,填写章节最低/最多字数、故事时间长度(天)、章节名称(大纲页可留空)。
  • 大纲页达到最低字数后可保存,再点击「生成章节故事」生成正文。
  • 或在新建章节弹窗中直接点击「自动推演」,一次性拿到梗概、章节名称与完整正文(第一章禁用)。

4. 生成与刷新快照

  • 手动:拖到网格点,点击「生成世界快照 · 第 N 天」或「重新生成快照 · 第 N 天」。
  • 自动:满足「结束时间在网格点」且「上一格有快照」时,生成章节后自动触发快照生成。
  • 时间线右上角「重置快照」会清空所有快照,再按当前间隔从第 1 格重建到故事末端。

迁移与导入

  • 改目录:点击作品行的「改目录」,把整个作品文件夹移动到新目录,作品的 cwd 随之更新。
  • 导入已有作品:点击「导入已有作品…」,选中包含 作品信息.md 的文件夹,插件从文件重建条目(章节、大纲、梗概、字数、时间长度、世界快照),并新建会话。

注意事项

  • 插件以当前 DSH 进程权限运行,安装前应检查源码与许可证。
  • 需要使用 DeepSeek Harness 0.2.1-rc.2 或更新的 0.2.x,宿主侧需要提供 sessionController、workspaceRegistry 与 agentPresets 接口。
  • HTTP 接口前缀为 /dsh-novel-generator/api,仅接受本机页面同源请求。
  • 界面语言跟随 DSH 设置 → 通用 → 语言,目前部分文案仍是中文。

总结

小说工坊把「时间线」和「世界快照」引入 DSH 的会话体系,让每个作品绑定一个普通会话,由该会话里的 Agent 按时间推进故事。拖拽式时间线、按天统计、快照与大纲、文件级存储,让写小说的过程从「无上下文的会话」变成「有延续性的时间线」。

  • 目录页:https://www.skillhub.cn/plugins/XiaoOu2024/dsh-novel-generator
  • GitHub:https://github.com/XiaoOu2024/dsh-novel-generator
羽毛球分组比赛记分
小程序二维码

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

Xiaoye