用 AI-Novel-Writer 在 DeepSeek Harness 中接入本地优先的长篇小说工作台

前言

DeepSeek Harness(dsh)是 DeepSeek 开源的智能体运行时,核心理念是「一切皆插件」:模型、工具、会话、沙箱、存储、循环和界面都可以用插件替换或组合。官方仓库目前仍处于 developer preview,文档也写明接口还会有破坏性变更。

社区里已经出现不少面向编码、侧边栏、主题的界面增强插件。长篇小说创作的需求不太一样:角色、世界观、章节蓝图、草稿和审稿记录需要按阶段留下来,而不是把整本书塞进一次聊天。AI-Novel-Writer 就是冲着这条流程做的:桌面端是本地优先的创作工作台,仓库里同时还维护着一份 DeepSeek Harness 插件的开发预览,把同一套「小说项目」接到 Web 界面的侧栏工作台。

下面介绍的安装命令、项目格式和审批流程,均以目录页、仓库 README 和插件子目录说明交叉核对。社区插件目录 deepseek-harness-plugin.com 是独立站点,与 DeepSeek / 幻方没有官方从属关系,不能当成官方应用商店。

这是什么

AI-Novel-Writer 由 EthanYoQ 维护,目录页分类为「界面增强」。仓库主页当前约 377 星(目录页收录时显示为 376)。它提供两套可独立理解的产物:

  1. Windows / macOS 桌面应用:面向长篇小说的本地优先工作台,把「前提 → 角色 → 世界观 → 章节蓝图 → 草稿 → 审稿 → 修稿 → 定稿」组织成可追溯流程;模型由使用者自己配置,项目资料留在本机。仓库根目录许可证为 GPL-3.0。写作时仓库 README 标明的桌面正式版是 v0.8.4
  2. DeepSeek Harness 插件开发预览:包名 @ethanyoq/dsh-ai-novel-writer,版本 0.1.0,位于 plugins/dsh-ai-novel-writer/。它把项目设置、人物设定、故事蓝图、章节蓝图和章节正文带进 DeepSeek Harness Web,并通过对话里的单文件审批卡片逐项保存。插件使用独立的 Harness 小说项目格式,不读取桌面版 .vela 项目。该子包是独立 pnpm workspace,许可证为 MIT;尚未进入桌面正式 Release,也未发布到 npm。

产品定位需要先说清楚:桌面应用不是内置模型服务,也不是在线小说平台。它提供的是创作编排层——保存项目状态、组织提示词与上下文、管理章节蓝图和草稿版本,再把生成、审稿和修稿串起来。插件预览把这条链路接到 dsh 的 Web 界面,而不是把桌面应用整包挂进 Harness。

核心功能

桌面工作台(仓库主体)

桌面端已经实现的能力,仓库 README 用一张表概括过,这里按已核实内容列出:

  • 结构化创作流程:从前提、角色、世界观到章节蓝图、草稿、审稿、修稿和定稿,按阶段组织创作资产。
  • 章节级生成:生成时围绕当前章节蓝图和相关资料组织上下文,而不是把整本小说塞进一次请求。
  • 审稿与修稿:为草稿生成结构化审稿信息,并以报告作为修稿输入。
  • 角色卡与项目资料:在项目内维护角色、世界观、蓝图、草稿和定稿。
  • 参考文本与知识库:可导入常见文本格式;未配置 embedding 时仍可用 SQLite FTS 全文检索。
  • 批量创作任务:单独的批量章节任务可设为 1–10 章,支持暂停、取消;后处理失败会停止后续章节。这一项属于桌面端,插件预览明确不提供批量多章任务。
  • 模型协议:支持 OpenAI-compatible(OpenAI、DeepSeek、Ollama、NovelAI 预设等 Chat Completions 兼容服务)以及 Gemini 原生协议。自定义 API 只是在上述协议范围内改地址、模型标识和凭据,不是任意 HTTP 协议。

本地模型可以走 Ollama 的 OpenAI-compatible 接口,README 给出的配置如下:

Provider:  Ollama(本地)或自定义
Protocol:  OpenAI-compatible
Base URL:  http://127.0.0.1:11434/v1
API Key:   可留空;若界面要求,可填任意本地占位值
Model:     你的 Ollama 模型名,例如 qwen3:14b

不要把 Base URL 写成 http://127.0.0.1:11434/api/api 是 Ollama 原生接口,不是当前应用使用的 OpenAI-compatible 路径。

项目、角色、蓝图、草稿和定稿默认落在本机项目目录与本地 SQLite;模型配置与 API Key 当前保存在 ~/.vela/models.json。选择云端端点时,提示词和上下文会发送给对应服务商。软件本身不提供模型账号或云端生成额度。

DSH 插件预览(本文重点)

插件把小说项目做成一套带版本的本地格式。V1 项目与桌面 .vela 格式独立:清单和结构化规划资产放在 .ai-novel/,章节草稿放在 chapters/。模型读写使用资产引用,而不是随便传本地路径;写入会比对上次读到的 SHA-256 修订号,提交用原子替换。

包里有三个插件入口:

  • 根上的 Host 入口,由 cordis.patch.yml 加载;
  • ./agent,只由捆绑的 ai-novel-writer Preset 挂载;
  • ./client,在插件配置里注册「AI 小说作家」证据卡片,并通过 shell overlay 加入紧凑的「小说工作台」侧栏抽屉。

专用智能体只看到两个工具:novel_readnovel_apply_change。每一次变更都以单文件 diff 呈现,必须经过 Harness 原生的一次性审批才会执行。Preset 不会挂载 shell、通用文件系统写入、文本替换或 Code Mode。

工作台能编辑的五类资产是:项目设置、完整人物设定、故事蓝图、当前章节蓝图、当前章节 Markdown。浏览器本身不暴露变更 RPC,也不能直接创建清单;真正落盘必须由专用智能体调用 novel_apply_change,再由用户在对话里点「允许一次」。

插件 README 也写了当前边界:不导入 .vela 项目、不提供多资产事务、不跑批量多章任务、自身也不发布到 npm。Client 声明的平台是 webpackage.json 要求 Node.js 为 ^22.19 || >=24

安装与启用

目录页上的命令

社区目录页给出的安装命令原文是:

dsh plugin add github:EthanYoQ/AI-Novel-Writer

如需按目录页说明做可复现安装,页面还给出了固定 commit 的写法:

dsh plugin add github:EthanYoQ/AI-Novel-Writer#commit

commit 换成实际哈希即可。插件会以当前 dsh 进程的权限运行,安装时可能执行代码;安装前应检查源代码仓库和许可证。

仓库一手说明:不要对仓库根目录执行这条命令

这里有一处需要单独强调的来源冲突。目录页把上述 GitHub spec 当作安装入口;仓库 README 则明确写了:

不要使用 dsh plugin add github:EthanYoQ/AI-Novel-Writer:仓库根包是桌面应用,不是可激活的 DSH bundle。

更接近一手的说明是仓库 README 和插件子目录。DSH 的可安装单位是声明了 dsh.bundle.patch 的 npm 组合包;这个声明在 plugins/dsh-ai-novel-writer/package.json 里,不在仓库根目录。因此,按当前仓库结构,应进入插件目录构建后再装到 web profile,而不是对整个桌面应用仓库执行 dsh plugin add

从源码安装(仓库 README 原文):

git clone https://github.com/EthanYoQ/AI-Novel-Writer.git
cd AI-Novel-Writer/plugins/dsh-ai-novel-writer
pnpm install
pnpm run build
dsh plugin --profile web add .
dsh --profile web

如果希望安装一份不随源码目录继续变化的构建产物,可先打包再安装:

pnpm pack --pack-destination ../../.runtime/.cache
cd ../..
dsh plugin --profile web add ./.runtime/.cache/ethanyoq-dsh-ai-novel-writer-0.1.0.tgz
dsh --profile web

插件文档还指出:dsh plugin add . 装的是 profile 级依赖,不是「只对某个小说项目生效」;本地 checkout 只是 npm spec 的来源。开发期用本地目录时,profile 里形成的是指向该目录的链接,移动、删除或未构建该目录会破坏加载。

Windows 上如果 checkout 路径含空格,插件文档记录过当前 DeepSeek Harness CLI 实现会把绝对路径拆成多个参数,导致 dsh plugin --profile web add . 失败。规避方式是使用不含空格的路径,或先 pnpm pack 再对 tarball 执行 add。这是插件作者在固定 Harness commit 47f943859bef60e4160492346772ded9b24f765a 上的复现结论,不是官方文档承诺。

启用 Preset

Web 启动后:

  1. 打开侧栏「小说工作台」;
  2. 选择「安装 AI 小说作家 Preset」;
  3. 新建会话,并选择该 Preset。

同一安装状态也会出现在「设置 → 插件 → 插件配置」里的「AI 小说作家」卡片上。浏览器只能调用本机回环的安装通道,不能提交本地路径;Host 会把捆绑的两份 Preset 文件复制到用户 Preset 根目录(默认 $DSH_HOME/.agent-presets,通常是 ~/.dsh/.agent-presets)。字节完全一致时重复安装是空操作;同名目录内容不同则报冲突,不会覆盖用户文件。已有会话会保留原来的 Preset,需要新开会话才能用上「AI 小说作家」。

典型用法

下面的操作来自插件 README,可以按顺序复现。

  1. 确认当前会话已经选中「AI 小说作家」Preset,并且原生审批没有被关掉。
  2. 打开「小说工作台」。未初始化的项目会给出一列表单:标题、语言、类型、计划章数、目标字数、创作策略。
  3. 先点「预览初始化提案」,界面会展示完整的浅层 JSON(含生成的 project id 和时间戳),此时还不会写入磁盘。
  4. 再点「提交到当前会话」。浏览器把这些值作为普通 Session 提示发出去;改任何一个字段都会让预览失效,需要重新预览。
  5. 智能体调用 novel_apply_change 后,对话里会出现 Harness 原生的单文件审批卡片。点击「允许一次」才会写入磁盘;没有第二次隐藏审批。
  6. 收到 CommitReceipt 后,工作台会读回权威清单,并打开项目设置编辑器。

已初始化的项目不会变成一块仪表盘,而是五类资产的纵向列表。每一类编辑器都带有可见的基准修订号、脏状态、丢弃、精确替换预览,以及提交到当前会话的动作。人物编辑器支持本地搜索、选择、创建、编辑和删除,然后提出完整人物文件的替换;稳定人物 id 自动生成,不会作为普通表单字段出现。

每个资产编辑器里还有一块紧凑的「AI 生成」。简述可留空:留空表示让模型根据项目上下文改进当前资产;若表单有未保存修改,这些内容会作为未保存的用户指引一并送出。浏览器自己不会生成替换字节,也不会直接调变更 RPC。指令要求先对目标资产做一次 novel_read,再对该资产做一次浅层 novel_apply_change,然后等待原生审批。

创作策略(auto / fluent-drafting / consistency-first / deep-planning)只改变小说工作流的规划顺序和写作侧重,不会选择模型供应商,也不会改推理参数。

适用场景与注意事项

适合以下情况:

  • 已经在用 DeepSeek Harness Web,希望在侧栏里维护角色、蓝图和章节,而不是只靠聊天记录堆设定;
  • 需要每次落盘都能在对话里看到单文件 diff,并用「允许一次」确认;
  • 同时需要桌面端做完整长篇编排(含审稿、修稿、批量章节),再用插件预览把同一作者的工作接到 dsh。

使用前建议先看清这些边界:

  • 插件以当前 dsh 进程权限运行。安装前应检查 源代码仓库 和许可证。仓库根目录是 GPL-3.0 桌面应用,插件子目录是 MIT。
  • 插件项目格式与桌面 .vela 不互通,不要指望把桌面作品直接打开。
  • 插件预览不做批量多章、不多资产事务、也不发布 npm。目录页上的一键 github:EthanYoQ/AI-Novel-Writer 与仓库一手说明冲突时,以仓库 README 为准。
  • 保存依赖原生审批。会话权限策略为 never、或明确关闭了原生审批时,插件说明要求不要调用 novel_apply_change
  • 桌面安装包目前未代码签名;macOS ARM64 包未公证。Windows 可能出现未知发布者提示,macOS Gatekeeper 可能拦截。只从该仓库的 GitHub Releases 下载。macOS 安装包仅支持 Apple Silicon,不提供 Intel 包。
  • 软件不替代作者的创意、事实核查或版权判断;AI 输出需要作者审阅。它也不提供在线发布、阅读社区或云端模型账号。

小结

AI-Novel-Writer 把长篇小说需要的结构化资产从一次性聊天里拆出来:桌面端负责完整的本地创作编排,DSH 插件预览则把五类资产和原生审批接到 DeepSeek Harness Web。对 dsh 用户来说,真正可激活的是 plugins/dsh-ai-novel-writer 这份 bundle,而不是仓库根目录的 Electron 应用。

目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/ai-novel-writer/

GitHub:https://github.com/EthanYoQ/AI-Novel-Writer

插件说明:https://github.com/EthanYoQ/AI-Novel-Writer/tree/master/plugins/dsh-ai-novel-writer

羽毛球分组比赛记分
小程序二维码

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

小夜