dsh-cuigengji-plugin 0.4.2 → 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.
Files changed (67) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +1 -1
  3. package/cordis.patch.yml +3 -3
  4. package/docs/CHANGELOG.md +15 -0
  5. package/docs/agent-installation.md +19 -12
  6. package/docs/architecture.md +74 -74
  7. package/docs/desktop-migration-20260930.md +26 -26
  8. package/docs/development.md +7 -3
  9. package/docs/getting-started.md +17 -7
  10. package/docs/layout-progress.md +31 -31
  11. package/docs/market-listing.md +5 -3
  12. package/docs/npm-publishing.md +35 -11
  13. package/docs/package-name-migration.md +3 -3
  14. package/docs/planning-board.md +44 -44
  15. package/docs/presets.md +24 -24
  16. package/docs/release-process.md +45 -10
  17. package/docs/tavern-compatibility-audit-20261001.md +109 -109
  18. package/docs/test-report.md +139 -129
  19. package/docs/upgrade.md +3 -1
  20. package/docs/usage-review.md +13 -13
  21. package/lib/client.js +19 -14
  22. package/package.json +19 -14
  23. package/skills/cuigengji-maintenance/SKILL.md +2 -2
  24. package/src/adapters/dsh/prompt.js +36 -36
  25. package/src/adapters/dsh/rpc.js +96 -96
  26. package/src/adapters/dsh/skills.js +17 -17
  27. package/src/adapters/mcp/actions.js +6 -6
  28. package/src/adapters/mcp/client.js +172 -172
  29. package/src/adapters/mcp/server.js +40 -40
  30. package/src/application/bindings/session.js +72 -72
  31. package/src/application/queries/context.js +15 -15
  32. package/src/application/store.js +412 -412
  33. package/src/client/features/chapters/clipboard.ts +27 -27
  34. package/src/client/features/chapters/history.ts +11 -11
  35. package/src/client/features/chapters/index.jsx +118 -118
  36. package/src/client/features/chapters/sync.ts +155 -155
  37. package/src/client/features/chapters/useChapterSync.ts +39 -39
  38. package/src/client/features/context/index.jsx +22 -22
  39. package/src/client/features/memory/index.jsx +73 -73
  40. package/src/client/features/planning/Decorations.tsx +1 -1
  41. package/src/client/features/planning/Pages.tsx +11 -11
  42. package/src/client/features/planning/data.js +16 -16
  43. package/src/client/index.tsx +130 -130
  44. package/src/client/launcher.tsx +78 -78
  45. package/src/client/shared/creation.tsx +34 -34
  46. package/src/client/shared/detail-page.tsx +61 -61
  47. package/src/client/shared/drafts.js +17 -17
  48. package/src/client/shared/evidence.jsx +11 -11
  49. package/src/client/shared/groups.tsx +34 -34
  50. package/src/client/shared/preferences.tsx +104 -104
  51. package/src/client/shared/select-style.ts +25 -25
  52. package/src/client/shared/state.js +95 -95
  53. package/src/client/shared/ui.jsx +19 -19
  54. package/src/client/shared/workspace.tsx +11 -11
  55. package/src/client/style.ts +274 -274
  56. package/src/client/visual.ts +190 -190
  57. package/src/contracts/actions.js +19 -19
  58. package/src/contracts/planning.ts +52 -52
  59. package/src/domain/manuscript.ts +4 -4
  60. package/src/domain/planning/index.ts +113 -113
  61. package/src/domain/planning/model.ts +59 -59
  62. package/src/domain/preset/index.js +89 -89
  63. package/src/index.js +91 -91
  64. package/src/infrastructure/migrations/legacy.js +96 -96
  65. package/src/infrastructure/migrations/tavern.js +78 -78
  66. package/src/infrastructure/persistence/atomic-store.ts +80 -80
  67. package/src/infrastructure/persistence/project-layout.ts +1 -1
@@ -2,36 +2,44 @@
2
2
 
3
3
  整体渠道分工与发布验收顺序见[渠道维护与发布流程](release-process.md)。本文负责 npm 首次发布、可信发布配置和按包名安装验收。
4
4
 
5
- npm 包、GitHub 仓库和市场显示名统一为 **`dsh-cuigengji-plugin`**。首次发布成功后,用户可在 DSH「插件 → 添加插件 → 包名或地址」中填写 `dsh-cuigengji-plugin`,固定版本填写 `dsh-cuigengji-plugin@0.4.2`。「安装源」选择默认、npm 官方源或大陆镜像,不填写 GitHub 地址。这条路线不需要 Git。旧包名安装的用户按[名称迁移指南](package-name-migration.md)更新。
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 发布与 dsh-market 收录互相独立:npm 包可用不代表市场已收录,市场收录状态仍以[收录申请](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin/pull/7064)和公开目录为准。
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.2`;旧 `v0.4.1` 资产的包名不同,保留原样,不改名上传。
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.2 --repo mistnest/dsh-cuigengji-plugin --pattern dsh-cuigengji-plugin-0.4.2.tgz --pattern SHA256SUMS --dir "$env:TEMP\cuigengji-npm-0.4.2"
19
- Get-FileHash -Algorithm SHA256 "$env:TEMP\cuigengji-npm-0.4.2\dsh-cuigengji-plugin-0.4.2.tgz"
20
- npm pack "$env:TEMP\cuigengji-npm-0.4.2\dsh-cuigengji-plugin-0.4.2.tgz" --ignore-scripts --dry-run --json > "$env:TEMP\cuigengji-npm-0.4.2\pack-files.json"
21
- node scripts/audit-release.mjs "$env:TEMP\cuigengji-npm-0.4.2\pack-files.json"
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.2\dsh-cuigengji-plugin-0.4.2.tgz" --access public --ignore-scripts --registry=https://registry.npmjs.org --tag latest
28
- npm view dsh-cuigengji-plugin@0.4.2 version repository.url dist.integrity --registry=https://registry.npmjs.org
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
 
41
+ 维护者的固定入口为 `npm run release -- trust`:使用 npm 12.2.0 官方 CLI,先读取现有配置,只在缺少匹配权限时添加 `mistnest/dsh-cuigengji-plugin` 的 `publish-npm.yml` 可信发布;不删除其他连接。核对直接发布权限后启用仓库变量。该首次步骤仍需要使用真实安全密钥完成 npm 验证,不能由密码、邮箱验证码或恢复码代替。
42
+
35
43
  首次包已经发布后,在 npm 的 `dsh-cuigengji-plugin` 包设置中添加 GitHub Actions trusted publisher:
36
44
 
37
45
  - Organization or user:`mistnest`
@@ -39,17 +47,33 @@ npm view dsh-cuigengji-plugin@0.4.2 version repository.url dist.integrity --regi
39
47
  - Workflow filename:`publish-npm.yml`
40
48
  - Environment name:留空(本工作流不声明 environment)
41
49
  - Allowed actions:启用直接 `npm publish`。只允许 staging 不能完成本工作流的正式发布。
50
+ - Allow npm dist-tag:在包设置中为同一仓库和 `publish-npm.yml` 启用。上传与管理 `latest` / `next` 是独立权限;CLI 的 `trust` 命令目前不能代替这个网页设置。
42
51
 
43
52
  配置位置和字段以 [npm 官方可信发布说明](https://docs.npmjs.com/trusted-publishers/) 为准。此连接只给指定仓库的指定工作流发布该包的权限,不需要把长期 npm token 放进 GitHub Secrets。
44
53
 
45
54
  确认 npm 配置完成后,在公开仓库 Settings → Secrets and variables → Actions → Variables 新建仓库变量 `NPM_TRUSTED_PUBLISHING_ENABLED=true`,启用自动发布。未启用时工作流跳过,不将首次账号验证尚未完成误报成插件安装失败。
46
55
 
56
+ 首次建立可信发布授权后,必须在两天内通过该授权真实发布一个新版本,完成 npm 对仓库身份的绑定;超时未验证的授权会失效。重跑已发布版本时,本工作流只核对原归档并跳过上传,不能代替首次可信发布验收。按 [npm 官方说明](https://docs.npmjs.com/trusted-publishers/#trusted-publisher-configuration-expiry)准备下一次补丁发布,确认 GitHub Actions 的上传步骤实际成功后,才将自动发布标为已验收。
57
+
58
+ 后续维护 Agent 负责构建、检查、发布和渠道同步,账号持有人保管安全密钥与恢复码。维护流程、仓库和工作流名称可以写入交接文档;密码、一次性验证码、恢复码和访问 token 不作为项目交接资料。首次身份验证或账号授权变更需要持有人操作时,明确说明具体页面和步骤,不使用恢复码代替日常发布验证。
59
+
47
60
  之后照常完成测试,提交编译产物,建立与 `package.json` 版本一致的 `v<版本>` 标签,并发布带 `.tgz` 和 `SHA256SUMS` 的 GitHub Release。`.github/workflows/publish-npm.yml` 会自动:
48
61
 
49
62
  1. 检出版本标签,验证包名、版本与公开仓库身份,运行测试、类型检查及编译产物核对。
50
63
  2. 下载 GitHub 已发布成品包,核对 SHA-256,并审计归档,保证 npm 与 GitHub 使用同一份包。
51
64
  3. 使用 npm trusted publishing 发布。稳定版使用 `latest`,预发布版使用 `next`。
52
- 4. 从 npm 重新下载对应版本,核对包身份与 SHA-256。已有版本只有在归档完全一致时才跳过上传;任何不一致都会失败。
65
+ 4. 等待 npm 的发布前扫描,最多 30 分钟,每 30 秒查一次精确版本。归档公开后核对包身份、SHA-256 和完整性,再确认或修正 `latest` / `next`。已有版本只有在归档完全一致时才跳过上传;任何不一致都会失败。
66
+
67
+ CLI 显示 `+ 包名@版本` 不足以证明可用。发布流程还要核对精确版本、`dist.integrity`、`latest` / `next` 指向和原生安装;公开包只有 `0.0.0-stage` 时视为未完成。若直接上传返回成功但精确版本不存在、`npm stage list` 也为空,保留状态为“公开版本待确认”,不要反复重传同版本或擅自消耗恢复码。
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)。不要重新发布同版本来改标签。
53
77
 
54
78
  旧 Release 或工作流中断可以在 GitHub Actions 的「Publish npm package」中手动运行,填写已有的 Release 标签。没有 trusted publisher 或权限不符时停止处理,不改用不明来源的凭据。
55
79
 
@@ -58,7 +82,7 @@ npm view dsh-cuigengji-plugin@0.4.2 version repository.url dist.integrity --regi
58
82
  首次发布后,在没有 Git 的隔离 Windows profile 中运行 DSH 原生安装及迁移验收:
59
83
 
60
84
  ```powershell
61
- node scripts/check-release-install.mjs --desktop-exe "C:\你的DSH安装目录\DeepSeek Harness.exe" --npm-package dsh-cuigengji-plugin@0.4.2 --report "C:\验收目录\npm-install.json"
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"
62
86
  ```
63
87
 
64
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.2/dsh-cuigengji-plugin-0.4.2.tgz","enabled":false}
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.2`。读取真实安装返回,确认新包已落盘。安装失败时旧包继续保留,停止后续步骤。
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.2`、原数据根和升级前作品 ID。只有就绪且完整性验证通过才报告完成。
54
+ 从用户原来的快捷方式启动 DSH。确认仅新包被启用,工具调用和前端入口各只有一份;再按[更新与数据迁移](upgrade.md)调用 `cuigengji_maintenance` 的 `status` / `verify`,核对 `0.4.4`、原数据根和升级前作品 ID。只有就绪且完整性验证通过才报告完成。
55
55
 
56
56
  ### 4. 清理旧依赖
57
57
 
@@ -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/)。
@@ -2,14 +2,47 @@
2
2
 
3
3
  本文件记录催更姬长期维护的发布方式。后续维护者和 Agent 以此为入口,再按链接使用现有安装、迁移和发布工具。普通用户看[安装说明](getting-started.md)或把[安装与更新指南](agent-installation.md)交给 Agent。
4
4
 
5
+ ## 固定发布入口
6
+
7
+ 作者说“发布更新”后,维护 Agent 先汇总这次实际修改,确定递增版本、更新 `package.json` / 锁文件 / `CHANGELOG.md`,构建并提交对应源码和产物,然后执行以下入口。作者不需要自己运行这些命令。
8
+
9
+ ```powershell
10
+ npm run release -- plan
11
+ npm run release -- prepare --desktop-exe "D:\Apps\DeepSeek Harness\DeepSeek Harness.exe"
12
+ npm run release -- publish
13
+ npm run release -- status
14
+ ```
15
+
16
+ 其他电脑传实际 DSH exe 路径,或设置 `CUIGENGJI_DESKTOP_EXE`。这些命令不会更新或关闭正式 DSH,不读真实作品;原生安装测试使用临时 profile 和虚构工作库。
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
+
20
+ | 命令 | 负责什么 |
21
+ | --- | --- |
22
+ | `plan` / `status` | 只读检查当前版本、工作树、GitHub Release、npm 精确版本与占位状态、可信发布开关、市场 PR |
23
+ | `prepare` | 要求已提交的 main;跑测试、类型检查、构建一致性、实际包审计、新宿主工作台集成、桌面无 Git 全新安装与升级;上一稳定版和 v0.4.1 旧名称边界都验证 |
24
+ | `publish` | 复用准备好的包;推送提交并等待 CI;建立同提交的版本标签和草稿,核对资产后公开;等待 npm 工作流;下载公开版本并进行原生安装验收,再同步待审核市场条目 |
25
+ | `verify` | 不重新打包,补验收公开 GitHub URL / npm 精确版本和升级,恢复中断后的渠道同步 |
26
+ | `trust` | 首次通过 npm 官方 2FA 流程配置指定仓库 / 工作流的直接可信发布权限,核对后启用工作流;需要账号持有人的真实验证方式 |
27
+
28
+ 每个版本的安装包、SHA-256、验收 JSON、`release-state.json`、更新公告草稿保存在 `releases/v<版本>/`,由 Git 忽略。状态绑定源提交与已测试归档;源、说明或包字节变化时拒绝继续。失败后先看报告中具体步骤,重跑原命令;同版本不重打包、不覆盖公开资产、不强推标签。并发运行会被锁阻止;已退出进程留下的锁可由脚本恢复。
29
+
30
+ 准备阶段发现代码或验收脚本错误时,先修复并提交,再用 `prepare --reset --desktop-exe <exe>` 重新验收。此选项仅允许尚无 GitHub Release、npm 版本或本地/远端标签的版本;原归档与记录移入本版 `preparation-history/`,不删除。出现任何发布资产后不能重置,公开内容变化须递增版本。
31
+
32
+ 默认完整发布必须已有 npm 可信发布授权。首次授权未完成而作者仍要发布 GitHub 版本时,用 `publish --github-only`,明确记录“GitHub 可用,npm 待完成”;之后用 `verify` 补齐。不得把 `0.0.0-stage` 占位版本、npm 命令返回 0 或只下载成功当作完成。npm 成功须同时核对精确版本、同一份归档、完整性、`latest` / `next` 指向与 DSH 无 Git 原生安装和升级。
33
+
34
+ 市场入口与主发布分开记录:当前工具只更新已授权的收录 PR #7064 中本插件的 `tarball`,保留介绍;PR 已合并或关闭后提示核对公开目录并准备独立条目更新,不自动改其他条目或发送评论。实际市场搜索和点击安装尚未验证时,报告保持“未验证”。
35
+
36
+ 账号首次授权完成后,后续 npm 上传由 GitHub Actions OIDC 处理;不依赖本地 npm 登录 token,也不保存密码或恢复码。首次可信授权必须两天内真实发布一个新版本,才能完成 npm 对仓库的验证。
37
+
5
38
  ## 一套源码,同一份成品包
6
39
 
7
40
  | 维护项 | 固定职责 |
8
41
  | --- | --- |
9
42
  | [公开主仓库](https://github.com/mistnest/dsh-cuigengji-plugin) | 维护源码、使用文档、安装与升级指南、兼容范围、更新记录 |
10
- | npm 包 `dsh-cuigengji-plugin` | 首次发布并验收后,作为普通用户首选安装渠道;稳定版 `latest`,预发布版 `next` |
43
+ | npm 包 `dsh-cuigengji-plugin` | 普通用户首选安装渠道;稳定版 `latest`,预发布版 `next` |
11
44
  | GitHub Release | 提供与 npm 完全相同的 `.tgz`、`SHA256SUMS`、版本说明和已验证的 DSH 版本 |
12
- | 社区市场 | 维护名称、介绍、安装映射与收录状态;安装目标指向同一发布版本 |
45
+ | 社区市场 `dshmarket` | 通过 `awesome-dsh-plugin` 维护名称、介绍、安装映射与收录状态;安装目标指向同一发布版本 |
13
46
  | 仓库内的 Agent 指南 | 指导环境确认、原生安装、自动迁移验收与失败恢复 |
14
47
 
15
48
  GitHub 仓库、npm 包和市场显示名统一为 **`dsh-cuigengji-plugin`**,中文名为“催更姬”。旧 `dsh-cuigengji` 仅用于识别和迁移历史安装;内部工具、数据目录和稳定条目 ID 不随包名变化。首次跨名称更新按[名称迁移指南](package-name-migration.md)执行。市场贡献用的 fork 只用于提交条目和跟进收录。
@@ -18,25 +51,27 @@ GitHub 仓库、npm 包和市场显示名统一为 **`dsh-cuigengji-plugin`**,
18
51
 
19
52
  先生成、审计、验收一份 `.tgz`,上传 GitHub Release;npm 发布复用这份归档并核对 SHA-256。不要从另一个工作目录重新打包同版本,也不要替换已经公开的同版本资产。公开内容变化必须递增版本。
20
53
 
21
- ## 两个市场分别跟进
54
+ ## 社区市场
22
55
 
23
56
  | 市场 | 收录方式 | 发布时核对 |
24
57
  | --- | --- | --- |
25
58
  | [dshmarket](https://github.com/dsh-market/dsh-market),npm 名 `dshmarket` | 向 [awesome-dsh-plugin](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin) 提交条目 | PR 是否合并、公开目录是否出现、中文和英文搜索及实际安装 |
26
- | [dsh.market](https://dsh.market/),插件 `@dsh-market/plugin` | [市场仓库](https://github.com/2BingLing/dsh-market)自动扫描 GitHub topic | 公开索引、搜索结果、安装目标、安装后实际加载版本 |
27
59
 
28
- 收录、可搜索、点击安装成功是不同状态,逐项记录。市场是可选发现入口,用户也能直接通过 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`),不跟进该渠道的索引或安装器,也不把它列为发布验收要求。其他平台自动索引本仓库,不代表本项目已适配或推荐其安装入口。
29
63
 
30
- ## 当前待完成事项
64
+ ## 当前渠道验收状态
31
65
 
32
66
  以下是 2026-10-11 调研时的状态;每次发布前重新确认,不将历史结果当作当前验收。
33
67
 
34
- - npm `dsh-cuigengji-plugin` 首次发布与无 Git 安装仍需验收。账号与首次发布见 [npm 发布](npm-publishing.md),未通过前使用已公开的 Release 成品包。
35
- - `dshmarket` 的[收录 PR #7064](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin/pull/7064)尚未合并;不宣称该市场已经可搜索安装。
36
- - `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 合并,公开目录已出现本插件;本次发布另行更新已合并条目的安装包地址。收录不等于市场已同步新版,搜索与安装结果仍需单独核对。
37
70
  - 补充官方插件卡片可读取的中文标题、图标和简短介绍,并在真实插件管理界面核对显示。
38
71
 
39
- npm 首次发布和无 Git 安装验收通过后,再把普通用户安装首选改成包名。已经验收的 Release `.tgz` 保留为备用入口。
72
+ 普通用户安装首选已改为包名。已经验收的 Release `.tgz` 保留为备用入口;源码仓库地址继续兼容,但不作为无 Git 用户的首选。
73
+
74
+ 上传与公开之间要留出 npm 扫描时间;工作流会等待最多 30 分钟,再核对正式归档和版本标签。已经接受的上传超时后使用 `verify_only=true` 的工作流与 `release verify` 补验收,不重传。可信发布还需要在 npm 包设置中为同一工作流开启独立的 `Allow npm dist-tag` 权限,才能自动维护 `latest` / `next`。
40
75
 
41
76
  ## 每次发布的顺序
42
77