@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 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
- - **数据落盘**:每本书一个输出目录(默认 `D:\ryan work\harness\novels\<书名>`),正文为 Markdown 文件、项目状态为 `novel-project.json`、助手对话为 `novel-assistant.jsonl`;润色/重写应用草稿前自动生成 `.bak.md` 备份原稿。
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 `D:\ryan work\harness\novels\<book name>`)
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
- "statCardDDown": "zE6uZW_statCardDDown",
914
- "diffChange": "zE6uZW_diffChange",
915
- "readerChapterMeta": "zE6uZW_readerChapterMeta",
916
- "dashHeroActionTitle": "zE6uZW_dashHeroActionTitle",
917
- "progressLineDone": "zE6uZW_progressLineDone",
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
- "bookCardTitleRow": "zE6uZW_bookCardTitleRow",
929
- "todoWarning": "zE6uZW_todoWarning",
930
- "bookCardActions": "zE6uZW_bookCardActions",
931
- "navGroupLabel": "zE6uZW_navGroupLabel",
932
- "tlSegFill": "zE6uZW_tlSegFill",
933
- "statCardDUnit": "zE6uZW_statCardDUnit",
934
- "workflowLabel": "zE6uZW_workflowLabel",
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
- "bookCard": "zE6uZW_bookCard",
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
- "chapterNum": "zE6uZW_chapterNum",
939
- "chatBubbleAssistant": "zE6uZW_chatBubbleAssistant",
940
- "readerChapterTitle": "zE6uZW_readerChapterTitle",
941
- "navActions": "zE6uZW_navActions",
942
- "liveText": "zE6uZW_liveText",
943
- "bookCardProgressBar": "zE6uZW_bookCardProgressBar",
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
- "chapterList": "zE6uZW_chapterList",
979
+ "readerFoot": "zE6uZW_readerFoot",
980
+ "row": "zE6uZW_row",
947
981
  "outlineReadonly": "zE6uZW_outlineReadonly",
948
- "shelfView": "zE6uZW_shelfView",
949
- "navBadgePulse": "zE6uZW_navBadgePulse",
950
- "diffList": "zE6uZW_diffList",
951
- "bookCardMetaRow": "zE6uZW_bookCardMetaRow",
952
- "navTitleBook": "zE6uZW_navTitleBook",
953
- "navTitleName": "zE6uZW_navTitleName",
954
- "bookChip": "zE6uZW_bookChip",
955
- "toolStepStatus": "zE6uZW_toolStepStatus",
956
- "navTitle": "zE6uZW_navTitle",
957
- "dashFacts": "zE6uZW_dashFacts",
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
- "bookChipName": "zE6uZW_bookChipName",
974
- "badgeDone": "zE6uZW_badgeDone",
975
- "spaceBetween": "zE6uZW_spaceBetween",
976
- "bookSwitchCover": "zE6uZW_bookSwitchCover",
977
- "statCardDIcon": "zE6uZW_statCardDIcon",
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
- "workflowDot": "zE6uZW_workflowDot",
983
- "busyRow": "zE6uZW_busyRow",
984
- "navTitleLogo": "zE6uZW_navTitleLogo",
985
- "wsPreview": "zE6uZW_wsPreview",
986
- "workflowDotActive": "zE6uZW_workflowDotActive",
987
- "entry": "zE6uZW_entry",
988
- "readerSegBtn": "zE6uZW_readerSegBtn",
989
- "chapterMain": "zE6uZW_chapterMain",
990
- "bookChipRemove": "zE6uZW_bookChipRemove",
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
- "row": "zE6uZW_row",
1021
- "dashHeroTitle": "zE6uZW_dashHeroTitle",
1022
- "dashStageDone": "zE6uZW_dashStageDone",
1023
- "meta": "zE6uZW_meta",
1015
+ "bookCardMetaRow": "zE6uZW_bookCardMetaRow",
1016
+ "bookAddCard": "zE6uZW_bookAddCard",
1024
1017
  "volumeGroup": "zE6uZW_volumeGroup",
1025
- "readerSidebar": "zE6uZW_readerSidebar",
1026
- "diffText": "zE6uZW_diffText",
1027
- "bookCardCoverTitle": "zE6uZW_bookCardCoverTitle",
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
- "field": "zE6uZW_field",
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
- "fileList": "zE6uZW_fileList",
1056
- "input": "zE6uZW_input",
1057
- "entryLabel": "zE6uZW_entryLabel",
1058
- "diffColumn": "zE6uZW_diffColumn",
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
- "ideaCandidate": "zE6uZW_ideaCandidate",
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
- "bigProgressBar": "zE6uZW_bigProgressBar",
1071
- "assetStatDetail": "zE6uZW_assetStatDetail",
1072
- "tlSegTrack": "zE6uZW_tlSegTrack",
1073
- "readerMain": "zE6uZW_readerMain",
1074
- "navTabBadgeLive": "zE6uZW_navTabBadgeLive",
1075
- "toolStepName": "zE6uZW_toolStepName",
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
- "readerText": "zE6uZW_readerText",
1095
- "assistantFloatBody": "zE6uZW_assistantFloatBody",
1096
- "badgePending": "zE6uZW_badgePending",
1097
- "chatBubbleUser": "zE6uZW_chatBubbleUser",
1098
- "progressLine": "zE6uZW_progressLine",
1099
- "navGroup": "zE6uZW_navGroup",
1100
- "badge": "zE6uZW_badge",
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
- "volumeGroupHeader": "zE6uZW_volumeGroupHeader",
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
- "toolStep": "zE6uZW_toolStep",
1106
- "dashStageDot": "zE6uZW_dashStageDot",
1107
- "wsPageHeader": "zE6uZW_wsPageHeader",
1108
- "panelNavCollapsed": "zE6uZW_panelNavCollapsed",
1109
- "wsSelectedText": "zE6uZW_wsSelectedText",
1110
- "shelfHeader": "zE6uZW_shelfHeader",
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
- "tlSegLabel": "zE6uZW_tlSegLabel",
1113
- "bookAddIcon": "zE6uZW_bookAddIcon",
1114
- "panelTitle": "zE6uZW_panelTitle",
1115
- "statCardDValue": "zE6uZW_statCardDValue",
1116
- "tlSegTodo": "zE6uZW_tlSegTodo",
1117
- "toolStepActive": "zE6uZW_toolStepActive",
1118
- "workflowList": "zE6uZW_workflowList",
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
- "progressBar": "zE6uZW_progressBar",
1121
- "genreDesc": "zE6uZW_genreDesc",
1122
- "diffTagOld": "zE6uZW_diffTagOld",
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
- "panelNav": "zE6uZW_panelNav",
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
- "bookCardActive": "zE6uZW_bookCardActive",
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
- "tlBar": "zE6uZW_tlBar",
1150
- "shelfEmpty": "zE6uZW_shelfEmpty",
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
- "workflowHint": "zE6uZW_workflowHint",
1153
- "readerFoot": "zE6uZW_readerFoot",
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.2";
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
- return join("D:\\ryan work\\harness\\novels", bookName.replace(/[\\/:*?"<>|]/g, "").trim().slice(0, 40) || "未命名小说");
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("D:\\ryan work\\harness\\novels\\归墟玉主\\《归墟玉主》全书大纲_重新排版版.docx"),
6751
- outputDir: z.string().default("D:\\ryan work\\harness\\novels\\归墟玉主"),
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 = "D:\\ryan work\\harness\\novels\\归墟玉主\\《归墟玉主》全书大纲_重新排版版.docx";
6773
- const DEFAULT_OUTPUT_DIR = "D:\\ryan work\\harness\\novels\\归墟玉主";
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 大纲(默认 D:\\ryan work\\harness\\novels\\归墟玉主 大纲)或粘贴大纲文本;用 LLM 提炼道藏(人设/世界观/金手指规则/写作红线,即设定圣经);生成卷计划与章节计划;逐章调用 LLM 生成 3000-4000 字正文并保存为 Markdown(默认输出到 D:\\ryan work\\harness\\novels\\归墟玉主);每章自动生成摘要(叙事记忆)、自动 AI 审稿(人设/设定/红线/文笔/爽点/逻辑),支持按审稿意见重写、去 AI 味润色、暗线(伏笔)管理、批量连写与全本导出(txt/md)。限制:生成消耗 LLM API 额度;输出目录与模型可在插件设置中修改;章节正文质量取决于大纲完整度。用户提到「小说 / 大纲 / 写小说 / 章节 / 审稿 / 润色 / 归墟玉主」时即指本插件,请据此协作。";
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 {