🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

小说推演台 PRTSPro/novel-workbench

DeepSeek Harness
PRTSPro71 天前有提交已提供中文文档扫描:含敏感能力

构建设定并跑团式推演,自动补全大纲与世界观

35.8/100
综合分
6
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/17 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

该插件未发布到 npm,按作者文档从 GitHub 源安装即可(静态检查只覆盖 npm 路径,不代表插件不可用)。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add PRTSPro/novel-workbench
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · ui
装得上吗
本站已真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 71 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装

仓库 package.json 标记 private,未发布到 npm,需从源码安装;安装清单取自 plugin/package.json

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包@dsh-external/dsh-novel-workbench(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/2 15:44:41

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件
查看扫描证据(共 4 处,展示前 4 条)
  • 读取本地文件
    plugin/lib/index.js:351
    const entries = readdirSync(dir, { withFileTypes: true })
  • 读取本地文件
    plugin/lib/index.js:392
    const entries = readdirSync(b, { withFileTypes: true })
  • 读取本地文件
    plugin/src/index.js:351
    const entries = readdirSync(dir, { withFileTypes: true })
  • 读取本地文件
    plugin/src/index.js:392
    const entries = readdirSync(b, { withFileTypes: true })
扫描于 2026/11/3(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 构建设定
  • 跑团式推演
  • 自动补全大纲与世界观

DeepSeek Harness 小说工作台(tuiyantai):技能 + novel-assistant 动态插件源码

README

由 DeepSeek 最新模型翻译生成
novel-workbench(小说推演台 v13 静态装配・v16 悬浮窗入口・单独工作区版) DeepSeek Harness(DSH)社区贡献:小说创作工作台技能 + 静态插件包(profile 静态装配)完整源码。 一个不直接写正文的小说创作工作台,核心是四件事:构建设定 → 跑团式推演 → 双向推理补设定 → 形成大纲。 - 单独工作区(workspace-scoped,v13):novel_* 工具与推演台入口 仅限配置了作用域的工作区会话使用——host 按发起会话 cwd 门控执行、client 入口按钮(conversation.session.header.actions,「条目即组件」)按会话 cwd return null 隐身、RPC 按 sessionId 二次校验;作用域由 plugin/scope.json / NOVEL_WS_SCOPE 配置(默认不门控)。
展开完整文档(README 剩余 1 节)
novel-workbench(小说推演台 v13 静态装配・v16 悬浮窗入口・单独工作区版)

DeepSeek Harness(DSH)社区贡献:小说创作工作台技能 + 静态插件包(profile 静态装配)完整源码。

一个不直接写正文的小说创作工作台,核心是四件事:构建设定 → 跑团式推演 → 双向推理补设定 → 形成大纲。

- 单独工作区(workspace-scoped,v13):novel_* 工具与推演台入口 仅限配置了作用域的工作区会话使用——host 按发起会话 cwd 门控执行、client 入口按钮(conversation.session.header.actions,「条目即组件」)按会话 cwd return null 隐身、RPC 按 sessionId 二次校验;作用域由 plugin/scope.json / NOVEL_WS_SCOPE 配置(默认不门控)。在其他工作区开会话时不受干扰(对照 WORKSPACE-SCOPED-PLUGINS.md 方案 A)
- 多项目支持(v11):每部小说一个独立项目,推演台头部项目切换器(下拉切换 + 新建/导入表单);导入支持粘贴 state.json 或文件路径
- 会话头部「推演台」入口按钮(v16,仅作用域内会话显示,与 dsh-ws-gated-demo 同原理)→ 点击弹出可拖动悬浮窗(非全屏,输入框/对话仍可并行操作):设定管理 / 推演(场景、行动裁决、候选分支、伏笔、推理)/ 局势图(当前状态、冲突网、势力归属、分卷大纲);左右栏可折叠(默认收起),中栏核心区占满
- 助手输出悬浮窗(右下角,可拖动、可折叠):实时展示当前会话的流式输出与运行状态,并保留最近一轮完整输出,随时回看
- Host 侧 27 个工具(novel_,含门控自检 novel_scope):多项目管理、设定卡、场景引擎(行动裁决支持子代理 delegate)、推理引擎、设定推演(子代理隔离执行)、推演导航(子代理隔离执行)、反向补设定、伏笔、局势图、审计、大纲生成与导出
- 跑团式剧情演变,但不过于随机:裁决不是骰子——机械层强制校验参与者存活、依据 id 存在、world_delta 与局势一致、境界对比提示;不确定性以候选分支呈现,由人定夺
- 推理不只是剧情:novel_infer 正向推理语料 + 机械扫描 5 类缺口 → novel_candidate_decide 反向建立新设定(剧情推进到一定程度自动补全世界观与人物)
- 数据全部持久化为结构化 JSON(设定卡 / 因果事件 / 伏笔 / 场景 / 设定候选 / 推理记录),不是文学性正文

目录结构

novel-workbench/
├── README.md # 本文件 ├── .dsh/skills/novel-workbench/SKILL.md # 技能说明(唯一维护的一份,随仓库版本化;DSH 会话中加载 novel-workbench 技能的内容) ├── plugin-source.json # novel-assistant v13 完整源码(构建事实源) │ # host —— 27 个 novel_ 工具(含 novel_scope)+ 面板 RPC │ # client —— 三栏工作台 UI + 项目切换器 + 助手输出悬浮窗(conversation.session.header.actions 入口按钮 + 可拖动悬浮窗,v16) └── plugin/ # 静态插件包(profile 静态装配) ├── package.json # @dsh-external/dsh-novel-workbench ├── scripts/build.js # 构建:从 ../plugin-source.json 变换生成 lib/(无 DSH checkout 依赖;作用域读 plugin/scope.json / NOVEL_WS_SCOPE) ├── scripts/build.sh # 构建入口(产物校验兜底) ├── scripts/link-deps.js # 依赖解析:为 @deepseek-ai/dsh-tools 建 junction(部署必备) ├── src/ # 生成镜像(host/client,供审阅) └── lib/ # 产物:lib/index.js(ESM host)+ lib/client.js(ModuleLoader UI)

数据存放规则(v11 定稿)

/novel-assistant/
├── .root # 存储根指针 ├── projects.json # 项目索引:{ active, projects: [{id,title,premise,genre,tone,targetLength,...}] } └── projects// # 每部小说一个项目目录(id = 标题 ASCII slug,冲突加 -n) ├── state.json # 该项目唯一事实源 ├── settings.md # 导出快照(可再生成) └── outline.md # 导出快照(可再生成)

旧布局(单一 state.json)首次启动自动迁移为项目并生成索引,原文件改名 state.json.migrated-v11 备份。

安装(profile 静态装配,v13)

novel-assistant 是静态插件包(@dsh-external/dsh-novel-workbench)。v13 起不经 super-injector 注入,走 profile 静态装配:~/.dsh/profiles/web/cordis.patch.yml 的 - insert: 行 + node_modules junction——DSH 启动时由 loader 直接装配 host,web 端按 dsh.client 声明自动把 client 半注入浏览器名册。工作区门控通用化:作用域由 plugin/scope.json 或环境变量 NOVEL_WS_SCOPE 配置(默认不门控,见「工作区门控」节)。

部署(在装有 DSH web profile 的环境中):

1. 确认装配行:~/.dsh/profiles/web/cordis.patch.yml 含:
- insert:
- id: dsh-novel-workbench
name: '@dsh-external/dsh-novel-workbench'
2. 确认 package junction:@dsh-external/dsh-novel-workbench 指向本仓库 plugin/ 目录。
junction 位置随 pnpm node_modules 布局而定:hoisted 布局在 ~/.dsh/profiles/node_modules/@dsh-external/dsh-novel-workbench,非 hoisted 在 ~/.dsh/profiles/web/node_modules/@dsh-external/dsh-novel-workbench(自测:
require.resolve('@dsh-external/dsh-novel-workbench', { paths: [''] }))。
3. 构建:node plugin/scripts/build.js(plugin-source.json → lib/;作用域读 plugin/scope.json / NOVEL_WS_SCOPE)
4. 依赖解析:node plugin/scripts/link-deps.js(在 plugin/node_modules 为 @deepseek-ai/dsh-tools 建 junction,否则静态装配 import 时报 Cannot find package,见「故障排查」)
5. 重启 DSH → Tool.listTools 应有 27 个 novel_;配置了作用域的工作区会话头部出现「推演台」入口按钮(点击弹可拖动悬浮窗)
6. novel_state view=overview 验证数据恢复;为空见下节存储根解析

⚠️ 教训(2026-08-17):对运行中宿主执行 dev_reload_package 热重载本插件曾导致 DSH 进程崩溃(重载从客户端模块表移除该包后进程挂掉,自愈/重启后恢复,数据无损)。改插件请走「构建 → 重启 DSH」;super-injector 注入/热重载保留为不推荐的旧路径,且注入器 registry 中已移除本插件条目(防双加载)。

迭代纪律:编辑 plugin-source.json(唯一事实源)→ node plugin/scripts/build.js → 重启 DSH;同步更新仓库与本技能目录内的 plugin-source.json。

存储根解析顺序(v12.3):.root 指针候选(含约定区 ~/.dsh/novel-assistant/.root,跨工作区稳定)→ 基路径项目目录探测 → 下一层子目录自动发现 → 沙箱回退根。projects.json 缺失/为空时自动扫描 projects/ 目录重建索引;novel_store {action:"set", default:""} 设默认项目(重启后按 active → default → 首个 自动载入)。

工作区门控(通用化)

- 作用域(可配置):默认不门控(所有工作区可用)。要限定到特定工作区,配置 plugin/scope.json 的 scope 数组(如 ["D:\\my-ws"],前缀匹配含子目录)或构建期设置 NOVEL_WS_SCOPE(分号分隔多目录),然后重新构建。host 侧运行期还会再读一次 NOVEL_WS_SCOPE 环境变量覆盖。建议部署方式:单独开一个工作区,在该工作区里把 scope 配置成这个目录。
- 门控点:host 工具按发起会话 cwd 门控 execute;client 推演台入口按钮(conversation.session.header.actions,「条目即组件」)按会话 cwd 门控、不命中 return null (入口隐身);面板 RPC 按 sessionId 二次校验(403)。
- 自检:novel_scope(任何工作区可调)输出 cwd / inScope / hit / gatedDirs。
- 验证矩阵:作用域内(或子目录)会话 → 推演台入口可见 + novel_ 放行;作用域外 → 无入口 + 工具拒绝(拒绝文本含作用域清单);未配置作用域 → 全部放行。

预设:小说推演 GM(novel-gm)

仓库 preset/novel-gm/ 提供配套的 agent preset:把任意 DSH 会话变成专注小说工作台的 GM(persona 内置推演纪律/数据协议/子代理使用规范,组合裁剪为基础文件/shell/skill/子代理委托/压缩,不携带编码与 workflow 工具链;novel_* 工具来自全局注册的插件,无需在预设中声明)。

安装(本地用户预设根):

mkdir -p ~/.dsh/.agent-presets/novel-gm
cp preset/novel-gm/agent.cordis.yml preset/novel-gm/preset.yml ~/.dsh/.agent-presets/novel-gm/

然后新建会话时选择「小说推演 GM」预设(组合已通过 standingKeyFor 挂载验证;dsh-agent-presets 服务也提供 copy() 一键复制)。

27 个工具

| 工具 | 作用 |
| novel_scope | 工作区门控自检:当前会话 cwd / 是否命中作用域 / 命中的工作区 / 作用域清单(任何工作区可调) |
| novel_init | 重置当前激活项目(无激活项目时自动新建;只接收标题 + 一句话核心构思) |
| novel_state | 读取项目状态(overview/projects/settings/plot/seeds/outline/full,可按 type/query 过滤) |
| novel_store | 查看/设置存储根(report=诊断;set root=绝对路径 写指针;set default=项目id 设默认项目,重启自动激活) |
| novel_project_list | 列出全部项目(id/标题/题材/更新时间/当前激活) |
| novel_project_new | 新建独立项目并切换(绝不覆盖现有项目) |
| novel_project_switch | 切换当前项目(先保存当前,再载入目标,数据完全隔离) |
| novel_project_import | 导入项目(粘贴 state.json 或本机文件路径,校验 meta 后落盘为独立项目) |
| novel_setting_upsert | 新建/更新设定卡(8 类:world/character/faction/power/location/item/timeline/other) |
| novel_setting_remove | 删除设定卡(提示残留引用) |
| novel_seed_upsert | 伏笔:埋设/更新(planted→growing→payoff→abandoned;明/暗线;短/中/长/超长回收;intent 意图) |
| novel_seed_remove | 删除伏笔 |
| novel_layout | 局势图:设定字段状态表 + 事件 world_delta 回放 + 冲突网 + 势力归属 + 回放失配警告 |
| novel_scene_start | 开场景(跑团一幕):局势、戏剧性问题、参与者、地点、约束铁律、线索钩子、赌注 |
| novel_scene_act | 行动裁决(跑团核心):GM 提出行动/目标/裁决/置信度/结果/依据/world_delta,机械校验后记录检定卡并提交事件;delegate=true 时裁决八要素由隔离子代理生成(机械校验照旧,仍“不过于随机”) |
| novel_scene_end | 收束场景:记录收束结果与未了结线索 |
| novel_infer | 推理引擎:推理语料 + 机械扫描 5 类缺口自动生成设定候选 |
| novel_setting_derive | 设定推演(子代理隔离执行):从既有设定/事件/伏笔推演隐含设定、机制边界、代价后果、隐藏冲突;结论按依据校验落库(inferences),缺口自动转设定候选——子代理全新会话,不污染主上下文 |
| novel_suggest_next | 推演导航(子代理隔离执行):基于局势/待决分支/堆积候选/开放伏笔/大纲建议下一步(开场景/解决分支/处理候选/优先伏笔/建议行动),落库 inferences |
| novel_setting_propose | 反向补设定:剧情隐含但未登记的设定 → 候选卡 |
| novel_candidate_decide | 决定设定候选:采纳=自动建卡/补全人物/新增字段;忽略 |
| novel_session | 推演会话总览:活动场景、检定记录、待决候选、推理记录、日志 |
| novel_plot_commit | 提交剧情事件节点(含 world_delta 一致性校验) |
| novel_plot_amend | 采纳/否决/修正事件(采纳候选自动否决同分支兄弟) |
| novel_outline_build | 已采纳事件编译为卷/章大纲(arcs_json) |
| novel_outline_export | 导出 设定集.md + 大纲.md(含伏笔清单、场景记录、待决候选) |
| novel_audit | 一致性审计:孤儿引用、未用设定、缺原因事件、待决候选、空章节、伏笔健康度、回放失配、未收束场景、待决设定候选 |

跑团式推演协议(不过于随机)

1. novel_layout 确认当前局势 → novel_scene_start 开场景;
2. novel_scene_act 裁决行动:GM 给出 行动→目标→裁决→置信度→结果→依据→状态变化;
3. 机械校验:参与者存活、依据引用已存在 id(设定/事件/伏笔)、world_delta 旧值与局势一致、境界对比提示——不通过即拒绝;
4. 不确定性用 branch=true 提交候选分支,用户在推演台采纳/否决(采纳自动否决兄弟分支);
5. novel_scene_end 收束,未了结线索转伏笔或下个场景。

推理与反向补设定

- 正向:novel_infer {query, domain} 返回语料,GM 给出 前提→推论→置信度→依据id 推理链;
- 反向(机械扫描 5 类缺口→候选卡):事件引用未登记名称 / 人物卡缺状态能力字段 / 势力无成员 / world_delta 改不存在的字段 / 伏笔无关联设定;
- 落实:novel_candidate_decide {id, accept} 或手动 novel_setting_upsert。
- 约定:卡上字段=基线值,world_delta=变更史,局势图=回放结果;补字段填基线值避免回放失配。

标准工作流

novel_init → novel_setting_upsert(世界观与核心人物)→ novel_scene_start/act/end 跑团推演 → 定期 novel_infer/novel_setting_propose 反向补设定 → novel_seed_upsert 埋设伏笔 → novel_outline_build + novel_outline_export;过程中定期 novel_audit。

数据模型

每项目一份 state.json(projects//state.json):meta / settings / plot.events / seeds / outline.arcs / scenes / session / candidates / inferences / log,全部为 id 指针引用(事件↔事件、事件↔设定、伏笔↔事件、候选↔事件证据)。world_delta 每项格式 目标id:字段:旧值→新值。项目索引在 projects.json。

读取与迁移协议(详见 .dsh/skills/novel-workbench/SKILL.md 2.1/2.2):
- 日常读写一律走 novel_ 工具(保证 id 分配、world_delta 校验与审计一致性);禁止直接编辑 state.json——插件运行中内存态是权威,直接改文件会被内存覆盖且绕过校验;
- 直接读文件的三种合法场景:故障诊断(数据为空时确认文件状态)、迁移/备份(拷贝文件)、外部程序分析;
- 备份 = 拷贝 projects.json + 整个 projects/ 目录;恢复 = 放回存储根 → 写 .root 指针(如需)→ novel_state 验证 → novel_audit 体检;旧布局单文件备份可用 novel_project_import 导入;
- 三语义铁律:卡字段=基线值、world_delta=变更史、局势图=回放结果;
- 不要双实例同时写同一项目的 state.json(静态插件为全局实例、多会话共享——同一时刻仍只允许一个会话写同一项目;不同项目可并行)。

故障排查

- 推演台只显示红框/标题、无内容:检查 client 源码中 h() 是否用 React.createElement.apply(null, args) 透传全部子元素。
- host.call 失败:403 = 会话不在作用域(门控拒绝);Tool.listTools 看 27 个 novel_ 是否注册;RPC 自测 curl -X POST http://127.0.0.1:3080/@dsh-external/dsh-novel-workbench/api/ping -d '{}'。
- 工具被拒("拒绝:novel_* 工具仅限工作区…"):会话 cwd 不在作用域 → novel_scope 定位,到配置了作用域的工作区开会话或按需扩作用域(见「工作区门控」节)。
- 插件变更后行为未更新:静态装配只在启动时读产物 → 重新构建 + 重启 DSH(不要对运行中宿主热重载,v13 教训)。
- 注入报 tool "novel_xxx" is already registered:旧动态版 novl-1 或注入器残留实例仍运行,cordis_stop / 清 registry 后重启。
- 页面刷新后「推演台」入口/悬浮窗不出现:静态装配下刷新即恢复;仍未恢复先确认宿主是否加载新构建。
- 数据没恢复:novel_store 看诊断;必要时 novel_store set root=绝对路径。
- 检定被拒:world_delta 失配以局势图当前值为准;依据 id 必须是设定/事件/伏笔 id;死者不可行动(除非 force 并说明依据)。
- 宿主崩溃排查:~/.dsh/super-injector/self-heal.log 与 reload-debug.log 定位触发点;崩溃后自愈/重启即恢复(数据在 novel-assistant/ 无损)。

社区

面向 DeepSeek Harness 社区开源。欢迎 fork、提 issue、贡献改进(例如:检定难度曲线、信息不对称/知识状态追踪、GM 子代理预设)。

示例

示例项目数据不随仓库分发;《燃石记》演示项目(含跑团场景 sc46/sc52、检定 e47/e49/e51/e53、18 条反向推导候选)可自行按上述工作流在本地重建。
预览分享卡片长什么样 ↓PRTSPro/novel-workbench
分享 · DeepSeek Harness Hub
PRTSPro/novel-workbench

构建设定并跑团式推演,自动补全大纲与世界观

这是你的仓库?认领条目

回到顶部