dsh-openwrite 0.2.9 → 0.2.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -13,6 +13,7 @@
13
13
  <a href="package.json"><img src="https://img.shields.io/badge/dsh-0.1.2--rc.1-2563eb" alt="dsh 0.1.2-rc.1"></a>
14
14
  <a href="package.json"><img src="https://img.shields.io/badge/Node-%E2%89%A522.19-15803d" alt="Node >= 22.19"></a>
15
15
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-Apache--2.0-0f766e" alt="Apache-2.0"></a>
16
+ <a href="https://dsh-plugin.org/plugins/lipu-jpg/openwrite"><img src="https://dsh-plugin.org/badges/listed.svg" alt="Listed on dsh-plugin.org"></a>
16
17
  </p>
17
18
 
18
19
  <p align="center">
@@ -28,7 +29,7 @@
28
29
 
29
30
  ## 快速安装
30
31
 
31
- **0.2.8 标准插件包**兼容 dsh **0.1.2-rc.1**。可下载版本、三平台验收结果和 SHA-256 以 [GitHub Release](https://github.com/LiPu-jpg/Openwrite/releases/tag/v0.2.8) 附件为准;验收方法见 [发布验收](docs/RELEASE_ACCEPTANCE.md)。默认使用 npm `latest` 渠道;商城所需的精确预览版兼容性、验证范围和安装限制见 [DSH STORE 接入](docs/DSH_STORE.md)。
32
+ **0.2.9 标准插件包**兼容 dsh **0.1.2-rc.1**。可下载版本、三平台验收结果和 SHA-256 以 [GitHub Release](https://github.com/LiPu-jpg/Openwrite/releases/latest) 附件为准;验收方法见 [发布验收](docs/RELEASE_ACCEPTANCE.md)。默认使用 npm `latest` 渠道;商城所需的精确预览版兼容性、验证范围和安装限制见 [DSH STORE 接入](docs/DSH_STORE.md)。
32
33
 
33
34
  已有匹配版本 dsh 的用户执行:
34
35
 
package/docs/INSTALL.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # 安装、更新与卸载
2
2
 
3
- 安装已发布的版本;可下载产物、SHA-256 和实际平台结果以 [GitHub Release](https://github.com/LiPu-jpg/Openwrite/releases/tag/v0.2.8) 附件为准。验收方法见 [验收报告](RELEASE_ACCEPTANCE.md)。
3
+ 安装已发布的版本;可下载产物、SHA-256 和实际平台结果以 [GitHub Release](https://github.com/LiPu-jpg/Openwrite/releases/latest) 附件为准。验收方法见 [验收报告](RELEASE_ACCEPTANCE.md)。
4
4
 
5
5
  ## 标准安装
6
6
 
@@ -112,3 +112,9 @@ bridge 的高级 `mode: external` / `baseUrl` 配置继续支持外部 Core,
112
112
  小说工具的只读 / 计划模式 / Workspace 绑定是 **dsh 策略与桥接检查**,不是操作系统沙箱。受管理 Python 与安装子进程只继承启动、代理和证书所需环境变量,不把无关 API Key 传给子进程。
113
113
 
114
114
  反馈请提供宿主版本、系统与架构、Release 版本、安装阶段及脱敏错误。来源、许可证和校验值见 Release 附件及包内 `release/`。不要提交 API Key、浏览器登录 URL 或作品全文。
115
+
116
+ ## 作品信息与推理模型预算
117
+
118
+ 在「任务 → 导入与导出 → 编辑作品信息」填写或修改书名、作者署名和语言。旧作品也可补齐作者,无需手工编辑配置文件。保存冲突时保留输入;请取消编辑并重新载入最新信息后再修改。未填写作者仍不能进行交付导出。`novel_project_init` 也支持可选 `author` 与 `language`。
119
+
120
+ 写章、事实提取和状态结算(包括重试)统一使用「任务 → 模型」中所选模型的输出 token 预算,不再在非创作阶段偷偷降到 4096/8192。推理模型的隐藏推理通常也占用输出额度:若仍出现截断,请在服务商允许的范围内提高所选模型的输出预算(例如 32768 或 49152),同时核对上下文窗口。正文目标字数与 token 预算是两回事;较高上限不等于一定消耗该数量,也不能保证所有模型都支持它。此次验证使用模型替身,未进行真实模型计费测试。
@@ -1,4 +1,25 @@
1
- # 0.2.7 发布验收记录
1
+ # 发布验收记录
2
+
3
+ ## CI 运行范围
4
+
5
+ 仅修改 README.md 或 docs 下的 Markdown 文档时,跳过插件维护与跨平台发布验收。预设、技能、脚本、依赖、资源和工作流变更仍触发检查;混合文档与代码的提交也照常检查。开发分支通过 PR 检查,避免同一提交在分支 push 与 PR 上重复执行;主分支合并后保留验收,两个工作流均可手动触发。发布必须使用完整验收通过的产物,跳过检查不能作为发布通过的证据。
6
+
7
+ 新建作品的验收请求最多等待 60 秒(原为 15 秒),保留成功耗时和失败诊断;不重试写请求,超时仍失败。此调整容纳慢速运行器,不代表初始化耗时问题已被修复。
8
+
9
+ ## 0.2.9
10
+
11
+ [Release](https://github.com/LiPu-jpg/Openwrite/releases/tag/v0.2.9) 与 npm dsh-openwrite@0.2.9 使用 [主分支 CI](https://github.com/LiPu-jpg/Openwrite/actions/runs/34532531326) 验收过的同一份包;来源提交为 8ecada040db2c3ddf699d7a5bc1ddd86336b88fe,SHA-256 为 2a885d03f931505432b78424922c63e7ac75c70a10ab57b7c7503d059af7b627。npm 下载后再次核对一致。
12
+
13
+ - 六组原生平台安装、启动、浏览器和卸载,以及 GitHub 源码安装、固定 alpha 依赖图兼容检查全部通过;详见 Release 的 release-acceptance.json。
14
+ - 287 项组件测试通过;编辑器随包资源改为固定同源脚本加载,并验证在不允许 unsafe-eval 的浏览器策略下正常初始化和渲染 Markdown。
15
+ - 日常安装使用 npm latest;验收、兼容和回退保留精确版本。运行中不自动升级。宿主基线仍为 dsh 0.1.2-rc.1,Core 5.8.1 / contract 1。
16
+ - 真实模型验证 not-run,模型调用 0 次。不将静态扫描警告全部消除作为本次结论。
17
+
18
+ ## 0.2.8
19
+
20
+ [Release](https://github.com/LiPu-jpg/Openwrite/releases/tag/v0.2.8) 与 npm dsh-openwrite@0.2.8 的 SHA-256 均为 3a54f30fec03a5a64338f6cbc8216cafdc733cdf3622691fdbc8f029d78e4902。验收见 [CI](https://github.com/LiPu-jpg/Openwrite/actions/runs/34368570869):Intel 首次超时,未修改代码重跑通过;历史失败保留。npm 分发另在 macOS arm64 / Node 24 的隔离环境完成 25 项安装、运行、浏览器及卸载检查。真实模型验证 not-run。
21
+
22
+ ## 0.2.7 记录
2
23
 
3
24
  下载与最终结果以 [Release 附件](https://github.com/LiPu-jpg/Openwrite/releases/tag/v0.2.7) 的 `release-acceptance.json` 为准。报告绑定唯一 `.tgz` 的 SHA-256。失败、未运行、取消和跳过不计为通过;发布直接提升 CI 产物。不覆盖 `v0.2.6` / `v0.2.5` 附件。
4
25
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-openwrite",
3
- "version": "0.2.9",
3
+ "version": "0.2.10",
4
4
  "description": "OpenWrite 长篇小说领域后端接入 DeepSeek Harness:统一创作 Agent 预设 + 原生创作工作台",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -42,6 +42,7 @@ const WRITABLE_PATHS = new Set([
42
42
  'manuscript/acceptance/reconcile',
43
43
  'manuscript/acceptance/ack',
44
44
  'project/init',
45
+ 'project/metadata',
45
46
  'model',
46
47
  'model/test',
47
48
  'model/embedding/test',
@@ -1399,6 +1399,8 @@ export function registerNovelTools(ctx, clientFactory, options) {
1399
1399
  parameters: {
1400
1400
  novel_id: { type: 'string', required: true, description: 'Project id, e.g. "my_novel" (2-64 chars: letters, digits, "-", "_").' },
1401
1401
  title: { type: 'string', required: true, description: 'Book title (max 120 characters).' },
1402
+ author: { type: 'string', description: 'Author credit for delivery export (max 120 characters).' },
1403
+ language: { type: 'string', description: 'Book language tag, e.g. zh-CN or en (default zh-CN).' },
1402
1404
  project_path: { type: 'string', description: 'Target directory on the server; omit to use the server default location.' },
1403
1405
  template: { type: 'string', enum: ['default', 'demo_short'], description: 'Project template (default "default").' },
1404
1406
  },
@@ -1412,6 +1414,10 @@ export function registerNovelTools(ctx, clientFactory, options) {
1412
1414
  if (!args.title.trim() || args.title.length > 120)
1413
1415
  throw new Error('title must be non-empty and at most 120 characters');
1414
1416
  const body = { novel_id: args.novel_id, title: args.title };
1417
+ if (args.author !== undefined)
1418
+ body['author'] = args.author;
1419
+ if (args.language !== undefined)
1420
+ body['language'] = args.language;
1415
1421
  if (args.project_path !== undefined)
1416
1422
  body['project_path'] = args.project_path;
1417
1423
  if (args.template !== undefined)