Preface

DeepSeek Harness (dsh) is an open-source agent runtime developed by DeepSeek, whose core philosophy is “everything is a plugin”: models, tools, sessions, sandboxes, storage, loops, and interfaces can all be replaced or combined via plugins. The official repository is still in developer preview, and the documentation explicitly states that breaking changes may be made to the APIs.

A number of interface enhancement plugins for coding, sidebar, and themes have emerged in the community. Long-form novel creation has distinct requirements: characters, worldviews, chapter blueprints, drafts, and review records need to be preserved stage by stage, rather than cramming the entire book into a single chat. AI-Novel-Writer is built specifically for this workflow: the desktop version is a local-first creation workspace, and the repository also maintains a development preview of a DeepSeek Harness plugin that connects the same “novel project” to the sidebar workspace of the Web interface.

The installation commands, project formats, and approval workflows described below have been cross-verified against the directory page, the repository README, and the plugin subdirectory instructions. The community plugin directory deepseek-harness-plugin.com is an independent site with no official affiliation to DeepSeek / HuanYing, and should not be treated as an official app store.

What is this

AI-Novel-Writer is maintained by EthanYoQ and categorized under “Interface Enhancements” on the directory page. The repository homepage currently has approximately 377 stars (it showed 376 when listed on the directory page). It provides two independently usable products:

  1. Windows / macOS Desktop Application: A local-first workspace for long-form novel writing, organizing the workflow “premise → characters → worldview → chapter blueprint → draft → review → revision → final draft” into a traceable process. Users configure their own models, and project data is stored locally. The license for the repository root is GPL-3.0. The official desktop version specified in the repository README at the time of writing is v0.8.4.
  2. DeepSeek Harness Plugin Development Preview: Package name @ethanyoq/dsh-ai-novel-writer, version 0.1.0, located at plugins/dsh-ai-novel-writer/. It brings project settings, character profiles, story blueprints, chapter blueprints, and chapter text into DeepSeek Harness Web, and saves items one by one via single-file approval cards in conversations. The plugin uses an independent Harness novel project format, and does not read desktop .vela projects. This subpackage is an independent pnpm workspace, licensed under MIT; it has not yet been included in the official desktop release, nor has it been published to npm.

The product positioning needs to be clarified first: the desktop application does not include built-in model services, nor is it an online novel platform. It provides a creative orchestration layer—saving project state, organizing prompts and context, managing chapter blueprints and draft versions, and connecting generation, review, and revision workflows. The plugin preview connects this pipeline to the dsh Web interface, rather than wrapping the entire desktop application into Harness.

Core Features

Desktop Workbench (Repository Main Body)

The capabilities implemented on the desktop side were summarized in a table in the repository README, and are listed below based on verified content:
- Structured creative workflow: Organize creative assets in stages, from premises, characters, and worldviews to chapter blueprints, drafts, reviews, revisions, and final drafts.
- Chapter-level generation: Organize context around the current chapter blueprint and related materials during generation, rather than feeding the entire novel into a single request.
- Review and revision: Generate structured review information for drafts, and use the report as input for revisions.
- Character cards and project data: Maintain characters, worldviews, blueprints, drafts, and final drafts within the project.
- Reference texts and knowledge base: Import common text formats; SQLite FTS full-text search is available even when embedding is not configured.
- Batch creation tasks: Individual batch chapter tasks can be set for 1–10 chapters, with support for pausing and canceling; subsequent chapters will stop if post-processing fails. This feature is exclusive to the desktop version, and the plugin preview explicitly does not support multi-chapter batch tasks.
- Model protocols: Support OpenAI-compatible (Chat Completions-compatible services such as OpenAI, DeepSeek, Ollama, NovelAI presets, etc.) and native Gemini protocols. Custom APIs only modify addresses, model identifiers, and credentials within the scope of the above protocols, and do not support arbitrary HTTP protocols.

Local models can use Ollama’s OpenAI-compatible interface, and the configuration provided in the README is as follows:

Provider:  Ollama (Local) or Custom
Protocol:  OpenAI-compatible
Base URL:  http://127.0.0.1:11434/v1
API Key:   Can be left blank; if the interface requires it, fill in any local placeholder value
Model:     Your Ollama model name, e.g. qwen3:14b

Do not use http://127.0.0.1:11434/api as the Base URL: /api is Ollama’s native interface, not the OpenAI-compatible path used by this application.

Projects, characters, blueprints, drafts, and final drafts are stored by default in the local project directory and a local SQLite database; model configurations and API keys are currently saved in ~/.vela/models.json. When selecting a cloud endpoint, prompts and context will be sent to the corresponding service provider. The software itself does not provide model accounts or cloud generation credits.

DSH Plugin Preview (Focus of This Article)

The plugin turns novel projects into a versioned local format. V1 projects are independent of the desktop .vela format: manifests and structured planning assets are stored in .ai-novel/, and chapter drafts are stored in chapters/. Model reads and writes use asset references instead of arbitrary local paths; writes compare the SHA-256 revision number from the last read, and use atomic replacement for commits.

There are three plugin entry points in the package:
- The root Host entry, loaded by cordis.patch.yml;
- ./agent, mounted only by the bundled ai-novel-writer Preset;
- ./client, which registers the “AI Novel Writer” evidence card in the plugin configuration, and adds a compact “Novel Workbench” sidebar drawer via the shell overlay.

The dedicated agent only sees two tools: novel_read and novel_apply_change. Every change is presented as a single-file diff, and must be approved via Harness’s native one-time approval before execution. The Preset does not mount shells, generic filesystem writes, text replacement, or Code Mode.

The five types of assets that can be edited in the workbench are: project settings, full character profiles, story blueprints, current chapter blueprints, and current chapter Markdown. The browser itself does not expose change RPCs and cannot create manifests directly; actual disk writes must be performed by the dedicated agent calling novel_apply_change, followed by the user clicking “Allow once” in the conversation.

The plugin README also lists the current limitations: no .vela project import, no multi-asset transactions, no multi-chapter batch tasks, and no npm publication. The Client declares the platform as web, and package.json requires Node.js ^22.19 || >=24.

Installation and Activation

Commands on the Directory Page

The installation command provided on the community directory page is:

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

For a reproducible installation as described on the directory page, a fixed commit syntax is also provided:

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

Replace commit with the actual hash. The plugin will run with the permissions of the current dsh process, and may execute code during installation; you should inspect the source code repository and license before installing.

Official Repository Instructions: Do Not Run This Command on the Repository Root

There is a source conflict that needs to be emphasized separately. The directory page uses the above GitHub spec as the installation entry; the repository README explicitly states:

Do not use dsh plugin add github:EthanYoQ/AI-Novel-Writer: the root package of the repository is the desktop application, not an activatable DSH bundle.

The more authoritative guidance comes from the repository README and the plugin subdirectory. The installable unit for DSH is an npm composite package that declares dsh.bundle.patch; this declaration is located in plugins/dsh-ai-novel-writer/package.json, not in the repository root. Therefore, given the current repository structure, you should enter the plugin directory, build it, and then install it to the web profile, rather than running dsh plugin add on the entire desktop application repository.

Installing from source (original text from the repository 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

If you want to install a build artifact that does not change with the source directory, you can first package it and then install it:

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

The plugin documentation also notes that dsh plugin add . installs profile-level dependencies, not “only effective for a specific novel project”; a local checkout is only the source for the npm spec. When using a local directory during development, the profile will create a link pointing to that directory, and moving, deleting, or failing to build the directory will break loading.

On Windows, if the checkout path contains spaces, the current DeepSeek Harness CLI implementation will split the absolute path into multiple arguments, causing dsh plugin --profile web add . to fail. The workaround is to use a path without spaces, or first run pnpm pack and then run add on the tarball. This is a conclusion from the plugin author’s reproduction on the fixed Harness commit 47f943859bef60e4160492346772ded9b24f765a, and is not promised in the official documentation.

Activate the Preset

After launching the Web interface:
1. Open the “Novel Workbench” sidebar;
2. Select “Install AI Novel Writer Preset”;
3. Create a new session and select this Preset.

The same installation status will also appear on the “AI Novel Writer” card in “Settings → Plugins → Plugin Configuration”. The browser can only call the local loopback installation channel and cannot submit local paths; the Host will copy the two bundled Preset files to the user’s Preset root directory (default $DSH_HOME/.agent-presets, usually ~/.dsh/.agent-presets). Reinstalling when the bytes are identical is a no-op; conflicting directory names with different contents will report a conflict without overwriting user files. Existing sessions will retain their original Preset, and you will need to create a new session to use the “AI Novel Writer”.

Typical Usage

The following steps are from the plugin README and can be reproduced in order:
1. Confirm that the current session has selected the “AI Novel Writer” Preset, and native approval has not been disabled.
2. Open the “Novel Workbench”. For an uninitialized project, a form will appear: title, language, genre, planned chapter count, target word count, and creation strategy.
3. Click “Preview Initialization Proposal” first. The interface will display a complete shallow JSON (including the generated project ID and timestamp), and no data will be written to disk at this point.
4. Click “Submit to Current Session” next. The browser sends these values as regular Session prompts; changing any field will invalidate the preview, requiring a new preview.
5. After the agent calls novel_apply_change, a Harness-native single-file approval card will appear in the conversation. Click “Allow once” to write to disk; there is no secondary hidden approval.
6. After receiving the CommitReceipt, the workbench will read back the authoritative manifest and open the project settings editor.

An initialized project will not become a dashboard, but a vertical list of five types of assets. Each type of editor displays a visible base revision number, dirty state, discard, exact replacement preview, and an action to submit to the current session. The character editor supports local search, selection, creation, editing, and deletion, then proposes a replacement for the full character file; stable character IDs are automatically generated and do not appear as regular form fields.

Each asset editor also includes a compact “AI Generate” section. The description can be left blank: a blank value means the model will improve the current asset based on the project context; if there are unsaved changes in the form, these contents will be sent together as unsaved user guidance. The browser itself will not generate replacement bytes or directly call the change RPC. The instruction requires first performing a novel_read on the target asset, then a shallow novel_apply_change on that asset, and waiting for native approval.

The creation strategy (auto / fluent-drafting / consistency-first / deep-planning) only changes the planning order and writing focus of the novel workflow, and does not select model providers or adjust inference parameters.

Applicable Scenarios and Notes

This tool is suitable for the following situations:
- You are already using DeepSeek Harness Web and want to maintain characters, blueprints, and chapters in the sidebar instead of relying solely on chat logs to accumulate settings;
- You need to see single-file diffs in conversations every time you save, and confirm with “Allow once”;
- You need the desktop version for complete long-form orchestration (including reviews, revisions, and batch chapters), and use the plugin preview to connect the same author’s work to dsh.

Before using, we recommend reviewing these limitations:
- The plugin runs with the permissions of the current dsh process. Inspect the source code repository and license before installing. The repository root is the GPL-3.0 licensed desktop application, while the plugin subdirectory is MIT licensed.
- The plugin project format is incompatible with the desktop .vela format; do not expect to directly open desktop works with the plugin.
- The plugin preview does not support multi-chapter batches, multi-asset transactions, or npm publication. If there is a conflict between the one-click github:EthanYoQ/AI-Novel-Writer command on the directory page and the official repository instructions, refer to the repository README.
- Saving relies on native approval. If the session permission policy is set to never, or if native approval is explicitly disabled, the plugin documentation instructs not to call novel_apply_change.
- The desktop installation package is currently not code-signed; the macOS ARM64 package is not notarized. Windows may show an unknown publisher prompt, and macOS Gatekeeper may block the app. Only download from the GitHub Releases of this repository. The macOS installation package only supports Apple Silicon, and no Intel package is provided.
- The software does not replace the author’s creativity, fact-checking, or copyright judgment; AI output requires author review. It also does not provide online publishing, reading communities, or cloud model accounts.

Summary

AI-Novel-Writer extracts the structured assets required for long-form novel writing from one-off chats: the desktop version handles complete local creative orchestration, while the DSH plugin preview connects the five types of assets and native approval to DeepSeek Harness Web. For dsh users, the activatable bundle is plugins/dsh-ai-novel-writer, not the Electron application in the repository root.

Directory page: https://deepseek-harness-plugin.com/zh-CN/plugins/ai-novel-writer/

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

Plugin documentation: https://github.com/EthanYoQ/AI-Novel-Writer/tree/master/plugins/dsh-ai-novel-writer