@waterwx/dsh-novel-forge 1.3.2 → 1.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/lib/client.js +239 -239
- package/lib/index.js +18 -9
- package/lib/index.js.map +1 -1
- package/lib/types/bookshelf.d.ts +1 -1
- package/lib/types/index.d.ts +1 -1
- package/package.json +2 -2
- package/src/bookshelf.ts +2 -2
- package/src/index.ts +7 -5
- package/scripts/assistant-frames.txt +0 -8
- package/scripts/diagnose-adapter.mts +0 -81
- package/scripts/diagnose-assistant.mjs +0 -58
- package/scripts/diagnose-bible.mjs +0 -72
- package/scripts/diagnose-harness.mts +0 -75
- package/scripts/novel-forge-restart.log +0 -10
- package/scripts/novel-forge-web.stderr.log +0 -2
- package/scripts/novel-forge-web.stdout.log +0 -1
- package/scripts/outline-sample.txt +0 -449
- package/scripts/probe.mjs +0 -6
- package/scripts/restart-web.ps1 +0 -88
- package/scripts/smoke.mts +0 -72
- package/scripts/upload-github.ps1 +0 -51
package/README.md
CHANGED
|
@@ -160,7 +160,7 @@ tsdown.config.ts 双面打包配置 / dual-face bundling config
|
|
|
160
160
|
- **LLM 额度消耗**:生成/审稿/润色/质检/提炼/复盘等所有 AI 操作都调用 LLM(默认 `deepseek-official / deepseek-v4-flash`)。量级参考:一章 3000-4000 字正文 ≈ 1-2 万 token(含推理);审稿约 2000-3000 token;全书质检与角色提炼更贵(数万 token)。批量操作(如一次生成多章、全书质检、复盘补齐)会连续消耗额度,建议分小批执行。
|
|
161
161
|
- **写操作守卫**:AI 助手只在作者**明确要求**时执行写操作(生成/修订/删除章节、改设定等)。你只是提问、查信息时,助手只会回答、不会擅自改文——防止"随口一问"误触发生成。
|
|
162
162
|
- **并发安全**:计划/生成/审稿落盘前会自动合并磁盘上的最新设定(道藏/角色库/剧情线/知情度),多窗口同时操作不会互相覆盖。
|
|
163
|
-
- **数据落盘**:每本书一个输出目录(默认
|
|
163
|
+
- **数据落盘**:每本书一个输出目录(默认 `~/.dsh/novels/<书名>`,可在设置页修改),正文为 Markdown 文件、项目状态为 `novel-project.json`、助手对话为 `novel-assistant.jsonl`;润色/重写应用草稿前自动生成 `.bak.md` 备份原稿。
|
|
164
164
|
- **设置持久化**:面板「设置」页的修改(输出目录/模型/审稿阈值等)写入 `~/.dsh/settings.yaml` 的 `dsh-novel-forge` 段;界面偏好(主题/字号/面板宽度)存在浏览器 localStorage。
|
|
165
165
|
- **token 优化**:生成与审稿已做上下文分片、相关事实注入与摘要合并,长篇连载下批量成本约省 25%,但单章仍受模型上下文窗口限制(超长设定会按需检索注入,而非全量塞入)。
|
|
166
166
|
|
|
@@ -313,7 +313,7 @@ Using this plugin has the following effects on your account, disk and LLM quota:
|
|
|
313
313
|
- **Concurrency safety**: plan/generate/review merge the latest on-disk settings
|
|
314
314
|
(bible/roles/plotlines/knowledge) before saving, so parallel windows never
|
|
315
315
|
clobber each other.
|
|
316
|
-
- **Data on disk**: each book owns an output directory (default
|
|
316
|
+
- **Data on disk**: each book owns an output directory (default `~/.dsh/novels/<book name>`, configurable in settings)
|
|
317
317
|
with per-chapter Markdown, `novel-project.json` project state, and
|
|
318
318
|
`novel-assistant.jsonl` assistant log; applying polish/rewrite drafts auto-backs-up
|
|
319
319
|
the original as `.bak.md`.
|
package/lib/client.js
CHANGED
|
@@ -910,272 +910,272 @@ window.__ModuleLoader__.load({
|
|
|
910
910
|
document.head.appendChild(tag);
|
|
911
911
|
}
|
|
912
912
|
var panel_module_css_default = {
|
|
913
|
-
"
|
|
914
|
-
"
|
|
915
|
-
"
|
|
916
|
-
"
|
|
917
|
-
"
|
|
918
|
-
"readerError": "zE6uZW_readerError",
|
|
919
|
-
"readerGroup": "zE6uZW_readerGroup",
|
|
920
|
-
"onlyChanges": "zE6uZW_onlyChanges",
|
|
921
|
-
"toolStepError": "zE6uZW_toolStepError",
|
|
922
|
-
"todoText": "zE6uZW_todoText",
|
|
923
|
-
"navAbout": "zE6uZW_navAbout",
|
|
924
|
-
"bookCardBlurb": "zE6uZW_bookCardBlurb",
|
|
925
|
-
"navTabIcon": "zE6uZW_navTabIcon",
|
|
926
|
-
"bookAdd": "zE6uZW_bookAdd",
|
|
913
|
+
"dashStageDone": "zE6uZW_dashStageDone",
|
|
914
|
+
"bookCreateOutline": "zE6uZW_bookCreateOutline",
|
|
915
|
+
"bookSwitchMeta": "zE6uZW_bookSwitchMeta",
|
|
916
|
+
"ideaToggle": "zE6uZW_ideaToggle",
|
|
917
|
+
"input": "zE6uZW_input",
|
|
927
918
|
"wsPage": "zE6uZW_wsPage",
|
|
928
|
-
"
|
|
929
|
-
"
|
|
930
|
-
"
|
|
931
|
-
"
|
|
932
|
-
"
|
|
933
|
-
"
|
|
934
|
-
"
|
|
919
|
+
"bookCardCoverTitle": "zE6uZW_bookCardCoverTitle",
|
|
920
|
+
"dashHeroBook": "zE6uZW_dashHeroBook",
|
|
921
|
+
"createBookTop": "zE6uZW_createBookTop",
|
|
922
|
+
"progressBar": "zE6uZW_progressBar",
|
|
923
|
+
"tlSegTodo": "zE6uZW_tlSegTodo",
|
|
924
|
+
"wsEditor": "zE6uZW_wsEditor",
|
|
925
|
+
"shelfHeader": "zE6uZW_shelfHeader",
|
|
926
|
+
"toolLive": "zE6uZW_toolLive",
|
|
927
|
+
"panelTitle": "zE6uZW_panelTitle",
|
|
928
|
+
"chapterFocusPulse": "zE6uZW_chapterFocusPulse",
|
|
929
|
+
"dashHeroTitle": "zE6uZW_dashHeroTitle",
|
|
930
|
+
"todoInfo": "zE6uZW_todoInfo",
|
|
931
|
+
"chapterPreview": "zE6uZW_chapterPreview",
|
|
932
|
+
"assistantFloatHeader": "zE6uZW_assistantFloatHeader",
|
|
933
|
+
"navAboutRow": "zE6uZW_navAboutRow",
|
|
934
|
+
"chatScroll": "zE6uZW_chatScroll",
|
|
935
|
+
"wsPreviewText": "zE6uZW_wsPreviewText",
|
|
936
|
+
"workflowDotActive": "zE6uZW_workflowDotActive",
|
|
937
|
+
"busyRow": "zE6uZW_busyRow",
|
|
935
938
|
"workflowBody": "zE6uZW_workflowBody",
|
|
936
|
-
"
|
|
939
|
+
"readerSegBtn": "zE6uZW_readerSegBtn",
|
|
940
|
+
"readerGroupCount": "zE6uZW_readerGroupCount",
|
|
941
|
+
"workflowDot": "zE6uZW_workflowDot",
|
|
942
|
+
"workflowHint": "zE6uZW_workflowHint",
|
|
943
|
+
"dropzoneActive": "zE6uZW_dropzoneActive",
|
|
944
|
+
"statRowD": "zE6uZW_statRowD",
|
|
945
|
+
"readerPara": "zE6uZW_readerPara",
|
|
946
|
+
"navActionBtn": "zE6uZW_navActionBtn",
|
|
937
947
|
"dashHeroActionBody": "zE6uZW_dashHeroActionBody",
|
|
938
|
-
"
|
|
939
|
-
"
|
|
940
|
-
"
|
|
941
|
-
"
|
|
942
|
-
"
|
|
943
|
-
"
|
|
948
|
+
"toolStepName": "zE6uZW_toolStepName",
|
|
949
|
+
"fadeIn": "zE6uZW_fadeIn",
|
|
950
|
+
"badgeRejected": "zE6uZW_badgeRejected",
|
|
951
|
+
"diffTagOld": "zE6uZW_diffTagOld",
|
|
952
|
+
"assetStatDetail": "zE6uZW_assetStatDetail",
|
|
953
|
+
"navTitleBook": "zE6uZW_navTitleBook",
|
|
954
|
+
"chatRole": "zE6uZW_chatRole",
|
|
955
|
+
"dashHeroArrow": "zE6uZW_dashHeroArrow",
|
|
956
|
+
"bookshelfLabel": "zE6uZW_bookshelfLabel",
|
|
957
|
+
"dashHeroEyebrow": "zE6uZW_dashHeroEyebrow",
|
|
958
|
+
"workflowRow": "zE6uZW_workflowRow",
|
|
959
|
+
"wsColumns": "zE6uZW_wsColumns",
|
|
960
|
+
"bookshelf": "zE6uZW_bookshelf",
|
|
961
|
+
"badgeWritten": "zE6uZW_badgeWritten",
|
|
962
|
+
"card": "zE6uZW_card",
|
|
963
|
+
"bookCardActive": "zE6uZW_bookCardActive",
|
|
964
|
+
"ideaCandidate": "zE6uZW_ideaCandidate",
|
|
965
|
+
"shelfEmptyTitle": "zE6uZW_shelfEmptyTitle",
|
|
966
|
+
"navBadgePulse": "zE6uZW_navBadgePulse",
|
|
967
|
+
"chapterFocus": "zE6uZW_chapterFocus",
|
|
968
|
+
"workflowLabel": "zE6uZW_workflowLabel",
|
|
969
|
+
"bookshelfList": "zE6uZW_bookshelfList",
|
|
970
|
+
"bigProgressBar": "zE6uZW_bigProgressBar",
|
|
971
|
+
"statCardDValue": "zE6uZW_statCardDValue",
|
|
972
|
+
"diffLegend": "zE6uZW_diffLegend",
|
|
944
973
|
"readerBody": "zE6uZW_readerBody",
|
|
974
|
+
"bookCardCoverFallback": "zE6uZW_bookCardCoverFallback",
|
|
975
|
+
"readerItem": "zE6uZW_readerItem",
|
|
976
|
+
"panelContent": "zE6uZW_panelContent",
|
|
977
|
+
"readerGroup": "zE6uZW_readerGroup",
|
|
945
978
|
"progressBarFill": "zE6uZW_progressBarFill",
|
|
946
|
-
"
|
|
979
|
+
"readerFoot": "zE6uZW_readerFoot",
|
|
980
|
+
"row": "zE6uZW_row",
|
|
947
981
|
"outlineReadonly": "zE6uZW_outlineReadonly",
|
|
948
|
-
"
|
|
949
|
-
"
|
|
950
|
-
"
|
|
951
|
-
"
|
|
952
|
-
"
|
|
953
|
-
"
|
|
954
|
-
"
|
|
955
|
-
"
|
|
956
|
-
"
|
|
957
|
-
"
|
|
958
|
-
"readerArticle": "zE6uZW_readerArticle",
|
|
959
|
-
"navTabBadge": "zE6uZW_navTabBadge",
|
|
960
|
-
"bookCardCover": "zE6uZW_bookCardCover",
|
|
961
|
-
"legendNew": "zE6uZW_legendNew",
|
|
962
|
-
"navTabLabel": "zE6uZW_navTabLabel",
|
|
963
|
-
"assistantResize": "zE6uZW_assistantResize",
|
|
964
|
-
"toolSteps": "zE6uZW_toolSteps",
|
|
965
|
-
"panel": "zE6uZW_panel",
|
|
966
|
-
"badgeGenerating": "zE6uZW_badgeGenerating",
|
|
967
|
-
"bookshelfList": "zE6uZW_bookshelfList",
|
|
968
|
-
"chatScroll": "zE6uZW_chatScroll",
|
|
969
|
-
"bookChipMeta": "zE6uZW_bookChipMeta",
|
|
970
|
-
"progressLineLive": "zE6uZW_progressLineLive",
|
|
971
|
-
"dashJourneyBar": "zE6uZW_dashJourneyBar",
|
|
982
|
+
"navTabBadgeLive": "zE6uZW_navTabBadgeLive",
|
|
983
|
+
"wsAppliedBanner": "zE6uZW_wsAppliedBanner",
|
|
984
|
+
"bookAddIcon": "zE6uZW_bookAddIcon",
|
|
985
|
+
"readerChapterMeta": "zE6uZW_readerChapterMeta",
|
|
986
|
+
"todoItem": "zE6uZW_todoItem",
|
|
987
|
+
"tab": "zE6uZW_tab",
|
|
988
|
+
"bookCreateForm": "zE6uZW_bookCreateForm",
|
|
989
|
+
"readerHeader": "zE6uZW_readerHeader",
|
|
990
|
+
"readerItemNo": "zE6uZW_readerItemNo",
|
|
991
|
+
"readerItemBadge": "zE6uZW_readerItemBadge",
|
|
972
992
|
"bookSwitchName": "zE6uZW_bookSwitchName",
|
|
973
|
-
"
|
|
974
|
-
"
|
|
975
|
-
"
|
|
976
|
-
"
|
|
977
|
-
"
|
|
978
|
-
"createBookTitle": "zE6uZW_createBookTitle",
|
|
979
|
-
"readerLoading": "zE6uZW_readerLoading",
|
|
993
|
+
"readerGroupArrow": "zE6uZW_readerGroupArrow",
|
|
994
|
+
"bigProgressBarFill": "zE6uZW_bigProgressBarFill",
|
|
995
|
+
"wsSelected": "zE6uZW_wsSelected",
|
|
996
|
+
"entry": "zE6uZW_entry",
|
|
997
|
+
"dashStageDot": "zE6uZW_dashStageDot",
|
|
980
998
|
"shelfEmptyIcon": "zE6uZW_shelfEmptyIcon",
|
|
999
|
+
"readerMain": "zE6uZW_readerMain",
|
|
1000
|
+
"navActions": "zE6uZW_navActions",
|
|
1001
|
+
"shelfFilters": "zE6uZW_shelfFilters",
|
|
1002
|
+
"cardTitle": "zE6uZW_cardTitle",
|
|
1003
|
+
"tlSegFill": "zE6uZW_tlSegFill",
|
|
981
1004
|
"dashHero": "zE6uZW_dashHero",
|
|
982
|
-
"
|
|
983
|
-
"
|
|
984
|
-
"
|
|
985
|
-
"
|
|
986
|
-
"
|
|
987
|
-
"
|
|
988
|
-
"
|
|
989
|
-
"
|
|
990
|
-
"
|
|
991
|
-
"assetStat": "zE6uZW_assetStat",
|
|
992
|
-
"coverPreview": "zE6uZW_coverPreview",
|
|
993
|
-
"dashJourneyFill": "zE6uZW_dashJourneyFill",
|
|
994
|
-
"diffTagNew": "zE6uZW_diffTagNew",
|
|
995
|
-
"ideaToggle": "zE6uZW_ideaToggle",
|
|
996
|
-
"chapter": "zE6uZW_chapter",
|
|
997
|
-
"legendOld": "zE6uZW_legendOld",
|
|
998
|
-
"readerItem": "zE6uZW_readerItem",
|
|
999
|
-
"textarea": "zE6uZW_textarea",
|
|
1000
|
-
"tab": "zE6uZW_tab",
|
|
1001
|
-
"toolStepIcon": "zE6uZW_toolStepIcon",
|
|
1002
|
-
"navAboutUpdate": "zE6uZW_navAboutUpdate",
|
|
1003
|
-
"shelfToolbar": "zE6uZW_shelfToolbar",
|
|
1004
|
-
"tlSegDone": "zE6uZW_tlSegDone",
|
|
1005
|
-
"createBookTop": "zE6uZW_createBookTop",
|
|
1006
|
-
"shelfSearch": "zE6uZW_shelfSearch",
|
|
1007
|
-
"statCardDLabel": "zE6uZW_statCardDLabel",
|
|
1008
|
-
"dashHeroSparkle": "zE6uZW_dashHeroSparkle",
|
|
1009
|
-
"diffNew": "zE6uZW_diffNew",
|
|
1010
|
-
"readerItemNo": "zE6uZW_readerItemNo",
|
|
1011
|
-
"iconButton": "zE6uZW_iconButton",
|
|
1012
|
-
"statRowD": "zE6uZW_statRowD",
|
|
1013
|
-
"reviewBox": "zE6uZW_reviewBox",
|
|
1014
|
-
"view": "zE6uZW_view",
|
|
1015
|
-
"dashJourneyStages": "zE6uZW_dashJourneyStages",
|
|
1016
|
-
"todoInfo": "zE6uZW_todoInfo",
|
|
1017
|
-
"badgeWritten": "zE6uZW_badgeWritten",
|
|
1018
|
-
"ideaCard": "zE6uZW_ideaCard",
|
|
1005
|
+
"panelNav": "zE6uZW_panelNav",
|
|
1006
|
+
"dropzone": "zE6uZW_dropzone",
|
|
1007
|
+
"volumeGroupHeader": "zE6uZW_volumeGroupHeader",
|
|
1008
|
+
"toolStep": "zE6uZW_toolStep",
|
|
1009
|
+
"wsPageHeader": "zE6uZW_wsPageHeader",
|
|
1010
|
+
"readerError": "zE6uZW_readerError",
|
|
1011
|
+
"dashFacts": "zE6uZW_dashFacts",
|
|
1012
|
+
"diffSameBody": "zE6uZW_diffSameBody",
|
|
1013
|
+
"tlSeg": "zE6uZW_tlSeg",
|
|
1019
1014
|
"button": "zE6uZW_button",
|
|
1020
|
-
"
|
|
1021
|
-
"
|
|
1022
|
-
"dashStageDone": "zE6uZW_dashStageDone",
|
|
1023
|
-
"meta": "zE6uZW_meta",
|
|
1015
|
+
"bookCardMetaRow": "zE6uZW_bookCardMetaRow",
|
|
1016
|
+
"bookAddCard": "zE6uZW_bookAddCard",
|
|
1024
1017
|
"volumeGroup": "zE6uZW_volumeGroup",
|
|
1025
|
-
"
|
|
1026
|
-
"
|
|
1027
|
-
"
|
|
1028
|
-
"shelfFilters": "zE6uZW_shelfFilters",
|
|
1029
|
-
"readerTitle": "zE6uZW_readerTitle",
|
|
1030
|
-
"bookCardName": "zE6uZW_bookCardName",
|
|
1031
|
-
"bookSwitchArrow": "zE6uZW_bookSwitchArrow",
|
|
1032
|
-
"wsAppliedBanner": "zE6uZW_wsAppliedBanner",
|
|
1018
|
+
"bookChipActive": "zE6uZW_bookChipActive",
|
|
1019
|
+
"textarea": "zE6uZW_textarea",
|
|
1020
|
+
"progressLineLive": "zE6uZW_progressLineLive",
|
|
1033
1021
|
"wsColumn": "zE6uZW_wsColumn",
|
|
1034
|
-
"chapterFocus": "zE6uZW_chapterFocus",
|
|
1035
|
-
"chapterActions": "zE6uZW_chapterActions",
|
|
1036
|
-
"diffSameBody": "zE6uZW_diffSameBody",
|
|
1037
|
-
"dropzone": "zE6uZW_dropzone",
|
|
1038
|
-
"bookCardCoverFallback": "zE6uZW_bookCardCoverFallback",
|
|
1039
|
-
"readerItemBadge": "zE6uZW_readerItemBadge",
|
|
1040
|
-
"bookCreateOutline": "zE6uZW_bookCreateOutline",
|
|
1041
|
-
"readerGroupCount": "zE6uZW_readerGroupCount",
|
|
1042
1022
|
"workflowDotDone": "zE6uZW_workflowDotDone",
|
|
1043
|
-
"
|
|
1044
|
-
"shelfGrid": "zE6uZW_shelfGrid",
|
|
1045
|
-
"progressLineError": "zE6uZW_progressLineError",
|
|
1046
|
-
"panelBody": "zE6uZW_panelBody",
|
|
1023
|
+
"tlBar": "zE6uZW_tlBar",
|
|
1047
1024
|
"bookCardProgressFill": "zE6uZW_bookCardProgressFill",
|
|
1048
|
-
"readerSeg": "zE6uZW_readerSeg",
|
|
1049
|
-
"dashJourney": "zE6uZW_dashJourney",
|
|
1050
|
-
"bookAddCard": "zE6uZW_bookAddCard",
|
|
1051
|
-
"readerItemActive": "zE6uZW_readerItemActive",
|
|
1052
|
-
"diffSame": "zE6uZW_diffSame",
|
|
1053
|
-
"dropzoneIcon": "zE6uZW_dropzoneIcon",
|
|
1054
1025
|
"buttonPrimary": "zE6uZW_buttonPrimary",
|
|
1055
|
-
"
|
|
1056
|
-
"
|
|
1057
|
-
"
|
|
1058
|
-
"
|
|
1026
|
+
"readerArticle": "zE6uZW_readerArticle",
|
|
1027
|
+
"panelNavCollapsed": "zE6uZW_panelNavCollapsed",
|
|
1028
|
+
"iconButton": "zE6uZW_iconButton",
|
|
1029
|
+
"bookChipRemove": "zE6uZW_bookChipRemove",
|
|
1030
|
+
"navTitleLogo": "zE6uZW_navTitleLogo",
|
|
1031
|
+
"pulse": "zE6uZW_pulse",
|
|
1032
|
+
"createBookView": "zE6uZW_createBookView",
|
|
1059
1033
|
"badgeError": "zE6uZW_badgeError",
|
|
1060
|
-
"
|
|
1061
|
-
"bookChipActive": "zE6uZW_bookChipActive",
|
|
1062
|
-
"dashHeroAction": "zE6uZW_dashHeroAction",
|
|
1063
|
-
"workflowRow": "zE6uZW_workflowRow",
|
|
1064
|
-
"buttonDanger": "zE6uZW_buttonDanger",
|
|
1065
|
-
"navAboutRow": "zE6uZW_navAboutRow",
|
|
1066
|
-
"diffAdd": "zE6uZW_diffAdd",
|
|
1067
|
-
"readerGroupArrow": "zE6uZW_readerGroupArrow",
|
|
1068
|
-
"cardTitle": "zE6uZW_cardTitle",
|
|
1034
|
+
"liveText": "zE6uZW_liveText",
|
|
1069
1035
|
"chapterBeats": "zE6uZW_chapterBeats",
|
|
1070
|
-
"
|
|
1071
|
-
"
|
|
1072
|
-
"
|
|
1073
|
-
"
|
|
1074
|
-
"
|
|
1075
|
-
"
|
|
1076
|
-
"bookSwitch": "zE6uZW_bookSwitch",
|
|
1077
|
-
"diffOld": "zE6uZW_diffOld",
|
|
1078
|
-
"createBookCard": "zE6uZW_createBookCard",
|
|
1079
|
-
"readerHeader": "zE6uZW_readerHeader",
|
|
1080
|
-
"wsColumns": "zE6uZW_wsColumns",
|
|
1081
|
-
"readerView": "zE6uZW_readerView",
|
|
1082
|
-
"navTabBadgeDanger": "zE6uZW_navTabBadgeDanger",
|
|
1083
|
-
"toolStepDetail": "zE6uZW_toolStepDetail",
|
|
1084
|
-
"dashStageCurrent": "zE6uZW_dashStageCurrent",
|
|
1085
|
-
"assistantStatus": "zE6uZW_assistantStatus",
|
|
1086
|
-
"buttonSmall": "zE6uZW_buttonSmall",
|
|
1087
|
-
"todoItem": "zE6uZW_todoItem",
|
|
1088
|
-
"shelfEmptyTitle": "zE6uZW_shelfEmptyTitle",
|
|
1089
|
-
"createBookIcon": "zE6uZW_createBookIcon",
|
|
1090
|
-
"dropzoneActive": "zE6uZW_dropzoneActive",
|
|
1091
|
-
"createBookView": "zE6uZW_createBookView",
|
|
1092
|
-
"chapterPreview": "zE6uZW_chapterPreview",
|
|
1036
|
+
"coverPreview": "zE6uZW_coverPreview",
|
|
1037
|
+
"statCardDIcon": "zE6uZW_statCardDIcon",
|
|
1038
|
+
"diffText": "zE6uZW_diffText",
|
|
1039
|
+
"panelBody": "zE6uZW_panelBody",
|
|
1040
|
+
"badgeGenerating": "zE6uZW_badgeGenerating",
|
|
1041
|
+
"diffSame": "zE6uZW_diffSame",
|
|
1093
1042
|
"assetGrid": "zE6uZW_assetGrid",
|
|
1094
|
-
"
|
|
1095
|
-
"
|
|
1096
|
-
"
|
|
1097
|
-
"
|
|
1098
|
-
"
|
|
1099
|
-
"
|
|
1100
|
-
"
|
|
1101
|
-
"diffDel": "zE6uZW_diffDel",
|
|
1043
|
+
"chapterActions": "zE6uZW_chapterActions",
|
|
1044
|
+
"meta": "zE6uZW_meta",
|
|
1045
|
+
"bookCardCover": "zE6uZW_bookCardCover",
|
|
1046
|
+
"readerSegActive": "zE6uZW_readerSegActive",
|
|
1047
|
+
"diffList": "zE6uZW_diffList",
|
|
1048
|
+
"wsSelectedText": "zE6uZW_wsSelectedText",
|
|
1049
|
+
"bookSwitch": "zE6uZW_bookSwitch",
|
|
1102
1050
|
"assetStatValue": "zE6uZW_assetStatValue",
|
|
1103
|
-
"
|
|
1051
|
+
"diffDel": "zE6uZW_diffDel",
|
|
1052
|
+
"panel": "zE6uZW_panel",
|
|
1053
|
+
"shelfGrid": "zE6uZW_shelfGrid",
|
|
1054
|
+
"spaceBetween": "zE6uZW_spaceBetween",
|
|
1055
|
+
"field": "zE6uZW_field",
|
|
1056
|
+
"coverPlaceholder": "zE6uZW_coverPlaceholder",
|
|
1057
|
+
"toolStepActive": "zE6uZW_toolStepActive",
|
|
1058
|
+
"legendOld": "zE6uZW_legendOld",
|
|
1059
|
+
"dashStage": "zE6uZW_dashStage",
|
|
1060
|
+
"dashHeroSparkle": "zE6uZW_dashHeroSparkle",
|
|
1061
|
+
"fileList": "zE6uZW_fileList",
|
|
1062
|
+
"readerChapterTitle": "zE6uZW_readerChapterTitle",
|
|
1063
|
+
"statCardDDetail": "zE6uZW_statCardDDetail",
|
|
1064
|
+
"tlSegDone": "zE6uZW_tlSegDone",
|
|
1104
1065
|
"dashFact": "zE6uZW_dashFact",
|
|
1105
|
-
"
|
|
1106
|
-
"
|
|
1107
|
-
"
|
|
1108
|
-
"
|
|
1109
|
-
"
|
|
1110
|
-
"
|
|
1066
|
+
"chapterList": "zE6uZW_chapterList",
|
|
1067
|
+
"toolStepStatus": "zE6uZW_toolStepStatus",
|
|
1068
|
+
"createBookIcon": "zE6uZW_createBookIcon",
|
|
1069
|
+
"progressLineError": "zE6uZW_progressLineError",
|
|
1070
|
+
"assistantFloat": "zE6uZW_assistantFloat",
|
|
1071
|
+
"bookCardProgressBar": "zE6uZW_bookCardProgressBar",
|
|
1072
|
+
"ideaCard": "zE6uZW_ideaCard",
|
|
1073
|
+
"progressLineDone": "zE6uZW_progressLineDone",
|
|
1074
|
+
"chapterNum": "zE6uZW_chapterNum",
|
|
1075
|
+
"wsPreview": "zE6uZW_wsPreview",
|
|
1076
|
+
"navAboutUpdate": "zE6uZW_navAboutUpdate",
|
|
1077
|
+
"entryLabel": "zE6uZW_entryLabel",
|
|
1078
|
+
"readerSeg": "zE6uZW_readerSeg",
|
|
1079
|
+
"dashJourneyBar": "zE6uZW_dashJourneyBar",
|
|
1080
|
+
"genreDesc": "zE6uZW_genreDesc",
|
|
1081
|
+
"readerText": "zE6uZW_readerText",
|
|
1082
|
+
"volumeGroupToggle": "zE6uZW_volumeGroupToggle",
|
|
1083
|
+
"onlyChanges": "zE6uZW_onlyChanges",
|
|
1111
1084
|
"assistantStatusBusy": "zE6uZW_assistantStatusBusy",
|
|
1112
|
-
"
|
|
1113
|
-
"
|
|
1114
|
-
"
|
|
1115
|
-
"
|
|
1116
|
-
"
|
|
1117
|
-
"
|
|
1118
|
-
"
|
|
1085
|
+
"entryIcon": "zE6uZW_entryIcon",
|
|
1086
|
+
"readerTitle": "zE6uZW_readerTitle",
|
|
1087
|
+
"navTabBadgeDone": "zE6uZW_navTabBadgeDone",
|
|
1088
|
+
"dashStageCurrent": "zE6uZW_dashStageCurrent",
|
|
1089
|
+
"statCardDLabel": "zE6uZW_statCardDLabel",
|
|
1090
|
+
"navGroup": "zE6uZW_navGroup",
|
|
1091
|
+
"bookCardName": "zE6uZW_bookCardName",
|
|
1092
|
+
"todoDanger": "zE6uZW_todoDanger",
|
|
1093
|
+
"readerItemTitle": "zE6uZW_readerItemTitle",
|
|
1094
|
+
"navTabBadge": "zE6uZW_navTabBadge",
|
|
1095
|
+
"diffChange": "zE6uZW_diffChange",
|
|
1096
|
+
"createBookCard": "zE6uZW_createBookCard",
|
|
1097
|
+
"legendNew": "zE6uZW_legendNew",
|
|
1098
|
+
"todoWarning": "zE6uZW_todoWarning",
|
|
1099
|
+
"navAbout": "zE6uZW_navAbout",
|
|
1100
|
+
"tlSegCurrent": "zE6uZW_tlSegCurrent",
|
|
1101
|
+
"navTabIcon": "zE6uZW_navTabIcon",
|
|
1102
|
+
"dashHeroAction": "zE6uZW_dashHeroAction",
|
|
1103
|
+
"tabBar": "zE6uZW_tabBar",
|
|
1104
|
+
"bookCreateCard": "zE6uZW_bookCreateCard",
|
|
1105
|
+
"readerLoading": "zE6uZW_readerLoading",
|
|
1106
|
+
"navTab": "zE6uZW_navTab",
|
|
1107
|
+
"navGroupLabel": "zE6uZW_navGroupLabel",
|
|
1119
1108
|
"chapterTitle": "zE6uZW_chapterTitle",
|
|
1120
|
-
"
|
|
1121
|
-
"
|
|
1122
|
-
"
|
|
1109
|
+
"diffOld": "zE6uZW_diffOld",
|
|
1110
|
+
"toolStepIcon": "zE6uZW_toolStepIcon",
|
|
1111
|
+
"toolStepDetail": "zE6uZW_toolStepDetail",
|
|
1112
|
+
"badgePending": "zE6uZW_badgePending",
|
|
1113
|
+
"assistantFloatBody": "zE6uZW_assistantFloatBody",
|
|
1114
|
+
"shelfView": "zE6uZW_shelfView",
|
|
1115
|
+
"bookSwitchCover": "zE6uZW_bookSwitchCover",
|
|
1123
1116
|
"shelfTitleRow": "zE6uZW_shelfTitleRow",
|
|
1117
|
+
"shelfToolbar": "zE6uZW_shelfToolbar",
|
|
1118
|
+
"dashJourney": "zE6uZW_dashJourney",
|
|
1119
|
+
"chapterMain": "zE6uZW_chapterMain",
|
|
1120
|
+
"statCardDDown": "zE6uZW_statCardDDown",
|
|
1121
|
+
"dashJourneyStages": "zE6uZW_dashJourneyStages",
|
|
1124
1122
|
"progress": "zE6uZW_progress",
|
|
1125
|
-
"
|
|
1123
|
+
"bookChipName": "zE6uZW_bookChipName",
|
|
1124
|
+
"chatBubbleAssistant": "zE6uZW_chatBubbleAssistant",
|
|
1125
|
+
"toolStepError": "zE6uZW_toolStepError",
|
|
1126
|
+
"tlSegTrack": "zE6uZW_tlSegTrack",
|
|
1127
|
+
"navTitleName": "zE6uZW_navTitleName",
|
|
1128
|
+
"assistantResize": "zE6uZW_assistantResize",
|
|
1129
|
+
"badgeDone": "zE6uZW_badgeDone",
|
|
1130
|
+
"statCardD": "zE6uZW_statCardD",
|
|
1131
|
+
"todoText": "zE6uZW_todoText",
|
|
1132
|
+
"reviewBox": "zE6uZW_reviewBox",
|
|
1133
|
+
"dashGrid": "zE6uZW_dashGrid",
|
|
1134
|
+
"bookChip": "zE6uZW_bookChip",
|
|
1135
|
+
"bookCardActions": "zE6uZW_bookCardActions",
|
|
1136
|
+
"assetStat": "zE6uZW_assetStat",
|
|
1137
|
+
"shelfEmpty": "zE6uZW_shelfEmpty",
|
|
1138
|
+
"statCardDUnit": "zE6uZW_statCardDUnit",
|
|
1139
|
+
"statCardDIconRed": "zE6uZW_statCardDIconRed",
|
|
1140
|
+
"readerSidebar": "zE6uZW_readerSidebar",
|
|
1141
|
+
"navTitle": "zE6uZW_navTitle",
|
|
1142
|
+
"badge": "zE6uZW_badge",
|
|
1143
|
+
"bookCardTitleRow": "zE6uZW_bookCardTitleRow",
|
|
1144
|
+
"tlSegLabel": "zE6uZW_tlSegLabel",
|
|
1145
|
+
"diffColumn": "zE6uZW_diffColumn",
|
|
1146
|
+
"dropzoneIcon": "zE6uZW_dropzoneIcon",
|
|
1147
|
+
"assetStatLabel": "zE6uZW_assetStatLabel",
|
|
1148
|
+
"progressLine": "zE6uZW_progressLine",
|
|
1149
|
+
"chapter": "zE6uZW_chapter",
|
|
1150
|
+
"bookChipMeta": "zE6uZW_bookChipMeta",
|
|
1151
|
+
"buttonSmall": "zE6uZW_buttonSmall",
|
|
1152
|
+
"navTabBadgeWarn": "zE6uZW_navTabBadgeWarn",
|
|
1153
|
+
"view": "zE6uZW_view",
|
|
1154
|
+
"bookCard": "zE6uZW_bookCard",
|
|
1155
|
+
"workflowList": "zE6uZW_workflowList",
|
|
1126
1156
|
"navSpacer": "zE6uZW_navSpacer",
|
|
1127
|
-
"navGroupSep": "zE6uZW_navGroupSep",
|
|
1128
|
-
"panelContent": "zE6uZW_panelContent",
|
|
1129
|
-
"statCardDDetail": "zE6uZW_statCardDDetail",
|
|
1130
|
-
"dashStage": "zE6uZW_dashStage",
|
|
1131
|
-
"chatRole": "zE6uZW_chatRole",
|
|
1132
|
-
"card": "zE6uZW_card",
|
|
1133
|
-
"dashHeroBook": "zE6uZW_dashHeroBook",
|
|
1134
|
-
"assistantFloatHeader": "zE6uZW_assistantFloatHeader",
|
|
1135
1157
|
"fieldLabel": "zE6uZW_fieldLabel",
|
|
1136
|
-
"
|
|
1137
|
-
"navActionBtn": "zE6uZW_navActionBtn",
|
|
1138
|
-
"navTab": "zE6uZW_navTab",
|
|
1139
|
-
"bookshelfLabel": "zE6uZW_bookshelfLabel",
|
|
1140
|
-
"diffLegend": "zE6uZW_diffLegend",
|
|
1141
|
-
"statCardDIconRed": "zE6uZW_statCardDIconRed",
|
|
1142
|
-
"tabBar": "zE6uZW_tabBar",
|
|
1143
|
-
"readerItemTitle": "zE6uZW_readerItemTitle",
|
|
1144
|
-
"volumeGroupToggle": "zE6uZW_volumeGroupToggle",
|
|
1145
|
-
"todoDanger": "zE6uZW_todoDanger",
|
|
1146
|
-
"dashHeroEyebrow": "zE6uZW_dashHeroEyebrow",
|
|
1147
|
-
"readerSegActive": "zE6uZW_readerSegActive",
|
|
1158
|
+
"readerView": "zE6uZW_readerView",
|
|
1148
1159
|
"readerGroupTitle": "zE6uZW_readerGroupTitle",
|
|
1149
|
-
"
|
|
1150
|
-
"
|
|
1160
|
+
"createBookTitle": "zE6uZW_createBookTitle",
|
|
1161
|
+
"buttonDanger": "zE6uZW_buttonDanger",
|
|
1162
|
+
"chatBubbleUser": "zE6uZW_chatBubbleUser",
|
|
1163
|
+
"diffNew": "zE6uZW_diffNew",
|
|
1164
|
+
"readerItemActive": "zE6uZW_readerItemActive",
|
|
1165
|
+
"dashHeroActionTitle": "zE6uZW_dashHeroActionTitle",
|
|
1166
|
+
"navTabBadgeDanger": "zE6uZW_navTabBadgeDanger",
|
|
1167
|
+
"bookAdd": "zE6uZW_bookAdd",
|
|
1168
|
+
"diffAdd": "zE6uZW_diffAdd",
|
|
1169
|
+
"bookSwitchArrow": "zE6uZW_bookSwitchArrow",
|
|
1170
|
+
"bookCardBlurb": "zE6uZW_bookCardBlurb",
|
|
1171
|
+
"navGroupSep": "zE6uZW_navGroupSep",
|
|
1172
|
+
"toolSteps": "zE6uZW_toolSteps",
|
|
1173
|
+
"dashJourneyFill": "zE6uZW_dashJourneyFill",
|
|
1174
|
+
"assistantStatus": "zE6uZW_assistantStatus",
|
|
1175
|
+
"shelfSearch": "zE6uZW_shelfSearch",
|
|
1151
1176
|
"bookCardBody": "zE6uZW_bookCardBody",
|
|
1152
|
-
"
|
|
1153
|
-
"
|
|
1154
|
-
"entryIcon": "zE6uZW_entryIcon",
|
|
1155
|
-
"tlSeg": "zE6uZW_tlSeg",
|
|
1156
|
-
"toolLive": "zE6uZW_toolLive",
|
|
1157
|
-
"coverPlaceholder": "zE6uZW_coverPlaceholder",
|
|
1158
|
-
"navTabBadgeWarn": "zE6uZW_navTabBadgeWarn",
|
|
1159
|
-
"bookCreateForm": "zE6uZW_bookCreateForm",
|
|
1160
|
-
"bookCreateCard": "zE6uZW_bookCreateCard",
|
|
1161
|
-
"assetStatLabel": "zE6uZW_assetStatLabel",
|
|
1162
|
-
"wsSelected": "zE6uZW_wsSelected",
|
|
1163
|
-
"assistantFloat": "zE6uZW_assistantFloat",
|
|
1164
|
-
"bookshelf": "zE6uZW_bookshelf",
|
|
1165
|
-
"dashHeroArrow": "zE6uZW_dashHeroArrow",
|
|
1166
|
-
"navTabBadgeDone": "zE6uZW_navTabBadgeDone",
|
|
1167
|
-
"wsEditor": "zE6uZW_wsEditor",
|
|
1168
|
-
"chapterFocusPulse": "zE6uZW_chapterFocusPulse",
|
|
1169
|
-
"dashGrid": "zE6uZW_dashGrid",
|
|
1170
|
-
"readerPara": "zE6uZW_readerPara",
|
|
1171
|
-
"pulse": "zE6uZW_pulse",
|
|
1172
|
-
"bigProgressBarFill": "zE6uZW_bigProgressBarFill",
|
|
1173
|
-
"fadeIn": "zE6uZW_fadeIn",
|
|
1174
|
-
"badgeRejected": "zE6uZW_badgeRejected",
|
|
1175
|
-
"tlSegCurrent": "zE6uZW_tlSegCurrent",
|
|
1176
|
-
"statCardD": "zE6uZW_statCardD",
|
|
1177
|
-
"wsPreviewText": "zE6uZW_wsPreviewText",
|
|
1178
|
-
"bookSwitchMeta": "zE6uZW_bookSwitchMeta"
|
|
1177
|
+
"navTabLabel": "zE6uZW_navTabLabel",
|
|
1178
|
+
"diffTagNew": "zE6uZW_diffTagNew"
|
|
1179
1179
|
};
|
|
1180
1180
|
//#endregion
|
|
1181
1181
|
//#region src/client/panel/AssistantTab.tsx
|
|
@@ -5604,7 +5604,7 @@ window.__ModuleLoader__.load({
|
|
|
5604
5604
|
"high",
|
|
5605
5605
|
"max"
|
|
5606
5606
|
];
|
|
5607
|
-
const PLUGIN_VERSION = "1.3.
|
|
5607
|
+
const PLUGIN_VERSION = "1.3.3";
|
|
5608
5608
|
/** GitHub 仓库地址(关于区块点击跳转)。 */
|
|
5609
5609
|
const REPO_URL = "https://github.com/watersxya/dsh-novel-forge";
|
|
5610
5610
|
/** Whether any chapter is being generated right now. */
|
package/lib/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
import { homedir } from "node:os";
|
|
2
|
+
import { join } from "node:path";
|
|
1
3
|
import { installSettingsSection, settingsNamespace } from "@deepseek-ai/dsh-settings";
|
|
2
4
|
import z from "schemastery";
|
|
3
5
|
import { exec } from "node:child_process";
|
|
4
6
|
import { appendFileSync, copyFileSync, existsSync, mkdirSync, readFileSync, readdirSync, rmSync, writeFileSync } from "node:fs";
|
|
5
|
-
import { join } from "node:path";
|
|
6
7
|
import { BlockAssembler, ReasoningEffortId, createAssistantMessage, createUserMessage } from "@deepseek-ai/dsh-llm";
|
|
7
|
-
import { homedir } from "node:os";
|
|
8
8
|
import { randomBytes } from "node:crypto";
|
|
9
9
|
import { strFromU8, unzipSync } from "fflate";
|
|
10
10
|
//#region src/assets.ts
|
|
@@ -3525,9 +3525,10 @@ function removeBook(id) {
|
|
|
3525
3525
|
function activeBookOutputDir() {
|
|
3526
3526
|
return activeBook(loadBookshelf())?.outputDir;
|
|
3527
3527
|
}
|
|
3528
|
-
/**
|
|
3528
|
+
/** 默认输出目录推断:~/.dsh/novels/书名。 */
|
|
3529
3529
|
function defaultOutputDirFor(bookName) {
|
|
3530
|
-
|
|
3530
|
+
const clean = bookName.replace(/[\\/:*?"<>|]/g, "").trim().slice(0, 40) || "未命名小说";
|
|
3531
|
+
return join(homedir(), ".dsh", "novels", clean);
|
|
3531
3532
|
}
|
|
3532
3533
|
//#endregion
|
|
3533
3534
|
//#region src/run.ts
|
|
@@ -6730,6 +6731,14 @@ function makeRoutes(deps) {
|
|
|
6730
6731
|
}
|
|
6731
6732
|
//#endregion
|
|
6732
6733
|
//#region src/index.ts
|
|
6734
|
+
/**
|
|
6735
|
+
* dsh-novel-forge — host half. Mounts the AI novel-forge workbench: docx
|
|
6736
|
+
* outline import, LLM chapter planning, chapter-by-chapter generation
|
|
6737
|
+
* (3000-4000 chars each), Markdown output into your chosen folder, and the
|
|
6738
|
+
* /api/dsh-novel-forge route family. The browser half (./client) renders the
|
|
6739
|
+
* workbench panel. Everything rides official NPM SDK packages — no dsh source
|
|
6740
|
+
* changes.
|
|
6741
|
+
*/
|
|
6733
6742
|
/** Stable cordis plugin name. */
|
|
6734
6743
|
const name = "novel-forge";
|
|
6735
6744
|
/** Services required before the novel-forge surfaces can mount. */
|
|
@@ -6747,8 +6756,8 @@ const NOVEL_SETTINGS_NAMESPACE = settingsNamespace("dsh-novel-forge");
|
|
|
6747
6756
|
const Config = z.object({
|
|
6748
6757
|
announceToAgent: z.boolean().default(true),
|
|
6749
6758
|
enabled: z.boolean().default(true),
|
|
6750
|
-
outlinePath: z.string().default("
|
|
6751
|
-
outputDir: z.string().default("
|
|
6759
|
+
outlinePath: z.string().default(""),
|
|
6760
|
+
outputDir: z.string().default(join(homedir(), ".dsh", "novels")),
|
|
6752
6761
|
provider: z.string().default("deepseek-official"),
|
|
6753
6762
|
model: z.string().default("deepseek-v4-flash"),
|
|
6754
6763
|
reasoningEffort: z.union([
|
|
@@ -6769,8 +6778,8 @@ const Config = z.object({
|
|
|
6769
6778
|
});
|
|
6770
6779
|
/** Schema defaults, re-read for hand-built test contexts. */
|
|
6771
6780
|
const DEFAULT_ANNOUNCE = true;
|
|
6772
|
-
const DEFAULT_OUTLINE_PATH = "
|
|
6773
|
-
const DEFAULT_OUTPUT_DIR = "
|
|
6781
|
+
const DEFAULT_OUTLINE_PATH = "";
|
|
6782
|
+
const DEFAULT_OUTPUT_DIR = join(homedir(), ".dsh", "novels");
|
|
6774
6783
|
const DEFAULT_PROVIDER = "deepseek-official";
|
|
6775
6784
|
const DEFAULT_MODEL = "deepseek-v4-flash";
|
|
6776
6785
|
const DEFAULT_REASONING_EFFORT = "off";
|
|
@@ -6783,7 +6792,7 @@ const DEFAULT_AUTO_REVIEW_AFTER_REVISE = true;
|
|
|
6783
6792
|
/** Order of the announcement section within the tool-guidance band. */
|
|
6784
6793
|
const SECTION_ORDER = 160;
|
|
6785
6794
|
/** Model-facing announcement: plugin presence, capabilities, and limits. */
|
|
6786
|
-
const NOVEL_GUIDANCE = "本机已安装 dsh-novel-forge 插件(AI 编译小说工作台):侧边栏「小说工坊」入口。能力:读取 docx
|
|
6795
|
+
const NOVEL_GUIDANCE = "本机已安装 dsh-novel-forge 插件(AI 编译小说工作台):侧边栏「小说工坊」入口。能力:读取 docx 大纲或粘贴大纲文本;用 LLM 提炼道藏(人设/世界观/金手指规则/写作红线,即设定圣经);生成卷计划与章节计划;逐章调用 LLM 生成 3000-4000 字正文并保存为 Markdown(默认输出到用户主目录 ~/.dsh/novels);每章自动生成摘要(叙事记忆)、自动 AI 审稿(人设/设定/红线/文笔/爽点/逻辑),支持按审稿意见重写、去 AI 味润色、暗线(伏笔)管理、批量连写与全本导出(txt/md)。限制:生成消耗 LLM API 额度;输出目录与模型可在插件设置中修改;章节正文质量取决于大纲完整度。用户提到「小说 / 大纲 / 写小说 / 章节 / 审稿 / 润色」时即指本插件,请据此协作。";
|
|
6787
6796
|
/** Resolve a config-like value into the full runtime config. */
|
|
6788
6797
|
function resolveConfig(value) {
|
|
6789
6798
|
return {
|