dsh-cuigengji-plugin 0.4.3 → 0.4.4
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 -21
- package/README.md +1 -1
- package/cordis.patch.yml +3 -3
- package/docs/CHANGELOG.md +7 -0
- package/docs/agent-installation.md +19 -12
- package/docs/architecture.md +74 -74
- package/docs/desktop-migration-20260930.md +26 -26
- package/docs/development.md +7 -3
- package/docs/getting-started.md +17 -7
- package/docs/layout-progress.md +31 -31
- package/docs/market-listing.md +5 -3
- package/docs/npm-publishing.md +28 -12
- package/docs/package-name-migration.md +3 -3
- package/docs/planning-board.md +44 -44
- package/docs/presets.md +24 -24
- package/docs/release-process.md +15 -11
- package/docs/tavern-compatibility-audit-20261001.md +109 -109
- package/docs/test-report.md +139 -129
- package/docs/upgrade.md +3 -1
- package/docs/usage-review.md +13 -13
- package/lib/client.js +18 -14
- package/package.json +18 -14
- package/skills/cuigengji-maintenance/SKILL.md +2 -2
- package/src/adapters/dsh/prompt.js +36 -36
- package/src/adapters/dsh/rpc.js +96 -96
- package/src/adapters/dsh/skills.js +17 -17
- package/src/adapters/mcp/actions.js +6 -6
- package/src/adapters/mcp/client.js +172 -172
- package/src/adapters/mcp/server.js +40 -40
- package/src/application/bindings/session.js +72 -72
- package/src/application/queries/context.js +15 -15
- package/src/application/store.js +412 -412
- package/src/client/features/chapters/clipboard.ts +27 -27
- package/src/client/features/chapters/history.ts +11 -11
- package/src/client/features/chapters/index.jsx +118 -118
- package/src/client/features/chapters/sync.ts +155 -155
- package/src/client/features/chapters/useChapterSync.ts +39 -39
- package/src/client/features/context/index.jsx +22 -22
- package/src/client/features/memory/index.jsx +73 -73
- package/src/client/features/planning/Decorations.tsx +1 -1
- package/src/client/features/planning/Pages.tsx +11 -11
- package/src/client/features/planning/data.js +16 -16
- package/src/client/index.tsx +130 -130
- package/src/client/launcher.tsx +78 -78
- package/src/client/shared/creation.tsx +34 -34
- package/src/client/shared/detail-page.tsx +61 -61
- package/src/client/shared/drafts.js +17 -17
- package/src/client/shared/evidence.jsx +11 -11
- package/src/client/shared/groups.tsx +34 -34
- package/src/client/shared/preferences.tsx +104 -104
- package/src/client/shared/select-style.ts +25 -25
- package/src/client/shared/state.js +95 -95
- package/src/client/shared/ui.jsx +19 -19
- package/src/client/shared/workspace.tsx +11 -11
- package/src/client/style.ts +274 -274
- package/src/client/visual.ts +190 -190
- package/src/contracts/actions.js +19 -19
- package/src/contracts/planning.ts +52 -52
- package/src/domain/manuscript.ts +4 -4
- package/src/domain/planning/index.ts +113 -113
- package/src/domain/planning/model.ts +59 -59
- package/src/domain/preset/index.js +89 -89
- package/src/index.js +91 -91
- package/src/infrastructure/migrations/legacy.js +96 -96
- package/src/infrastructure/migrations/tavern.js +78 -78
- package/src/infrastructure/persistence/atomic-store.ts +80 -80
- package/src/infrastructure/persistence/project-layout.ts +1 -1
package/docs/npm-publishing.md
CHANGED
|
@@ -2,37 +2,43 @@
|
|
|
2
2
|
|
|
3
3
|
整体渠道分工与发布验收顺序见[渠道维护与发布流程](release-process.md)。本文负责 npm 首次发布、可信发布配置和按包名安装验收。
|
|
4
4
|
|
|
5
|
-
npm 包、GitHub 仓库和市场显示名统一为 **`dsh-cuigengji-plugin
|
|
5
|
+
npm 包、GitHub 仓库和市场显示名统一为 **`dsh-cuigengji-plugin`**。目标精确版本、归档和默认标签均验收通过后,用户可在 DSH「插件 → 添加插件 → 包名或地址」中填写 `dsh-cuigengji-plugin`,固定本次版本填写 `dsh-cuigengji-plugin@0.4.4`。「安装源」选择默认、npm 官方源或大陆镜像,不填写 GitHub 地址。这条路线不需要 Git。旧包名安装的用户按[名称迁移指南](package-name-migration.md)更新。
|
|
6
6
|
|
|
7
|
-
首次发布需要维护者自己的 npm 账号。npm 发布与
|
|
7
|
+
首次发布需要维护者自己的 npm 账号。npm 发布与 `dshmarket` 收录互相独立:npm 包可用不代表市场已收录,市场收录状态仍以[收录申请](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin/pull/7064)和公开目录为准。
|
|
8
|
+
|
|
9
|
+
2026-10-11 已完成 npm **0.4.3** 验收:精确版本已公开,`latest` 指向 0.4.3,归档 SHA-256 与 GitHub Release 相同,完整性检查通过。默认包名全新安装、0.4.2 同名升级和 0.4.1 旧名升级均在没有 Git、没有另装 Node.js 的 Windows 桌面运行时中通过;合成作品与原配置保留。[仅验收工作流](https://github.com/mistnest/dsh-cuigengji-plugin/actions/runs/38148012920)已成功,未重复上传。用户可按[桌面安装步骤](getting-started.md)直接填写包名。
|
|
10
|
+
|
|
11
|
+
首次上传后 npm 曾后台处理较长时间,早期验收超时;公开后补验收即可。另一次更新 0.4.2 标签的请求返回过 `E403: This trusted publisher cannot manage dist-tags`。本次 0.4.3 的默认标签已随公开处理到位,所以补验收未调用标签更新,不代表独立的 `Allow npm dist-tag` 权限已经验证。后续需要单独管理标签时仍按下文核对该权限。
|
|
8
12
|
|
|
9
13
|
## 首次发布
|
|
10
14
|
|
|
15
|
+
维护者优先使用 `npm run release -- trust` 和 `npm run release -- publish`。下面的首次手工步骤用于尚未上传的新版本;已被 npm 接受的上传不能因公开验收超时而重传。
|
|
16
|
+
|
|
11
17
|
首次 npm 发布使用已验收的 GitHub Release `.tgz`,保持两处安装包完全相同。不要将源码目录重新打成另一份相同版本的包,也不要上传小说、聊天、配置或迁移备份。
|
|
12
18
|
|
|
13
19
|
1. 在 [npm](https://www.npmjs.com/signup) 注册维护者账号,完成邮箱验证及 npm 要求的发布身份验证。公开包可以免费发布。邮箱登录验证码不等于发布用的双重验证;首次直接发布前,按 [npm 官方说明](https://docs.npmjs.com/configuring-two-factor-authentication/)在账号设置中启用 2FA,并由账号持有人使用 Windows Hello 或自己的安全密钥完成验证。未完成时保留已验收的 Release 入口,不宣称 npm 已可用。
|
|
14
20
|
2. 使用 `npm login --registry=https://registry.npmjs.org` 登录,再用 `npm whoami --registry=https://registry.npmjs.org` 核对发布身份。密码、验证码和登录 token 不写进仓库或聊天。
|
|
15
|
-
3. 切换到对应的公开版本源码,下载 GitHub Release 中的 `dsh-cuigengji-plugin-<版本>.tgz` 和 `SHA256SUMS`,用 SHA-256 核对 `.tgz`,再审计实际归档文件清单。首次发布目标为 `v0.4.
|
|
21
|
+
3. 切换到对应的公开版本源码,下载 GitHub Release 中的 `dsh-cuigengji-plugin-<版本>.tgz` 和 `SHA256SUMS`,用 SHA-256 核对 `.tgz`,再审计实际归档文件清单。首次发布目标为 `v0.4.3`;旧 `v0.4.1` 资产的包名不同,保留原样,不改名上传。
|
|
16
22
|
|
|
17
23
|
```powershell
|
|
18
|
-
gh release download v0.4.
|
|
19
|
-
Get-FileHash -Algorithm SHA256 "$env:TEMP\cuigengji-npm-0.4.
|
|
20
|
-
npm pack "$env:TEMP\cuigengji-npm-0.4.
|
|
21
|
-
node scripts/audit-release.mjs "$env:TEMP\cuigengji-npm-0.4.
|
|
24
|
+
gh release download v0.4.3 --repo mistnest/dsh-cuigengji-plugin --pattern dsh-cuigengji-plugin-0.4.3.tgz --pattern SHA256SUMS --dir "$env:TEMP\cuigengji-npm-0.4.3"
|
|
25
|
+
Get-FileHash -Algorithm SHA256 "$env:TEMP\cuigengji-npm-0.4.3\dsh-cuigengji-plugin-0.4.3.tgz"
|
|
26
|
+
npm pack "$env:TEMP\cuigengji-npm-0.4.3\dsh-cuigengji-plugin-0.4.3.tgz" --ignore-scripts --dry-run --json > "$env:TEMP\cuigengji-npm-0.4.3\pack-files.json"
|
|
27
|
+
node scripts/audit-release.mjs "$env:TEMP\cuigengji-npm-0.4.3\pack-files.json"
|
|
22
28
|
```
|
|
23
29
|
|
|
24
30
|
确认哈希与 `SHA256SUMS` 相同、文件审计通过,再发布已经核对过的归档:
|
|
25
31
|
|
|
26
32
|
```powershell
|
|
27
|
-
npm publish "$env:TEMP\cuigengji-npm-0.4.
|
|
28
|
-
npm view dsh-cuigengji-plugin@0.4.
|
|
33
|
+
npm publish "$env:TEMP\cuigengji-npm-0.4.3\dsh-cuigengji-plugin-0.4.3.tgz" --access public --ignore-scripts --registry=https://registry.npmjs.org --tag latest
|
|
34
|
+
npm view dsh-cuigengji-plugin@0.4.3 version repository.url dist.integrity --registry=https://registry.npmjs.org
|
|
29
35
|
```
|
|
30
36
|
|
|
31
37
|
首次发布包含的 README 是对应 GitHub Release 的历史快照,安装说明以公开仓库当前文档为准。发布后下载 npm 的 `dist.tarball`,再次核对其 SHA-256 与 GitHub 资产相同。npm 同一版本不可替换;内容不符时停止发布,按新版本处理。
|
|
32
38
|
|
|
33
39
|
## 后续自动发布
|
|
34
40
|
|
|
35
|
-
维护者的固定入口为 `npm run release -- trust`:使用 npm
|
|
41
|
+
维护者的固定入口为 `npm run release -- trust`:使用 npm 12.2.0 官方 CLI,先读取现有配置,只在缺少匹配权限时添加 `mistnest/dsh-cuigengji-plugin` 的 `publish-npm.yml` 可信发布;不删除其他连接。核对直接发布权限后启用仓库变量。该首次步骤仍需要使用真实安全密钥完成 npm 验证,不能由密码、邮箱验证码或恢复码代替。
|
|
36
42
|
|
|
37
43
|
首次包已经发布后,在 npm 的 `dsh-cuigengji-plugin` 包设置中添加 GitHub Actions trusted publisher:
|
|
38
44
|
|
|
@@ -41,6 +47,7 @@ npm view dsh-cuigengji-plugin@0.4.2 version repository.url dist.integrity --regi
|
|
|
41
47
|
- Workflow filename:`publish-npm.yml`
|
|
42
48
|
- Environment name:留空(本工作流不声明 environment)
|
|
43
49
|
- Allowed actions:启用直接 `npm publish`。只允许 staging 不能完成本工作流的正式发布。
|
|
50
|
+
- Allow npm dist-tag:在包设置中为同一仓库和 `publish-npm.yml` 启用。上传与管理 `latest` / `next` 是独立权限;CLI 的 `trust` 命令目前不能代替这个网页设置。
|
|
44
51
|
|
|
45
52
|
配置位置和字段以 [npm 官方可信发布说明](https://docs.npmjs.com/trusted-publishers/) 为准。此连接只给指定仓库的指定工作流发布该包的权限,不需要把长期 npm token 放进 GitHub Secrets。
|
|
46
53
|
|
|
@@ -55,10 +62,19 @@ npm view dsh-cuigengji-plugin@0.4.2 version repository.url dist.integrity --regi
|
|
|
55
62
|
1. 检出版本标签,验证包名、版本与公开仓库身份,运行测试、类型检查及编译产物核对。
|
|
56
63
|
2. 下载 GitHub 已发布成品包,核对 SHA-256,并审计归档,保证 npm 与 GitHub 使用同一份包。
|
|
57
64
|
3. 使用 npm trusted publishing 发布。稳定版使用 `latest`,预发布版使用 `next`。
|
|
58
|
-
4.
|
|
65
|
+
4. 等待 npm 的发布前扫描,最多 30 分钟,每 30 秒查一次精确版本。归档公开后核对包身份、SHA-256 和完整性,再确认或修正 `latest` / `next`。已有版本只有在归档完全一致时才跳过上传;任何不一致都会失败。
|
|
59
66
|
|
|
60
67
|
CLI 显示 `+ 包名@版本` 不足以证明可用。发布流程还要核对精确版本、`dist.integrity`、`latest` / `next` 指向和原生安装;公开包只有 `0.0.0-stage` 时视为未完成。若直接上传返回成功但精确版本不存在、`npm stage list` 也为空,保留状态为“公开版本待确认”,不要反复重传同版本或擅自消耗恢复码。
|
|
61
68
|
|
|
69
|
+
npm [官方说明](https://github.blog/changelog/2026-07-28-npm-publish-time-malware-scanning-and-dual-use-metadata/)明确:新包先扫描再允许安装,通常约 5 分钟,也可能超过 15 分钟或进入人工审核。超过本工作流的等待窗口不等于上传失败。查看 npm 的通知与待审核列表,再用仅验收模式恢复;它不会重新上传:
|
|
70
|
+
|
|
71
|
+
```powershell
|
|
72
|
+
gh workflow run publish-npm.yml --repo mistnest/dsh-cuigengji-plugin --ref main --field tag=v0.4.3 --field verify_only=true
|
|
73
|
+
npm run release -- verify
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
若归档已公开,但 `latest` 仍是占位版本,先核对归档,再完成标签权限或由维护者用真实身份验证修正标签。后续工作流会自动处理。可信发布的标签权限默认关闭,且要求 npm 11.21.0 或 12.2.0 起的 CLI,见[官方文档](https://docs.npmjs.com/trusted-publishers/#managing-dist-tags-with-trusted-publishing)。不要重新发布同版本来改标签。
|
|
77
|
+
|
|
62
78
|
旧 Release 或工作流中断可以在 GitHub Actions 的「Publish npm package」中手动运行,填写已有的 Release 标签。没有 trusted publisher 或权限不符时停止处理,不改用不明来源的凭据。
|
|
63
79
|
|
|
64
80
|
## 按包名安装验收
|
|
@@ -66,7 +82,7 @@ CLI 显示 `+ 包名@版本` 不足以证明可用。发布流程还要核对精
|
|
|
66
82
|
首次发布后,在没有 Git 的隔离 Windows profile 中运行 DSH 原生安装及迁移验收:
|
|
67
83
|
|
|
68
84
|
```powershell
|
|
69
|
-
node scripts/check-release-install.mjs --desktop-exe "C:\你的DSH安装目录\DeepSeek Harness.exe" --npm-package dsh-cuigengji-plugin@0.4.
|
|
85
|
+
node scripts/check-release-install.mjs --desktop-exe "C:\你的DSH安装目录\DeepSeek Harness.exe" --npm-package dsh-cuigengji-plugin@0.4.3 --report "C:\验收目录\npm-install.json"
|
|
70
86
|
```
|
|
71
87
|
|
|
72
88
|
添加 `--old-package <公开旧版.tgz>` 可验证旧版升级到 npm 包,核对正文、回收站、规划、设定、预设、绑定及正文历史保留。脚本使用临时 profile 和合成库,不操作真实小说。
|
|
@@ -15,10 +15,10 @@
|
|
|
15
15
|
通过 DSH 原生工具安装精确版本,使用 `enabled:false`:
|
|
16
16
|
|
|
17
17
|
```json
|
|
18
|
-
{"action":"install_bundle","target":"https://github.com/mistnest/dsh-cuigengji-plugin/releases/download/v0.4.
|
|
18
|
+
{"action":"install_bundle","target":"https://github.com/mistnest/dsh-cuigengji-plugin/releases/download/v0.4.4/dsh-cuigengji-plugin-0.4.4.tgz","enabled":false}
|
|
19
19
|
```
|
|
20
20
|
|
|
21
|
-
npm 发布并验证后,`target` 也可使用 `dsh-cuigengji-plugin@0.4.
|
|
21
|
+
npm 发布并验证后,`target` 也可使用 `dsh-cuigengji-plugin@0.4.4`。读取真实安装返回,确认新包已落盘。安装失败时旧包继续保留,停止后续步骤。
|
|
22
22
|
|
|
23
23
|
### 2. 正常退出后,运行名称迁移工具
|
|
24
24
|
|
|
@@ -51,7 +51,7 @@ DSH 内的 Agent 需要在退出前准备后台维护任务。工具可加 `--wa
|
|
|
51
51
|
|
|
52
52
|
### 3. 从原入口重新打开,核对作品
|
|
53
53
|
|
|
54
|
-
从用户原来的快捷方式启动 DSH。确认仅新包被启用,工具调用和前端入口各只有一份;再按[更新与数据迁移](upgrade.md)调用 `cuigengji_maintenance` 的 `status` / `verify`,核对 `0.4.
|
|
54
|
+
从用户原来的快捷方式启动 DSH。确认仅新包被启用,工具调用和前端入口各只有一份;再按[更新与数据迁移](upgrade.md)调用 `cuigengji_maintenance` 的 `status` / `verify`,核对 `0.4.4`、原数据根和升级前作品 ID。只有就绪且完整性验证通过才报告完成。
|
|
55
55
|
|
|
56
56
|
### 4. 清理旧依赖
|
|
57
57
|
|
package/docs/planning-board.md
CHANGED
|
@@ -1,63 +1,63 @@
|
|
|
1
|
-
# 故事规划板
|
|
2
|
-
|
|
1
|
+
# 故事规划板
|
|
2
|
+
|
|
3
3
|
规划是作者与写作助手共用的情节推演画布。节点承载可独立讨论的事件、冲突、选择、转折或阶段目标,用标题和摘要供浏览、搜索,正文自由记录细节。节点与章节不必一一对应:一章可以写到多个事件,一个事件也可以跨章。连线表达推进、依赖或备选;并行动线可以分行展示、汇入共同后果,未关联的伏笔与构想可以长期保留。分组只用于整理和查找,不决定情节顺序。正文是已发生的故事,规划是意图;二者不能互相替代。
|
|
4
|
-
|
|
5
|
-
## 工作台
|
|
6
|
-
|
|
4
|
+
|
|
5
|
+
## 工作台
|
|
6
|
+
|
|
7
7
|
顶部页面选择器中的“+ 新建页面”创建独立画布,用途摘要说明这页讨论什么;旧节点位于“主线规划”。页面既隔离独立篇章,也用于“码头决战推演”这类局部工作台;主线保留事件目标、结果和详细页名称,复杂细节在专页展开。分组用于当前页筛选(分组名称在全书复用)。列表批量选择后可移动到其他页面,内部连线保留,与未移动节点的连线需确认后移除。只允许删除空页面。
|
|
8
|
-
|
|
9
|
-
右键空白可新建情节、文字批注和讨论框;更多菜单也提供批注入口。创建表单直接出现在画布落点,先填写标题和摘要或批注内容,确认后才保存;Esc 取消,不留下空卡片或连线。已有批注与讨论框也在原位编辑,外观选项收纳起来,拖标题移动、拖右下角调整尺寸。框选卡片后按 C 可创建包围选择的讨论框。新讨论框默认带动开始拖动时完整包含的卡片与批注,右键标题可切为“仅移动讨论框”;旧背景框保持只移动自身的行为。删除框保留卡片与连线。批注不是情节节点,不参与连线,所有内容随工作数据导出。协作冲突时保留草稿,可比较最新内容、人工合并后更新保存基准。
|
|
10
|
-
|
|
8
|
+
|
|
9
|
+
右键空白可新建情节、文字批注和讨论框;更多菜单也提供批注入口。创建表单直接出现在画布落点,先填写标题和摘要或批注内容,确认后才保存;Esc 取消,不留下空卡片或连线。已有批注与讨论框也在原位编辑,外观选项收纳起来,拖标题移动、拖右下角调整尺寸。框选卡片后按 C 可创建包围选择的讨论框。新讨论框默认带动开始拖动时完整包含的卡片与批注,右键标题可切为“仅移动讨论框”;旧背景框保持只移动自身的行为。删除框保留卡片与连线。批注不是情节节点,不参与连线,所有内容随工作数据导出。协作冲突时保留草稿,可比较最新内容、人工合并后更新保存基准。
|
|
10
|
+
|
|
11
11
|
规划与设定采用同一套画布。顶部保留页面、分组、新建分组、搜索、列表/画布及新建卡片,缩放和适应视图放在右下角。状态、故事线、历史与批量入口保留在更多菜单中。分组用于筛选,不再自动画出“未分组”背景框。
|
|
12
12
|
|
|
13
13
|
画布支持任意正负坐标,没有滚动边界。右键拖动平移,右键短按显示鼠标命中对象的菜单;中键或空格加左键也可平移。直接滚轮围绕鼠标位置缩放。单击卡片选择,双击或键盘激活标题打开详情;空白拖动框选,Shift 追加选择,多张卡片一起拖动。布局松手后一次保存,发生冲突不会只移动部分对象;失败时保留本地位置,可重试或还原。Esc 取消尚未完成的移动或连接。
|
|
14
14
|
|
|
15
|
-
左右圆点支持拖拽或依次点击连线;拖到空白会在落点打开“新建并连接”,完成后同时保存新卡片和箭头。右键连线可断开,规划箭头不需要填写属性;设定关系有名称或说明时直接显示在线旁。分组可创建、重命名、修改描述、删除,删除组时成员留在未分组。
|
|
15
|
+
左右圆点支持拖拽或依次点击连线;拖到空白会在落点打开“新建并连接”,完成后同时保存新卡片和箭头。右键连线可断开,规划箭头不需要填写属性;设定关系有名称或说明时直接显示在线旁。分组可创建、重命名、修改描述、删除,删除组时成员留在未分组。
|
|
16
16
|
|
|
17
17
|
视野按作品、页面和规划/设定分别保存在本机;筛选、新建、后台刷新和详情返回不自动跳转。Home 或“适应”定位当前选择,无选择时适应当前可见内容。Ctrl+Z / Ctrl+Y 只撤销、重做本次打开画布后的布局移动,并检查版本,不能覆盖之后的 AI 修改。卡片坐标随工作数据导出,视野偏好不进入作品数据。
|
|
18
|
-
|
|
19
|
-
卡片以标题、摘要和底部进展为主,已关联正文时显示引用数量。点开节点后在可展开的详情侧栏编辑标题、摘要、正文和分组,画布仍可拖动、缩放和选择其他卡片;窄屏详情放在画布下方。节点详情展示“从哪里来 → 当前情节 → 接下来”;“接着推进”会在画布中创建后续节点并连接普通箭头。讨论进展可区分构想、准备采用和已写入正文,故事线、旧层级与章节/资料引用收在次级区域。修改有 revision 检查;本地草稿不会被轮询覆盖。修改记录可比较前后版本并撤销;相关对象发生后续变更时拒绝覆盖。
|
|
20
|
-
|
|
21
|
-
## Agent 调用
|
|
22
|
-
|
|
18
|
+
|
|
19
|
+
卡片以标题、摘要和底部进展为主,已关联正文时显示引用数量。点开节点后在可展开的详情侧栏编辑标题、摘要、正文和分组,画布仍可拖动、缩放和选择其他卡片;窄屏详情放在画布下方。节点详情展示“从哪里来 → 当前情节 → 接下来”;“接着推进”会在画布中创建后续节点并连接普通箭头。讨论进展可区分构想、准备采用和已写入正文,故事线、旧层级与章节/资料引用收在次级区域。修改有 revision 检查;本地草稿不会被轮询覆盖。修改记录可比较前后版本并撤销;相关对象发生后续变更时拒绝覆盖。
|
|
20
|
+
|
|
21
|
+
## Agent 调用
|
|
22
|
+
|
|
23
23
|
先读 `planning.pages`,根据页面名称与用途选择 pageId,再用 `planning.list`/`planning.search` 获取标题、摘要、分组与连线;只对相关节点用 `planning.get` 读取正文,并按需读相关框与便签。主线规划的 pageId 为 null;不传 pageId 仍为全书查询。Agent 不应猜测用户当前界面选中的页面。更新已有想法优先 `node.update`,新建节点按情节用途拆分,不按章节数或讨论次数拆分。顺序推进用续接,多方行动与共同后果用一次 apply 建立多行结构。新内容留出箭头和标题空间,保留作者已有坐标;分组先查找并复用。
|
|
24
|
-
|
|
25
|
-
| action | 用途 |
|
|
26
|
-
| --- | --- |
|
|
27
|
-
| `planning.pages` | 列出页面用途、节点及批注数量 |
|
|
28
|
-
| `planning.page.create/update/delete` | 管理页面,更新/删除带 expectedRevision,删除须 confirm:true 且页面为空 |
|
|
29
|
-
| `planning.decorations` | 按 pageId、offset、limit 读取批注 |
|
|
30
|
-
| `planning.groups` | 列出活动分组 |
|
|
31
|
-
| `planning.group.create/update/delete` | 管理分组,更新/删除带 expectedRevision;删除须 confirm:true |
|
|
32
|
-
| `planning.list/search` | 按 groupId、parentId、query、status、thread 分页获取元信息和关系;不返回节点正文 |
|
|
33
|
-
| `planning.get` | 读取节点全文、邻居、flow.previous/next 前后情节与下级摘要 |
|
|
24
|
+
|
|
25
|
+
| action | 用途 |
|
|
26
|
+
| --- | --- |
|
|
27
|
+
| `planning.pages` | 列出页面用途、节点及批注数量 |
|
|
28
|
+
| `planning.page.create/update/delete` | 管理页面,更新/删除带 expectedRevision,删除须 confirm:true 且页面为空 |
|
|
29
|
+
| `planning.decorations` | 按 pageId、offset、limit 读取批注 |
|
|
30
|
+
| `planning.groups` | 列出活动分组 |
|
|
31
|
+
| `planning.group.create/update/delete` | 管理分组,更新/删除带 expectedRevision;删除须 confirm:true |
|
|
32
|
+
| `planning.list/search` | 按 groupId、parentId、query、status、thread 分页获取元信息和关系;不返回节点正文 |
|
|
33
|
+
| `planning.get` | 读取节点全文、邻居、flow.previous/next 前后情节与下级摘要 |
|
|
34
34
|
| `planning.continue` | nodeId、expectedRevision、requestId、value;原子创建节点和普通箭头,默认继承起点分组与页面;side:in 补前置事件,默认 out 续接后续 |
|
|
35
35
|
| `planning.apply` | 一次提交 1–200 个节点、分组、连线、页面及批注操作,带 requestId 和 reason |
|
|
36
|
-
| `planning.history/changes` | 查看事务及增量 |
|
|
37
|
-
| `planning.revert` | 按版本检查后撤销一次事务 |
|
|
38
|
-
|
|
36
|
+
| `planning.history/changes` | 查看事务及增量 |
|
|
37
|
+
| `planning.revert` | 按版本检查后撤销一次事务 |
|
|
38
|
+
|
|
39
39
|
创建节点时提供 `title`、`summary`、`content`,可选 `groupId`。`node.update` 需要 id、expectedRevision 和 value;`edge.create` 的 `type` 为 `next`、`requires` 或 `alternative`。`edge.update` 可改端点、类型、说明;删除操作需要 confirm:true。对有子节点的旧层级节点,删除时指定 `childPolicy: detach` 或 `subtree`,并用 `expectedSequence` 保护已确认的范围。重复 requestId 重试同一请求不会重复提交;冲突时重新读取,不自动提升版本覆盖。
|
|
40
40
|
|
|
41
41
|
apply 中的 `op`、`id`、`expectedRevision` 位于操作同一层,value 只放内容;单条 get/continue 才使用 args.nodeId。工具参数现在展示这一结构。对旧调用中明确且不冲突的 `action/nodeId` 或 value 内 id/expectedRevision 做兼容解析;缺失、类型错误或多个不同目标/版本明确指出 operations 下标与纠正方法,不猜测版本,也不跳过删除确认。失败的整批操作不保存。
|
|
42
42
|
|
|
43
|
-
```json
|
|
44
|
-
{
|
|
45
|
-
"requestId": "unique-request-id",
|
|
46
|
-
"reason": "完善开篇相遇",
|
|
47
|
-
"operations": [
|
|
48
|
-
{"op":"node.create","ref":"a","value":{"title":"收到来信","summary":"旧友请她回城","content":"..."}},
|
|
49
|
-
{"op":"node.create","ref":"b","value":{"title":"决定赴约","summary":"她权衡风险后启程","content":"..."}},
|
|
50
|
-
{"op":"edge.create","value":{"from":"a","to":"b","type":"next"}}
|
|
51
|
-
]
|
|
52
|
-
}
|
|
53
|
-
```
|
|
54
|
-
|
|
43
|
+
```json
|
|
44
|
+
{
|
|
45
|
+
"requestId": "unique-request-id",
|
|
46
|
+
"reason": "完善开篇相遇",
|
|
47
|
+
"operations": [
|
|
48
|
+
{"op":"node.create","ref":"a","value":{"title":"收到来信","summary":"旧友请她回城","content":"..."}},
|
|
49
|
+
{"op":"node.create","ref":"b","value":{"title":"决定赴约","summary":"她权衡风险后启程","content":"..."}},
|
|
50
|
+
{"op":"edge.create","value":{"from":"a","to":"b","type":"next"}}
|
|
51
|
+
]
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
55
|
`planning.apply` 还支持 `page.create/update/delete` 与 `decoration.create/update/delete`,同一事务可引用新建页面。创建节点/批注时传 pageId,续接强制继承起点页面;跨页连线与父子关系会被拒绝。批注 kind 为 note 或 frame,可传 title、content、position、width、height、color、fontSize、fontFamily、moveContents。坐标可正可负,必须为有限数值。合法底色为 neutral/sand/sage/sky/rose,字号为 14/18/24/32,字体为 sans/serif。直接用工具修改框坐标只移动框,要移动整片区域应在一次 apply 中更新全部成员。完整调用示例见规划 Skill。
|
|
56
|
-
|
|
57
|
-
领域模型与事务在 `src/domain/planning`,类型契约在 `src/contracts/planning.ts`,画布在 `src/client/features/planning`。备份 schemaVersion 2 包含节点、分组、页面、批注、连线、坐标与事务;仍接受 v1 迁移,缺少页面/批注字段的旧备份可原样读取。升级前复制数据目录,旧程序不能直接读取新格式。规划不自动加入 Agent 提示词;项目接手只给有限索引,已启用预设随系统提示词提供;正文、规划和资料由 Agent 按需读取。
|
|
58
|
-
|
|
59
|
-
## 共同讨论
|
|
60
|
-
|
|
56
|
+
|
|
57
|
+
领域模型与事务在 `src/domain/planning`,类型契约在 `src/contracts/planning.ts`,画布在 `src/client/features/planning`。备份 schemaVersion 2 包含节点、分组、页面、批注、连线、坐标与事务;仍接受 v1 迁移,缺少页面/批注字段的旧备份可原样读取。升级前复制数据目录,旧程序不能直接读取新格式。规划不自动加入 Agent 提示词;项目接手只给有限索引,已启用预设随系统提示词提供;正文、规划和资料由 Agent 按需读取。
|
|
58
|
+
|
|
59
|
+
## 共同讨论
|
|
60
|
+
|
|
61
61
|
AI 先找到正在讨论的事件和相关批注,补充原节点;讨论复杂场景时可另开局部沙盘,分行安排各方行动,将共同后果放在右侧。顺序情节仍可是一条线,互斥走向从同一处境分叉,不为图的形状编造情节。获准整理规划后,AI 应按需要用讨论框标示阶段或阵营,用便签记录未决问题、关键台词和灵感;简单情节无需添加装饰。
|
|
62
62
|
|
|
63
63
|
未决定的路线保留为构想,作者选定的路线标记为准备采用。written 只表示节点情节已在保存的正文中完整实现,并提供有效的 chapterRefs;它不是所有节点的终点。正文与节点的引用是多对多关系,部分落地时说明剩余内容,未涉及的构想不机械改状态。具体工具示例随 cuigengji-plan Skill 提供,其中包括三线汇合、页面、讨论框与便签的完整事务。
|
package/docs/presets.md
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
# 写作预设:当前支持范围
|
|
2
|
-
|
|
3
|
-
入口:作品名称旁「···」→「写作预设」。当前每部作品保存一份预设;这部作品的所有绑定会话使用它。
|
|
4
|
-
|
|
5
|
-
可直接新增提示词,也可导入完整 Chat Completion JSON(顶层 prompts)、PromptManager 导出(data.prompts)或独立系统提示词(content/system_prompt,含 post_history/post_history_instructions)。支持平铺顺序及多个排列方案,默认优先通用排列 100001。导入入口进入统一的“导入 / 导出”页面,先预览并选择追加或替换,确认后保存到目标作品,整体默认停用;核对后开启并保存。界面支持条目编辑、启停、上下排序、有效文本预览和下载原始 JSON。修改后的配置可以单独导出,也随作品完整备份保存。
|
|
6
|
-
|
|
7
|
-
启用后,当前作品绑定会话在组装系统提示词时,将兼容条目的有效文本按顺序放在催更姬开场提示词后,作为作者写作要求,无需 Agent 主动读取。停用或切换作品在下次组装时生效;未绑定作品时不注入预设。仅注入有效文本,不加入时间戳、版本号、原始 JSON 或小说内容。预设不变时该部分提示词保持稳定,但实际缓存命中仍由宿主和模型服务决定。`preset.read` 保留用于查看配置和排查问题。
|
|
8
|
-
|
|
9
|
-
## 兼容限制
|
|
10
|
-
|
|
11
|
-
- 以提示词内容为主,不执行酒馆的插入深度、触发条件、消息角色或装填规则。任何角色的启用文本都按列表顺序拼接为作者写作要求,不模拟聊天消息。
|
|
12
|
-
- 宏(包括 `{{char}}`、`{{user}}`)保持原文,不执行、不猜测称谓,也不因含宏而停用整条。界面提示含占位符,可直接改写。复杂变量或脚本宏不会产生酒馆中的效果。
|
|
13
|
-
- 保留原文件选定方案的启停状态;没有排列时有正文的条目默认可用,显式 enabled:false 保持停用。空 marker 不产生文本,非空 marker 的正文可以使用。整体启用且无有效文本时会提示。
|
|
14
|
-
- PromptManager 导出可能没有包含内置槽位对应文本;跳过缺失引用并报告,不编造内容。完整预设的未知引用仍报错,避免无声丢失。
|
|
15
|
-
- 温度、top_p、模型、token 上限等参数仅归档,未设置 DSH 模型参数。
|
|
16
|
-
- 纯采样参数、只有分隔符的 Instruct、只有装填表达式的 Context 文件不包含独立提示词正文,会明确提示。包含 content/system_prompt 的文件可提取文本,但不执行其装填字段。不支持多预设库一键切换。
|
|
17
|
-
- 原始字段随备份保留,不代表相应行为已经兼容。实际生效文本在页面内可检查。
|
|
18
|
-
- 旧版已保存预设不自动启用此前被停用的条目;可手动启用,或下载原始文件后重新导入,使用新的内容优先规则。
|
|
19
|
-
|
|
20
|
-
## 验证
|
|
21
|
-
|
|
22
|
-
自动测试覆盖三种格式、排序与启停、原文宏、忽略触发/深度/角色、作者权限、版本冲突、备份恢复、提示词注入及跨作品隔离。test:presets 在正式前端的临时副本中实际上传、保存、刷新和下载,验证空文本提示;额外使用审查中固定的官方默认预设实测得到 78 字符有效文本。不调用模型,不修改正式作品。用户自己的预设仍需在导入后检查其具体内容。
|
|
23
|
-
|
|
24
|
-
参考:[SillyTavern Prompt Manager](https://docs.sillytavern.app/usage/prompts/prompt-manager/)。
|
|
1
|
+
# 写作预设:当前支持范围
|
|
2
|
+
|
|
3
|
+
入口:作品名称旁「···」→「写作预设」。当前每部作品保存一份预设;这部作品的所有绑定会话使用它。
|
|
4
|
+
|
|
5
|
+
可直接新增提示词,也可导入完整 Chat Completion JSON(顶层 prompts)、PromptManager 导出(data.prompts)或独立系统提示词(content/system_prompt,含 post_history/post_history_instructions)。支持平铺顺序及多个排列方案,默认优先通用排列 100001。导入入口进入统一的“导入 / 导出”页面,先预览并选择追加或替换,确认后保存到目标作品,整体默认停用;核对后开启并保存。界面支持条目编辑、启停、上下排序、有效文本预览和下载原始 JSON。修改后的配置可以单独导出,也随作品完整备份保存。
|
|
6
|
+
|
|
7
|
+
启用后,当前作品绑定会话在组装系统提示词时,将兼容条目的有效文本按顺序放在催更姬开场提示词后,作为作者写作要求,无需 Agent 主动读取。停用或切换作品在下次组装时生效;未绑定作品时不注入预设。仅注入有效文本,不加入时间戳、版本号、原始 JSON 或小说内容。预设不变时该部分提示词保持稳定,但实际缓存命中仍由宿主和模型服务决定。`preset.read` 保留用于查看配置和排查问题。
|
|
8
|
+
|
|
9
|
+
## 兼容限制
|
|
10
|
+
|
|
11
|
+
- 以提示词内容为主,不执行酒馆的插入深度、触发条件、消息角色或装填规则。任何角色的启用文本都按列表顺序拼接为作者写作要求,不模拟聊天消息。
|
|
12
|
+
- 宏(包括 `{{char}}`、`{{user}}`)保持原文,不执行、不猜测称谓,也不因含宏而停用整条。界面提示含占位符,可直接改写。复杂变量或脚本宏不会产生酒馆中的效果。
|
|
13
|
+
- 保留原文件选定方案的启停状态;没有排列时有正文的条目默认可用,显式 enabled:false 保持停用。空 marker 不产生文本,非空 marker 的正文可以使用。整体启用且无有效文本时会提示。
|
|
14
|
+
- PromptManager 导出可能没有包含内置槽位对应文本;跳过缺失引用并报告,不编造内容。完整预设的未知引用仍报错,避免无声丢失。
|
|
15
|
+
- 温度、top_p、模型、token 上限等参数仅归档,未设置 DSH 模型参数。
|
|
16
|
+
- 纯采样参数、只有分隔符的 Instruct、只有装填表达式的 Context 文件不包含独立提示词正文,会明确提示。包含 content/system_prompt 的文件可提取文本,但不执行其装填字段。不支持多预设库一键切换。
|
|
17
|
+
- 原始字段随备份保留,不代表相应行为已经兼容。实际生效文本在页面内可检查。
|
|
18
|
+
- 旧版已保存预设不自动启用此前被停用的条目;可手动启用,或下载原始文件后重新导入,使用新的内容优先规则。
|
|
19
|
+
|
|
20
|
+
## 验证
|
|
21
|
+
|
|
22
|
+
自动测试覆盖三种格式、排序与启停、原文宏、忽略触发/深度/角色、作者权限、版本冲突、备份恢复、提示词注入及跨作品隔离。test:presets 在正式前端的临时副本中实际上传、保存、刷新和下载,验证空文本提示;额外使用审查中固定的官方默认预设实测得到 78 字符有效文本。不调用模型,不修改正式作品。用户自己的预设仍需在导入后检查其具体内容。
|
|
23
|
+
|
|
24
|
+
参考:[SillyTavern Prompt Manager](https://docs.sillytavern.app/usage/prompts/prompt-manager/)。
|
package/docs/release-process.md
CHANGED
|
@@ -15,10 +15,12 @@ npm run release -- status
|
|
|
15
15
|
|
|
16
16
|
其他电脑传实际 DSH exe 路径,或设置 `CUIGENGJI_DESKTOP_EXE`。这些命令不会更新或关闭正式 DSH,不读真实作品;原生安装测试使用临时 profile 和虚构工作库。
|
|
17
17
|
|
|
18
|
+
0.4.4 的目标宿主为 0.2.1-rc.2,上一公开版 0.4.3 仅支持旧宿主。验收时将 `--desktop-exe` 指向新版,另加 `--old-desktop-exe "C:\旧版DSH\DeepSeek Harness.exe"`(或 `CUIGENGJI_PREVIOUS_DESKTOP_EXE`)提供旧运行时。脚本先用旧宿主运行旧插件,再用新版升级,不绕过新宿主的兼容检查。可以使用经过官方签名及校验的独立桌面解包目录,无需替换作者的正式安装。
|
|
19
|
+
|
|
18
20
|
| 命令 | 负责什么 |
|
|
19
21
|
| --- | --- |
|
|
20
22
|
| `plan` / `status` | 只读检查当前版本、工作树、GitHub Release、npm 精确版本与占位状态、可信发布开关、市场 PR |
|
|
21
|
-
| `prepare` | 要求已提交的 main
|
|
23
|
+
| `prepare` | 要求已提交的 main;跑测试、类型检查、构建一致性、实际包审计、新宿主工作台集成、桌面无 Git 全新安装与升级;上一稳定版和 v0.4.1 旧名称边界都验证 |
|
|
22
24
|
| `publish` | 复用准备好的包;推送提交并等待 CI;建立同提交的版本标签和草稿,核对资产后公开;等待 npm 工作流;下载公开版本并进行原生安装验收,再同步待审核市场条目 |
|
|
23
25
|
| `verify` | 不重新打包,补验收公开 GitHub URL / npm 精确版本和升级,恢复中断后的渠道同步 |
|
|
24
26
|
| `trust` | 首次通过 npm 官方 2FA 流程配置指定仓库 / 工作流的直接可信发布权限,核对后启用工作流;需要账号持有人的真实验证方式 |
|
|
@@ -38,9 +40,9 @@ npm run release -- status
|
|
|
38
40
|
| 维护项 | 固定职责 |
|
|
39
41
|
| --- | --- |
|
|
40
42
|
| [公开主仓库](https://github.com/mistnest/dsh-cuigengji-plugin) | 维护源码、使用文档、安装与升级指南、兼容范围、更新记录 |
|
|
41
|
-
| npm 包 `dsh-cuigengji-plugin` |
|
|
43
|
+
| npm 包 `dsh-cuigengji-plugin` | 普通用户首选安装渠道;稳定版 `latest`,预发布版 `next` |
|
|
42
44
|
| GitHub Release | 提供与 npm 完全相同的 `.tgz`、`SHA256SUMS`、版本说明和已验证的 DSH 版本 |
|
|
43
|
-
| 社区市场 | 维护名称、介绍、安装映射与收录状态;安装目标指向同一发布版本 |
|
|
45
|
+
| 社区市场 `dshmarket` | 通过 `awesome-dsh-plugin` 维护名称、介绍、安装映射与收录状态;安装目标指向同一发布版本 |
|
|
44
46
|
| 仓库内的 Agent 指南 | 指导环境确认、原生安装、自动迁移验收与失败恢复 |
|
|
45
47
|
|
|
46
48
|
GitHub 仓库、npm 包和市场显示名统一为 **`dsh-cuigengji-plugin`**,中文名为“催更姬”。旧 `dsh-cuigengji` 仅用于识别和迁移历史安装;内部工具、数据目录和稳定条目 ID 不随包名变化。首次跨名称更新按[名称迁移指南](package-name-migration.md)执行。市场贡献用的 fork 只用于提交条目和跟进收录。
|
|
@@ -49,25 +51,27 @@ GitHub 仓库、npm 包和市场显示名统一为 **`dsh-cuigengji-plugin`**,
|
|
|
49
51
|
|
|
50
52
|
先生成、审计、验收一份 `.tgz`,上传 GitHub Release;npm 发布复用这份归档并核对 SHA-256。不要从另一个工作目录重新打包同版本,也不要替换已经公开的同版本资产。公开内容变化必须递增版本。
|
|
51
53
|
|
|
52
|
-
##
|
|
54
|
+
## 社区市场
|
|
53
55
|
|
|
54
56
|
| 市场 | 收录方式 | 发布时核对 |
|
|
55
57
|
| --- | --- | --- |
|
|
56
58
|
| [dshmarket](https://github.com/dsh-market/dsh-market),npm 名 `dshmarket` | 向 [awesome-dsh-plugin](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin) 提交条目 | PR 是否合并、公开目录是否出现、中文和英文搜索及实际安装 |
|
|
57
|
-
| [dsh.market](https://dsh.market/),插件 `@dsh-market/plugin` | [市场仓库](https://github.com/2BingLing/dsh-market)自动扫描 GitHub topic | 公开索引、搜索结果、安装目标、安装后实际加载版本 |
|
|
58
59
|
|
|
59
|
-
收录、可搜索、点击安装成功是不同状态,逐项记录。市场是可选发现入口,用户也能直接通过 DSH
|
|
60
|
+
收录、可搜索、点击安装成功是不同状态,逐项记录。市场是可选发现入口,用户也能直接通过 DSH 原生插件管理安装。公开[收录指南](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin/blob/main/contributing.md#how-submissions-are-reviewed--收录如何评审)要求条目 PR 先通过自动检查,再由维护方审阅合并;合并后 README、网站与市场自动同步。自动检查通过不等于已经收录,文档中的通常同步时间也不是审核期限。
|
|
61
|
+
|
|
62
|
+
按作者 2026-10-11 的决定,不再维护 `2BingLing/dsh-market`(`dsh.market` / `@dsh-market/plugin`),不跟进该渠道的索引或安装器,也不把它列为发布验收要求。其他平台自动索引本仓库,不代表本项目已适配或推荐其安装入口。
|
|
60
63
|
|
|
61
|
-
##
|
|
64
|
+
## 当前渠道验收状态
|
|
62
65
|
|
|
63
66
|
以下是 2026-10-11 调研时的状态;每次发布前重新确认,不将历史结果当作当前验收。
|
|
64
67
|
|
|
65
|
-
- npm
|
|
66
|
-
- `dshmarket` 的[收录 PR #7064](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin/pull/7064)
|
|
67
|
-
- `dsh.market` 公开目录已有条目,其实际安装按钮仍需验收。
|
|
68
|
+
- GitHub Release 和 npm **0.4.3** 均已公开,安装包哈希一致;npm 默认标签、默认包名全新安装、0.4.2 同名升级与 0.4.1 旧名升级均已验收。测试没有 Git 或另装的 Node.js,原配置与合成作品保留,见 [npm 发布](npm-publishing.md)。
|
|
69
|
+
- `dshmarket` 的[收录 PR #7064](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin/pull/7064)已于 2026-10-17 合并,公开目录已出现本插件;本次发布另行更新已合并条目的安装包地址。收录不等于市场已同步新版,搜索与安装结果仍需单独核对。
|
|
68
70
|
- 补充官方插件卡片可读取的中文标题、图标和简短介绍,并在真实插件管理界面核对显示。
|
|
69
71
|
|
|
70
|
-
|
|
72
|
+
普通用户安装首选已改为包名。已经验收的 Release `.tgz` 保留为备用入口;源码仓库地址继续兼容,但不作为无 Git 用户的首选。
|
|
73
|
+
|
|
74
|
+
上传与公开之间要留出 npm 扫描时间;工作流会等待最多 30 分钟,再核对正式归档和版本标签。已经接受的上传超时后使用 `verify_only=true` 的工作流与 `release verify` 补验收,不重传。可信发布还需要在 npm 包设置中为同一工作流开启独立的 `Allow npm dist-tag` 权限,才能自动维护 `latest` / `next`。
|
|
71
75
|
|
|
72
76
|
## 每次发布的顺序
|
|
73
77
|
|
|
@@ -1,109 +1,109 @@
|
|
|
1
|
-
# 酒馆导入兼容性实测(2026-10-01)
|
|
2
|
-
|
|
3
|
-
> 后续进展:0.3.10 已补齐本文第 1–3 项中的有效内容提示、PromptManager 与简单系统提示词导入,宏改为保留原文且不再停用整条。下文保留 0.3.9 的审查结果;当前行为见 presets.md。
|
|
4
|
-
|
|
5
|
-
## 结论
|
|
6
|
-
|
|
7
|
-
当前 0.3.9(8d0c60b)支持将常见酒馆世界书和角色卡转换为催更姬写作资料,保存、去重和备份恢复链路可用;写作预设只有部分兼容,不能称为完整酒馆导入适配。能解析文件、能保留原始字段、能在写作中发挥作用是三个不同层次。
|
|
8
|
-
|
|
9
|
-
本轮只审查、实测并记录结果,未修改产品实现、正式小说或桌面安装,未调用模型。所有写入发生在独立临时 Store。第三方样本与源码放在被 Git 忽略的 test-results/tavern-audit,未提交到插件分发包。
|
|
10
|
-
|
|
11
|
-
## 对照基线与来源
|
|
12
|
-
|
|
13
|
-
从 SillyTavern 官方仓库 release 分支读取并固定提交 `06bde939fb1e9c4c8d8641d810f0a916b5bce127`,后续下载全部使用该提交,而非浮动分支。这里只说明本次检查基线,不宣称覆盖所有历史版本。
|
|
14
|
-
|
|
15
|
-
- PNG 解析:`src/character-card-parser.js` 的 read/write,tEXt、base64、ccv3 优先于 chara。
|
|
16
|
-
- 角色卡格式:`src/endpoints/characters.js` 的 importFromJson 和导入格式映射。
|
|
17
|
-
- 世界书:`public/scripts/world-info.js` 的 convertCharacterBook、importWorldInfo 和字段定义。
|
|
18
|
-
- 预设:`public/scripts/PromptManager.js` 的 handleFullExport、export、import;`public/scripts/openai.js`。
|
|
19
|
-
- 官方样本:`default/content/Eldoria.json`、`default/content/default_Seraphina.png`、`default/content/presets/openai/Default.json`。
|
|
20
|
-
- 其他官方预设样本:Instruct/Alpaca、Context/Default、System Prompt/Writer - Creative。
|
|
21
|
-
|
|
22
|
-
官方源码及固定版本地址清单:`test-results/tavern-audit/sources.json`。下载来源为 `https://raw.githubusercontent.com/SillyTavern/SillyTavern/06bde939fb1e9c4c8d8641d810f0a916b5bce127/` 加以上文件路径。
|
|
23
|
-
|
|
24
|
-
## 实测结果
|
|
25
|
-
|
|
26
|
-
| 对象 | 实际执行 | 结果 |
|
|
27
|
-
| --- | --- | --- |
|
|
28
|
-
| 官方 Eldoria 世界书 | 后端导入、浏览器文件选择/预览/确认 | 4 条原始条目导入为 4 条设定 |
|
|
29
|
-
| 官方 Seraphina PNG 卡 | 后端及浏览器导入 | 识别 V3,得到 1 张角色卡及 4 条内嵌世界书 |
|
|
30
|
-
| 从该 PNG 提取的 JSON 卡 | 再次上传 JSON | 识别相同原始内容,新增 0、跳过 5 |
|
|
31
|
-
| 官方默认 Chat Completion 预设 | 浏览器解析、整体启用并保存,后端组装提示词 | 12 个条目;2 个启用但内容均为空;有效文本 0 字符,无预设段注入 |
|
|
32
|
-
| 静态提示词 | 在同一预设界面新增明确文本并保存 | preset.read 返回该文本;静态注入行为另由现有预设测试验证 |
|
|
33
|
-
| 原始预设下载 | 点击界面下载按钮 | 与导入 JSON 完全一致,不含后续界面编辑 |
|
|
34
|
-
| 作品备份恢复 | 导出后导入第二个临时 Store | novel 对象深度相等,含原始导入字段 |
|
|
35
|
-
|
|
36
|
-
本轮重跑现有 `tavern-import.test.js` 和 `preset.test.js` 共 7 项测试,全通过。新增审查脚本为 `test-results/tavern-audit/audit.mjs`、`ui.mjs`;结果为 `results.json`、`ui-results.json`,截图为 `ui-import.png`、`ui-empty-preset.png`。UI 使用正式 Workbench 和真实 Store 的隔离预览,未重启/操作正式 DSH。
|
|
37
|
-
|
|
38
|
-
## 已完成的部分
|
|
39
|
-
|
|
40
|
-
### 世界书
|
|
41
|
-
|
|
42
|
-
- 接受酒馆 entries 对象以及 Character Book 的 entries 数组。
|
|
43
|
-
- content 原文进入设定正文,主关键词进入 aliases,标题使用 name/comment/首个关键词。
|
|
44
|
-
- 原文件禁用条目保留并标记 retired,启用条目标记 unconfirmed。
|
|
45
|
-
- 单本世界书最多 2000 条,文件最多 20 MB;预览、勾选、确认、部分补导及相同文件去重已实现。
|
|
46
|
-
|
|
47
|
-
### 角色卡
|
|
48
|
-
|
|
49
|
-
- V1/V2 JSON、PNG 的 chara/ccv3 数据块及 V3 通用字段可用;官方样本 V3 PNG 已实测。
|
|
50
|
-
- description、personality、scenario、first_mes、mes_example、alternate_greetings 转为可查阅正文。
|
|
51
|
-
- 内嵌 character_book 可一并导入。
|
|
52
|
-
- CRC 与损坏 PNG 检查、备份保留原始 JSON 及扩展字段已有测试。
|
|
53
|
-
|
|
54
|
-
### 预设
|
|
55
|
-
|
|
56
|
-
- 支持顶层 prompts/prompt_order 的 Chat Completion JSON,按选定排列保留顺序。
|
|
57
|
-
- 支持条目编辑、启停、排序、保存、生效文本预览与原始文件下载。
|
|
58
|
-
- 已启用且兼容的 system 文本会跟随催更姬开场提示词;宏、marker、历史深度插入、事件触发和其他消息角色目前停用。
|
|
59
|
-
|
|
60
|
-
## 具体缺口
|
|
61
|
-
|
|
62
|
-
### 1. 导入并启用成功不代表预设有效(优先处理)
|
|
63
|
-
|
|
64
|
-
官方默认预设的 Main Prompt 含 `{{char}}`、`{{user}}`,被当前规则停用;动态 marker 也停用。剩下两条启用文本为空,因此有效文本为 0。界面有逐条“待适配”和底部字符数,但整体启用与保存仍然成功,没有醒目的总结果说明。不是 0.3.8 注入位置失效,而是没有有效内容可注入。
|
|
65
|
-
|
|
66
|
-
建议:导入结果明确展示“可生效条目/字符数、停用原因、仅归档字段”,整体启用但有效文本为空时在主操作附近提醒。
|
|
67
|
-
|
|
68
|
-
### 2. 提示词管理器独立导出尚不支持
|
|
69
|
-
|
|
70
|
-
官方 PromptManager 导出形如 `{version,type,data:{prompts,prompt_order}}`,其中顺序形态也与完整 Chat Completion 预设不同。按该源码构造封装后,本插件直接拒绝。此样本是源码形态探针,不是假称由酒馆界面实际导出的文件。
|
|
71
|
-
|
|
72
|
-
建议:分别识别完整预设与提示词管理器导出,并归一化排列结构。
|
|
73
|
-
|
|
74
|
-
### 3. 系统提示词、Instruct、Context 尚不支持
|
|
75
|
-
|
|
76
|
-
官方 Writer - Creative 的 `{name,content,post_history}` 也被拒绝,尽管主体是可用的静态写作要求;Alpaca Instruct 与 Default Context 样本同样被拒绝。
|
|
77
|
-
|
|
78
|
-
建议:优先支持简单系统提示词文件。Instruct/Context 的模板语义需要单独设计,不应直接拼接所有字段。
|
|
79
|
-
|
|
80
|
-
### 4. 宏与角色扮演语义没有转换
|
|
81
|
-
|
|
82
|
-
世界书/角色卡的宏以原文保留,Agent 能读到 `{{char}}`、`{{user}}`;预设则直接停用含宏条目。官方 Eldoria 样本验证了前者。不能直接认定 `user` 等于作者、`char` 等于小说主角,尤其多角色小说并无固定扮演对象。
|
|
83
|
-
|
|
84
|
-
建议:提供明确绑定或编辑确认,分清可安全替换的名字宏、需要语境的角色扮演要求,以及暂不执行的脚本/变量宏。不需要为此实现酒馆完整运行时。
|
|
85
|
-
|
|
86
|
-
### 5. 部分可用资料仅保存在原始归档
|
|
87
|
-
|
|
88
|
-
角色卡 creator_notes、system_prompt、post_history_instructions、tags、V3 专属字段未进入普通角色正文;世界书 secondary_keys/keysecondary 未进入当前别名索引。素材与 PNG 图片本身不保存,CHARX/YAML/BYAF 等官方支持的其他导入路径也未接入。
|
|
89
|
-
|
|
90
|
-
建议:将有写作价值的作者说明与标签作为可见、可选择导入的内容,不自动提升角色卡提示词权限。对二级关键词保留其条件语义或允许用户选择作为检索词。
|
|
91
|
-
|
|
92
|
-
### 6. 分组、关系与跨文件去重不完整
|
|
93
|
-
|
|
94
|
-
导入条目目前不自动建立催更姬分组或“角色卡包含世界书”的关系。先导入独立 Eldoria,再导入含同样世界书的 Seraphina,实测得到 9 条资料;相同完整 JSON 才被去重,不会跨来源合并同名/同正文条目。
|
|
95
|
-
|
|
96
|
-
酒馆 World Info 的 group 属于其激活选择机制,不能直接当作催更姬的用户文件夹。可以按导入来源创建普通分组,另将原字段作为来源信息保留。
|
|
97
|
-
|
|
98
|
-
### 7. 反向导出边界
|
|
99
|
-
|
|
100
|
-
当前支持催更姬完整工作数据往返,以及预设“下载原始文件(不含编辑)”;尚无将修改后的设定、角色卡或预设重新生成酒馆格式的完整通路。若目标只是导入后在催更姬维护,现有备份机制可用;若目标是两边往返编辑,则尚未完成。
|
|
101
|
-
|
|
102
|
-
## 与小说工作台方向相符的后续顺序
|
|
103
|
-
|
|
104
|
-
1. 补齐导入结果摘要、有效文本为空提示,以及 PromptManager/简单系统提示词的格式识别。
|
|
105
|
-
2. 设计宏与角色扮演称谓的明确映射;让来源、未映射文本、作者说明可见可处理。
|
|
106
|
-
3. 增加导入目标分组、可选包含关系和重复候选预览,避免无声合并作者数据。
|
|
107
|
-
4. 只有确实需要回酒馆继续使用时,再补修改后导出与 CHARX 素材支持。
|
|
108
|
-
|
|
109
|
-
不把世界书关键词触发、概率、递归扫描、sticky/cooldown 等运行机制列为当前小说工作台必需项;这些与当前“Agent 按需查阅资料”的方向不同。保留原始字段及明确报告支持边界,比表面导入但行为不明更重要。
|
|
1
|
+
# 酒馆导入兼容性实测(2026-10-01)
|
|
2
|
+
|
|
3
|
+
> 后续进展:0.3.10 已补齐本文第 1–3 项中的有效内容提示、PromptManager 与简单系统提示词导入,宏改为保留原文且不再停用整条。下文保留 0.3.9 的审查结果;当前行为见 presets.md。
|
|
4
|
+
|
|
5
|
+
## 结论
|
|
6
|
+
|
|
7
|
+
当前 0.3.9(8d0c60b)支持将常见酒馆世界书和角色卡转换为催更姬写作资料,保存、去重和备份恢复链路可用;写作预设只有部分兼容,不能称为完整酒馆导入适配。能解析文件、能保留原始字段、能在写作中发挥作用是三个不同层次。
|
|
8
|
+
|
|
9
|
+
本轮只审查、实测并记录结果,未修改产品实现、正式小说或桌面安装,未调用模型。所有写入发生在独立临时 Store。第三方样本与源码放在被 Git 忽略的 test-results/tavern-audit,未提交到插件分发包。
|
|
10
|
+
|
|
11
|
+
## 对照基线与来源
|
|
12
|
+
|
|
13
|
+
从 SillyTavern 官方仓库 release 分支读取并固定提交 `06bde939fb1e9c4c8d8641d810f0a916b5bce127`,后续下载全部使用该提交,而非浮动分支。这里只说明本次检查基线,不宣称覆盖所有历史版本。
|
|
14
|
+
|
|
15
|
+
- PNG 解析:`src/character-card-parser.js` 的 read/write,tEXt、base64、ccv3 优先于 chara。
|
|
16
|
+
- 角色卡格式:`src/endpoints/characters.js` 的 importFromJson 和导入格式映射。
|
|
17
|
+
- 世界书:`public/scripts/world-info.js` 的 convertCharacterBook、importWorldInfo 和字段定义。
|
|
18
|
+
- 预设:`public/scripts/PromptManager.js` 的 handleFullExport、export、import;`public/scripts/openai.js`。
|
|
19
|
+
- 官方样本:`default/content/Eldoria.json`、`default/content/default_Seraphina.png`、`default/content/presets/openai/Default.json`。
|
|
20
|
+
- 其他官方预设样本:Instruct/Alpaca、Context/Default、System Prompt/Writer - Creative。
|
|
21
|
+
|
|
22
|
+
官方源码及固定版本地址清单:`test-results/tavern-audit/sources.json`。下载来源为 `https://raw.githubusercontent.com/SillyTavern/SillyTavern/06bde939fb1e9c4c8d8641d810f0a916b5bce127/` 加以上文件路径。
|
|
23
|
+
|
|
24
|
+
## 实测结果
|
|
25
|
+
|
|
26
|
+
| 对象 | 实际执行 | 结果 |
|
|
27
|
+
| --- | --- | --- |
|
|
28
|
+
| 官方 Eldoria 世界书 | 后端导入、浏览器文件选择/预览/确认 | 4 条原始条目导入为 4 条设定 |
|
|
29
|
+
| 官方 Seraphina PNG 卡 | 后端及浏览器导入 | 识别 V3,得到 1 张角色卡及 4 条内嵌世界书 |
|
|
30
|
+
| 从该 PNG 提取的 JSON 卡 | 再次上传 JSON | 识别相同原始内容,新增 0、跳过 5 |
|
|
31
|
+
| 官方默认 Chat Completion 预设 | 浏览器解析、整体启用并保存,后端组装提示词 | 12 个条目;2 个启用但内容均为空;有效文本 0 字符,无预设段注入 |
|
|
32
|
+
| 静态提示词 | 在同一预设界面新增明确文本并保存 | preset.read 返回该文本;静态注入行为另由现有预设测试验证 |
|
|
33
|
+
| 原始预设下载 | 点击界面下载按钮 | 与导入 JSON 完全一致,不含后续界面编辑 |
|
|
34
|
+
| 作品备份恢复 | 导出后导入第二个临时 Store | novel 对象深度相等,含原始导入字段 |
|
|
35
|
+
|
|
36
|
+
本轮重跑现有 `tavern-import.test.js` 和 `preset.test.js` 共 7 项测试,全通过。新增审查脚本为 `test-results/tavern-audit/audit.mjs`、`ui.mjs`;结果为 `results.json`、`ui-results.json`,截图为 `ui-import.png`、`ui-empty-preset.png`。UI 使用正式 Workbench 和真实 Store 的隔离预览,未重启/操作正式 DSH。
|
|
37
|
+
|
|
38
|
+
## 已完成的部分
|
|
39
|
+
|
|
40
|
+
### 世界书
|
|
41
|
+
|
|
42
|
+
- 接受酒馆 entries 对象以及 Character Book 的 entries 数组。
|
|
43
|
+
- content 原文进入设定正文,主关键词进入 aliases,标题使用 name/comment/首个关键词。
|
|
44
|
+
- 原文件禁用条目保留并标记 retired,启用条目标记 unconfirmed。
|
|
45
|
+
- 单本世界书最多 2000 条,文件最多 20 MB;预览、勾选、确认、部分补导及相同文件去重已实现。
|
|
46
|
+
|
|
47
|
+
### 角色卡
|
|
48
|
+
|
|
49
|
+
- V1/V2 JSON、PNG 的 chara/ccv3 数据块及 V3 通用字段可用;官方样本 V3 PNG 已实测。
|
|
50
|
+
- description、personality、scenario、first_mes、mes_example、alternate_greetings 转为可查阅正文。
|
|
51
|
+
- 内嵌 character_book 可一并导入。
|
|
52
|
+
- CRC 与损坏 PNG 检查、备份保留原始 JSON 及扩展字段已有测试。
|
|
53
|
+
|
|
54
|
+
### 预设
|
|
55
|
+
|
|
56
|
+
- 支持顶层 prompts/prompt_order 的 Chat Completion JSON,按选定排列保留顺序。
|
|
57
|
+
- 支持条目编辑、启停、排序、保存、生效文本预览与原始文件下载。
|
|
58
|
+
- 已启用且兼容的 system 文本会跟随催更姬开场提示词;宏、marker、历史深度插入、事件触发和其他消息角色目前停用。
|
|
59
|
+
|
|
60
|
+
## 具体缺口
|
|
61
|
+
|
|
62
|
+
### 1. 导入并启用成功不代表预设有效(优先处理)
|
|
63
|
+
|
|
64
|
+
官方默认预设的 Main Prompt 含 `{{char}}`、`{{user}}`,被当前规则停用;动态 marker 也停用。剩下两条启用文本为空,因此有效文本为 0。界面有逐条“待适配”和底部字符数,但整体启用与保存仍然成功,没有醒目的总结果说明。不是 0.3.8 注入位置失效,而是没有有效内容可注入。
|
|
65
|
+
|
|
66
|
+
建议:导入结果明确展示“可生效条目/字符数、停用原因、仅归档字段”,整体启用但有效文本为空时在主操作附近提醒。
|
|
67
|
+
|
|
68
|
+
### 2. 提示词管理器独立导出尚不支持
|
|
69
|
+
|
|
70
|
+
官方 PromptManager 导出形如 `{version,type,data:{prompts,prompt_order}}`,其中顺序形态也与完整 Chat Completion 预设不同。按该源码构造封装后,本插件直接拒绝。此样本是源码形态探针,不是假称由酒馆界面实际导出的文件。
|
|
71
|
+
|
|
72
|
+
建议:分别识别完整预设与提示词管理器导出,并归一化排列结构。
|
|
73
|
+
|
|
74
|
+
### 3. 系统提示词、Instruct、Context 尚不支持
|
|
75
|
+
|
|
76
|
+
官方 Writer - Creative 的 `{name,content,post_history}` 也被拒绝,尽管主体是可用的静态写作要求;Alpaca Instruct 与 Default Context 样本同样被拒绝。
|
|
77
|
+
|
|
78
|
+
建议:优先支持简单系统提示词文件。Instruct/Context 的模板语义需要单独设计,不应直接拼接所有字段。
|
|
79
|
+
|
|
80
|
+
### 4. 宏与角色扮演语义没有转换
|
|
81
|
+
|
|
82
|
+
世界书/角色卡的宏以原文保留,Agent 能读到 `{{char}}`、`{{user}}`;预设则直接停用含宏条目。官方 Eldoria 样本验证了前者。不能直接认定 `user` 等于作者、`char` 等于小说主角,尤其多角色小说并无固定扮演对象。
|
|
83
|
+
|
|
84
|
+
建议:提供明确绑定或编辑确认,分清可安全替换的名字宏、需要语境的角色扮演要求,以及暂不执行的脚本/变量宏。不需要为此实现酒馆完整运行时。
|
|
85
|
+
|
|
86
|
+
### 5. 部分可用资料仅保存在原始归档
|
|
87
|
+
|
|
88
|
+
角色卡 creator_notes、system_prompt、post_history_instructions、tags、V3 专属字段未进入普通角色正文;世界书 secondary_keys/keysecondary 未进入当前别名索引。素材与 PNG 图片本身不保存,CHARX/YAML/BYAF 等官方支持的其他导入路径也未接入。
|
|
89
|
+
|
|
90
|
+
建议:将有写作价值的作者说明与标签作为可见、可选择导入的内容,不自动提升角色卡提示词权限。对二级关键词保留其条件语义或允许用户选择作为检索词。
|
|
91
|
+
|
|
92
|
+
### 6. 分组、关系与跨文件去重不完整
|
|
93
|
+
|
|
94
|
+
导入条目目前不自动建立催更姬分组或“角色卡包含世界书”的关系。先导入独立 Eldoria,再导入含同样世界书的 Seraphina,实测得到 9 条资料;相同完整 JSON 才被去重,不会跨来源合并同名/同正文条目。
|
|
95
|
+
|
|
96
|
+
酒馆 World Info 的 group 属于其激活选择机制,不能直接当作催更姬的用户文件夹。可以按导入来源创建普通分组,另将原字段作为来源信息保留。
|
|
97
|
+
|
|
98
|
+
### 7. 反向导出边界
|
|
99
|
+
|
|
100
|
+
当前支持催更姬完整工作数据往返,以及预设“下载原始文件(不含编辑)”;尚无将修改后的设定、角色卡或预设重新生成酒馆格式的完整通路。若目标只是导入后在催更姬维护,现有备份机制可用;若目标是两边往返编辑,则尚未完成。
|
|
101
|
+
|
|
102
|
+
## 与小说工作台方向相符的后续顺序
|
|
103
|
+
|
|
104
|
+
1. 补齐导入结果摘要、有效文本为空提示,以及 PromptManager/简单系统提示词的格式识别。
|
|
105
|
+
2. 设计宏与角色扮演称谓的明确映射;让来源、未映射文本、作者说明可见可处理。
|
|
106
|
+
3. 增加导入目标分组、可选包含关系和重复候选预览,避免无声合并作者数据。
|
|
107
|
+
4. 只有确实需要回酒馆继续使用时,再补修改后导出与 CHARX 素材支持。
|
|
108
|
+
|
|
109
|
+
不把世界书关键词触发、概率、递归扫描、sticky/cooldown 等运行机制列为当前小说工作台必需项;这些与当前“Agent 按需查阅资料”的方向不同。保留原始字段及明确报告支持边界,比表面导入但行为不明更重要。
|