Introduction¶
DSH’s philosophy is “everything is a plugin,” and writing tools are no exception. The problem is: when asking a model to write a novel, things often get stuck in three places. First, no one is watching the structure; outlines, chapter outlines, and body text scatter across the dialogue, making it impossible to connect chapters after writing dozens. Second, review relies entirely on the main model’s self-review. It writes and edits simultaneously, making it hard to objectively detect “AI flavor” and logical loopholes. Third, there is no way back; after rewriting a chapter, one doesn’t know the impact on the outline, and forgotten foreshadowing piles up.
dsh-novel-studio addresses these three points: It breaks novel writing into a fixed pipeline, uses multiple sub-agents for parallel review, uses deterministic scanning (without calling the model) to reduce “AI flavor,” and visualizes the book’s structure using a story graph in the right sidebar.
What is this¶
dsh-novel-studio is a novel creation plugin for DeepSeek Harness, maintained by ggghhh-11, categorized as “Workflow,” with a GitHub repository ggghhh-11/dsh-novel-studio, 1 star, MIT license, version 0.4.0 (from package.json).
It solves the problem of taking a “one-sentence idea” to a “publishable body text” during long-form writing in a DSH session, requiring templates, progress, review, and re-scanning—without which, the process cannot be paused or resumed.
It is not a collection of templates. Only content that the author can subjectively decide is retained; details like the author’s biography, creative intent, history of reader reception, criticism history, and literary positioning are excluded.
Core Features¶
One-sentence positioning: Intent-triggered writing pipeline + multi-sub-agent review + AI flavor scan + Story graph.
Fixed pipeline order: Setting Card → Full Book Outline → Chapter Outline → Body Text → Multi-sub-agent Review → Rewrite & Re-scan.
Several capabilities worth mentioning separately:
- Intent Trigger: Saying “I want to write a novel” or “start a new series” triggers a prompt before the model is called. Selecting “Disable for now” creates no files and won’t ask again in this session.
- Batch Generation: Chapter outlines 1–500 at a time, body text 1–3 chapters at a time; default chapter length is 2500 words, range 800–8000, body text generated within ±10% of the target.
- Deterministic Scan
novel_scan: Does not call the model; checks for cliché hits (with line numbers), sentence length distribution, density of four-character idioms, density of metaphor markers, reference density, proportion of long sentences, nesting, and rare words. Provides an AI flavor score (0–100, higher is better), readability score, and paragraphs that must be rewritten. - Platform Trends: Built-in baselines for Tomato, Qidian, Jinjiang, Zhihu Salt Selection, Pure Literature, and “Not Specified.”
platform_scanretrieves 3–6 current trends after online search and stores them inplatform_brief, writing them into the prompt for the main model and review roles. Switching platforms clears old trends. - Author Style Memory: Performs deterministic comparison between your revised text and original text, extracting sentence length, word replacements, punctuation preferences, etc., storing them in
style-memory.json, which is automatically attached to subsequent generation and review. - Story Graph: Four sections: Storyline/Emotion Curve, Character Relationship Map, Rhythm and Length, and Editing Metrics; estimates automatically from chapter body text when there is no hand-written data.
Installation and Enablement¶
Method 1, installing from GitHub under a web profile:
dsh plugin --profile web add github:ggghhh-11/dsh-novel-studio
Restart dsh web after installation. The cordis.patch.yml in the repository automatically registers the plugin row; no need to manually edit the profile patch.
Method 2, DSH Desktop. The desktop profile is managed exclusively by the application, so CLI commands like dsh plugin --profile desktop ... are rejected. Therefore, use a local bundle:
git clone https://github.com/ggghhh-11/dsh-novel-studio.git
Then select this directory in DSH “Settings → Plugins → Install Local Bundle,” or let plugin_manager use install_bundle to point to it. After installation, refresh the page once, and the novel icon will appear below the “Plugins” button in the sidebar.
There are two paths to enable it:
- Conversation Trigger: Simply say “I want to write a novel,” the plugin pops up a question. Selecting “Enable” enters the workspace and displays a simplified template version; if there is an existing project, it will ask “Continue this project / New project / Disable for now.”
- Sidebar Trigger: Click the novel icon → “Enable Novel Creation Workspace.” If there is only one active session, the enable notification is sent directly to that session; otherwise, the request is registered and takes effect in the next turn.
Note: The plugin runs with the permissions of the current dsh process. It can read/write files in the working directory and initiate online searches. It is recommended to read the source code and LICENSE before installing.
Typical Usage: Running a Full Round of Writing¶
The following steps come from the flow described in the README. Commands and interface names are fully written out for easy trial.
First, create the project and fill in the setting card. The model will first ask for the book title and publishing platform, then automatically search online for the platform’s public information, followed by asking for length, words per chapter, review sub-agents, and jumpiness value. Genre and writing style are not preset; the model gives popular and potential directions based on search materials and its own judgment, distinguishing facts from judgments, which you then confirm:
novel_studio(action='brief')
// Saves route presets, dimensional answers, free description, word count, and rounds; can also use an outlineText or outlinePath you wrote directly
After brief is saved, the plugin does not proceed immediately; it returns “Next Step Options.” At this point, you must first decide whether you want the book’s outline, chapter outline, or body text (using next you can get a list of executable actions for the current stage):
novel_studio(action='next')
Generate full book outline:
novel_studio(action='outline')
// Returns the outline generation command and save path; text is saved as Outline.txt
Batch generate chapter outlines. from is the starting chapter, count is 1–500, for example, 30 chapters at a time:
novel_studio(action='chapter_outline', from=1, count=30)
// Writes the entire batch to one TXT, for example Chapter_001-030_Outline.txt
Generate body text, single chapter or batch, specifying chapter word count:
novel_studio(action='draft', chapter=1, chapterWords=2500)
After body text is finished, register it, triggering a text preview, version history, and backup in the right sidebar:
novel_studio(action='output_done', file='Chapter_001.txt', kind='chapter')
The output of every step is TXT, defaulting to the project directory. The panel “Save Directory” or outputDir parameter can be changed to any location in the workspace.
Resume after stopping. The model will call resume to ask how to proceed:
novel_studio(action='resume')
“Come back next time” corresponds to checkpoint, which writes progress to checkpoint.md / checkpoint.json in the project directory, allowing you to resume by saying “Continue writing” next time. Use discard to abandon this writing session; it requires confirm=true for confirmation and will delete the project directory.
Review and Rewrite¶
The review process is: Main model drafts → review_plan → Use workflow tool for parallel sub-agents → Ruling (accept/partial/reject) → If there are substantive disagreements, debate_plan pulls relevant sub-agents for cross-examination → Final ruling by main model → Rewrite → novel_scan re-scan → If not meeting standards, proceed to next round. Rounds default to 2, can be set 0–4 in the panel, AI flavor threshold 50–95.
There are 32 review roles in total, two of which are exclusive roles that must be present every time:
- Fluency and Readability Editor: Checks for logic breaks, unclear references, jumps, obscure long sentences, and jargon stacking.
- AI Flavor Hunter: Checks for clichés, empty emotional outbursts, mechanical transitions, metaphor stacking, summation, and uniform sentence structures.
By default, a group is selected based on the target (11 for body text). review_plan will display something like “11/32”. To enable all, pass:
novel_studio(action='review_plan', roleSet='all')
Use lean to save costs; the default is standard, but you can freely check boxes in the sidebar panel grouped by platform/commercial/artisan. The two artisan roles will be retained regardless of selection. High concurrency may trigger rate limits from model providers; if rate-limited, switch to lean or split into two batches; sessions without the workflow tool can only downgrade to serial subagent.
If still unsatisfied after multiple rounds, point out specific issues, and the plugin will generate a specialized review sub-agent prompt:
novel_studio(action='custom_review', issue='Chapter 3 pacing is dragging, hooks are missing')
Hooks, Graphs, and Style Memory¶
After generating chapter outlines or body text, the model submits the hooks buried and resolved in this chapter to the plugin:
novel_studio(action='hooks', hooks=[...], resolved=[...])
The “Hooks” page in the right sidebar groups by “Unresolved / Resolved,” displaying chapter number, type (Suspense/Plot Hole/Reversal/Puzzle), content, and status. The panel statistics card displays “Hooks Unresolved/Total,” used to prevent plot holes from going unfinished in long-running serials.
The story graph opens automatically after chart submits data. If there is no hand-written data, it estimates automatically from chapter body text, with the panel marked “Auto-estimated”:
novel_studio(action='chart')
In the graph, you can see the tension line and chapter-end hook markers, character relationship map, word count bar chart and hook line per chapter, and review metrics changing over rounds.
There are two ways to feed back revised text. To learn only writing habits:
novel_studio(action='learn_style', revised='full revised text', original='full original text')
You can also use file paths (revisedPath + originalPath), or click “Learn from this revision” in the “Style” page of the right sidebar. The comparison content includes paragraph/sentence-level additions/deletions/changes, changes in sentence/paragraph length and dialogue proportion, deleted AI clichés, word replacements, and punctuation preferences.
If the revision changes the plot, the plugin not only looks at style but will also ask if you want to synchronize the outline revision:
novel_studio(action='revision_impact')
If there is an impact, selecting “Synchronize Revision” will generate a complete new outline and save it, automatically backing up the old version to history/:
novel_studio(action='outline_revision')
novel_studio(action='outline_apply')
After saving, ask if this version meets expectations. After confirming, select the review role group and use review_plan(target='outline', roles=[...]) to review the new outline.
Applicable Scenarios and Notes¶
Suitable for developers and authors writing long-form or series stories in DSH: those who want to write according to platform styles (Tomato, Qidian, Jinjiang, Zhihu Salt Selection, Pure Literature), need continuous progression from outline to body text, need objective review rather than model self-review, and need ledger-style hooks and graphs.
Unsuitable scenarios: Short stories finished in one go are faster through direct dialogue; if only writing polish is needed, the style memory part is sufficient, and there is no need to run the full process.
Three notes. First, the plugin runs with the permissions of the current dsh process. Check the source code and license (MIT) before installing, and maintain the same prudence for third-party plugins of unknown origin. Second, platform_scan will perform online searches for platform public information and write materials into the context; environments within a corporate intranet or with restricted internet access need to be confirmed first. Third, batch body text dilutes quality; the plugin will prompt. When pursuing single-chapter quality, it is recommended to use count=1.
Summary¶
dsh-novel-studio transforms novel writing from “model freeplay” into a checkpointed pipeline: templates converge on settings, the pipeline guarantees structure, 32 sub-agents provide independent opinions through parallel review, deterministic scanning handles objective metrics, and graphs and hook ledgers prevent loss of control in long serials, while style memory allows author’s revision preferences to settle. The functional boundaries are clear, the code volume is small, and it is worth trying on a small project before deciding whether to enable it fully.
Directory Page: https://www.skillhub.cn/plugins/ggghhh-11/dsh-novel-studio
GitHub: https://github.com/ggghhh-11/dsh-novel-studio