dsh-novel-write-engine 0.2.8 → 0.2.9
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/CHANGELOG.md +15 -0
- package/README.md +20 -18
- package/briefs/P3.md +1 -0
- package/briefs/P4.md +1 -1
- package/briefs/P8.md +1 -1
- package/lib/client.js +915 -117
- package/lib/index.d.ts +83 -8
- package/lib/index.js +1246 -225
- package/lib/types/client/dto.d.ts +12 -9
- package/lib/types/client/panel.d.ts +19 -1
- package/lib/types/client/viewmodel.d.ts +11 -4
- package/lib/types/constants.d.ts +2 -0
- package/lib/types/panel-contract.d.ts +2 -2
- package/lib/types/types.d.ts +18 -1
- package/package.json +8 -3
- package/presets/novel-write-engine.patch.yml +4 -0
- package/rulepacks/default.yaml +13 -5
- package/skills/entry.md +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,18 @@
|
|
|
1
|
+
## 0.2.9
|
|
2
|
+
|
|
3
|
+
0.2.9 是可信工作台与工具契约版本,不新增阶段、工具、操作、门控、语义项或导出种类。
|
|
4
|
+
|
|
5
|
+
- **归档卡证据链**:归档时把受保护章卡字段(title/scene_type/target_words/cast/goal/conflict/hook/notes/archived_at)写入 `ChapterRecord.archive_card` 及 digest;`novel_amend` 优先用该证据,outline 不可读且无前像时 fail closed,不再从 candidate 伪造旧卡。`chapters.yaml` 不可读时同样拒绝新建/改写归档卡。
|
|
6
|
+
- **工具契约**:把 26 个自由 JSON 入参收敛为类型化 schema,只剩 `state_delta` 值、`new_element_anchors` 等真正动态映射;`summary`/review/check/archive/handoff/worldbook 定形;删除“JSON 字符串也可以”的模型提示;加入 2,000 字引号/换行压力用例和 32KB 参数预算。
|
|
7
|
+
- **面板 v7**:新增 overview/chapters/characters/foreshadows/timeline/relationships/worldbook/quality/health section,带 `{total,returned,truncated,next_cursor}` 与 ETag/304;bundle 与 section 都支持 304,bundle 连续 304 按 30s/60s 退避;`chapter_detail`/`quality_detail` 详情不套 400 字自由文本上限;section 缓存键纳入 journal identity;`listHistory` 默认不读正文,面板基础 section 不读归档 review;所有 section 有 64KB 字节上限。人物/线索/设定/质量/健康改为语义卡片,章节改为可筛选/排序/翻页、可懒加载详情的表格,不再裸出 section JSON。
|
|
8
|
+
- **面板可信度**:修复未定义 CSS 变量导致的空维度条/焦点环、教程复制不可键盘操作、轮询失败仍称自动同步、项目选择无法回到跟随当前项目;新增顶部七栏、跟随当前项目、同步失败提示、浅/深色 token、12px 最小字号、模态背景 inert、图表可访问数值、本地时间、草稿未评审不显示 0/150、章节计数分离、长 hash 换行。
|
|
9
|
+
- **读模型**:health.present 改为“文件存在且无 error”;无目标书 `progress.percent=null`、coverage 回退 card coverage;quality 维度带 max;`listHistory` 默认不读正文;`stats` 在 chapters 不可读时返回 `state_errors/partial`;配置根缺失显示 missing;`summary.quality.averageScore` 明确为全书均分并新增 `last_ten_average`。
|
|
10
|
+
- **规则包**:修复角色短名子串 (`甲`/`甲某`)、数值单位 `一米八`、资源符号/角色绑定/证据词;LOCKED_DETAIL_DRIFT 检查每个有描述段落、取最高覆盖,仅当全部低于阈值才报告并引用最佳段落;新增可选 `genres.*.profile`(period_density/water_words/pleasure_density,仅 advisory),doctor 显示规则包版本与 profile 数;compiler 默认 period_density 与规则包同步为 10。
|
|
11
|
+
- **大纲**:卷 upsert 支持稳定 id 改名,拒绝重复 id/title/区间;Markdown 导入不再把声明 1–3 章的卷悄悄扩到 9 章。
|
|
12
|
+
- **文档**:README、DESIGN、docs/tools、docs/states、docs/rulepack 与 0.2.9 验收记录同步;DSH 侧 malformed tool JSON 诊断包含工具名/参数片段,并把 `MALFORMED_RESPONSE` 纳入有限重试。
|
|
13
|
+
- **验证**:真实模型 P3 20 章跑通到 archive(P1/P2/P4/P6 为确定性夹具);第二轮以 `agnes-2.5-flash` 复跑都市/玄幻/西方奇幻三题材各 1 章完整 P1→archive;静态 Chromium 390/768/1440 浅/深色视觉检查;真实宿主临时 profile 空态 1440/390 截图;未做有项目态真实宿主、触屏真机与屏幕阅读器验收。
|
|
14
|
+
- 测试:94 个文件 / 1000 项通过;覆盖率 93.47 / 89.01 / 96.82 / 93.47,client 函数 85.59%,逐文件门禁通过;client 158.50 KB(react-dom 外置)。
|
|
15
|
+
|
|
1
16
|
# Changelog
|
|
2
17
|
|
|
3
18
|
## 0.2.8
|
package/README.md
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
[](https://www.npmjs.com/package/dsh-novel-write-engine)
|
|
11
11
|
[](https://github.com/ThzxxArt/dsh-novel-write-engine/actions/workflows/ci.yml)
|
|
12
12
|
[](https://github.com/ThzxxArt/dsh-novel-write-engine/releases)
|
|
13
|
+
[](https://github.com/ThzxxArt/dsh-novel-write-engine/releases/tag/v0.2.9)
|
|
13
14
|
[](#1-兼容性)
|
|
14
15
|
[](#1-兼容性)
|
|
15
16
|
[](LICENSE)
|
|
@@ -19,9 +20,9 @@
|
|
|
19
20
|
</div>
|
|
20
21
|
|
|
21
22
|
> [!IMPORTANT]
|
|
22
|
-
> 当前版本 **0.2.
|
|
23
|
+
> 当前版本 **0.2.9**。宿主范围:DSH `>=0.2.1-rc.2 <0.3.0-0`;Node `>=24.9.0`。
|
|
23
24
|
>
|
|
24
|
-
> 0.2.
|
|
25
|
+
> 0.2.9 是可信工作台与工具契约版本:归档卡证据链、26 个自由 JSON 入参类型化、面板 v7 分栏/64KB 预算/ETag、规则包精度、稳定卷 id 与一批读模型修复。没有新增阶段、工具、操作、门控、语义项或导出种类;`archive_card` 是可选新字段,旧项目只读回退并在无法证明时 fail closed。
|
|
25
26
|
|
|
26
27
|
---
|
|
27
28
|
|
|
@@ -203,7 +204,7 @@ pnpm --version # CLI 安装插件时需要
|
|
|
203
204
|
corepack enable
|
|
204
205
|
corepack prepare pnpm@11.28.9 --activate
|
|
205
206
|
|
|
206
|
-
dsh plugin --profile web add dsh-novel-write-engine@0.2.
|
|
207
|
+
dsh plugin --profile web add dsh-novel-write-engine@0.2.9
|
|
207
208
|
```
|
|
208
209
|
|
|
209
210
|
安装后重启 DSH,或刷新 Web 页面。
|
|
@@ -251,10 +252,10 @@ corepack pnpm build
|
|
|
251
252
|
corepack pnpm pack
|
|
252
253
|
```
|
|
253
254
|
|
|
254
|
-
得到 `dsh-novel-write-engine-0.2.
|
|
255
|
+
得到 `dsh-novel-write-engine-0.2.9.tgz`,复制到目标机器后:
|
|
255
256
|
|
|
256
257
|
```bash
|
|
257
|
-
dsh plugin --profile web add /absolute/path/to/dsh-novel-write-engine-0.2.
|
|
258
|
+
dsh plugin --profile web add /absolute/path/to/dsh-novel-write-engine-0.2.9.tgz
|
|
258
259
|
```
|
|
259
260
|
|
|
260
261
|
tarball 已包含 `lib/`、`rulepacks/`、`briefs/`、`skills/`、`presets/` 和两层 patch,不需要在目标机器重新构建。
|
|
@@ -266,7 +267,7 @@ tarball 已包含 `lib/`、`rulepacks/`、`briefs/`、`skills/`、`presets/` 和
|
|
|
266
267
|
|
|
267
268
|
1. 左侧栏进入 **插件**;
|
|
268
269
|
2. 点 **添加插件**;
|
|
269
|
-
3. 填 npm 包名 `dsh-novel-write-engine`(或精确版本 `dsh-novel-write-engine@0.2.
|
|
270
|
+
3. 填 npm 包名 `dsh-novel-write-engine`(或精确版本 `dsh-novel-write-engine@0.2.9`);
|
|
270
271
|
4. 安装后启用,刷新页面,新开会话。
|
|
271
272
|
|
|
272
273
|
插件页安装的是当前 profile 的依赖;Desktop 的插件页管理的是 `desktop` profile。
|
|
@@ -340,7 +341,7 @@ tarball 已包含 `lib/`、`rulepacks/`、`briefs/`、`skills/`、`presets/` 和
|
|
|
340
341
|
- 双栏工作台:阶段轨、门控、提示、旧数据、全书规划、质量趋势、健康度、最近活动;
|
|
341
342
|
- 底部章节卡。
|
|
342
343
|
|
|
343
|
-
|
|
344
|
+
面板按概览/章节/人物/线索/设定/质量/健康七栏读取;每栏有独立 section、窗口元数据和 64KB 字节上限,失败时显式显示同步错误。它**只读**,所有写操作仍在对话/工具里。
|
|
344
345
|
|
|
345
346
|
---
|
|
346
347
|
|
|
@@ -615,25 +616,25 @@ corepack pnpm test
|
|
|
615
616
|
|
|
616
617
|
- **运行在宿主进程里**:Host 半边在 DSH 进程内执行,不受工作区沙箱限制。安装本插件等于允许它在 DSH 进程权限下读写你给它的项目目录和 `stateDir`。
|
|
617
618
|
- **不向外联网**:Host 侧没有 `fetch`、HTTP 客户端或遥测;运行期依赖只有 `yaml`。它不读取环境变量里的 API Key,也不会把正文发到第三方服务。
|
|
618
|
-
- **面板只读**:`/api/novel-write-engine/panel` 只接受 `GET`/`HEAD`,复用 DSH connection 的认证与 Origin
|
|
619
|
+
- **面板只读**:`/api/novel-write-engine/panel` 只接受 `GET`/`HEAD`,复用 DSH connection 的认证与 Origin 校验;项目选择器只改后续请求的 query root 与浏览器 `localStorage`,不改浏览器地址栏。
|
|
619
620
|
- **安装来源**:优先从 npm 官方 registry 安装,并核对包名、发布者与版本;离线环境用自己构建的 tarball 并记录 SHA-256。不要从聊天记录里复制来路不明的 Git 地址并给 `allowBuilds` 授权。
|
|
620
621
|
|
|
621
622
|
---
|
|
622
623
|
|
|
623
624
|
## 升级与卸载
|
|
624
625
|
|
|
625
|
-
### 升级到 0.2.
|
|
626
|
+
### 升级到 0.2.9
|
|
626
627
|
|
|
627
|
-
0.2.
|
|
628
|
+
0.2.9 没有破坏性 schema 迁移、阶段/门控/导出或配置键变更;`ChapterRecord.archive_card` 是可选新字段,旧记录缺它时按只读回退处理,无法证明的归档卡修改会 fail closed。
|
|
628
629
|
|
|
629
630
|
```bash
|
|
630
631
|
dsh plugin --profile web remove dsh-novel-write-engine
|
|
631
|
-
dsh plugin --profile web add dsh-novel-write-engine@0.2.
|
|
632
|
+
dsh plugin --profile web add dsh-novel-write-engine@0.2.9
|
|
632
633
|
```
|
|
633
634
|
|
|
634
|
-
升级后刷新页面、新开会话。面板教程版本从 0.2.
|
|
635
|
+
升级后刷新页面、新开会话。面板教程版本从 0.2.8 升到 0.2.9;旧标签页显示“需要刷新”时刷新即可。
|
|
635
636
|
|
|
636
|
-
历史版本的升级说明见 [CHANGELOG.md](CHANGELOG.md)。0.2.
|
|
637
|
+
历史版本的升级说明见 [CHANGELOG.md](CHANGELOG.md)。0.2.9 不再在 `main` 保留旧版方案与验收稿;需要溯源时使用对应发布 tag 或 Release 快照。
|
|
637
638
|
|
|
638
639
|
### 从源码目录升级
|
|
639
640
|
|
|
@@ -788,15 +789,16 @@ presets/ # 内置 Agent 预设 patch
|
|
|
788
789
|
tests/ # 单测、集成、falsify、e2e
|
|
789
790
|
```
|
|
790
791
|
|
|
791
|
-
### 本次 0.2.
|
|
792
|
+
### 本次 0.2.9 验证
|
|
792
793
|
|
|
793
794
|
以本次发布实际跑出的结果为准:
|
|
794
795
|
|
|
795
|
-
- `corepack pnpm test`:**
|
|
796
|
-
- 覆盖率:**语句 93.
|
|
796
|
+
- `corepack pnpm test`:**94 个测试文件 / 1000 项全部通过**;
|
|
797
|
+
- 覆盖率:**语句 93.47% / 分支 89.01% / 函数 96.82% / 行 93.47%**;逐文件门禁通过;client 函数覆盖 85.59%;client bundle 158.50 KB(react-dom 外置);
|
|
797
798
|
- `typecheck`、`lint`、`build`:通过;
|
|
798
|
-
- `check:hygiene`(
|
|
799
|
-
-
|
|
799
|
+
- `check:hygiene`(160 files,0 v8 ignore)、`test:isolated`(63 源文件)、`validate:rulepack`、`check:pack`(26 files)、`check:artifacts`、`check:install`(26 packages)、`check:preset`(13 packages)、`check:host`、`check:crash`:通过;
|
|
800
|
+
- 真实模型 P3 20 章:已跑(`agnes-2.5-flash`,总正文 16,625 字,P1/P2/P4/P6 为确定性夹具);第二轮复跑都市/玄幻/西方奇幻三题材各 1 章完整 P1→archive;三题材矩阵另有 `tests/generality.spec.ts` 覆盖。
|
|
801
|
+
- 视觉:静态 Chromium 390/768/1440 与浅/深色截图已看;真实宿主临时 profile 0.2.9 的空态 1440/390 已截图;有项目态真实宿主、触屏真机与屏幕阅读器未验收。
|
|
800
802
|
- 隐私守卫:`src / briefs / skills / presets / rulepacks / docs` 与根文档均无具体项目身份。
|
|
801
803
|
|
|
802
804
|
具体数字会随代码变化;发布前请以重新跑出的结果为准,不要把历史数字当保证。
|
package/briefs/P3.md
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
- 字数 ≥ {{min_words}}(引擎口径:汉字 + 英文单词 + 数字 + 标点)。
|
|
8
8
|
- 单段 ≤ 90 字;段与段之间空一行。
|
|
9
9
|
- 对话只用英文直引号 `"`;**中文弯引号 `“ ”`、直角引号 `「 」` 都是 ILLEGAL_QUOTE blocker**;禁全角分号 `;`、禁 `...`。
|
|
10
|
+
- 提交时 `content` 是 JSON 字符串:段落换行写 `\n`,正文里的每个英文直引号写 `\"`;不要把整段内容再包一层 JSON。
|
|
10
11
|
- 不写 Markdown:禁 `#`、`**`、`---`、`>`、表格。
|
|
11
12
|
- 不写「Day 1」「第X卷」「读者」「作者」这类出戏标签。
|
|
12
13
|
|
package/briefs/P4.md
CHANGED
package/briefs/P8.md
CHANGED
|
@@ -100,7 +100,7 @@
|
|
|
100
100
|
- 第一人称的叙述者若在 `narrator` 里声明为 `主角(第一人称「我」)`,正文用「我」也视为出现,但角色键仍写 `主角`。
|
|
101
101
|
- 每个新实体写 `action: "created"`(正文出现、kind 可确定);已存在实体写 `updated` 或 `no_change`,引擎会按台账归一化冲突并给 warning。
|
|
102
102
|
- `world` 新实体还要写 `kind: "location"|"ability"|"artifact"|"faction"|"rule"` 和 `description`。
|
|
103
|
-
- `state_delta`
|
|
103
|
+
- `state_delta` 必须是 JSON 对象;五个 section 都要有,值形状按本节字段填写。不要把它再包成 JSON 字符串。
|
|
104
104
|
- 未知伏笔 key、未声明角色、`no_change` 缺原因都会被 `ENGINE_DELTA_UNVERIFIED` 拒绝,引擎不会猜。
|
|
105
105
|
- 不要传正文、不要传评分、不要传轮次。`handoff` 可选,用于覆盖卷/幕/进度。
|
|
106
106
|
|