dsh-cuigengji-plugin 0.0.0-stage → 0.4.2
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/LICENSE +21 -0
- package/README.md +93 -2
- package/cordis.patch.yml +3 -0
- package/docs/CHANGELOG.md +164 -0
- package/docs/agent-installation.md +95 -0
- package/docs/architecture.md +108 -0
- package/docs/desktop-migration-20260930.md +26 -0
- package/docs/development.md +82 -0
- package/docs/getting-started.md +123 -0
- package/docs/import-export.md +39 -0
- package/docs/layout-progress.md +31 -0
- package/docs/market-listing.md +54 -0
- package/docs/npm-publishing.md +66 -0
- package/docs/package-name-migration.md +66 -0
- package/docs/planning-board.md +63 -0
- package/docs/presets.md +24 -0
- package/docs/release-process.md +98 -0
- package/docs/screenshots/01-manuscript.png +0 -0
- package/docs/screenshots/02-planning.png +0 -0
- package/docs/screenshots/03-settings.png +0 -0
- package/docs/tavern-compatibility-audit-20261001.md +109 -0
- package/docs/tavern-import.md +28 -0
- package/docs/test-report.md +144 -0
- package/docs/upgrade.md +60 -0
- package/docs/usage-review.md +13 -0
- package/lib/client.js +6699 -0
- package/package.json +114 -4
- package/runtime/adapters/dsh/planning-schema.js +27 -0
- package/runtime/adapters/dsh/prompt.js +33 -0
- package/runtime/adapters/dsh/rename-installation.js +127 -0
- package/runtime/adapters/dsh/rpc.js +96 -0
- package/runtime/adapters/dsh/skills.js +34 -0
- package/runtime/adapters/mcp/actions.js +10 -0
- package/runtime/adapters/mcp/client.js +172 -0
- package/runtime/adapters/mcp/server.js +37 -0
- package/runtime/application/backup/workspace.js +117 -0
- package/runtime/application/bindings/session.js +73 -0
- package/runtime/application/maintenance/upgrade.js +196 -0
- package/runtime/application/novels/lifecycle.js +29 -0
- package/runtime/application/queries/context.js +32 -0
- package/runtime/application/queries/handoff-text.js +21 -0
- package/runtime/application/queries/handoff.js +49 -0
- package/runtime/application/store.js +639 -0
- package/runtime/application/transfer/copy.js +138 -0
- package/runtime/application/transfer/model.js +94 -0
- package/runtime/application/transfer/packages.js +167 -0
- package/runtime/application/transfer/recognize.js +129 -0
- package/runtime/application/transfer/service.js +221 -0
- package/runtime/assistant/prompt.js +1 -0
- package/runtime/assistant/session.js +1 -0
- package/runtime/assistant/skills.js +1 -0
- package/runtime/contracts/actions.js +48 -0
- package/runtime/contracts/novels.js +0 -0
- package/runtime/contracts/planning.js +20 -0
- package/runtime/contracts/transfer.js +0 -0
- package/runtime/core/actions.js +1 -0
- package/runtime/core/context.js +1 -0
- package/runtime/core/handoff-text.js +1 -0
- package/runtime/core/handoff.js +1 -0
- package/runtime/core/import-legacy.js +1 -0
- package/runtime/core/import-tavern.js +1 -0
- package/runtime/core/planning/index.js +1 -0
- package/runtime/core/planning/model.js +1 -0
- package/runtime/core/preset.js +1 -0
- package/runtime/core/store.js +5 -0
- package/runtime/data/workspace.js +1 -0
- package/runtime/domain/chapters/metadata.js +9 -0
- package/runtime/domain/chapters/order.js +43 -0
- package/runtime/domain/manuscript.js +6 -0
- package/runtime/domain/memory/groups.js +83 -0
- package/runtime/domain/planning/index.js +212 -0
- package/runtime/domain/planning/model.js +87 -0
- package/runtime/domain/planning/operations.js +47 -0
- package/runtime/domain/preset/index.js +111 -0
- package/runtime/index.js +100 -0
- package/runtime/infrastructure/migrations/legacy.js +140 -0
- package/runtime/infrastructure/migrations/package-identity.js +37 -0
- package/runtime/infrastructure/migrations/tavern.js +98 -0
- package/runtime/infrastructure/persistence/atomic-store.js +121 -0
- package/runtime/infrastructure/persistence/file-transaction.js +223 -0
- package/runtime/infrastructure/persistence/project-directories.js +44 -0
- package/runtime/infrastructure/persistence/project-layout.js +231 -0
- package/runtime/infrastructure/persistence/project-store.js +614 -0
- package/runtime/infrastructure/persistence/upgrade-backup.js +141 -0
- package/runtime/mcp/actions.js +1 -0
- package/runtime/mcp/client.js +1 -0
- package/runtime/mcp/server.js +1 -0
- package/runtime/transport/rpc.js +1 -0
- package/skills/cuigengji-maintenance/SKILL.md +41 -0
- package/skills/cuigengji-memory/SKILL.md +92 -0
- package/skills/cuigengji-plan/SKILL.md +134 -0
- package/skills/cuigengji-project/SKILL.md +62 -0
- package/skills/cuigengji-revise/SKILL.md +36 -0
- package/skills/cuigengji-write/SKILL.md +49 -0
- package/src/adapters/dsh/planning-schema.js +24 -0
- package/src/adapters/dsh/prompt.js +36 -0
- package/src/adapters/dsh/rename-installation.ts +121 -0
- package/src/adapters/dsh/rpc.js +96 -0
- package/src/adapters/dsh/skills.js +24 -0
- package/src/adapters/mcp/actions.js +8 -0
- package/src/adapters/mcp/client.js +172 -0
- package/src/adapters/mcp/server.js +40 -0
- package/src/application/backup/workspace.js +60 -0
- package/src/application/bindings/session.js +72 -0
- package/src/application/maintenance/upgrade.ts +153 -0
- package/src/application/novels/lifecycle.ts +28 -0
- package/src/application/queries/context.js +22 -0
- package/src/application/queries/handoff-text.js +25 -0
- package/src/application/queries/handoff.js +40 -0
- package/src/application/store.js +505 -0
- package/src/application/transfer/copy.ts +94 -0
- package/src/application/transfer/model.ts +60 -0
- package/src/application/transfer/packages.ts +121 -0
- package/src/application/transfer/recognize.ts +103 -0
- package/src/application/transfer/service.ts +163 -0
- package/src/assistant/prompt.js +2 -0
- package/src/assistant/session.js +2 -0
- package/src/assistant/skills.js +2 -0
- package/src/client/assets/avatar.png +0 -0
- package/src/client/assets/haoye.png +0 -0
- package/src/client/assets/images.d.ts +4 -0
- package/src/client/dialog.tsx +46 -0
- package/src/client/features/chapters/DirectoryRow.tsx +18 -0
- package/src/client/features/chapters/clipboard.ts +27 -0
- package/src/client/features/chapters/format.ts +6 -0
- package/src/client/features/chapters/history.ts +11 -0
- package/src/client/features/chapters/index.jsx +145 -0
- package/src/client/features/chapters/selection.ts +15 -0
- package/src/client/features/chapters/sync.ts +165 -0
- package/src/client/features/chapters/useChapterReorder.ts +159 -0
- package/src/client/features/chapters/useChapterSync.ts +39 -0
- package/src/client/features/chapters/useManuscriptTextarea.ts +25 -0
- package/src/client/features/context/index.jsx +22 -0
- package/src/client/features/manage/index.tsx +47 -0
- package/src/client/features/memory/RelationCanvas.tsx +62 -0
- package/src/client/features/memory/index.jsx +81 -0
- package/src/client/features/planning/Canvas.tsx +84 -0
- package/src/client/features/planning/CanvasDraft.tsx +44 -0
- package/src/client/features/planning/CanvasMenu.tsx +9 -0
- package/src/client/features/planning/DecorationInlineEditor.tsx +30 -0
- package/src/client/features/planning/Decorations.tsx +35 -0
- package/src/client/features/planning/Pages.tsx +13 -0
- package/src/client/features/planning/SceneCard.tsx +14 -0
- package/src/client/features/planning/data.js +16 -0
- package/src/client/features/planning/index.jsx +166 -0
- package/src/client/features/planning/layout.js +1 -0
- package/src/client/features/planning/layout.ts +30 -0
- package/src/client/features/preset/index.tsx +76 -0
- package/src/client/features/transfer/ScopePicker.tsx +45 -0
- package/src/client/features/transfer/file.ts +19 -0
- package/src/client/features/transfer/index.tsx +125 -0
- package/src/client/features/transfer/style.ts +100 -0
- package/src/client/features/welcome/index.tsx +42 -0
- package/src/client/features/welcome/style.ts +62 -0
- package/src/client/features/work-data/index.tsx +2 -0
- package/src/client/index.tsx +134 -0
- package/src/client/launcher.tsx +78 -0
- package/src/client/locale.js +17 -0
- package/src/client/planning/data.js +1 -0
- package/src/client/planning/layout.js +1 -0
- package/src/client/shared/CanvasInspector.tsx +12 -0
- package/src/client/shared/CanvasSelectionTools.tsx +19 -0
- package/src/client/shared/InlineTitle.tsx +29 -0
- package/src/client/shared/WorkbenchHeader.tsx +20 -0
- package/src/client/shared/batch-management.tsx +42 -0
- package/src/client/shared/batch-style.ts +41 -0
- package/src/client/shared/creation.tsx +34 -0
- package/src/client/shared/detail-page.tsx +61 -0
- package/src/client/shared/drafts.js +17 -0
- package/src/client/shared/evidence.jsx +11 -0
- package/src/client/shared/graph-geometry.ts +18 -0
- package/src/client/shared/graph-style.ts +143 -0
- package/src/client/shared/graph.tsx +156 -0
- package/src/client/shared/groups.tsx +34 -0
- package/src/client/shared/icons.tsx +19 -0
- package/src/client/shared/library-events.ts +18 -0
- package/src/client/shared/management-page.tsx +50 -0
- package/src/client/shared/management-style.ts +138 -0
- package/src/client/shared/navigation-style.ts +74 -0
- package/src/client/shared/preferences.tsx +104 -0
- package/src/client/shared/refresh.tsx +12 -0
- package/src/client/shared/select-style.ts +25 -0
- package/src/client/shared/state.js +95 -0
- package/src/client/shared/ui.jsx +19 -0
- package/src/client/shared/workspace.tsx +18 -0
- package/src/client/style.ts +276 -0
- package/src/client/visual.ts +207 -0
- package/src/contracts/actions.js +22 -0
- package/src/contracts/novels.ts +8 -0
- package/src/contracts/planning.ts +64 -0
- package/src/contracts/transfer.ts +66 -0
- package/src/core/actions.js +2 -0
- package/src/core/context.js +2 -0
- package/src/core/handoff-text.js +2 -0
- package/src/core/handoff.js +2 -0
- package/src/core/import-legacy.js +2 -0
- package/src/core/import-tavern.js +2 -0
- package/src/core/planning/index.js +2 -0
- package/src/core/planning/model.js +2 -0
- package/src/core/preset.js +2 -0
- package/src/core/store.js +3 -0
- package/src/data/workspace.js +2 -0
- package/src/domain/chapters/metadata.ts +6 -0
- package/src/domain/chapters/order.ts +55 -0
- package/src/domain/manuscript.ts +4 -0
- package/src/domain/memory/groups.ts +70 -0
- package/src/domain/planning/index.ts +121 -0
- package/src/domain/planning/model.ts +61 -0
- package/src/domain/planning/operations.ts +48 -0
- package/src/domain/preset/index.js +89 -0
- package/src/index.js +95 -0
- package/src/infrastructure/migrations/legacy.js +96 -0
- package/src/infrastructure/migrations/package-identity.ts +36 -0
- package/src/infrastructure/migrations/tavern.js +78 -0
- package/src/infrastructure/persistence/atomic-store.ts +98 -0
- package/src/infrastructure/persistence/file-transaction.ts +199 -0
- package/src/infrastructure/persistence/project-directories.ts +47 -0
- package/src/infrastructure/persistence/project-layout.ts +224 -0
- package/src/infrastructure/persistence/project-store.ts +515 -0
- package/src/infrastructure/persistence/upgrade-backup.ts +95 -0
- package/src/mcp/actions.js +2 -0
- package/src/mcp/client.js +2 -0
- package/src/mcp/server.js +2 -0
- package/src/transport/rpc.js +2 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 mistnest
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,94 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 催更姬
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**给大肥鱼一个小说工作台,陪你把故事写下去。**
|
|
4
|
+
|
|
5
|
+
催更姬(`dsh-cuigengji-plugin`)是 [DeepSeek Harness(DSH)](https://github.com/deepseek-ai/deepseek-harness) 的小说写作插件。你可以在聊天旁边写正文、整理人物和世界设定、画出情节规划,再和 DSH 里的 AI 一起讨论、续写和修改。
|
|
6
|
+
|
|
7
|
+
想看它怎样用?[B 站演示:一个插件,让大肥鱼成为你的小说写作助手](https://www.bilibili.com/video/BV1e5HE6wErd/)。
|
|
8
|
+
|
|
9
|
+
开始使用:[桌面版安装](docs/getting-started.md) · [让 Agent 安装或更新](docs/agent-installation.md) · [下载成品包](https://github.com/mistnest/dsh-cuigengji-plugin/releases/latest)。
|
|
10
|
+
|
|
11
|
+
它想解决的是长篇创作里的一个常见问题:**AI 能写出一段像样的文字,却未必知道你整本书想怎么写。** 人物为什么沉默、哪条伏笔还不能揭开、下一章要走向哪里,这些往往都在正文之外。
|
|
12
|
+
|
|
13
|
+
## 正文之外,也有故事
|
|
14
|
+
|
|
15
|
+
一部小说可以比作一座冰山。正文是读者看见的部分,水面之下还有人物动机、世界规则和作者对后续情节的安排。
|
|
16
|
+
|
|
17
|
+
催更姬把这些创作资料放在同一本作品里,并给 AI 提供查阅和维护它们的工具。写到某个人物时,可以查他的设定;讨论下一步时,可以查看规划;续写时,可以回到相关正文。你和 AI 面对的是同一份作品资料,讨论也能留下来,供下一次继续。
|
|
18
|
+
|
|
19
|
+
我们的设计思路很简单:
|
|
20
|
+
|
|
21
|
+
- **正文是基础。** 已经写下的故事,是前后连贯的依据。
|
|
22
|
+
- **规划是可以一起讨论的路线。** 用节点、连线和批注整理后续情节,保留尚未决定的走向。
|
|
23
|
+
- **设定是随时可查的案头资料。** 角色卡、世界书、分组和关系图帮助理解人物与世界。
|
|
24
|
+
- **故事由作者做主。** AI 是写作助手,你可以直接修改正文、设定和规划,也可以调整写作要求。
|
|
25
|
+
|
|
26
|
+
这些信息按需要查阅,不会每次把整本书和全部资料塞进对话。目标是减少长篇写作中的人物变味、伏笔断掉和情节跑偏,让大肥鱼更贴近你的故事与想法。
|
|
27
|
+
|
|
28
|
+
## 你可以用它做什么
|
|
29
|
+
|
|
30
|
+
### 接着写正文
|
|
31
|
+
|
|
32
|
+
按卷和章节整理作品,目录里直接看每章字数,不用时收起。打开章节就能编辑,修改自动保存;粘贴进来的文字可以一键排版,也能复制到 Word、WPS 或发布网站。需要回看时,可以查看和恢复历史版本。
|
|
33
|
+
|
|
34
|
+

|
|
35
|
+
|
|
36
|
+
### 一起推敲下一章
|
|
37
|
+
|
|
38
|
+
每个规划节点都有标题、摘要和自由正文。拖动卡片安排位置,拖动连接点串起情节;连线可以取消和删除。还没想好的问题留在文字批注里,新支线可以单独开一页。作者和 AI 都能维护这张图,逐步把讨论变成清楚的推进方向。
|
|
39
|
+
|
|
40
|
+

|
|
41
|
+
|
|
42
|
+
### 整理人物与世界
|
|
43
|
+
|
|
44
|
+
角色卡和世界书支持分组、搜索与关系图。人物之间是什么关系,某个地点有哪些规则,都可以随时查看、补充和修改。已有酒馆角色卡或世界书,可以导入后继续整理。
|
|
45
|
+
|
|
46
|
+

|
|
47
|
+
|
|
48
|
+
以上为正式工作台的虚构演示作品,不包含真实小说或聊天记录。
|
|
49
|
+
|
|
50
|
+
### 让写作要求跟着作品走
|
|
51
|
+
|
|
52
|
+
把文风、视角和其他写作要求放进预设,启用后提供给绑定这本作品的 AI 会话。支持导入酒馆提示词预设,重点保留提示词内容;具体导入范围见[角色卡与世界书说明](docs/tavern-import.md)和[预设说明](docs/presets.md)。
|
|
53
|
+
|
|
54
|
+
### 把作品带走
|
|
55
|
+
|
|
56
|
+
正文、版本历史、设定、规划和预设都存放在独立的小说工作数据目录里,可以导入、导出和备份。升级插件或更换源码目录,不需要把小说混在代码里。
|
|
57
|
+
|
|
58
|
+
## 开始使用
|
|
59
|
+
|
|
60
|
+
当前主要适配 DSH Windows 桌面版,已验证的宿主版本是 **0.2.0-rc.2**。普通用户无需另装 Git、Node.js 或编译源码。
|
|
61
|
+
|
|
62
|
+
推荐把[安装与更新指南](docs/agent-installation.md)交给 Agent;也可以按[桌面安装步骤](docs/getting-started.md),在 DSH“添加插件”中安装[成品包](https://github.com/mistnest/dsh-cuigengji-plugin/releases/latest)。更新时自动备份、迁移并校验已有作品,详见[更新与数据迁移](docs/upgrade.md)。
|
|
63
|
+
|
|
64
|
+
安装后,从 DSH 左侧栏的 **催更姬** 进入。创建或选择一本作品,再在绑定这本作品的会话里讨论写作;空白会话也能打开工作台。
|
|
65
|
+
|
|
66
|
+
开发者可通过[源码预览](docs/getting-started.md#开发者源码预览)试用临时演示作品。
|
|
67
|
+
|
|
68
|
+
## 你的小说与你的代码分开
|
|
69
|
+
|
|
70
|
+
这个公开仓库只提供插件源码、使用文档和测试用的合成样例,**不附带作者的小说、私人设定、聊天记录或工作数据备份**。
|
|
71
|
+
|
|
72
|
+
自己的作品请通过工作台管理,实际保存位置可在“导入 / 导出”中查看。可以选择作品、章节、设定分组、规划页或预设,也能备份整个工作库,详见[导入与导出](docs/import-export.md);DSH 的聊天记录、附件与账号配置由 DSH 管理,需要另行备份。
|
|
73
|
+
|
|
74
|
+
## 一位随时可以讨论的写作搭档
|
|
75
|
+
|
|
76
|
+
就像给自己配了几位随叫随到的编辑:一起琢磨人物,讨论情节,推敲下一章怎么走。正文、设定和规划,就是共同翻阅的案头资料。这是创作体验的比喻,插件本身不内置多个独立编辑 Agent。
|
|
77
|
+
|
|
78
|
+
AI 的理解和写作能力仍取决于你在 DSH 中选择的模型以及作品资料的质量。催更姬提供共同创作的工作台,让讨论有依据、结果能留下来;最终方向和采用哪些内容,由你决定。
|
|
79
|
+
|
|
80
|
+
**故事由你做主,大肥鱼陪你写下去。**
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
- 交流群:**1026457465**
|
|
85
|
+
- [支持催更姬开发](https://ifdian.net/a/cuigengji):欢迎合作与投喂,支持会用于模型调用和持续开发。
|
|
86
|
+
- [安装与开始使用](docs/getting-started.md)
|
|
87
|
+
- [交给 Agent 安装(Windows)](docs/agent-installation.md)
|
|
88
|
+
- [更新与数据迁移](docs/upgrade.md)
|
|
89
|
+
- [开发、测试与发布](docs/development.md)
|
|
90
|
+
- [模块划分与数据存储](docs/architecture.md)
|
|
91
|
+
- [更新记录](docs/CHANGELOG.md)
|
|
92
|
+
- [反馈问题或建议](https://github.com/mistnest/dsh-cuigengji-plugin/issues)
|
|
93
|
+
|
|
94
|
+
源码采用 [MIT 许可证](LICENSE)。小说内容及自行导入的资料属于其各自作者,不受本仓库的源码许可证约束。
|
package/cordis.patch.yml
ADDED
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
# 更新记录
|
|
2
|
+
|
|
3
|
+
## 0.4.2 统一名称与作品回收站
|
|
4
|
+
|
|
5
|
+
- GitHub 仓库、npm 包和市场显示名统一为 `dsh-cuigengji-plugin`,界面仍显示“催更姬”;增加搜索关键词,安装文档优先面向 Windows 桌面用户。
|
|
6
|
+
- 旧 `dsh-cuigengji` 安装由名称迁移工具转接启用项和自定义配置,保留数据根、内部 ID、工具名、草稿及历史;原配置先备份,去重避免两份插件同时加载,新版验收后才移除旧依赖。
|
|
7
|
+
- 首页每本作品右侧直接进入删除确认,删除后整本作品进入回收站;支持恢复与永久删除,保留正文、设定、规划、历史和引用。AI 正在使用作品时阻止回收,回收作品不参与正常读取和写作。
|
|
8
|
+
- 首页移除底部功能宣传文字,将作品回收站入口放在右下方;导入导出选择与备份兼容作品回收状态。
|
|
9
|
+
- 固定源码、同一份安装包、npm/GitHub Release/市场的维护分工,补充安装与升级 Agent 指南,保留无 Git 的成品包入口。
|
|
10
|
+
|
|
11
|
+
## 0.4.1 GitHub 地址直接安装
|
|
12
|
+
|
|
13
|
+
- 兼容 DSH 官方“添加插件”的 GitHub 仓库地址入口,仓库提供完整编译文件,安装时无需执行源码构建或批准构建脚本。
|
|
14
|
+
- 源码仍集中在 `src/`,生成文件集中在 `runtime/` 与 `lib/`;GitHub 默认折叠生成文件差异。
|
|
15
|
+
- 发布改用显式 `pack:release`,新增产物一致性检查与 GitHub CI,避免提交源码后遗漏编译文件。
|
|
16
|
+
- 补充“包名或地址”和 npm“安装源”的区别,保留成品包安装和原有自动备份、迁移与校验。
|
|
17
|
+
- 修复写作预设自己保存后误报“有更新”的提示;真正的并发更新仍会提醒,并保留当前未保存草稿。
|
|
18
|
+
|
|
19
|
+
## 0.4.0 安全更新与可维护工作库
|
|
20
|
+
|
|
21
|
+
- 更新插件时由 DSH 原生插件管理安装预构建包,用户无需 Git、Node.js 或源码构建;新增 Windows 安装包、校验文件和面向 Agent 的安装维护 Skill。
|
|
22
|
+
- 插件加载阶段自动创建升级前原始快照,恢复挂起事务,迁移 v1/v2/v3 存储到可读文件布局,并完整校验正文、历史、回收站、设定、关系、规划页面、预设、绑定与请求记录。
|
|
23
|
+
- 新增不要求绑定小说的 `cuigengji_maintenance` 工具,负责更新后查询实际加载版本、数据根、迁移阶段、作品计数和完整性校验结果;失败时锁住普通小说操作,避免生成空库或丢失数据。
|
|
24
|
+
- 规划与设定批量入口统一称为“多选”,保留既有蓝色画布、分组筛选、直接连线、断线、分页推演和正文按需读取体验。
|
|
25
|
+
- 正文目录支持拖拽排序、直接删除到回收站和恢复,章节标题原位修改;修复自动保存时的光标跳动、中文输入合并和目录底部空白。
|
|
26
|
+
- 规划支持画布原位新建与编辑、详情侧栏和更清晰的缩略卡片;Skill 用情节单元、并行动线、局部推演页、框和便签辅助人机对齐,不再把规划当章节目录。
|
|
27
|
+
- 新增按作品、正文、设定、规划页、预设或完整工作库导入导出;统一文件识别、范围、关联收集、冲突预览、备份与原子写入,兼容旧备份与酒馆资料。
|
|
28
|
+
- 数据按书名建目录,章节、设定与规划页使用可读名称加短 ID;改名、重名、非法字符、自存文件避让和中断恢复均保留完整内容与内部引用。
|
|
29
|
+
- 重排欢迎页、作品管理、预设、批量操作、设置和关于页面;常用首页与刷新常驻,作者交流和支持信息有独立关于入口。
|
|
30
|
+
- 公开源码继续不包含私人作品与真实工作数据;迁移备份放在数据根旁的隐藏目录,不进入 Git 仓库。
|
|
31
|
+
|
|
32
|
+
## 0.3.13 画布优先
|
|
33
|
+
|
|
34
|
+
- 规划与设定统一为一条轻工具栏、蓝白卡片和角落视图控制;新建分组直接可见,帮助与次级功能收纳。
|
|
35
|
+
- 用世界坐标与本机视口替代有限滚动区域,支持正负坐标、鼠标位置缩放和按页面保留视野;封住浏览器聚焦卡片时的隐式滚动。
|
|
36
|
+
- 单击选择、双击详情,空白框选与多卡移动;右键短按显示对象菜单,右键拖动平移。连线可断开,拖到空白可新建并连接。
|
|
37
|
+
- 讨论框可包围选择并带动内部卡片,支持只移动框、拖角调整尺寸和完整内容页;旧框保留原行为,删除框保留内容。
|
|
38
|
+
- 布局批量保存、版本冲突检查、相同请求重试和本次画布布局撤销/重做;设定新增原子移动、创建连线、复制、删除与断线工具。
|
|
39
|
+
- 更新规划与设定 Skill,保持正文与设定按需读取;新增隔离画布演示和失败/响应丢失复现场景。
|
|
40
|
+
|
|
41
|
+
## 0.3.12 公开源码与作品数据分离
|
|
42
|
+
|
|
43
|
+
- 将此前验证的正文、规划、设定、预设与桌面适配同步到公开源码仓库,不携带私人作品或其提交历史。
|
|
44
|
+
- README 改为面向作者的项目介绍;安装、数据管理和维护说明分别整理。
|
|
45
|
+
- 增加 MIT 源码许可证、项目链接和防误提交规则;去除依赖作者机器目录的安装默认值。
|
|
46
|
+
|
|
47
|
+
## 0.3.11 画布直接滚轮缩放
|
|
48
|
+
|
|
49
|
+
- 规划和设定画布直接使用滚轮放大/缩小,无需 Ctrl;保留拖动空白平移和视图菜单。
|
|
50
|
+
- 批注等可滚动文字区仍优先滚动内容,菜单与输入区域不被画布缩放拦截。
|
|
51
|
+
- 更新操作说明,并使用两类实际画布验证滚轮缩放及缩放后的拖拽、连线、布局保存。
|
|
52
|
+
|
|
53
|
+
## 0.3.10 预设内容优先导入
|
|
54
|
+
|
|
55
|
+
- 支持完整 Chat Completion、嵌套 PromptManager 与独立系统提示词 JSON,统一处理平铺/多方案排列。
|
|
56
|
+
- 忽略酒馆触发、插入位置和消息角色,保留提示词原文;含宏文本不再被自动停用。原始启停和排列保留,缺失内置槽位引用会报告。
|
|
57
|
+
- 显示有效条目与字符数、空内容提示和宏说明;旧版预设不自动改变启停状态。
|
|
58
|
+
- 官方默认预设前端实测由 0 变为 78 字符,新增 test:presets 覆盖三类上传、保存、恢复与原始文件下载。
|
|
59
|
+
|
|
60
|
+
## 0.3.9 目录关闭与宿主蓝色主题
|
|
61
|
+
|
|
62
|
+
- 目录抽屉关闭按钮使用独立顶部栏和 44×44 点击区域,长目录滚动不遮挡关闭入口。
|
|
63
|
+
- 界面强调色从绿色成功状态色改为继承 DSH 主题蓝色,统一按钮、筛选、选中与焦点样式;独立预览回退为蓝白配色。
|
|
64
|
+
- 新增 test:directory,验证关闭区域四角、中央、滚动、Esc、桌面收纳与深浅主题。
|
|
65
|
+
|
|
66
|
+
## 0.3.8 写作预设自动生效
|
|
67
|
+
|
|
68
|
+
- 当前绑定作品已启用的写作预设直接跟随开场提示词,作为作者写作要求;正文、规划与设定仍按需读取。
|
|
69
|
+
- 提示词不含预设版本号、时间戳或原始导入文件;重复组装只保留一份,切换作品或停用时替换/移除。
|
|
70
|
+
- 同步预设界面、导入提示与 Agent 写作/修订指南。
|
|
71
|
+
|
|
72
|
+
## 0.3.7 统一正文与多页讨论画布
|
|
73
|
+
|
|
74
|
+
- 正文合并阅读和编辑模式,保留自动保存、排版、复制、历史与冲突处理;长正文保存及远端更新保持滚动位置。
|
|
75
|
+
- 规划新增独立页面、用途摘要和批量跨页移动;续接自动继承起点页面,禁止跨页连线。旧规划归入“主线规划”,读取旧备份不改写数据。
|
|
76
|
+
- 画布右键可创建情节、文字批注和背景框;支持底色、字体、字号、拖动、缩放尺寸及键盘替代入口。背景框不阻挡内部节点操作。
|
|
77
|
+
- 页面和批注接入版本检查、原子事务、撤销与工作数据导入导出;批注冲突保留草稿并支持人工合并。
|
|
78
|
+
- 更新 Agent 规划 Skill 与工具说明,新增通过实际工具验证的页面/批注示例,不增加动态上下文注入。
|
|
79
|
+
|
|
80
|
+
## 0.3.6 画布直接操作
|
|
81
|
+
|
|
82
|
+
- 规划与设定共用 TypeScript 画布交互:整卡/标题拖动,输入/输出圆点拖线,实时预览、有效落点高亮、点击或键盘连接;移除强制连线模式和设定连线时的必填表单。
|
|
83
|
+
- Esc、空白落点和指针取消均不提交;点击线后可删除,设定关系说明仍可在线上展示与展开。
|
|
84
|
+
- 空白处拖动平移、Ctrl + 滚轮缩放,拖线/拖卡到边缘自动平移;缩放与滚动后的坐标仍准确,拖动不会误开详情。
|
|
85
|
+
- 松手自动保存布局;保存后等待索引读回再接受下一次拖拽,防止旧版本连写。协作冲突保留本地位置供重试或还原,不覆盖 Agent 正文修改。
|
|
86
|
+
- 设定节点新增可选 position 坐标,支持严格校验、CAS、清除坐标和导入/导出;旧数据继续使用自动排布。
|
|
87
|
+
- 新增 test:graph,覆盖两类图的实际浏览器拖拽、连线、取消、键盘、平移缩放、重载、失败重试/还原和协作冲突。
|
|
88
|
+
|
|
89
|
+
## 0.3.5 常驻入口与下拉选择样式
|
|
90
|
+
|
|
91
|
+
- 入口从有消息后才显示的会话标题操作区,迁到左侧栏设置上方;书本图标与文字适配宿主主题,折叠时保留可访问名称。
|
|
92
|
+
- 空白会话直接打开右侧小说工作台;全局页面可返回当前会话,无会话时选择工作区并使用宿主空白会话流程,不发送模型消息。
|
|
93
|
+
- 统一作品、分组、筛选、字号和编辑表单的下拉面板:圆角、间距、选中标记、长名称、滚动和深浅主题;保留原生键盘与表单语义,旧浏览器回退为原生选择器。
|
|
94
|
+
- 新增 `test:controls`,覆盖真实下拉面板交互和入口注册组件的无消息、无会话、错误重试与焦点返回。
|
|
95
|
+
|
|
96
|
+
## 0.3.4 Agent 工具协作指南
|
|
97
|
+
|
|
98
|
+
- 更新接手、规划、设定、写作和修订五个 Skill,明确讨论与保存边界、按需取材、冲突合并与实际结果回报。
|
|
99
|
+
- 规划指导复用原节点、续接分支、事务插入中间情节、取消连线、管理分组与引用;设定支持提前世界观构建、人物知情、关系和来源维护。
|
|
100
|
+
- 增加七个实际调用示例,从 Skill 文件直接提取,在隔离作品中通过注册宿主工具和真实 MCP 验证,覆盖版本冲突、重试去重、原子操作与正文关联。
|
|
101
|
+
- 保留静态系统提示词和任务 Skill 内共享指南的注册方式,不增加自动上下文注入或重复加载要求。
|
|
102
|
+
|
|
103
|
+
## 0.3.3 独立详情页与正文自适应宽度
|
|
104
|
+
|
|
105
|
+
- 规划、设定详情统一为完整页面,移除随面板宽度自动展开的双栏规则。总览隐藏时不可见、不可聚焦,返回恢复筛选、列表位置、画布缩放与滚动位置。
|
|
106
|
+
- 返回与编辑入口固定在详情顶部;关联条目支持逐级返回,沿用原有草稿缓存和版本冲突检查。
|
|
107
|
+
- 正文阅读与编辑去掉 36em 最大宽度,随面板扩展,两侧只保留正常内边距。
|
|
108
|
+
- 增加 `test:layout`:覆盖 360–1600 px 七种宽度的详情隔离、固定操作栏、返回定位、关联草稿和正文宽度增长。
|
|
109
|
+
|
|
110
|
+
## 0.3.2 官方 Windows 桌面安装版适配
|
|
111
|
+
|
|
112
|
+
- 基线升级为官方安装版 DSH 0.2.0-rc.2,开发依赖、宿主兼容声明同步更新。
|
|
113
|
+
- 修复 Electron Node 下 MCP 子进程误开桌面、导致工具超时;显式传递 Node 模式,保留运行命令覆盖与会话隔离。
|
|
114
|
+
- 启动脚本切换官方安装路径;新增桌面插件安装脚本,使用内置 pnpm 并校验关键安装文件哈希。
|
|
115
|
+
- 小说数据独立迁入 `novel-data`;配置、消息、附件、桌面偏好和插件状态保留,旧目录归档。详见桌面迁移记录。
|
|
116
|
+
- 官方桌面运行时 72 项测试通过,真实桌面 RPC 与迁移后作品正文读取通过。
|
|
117
|
+
|
|
118
|
+
## 0.2.2 简化画布操作
|
|
119
|
+
|
|
120
|
+
- 前端连线统一显示普通箭头,隐藏关系类型选项与文字标签;旧数据仍兼容保留。
|
|
121
|
+
- 画布只常驻“连线”和“视图”,缩放、适应视图和整理布局收纳进视图菜单。
|
|
122
|
+
- 连线可通过按钮、再次点击起点或 Esc 取消,连接成功后自动退出。点击已有箭头可删除,修改记录支持撤销。
|
|
123
|
+
|
|
124
|
+
## 2026-09-29 正文排版与画布连线
|
|
125
|
+
|
|
126
|
+
- 移除正文中的“设为 Agent 当前参考章节”和重复的“查看 AI 参考”入口;全局项目接手信息仍可查看。
|
|
127
|
+
- 正文编辑支持自动排版与撤销:段首空两格、段间空一行,只改本地草稿,手动保存后写入版本记录。
|
|
128
|
+
- 规划画布增加“连线节点”:选择关系类型,依次点击起点与终点,即可保存连线;详情中的关系编辑仍可使用。
|
|
129
|
+
|
|
130
|
+
## 2026-09-28 项目接手与按需读取
|
|
131
|
+
|
|
132
|
+
- Agent 改为写作助手:每轮只接收有限的项目索引、当前任务和章节元数据,不自动注入正文、预设、规划或图谱内容。
|
|
133
|
+
- 新增纯数据的 `novel.handoff`,正文通过 `chapter.get` 分页读取,预设通过 `preset.read` 读取有效文本,规划和人物/世界资料按任务检索。
|
|
134
|
+
- 接手索引、文字渲染和 DSH 提示词适配解耦;AI 参考抽屉展示同一份接手说明,章节正文继续收在正文工作区。
|
|
135
|
+
- 删除旧的自动上下文拼装残留,重组 Skills 的项目接手指南,保留 CAS、版本历史和绑定隔离。
|
|
136
|
+
- 验证:50 项自动测试、构建、TypeScript 检查、diff 检查和桌面/窄屏浏览器烟测通过。
|
|
137
|
+
- 系统提示词改为稳定的静态写作助手前缀;项目接手索引不再每轮自动组装,Agent 需要时调用 `novel.handoff`,减少动态数据对模型前缀缓存的影响。
|
|
138
|
+
|
|
139
|
+
目标:DSH 0.1.7-rc.2 / Node 24 / Windows。
|
|
140
|
+
|
|
141
|
+
- 前端正式导出 `./client`,构建器使用包名注册模块。
|
|
142
|
+
- RPC 独立到 transport,改用 Connection 精确 Fetch route,与宿主 API Gateway 共存。
|
|
143
|
+
- 工具动作共用契约;修复 edge.get、Agent 入口未定义 readAction。
|
|
144
|
+
- 单独的会话策略与提示词模块,未绑定会话不注入小说 persona。
|
|
145
|
+
- Agent 正文写入取消规划批准门槛;保留绑定隔离、CAS 与正文历史。
|
|
146
|
+
- 修复 Windows 目录 fsync 兼容、MCP 重连时旧进程清理竞态。
|
|
147
|
+
- 旧项目 JSON 迁移预览、报告、确认导入和同 ID 冲突保护。
|
|
148
|
+
- 弹窗提取为独立原生 dialog 组件,支持焦点约束、Escape 和卸载时取消。
|
|
149
|
+
- 公共界面接入 DSH locale,继续使用宿主主题变量。
|
|
150
|
+
- 增加实际注册工具执行测试和完整 DSH RPC 流程脚本。
|
|
151
|
+
|
|
152
|
+
本轮备份升级 v2,兼容 v1 导入,首次读取旧规划先备份再迁移。没有发布 npm。
|
|
153
|
+
|
|
154
|
+
- 自动小说参考改为 Markdown 分节,按作者要求取消字符预算和截断;取消人物/世界设定自动注入,改为正文关键词检索及工具按需读取,更新写作查阅规则和资料页。
|
|
155
|
+
|
|
156
|
+
## 2026-09-27:协同规划与工作台
|
|
157
|
+
|
|
158
|
+
- 规划改为节点、层级、故事线和三种关系,提供 planning.list/search/get/history/changes/apply/revert;作者与 AI 共用,按工具调用读取。
|
|
159
|
+
- 事务原子性、CAS、重试去重、删除范围确认、撤销、来源引用和迁移备份。
|
|
160
|
+
- 前端分离画布与事务模型,提供流程图/列表、折叠目录、故事线筛选、阅读/编辑、变更比较与历史撤销。
|
|
161
|
+
- 导航为正文/设定/规划/预设,AI 参考独立返回入口;正文历史独立面板,设定列表/详情与局部关系图,预设单条编辑,备份分步导入。
|
|
162
|
+
- 关联正文可查看历史引用版本;跳转章节不改变 AI 参考绑定。
|
|
163
|
+
- 不自动加载规划或设定;保持全文自动参考且不添加字符预算。
|
|
164
|
+
- 验证:43 项自动测试、50 次真实 RPC;新版视觉验收待完成。
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# 交给 Agent 安装或更新催更姬(Windows)
|
|
2
|
+
|
|
3
|
+
统一公开名称为 **`dsh-cuigengji-plugin`**,界面显示“催更姬”。普通用户使用 DSH 桌面版自带的插件管理和预构建包即可,无需 Git、Node.js、pnpm 或源码构建。此文可以在首次安装前交给 Agent;安装后另有 `cuigengji-maintenance` Skill 指导维护验收。
|
|
4
|
+
|
|
5
|
+
## 下载入口
|
|
6
|
+
|
|
7
|
+
- 目标发布:[0.4.2](https://github.com/mistnest/dsh-cuigengji-plugin/releases/tag/v0.4.2)
|
|
8
|
+
- 成品安装包:[dsh-cuigengji-plugin-0.4.2.tgz](https://github.com/mistnest/dsh-cuigengji-plugin/releases/download/v0.4.2/dsh-cuigengji-plugin-0.4.2.tgz)
|
|
9
|
+
- 哈希校验:[SHA256SUMS](https://github.com/mistnest/dsh-cuigengji-plugin/releases/download/v0.4.2/SHA256SUMS)
|
|
10
|
+
- 已验证宿主:DSH Windows 桌面版 **0.2.0-rc.2**。后续宿主版本以对应发布说明为准。
|
|
11
|
+
|
|
12
|
+
npm 发布后可在 DSH“添加插件”的“包名或地址”中填 `dsh-cuigengji-plugin`;Agent 更新使用精确版本 `dsh-cuigengji-plugin@0.4.2`,并先查明该版本确已公开。也支持仓库地址 `https://github.com/mistnest/dsh-cuigengji-plugin`;0.4.1 起仓库包含完整编译文件,不需要构建授权。固定版本与无 Git 安装可使用上面的 `.tgz` URL,或下载后的 Windows 绝对路径。GitHub 的源码 ZIP 不替代 `.tgz` 包。
|
|
13
|
+
|
|
14
|
+
**环境清单中若存在旧包 `dsh-cuigengji`,先按[安装名称迁移](package-name-migration.md)以关闭状态装入新包,再离线转接启用项和原配置。不要直接同时启用两个包。** 新安装或已经使用统一名称的更新继续本页流程。
|
|
15
|
+
|
|
16
|
+
已经从同一个 GitHub 地址安装过时,重复填写该地址可能沿用 pnpm 锁定的旧提交,并报“无法从依赖变更中确定安装了哪一个包”。这是已验证宿主的同地址安装限制,不表示新代码已经加载。升级使用新版本的 `.tgz` URL;需要测试指定源码时,可在仓库地址后加 `#` 和完整 40 位提交 SHA。不要为了刷新源码而删除小说目录。普通仓库地址及分支名仍可能需要 Git 解析,不能代替无 Git 用户的成品包路径。
|
|
17
|
+
|
|
18
|
+
“安装源”字段控制 npm 依赖从哪里下载,选择默认、官方源或中国大陆镜像源,不填写 GitHub 仓库地址。用户的包源、供应链保护和构建白名单不因安装催更姬而修改。
|
|
19
|
+
|
|
20
|
+
## 用户可直接交给 Agent 的话
|
|
21
|
+
|
|
22
|
+
> 请按催更姬的 Windows Agent 安装指南帮我安装或更新 dsh-cuigengji-plugin 到 0.4.2。使用 DSH 原生插件管理与已公开成品包;如果存在旧安装名,先完成名称迁移。保留已有配置和小说数据,完整重启后确认实际加载版本、数据目录和迁移校验结果。重新进入插件时应能直接继续写作。
|
|
23
|
+
|
|
24
|
+
## 1. 查明当前环境
|
|
25
|
+
|
|
26
|
+
确认用户实际运行的 DSH 版本、当前桌面 profile 和已有催更姬状态,以该环境为目标,不套用维护者电脑的路径。
|
|
27
|
+
|
|
28
|
+
DSH 中的 Agent 可使用原生 `plugin_manager`。已验证宿主在 Creator 模式提供此工具;其他预设可能需要切换到具备管理能力的模式。权限和宿主审批遵循 DSH 的既有机制。
|
|
29
|
+
|
|
30
|
+
```json
|
|
31
|
+
{"action":"list_bundles","offset":0,"limit":100}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
已有插件更新时,先记录原有 `dataRoot`、插件配置、启用状态和作品清单;旧版若没有维护工具,用 `settings.get` 和只读作品清单核对。保留原数据根、DSH Home、聊天、附件和桌面偏好,更新包不改它们。
|
|
35
|
+
|
|
36
|
+
## 2. 取得并核对包
|
|
37
|
+
|
|
38
|
+
下载真实的发布资产,核对 `SHA256SUMS` 的 SHA-256。下载失败时可以重试下载或改为本地 `.tgz` 路径;不要给用户临时搭建 Git 或源码构建环境。
|
|
39
|
+
|
|
40
|
+
Windows 外部 Agent 可以用 PowerShell 的 `Get-FileHash -Algorithm SHA256` 核对已下载文件。安装目标始终是用户当前的 DSH profile,不新建同名 desktop 环境。
|
|
41
|
+
|
|
42
|
+
## 3. 由宿主安装和启用
|
|
43
|
+
|
|
44
|
+
通过 DSH 原生工具安装 URL:
|
|
45
|
+
|
|
46
|
+
```json
|
|
47
|
+
{"action":"install_bundle","target":"https://github.com/mistnest/dsh-cuigengji-plugin/releases/download/v0.4.2/dsh-cuigengji-plugin-0.4.2.tgz","enabled":true}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
或把 `target` 换成已经核对过的本地 `.tgz` 绝对路径。没有原生工具访问能力的外部 Agent,可以先准备好包,交由 DSH 的原生插件页安装,并继续接手后面的验证。
|
|
51
|
+
|
|
52
|
+
读取安装返回的 `application`、`error`、`packageResult`。`restart-required` 表示磁盘上的包已更新,当前进程仍使用旧代码,需要一次完整重启。若宿主报告安装失败,保留具体诊断,不把已下载文件当成已安装。
|
|
53
|
+
|
|
54
|
+
desktop profile 由桌面应用管理。普通 DSH CLI 会拒绝对它直接操作;不要创建同名 profile、手工改 bundles 或在用户 profile 直接运行 `pnpm add`。本仓库的 `install-desktop.ps1` 是开发者维护脚本,不属于普通用户安装路径。
|
|
55
|
+
|
|
56
|
+
## 4. 完整重启与自动迁移
|
|
57
|
+
|
|
58
|
+
请用户先保存编辑中的内容,然后从 DSH 菜单正常退出,包括托盘进程,再从原快捷方式启动。具备相应权限的安装 Agent 可以完成重启;否则说明唯一剩余步骤并在重启后继续验收。
|
|
59
|
+
|
|
60
|
+
插件加载阶段完成升级前的完整原始快照、挂起事务恢复、物理布局迁移和完整逻辑校验。用户不需要单独运行迁移命令,也不会看到迁移向导。**负责更新的 Agent 必须完成这一步的验证,才能说更新结束。**
|
|
61
|
+
|
|
62
|
+
## 5. 验收实际加载结果
|
|
63
|
+
|
|
64
|
+
重启后调用不要求绑定小说的 `cuigengji_maintenance`:
|
|
65
|
+
|
|
66
|
+
```json
|
|
67
|
+
{"action":"status","args":{}}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
再核对版本、原数据根和原作品 ID;下面的数据目录是示例,请换成之前查明的目录:
|
|
71
|
+
|
|
72
|
+
```json
|
|
73
|
+
{"action":"verify","args":{"expectedVersion":"0.4.2","expectedDataRoot":"C:\\Users\\用户名\\AppData\\Local\\cuigengji","expectedNovelIds":[]}}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
`expectedNovelIds` 可填升级前作品的真实 ID,不用新 ID 替代。确认:
|
|
77
|
+
|
|
78
|
+
- `status.status=ready`,实际加载版本为 0.4.2,数据根与更新前一致。
|
|
79
|
+
- `verify.verified=true`,各作品、正文版本、回收站、设定、规划页和绑定数量符合原数据。
|
|
80
|
+
- 原有作品仍能通过只读工具访问。初次安装应是可用空库,不会附带作者小说。
|
|
81
|
+
|
|
82
|
+
维护结果可通过同一 DSH 连接的 `cuigengji/dispatch` RPC 查询 `maintenance.status` / `maintenance.verify`;这是外部 Agent 的替代查询入口,需要正常宿主认证。不要打印连接凭据。
|
|
83
|
+
|
|
84
|
+
报告给用户的内容保持简短:已加载版本、迁移完成与否、原作品是否保留。上述校验不需要调用任何模型连通性测试。
|
|
85
|
+
|
|
86
|
+
## 失败时怎样处理
|
|
87
|
+
|
|
88
|
+
- **无法从依赖变更中确定安装了哪一个包**:若重复用了同一个仓库地址,改为目标版本的 `.tgz` URL 或明确的新提交地址;核对安装结果与重启后版本,不把无依赖变更当作更新完成。
|
|
89
|
+
- **找不到 Git / `git ls-remote`**:核对是否误用了仓库地址,换成已核实的 `.tgz`。
|
|
90
|
+
- **不兼容或构建批准提示**:保留宿主的具体结果,按相应发布说明处理,不绕过宿主检查。
|
|
91
|
+
- **安装完仍是旧版本**:核对完整退出和重新加载结果,不因磁盘包版本更新就宣称已生效。
|
|
92
|
+
- **迁移 `failed`**:查询维护结果中的 `failedStage`、错误代码、原数据根与 `backupPath`,保留现场。重新加载会恢复挂起事务并继续同一次升级;反复失败时把元数据交给维护者。
|
|
93
|
+
- **缺失作品**:先比对原数据根和作品 ID。不要创建空库或用旧备份覆盖升级后新写入的正文。
|
|
94
|
+
|
|
95
|
+
完整恢复边界、快照位置和回滚流程见[更新与数据迁移](upgrade.md)。分享日志前移除凭据和私人内容。历史独立版的模型连通性日志不属于本次插件安装证据。
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# 催更姬模块与工作数据
|
|
2
|
+
|
|
3
|
+
```mermaid
|
|
4
|
+
flowchart TD
|
|
5
|
+
UI[写作界面:正文 / 规划 / 设定] --> RPC[DSH RPC 适配层]
|
|
6
|
+
DATAUI[工作数据区:位置 / 清单 / 导入导出] --> RPC
|
|
7
|
+
AGENT[Agent 工具与技能] --> POLICY[会话绑定与操作记录]
|
|
8
|
+
RPC --> POLICY
|
|
9
|
+
RPC --> DATA[WorkData 全库备份服务]
|
|
10
|
+
POLICY --> STORE[Store:作品操作与事务]
|
|
11
|
+
DATA --> STORE
|
|
12
|
+
UPGRADE[启动升级协调器:完整快照 / 恢复 / 迁移 / 校验] --> STORE
|
|
13
|
+
MAINTENANCE[不绑定作品的维护工具 / RPC] --> UPGRADE
|
|
14
|
+
STORE --> DISK[独立小说数据目录]
|
|
15
|
+
POLICY --> MCP[MCP 图谱桥接]
|
|
16
|
+
MCP --> STORE
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
- `src/client/features`:正文、规划、设定、预设与工作数据界面,仅使用 RPC。
|
|
20
|
+
- `src/adapters/dsh`、`src/adapters/mcp`:宿主通信、技能注册与工具边界;全库导入导出仅供作者界面。
|
|
21
|
+
- `src/application/backup`:全库备份格式、SHA-256 校验、冲突预览、合并与导入前备份。
|
|
22
|
+
- `src/application/maintenance/upgrade.ts`:加载阶段统一备份、恢复、迁移、逻辑摘要比对和可用闸门;`upgrade-backup.ts` 管理根目录之外的完整原始快照。维护查询不要求绑定小说,迁移失败也不会挡住宿主 Agent 和插件管理。
|
|
23
|
+
- `src/application/bindings`、`src/application/queries`:会话绑定和按需接手信息;不会自动塞小说全文或全库资料。
|
|
24
|
+
- `src/domain/planning`、`src/domain/memory`、`src/domain/preset`:规划事务、资料分组与预设规则。
|
|
25
|
+
- `src/infrastructure/persistence`、`src/infrastructure/migrations`:跨进程锁与原子写入、旧格式转换。
|
|
26
|
+
- `project-store.ts` 按操作读取相关索引与目标正文;`project-layout.ts` 划分持久文件;`file-transaction.ts` 负责多文件提交、校验和中断恢复。业务 Store 与 Agent 工具仍使用原来的 action 和版本契约。
|
|
27
|
+
- `src/application/store.js`:仍编排作品、章节和图谱命令;进一步拆分时保持既有 action 与备份格式。旧路径保留兼容转发,TypeScript 迁移尚未覆盖全部 JS/JSX。
|
|
28
|
+
|
|
29
|
+
## 作者交互组件
|
|
30
|
+
|
|
31
|
+
`features/welcome` 提供欢迎页与作品入口,复用现有创建、导入和会话绑定操作;打开“作品首页”不解除当前绑定。`shared/WorkbenchHeader.tsx` 展示首页、正文、规划、设定、刷新、设置以及独立的关于入口,作品切换从首页完成,写作预设从设置进入。“关于催更姬”直接打开交流与支持信息,关闭后返回原页面并恢复按钮焦点。`shared/refresh.tsx` 只让各资源重新读取服务端索引,草稿、正文滚动位置和画布相机由各自组件继续持有。`shared/batch-management.tsx` 与 `batch-style.ts` 统一设定、规划的批量操作区和选择列表,移动范围限制为当前筛选可见的已选项,业务保存仍由对应功能模块负责。
|
|
32
|
+
|
|
33
|
+
章节目录行由 `DirectoryRow.tsx` 展示打开、字数和回收站操作,`useChapterReorder.ts` 单独管理拖拽、自动滚动与目录版本检查。正文标题用 `InlineTitle.tsx` 原位修改;删除前通过正文同步器等待已有保存,再保存后续输入,避免回收站吞掉本地草稿。恢复复用删除前版本,不改变正文版本契约。
|
|
34
|
+
|
|
35
|
+
作品首页的卡片主体与右侧回收按钮是并列按钮,分别负责打开作品与整本回收,避免嵌套按钮或点击穿透。“作品与备份”内的作品回收站提供恢复与永久删除。整本回收沿用 `archived`,新增可选的 `archivedAt`;旧归档作品也能恢复,不改变布局版本或业务 ID。
|
|
36
|
+
|
|
37
|
+
`application/novels/lifecycle.ts` 管理整本回收、恢复与永久删除。生命周期操作只开放给作者的 RPC,使用作品 revision 检查并发;会话策略检查这本作品的所有活动 Agent,运行中拒绝回收。回收会解除该作品的全部会话绑定,普通工具、旧编辑器和导入目标不能继续写入回收的作品;恢复不自动重新绑定会话。跨面板刷新仅传递变更通知,不传递正文。正文、章节历史、设定关系、规划页面、预设与导入原件在回收时保持原样。
|
|
38
|
+
|
|
39
|
+
永久删除必须从回收站发起,使用文件事务日志 v3:先核对目录路径和内部作品 ID,将完整目录暂存于事务目录,再提交作品索引、绑定和请求记录的变更,最后清理暂存目录。进程中断时通过原日志完成操作,其他作品与历史导出备份不受影响;旧 v1/v2 日志仍兼容。新增请求记录带作品 ID,以便清理该作品的重试缓存;无法确认归属的旧记录和审计日志不做猜测性清理。
|
|
40
|
+
|
|
41
|
+
规划的 `CanvasDraft.tsx` 管理原位新建和同请求重试,`DecorationInlineEditor.tsx` 管理批注草稿与冲突合并,`SceneCard.tsx` 统一卡片层级,`CanvasInspector.tsx` 提供不阻塞画布的详情侧栏。共享画布负责坐标、选择、移动和连线;成功写入后更新当前页面索引及批注,下一次操作使用已保存的版本。
|
|
42
|
+
|
|
43
|
+
缩放到总览时,`graph-style.ts` 将规划与设定统一为“状态或类型标识+标题”的缩略卡片;隐藏摘要与章节引用,重新分配留白。缩略展示沿用原卡片的世界坐标尺寸和连线锚点,类型、标题、选中边框及连接点随缩放保持可辨识。
|
|
44
|
+
|
|
45
|
+
## 独立数据目录
|
|
46
|
+
|
|
47
|
+
配置优先级:插件 `dataRoot` > `CUIGENGJI_DATA_ROOT` > 系统默认目录。小说数据应存放在仓库之外,与源码、DSH Home 和 Electron 浏览器数据分开;公开仓库不提供个人作品或运行数据。工作数据页显示服务实际使用的绝对路径,迁移应核对作品名称清单,不能只按文件是否复制成功判断。
|
|
48
|
+
|
|
49
|
+
存储布局版本 4 按书名目录隔离,章节、设定和规划页使用“可读名称 + 稳定短 ID”作为文件名。`library.json` 保存作品 ID 与目录名的映射,各模块索引保存对象 ID 与文件名的映射;工具、正文引用和备份仍使用完整业务 ID:
|
|
50
|
+
|
|
51
|
+
```text
|
|
52
|
+
dataRoot/
|
|
53
|
+
library.json 作品索引、ID → 目录名与存储格式版本
|
|
54
|
+
novels/<书名>/
|
|
55
|
+
project.json 作品信息、卷目录与模块清单
|
|
56
|
+
chapters/index.json 目录、字数及版本引用索引
|
|
57
|
+
chapters/第1章 雨夜来信--a1b2c3d4.json 当前正文与元信息(含软删除章节)
|
|
58
|
+
planning/index.json 页面、事件、关系及变更索引
|
|
59
|
+
planning/主线--main.json 默认画布
|
|
60
|
+
planning/码头决战--e5f6a7b8.json 本页事件、箭头、框与便签
|
|
61
|
+
planning/legacy.json 旧规划原文(如存在)
|
|
62
|
+
settings/index.json 设定索引
|
|
63
|
+
settings/entries/角色-林序--c9d0e1f2.json 人物全文
|
|
64
|
+
settings/entries/世界-雾港--a3b4c5d6.json 世界设定全文
|
|
65
|
+
settings/groups.json 设定分组(如存在)
|
|
66
|
+
settings/relations.json 设定关系
|
|
67
|
+
preset.json 作者预设及导入原文(如存在)
|
|
68
|
+
imports/originals.json 酒馆原始资料(如存在)
|
|
69
|
+
history/chapters/<章节ID>.json 正文历史版本
|
|
70
|
+
history/planning/<变更ID>.json 完整规划变更与撤销快照
|
|
71
|
+
history/planning-legacy.json 画布转换前的旧规划原文(如存在)
|
|
72
|
+
runtime/bindings.json 会话绑定
|
|
73
|
+
runtime/upgrade.json 实际加载版本、升级阶段和完整性结果
|
|
74
|
+
runtime/requests/<请求哈希>.json 防止重复操作的结果记录
|
|
75
|
+
audit/ 操作日志
|
|
76
|
+
backups/ 迁移及导入前快照
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
索引不保存全文;普通查询只读取目标作品的所需索引,正文读取不带历史,规划详情只读取对应画布页。保存只提交变化的文件。涉及正文、设定失效标记、画布结构与请求结果的修改,使用同一个跨进程锁及持久事务日志,恢复完成后才允许下一次操作读取。事务暂存内容全部通过校验后才开始覆盖目标,中断后的操作会先完成恢复。
|
|
80
|
+
|
|
81
|
+
0.4.0 插件加载阶段先在数据根旁的 `.cuigengji-upgrade-backups` 创建完整原始快照,再恢复事务、验证整个旧数据并迁移;存储层仍保留 `backups/before-storage-*` 等逻辑检查点。迁移前后比较完整逻辑摘要,保留对象 ID、revision、正文版本、回收站、页面、批注、导入原文、绑定和请求记录;格式不合法会报错并保留原文件。迁移后的 `store.json` 是旧快照,新版以 `library.json` 与作品目录为准。升级完成后正常查询继续按需读取,不把维护记录放进写作上下文。
|
|
82
|
+
|
|
83
|
+
已有布局版本 2 的 ID 目录会在完整验证后迁移到书名目录;迁移前将完整逻辑数据、原索引与目录对应表保存到 `backups/before-project-names-*`。书名中的 Windows 非法字符替换为下划线,保留原始显示书名;重名(含仅大小写不同)或已有同名文件使用“书名(2)”等后缀,保留已有目录编号。书名长度限制仅影响文件夹名。在插件内重命名作品会同步迁移目录,大小写或非法字符替换后等价的改名保留当前目录。
|
|
84
|
+
|
|
85
|
+
已有布局版本 3 会先验证完整逻辑数据,保存 `backups/before-readable-files-*` 快照,再通过事务生成新文件、更新索引并清理原先托管的 ID 文件。短 ID 取完整业务 ID 的 SHA-256 前 8 位,仅用于文件命名,不替代任何引用。Windows 非法字符、保留名、长标题、大小写和同名冲突均处理;若目标位置有作者自存文件,会增加“(2)”等后缀,保留原文件。历史、请求和事务文件继续使用内部 ID。
|
|
86
|
+
|
|
87
|
+
在插件内修改章节标题、设定名称或规划页名称会同步更新文件名;恢复旧章节标题也会更新。目录拖拽顺序不写进文件名,避免一次排序引起大量改名。改名只改变物理存储映射,正文、历史、角色来源、规划连线及正文版本引用保持完整;规划页改名会先读取该页完整内容。
|
|
88
|
+
|
|
89
|
+
目录移动、文件改名、元信息、索引和请求结果共用可恢复事务;中断后先恢复,再允许读写。整个目录移动会保留未加载的正文、历史和作者额外存放的文件。切换存储格式前关闭旧版宿主;旧版程序不接受布局版本 4。插件维护索引与文件名;给作者交换内容继续使用一键导入/导出。
|
|
90
|
+
|
|
91
|
+
## 备份契约
|
|
92
|
+
|
|
93
|
+
作者的单本、局部内容和全库操作统一进入“导入 / 导出”。全库使用独立版本化格式 `cuigengji-workspace`,保存整个 Store(含归档作品、删除章节及历史、规划变更、原始预设、绑定和请求记录),并附带操作日志、旧规划迁移备份及校验码。
|
|
94
|
+
|
|
95
|
+
磁盘布局版本与导出版本独立:现有 `cuigengji` 单本备份和 `cuigengji-workspace` 全库备份仍可导入。新范围选择使用 `cuigengji-package` 数据包;全库保持原有格式,旧单本 RPC 也保持原逻辑格式。整库备份会完整重建并验证数据,不从索引代替正文,不递归打包本机旧快照或事务暂存文件。
|
|
96
|
+
|
|
97
|
+
导入前预览;确认时在同一 Store 锁内重新校验冲突。相同作品跳过,不同内容的同 ID 作品、不同绑定或分叉日志拒绝导入。当前工作数据先存入 `backups/before-import-*`,再合并;源备份不修改。相同日志的前缀版本保留较长一份。导入前备份是本机回滚快照,不递归打包进后续导出,避免备份无限膨胀。
|
|
98
|
+
|
|
99
|
+
这是小说工作数据备份,不是 DSH 整机备份:聊天记录、附件、凭据由 DSH 管理,浏览器未保存草稿需先保存。备份预览会明确提示边界。恢复会话绑定依赖相同的 DSH 会话 ID;只迁移小说时仍可在新会话手动选择作品。
|
|
100
|
+
|
|
101
|
+
## 后续解耦边界
|
|
102
|
+
|
|
103
|
+
后续可将 `application/store.js` 的 Novel/Chapter 与 Graph 命令继续分离,逐步为剩余 JS/JSX 增加类型契约。每一步都应以旧数据、版本冲突和完整备份的回归测试保证兼容;Agent 始终是写作助手,正文优先,资料按需读取。
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
## 统一导入与导出
|
|
107
|
+
|
|
108
|
+
文件识别、范围和关联收集、复用时的 ID 重映射、预览与原子保存分别位于 `src/application/transfer` 的独立 TypeScript 文件,共享契约位于 `src/contracts/transfer.ts`。页面位于 `src/client/features/transfer`,其他模块只传递预选范围。详细格式、恢复与复用行为见[导入与导出](import-export.md)。
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# 桌面版迁移说明
|
|
2
|
+
|
|
3
|
+
插件使用 DSH 官方 Windows 桌面应用;当前已验证的宿主版本为 0.2.0-rc.2。实际版本请以应用和依赖清单为准,不根据安装包文件名判断。
|
|
4
|
+
|
|
5
|
+
## 把小说从旧环境带过来
|
|
6
|
+
|
|
7
|
+
1. 在旧插件里保存正文和草稿,从“工作数据 · 导入/导出”导出小说数据。
|
|
8
|
+
2. 保留这份备份,再安装新 DSH 和插件;步骤见[安装说明](getting-started.md)。
|
|
9
|
+
3. 在新工作台查看实际数据目录,导入备份并核对作品、正文、历史、规划和设定。
|
|
10
|
+
4. 进入新会话时重新选择作品;跨环境的会话绑定依赖 DSH 会话 ID,不能仅凭小说文件推断聊天已迁移。
|
|
11
|
+
|
|
12
|
+
DSH 的聊天记录、附件、模型配置、凭据与界面偏好不属于催更姬小说备份。需要迁移它们时,使用 DSH 自身的数据迁移方式并核对原会话能否打开。不要把个人 DSH Home、小说导出或截图提交到公开源码仓库。
|
|
13
|
+
|
|
14
|
+
## 已有原始小说目录
|
|
15
|
+
|
|
16
|
+
在应用停止写入后保留整个旧目录副本。配置新插件的 `dataRoot` 或使用导出/导入;确认工作数据页显示预期目录和作品清单后再继续创作。不要让两套 DSH 同时写同一小说目录。
|
|
17
|
+
|
|
18
|
+
## 桌面运行时
|
|
19
|
+
|
|
20
|
+
Electron 的 `process.execPath` 指向桌面程序。插件启动 MCP 子进程时使用 Node 模式,避免误开第二个桌面窗口;普通 Node 与桌面内置 Node 都需要覆盖这条链路。
|
|
21
|
+
|
|
22
|
+
升级插件后需要完全退出并重启 DSH。安装脚本检查构建文件,不能替代重启后真实工作台的操作检查。
|
|
23
|
+
|
|
24
|
+
## 回退
|
|
25
|
+
|
|
26
|
+
回退之前先备份新环境里产生的作品和聊天。保留旧版本与升级前数据副本,但不要直接用旧备份覆盖升级后新增的正文。小说数据独立于插件源码,恢复作品不需要回退 Git 分支。
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# 开发、测试与公开发布
|
|
2
|
+
|
|
3
|
+
渠道分工、版本规则与每次发布的顺序统一见[渠道维护与发布流程](release-process.md);本文说明具体构建、测试和迁移验收工具。
|
|
4
|
+
|
|
5
|
+
当前插件版本 0.4.2,统一公开名称 `dsh-cuigengji-plugin`,Node.js 24+,DSH 兼容基线 0.2.0-rc.2。源码同时包含 TypeScript、JavaScript 和 JSX,尚未完成全部模块的 TypeScript 迁移。
|
|
6
|
+
|
|
7
|
+
## 模块与构建
|
|
8
|
+
|
|
9
|
+
- `src/client/features`:正文、规划、设定、预设与统一导入导出界面。
|
|
10
|
+
- `src/domain`:规划、分组、预设与正文规则。
|
|
11
|
+
- `src/application`:作品操作、会话绑定、查询、备份和独立导入导出模块。
|
|
12
|
+
- `src/infrastructure`:持久化及旧数据转换。
|
|
13
|
+
- `src/adapters`:DSH 和 MCP 接入。
|
|
14
|
+
- `src/contracts`:共享契约;`skills`:写作助手协作指南。
|
|
15
|
+
- 旧 `core`、`mcp`、`assistant` 入口保留兼容转发。
|
|
16
|
+
|
|
17
|
+
`src/` 是维护入口。`npm run build` 生成 `lib/client.js` 和服务端 `runtime/`;这两处生成文件随源码提交,供 DSH 直接安装。GitHub 默认折叠它们的差异,不在生成文件上手工改功能。Node 不直接运行安装包中的 TypeScript,因此发布前必须重新构建。完整模块关系见[架构说明](architecture.md)。
|
|
18
|
+
|
|
19
|
+
根 `package.json` 不声明 `prepare`、`prepack` 或安装脚本;DSH 从 GitHub 安装时只读取预构建文件,不需要运行构建或放宽 pnpm 保护。开发者通过显式命令构建、打包;CI 用 `check:build` 重新编译并逐字节检查生成文件,发现源码和产物不同或残留旧模块就拒绝提交。
|
|
20
|
+
|
|
21
|
+
```powershell
|
|
22
|
+
npm ci
|
|
23
|
+
npm test
|
|
24
|
+
npm run typecheck
|
|
25
|
+
npm run check:build
|
|
26
|
+
npm run test:ui
|
|
27
|
+
npm run pack:release
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
`npm run pack:release` 显式执行类型检查、构建、产物核对和打包;直接 `npm pack` 只打包已存在的文件,不再自动构建。界面脚本使用真实 Workbench 和隔离临时 Store。作者操作流程用 `test:author-workflow`;图、页面、目录关闭、章节排序、正文光标、管理页和预设分别有 `test:graph`、`test:pages`、`test:directory`、`test:chapter-order`、`test:manuscript`、`test:management`、`test:presets` 和 `test:transfer`。欢迎页与批量管理用 `test:welcome-batch`,覆盖作品入口、筛选后的选择范围、移动失败与跨页连线,以及宽窄屏和深色布局。顶部导航、刷新保留草稿/视野、正文底部间距和设置内预设入口用 `test:navigation` 验收。旧 `test:ui` 仍有待同步的界面名称,不代替这些专项验收。
|
|
31
|
+
|
|
32
|
+
单独看前端可以运行 `npm run preview:workbench`;添加 `-- --welcome` 查看未绑定会话的作品首页,添加 `-- --empty` 查看空库欢迎页。两种模式都使用隔离的临时数据,不加载日常小说。
|
|
33
|
+
|
|
34
|
+
整本作品的回收与恢复由 `tests/novel-recycle.test.js` 覆盖,包含完整内容与引用、旧归档兼容、运行中拒绝回收、并发启动检查、永久删除和中断恢复。`npm run test:novel-recycle` 使用隔离数据检查卡片右侧按钮的独立点击范围、确认取消、跨面板刷新、恢复与永久删除,以及窄窗口和深色布局。
|
|
35
|
+
|
|
36
|
+
DSH 内的真实 RPC 验收用 `test:rpc` / `test:rpc-flow`,需要独立 DSH 实例及其认证 URL;后者会创建测试作品。不要在正式小说目录运行写入验收。`test:live` 检查 desktop profile 的安装版本,并逐一比对已安装 `package.json`、前端构建、全部服务端运行时和 Skill 文件的 SHA-256;同版本号的旧包也会报错。这个只读检查不代表浏览器与模型行为验证。
|
|
37
|
+
|
|
38
|
+
Windows 桌面更新请参考[安装说明](getting-started.md)。桌面内置 Electron Node 与普通 Node 的子进程环境不同,涉及 MCP 的修改还应通过桌面运行时检查。
|
|
39
|
+
|
|
40
|
+
## 存储迁移验证
|
|
41
|
+
|
|
42
|
+
正常用户更新由插件加载阶段的 `UpgradeCoordinator` 自动备份、恢复、迁移和校验,安装 Agent 再调用维护工具验收。`tests/upgrade.test.js` 使用公开 0.3.13 实际代码生成的合成库及 v2/v3/v4 布局,验证完整历史、回收站、导入原件、页面/批注、绑定/请求、重复升级、中断恢复和失败闸门。生成旧库的脚本与来源提交记录见 `scripts/generate-upgrade-fixture.mjs`、`tests/fixtures/public-0.3.13/provenance.json`;不会使用真实小说。
|
|
43
|
+
|
|
44
|
+
布局版本 4 使用可读文件名,稳定业务 ID 和单本/全库导出格式保持不变。`tests/project-file-names.test.js` 覆盖文件名冲突、改名与恢复、完整页面内容、迁移中断及引用/备份兼容;目录与按需读写分别由 `project-directories.test.js`、`project-storage.test.js` 验证。
|
|
45
|
+
|
|
46
|
+
迁移真实数据前先运行隔离演练:
|
|
47
|
+
|
|
48
|
+
```powershell
|
|
49
|
+
node scripts/check-project-names-migration.mjs <数据目录> <报告目录>
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
脚本在锁内复制数据,不加载原目录;副本升级后逐条核对正文、设定、规划、历史、请求及额外文件的 SHA-256,另外核对索引除路径映射外完全相同、完整逻辑快照一致,以及工作数据导出/导入往返。支持布局 2、3、4,布局 4 再次运行不会重命名文件。单文件旧格式使用 `check-storage-migration.mjs <store.json> <报告目录>`。
|
|
53
|
+
|
|
54
|
+
桌面宿主与托盘进程退出、新插件安装通过后,可添加 `--apply` 将同样的核对应用于正式目录。迁移快照保存在数据目录的 `backups`,演练与应用报告保存在指定的报告目录。
|
|
55
|
+
|
|
56
|
+
## 发布包验收
|
|
57
|
+
|
|
58
|
+
发布 `.tgz`、`SHA256SUMS` 和安装升级指南,并使用相同版本标签记录源码。打包前完成 `npm test`、类型检查、构建和文件清单检查。GitHub 源码 ZIP 不充当用户成品安装包。
|
|
59
|
+
|
|
60
|
+
Windows 上 `scripts/check-release-install.mjs` 在临时 profile 中调用 DSH 原生 `runPluginCommand`,把 PATH 限制为桌面内置 Node shim 与 Windows 系统目录,检查找不到 Git,再验收本地或远程 `.tgz` 的新安装/旧包更新。它保留无关 profile 字段、启用组合包,随后用桌面 Node 加载 node_modules 中的编译包,验证维护工具、正文、规划、预设和真实 stdio MCP。不会读写用户 desktop profile。
|
|
61
|
+
|
|
62
|
+
```powershell
|
|
63
|
+
node scripts/check-release-install.mjs --desktop-exe "C:\你的DSH安装目录\DeepSeek Harness.exe" --package "C:\发布目录\dsh-cuigengji-plugin-0.4.2.tgz" --old-package "C:\旧包目录\dsh-cuigengji-0.3.13.tgz" --report "C:\验收目录\update.json"
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
省略 `--old-package` 验证全新安装;`--package` 也可使用真实 Release `.tgz` URL、完整 GitHub 仓库 URL 或固定提交的 `github:owner/repo#commit`。默认不提供 Git,固定提交使用完整 40 位 SHA;不固定提交的仓库地址加 `--with-git` 验收宿主的 Git 引用解析。GitHub 路径同样检查安装后的编译文件、无构建授权和旧库内容。用户安装使用[原生 Agent 指南](agent-installation.md),不运行此开发者验收脚本。
|
|
67
|
+
|
|
68
|
+
npm 首次发布与后续可信发布流程见 [npm 发布](npm-publishing.md)。首次发布成功后,同一验收脚本可用 `--npm-package dsh-cuigengji-plugin@0.4.2` 检查按包名安装;它与 `--package` 二选一,继续使用没有 Git 的隔离 profile。名称转换由 `tests/package-identity.test.js` 和真实安装验收覆盖,包括自定义数据根、home/profile 配置、去重、配置原始备份和幂等重试。
|
|
69
|
+
|
|
70
|
+
## 小说数据与源码分离
|
|
71
|
+
|
|
72
|
+
公开仓库是 `https://github.com/mistnest/dsh-cuigengji-plugin`,只发布代码、公共文档与合成测试样例。真实小说、设定、导出包、操作日志、聊天记录和个人环境备份保存在仓库之外。
|
|
73
|
+
|
|
74
|
+
根目录下的 `test-data`、`novel-data`、`data`、`backups`、`migration` 和 `releases` 被忽略,`*.cuigengji.json` 导出文件也被忽略。这是防误提交措施;已经被 Git 跟踪的文件仍需从索引移除,忽略规则不会抹掉提交历史。
|
|
75
|
+
|
|
76
|
+
从包含个人作品的私有分支发布时,应基于公开分支生成仅含源码的提交,不合并私人数据提交。推送前检查待推送的文件与历史,打包时确认没有小说和凭据。需要带作品复现问题时,使用脱离原作的合成样例。
|
|
77
|
+
|
|
78
|
+
## 贡献
|
|
79
|
+
|
|
80
|
+
欢迎在 Issues 里描述写作场景、复现步骤和期望体验。截图、日志和备份请先移除私人正文、设定、聊天和账号信息。涉及持久化、导入导出或协作冲突的修改,需要验证旧数据兼容与备份往返;前端修改应实际检查操作与布局。
|
|
81
|
+
|
|
82
|
+
[MIT 许可证](../LICENSE)适用于仓库源码,不授权使用他人的小说或导入资料。
|