Skip to content

About

小说模式 (Novel Mode): a one-click DSH plugin that runs the complete long-form novel writing workflow

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

小说工作台 · Novel Workbench

From one idea to a finished, consistency-checked novel — a deterministic writing engine that runs the stages for you, so you never babysit a prompt.

「一个想法到一本校验通过的小说:确定性写作引擎替你跑完全部阶段,你不用再伺候提示词。」

中文 · License: MIT · Market entry

Most "writing assistants" are a prompt pack: you paste instructions, the model might follow them, and you re-check every chapter by hand. 小说工作台 is an engine, not a prompt. A real JavaScript state machine owns the stage order, the gates, the retries and the checkpoints. The model is a worker the engine calls at specific stages — it never decides whether a chapter passed. The whole product is one sidebar entry「小说」and one panel「小说工作台」; there is no mode to switch and no prompt to paste.

Novel Mode capability overview

Why it is different

Prompt pack 小说工作台 engine
A paragraph telling the model "act as a finite state machine" An actual STAGE_GRAPH transition table in lib/orchestrator.js; illegal transitions are rejected
Quality decided by the model's opinion PowerShell validators decide (validate-chapter.ps1: 13 hard checks); a gate cannot be flipped by model text
Progress lost when the session ends Versioned atomic checkpoint under .dsh/state/; resume at the exact stage after a restart
"PASS" from a subagent is trusted Code adjudication: evidence precedence, a PASS with no evidence is NOT_COVERED, a disproved CRITICAL is dismissed
Errors, script names, stderr in your chat Only generic localized status tokens — never internals

What it does

  • Open the 小说 sidebar entry → the 小说工作台 panel. That is the entire UI.
  • Bind a novel-project directory once in the panel; start a run, choose how to begin, and drive stages from the panel buttons. The panel and the agent tool call the SAME Host drive() function through /novel/api.
  • The engine runs a 7-stage DAG (constitution → outline → design → write → validate → batch → export) plus three bootstrap branches (guided constitution, disassemble/reskin, import an existing manuscript). BATCH is a nested, strictly serial 15-step per-chapter sub-FSM.
  • Code-enforced gates: entry guards check artifacts; exit gates run the validation scripts with pwsh -NoProfile -File … -Chapter <int>; a failed gate pauses the run with a bounded, classified retry policy — the engine never advances on unresolved errors and never "带病放行".
  • Checkpoint & resume: interrupt at chapter 47 of 100 and continue exactly there; idempotent re-runs; corruption-tolerant (bad checkpoint is backed up, not silently dropped).
  • Adjudicated workers: 9 isolated subagent roles with typed, minimal arguments; the dispatcher literally cannot emit a file list or plot hint; the engine resolves their findings against the truth files.
  • Silent & safe: no prompt text shown, no errors leaked, zero bundled credentials, no effect on sessions in other projects.

Honest asset line, verified against the shipped tree: 21 skills · 18+ PowerShell/Python validators · 9 subagent roles · 7 Markdown templates + 1 state.yaml skeleton · 2 rule sets · 2 credential-free templates.

Install (≤5 lines)

dsh plugin --profile <profile> add https://github.com/github-yousen/dsh-novel-mode
# or, from a local checkout, via the Harness plugin manager:
# plugin_manager install_bundle with target = absolute path to this directory

Then restart DeepSeek Harness (a fresh dsh.client manifest needs a Host restart). The sidebar gains a「小说」entry; open the 小说工作台 panel, bind a novel-project directory, and start a run from the panel buttons. No mode dropdown, no slash command, no prompt to paste.

30-second try it

Open 小说 entry → 小说工作台 panel
Bind project dir → click Start → choose「从零搭建」→ the panel drives the engine
You see: 阶段:准备开始 · 请选择开始方式   →   阶段:撰写正文 · 第 1 章 · 进行中

Behind that one-line status the engine has already picked the branch, checked entry artifacts, run the design/chapter validators, adjudicated the review worker and written a versioned checkpoint. Kill the session at chapter 47 of 100 and it resumes at 47 — no prompt to re-paste, no state to reconstruct by hand.

Requirements: DeepSeek Harness 0.2.x (Web profile), PowerShell 7 (pwsh), Python 3.7+. If pwsh is absent the gate records a DEGRADED verdict and the run pauses — it never silently passes and never crashes.

Architecture (short)

小说 sidebar entry ──▶ 小说工作台 panel (Client, main keyed slot)
                        │ POST /novel/api {project, args}
                        ▼
              index.js drive(args, project)   ◀── novel_orchestrate agent tool
                        │                         (same function, two callers)
         lib/orchestrator.js  ← pure, importable, unit-tested
         STAGE_GRAPH / BATCH_SUBSTEPS / advance() / gate() / adjudicate()
         loadState() / saveState()  → .dsh/state/novel-mode.checkpoint.json
                        │
         workers: 21 model-only skills (from package assets/.dsh/skills/)
         validators: pwsh scripts in project .dsh/scripts/ (quality authority)
                        │
         structured status only — no prose, no errors, no prompts

Full details: docs/ARCHITECTURE.md · docs/PM-PRD.md (acceptance criteria) · test/ (multi-angle test suite).

Privacy & security

No credentials are bundled. Optional Fanqie integrations ship empty *.json.template files; copy them to the real filenames and fill in your own values locally (those names are git-ignored). publish_result.json, lockfiles, bytecode caches and the large reverse-engineering artifacts are excluded. All script invocations use explicit, integer-bounded arguments — never -Command, never string-concatenated user input.

Status

MIT. Bundled Humanizer-zh carries its own license.

About

小说模式 (Novel Mode): a one-click DSH plugin that runs the complete long-form novel writing workflow

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages