dsh-openwrite 0.2.28 → 0.2.34

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 (125) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +49 -8
  3. package/THIRD_PARTY_NOTICES.md +4 -3
  4. package/companions.mjs +508 -0
  5. package/cordis.patch.yml +0 -2
  6. package/docs/CLOSED_ISSUE_FOLLOWUPS.md +1 -1
  7. package/docs/COMPANION_PLUGINS.md +142 -0
  8. package/docs/CONTEXT_SLOTS.md +1 -1
  9. package/docs/COST_MEASUREMENT.md +2 -2
  10. package/docs/DEVELOPMENT.md +6 -11
  11. package/docs/DSH_STORE.md +14 -2
  12. package/docs/EDITOR_SAFETY_REPAIRS.md +2 -2
  13. package/docs/INSTALL.md +112 -4
  14. package/docs/ISSUES_121_123.md +4 -4
  15. package/docs/ISSUES_140_142.md +58 -0
  16. package/docs/ISSUES_149_150_151.md +77 -0
  17. package/docs/ISSUE_123_FOLLOWUP.md +3 -2
  18. package/docs/ISSUE_146_REVIEW_EVIDENCE.md +53 -0
  19. package/docs/LEARNING.md +1 -1
  20. package/docs/MOBILE_READINESS.md +62 -0
  21. package/docs/PLUGIN_MAINTENANCE.md +1 -3
  22. package/docs/RELEASE_ACCEPTANCE.md +20 -3
  23. package/docs/REVIEW_ROUND_22.md +67 -0
  24. package/docs/REVIEW_ROUND_23.md +48 -0
  25. package/docs/REVIEW_ROUND_25.md +51 -0
  26. package/docs/SELECTION_UPGRADE_REPAIRS.md +2 -2
  27. package/docs/TOOLS.md +181 -604
  28. package/docs/WORKFLOWS.md +5 -5
  29. package/package.json +17 -21
  30. package/packages/openwrite-bridge/lib/client.d.ts +0 -1
  31. package/packages/openwrite-bridge/lib/client.js +90 -9
  32. package/packages/openwrite-bridge/lib/contracts-generated.js +2 -1
  33. package/packages/openwrite-bridge/lib/dog-delivery.d.ts +1 -0
  34. package/packages/openwrite-bridge/lib/dog-delivery.js +3 -1
  35. package/packages/openwrite-bridge/lib/dog-review.js +15 -3
  36. package/packages/openwrite-bridge/lib/domain.d.ts +27 -0
  37. package/packages/openwrite-bridge/lib/domain.js +250 -29
  38. package/packages/openwrite-bridge/lib/host-llm.d.ts +188 -0
  39. package/packages/openwrite-bridge/lib/host-llm.js +657 -0
  40. package/packages/openwrite-bridge/lib/host-web.d.ts +61 -0
  41. package/packages/openwrite-bridge/lib/host-web.js +166 -0
  42. package/packages/openwrite-bridge/lib/index.d.ts +4 -0
  43. package/packages/openwrite-bridge/lib/index.js +150 -6
  44. package/packages/openwrite-bridge/lib/managed-runtime.d.ts +47 -2
  45. package/packages/openwrite-bridge/lib/managed-runtime.js +176 -34
  46. package/packages/openwrite-bridge/lib/tool-policy.js +37 -12
  47. package/packages/openwrite-bridge/lib/tools.js +1223 -1227
  48. package/packages/openwrite-bridge/package.json +7 -5
  49. package/packages/studio-panel/lib/client.js +123207 -121534
  50. package/packages/studio-panel/lib/client.js.map +1 -1
  51. package/packages/studio-panel/lib/types/client/LaunchOpenWrite.d.ts +10 -0
  52. package/packages/studio-panel/lib/types/client/ModelView.d.ts +28 -4
  53. package/packages/studio-panel/lib/types/client/OpenWriteSettings.d.ts +64 -0
  54. package/packages/studio-panel/lib/types/client/SceneWorkbench.d.ts +2 -0
  55. package/packages/studio-panel/lib/types/client/SearchSettings.d.ts +2 -0
  56. package/packages/studio-panel/lib/types/client/SerialWritingView.d.ts +2 -1
  57. package/packages/studio-panel/lib/types/client/TurnMutationSummary.d.ts +2 -0
  58. package/packages/studio-panel/lib/types/client/VditorBody.d.ts +1 -1
  59. package/packages/studio-panel/lib/types/client/api.d.ts +41 -2
  60. package/packages/studio-panel/lib/types/client/browser-download.d.ts +4 -0
  61. package/packages/studio-panel/lib/types/client/companions.d.ts +46 -0
  62. package/packages/studio-panel/lib/types/client/dto.d.ts +22 -0
  63. package/packages/studio-panel/lib/types/client/locales.d.ts +1 -1
  64. package/packages/studio-panel/lib/types/client/workspace-chrome.d.ts +41 -0
  65. package/packages/studio-panel/package.json +5 -3
  66. package/plugin.mjs +159 -20
  67. package/preset-definition.mjs +144 -4
  68. package/presets/openwrite/agent.cordis.yml +7 -9
  69. package/presets/openwrite/ops-integration.mjs +28 -0
  70. package/presets/openwrite/preset.yml +2 -1
  71. package/presets/openwrite/skills/canon/SKILL.md +3 -3
  72. package/presets/openwrite/skills/delivery-artifact-query/SKILL.md +41 -0
  73. package/presets/openwrite/skills/dialoguequality/SKILL.md +16 -17
  74. package/presets/openwrite/skills/dog-delivery-verification/SKILL.md +113 -0
  75. package/presets/openwrite/skills/export-book/SKILL.md +3 -3
  76. package/presets/openwrite/skills/foreshadow/SKILL.md +1 -1
  77. package/presets/openwrite/skills/foreshadowing-system/SKILL.md +16 -25
  78. package/presets/openwrite/skills/import-artifact-query/SKILL.md +30 -0
  79. package/presets/openwrite/skills/learn/SKILL.md +3 -3
  80. package/presets/openwrite/skills/novel-creator/SKILL.md +10 -10
  81. package/presets/openwrite/skills/novel-reviewer/SKILL.md +11 -11
  82. package/presets/openwrite/skills/progress/SKILL.md +1 -1
  83. package/presets/openwrite/skills/review-artifact-query/SKILL.md +41 -0
  84. package/presets/openwrite/skills/review-chapter/SKILL.md +2 -2
  85. package/presets/openwrite/skills/revise-span/SKILL.md +5 -5
  86. package/presets/openwrite/skills/style-system/SKILL.md +13 -6
  87. package/presets/openwrite/skills/truth-validation/SKILL.md +9 -12
  88. package/presets/openwrite/skills/workflow-manager/SKILL.md +13 -13
  89. package/presets/openwrite/skills/world-query/SKILL.md +16 -11
  90. package/presets/openwrite/skills/write-next/SKILL.md +1 -1
  91. package/release/{openwrite-5.8.20-py3-none-any.whl → openwrite-5.8.30-py3-none-any.whl} +0 -0
  92. package/release/runtime-manifest.json +4 -13
  93. package/release/source.json +21 -21
  94. package/release/wheels/licenses/OPENSSL-3.6.3-LICENSE.txt +225 -0
  95. package/scripts/maintenance.mjs +67 -7
  96. package/scripts/plugin-doctor.mjs +179 -0
  97. package/scripts/prepare.mjs +26 -4
  98. package/scripts/safe-upgrade.mjs +38 -5
  99. package/dog-tools.mjs +0 -13
  100. package/presets/openwrite/skills/dog-delivery-query/SKILL.md +0 -42
  101. package/presets/openwrite/skills/dog-import-query/SKILL.md +0 -29
  102. package/presets/openwrite/skills/dog-review-query/SKILL.md +0 -42
  103. package/scripts/dog/delivery-stage.js +0 -32
  104. package/scripts/dog/import-chapter.js +0 -20
  105. package/scripts/dog/import-record.js +0 -35
  106. package/scripts/dog/review-dimension.js +0 -41
  107. package/scripts/dog/review-record.js +0 -42
  108. package/vendor/dsh-dog/LICENSE +0 -29
  109. package/vendor/dsh-dog/README.md +0 -114
  110. package/vendor/dsh-dog/UPSTREAM.md +0 -30
  111. package/vendor/dsh-dog/cordis.patch.yml +0 -14
  112. package/vendor/dsh-dog/lib/client.js +0 -2960
  113. package/vendor/dsh-dog/lib/client.js.map +0 -1
  114. package/vendor/dsh-dog/lib/core--byUPJL8.js +0 -2191
  115. package/vendor/dsh-dog/lib/core-BiEBMLz3.d.ts +0 -495
  116. package/vendor/dsh-dog/lib/core.d.ts +0 -2
  117. package/vendor/dsh-dog/lib/core.js +0 -2
  118. package/vendor/dsh-dog/lib/index.d.ts +0 -143
  119. package/vendor/dsh-dog/lib/index.js +0 -1230
  120. package/vendor/dsh-dog/package.json +0 -110
  121. package/vendor/dsh-dog/schemas/schema-0.2/graph.schema.json +0 -139
  122. package/vendor/dsh-dog/schemas/schema-0.2/report.schema.json +0 -87
  123. package/vendor/dsh-dog/schemas/schema-0.2/run.schema.json +0 -259
  124. package/vendor/dsh-dog/schemas/schema-0.2/runtime-event.schema.json +0 -105
  125. package/vendor/dsh-dog/schemas/schema-0.2/verification.schema.json +0 -40
package/docs/TOOLS.md CHANGED
@@ -1,15 +1,15 @@
1
1
  # 小说工具参考
2
2
 
3
- 本候选共 95 个 novel_* 工具。由 tools.ts 的注册定义生成;说明与参数保留实际 schema 原文,避免手册与接口漂移。用浏览器或编辑器搜索工具名即可定位。
3
+ 本候选共 56 个 novel_* 工具。由 tools.ts 的注册定义生成;说明与参数保留实际 schema 原文,避免手册与接口漂移。用浏览器或编辑器搜索工具名即可定位。
4
4
 
5
5
  ## 先选入口
6
6
 
7
- - 看当前作品:`novel_status`;查文件:`novel_doc_read`;看本章输入:`novel_context_preview`。上下文来源与预算见 [上下文槽位](CONTEXT_SLOTS.md)。
8
- - 修改大纲/设定/创作罗盘:先用 `novel_structured_change_plan` 预览并核对;只有作者已明确授权的精确变更才使用兼容的直接写入工具,如 `novel_focus`。
7
+ - 看当前作品:`novel_status`;查文件:`novel_doc(action="read"`;看本章输入:`novel_context_preview`。上下文来源与预算见 [上下文槽位](CONTEXT_SLOTS.md)。
8
+ - 修改大纲/设定/创作罗盘:先用 `novel_change_plan`(action="structured")预览并核对;只有作者已明确授权的精确变更才使用兼容的直接写入工具,如 `novel_focus`。
9
9
  - 正文确认:`novel_manuscript_acceptance {}` 只读查 operation_id,核对影响后用 `novel_manuscript_acceptance_reconcile {"action":"acknowledge","operation_id":"实际返回值","confirm":true}` 确认;这不会补跑结算或审稿。
10
10
  - 结算缺失:核对目标章节后使用 `novel_settle_backfill {"chapter_ids":["ch_001"],"only_missing":true}`,再查返回任务;会调用模型并写入记忆/运行态资料,不重写正文。不要把 canon 未定论一律解释为缺结算。
11
- - 模型与嵌入:Chat 与 Embedding 档案独立;配置不等于连接成功。`novel_model_test` / `novel_model_embedding_test` 会实际请求提供方,可能计费。
12
- - 写章返回 task_id 后用 `novel_task_get` 查询;取消用 `novel_task_cancel`。超时/网络错误后先查任务与运行,避免重复提交。
11
+ - 模型与嵌入:Chat 与 Embedding 档案独立;配置不等于连接成功。`novel_model_profiles(action="list"`(action="test")/ `novel_embedding_profiles(action="list"`(action="test")会实际请求提供方,可能计费。
12
+ - 写章返回 task_id 后用 `novel_task`(action="get")查询;取消用 action="cancel"。超时/网络错误后先查任务与运行,避免重复提交。
13
13
 
14
14
  ## 参数和错误
15
15
 
@@ -22,97 +22,58 @@
22
22
  | 工具 | 影响 | 必填参数 |
23
23
  | --- | --- | --- |
24
24
  | [novel_arc_reconcile](#novel_arc_reconcile) | 会提交操作或保存文件;具体取决于 action/参数 | `data` |
25
- | [novel_asset_create](#novel_asset_create) | 会提交操作或保存文件;具体取决于 action/参数 | `kind`, `id` |
26
- | [novel_asset_read](#novel_asset_read) | 只读查询(可更新检索缓存) | `kind`, `id` |
27
- | [novel_asset_update](#novel_asset_update) | 会提交操作或保存文件;具体取决于 action/参数 | `kind`, `id`, `revision` |
28
- | [novel_assets_list](#novel_assets_list) | 只读查询(可更新检索缓存) | 无 |
29
- | [novel_assets_package_export](#novel_assets_package_export) | 会提交操作或保存文件;具体取决于 action/参数 | 无 |
30
- | [novel_assets_package_import](#novel_assets_package_import) | 会提交操作或保存文件;具体取决于 action/参数 | `upload_id` |
31
- | [novel_assets_package_preview](#novel_assets_package_preview) | 会提交操作或保存文件;具体取决于 action/参数 | `package_base64` |
25
+ | [novel_assets](#novel_assets) | 会提交操作或保存文件;具体取决于 action/参数 | `action` |
26
+ | [novel_assets_package](#novel_assets_package) | 会提交操作或保存文件;具体取决于 action/参数 | `action` |
27
+ | [novel_change_plan](#novel_change_plan) | 会提交操作或保存文件;具体取决于 action/参数 | `action` |
32
28
  | [novel_chapter_delete](#novel_chapter_delete) | 会提交操作或保存文件;具体取决于 action/参数 | `path`, `confirm`, `version` |
33
29
  | [novel_chapter_delete_batch](#novel_chapter_delete_batch) | 会提交操作或保存文件;具体取决于 action/参数 | `keep_through`, `confirm`, `version` |
34
30
  | [novel_chapter_run_action](#novel_chapter_run_action) | 会提交操作或保存文件;具体取决于 action/参数 | `action` |
35
- | [novel_chapter_scenes](#novel_chapter_scenes) | 只读查询(可更新检索缓存) | `chapter_id` |
36
- | [novel_chapter_work](#novel_chapter_work) | 只读查询(可更新检索缓存) | `chapter_id` |
37
- | [novel_context_preview](#novel_context_preview) | 只读查询(可更新检索缓存) | 无 |
38
- | [novel_continuity](#novel_continuity) | 只读查询(可更新检索缓存) | 无 |
31
+ | [novel_chapter_scenes](#novel_chapter_scenes) | 会提交操作或保存文件;具体取决于 action/参数 | `chapter_id` |
32
+ | [novel_chapter_work](#novel_chapter_work) | 会提交操作或保存文件;具体取决于 action/参数 | `chapter_id` |
33
+ | [novel_context_preview](#novel_context_preview) | 会提交操作或保存文件;具体取决于 action/参数 | 无 |
34
+ | [novel_continuity](#novel_continuity) | 会提交操作或保存文件;具体取决于 action/参数 | 无 |
39
35
  | [novel_diagnostics](#novel_diagnostics) | 会提交操作或保存文件;具体取决于 action/参数 | 无 |
40
- | [novel_doc_create](#novel_doc_create) | 会提交操作或保存文件;具体取决于 action/参数 | `kind`, `name` |
41
- | [novel_doc_read](#novel_doc_read) | 只读查询(可更新检索缓存) | `path` |
42
- | [novel_doc_write](#novel_doc_write) | 会提交操作或保存文件;具体取决于 action/参数 | `path`, `content` |
43
- | [novel_document_change_plan](#novel_document_change_plan) | 会提交操作或保存文件;具体取决于 action/参数 | `action` |
36
+ | [novel_doc](#novel_doc) | 会提交操作或保存文件;具体取决于 action/参数 | `action` |
44
37
  | [novel_drift_entry](#novel_drift_entry) | 会提交操作或保存文件;具体取决于 action/参数 | `group_id`, `chapter_id`, `kind`, `impact`, `note`, `expected_revision` |
45
- | [novel_embedding_profile_delete](#novel_embedding_profile_delete) | 会提交操作或保存文件;具体取决于 action/参数 | `profile_id` |
46
- | [novel_embedding_profile_save](#novel_embedding_profile_save) | 会提交操作或保存文件;具体取决于 action/参数 | `profile` |
47
- | [novel_embedding_profile_select](#novel_embedding_profile_select) | 会提交操作或保存文件;具体取决于 action/参数 | `profile_id` |
48
- | [novel_embedding_profiles](#novel_embedding_profiles) | 只读查询(可更新检索缓存) | 无 |
49
- | [novel_export](#novel_export) | 会提交操作或保存文件;具体取决于 action/参数 | 无 |
50
- | [novel_export_preflight](#novel_export_preflight) | 只读查询(可更新检索缓存) | 无 |
38
+ | [novel_embedding_profiles](#novel_embedding_profiles) | 会提交操作或保存文件;具体取决于 action/参数 | `action` |
39
+ | [novel_export](#novel_export) | 会提交操作或保存文件;具体取决于 action/参数 | `action` |
51
40
  | [novel_focus](#novel_focus) | 会提交操作或保存文件;具体取决于 action/参数 | `goal` |
52
41
  | [novel_foreshadowing](#novel_foreshadowing) | 会提交操作或保存文件;具体取决于 action/参数 | `action`, `node_id` |
53
- | [novel_import](#novel_import) | 会提交操作或保存文件;具体取决于 action/参数 | `content` |
54
- | [novel_import_preview](#novel_import_preview) | 会提交操作或保存文件;具体取决于 action/参数 | `content` |
55
- | [novel_manuscript_acceptance](#novel_manuscript_acceptance) | 只读查询(可更新检索缓存) | 无 |
42
+ | [novel_import](#novel_import) | 会提交操作或保存文件;具体取决于 action/参数 | `action` |
43
+ | [novel_manuscript_acceptance](#novel_manuscript_acceptance) | 会提交操作或保存文件;具体取决于 action/参数 | 无 |
56
44
  | [novel_manuscript_acceptance_reconcile](#novel_manuscript_acceptance_reconcile) | 会提交操作或保存文件;具体取决于 action/参数 | `action` |
57
45
  | [novel_manuscript_edit_action](#novel_manuscript_edit_action) | 会提交操作或保存文件;具体取决于 action/参数 | `action` |
58
46
  | [novel_manuscript_import_action](#novel_manuscript_import_action) | 会提交操作或保存文件;具体取决于 action/参数 | `action` |
59
- | [novel_manuscript_metrics](#novel_manuscript_metrics) | 只读查询(可更新检索缓存) | `chapter_id` |
47
+ | [novel_manuscript_metrics](#novel_manuscript_metrics) | 会提交操作或保存文件;具体取决于 action/参数 | `chapter_id` |
60
48
  | [novel_model_benchmark](#novel_model_benchmark) | 会提交操作或保存文件;具体取决于 action/参数 | `action` |
61
- | [novel_model_configure](#novel_model_configure) | 会提交操作或保存文件;具体取决于 action/参数 | `model` |
62
- | [novel_model_embedding_test](#novel_model_embedding_test) | 会提交操作或保存文件;具体取决于 action/参数 | 无 |
63
- | [novel_model_profile_delete](#novel_model_profile_delete) | 会提交操作或保存文件;具体取决于 action/参数 | `profile_id` |
64
- | [novel_model_profile_save](#novel_model_profile_save) | 会提交操作或保存文件;具体取决于 action/参数 | `profile` |
65
- | [novel_model_profiles](#novel_model_profiles) | 只读查询(可更新检索缓存) | 无 |
66
- | [novel_model_routes_save](#novel_model_routes_save) | 会提交操作或保存文件;具体取决于 action/参数 | `routes` |
67
- | [novel_model_test](#novel_model_test) | 会提交操作或保存文件;具体取决于 action/参数 | 无 |
49
+ | [novel_model_profiles](#novel_model_profiles) | 会提交操作或保存文件;具体取决于 action/参数 | `action` |
68
50
  | [novel_multi_write](#novel_multi_write) | 会提交操作或保存文件;具体取决于 action/参数 | 无 |
69
51
  | [novel_narrative_forecast_action](#novel_narrative_forecast_action) | 会提交操作或保存文件;具体取决于 action/参数 | `action` |
70
- | [novel_outline_audit](#novel_outline_audit) | 只读查询(可更新检索缓存) | 无 |
52
+ | [novel_outline_audit](#novel_outline_audit) | 会提交操作或保存文件;具体取决于 action/参数 | 无 |
71
53
  | [novel_outline_edit](#novel_outline_edit) | 会提交操作或保存文件;具体取决于 action/参数 | `operation`, `revision` |
72
- | [novel_outline_read](#novel_outline_read) | 只读查询(可更新检索缓存) | 无 |
73
- | [novel_project_archive_action](#novel_project_archive_action) | 会提交操作或保存文件;具体取决于 action/参数 | `action` |
74
- | [novel_project_archive_download](#novel_project_archive_download) | 会提交操作或保存文件;具体取决于 action/参数 | `archive_id` |
75
- | [novel_project_delete](#novel_project_delete) | 会提交操作或保存文件;具体取决于 action/参数 | `project_path`, `confirm` |
76
- | [novel_project_init](#novel_project_init) | 会提交操作或保存文件;具体取决于 action/参数 | `novel_id`, `title` |
77
- | [novel_project_open](#novel_project_open) | 会提交操作或保存文件;具体取决于 action/参数 | `project_path` |
78
- | [novel_reading_order](#novel_reading_order) | 只读查询(可更新检索缓存) | 无 |
79
- | [novel_reading_order_move](#novel_reading_order_move) | 会提交操作或保存文件;具体取决于 action/参数 | `document_id`, `target_volume_id`, `target_index`, `expected_revision` |
80
- | [novel_reading_packet](#novel_reading_packet) | 只读查询(可更新检索缓存) | `document_id` |
54
+ | [novel_outline_read](#novel_outline_read) | 会提交操作或保存文件;具体取决于 action/参数 | 无 |
55
+ | [novel_project](#novel_project) | 会提交操作或保存文件;具体取决于 action/参数 | `action` |
56
+ | [novel_reading_order](#novel_reading_order) | 会提交操作或保存文件;具体取决于 action/参数 | `action` |
57
+ | [novel_reading_packet](#novel_reading_packet) | 会提交操作或保存文件;具体取决于 action/参数 | `document_id` |
81
58
  | [novel_reference_library_action](#novel_reference_library_action) | 会提交操作或保存文件;具体取决于 action/参数 | `action` |
82
- | [novel_research_report](#novel_research_report) | 只读查询(可更新检索缓存) | `report_id` |
59
+ | [novel_research_report](#novel_research_report) | 会提交操作或保存文件;具体取决于 action/参数 | `report_id` |
83
60
  | [novel_research_settings_save](#novel_research_settings_save) | 会提交操作或保存文件;具体取决于 action/参数 | `settings` |
84
- | [novel_research_status](#novel_research_status) | 只读查询(可更新检索缓存) | 无 |
61
+ | [novel_research_status](#novel_research_status) | 会提交操作或保存文件;具体取决于 action/参数 | 无 |
85
62
  | [novel_review_chapter](#novel_review_chapter) | 会提交操作或保存文件;具体取决于 action/参数 | 无 |
86
- | [novel_review_framework](#novel_review_framework) | 只读查询(可更新检索缓存) | 无 |
87
- | [novel_revision_apply](#novel_revision_apply) | 会提交操作或保存文件;具体取决于 action/参数 | `proposal_id` |
88
- | [novel_revision_create_from_review](#novel_revision_create_from_review) | 会提交操作或保存文件;具体取决于 action/参数 | `chapter_id`, `issue_ids` |
89
- | [novel_revision_create_selection](#novel_revision_create_selection) | 会提交操作或保存文件;具体取决于 action/参数 | `chapter_id`, `start`, `end` |
90
- | [novel_revision_get](#novel_revision_get) | 只读查询(可更新检索缓存) | `proposal_id` |
91
- | [novel_revision_regenerate](#novel_revision_regenerate) | 会提交操作或保存文件;具体取决于 action/参数 | `proposal_id` |
92
- | [novel_revision_reject](#novel_revision_reject) | 会提交操作或保存文件;具体取决于 action/参数 | `proposal_id` |
93
- | [novel_revisions_list](#novel_revisions_list) | 只读查询(可更新检索缓存) | 无 |
63
+ | [novel_review_framework](#novel_review_framework) | 会提交操作或保存文件;具体取决于 action/参数 | 无 |
64
+ | [novel_revision](#novel_revision) | 会提交操作或保存文件;具体取决于 action/参数 | `action` |
94
65
  | [novel_rolling_plan_action](#novel_rolling_plan_action) | 会提交操作或保存文件;具体取决于 action/参数 | `action` |
95
66
  | [novel_rule_action](#novel_rule_action) | 会提交操作或保存文件;具体取决于 action/参数 | `action` |
96
67
  | [novel_runtime_skill_action](#novel_runtime_skill_action) | 会提交操作或保存文件;具体取决于 action/参数 | `action` |
97
- | [novel_scene_migration_apply](#novel_scene_migration_apply) | 会提交操作或保存文件;具体取决于 action/参数 | `expected_preview_revision`, `confirm` |
98
- | [novel_scene_migration_preview](#novel_scene_migration_preview) | 只读查询(可更新检索缓存) | 无 |
99
- | [novel_scene_migration_rollback](#novel_scene_migration_rollback) | 会提交操作或保存文件;具体取决于 action/参数 | `migration_id`, `expected_revision` |
100
- | [novel_scene_move](#novel_scene_move) | 会提交操作或保存文件;具体取决于 action/参数 | `scene_id`, `target_chapter_id`, `target_index`, `expected_revision`, `expected_source_revision`, `expected_target_revision` |
101
- | [novel_scene_structure](#novel_scene_structure) | 只读查询(可更新检索缓存) | 无 |
102
- | [novel_scene_update](#novel_scene_update) | 会提交操作或保存文件;具体取决于 action/参数 | `scene_id`, `expected_revision` |
103
- | [novel_search](#novel_search) | 只读查询(可更新检索缓存) | `q` |
68
+ | [novel_scene](#novel_scene) | 会提交操作或保存文件;具体取决于 action/参数 | `action` |
69
+ | [novel_scene_migration](#novel_scene_migration) | 会提交操作或保存文件;具体取决于 action/参数 | `action` |
70
+ | [novel_search](#novel_search) | 会提交操作或保存文件;具体取决于 action/参数 | `q` |
104
71
  | [novel_settle_backfill](#novel_settle_backfill) | 会提交操作或保存文件;具体取决于 action/参数 | 无 |
105
72
  | [novel_source_action](#novel_source_action) | 会提交操作或保存文件;具体取决于 action/参数 | `action` |
106
- | [novel_status](#novel_status) | 只读查询(可更新检索缓存) | 无 |
107
- | [novel_structured_change_plan](#novel_structured_change_plan) | 会提交操作或保存文件;具体取决于 action/参数 | `action` |
73
+ | [novel_status](#novel_status) | 会提交操作或保存文件;具体取决于 action/参数 | 无 |
108
74
  | [novel_sync](#novel_sync) | 会提交操作或保存文件;具体取决于 action/参数 | 无 |
109
- | [novel_task_cancel](#novel_task_cancel) | 会提交操作或保存文件;具体取决于 action/参数 | `task_id` |
110
- | [novel_task_confirm](#novel_task_confirm) | 会提交操作或保存文件;具体取决于 action/参数 | `task_id` |
111
- | [novel_task_create](#novel_task_create) | 会提交操作或保存文件;具体取决于 action/参数 | `type`, `input` |
112
- | [novel_task_get](#novel_task_get) | 会提交操作或保存文件;具体取决于 action/参数 | `task_id` |
113
- | [novel_task_retry](#novel_task_retry) | 会提交操作或保存文件;具体取决于 action/参数 | `task_id` |
114
- | [novel_tasks_list](#novel_tasks_list) | 只读查询(可更新检索缓存) | 无 |
115
- | [novel_trace_list](#novel_trace_list) | 只读查询(可更新检索缓存) | 无 |
75
+ | [novel_task](#novel_task) | 会提交操作或保存文件;具体取决于 action/参数 | `action` |
76
+ | [novel_trace_list](#novel_trace_list) | 会提交操作或保存文件;具体取决于 action/参数 | 无 |
116
77
  | [novel_write_chapter](#novel_write_chapter) | 会提交操作或保存文件;具体取决于 action/参数 | 无 |
117
78
  | [novel_writing_assets](#novel_writing_assets) | 会提交操作或保存文件;具体取决于 action/参数 | `action` |
118
79
  | [novel_writing_targets](#novel_writing_targets) | 会提交操作或保存文件;具体取决于 action/参数 | 无 |
@@ -127,92 +88,59 @@ Resolve selected drift entries by absorbing authored outline metadata, schedulin
127
88
  | --- | --- | --- | --- |
128
89
  | data | json | 是 | Object: group_id, expected_revision, entry_ids[], decision absorb/recover/freeze, confirm:true. absorb: outline_revision, outline_updates[{node_id,metadata}], resume?. recover: plan, target_chapter_id. |
129
90
 
130
- ## novel_asset_create
91
+ ## novel_assets
131
92
 
132
- Create a structured asset. character/world assets take front-matter fields via `data` plus an optional `body_markdown`; progression assets take their YAML mapping via `data`. Fails with a conflict if the id exists — use novel_asset_update instead.
93
+ List, read, create and update the writing assets of the current project (terminology, sample pools, character attribute groups and related records).
133
94
 
134
95
  影响:会提交操作或保存文件;具体取决于 action/参数。
135
96
 
136
97
  | 参数 | 类型 | 必填 | 允许值 / 说明 |
137
98
  | --- | --- | --- | --- |
138
- | kind | string | 是 | ["character","world","progression"];Asset kind. |
139
- | id | string | 是 | Asset id (letters, digits, "_", "-", "."). |
99
+ | action | string | 是 | ["list","read","create","update"];Writing-asset operation. |
100
+ | kind | string | 否 | ["character","world","progression"];Restrict to one asset kind; omit to list all kinds. |
101
+ | id | string | 否 | Asset id; required for read/create/update. Must match [A-Za-z0-9][A-Za-z0-9_.-]{0,79}. |
140
102
  | data | json | 否 | Object of asset fields (e.g. name, summary, aliases). |
141
103
  | body_markdown | string | 否 | Markdown body (character/world assets). |
142
-
143
- ## novel_asset_read
144
-
145
- Read one structured asset by kind and id, including its relation view.
146
-
147
- 影响:只读查询(可更新检索缓存)。
148
-
149
- | 参数 | 类型 | 必填 | 允许值 / 说明 |
150
- | --- | --- | --- | --- |
151
- | kind | string | 是 | ["character","world","progression"];Asset kind. |
152
- | id | string | 是 | Asset id. |
153
-
154
- ## novel_asset_update
155
-
156
- Immediate compatibility write for an asset change the author has already authorized exactly; otherwise use novel_structured_change_plan. Update a structured asset (character / world / progression). Revision-gated: pass the `revision` fingerprint from novel_assets_list; the server rejects the update with a conflict if the asset changed. Pass field changes via `data` (merged into the asset front matter), `body_markdown` to replace the markdown body, or `raw_text` to replace the whole document.
157
-
158
- 影响:会提交操作或保存文件;具体取决于 action/参数。
159
-
160
- | 参数 | 类型 | 必填 | 允许值 / 说明 |
161
- | --- | --- | --- | --- |
162
- | kind | string | 是 | ["character","world","progression"];Asset kind. |
163
- | id | string | 是 | Asset id. |
164
- | revision | string | 是 | The asset revision fingerprint from a fresh novel_assets_list call. |
165
- | data | json | 否 | Object of asset fields to merge (e.g. name, summary, aliases). |
166
- | body_markdown | string | 否 | Replacement markdown body (character/world assets). |
104
+ | revision | string | 否 | The asset revision fingerprint from a fresh novel_assets(action="list") call. |
167
105
  | raw_text | string | 否 | Full replacement document text, validated by the server. |
168
106
  | related_mode | string | 否 | ["merge","replace"];Preserve and merge existing related entries by default; replace explicitly clears or replaces relations. |
169
107
 
170
- ## novel_assets_list
108
+ ## novel_assets_package
171
109
 
172
- List structured assets (characters, world entities, progression systems) of the current novel project.
173
-
174
- 影响:只读查询(可更新检索缓存)。
175
-
176
- | 参数 | 类型 | 必填 | 允许值 / 说明 |
177
- | --- | --- | --- | --- |
178
- | kind | string | 否 | ["character","world","progression"];Restrict to one asset kind; omit to list all kinds. |
179
-
180
- ## novel_assets_package_export
181
-
182
- Export assets as an .owasset.zip package and save it locally. Omit selections to export all assets.
110
+ Export the project assets into a portable package, preview a package before importing it, and import a reviewed package with explicit dependency resolutions.
183
111
 
184
112
  影响:会提交操作或保存文件;具体取决于 action/参数。
185
113
 
186
114
  | 参数 | 类型 | 必填 | 允许值 / 说明 |
187
115
  | --- | --- | --- | --- |
116
+ | action | string | 是 | ["export","preview","import"];Asset package operation. |
188
117
  | selections | array[string] | 否 | Asset selectors in "kind:id" form, e.g. ["character:hero", "world:capital"]. |
189
-
190
- ## novel_assets_package_import
191
-
192
- Import a previously staged asset package (see novel_assets_package_preview). Resolves per-asset conflicts via `resolutions`; set allow_missing_dependencies to skip missing dependency checks.
193
-
194
- 影响:会提交操作或保存文件;具体取决于 action/参数。
195
-
196
- | 参数 | 类型 | 必填 | 允许值 / 说明 |
197
- | --- | --- | --- | --- |
198
- | upload_id | string | 是 | The upload_id returned by novel_assets_package_preview. |
199
- | package_sha256 | string | 否 | Optional expected package digest guard. |
118
+ | package_base64 | string | 否 | Base64-encoded .owasset.zip package (max 25 MB decoded). |
119
+ | upload_id | string | 否 | The upload_id returned by novel_assets_package(action="preview"). |
120
+ | package_sha256 | string | 否 | Package digest. Required for import: pass the package_sha256 returned by action="preview"; the server rejects an import without it as a stale package. |
200
121
  | resolutions | json | 否 | Object mapping conflicting asset keys to resolutions. |
201
122
  | allow_missing_dependencies | boolean | 否 | Allow import despite missing asset dependencies (default false). |
202
123
 
203
- ## novel_assets_package_preview
124
+ ## novel_change_plan
204
125
 
205
- Stage an .owasset.zip asset package (base64) and preview its contents and conflicts without importing. Returns an upload_id to pass to novel_assets_package_import.
126
+ Preview, apply, reject, retry and undo a change plan. document plans edit one project document as text; structured plans edit the manuscript model (outline, scenes, canon) as operations. Both are two-step: preview returns a token the follow-up step must present.
206
127
 
207
128
  影响:会提交操作或保存文件;具体取决于 action/参数。
208
129
 
209
130
  | 参数 | 类型 | 必填 | 允许值 / 说明 |
210
131
  | --- | --- | --- | --- |
211
- | package_base64 | string | 是 | Base64-encoded .owasset.zip package (max 25 MB decoded). |
132
+ | action | string | 是 | ["document","structured"];Plan kind: document edits a project document, structured edits the manuscript model. |
133
+ | step | string | 否 | ["preview","apply","reject","retry","undo"];Plan lifecycle step. |
134
+ | confirm | boolean | 否 | Required true for apply and undo after author acceptance. |
135
+ | path | string | 否 | Existing document path for preview, relative to the novel root. |
136
+ | edits | json | 否 | Preview edits: [{old_text,new_text}] or [{start_text,end_text,new_text,end_inclusive}]. Range end defaults to inclusive for compatibility; end_inclusive:false preserves the end anchor (e.g. the next heading). |
137
+ | preview_token | string | 否 | Immutable preview or undo token for apply/reject/retry/undo. |
138
+ | change_kind | string | 否 | ["outline","asset","focus","foreshadowing","writing_targets"];Structured domain for a preview. |
139
+ | change | json | 否 | One direct-tool-shaped change object, required for preview. |
212
140
 
213
141
  ## novel_chapter_delete
214
142
 
215
- Delete the LATEST manuscript chapter. The server enforces three safeguards: the path must be a chapter under data/manuscript, confirm must exactly equal the chapter id (e.g. "ch_0007"), and version must equal the document version fingerprint from a fresh novel_doc_read. Only the newest chapter can be deleted, and never while a background task is active.
143
+ Delete the LATEST manuscript chapter. The server enforces three safeguards: the path must be a chapter under data/manuscript, confirm must exactly equal the chapter id (e.g. "ch_0007"), and version must equal the document version fingerprint from a fresh novel_doc(action="read"). Only the newest chapter can be deleted, and never while a background task is active.
216
144
 
217
145
  影响:会提交操作或保存文件;具体取决于 action/参数。
218
146
 
@@ -220,7 +148,7 @@ Delete the LATEST manuscript chapter. The server enforces three safeguards: the
220
148
  | --- | --- | --- | --- |
221
149
  | path | string | 是 | Chapter path, e.g. "data/manuscript/ch_0007.md". |
222
150
  | confirm | string | 是 | Must exactly equal the chapter id, e.g. "ch_0007". |
223
- | version | string | 是 | The document version fingerprint from novel_doc_read. |
151
+ | version | string | 是 | The document version fingerprint from novel_doc(action="read"). |
224
152
 
225
153
  ## novel_chapter_delete_batch
226
154
 
@@ -232,7 +160,7 @@ Delete the contiguous latest manuscript tail in one server request, retaining th
232
160
  | --- | --- | --- | --- |
233
161
  | keep_through | string | 是 | Last chapter to retain, e.g. "ch_0030". |
234
162
  | confirm | string | 是 | Must exactly equal DELETE_AFTER:<keep_through>. |
235
- | version | string | 是 | The latest chapter version fingerprint from a fresh novel_doc_read. |
163
+ | version | string | 是 | The latest chapter version fingerprint from a fresh novel_doc(action="read"). |
236
164
 
237
165
  ## novel_chapter_run_action
238
166
 
@@ -267,7 +195,7 @@ Manage Chapter Run V2 records (the server's per-chapter write/review run ledger)
267
195
 
268
196
  Read the revision-labelled scene slice for one chapter.
269
197
 
270
- 影响:只读查询(可更新检索缓存)。
198
+ 影响:会提交操作或保存文件;具体取决于 action/参数。
271
199
 
272
200
  | 参数 | 类型 | 必填 | 允许值 / 说明 |
273
201
  | --- | --- | --- | --- |
@@ -277,7 +205,7 @@ Read the revision-labelled scene slice for one chapter.
277
205
 
278
206
  Read one chapter work brief: manuscript/acceptance/review revisions, writing target, recent edits, tasks, and categorized foreshadowing obligations.
279
207
 
280
- 影响:只读查询(可更新检索缓存)。
208
+ 影响:会提交操作或保存文件;具体取决于 action/参数。
281
209
 
282
210
  | 参数 | 类型 | 必填 | 允许值 / 说明 |
283
211
  | --- | --- | --- | --- |
@@ -287,9 +215,9 @@ Read one chapter work brief: manuscript/acceptance/review revisions, writing tar
287
215
 
288
216
  ## novel_context_preview
289
217
 
290
- Preview the context packet OpenWrite would assemble for writing a chapter (relevant outline, assets, foreshadowing, and prior-chapter memory). Set include_agent_payload to inspect canonical writer inputs and document inclusion without calling a model.
218
+ Preview the context packet OpenWrite would assemble for writing a chapter (relevant outline, assets, foreshadowing, and prior-chapter memory). The chapter must already exist in the outline; an unknown chapter id is rejected instead of returning an empty generic context. Set include_agent_payload to inspect canonical writer inputs and document inclusion without calling a model.
291
219
 
292
- 影响:只读查询(可更新检索缓存)。
220
+ 影响:会提交操作或保存文件;具体取决于 action/参数。
293
221
 
294
222
  | 参数 | 类型 | 必填 | 允许值 / 说明 |
295
223
  | --- | --- | --- | --- |
@@ -300,7 +228,7 @@ Preview the context packet OpenWrite would assemble for writing a chapter (relev
300
228
 
301
229
  Get the continuity report: unresolved foreshadowing, character state drift, and timeline consistency of the current project.
302
230
 
303
- 影响:只读查询(可更新检索缓存)。
231
+ 影响:会提交操作或保存文件;具体取决于 action/参数。
304
232
 
305
233
  | 参数 | 类型 | 必填 | 允许值 / 说明 |
306
234
  | --- | --- | --- | --- |
@@ -316,54 +244,22 @@ Run runtime diagnostics over the project (read-only): stuck runs, stale locks, a
316
244
  | --- | --- | --- | --- |
317
245
  | stuck_minutes | integer | 否 | Minutes after which a run counts as stuck (default 30). |
318
246
 
319
- ## novel_doc_create
320
-
321
- Create a new project document by kind and name (e.g. a setting or character note), then returns the created document.
322
-
323
- 影响:会提交操作或保存文件;具体取决于 action/参数。
324
-
325
- | 参数 | 类型 | 必填 | 允许值 / 说明 |
326
- | --- | --- | --- | --- |
327
- | kind | string | 是 | Document kind (e.g. "setting", "character"). |
328
- | name | string | 是 | Document name. |
329
- | description | string | 否 | Short description of the document. |
330
-
331
- ## novel_doc_read
332
-
333
- Read a project document (path relative to the novel data root, e.g. "src/outline.md" or "data/manuscript/ch_0007.md"). Returns content plus a `version` fingerprint needed by novel_doc_write.
247
+ ## novel_doc
334
248
 
335
- 影响:只读查询(可更新检索缓存)。
336
-
337
- | 参数 | 类型 | 必填 | 允许值 / 说明 |
338
- | --- | --- | --- | --- |
339
- | path | string | 是 | Document path relative to the novel data root. |
340
-
341
- ## novel_doc_write
342
-
343
- Write a project document (path relative to the novel data root). Uses a version-based optimistic lock: pass the `version` returned by novel_doc_read; the server rejects with a conflict if the document changed. Omit version to create a new document; set force to bypass the lock.
249
+ Read, write and create the plain documents of the current project (notes, briefs and other author-owned files). Writes are optimistic and reject a stale version.
344
250
 
345
251
  影响:会提交操作或保存文件;具体取决于 action/参数。
346
252
 
347
253
  | 参数 | 类型 | 必填 | 允许值 / 说明 |
348
254
  | --- | --- | --- | --- |
349
- | path | string | 是 | Document path relative to the novel data root. |
350
- | content | string | 是 | Full new document content (max 2 MB). |
351
- | version | string | 否 | The version fingerprint from novel_doc_read (optimistic lock). |
255
+ | action | string | 是 | ["read","write","create"];Document operation. |
256
+ | path | string | 否 | Document path relative to the novel data root (read/write). Writable roots are src/ and data/manuscript/; create derives its path from kind and name. |
257
+ | content | string | 否 | Full new document content (max 2 MB). |
258
+ | version | string | 否 | The version fingerprint from novel_doc(action="read") (optimistic lock). |
352
259
  | force | boolean | 否 | Bypass the version check (default false). |
353
-
354
- ## novel_document_change_plan
355
-
356
- Stage and review revision-gated changes to an existing novel document. Use action "preview" with path and edits to receive an immutable preview_token and real before/after summary. Use "apply" only after author acceptance, passing that token and confirm: true; "reject" discards it, "retry" rebuilds it against the current source, and "undo" safely applies an undo_preview_token returned by a prior apply. Each edit uses old_text/new_text or unique start_text/end_text/new_text anchors. Preview returns applied:false; changed/would_change describe only the proposed difference. OLD_TEXT_NOT_FOUND is an anchor mismatch (400), while revision conflicts are 409; use the exact suggested bytes and reread the source before retrying. The server rechecks the source revision and writes exactly the stored preview.
357
-
358
- 影响:会提交操作或保存文件;具体取决于 action/参数。
359
-
360
- | 参数 | 类型 | 必填 | 允许值 / 说明 |
361
- | --- | --- | --- | --- |
362
- | action | string | 是 | ["preview","apply","reject","retry","undo"];Plan lifecycle action. |
363
- | confirm | boolean | 否 | Required true for apply and undo after author acceptance. |
364
- | path | string | 否 | Existing document path for preview, relative to the novel root. |
365
- | edits | json | 否 | Preview edits: [{old_text,new_text}] or [{start_text,end_text,new_text,end_inclusive}]. Range end defaults to inclusive for compatibility; end_inclusive:false preserves the end anchor (e.g. the next heading). |
366
- | preview_token | string | 否 | Immutable preview or undo token for apply/reject/retry/undo. |
260
+ | kind | string | 否 | Document kind for create: "character" or "world" (the server derives the file path). |
261
+ | name | string | 否 | Document name. |
262
+ | description | string | 否 | Short description of the document. |
367
263
 
368
264
  ## novel_drift_entry
369
265
 
@@ -381,74 +277,38 @@ Record author-observed chapter drift. Saves an immutable outline/manuscript base
381
277
  | note | string | 是 | Observed drift and supporting evidence. |
382
278
  | expected_revision | integer | 是 | ledger.revision from outline audit. |
383
279
 
384
- ## novel_embedding_profile_delete
385
-
386
- Delete an independent Embedding profile; the active profile automatically moves to another one.
387
-
388
- 影响:会提交操作或保存文件;具体取决于 action/参数。
389
-
390
- | 参数 | 类型 | 必填 | 允许值 / 说明 |
391
- | --- | --- | --- | --- |
392
- | profile_id | string | 是 | |
393
-
394
- ## novel_embedding_profile_save
280
+ ## novel_embedding_profiles
395
281
 
396
- Create or update an independent Embedding profile; it is never attached to a Chat profile.
282
+ List, save, select, delete and test embedding profiles. Selection chooses the profile the server uses for semantic search and recall.
397
283
 
398
284
  影响:会提交操作或保存文件;具体取决于 action/参数。
399
285
 
400
286
  | 参数 | 类型 | 必填 | 允许值 / 说明 |
401
287
  | --- | --- | --- | --- |
402
- | profile | json | 是 | Embedding profile: id, label, provider, model, base_url, dimension, max_tokens. |
288
+ | action | string | 是 | ["list","save","select","delete","test"];Embedding configuration operation. |
289
+ | profile | json | 否 | Embedding profile: id, label, provider, model, base_url, dimension, max_tokens. |
403
290
  | api_key | string | 否 | Embedding API key. |
404
291
  | remember_api_key | boolean | 否 | Persist the key (default true). |
405
-
406
- ## novel_embedding_profile_select
407
-
408
- Select the active independent Embedding profile used by search.
409
-
410
- 影响:会提交操作或保存文件;具体取决于 action/参数。
411
-
412
- | 参数 | 类型 | 必填 | 允许值 / 说明 |
413
- | --- | --- | --- | --- |
414
- | profile_id | string | 是 | |
415
-
416
- ## novel_embedding_profiles
417
-
418
- List independent Embedding profiles and the active selection. Embedding is configured separately from Chat profiles.
419
-
420
- 影响:只读查询(可更新检索缓存)。
421
-
422
- | 参数 | 类型 | 必填 | 允许值 / 说明 |
423
- | --- | --- | --- | --- |
424
- | 无 | — | — | — |
292
+ | profile_id | string | 否 | |
293
+ | id | string | 否 | Stored profile id to probe. |
294
+ | candidate | json | 否 | Embedding candidate settings object (merged into the request). |
425
295
 
426
296
  ## novel_export
427
297
 
428
- Export the manuscript as a file download and save it locally. Inspect novel_export_preflight first and pass its preflight_revision unchanged to bind the download to that inspected manuscript state. Returns the saved file path.
298
+ Preflight and run a manuscript export. Preflight validates the selection, purpose and format and returns a revision the export must present.
429
299
 
430
300
  影响:会提交操作或保存文件;具体取决于 action/参数。
431
301
 
432
302
  | 参数 | 类型 | 必填 | 允许值 / 说明 |
433
303
  | --- | --- | --- | --- |
434
- | format | string | 否 | ["md","txt","epub"];Export format (default "md"). |
435
- | purpose | string | 否 | ["backup","delivery","personal_archive"];Export purpose (default "delivery"). |
436
- | preflight_revision | string | 否 | Revision returned by novel_export_preflight for the same format and purpose. |
437
-
438
- ## novel_export_preflight
439
-
440
- Inspect the current manuscript export order, structural defects, writing targets, metadata, review freshness, manuscript acceptance, blockers, and warnings. Pass the returned preflight_revision unchanged to novel_export so the downloaded file is bound to the manuscript state that was inspected.
441
-
442
- 影响:只读查询(可更新检索缓存)。
443
-
444
- | 参数 | 类型 | 必填 | 允许值 / 说明 |
445
- | --- | --- | --- | --- |
304
+ | action | string | 是 | ["preflight","export"];Export step; preflight reports what would be written without writing it. |
446
305
  | format | string | 否 | ["md","txt","epub"];Export format (default "md"). |
447
306
  | purpose | string | 否 | ["backup","delivery","personal_archive"];Export purpose (default "delivery"). personal_archive preserves author copies with gate findings recorded as warnings. |
307
+ | preflight_revision | string | 否 | Revision returned by novel_export(action="preflight") for the same format and purpose. |
448
308
 
449
309
  ## novel_focus
450
310
 
451
- Immediate compatibility write for a focus change the author has already authorized exactly; otherwise use novel_structured_change_plan. Set the writing focus compass for the project.
311
+ Immediate compatibility write for a focus change the author has already authorized exactly; otherwise use novel_change_plan(action="structured"). Set the writing focus compass for the project.
452
312
 
453
313
  影响:会提交操作或保存文件;具体取决于 action/参数。
454
314
 
@@ -461,7 +321,7 @@ Immediate compatibility write for a focus change the author has already authoriz
461
321
 
462
322
  ## novel_foreshadowing
463
323
 
464
- Immediate compatibility write for a foreshadowing change the author has already authorized exactly; otherwise use novel_structured_change_plan. Manage the foreshadowing DAG. action "create": node_id + content, optional weight (1-10, default 5), layer (default "支线"), target_chapter. action "update": node_id + status (e.g. planted/paid-off).
324
+ Immediate compatibility write for a foreshadowing change the author has already authorized exactly; otherwise use novel_change_plan(action="structured"). Manage the foreshadowing DAG. action "create": node_id + content, optional weight (1-10, default 5), layer (default "支线"), target_chapter. action "update": node_id + status (e.g. planted/paid-off).
465
325
 
466
326
  影响:会提交操作或保存文件;具体取决于 action/参数。
467
327
 
@@ -477,27 +337,14 @@ Immediate compatibility write for a foreshadowing change the author has already
477
337
 
478
338
  ## novel_import
479
339
 
480
- Import a TXT/Markdown manuscript as chapters (split on headings). Preview first with novel_import_preview; the server rejects conflicting chapter ids unless force is set.
481
-
482
- 影响:会提交操作或保存文件;具体取决于 action/参数。
483
-
484
- | 参数 | 类型 | 必填 | 允许值 / 说明 |
485
- | --- | --- | --- | --- |
486
- | content | string | 是 | The manuscript text to import. |
487
- | filename | string | 否 | Source filename; suffix must be .txt/.md/.markdown (default "import.md"). |
488
- | arc_id | string | 否 | Arc id like "arc_001" (default: the project's current arc). |
489
- | start_number | integer | 否 | First chapter number (default: continue numbering). |
490
- | force | boolean | 否 | Overwrite conflicting existing chapters (default false). |
491
-
492
- ## novel_import_preview
493
-
494
- Preview a TXT/Markdown manuscript import without writing anything: detected chapters, numbering, and conflicts with existing chapters. Run this before novel_import.
340
+ Preview an imported manuscript and then import it. Preview reports the parsed chapters, arc mapping and conflicts without writing; import applies the reviewed plan.
495
341
 
496
342
  影响:会提交操作或保存文件;具体取决于 action/参数。
497
343
 
498
344
  | 参数 | 类型 | 必填 | 允许值 / 说明 |
499
345
  | --- | --- | --- | --- |
500
- | content | string | 是 | The manuscript text to import. |
346
+ | action | string | 是 | ["preview","import"];Import step; preview never writes anything. |
347
+ | content | string | 否 | The manuscript text to import. |
501
348
  | filename | string | 否 | Source filename; suffix must be .txt/.md/.markdown (default "import.md"). |
502
349
  | arc_id | string | 否 | Arc id like "arc_001" (default: the project's current arc). |
503
350
  | start_number | integer | 否 | First chapter number (default: after the last existing chapter). |
@@ -507,7 +354,7 @@ Preview a TXT/Markdown manuscript import without writing anything: detected chap
507
354
 
508
355
  Inspect the canonical manuscript acceptance ledger: current and accepted content revisions, drift, recoverable operations, derived-result impacts, and chapters that require author review.
509
356
 
510
- 影响:只读查询(可更新检索缓存)。
357
+ 影响:会提交操作或保存文件;具体取决于 action/参数。
511
358
 
512
359
  | 参数 | 类型 | 必填 | 允许值 / 说明 |
513
360
  | --- | --- | --- | --- |
@@ -531,7 +378,7 @@ Reconcile the canonical manuscript acceptance ledger. Actions: "baseline" (accep
531
378
 
532
379
  ## novel_manuscript_edit_action
533
380
 
534
- Chapter snapshots, annotations and saved drafts. Actions: "drafts" (list recoverable uncommitted prose), "restore_draft" (run_id_v2 + revision + confirm: true; copy the exact saved bytes without generation, then reconcile facts). Other actions: "versions" (chapter_id), "version" (chapter_id + version_id — returns the snapshot content), "checkpoint" (chapter_id, optional label — save a snapshot), "compare" (chapter_id + version_id — preview current-to-snapshot differences without writing), "restore" (chapter_id + version_id + revision — REVERTS the chapter to a snapshot; revision-gated and confirmation-gated: the server demands confirm: true), "annotations" (chapter_id), "annotate" (chapter_id + revision + quote + note, optional start_hint/end_hint and color amber|rose|sky|lime|violet), "resolve_annotation" (chapter_id + annotation_id).
381
+ Chapter snapshots, annotations and saved drafts. Actions: "drafts" (list recoverable uncommitted prose), "restore_draft" (run_id_v2 + revision + confirm: true; copy the exact saved bytes without generation, then reconcile facts). Other actions: "versions" (chapter_id), "version" (chapter_id + version_id — returns the snapshot content), "checkpoint" (chapter_id, optional label — save a snapshot), "compare" (chapter_id + version_id — preview current-to-snapshot differences without writing), "restore" (chapter_id + version_id + revision — REVERTS the chapter to a snapshot; revision-gated and confirmation-gated: the server demands confirm: true), "annotations" (chapter_id), "annotate" (chapter_id + revision + quote + note, optional start_hint/end_hint (derived from the quote when omitted) and color amber|rose|sky|lime|violet), "resolve_annotation" (chapter_id + annotation_id).
535
382
 
536
383
  影响:会提交操作或保存文件;具体取决于 action/参数。
537
384
 
@@ -564,7 +411,7 @@ Operate the durable, resumable import workspace for the author's own TXT/Markdow
564
411
  | limit | integer | 否 | Maximum operations for list (default 50). |
565
412
  | filename | string | 否 | Source filename ending in .txt, .md, or .markdown. |
566
413
  | content | string | 否 | The author's own manuscript text for prepare. |
567
- | arc_id | string | 否 | Target arc id, e.g. arc_001. |
414
+ | arc_id | string | 否 | Target arc id, e.g. arc_001. Optional for prepare; defaults to the project's current arc. |
568
415
  | start_number | integer | 否 | Optional first chapter number. |
569
416
  | expected_preview_revision | string | 否 | Current preview revision required by structure/confirm. |
570
417
  | chapters | array[json] | 否 | Edited chapter objects: chapter_id, title, content. |
@@ -574,7 +421,7 @@ Operate the durable, resumable import workspace for the author's own TXT/Markdow
574
421
 
575
422
  Read deterministic chapter metrics, terminology findings, overlap against anchors and the previous three chapters, duplicate paragraphs and selected character groups. Overlap spans use Unicode codepoint offsets. No model call.
576
423
 
577
- 影响:只读查询(可更新检索缓存)。
424
+ 影响:会提交操作或保存文件;具体取决于 action/参数。
578
425
 
579
426
  | 参数 | 类型 | 必填 | 允许值 / 说明 |
580
427
  | --- | --- | --- | --- |
@@ -603,98 +450,32 @@ Run or inspect isolated chapter or outline model benchmarks through OpenWrite pr
603
450
  | concurrency | integer | 否 | Concurrent model jobs, 1-4. |
604
451
  | limit | integer | 否 | List limit, default 20. |
605
452
 
606
- ## novel_model_configure
453
+ ## novel_model_profiles
607
454
 
608
- Apply and persist the server's active model connection (OpenWrite's own LLM for writing/review — independent of the dsh model). max_tokens must stay below context_tokens.
455
+ List, save, delete and test OpenWrite model profiles, per-task routing and the active model settings. Profiles select which provider/model each task uses; routes map tasks to profiles.
609
456
 
610
457
  影响:会提交操作或保存文件;具体取决于 action/参数。
611
458
 
612
459
  | 参数 | 类型 | 必填 | 允许值 / 说明 |
613
460
  | --- | --- | --- | --- |
461
+ | action | string | 是 | ["list","save","delete","save_routes","configure","test"];Model configuration operation. |
462
+ | profile | json | 否 | Profile object, e.g. {"id": "fast", "label": "...", "provider": "openai", "model": "...", "base_url": "...", "max_output_tokens": 24000}. |
463
+ | api_key | string | 否 | Chat API key to store with the profile. |
464
+ | remember_api_key | boolean | 否 | Persist the API key on the server (default true). |
465
+ | profile_id | string | 否 | Profile id to delete. |
466
+ | fallback_id | string | 否 | Profile id to reroute to (default: the server default profile). |
467
+ | routes | json | 否 | Object mapping operation names to profile ids. |
614
468
  | provider | string | 否 | ["openai","anthropic","custom"];Provider (default "openai"). |
615
- | model | string | 是 | Model name (max 120 characters). |
616
- | api_key | string | 否 | API key; omit to reuse the server environment key. |
469
+ | model | string | 否 | Model name (max 120 characters). |
617
470
  | base_url | string | 否 | Base URL (required for provider "custom"). |
618
471
  | api_format | string | 否 | ["chat","responses"];API format (default "chat"). |
619
472
  | context_tokens | integer | 否 | Context budget (min 12000). |
620
473
  | max_tokens | integer | 否 | Max output tokens (min 256, must be < context_tokens). |
621
- | remember_api_key | boolean | 否 | Persist the API key on the server (default true). |
622
-
623
- ## novel_model_embedding_test
624
-
625
- Probe an independent Embedding profile without changing Chat profiles.
626
-
627
- 影响:会提交操作或保存文件;具体取决于 action/参数。
628
-
629
- | 参数 | 类型 | 必填 | 允许值 / 说明 |
630
- | --- | --- | --- | --- |
631
- | id | string | 否 | Stored profile id to probe. |
632
- | candidate | json | 否 | Embedding candidate settings object (merged into the request). |
633
- | api_key | string | 否 | Embedding API key override. |
634
-
635
- ## novel_model_profile_delete
636
-
637
- Delete a stored model profile. Routes pointing at it fall back to fallback_id.
638
-
639
- 影响:会提交操作或保存文件;具体取决于 action/参数。
640
-
641
- | 参数 | 类型 | 必填 | 允许值 / 说明 |
642
- | --- | --- | --- | --- |
643
- | profile_id | string | 是 | Profile id to delete. |
644
- | fallback_id | string | 否 | Profile id to reroute to (default: the server default profile). |
645
-
646
- ## novel_model_profile_save
647
-
648
- Save (create or update) a named model profile on the server, with an optional API key.
649
-
650
- 影响:会提交操作或保存文件;具体取决于 action/参数。
651
-
652
- | 参数 | 类型 | 必填 | 允许值 / 说明 |
653
- | --- | --- | --- | --- |
654
- | profile | json | 是 | Profile object, e.g. {"id": "fast", "label": "...", "provider": "openai", "model": "...", "base_url": "...", "max_output_tokens": 24000}. |
655
- | api_key | string | 否 | Chat API key to store with the profile. |
656
- | remember_api_key | boolean | 否 | Persist the API key on the server (default true). |
657
-
658
- ## novel_model_profiles
659
-
660
- List the server's model profiles and per-task routing (which provider/model OpenWrite uses for writing, review, etc.).
661
-
662
- 影响:只读查询(可更新检索缓存)。
663
-
664
- | 参数 | 类型 | 必填 | 允许值 / 说明 |
665
- | --- | --- | --- | --- |
666
- | 无 | — | — | — |
667
-
668
- ## novel_model_routes_save
669
-
670
- Save per-task model routing: map operation names (e.g. "chapter_write", "review", "research") to profile ids.
671
-
672
- 影响:会提交操作或保存文件;具体取决于 action/参数。
673
-
674
- | 参数 | 类型 | 必填 | 允许值 / 说明 |
675
- | --- | --- | --- | --- |
676
- | routes | json | 是 | Object mapping operation names to profile ids. |
677
-
678
- ## novel_model_test
679
-
680
- Test a model connection without changing active settings. Pass id to test a stored profile, or a full candidate (provider/model/base_url/api_key...).
681
-
682
- 影响:会提交操作或保存文件;具体取决于 action/参数。
683
-
684
- | 参数 | 类型 | 必填 | 允许值 / 说明 |
685
- | --- | --- | --- | --- |
686
474
  | id | string | 否 | Stored profile id to test. |
687
- | provider | string | 否 | ["openai","anthropic","custom"];Provider (default "openai"). |
688
- | model | string | 否 | Model name (required when id is omitted). |
689
- | base_url | string | 否 | Base URL (required for provider "custom"). |
690
- | api_format | string | 否 | ["chat","responses"];API format (default "chat"). |
691
- | api_key | string | 否 | API key; omit to reuse the server environment key. |
692
- | context_tokens | integer | 否 | Context budget. |
693
- | max_tokens | integer | 否 | Max output tokens. |
694
475
 
695
476
  ## novel_multi_write
696
477
 
697
- Queue a BACKGROUND continuous-writing run: writes up to max_chapters chapters following the outline, reviewing each; stops early on review blockers, continuity errors, low scores, or budget limits. Returns immediately with a task id — poll with novel_task_get and resume paused runs with novel_task_confirm.
478
+ Queue a BACKGROUND continuous-writing run: writes up to max_chapters chapters following the outline, reviewing each; stops early on review blockers, continuity errors, low scores, or budget limits. Returns immediately with a task id — poll with novel_task(action="get"). A paused run is resumed with novel_task(action="confirm"), which returns a continuation task: poll that returned task_id. Confirming the same paused task again is idempotent.
698
479
 
699
480
  影响:会提交操作或保存文件;具体取决于 action/参数。
700
481
 
@@ -710,7 +491,7 @@ Queue a BACKGROUND continuous-writing run: writes up to max_chapters chapters fo
710
491
  | temperature | number | 否 | Sampling temperature (default 0.7). |
711
492
  | stop_on_blocker | boolean | 否 | Stop when a review reports a blocker issue (default true). |
712
493
  | stop_on_continuity_error | boolean | 否 | Stop on high-severity continuity issues (default true). |
713
- | require_confirmation_after_each_chapter | boolean | 否 | Pause for novel_task_confirm after each chapter (default false). |
494
+ | require_confirmation_after_each_chapter | boolean | 否 | Pause for novel_task(action="confirm") after each chapter (default false). |
714
495
 
715
496
  ## novel_narrative_forecast_action
716
497
 
@@ -735,7 +516,7 @@ Manage narrative forecasts (branching "what-if" plot projections). Actions: "lis
735
516
 
736
517
  Read countable chapter-group facts: budgets/actual words, declared promises and function streaks, declared/confirmed payoffs, overdue hooks and drift ledger. Never generates a score or claims prose fulfilled a promise. No model call.
737
518
 
738
- 影响:只读查询(可更新检索缓存)。
519
+ 影响:会提交操作或保存文件;具体取决于 action/参数。
739
520
 
740
521
  | 参数 | 类型 | 必填 | 允许值 / 说明 |
741
522
  | --- | --- | --- | --- |
@@ -745,7 +526,7 @@ Read countable chapter-group facts: budgets/actual words, declared promises and
745
526
 
746
527
  ## novel_outline_edit
747
528
 
748
- Immediate compatibility write for an outline change the author has already authorized exactly; otherwise use novel_structured_change_plan. Apply ONE atomic structural edit to the outline tree. Edits are revision-gated: read the current `revision` via novel_outline_read first and pass it back; the server rejects the edit with a conflict if the outline changed in between. Operations: "rename" (node_id + title), "update_summary" (node_id + summary), "add_child" (node_id = parent, + title/summary/kind), "add_after" (node_id = sibling, + title/summary/kind), "delete" (node_id, cascade=false keeps children), "promote" (remove a container), and "get_meta"/"set_meta" (chapter metadata, optionally updates[] for a batch).
529
+ Immediate compatibility write for an outline change the author has already authorized exactly; otherwise use novel_change_plan(action="structured"). Apply ONE atomic structural edit to the outline tree. Edits are revision-gated: read the current `revision` via novel_outline_read first and pass it back; the server rejects the edit with a conflict if the outline changed in between. Operations: "rename" (node_id + title), "update_summary" (node_id + summary), "add_child" (node_id = parent, + title/summary/kind), "add_after" (node_id = sibling, + title/summary/kind), "delete" (node_id, cascade=false keeps children), "promote" (remove a container), and "get_meta"/"set_meta" (chapter metadata, optionally updates[] for a batch).
749
530
 
750
531
  影响:会提交操作或保存文件;具体取决于 action/参数。
751
532
 
@@ -753,7 +534,7 @@ Immediate compatibility write for an outline change the author has already autho
753
534
  | --- | --- | --- | --- |
754
535
  | operation | string | 是 | ["rename","update_summary","add_child","add_after","delete","promote","get_meta","set_meta"];The structural operation to apply. |
755
536
  | cascade | boolean | 否 | For delete, false removes only the container and keeps children and chapter IDs. |
756
- | metadata | json | 否 | Field object for set_meta; use target_words, beats, hooks or characters. |
537
+ | metadata | json | 否 | Field object for set_meta; use dramatic_position, content_focus, goals, target_words, word_budget, characters, settings, emotional_arc, beats, hooks, promise, payoff_of or function. Text fields (dramatic_position, content_focus, emotional_arc) take one line of text; word counts (target_words, word_budget) take a number. List fields (goals, beats, hooks, characters, settings, payoff_of, function) take an array of strings or one comma-separated string; promise accepts both too. |
757
538
  | chapter_id | string | 否 | Chapter ID alias for node_id in get_meta/set_meta. |
758
539
  | updates | json | 否 | Batch of 1-50 {chapter_id, metadata} objects for set_meta, or {chapter_id} for get_meta; one revision guards the whole batch. |
759
540
  | revision | string | 是 | The outline revision fingerprint from a fresh novel_outline_read call. |
@@ -766,21 +547,29 @@ Immediate compatibility write for an outline change the author has already autho
766
547
 
767
548
  Read the live outline tree. The response carries a `revision` fingerprint required by novel_outline_edit and a chapter `recommendation`.
768
549
 
769
- 影响:只读查询(可更新检索缓存)。
550
+ 影响:会提交操作或保存文件;具体取决于 action/参数。
770
551
 
771
552
  | 参数 | 类型 | 必填 | 允许值 / 说明 |
772
553
  | --- | --- | --- | --- |
773
554
  | chapter | string | 否 | Optional chapter id to get a writing recommendation for. |
774
555
 
775
- ## novel_project_archive_action
556
+ ## novel_project
776
557
 
777
- Inspect, create, and restore complete .owarchive project archives. Use preflight before create; use restore_preview before restore to inspect path/reference rewrites, conflicts, warnings, checksum, and the archived-without-auto-resume task policy. Restore requires the preview archive_sha256 and explicit confirmation.
558
+ Initialize, open and delete a novel project, and manage its archive packages (list, get, create, restore preview, restore, download). Archiving never touches the live project.
778
559
 
779
560
  影响:会提交操作或保存文件;具体取决于 action/参数。
780
561
 
781
562
  | 参数 | 类型 | 必填 | 允许值 / 说明 |
782
563
  | --- | --- | --- | --- |
783
- | action | string | 是 | ["preflight","list","get","create","restore_preview","restore"];Archive lifecycle action. |
564
+ | action | string | 是 | ["init","open","delete","archive","download"];Project operation. |
565
+ | novel_id | string | 否 | Project id, e.g. "my_novel" (2-64 chars: letters, digits, "-", "_"). |
566
+ | title | string | 否 | Book title (max 120 characters). |
567
+ | author | string | 否 | Author credit for delivery export (max 120 characters). |
568
+ | language | string | 否 | Book language tag, e.g. zh-CN or en (default zh-CN). |
569
+ | project_path | string | 否 | Target directory on the server; omit to use the server default location. |
570
+ | template | string | 否 | ["default","demo_short"];Project template (default "default"). |
571
+ | confirm_novel_id | string | 否 | Must exactly equal the project's novel_id (from its novel_config.yaml). |
572
+ | archive_op | string | 否 | ["preflight","list","get","create","restore_preview","restore"];Archive lifecycle operation. |
784
573
  | archive_id | string | 否 | Archive id shaped owa_<24 lowercase hex>. |
785
574
  | expected_preflight_revision | string | 否 | Current archive preflight revision for create. |
786
575
  | target_root | string | 否 | Absolute new or empty project directory for restore. |
@@ -789,80 +578,25 @@ Inspect, create, and restore complete .owarchive project archives. Use preflight
789
578
  | archive_sha256 | string | 否 | Checksum returned by restore_preview. |
790
579
  | confirm | boolean | 否 | Must be true for restore. |
791
580
 
792
- ## novel_project_archive_download
793
-
794
- Download one complete .owarchive project archive and save it in this workspace's local export directory.
795
-
796
- 影响:会提交操作或保存文件;具体取决于 action/参数。
797
-
798
- | 参数 | 类型 | 必填 | 允许值 / 说明 |
799
- | --- | --- | --- | --- |
800
- | archive_id | string | 是 | Archive id shaped owa_<24 lowercase hex>. |
801
-
802
- ## novel_project_delete
803
-
804
- PERMANENTLY delete a project directory and all its contents from the server machine (recursive delete, not recoverable). The server requires confirm to exactly equal the project's novel_id as a safeguard.
805
-
806
- 影响:会提交操作或保存文件;具体取决于 action/参数。
807
-
808
- | 参数 | 类型 | 必填 | 允许值 / 说明 |
809
- | --- | --- | --- | --- |
810
- | project_path | string | 是 | Project directory to delete. |
811
- | confirm | string | 是 | Must exactly equal the project's novel_id (from its novel_config.yaml). |
812
-
813
- ## novel_project_init
814
-
815
- Create a new OpenWrite novel project on the server machine and make it the active project. Works without a currently open project. novel_id must be 2-64 chars of letters/digits/"-"/"_".
816
-
817
- 影响:会提交操作或保存文件;具体取决于 action/参数。
818
-
819
- | 参数 | 类型 | 必填 | 允许值 / 说明 |
820
- | --- | --- | --- | --- |
821
- | novel_id | string | 是 | Project id, e.g. "my_novel" (2-64 chars: letters, digits, "-", "_"). |
822
- | title | string | 是 | Book title (max 120 characters). |
823
- | author | string | 否 | Author credit for delivery export (max 120 characters). |
824
- | language | string | 否 | Book language tag, e.g. zh-CN or en (default zh-CN). |
825
- | project_path | string | 否 | Target directory on the server; omit to use the server default location. |
826
- | template | string | 否 | ["default","demo_short"];Project template (default "default"). |
827
-
828
- ## novel_project_open
829
-
830
- Switch the Studio server to another existing project directory (must contain novel_config.yaml). Works without a currently open project; afterwards every other novel_* tool targets the newly opened project. The server rejects the switch while a background task is active.
831
-
832
- 影响:会提交操作或保存文件;具体取决于 action/参数。
833
-
834
- | 参数 | 类型 | 必填 | 允许值 / 说明 |
835
- | --- | --- | --- | --- |
836
- | project_path | string | 是 | Absolute project directory path on the server machine. |
837
-
838
581
  ## novel_reading_order
839
582
 
840
- Read the canonical manuscript order with stable document/occurrence ids, volume membership, previous/next links, revision, and explicit duplicate or missing-file issues.
841
-
842
- 影响:只读查询(可更新检索缓存)。
843
-
844
- | 参数 | 类型 | 必填 | 允许值 / 说明 |
845
- | --- | --- | --- | --- |
846
- | 无 | — | — | — |
847
-
848
- ## novel_reading_order_move
849
-
850
- Move one manuscript document within or across volumes. Requires the fresh reading-order revision and rejects ambiguous, missing, or concurrently changed order.
583
+ Read the reading order of the current project and move one document to another volume or position. The move is optimistic and requires the current revision.
851
584
 
852
585
  影响:会提交操作或保存文件;具体取决于 action/参数。
853
586
 
854
587
  | 参数 | 类型 | 必填 | 允许值 / 说明 |
855
588
  | --- | --- | --- | --- |
856
- | document_id | string | 是 | Stable document_id or unambiguous occurrence_id. |
857
- | target_volume_id | string | 是 | Target volume_id from novel_reading_order. |
858
- | target_index | integer | 是 | Zero-based position inside the target volume. |
859
- | expected_revision | string | 是 | Fresh reading-order revision used for CAS. |
589
+ | action | string | 是 | ["get","move"];Reading-order operation. |
590
+ | document_id | string | 否 | Stable document_id or unambiguous occurrence_id. |
591
+ | target_volume_id | string | 否 | Target volume_id from novel_reading_order. |
592
+ | target_index | integer | 否 | Zero-based position inside the target volume. |
593
+ | expected_revision | string | 否 | Fresh reading-order revision used for CAS. |
860
594
 
861
595
  ## novel_reading_packet
862
596
 
863
597
  Read a bounded continuous-reading window around one stable manuscript document or occurrence id.
864
598
 
865
- 影响:只读查询(可更新检索缓存)。
599
+ 影响:会提交操作或保存文件;具体取决于 action/参数。
866
600
 
867
601
  | 参数 | 类型 | 必填 | 允许值 / 说明 |
868
602
  | --- | --- | --- | --- |
@@ -899,7 +633,7 @@ Reference-library pipeline (decomposing reference works into structured evidence
899
633
 
900
634
  Read one deep-research report by id (ids come from novel_research_status).
901
635
 
902
- 影响:只读查询(可更新检索缓存)。
636
+ 影响:会提交操作或保存文件;具体取决于 action/参数。
903
637
 
904
638
  | 参数 | 类型 | 必填 | 允许值 / 说明 |
905
639
  | --- | --- | --- | --- |
@@ -917,9 +651,9 @@ Save deep-research API settings (search/LLM providers, API keys, defaults). Pass
917
651
 
918
652
  ## novel_research_status
919
653
 
920
- Get the deep-research surface: settings status, report list, and the configured model route. Run a research job via novel_task_create with type "research".
654
+ Get the deep-research surface: settings status, report list, and the configured model route. Run a research job via novel_task(action="create") with type "research".
921
655
 
922
- 影响:只读查询(可更新检索缓存)。
656
+ 影响:会提交操作或保存文件;具体取决于 action/参数。
923
657
 
924
658
  | 参数 | 类型 | 必填 | 允许值 / 说明 |
925
659
  | --- | --- | --- | --- |
@@ -947,102 +681,43 @@ Run OpenWrite's multi-dimensional review on a drafted manuscript chapter (LONG-R
947
681
 
948
682
  Inspect the canonical reusable chapter-review DAG blueprint: its version, revision, six quality domains, 37 checks, hard gates, dependencies, invariants, and extension points.
949
683
 
950
- 影响:只读查询(可更新检索缓存)。
951
-
952
- | 参数 | 类型 | 必填 | 允许值 / 说明 |
953
- | --- | --- | --- | --- |
954
- | 无 | — | — | — |
955
-
956
- ## novel_revision_apply
957
-
958
- Apply a staged revision proposal to the manuscript. Optionally override the generated text or apply only selected diff hunks. Fails with a conflict if the document changed since the proposal was created.
959
-
960
684
  影响:会提交操作或保存文件;具体取决于 action/参数。
961
685
 
962
686
  | 参数 | 类型 | 必填 | 允许值 / 说明 |
963
687
  | --- | --- | --- | --- |
964
- | proposal_id | string | 是 | Revision proposal id (rev_*). |
965
- | replacement_text | string | 否 | Replacement text overriding the proposal. |
966
- | selected_hunk_ids | array[string] | 否 | Apply only these diff hunk ids. |
688
+ | 无 | — | — | — |
967
689
 
968
- ## novel_revision_create_from_review
690
+ ## novel_revision
969
691
 
970
- Create a revision proposal that addresses selected issues from a chapter review (LONG-RUNNING, model-generated). Issue ids come from novel_review_chapter's issue_details. Pass selection to constrain rewriting to an exact manuscript range; overlapping issue evidence never expands that range. The proposal is only staged — apply it with novel_revision_apply.
692
+ List, inspect, create, regenerate, apply and reject revision proposals for a chapter. Create builds a proposal from review issues (source=review) or from an explicit text selection (source=selection); apply writes the accepted hunks into the manuscript.
971
693
 
972
694
  影响:会提交操作或保存文件;具体取决于 action/参数。
973
695
 
974
696
  | 参数 | 类型 | 必填 | 允许值 / 说明 |
975
697
  | --- | --- | --- | --- |
976
- | chapter_id | string | 是 | Chapter id (ch_<digits>). |
977
- | issue_ids | array[string] | 是 | Review issue ids to fix. |
698
+ | action | string | 是 | ["list","get","create","regenerate","apply","reject"];Revision operation; create reads its source from the source parameter. |
699
+ | chapter | string | 否 | Chapter id filter (e.g. "ch_0007"). |
700
+ | status | string | 否 | Status filter (e.g. "proposed", "applied", "rejected"). |
701
+ | proposal_id | string | 否 | Revision proposal id (rev_*). |
702
+ | source | string | 否 | ["review","selection"];Create source: review (default) fixes review issues, selection revises an explicit text range. |
703
+ | chapter_id | string | 否 | Chapter id (ch_<digits>). |
704
+ | issue_ids | array[string] | 否 | Review issue ids to fix; required for create with source="review". |
978
705
  | selection | object | 否 | Optional exact saved-text range in Unicode code points; preserve raw CR/LF characters. |
979
706
  | instruction | string | 否 | Additional revision instruction. |
980
707
  | target_units | integer | 否 | Target length in writing units (0 = keep similar). |
981
708
  | expected_review_revision | string | 否 | Exact review file revision from the chapter work brief. |
982
709
  | expected_document_revision | string | 否 | Exact manuscript revision from the chapter work brief. |
983
-
984
- ## novel_revision_create_selection
985
-
986
- Create a revision proposal for a text selection in a chapter (LONG-RUNNING, model-generated). start/end are Unicode code-point offsets in the exact saved text, including original CR/LF characters; pass the selected text as original_text and the current expected_document_revision. The proposal is only staged — apply it with novel_revision_apply.
987
-
988
- 影响:会提交操作或保存文件;具体取决于 action/参数。
989
-
990
- | 参数 | 类型 | 必填 | 允许值 / 说明 |
991
- | --- | --- | --- | --- |
992
- | chapter_id | string | 是 | Chapter id (ch_<digits>). |
993
- | start | integer | 是 | Selection start offset. |
994
- | end | integer | 是 | Selection end offset. |
710
+ | start | integer | 否 | Selection start offset. |
711
+ | end | integer | 否 | Selection end offset. |
995
712
  | original_text | string | 否 | The selected original text. |
996
- | expected_document_revision | string | 否 | Current exact manuscript revision; reject before generation if the source changed. |
997
- | instruction | string | 否 | Revision instruction (max 4000 characters). |
998
- | action | string | 否 | ["rewrite","expand","compress","pace","dialogue","naturalize","custom"];Revision mode (default "rewrite"). |
999
- | target_units | integer | 否 | Target length in writing units (0 = keep similar). |
713
+ | mode | string | 否 | ["rewrite","expand","compress","pace","dialogue","naturalize","custom"];Revision mode (default "rewrite"). |
1000
714
  | full_chapter | boolean | 否 | Treat the whole chapter as the selection (default false). |
1001
-
1002
- ## novel_revision_get
1003
-
1004
- Get one revision proposal with its diff hunks by proposal id (rev_*).
1005
-
1006
- 影响:只读查询(可更新检索缓存)。
1007
-
1008
- | 参数 | 类型 | 必填 | 允许值 / 说明 |
1009
- | --- | --- | --- | --- |
1010
- | proposal_id | string | 是 | Revision proposal id (rev_*). |
1011
-
1012
- ## novel_revision_regenerate
1013
-
1014
- Regenerate the text of a staged revision proposal (LONG-RUNNING, model-generated).
1015
-
1016
- 影响:会提交操作或保存文件;具体取决于 action/参数。
1017
-
1018
- | 参数 | 类型 | 必填 | 允许值 / 说明 |
1019
- | --- | --- | --- | --- |
1020
- | proposal_id | string | 是 | Revision proposal id (rev_*). |
1021
-
1022
- ## novel_revision_reject
1023
-
1024
- Reject and discard a staged revision proposal. This permanently drops the generated text — it cannot be recovered except by regenerating.
1025
-
1026
- 影响:会提交操作或保存文件;具体取决于 action/参数。
1027
-
1028
- | 参数 | 类型 | 必填 | 允许值 / 说明 |
1029
- | --- | --- | --- | --- |
1030
- | proposal_id | string | 是 | Revision proposal id (rev_*). |
1031
-
1032
- ## novel_revisions_list
1033
-
1034
- List revision proposals, optionally filtered by chapter and/or status.
1035
-
1036
- 影响:只读查询(可更新检索缓存)。
1037
-
1038
- | 参数 | 类型 | 必填 | 允许值 / 说明 |
1039
- | --- | --- | --- | --- |
1040
- | chapter | string | 否 | Chapter id filter (e.g. "ch_0007"). |
1041
- | status | string | 否 | Status filter (e.g. "proposed", "applied", "rejected"). |
715
+ | replacement_text | string | 否 | Replacement text overriding the proposal. |
716
+ | selected_hunk_ids | array[string] | 否 | Apply only these diff hunk ids. |
1042
717
 
1043
718
  ## novel_rolling_plan_action
1044
719
 
1045
- Manage rolling plan candidates (mid-range plot planning windows). Actions: "list" (limit?), "create" (current_arc?, window_size? default 50, max 50). current_window/accepted_window is accepted manuscript facts only; next_window/planned_window is outline plan, not facts. "get" (candidate_id), "stage" (candidate_id + proposal + revision — stages a plan proposal against the candidate; revision-gated), "delete" (candidate_id + revision), "apply" (candidate_id + revision — appends staged draft chapters that do not collide with the canonical outline into src/outline.md; never writes accepted facts).
720
+ Manage rolling plan candidates (mid-range plot planning windows). Actions: "list" (limit?), "create" (current_arc?, window_size? default 50, max 50). current_window/accepted_window is accepted manuscript facts only; next_window/planned_window is outline plan, not facts. "get" (candidate_id), "stage" (candidate_id + proposal + revision — stages a Markdown plan; chapter headings should read "第N章:标题" or "第N章 标题" and Chinese numerals are accepted; revision-gated), "delete" (candidate_id + revision), "apply" (candidate_id + revision — appends staged draft chapters that do not collide with the canonical outline into src/outline.md; never writes accepted facts; a proposal without recognizable chapter headings is reported as such instead of as "already exists").
1046
721
 
1047
722
  影响:会提交操作或保存文件;具体取决于 action/参数。
1048
723
 
@@ -1083,85 +758,47 @@ Inspect OpenWrite runtime skills. Actions: "list" (all discovered skills), "diag
1083
758
  | intent | string | 否 | Intent hint for resolve. |
1084
759
  | document_type | string | 否 | Document type hint for resolve. |
1085
760
 
1086
- ## novel_scene_migration_apply
1087
-
1088
- Apply one freshly read scene migration preview. Requires the exact preview revision and explicit confirmation.
761
+ ## novel_scene
1089
762
 
1090
- 影响:会提交操作或保存文件;具体取决于 action/参数。
1091
-
1092
- | 参数 | 类型 | 必填 | 允许值 / 说明 |
1093
- | --- | --- | --- | --- |
1094
- | expected_preview_revision | string | 是 | Exact preview_revision from novel_scene_migration_preview. |
1095
- | confirm | boolean | 是 | Must be true after the author approves the preview. |
1096
-
1097
- ## novel_scene_migration_preview
1098
-
1099
- Build a read-only, exact-revision preview that segments existing chapters into stable scenes. This does not write a sidecar.
1100
-
1101
- 影响:只读查询(可更新检索缓存)。
1102
-
1103
- | 参数 | 类型 | 必填 | 允许值 / 说明 |
1104
- | --- | --- | --- | --- |
1105
- | 无 | — | — | — |
1106
-
1107
- ## novel_scene_migration_rollback
1108
-
1109
- Restore the byte-exact scene sidecar that preceded a migration, guarded by the current scene-structure revision.
763
+ Read the scene structure of a chapter, update one scene, and move a scene to another chapter or position. Structure is read-only; update and move are optimistic and require the current revision.
1110
764
 
1111
765
  影响:会提交操作或保存文件;具体取决于 action/参数。
1112
766
 
1113
767
  | 参数 | 类型 | 必填 | 允许值 / 说明 |
1114
768
  | --- | --- | --- | --- |
1115
- | migration_id | string | 是 | Migration id returned by novel_scene_migration_apply. |
1116
- | expected_revision | string | 是 | Fresh scene-structure revision used for CAS. |
1117
-
1118
- ## novel_scene_move
1119
-
1120
- Move one complete scene within or across chapters with scene/source/target revision guards. Cross-chapter moves start the existing manuscript acceptance flow.
1121
-
1122
- 影响:会提交操作或保存文件;具体取决于 action/参数。
1123
-
1124
- | 参数 | 类型 | 必填 | 允许值 / 说明 |
1125
- | --- | --- | --- | --- |
1126
- | scene_id | string | 是 | Stable scene id from novel_scene_structure. |
1127
- | target_chapter_id | string | 是 | Target chapter id (ch_<digits>). |
1128
- | target_index | integer | 是 | Zero-based scene position inside the target chapter. |
1129
- | expected_revision | string | 是 | Fresh scene-structure revision. |
1130
- | expected_source_revision | string | 是 | Fresh source chapter revision. |
1131
- | expected_target_revision | string | 是 | Fresh target chapter revision. |
1132
-
1133
- ## novel_scene_structure
1134
-
1135
- Read the canonical scene structure with stable scene ids, reading/story-time order, chapter revisions, references, freshness, and explicit issues.
1136
-
1137
- 影响:只读查询(可更新检索缓存)。
1138
-
1139
- | 参数 | 类型 | 必填 | 允许值 / 说明 |
1140
- | --- | --- | --- | --- |
1141
- | 无 | — | — | — |
769
+ | action | string | 是 | ["structure","update","move"];Scene operation. |
770
+ | scene_id | string | 否 | Stable scene id from novel_scene(action="structure"). |
771
+ | expected_revision | string | 否 | Fresh scene-structure revision used for CAS. |
772
+ | title | string | 否 | Optional scene title. |
773
+ | story_time_sort_key | string | 否 | Optional lexical story-time sort key. |
774
+ | story_time_label | string | 否 | Optional author-facing story-time label. |
775
+ | characters | array[string] | 否 | Character references; replaces the current list when supplied. |
776
+ | locations | array[string] | 否 | Location references; replaces the current list when supplied. |
777
+ | events | array[string] | 否 | Event references; replaces the current list when supplied. |
778
+ | target_chapter_id | string | 否 | Target chapter id (ch_<digits>). |
779
+ | target_index | integer | 否 | Zero-based scene position inside the target chapter. |
780
+ | expected_source_revision | string | 否 | Fresh source chapter revision. |
781
+ | expected_target_revision | string | 否 | Fresh target chapter revision. |
1142
782
 
1143
- ## novel_scene_update
783
+ ## novel_scene_migration
1144
784
 
1145
- CAS-update scene title, story time, and character/location/event references without changing manuscript prose.
785
+ Preview, apply and roll back the paragraph-to-scene migration of one chapter. The preview is read-only; apply and rollback are guarded by the revisions the previous step reported.
1146
786
 
1147
787
  影响:会提交操作或保存文件;具体取决于 action/参数。
1148
788
 
1149
789
  | 参数 | 类型 | 必填 | 允许值 / 说明 |
1150
790
  | --- | --- | --- | --- |
1151
- | scene_id | string | 是 | Stable scene id from novel_scene_structure. |
1152
- | expected_revision | string | 是 | Fresh scene-structure revision used for CAS. |
1153
- | title | string | 否 | Optional scene title. |
1154
- | story_time_sort_key | string | 否 | Optional lexical story-time sort key. |
1155
- | story_time_label | string | 否 | Optional author-facing story-time label. |
1156
- | characters | array[string] | 否 | Character references; replaces the current list when supplied. |
1157
- | locations | array[string] | 否 | Location references; replaces the current list when supplied. |
1158
- | events | array[string] | 否 | Event references; replaces the current list when supplied. |
791
+ | action | string | 是 | ["preview","apply","rollback"];Scene migration step; apply and rollback require the revision the previous step reported. |
792
+ | expected_preview_revision | string | 否 | Exact preview_revision from novel_scene_migration(action="preview"). |
793
+ | confirm | boolean | 否 | Must be true after the author approves the preview. |
794
+ | migration_id | string | 否 | Migration id returned by novel_scene_migration(action="apply"). |
795
+ | expected_revision | string | 否 | Fresh scene-structure revision used for CAS. |
1159
796
 
1160
797
  ## novel_search
1161
798
 
1162
799
  Search the novel project (semantic + exact match) across chapters, outline, and assets.
1163
800
 
1164
- 影响:只读查询(可更新检索缓存)。
801
+ 影响:会提交操作或保存文件;具体取决于 action/参数。
1165
802
 
1166
803
  | 参数 | 类型 | 必填 | 允许值 / 说明 |
1167
804
  | --- | --- | --- | --- |
@@ -1171,7 +808,7 @@ Search the novel project (semantic + exact match) across chapters, outline, and
1171
808
 
1172
809
  ## novel_settle_backfill
1173
810
 
1174
- Settlement backfill for existing/imported chapters: replay the writer pipeline observer+settler over the actual chapter prose (never rewriting it) and commit chapter memory, runtime-truth notes and a character-state index refresh. Run once after importing an old manuscript so later chapters, reviews and canon/continuity checks have real facts from earlier chapters (without it, review canon stays inconclusive and context lacks previous-chapter recaps). Returns a background task (tsk_*); poll with novel_task_get.
811
+ Settlement backfill for existing/imported chapters: replay the writer pipeline observer+settler over the actual chapter prose (never rewriting it) and commit chapter memory, runtime-truth notes and a character-state index refresh. Run once after importing an old manuscript so later chapters, reviews and canon/continuity checks have real facts from earlier chapters (without it, review canon stays inconclusive and context lacks previous-chapter recaps). Returns a background task (tsk_*); poll with novel_task(action="get").
1175
812
 
1176
813
  影响:会提交操作或保存文件;具体取决于 action/参数。
1177
814
 
@@ -1197,7 +834,7 @@ Style/setting source pipeline (learning from reference texts). Actions: "extract
1197
834
  | chunk_id | string | 否 | Chunk to retry (retry_v2). |
1198
835
  | source_ids | array[string] | 否 | Sources to synthesize (synthesize_v2). |
1199
836
  | profile_id | string | 否 | Analysis profile id (profile_v2/promotion_preview_v2). |
1200
- | target | string | 否 | Promotion target (promotion_preview_v2/promote, default "all"). |
837
+ | target | string | 否 | Promotion target: style/rules/inspiration/setting_candidates for promotion_preview_v2 (required); style/setting/world/all for legacy promote (default "all"). |
1201
838
  | preview_id | string | 否 | Promotion preview id (promote_v2). |
1202
839
  | confirm | boolean | 否 | Confirm a gated promotion (default false). |
1203
840
 
@@ -1205,24 +842,11 @@ Style/setting source pipeline (learning from reference texts). Actions: "extract
1205
842
 
1206
843
  Get a snapshot of the current OpenWrite novel project: title, chapters, word counts, writing targets, and focus compass.
1207
844
 
1208
- 影响:只读查询(可更新检索缓存)。
1209
-
1210
- | 参数 | 类型 | 必填 | 允许值 / 说明 |
1211
- | --- | --- | --- | --- |
1212
- | 无 | — | — | — |
1213
-
1214
- ## novel_structured_change_plan
1215
-
1216
- Stage one structured OpenWrite domain change without writing it. Supported change_kind values are "outline", "asset", "focus", "foreshadowing", and "writing_targets"; `change` uses the corresponding direct tool payload. Use action "preview" to receive an immutable token and entity-level before/after summary. Only after author acceptance pass that token unchanged to "apply". "reject" consumes it, "retry" rebuilds the same semantic change against current source, and "undo" accepts only the revision-bound undo token returned by apply. The server writes the exact validated preview and rejects source conflicts.
1217
-
1218
845
  影响:会提交操作或保存文件;具体取决于 action/参数。
1219
846
 
1220
847
  | 参数 | 类型 | 必填 | 允许值 / 说明 |
1221
848
  | --- | --- | --- | --- |
1222
- | action | string | 是 | ["preview","apply","reject","retry","undo"];Plan lifecycle action. |
1223
- | change_kind | string | 否 | ["outline","asset","focus","foreshadowing","writing_targets"];Structured domain for a preview. |
1224
- | change | json | 否 | One direct-tool-shaped change object, required for preview. |
1225
- | preview_token | string | 否 | Immutable preview or undo token for apply/reject/retry/undo. |
849
+ | 无 | — | — | — |
1226
850
 
1227
851
  ## novel_sync
1228
852
 
@@ -1234,74 +858,27 @@ Synchronize derived caches that are direct src derivatives: outline hierarchy (d
1234
858
  | --- | --- | --- | --- |
1235
859
  | 无 | — | — | — |
1236
860
 
1237
- ## novel_task_cancel
1238
-
1239
- Request cancellation of a queued or running task. Check cancelled and cancellation_status for the actual outcome; poll novel_task_get while cancellation is requested.
1240
-
1241
- 影响:会提交操作或保存文件;具体取决于 action/参数。
1242
-
1243
- | 参数 | 类型 | 必填 | 允许值 / 说明 |
1244
- | --- | --- | --- | --- |
1245
- | wait_seconds | number | 否 | Wait up to 30 seconds for actual cancellation; running model calls may finish later. |
1246
- | task_id | string | 是 | Task id (tsk_*). |
1247
-
1248
- ## novel_task_confirm
1249
-
1250
- Confirm a background task that is awaiting confirmation (e.g. a continuous_write run paused between chapters), letting it resume.
1251
-
1252
- 影响:会提交操作或保存文件;具体取决于 action/参数。
1253
-
1254
- | 参数 | 类型 | 必填 | 允许值 / 说明 |
1255
- | --- | --- | --- | --- |
1256
- | task_id | string | 是 | Task id (tsk_*). |
1257
-
1258
- ## novel_task_create
861
+ ## novel_task
1259
862
 
1260
- Queue a background AI task and return immediately; poll with novel_task_get. Task types and their `input` keys: chapter_write {chapter_id?, guidance?, target_words?, temperature?, outline_revision?}; chapter_review {chapter_id | path, strict?, dimensions?}; revision_selection / revision_from_review (same inputs as the novel_revision_create_* tools); source_operation / reference_operation (same inputs as novel_source_action / novel_reference_library_action); manuscript_import (same input as novel_import); research {prompt, search?, language?, quality?, llm?}; manuscript_reconcile (durable acceptance analysis; usually started through novel_manuscript_acceptance_reconcile); settle_backfill {chapter_ids?, only_missing?} — prefer the novel_settle_backfill convenience tool; continuous_write — prefer the novel_multi_write convenience tool.
863
+ Queue a background AI task and return immediately; poll with get or list. Task types and their `input` keys: chapter_write {chapter_id?, guidance?, target_words?, temperature?, outline_revision?}; chapter_review {chapter_id | path, strict?, dimensions?}; revision_selection / revision_from_review (same inputs as the novel_revision create action); source_operation / reference_operation (same inputs as novel_source_action / novel_reference_library_action); manuscript_import (same input as novel_import); research {prompt, search?, language?, quality? (advisory|balanced|strict), llm?}; manuscript_reconcile (durable acceptance analysis; usually started through novel_manuscript_acceptance_reconcile); settle_backfill {chapter_ids?, only_missing?} - prefer the novel_settle_backfill convenience tool; continuous_write - prefer the novel_multi_write convenience tool.
1261
864
 
1262
865
  影响:会提交操作或保存文件;具体取决于 action/参数。
1263
866
 
1264
867
  | 参数 | 类型 | 必填 | 允许值 / 说明 |
1265
868
  | --- | --- | --- | --- |
1266
- | type | string | 是 | ["chapter_write","chapter_review","revision_selection","revision_from_review","source_operation","reference_operation","manuscript_import","manuscript_reconcile","continuous_write","research","settle_backfill"];Task type. |
1267
- | input | json | 是 | Task input object; shape depends on the task type (see description). |
1268
-
1269
- ## novel_task_get
1270
-
1271
- Get one background task with its event log by task id (tsk_*). Completed chapter write/review/revision tasks refresh the chapter-delivery DoG graph; chapter reviews also materialize the 37-dimension graph.
1272
-
1273
- 影响:会提交操作或保存文件;具体取决于 action/参数。
1274
-
1275
- | 参数 | 类型 | 必填 | 允许值 / 说明 |
1276
- | --- | --- | --- | --- |
1277
- | task_id | string | 是 | Task id (tsk_*). |
1278
-
1279
- ## novel_task_retry
1280
-
1281
- Retry a failed or cancelled background task.
1282
-
1283
- 影响:会提交操作或保存文件;具体取决于 action/参数。
1284
-
1285
- | 参数 | 类型 | 必填 | 允许值 / 说明 |
1286
- | --- | --- | --- | --- |
1287
- | task_id | string | 是 | Task id (tsk_*). |
1288
-
1289
- ## novel_tasks_list
1290
-
1291
- List background tasks (queued/running/finished AI jobs) with per-status counts.
1292
-
1293
- 影响:只读查询(可更新检索缓存)。
1294
-
1295
- | 参数 | 类型 | 必填 | 允许值 / 说明 |
1296
- | --- | --- | --- | --- |
869
+ | action | string | 是 | ["create","get","list","cancel","confirm","retry"];Task operation; long-running work returns a task id immediately. confirm resumes a paused run and returns a continuation task: poll the returned task_id; re-confirming the paused task is idempotent. |
870
+ | type | string | 否 | ["chapter_write","chapter_review","revision_selection","revision_from_review","source_operation","reference_operation","manuscript_import","manuscript_reconcile","continuous_write","research","settle_backfill"];Task type; required for create. |
871
+ | input | json | 否 | Task input object; required for create. Shape depends on the task type (see description). |
872
+ | task_id | string | 否 | Task id (tsk_*). |
1297
873
  | since | string | 否 | ISO timestamp filter for requests whose response was lost. |
1298
874
  | limit | integer | 否 | Maximum number of tasks (server default 100). |
875
+ | wait_seconds | number | 否 | Wait up to 30 seconds for actual cancellation; running model calls may finish later. |
1299
876
 
1300
877
  ## novel_trace_list
1301
878
 
1302
879
  Inspect recent redacted Prompt→context→model→tool→domain traces. Raw prompts, context, model output, credentials, chain-of-thought, and mutation values are never stored.
1303
880
 
1304
- 影响:只读查询(可更新检索缓存)。
881
+ 影响:会提交操作或保存文件;具体取决于 action/参数。
1305
882
 
1306
883
  | 参数 | 类型 | 必填 | 允许值 / 说明 |
1307
884
  | --- | --- | --- | --- |
@@ -1309,7 +886,7 @@ Inspect recent redacted Prompt→context→model→tool→domain traces. Raw pro
1309
886
 
1310
887
  ## novel_write_chapter
1311
888
 
1312
- Queue a chapter write and immediately return a durable task_id. Poll novel_task_get for progress/result. Omit chapter_id to write the outline-recommended next chapter; a given chapter_id must match the current recommendation. Preview context first with novel_context_preview and consult novel_outline_read for the recommendation. Cancel with novel_task_cancel. Generated partial prose is retained; resume_from_draft continues it in a new run when the source/context revisions still match.
889
+ Queue a chapter write and immediately return a durable task_id. Poll novel_task(action="get") for progress/result. Omit chapter_id to write the outline-recommended next chapter; a given chapter_id must match the current recommendation. Preview context first with novel_context_preview and consult novel_outline_read for the recommendation. Cancel with novel_task(action="cancel"). Generated partial prose is retained; resume_from_draft continues it in a new run when the source/context revisions still match.
1313
890
 
1314
891
  影响:会提交操作或保存文件;具体取决于 action/参数。
1315
892
 
@@ -1342,7 +919,7 @@ Read or save shared project terminology, review_terms toggle, concrete noun lexi
1342
919
 
1343
920
  ## novel_writing_targets
1344
921
 
1345
- Immediate compatibility write for targets the author has already authorized exactly; otherwise use novel_structured_change_plan. Update the project writing targets. Ranges: book_words 10000-5000000, chapter_words 200-50000, outline_volume_words 100-5000, outline_act_words 80-3000, outline_section_words 50-2000, outline_chapter_words 30-1000. Omitted fields keep their current values.
922
+ Immediate compatibility write for targets the author has already authorized exactly; otherwise use novel_change_plan(action="structured"). Update the project writing targets. Ranges: book_words 10000-5000000, chapter_words 200-50000, outline_volume_words 100-5000, outline_act_words 80-3000, outline_section_words 50-2000, outline_chapter_words 30-1000. Omitted fields keep their current values.
1346
923
 
1347
924
  影响:会提交操作或保存文件;具体取决于 action/参数。
1348
925