@oh-story/dsh 0.1.18 → 0.1.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -12
- package/lib/drama/manifest.json +77 -247
- package/lib/drama/skills/short-drama/SKILL.md +9 -1
- package/lib/drama/skills/short-drama/references/creator-documents.md +51 -23
- package/lib/drama/skills/short-drama/references/reference-roles.md +1 -1
- package/lib/drama/skills/short-drama/scripts/creator_markdown_check.py +442 -129
- package/lib/drama/skills/short-drama/scripts/project_tool.py +54 -1
- package/lib/drama/skills/short-drama-assets/SKILL.md +2 -6
- package/lib/drama/skills/short-drama-assets/references/continuity-lock.md +9 -3
- package/lib/drama/skills/short-drama-assets/references/era-anchors.md +3 -3
- package/lib/drama/skills/short-drama-assets/references/location-and-view.md +4 -0
- package/lib/drama/skills/short-drama-develop/references/adaptation-craft.md +2 -2
- package/lib/drama/skills/short-drama-develop/references/episode-design.md +19 -4
- package/lib/drama/skills/short-drama-develop/references/genre-cards//347/263/273/347/273/237/346/265/201.md +1 -1
- package/lib/drama/skills/short-drama-edit/SKILL.md +1 -1
- package/lib/drama/skills/short-drama-edit/scripts/edit_tool.py +28 -6
- package/lib/drama/skills/short-drama-edit/scripts/selftest.py +1 -1
- package/lib/drama/skills/short-drama-image-prompts/SKILL.md +1 -5
- package/lib/drama/skills/short-drama-novel-analyze/references/aggregation-and-entities.md +2 -2
- package/lib/drama/skills/short-drama-produce/SKILL.md +2 -0
- package/lib/drama/skills/short-drama-review/SKILL.md +0 -4
- package/lib/drama/skills/short-drama-review/references/production-quality-gates.md +1 -1
- package/lib/drama/skills/short-drama-storyboard/SKILL.md +9 -9
- package/lib/drama/skills/short-drama-storyboard/references/blocking-playbooks.md +43 -13
- package/lib/drama/skills/short-drama-storyboard/references/keyframe-craft.md +5 -5
- package/lib/drama/skills/short-drama-storyboard/references/production-shot-grammar.md +5 -5
- package/lib/drama/skills/short-drama-storyboard/references/shot-craft.md +27 -3
- package/lib/drama/skills/short-drama-storyboard/references/stage-contract.md +2 -1
- package/lib/drama/skills/short-drama-video-prompts/SKILL.md +6 -8
- package/lib/drama/skills/short-drama-video-prompts/references/camera-audio-continuity.md +16 -1
- package/lib/drama/skills/short-drama-video-prompts/references/delivery-profile.md +23 -6
- package/lib/drama/skills/short-drama-video-prompts/references/motion-recipe.md +2 -2
- package/lib/drama/skills/short-drama-video-prompts/references/production-prompt-grammar.md +8 -1
- package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.0.md +41 -2
- package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.5.md +1 -1
- package/lib/drama/skills/short-drama-video-prompts/references/target-model-profile.md +5 -1
- package/lib/drama/skills/short-drama-write/SKILL.md +7 -3
- package/lib/drama/skills/short-drama-write/references/screenplay-format.md +1 -1
- package/lib/drama/skills/short-drama-write/scripts/duration_estimate.py +94 -1
- package/lib/drama/skills/short-drama-write/scripts/screenplay_index.py +13 -4
- package/lib/drama/skills/short-drama-write/scripts/selftest.py +3 -77
- package/lib/index.js +2 -2
- package/lib/index.js.map +1 -1
- package/lib/novel-to-game/README.md +20 -34
- package/lib/novel-to-game/README_ZH.md +20 -34
- package/lib/novel-to-game/VERSION +1 -1
- package/lib/novel-to-game/examples/jin-ping-mei/build/BUILD_BRIEF.md +2 -6
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/audio.js +33 -39
- package/lib/novel-to-game/examples/jin-ping-mei/qa/README.md +2 -2
- package/lib/novel-to-game/manifest.json +46 -46
- package/lib/novel-to-game/skills/game-art-direction/SKILL.md +1 -1
- package/lib/novel-to-game/skills/game-build/references/baked-sprite-workflow.md +2 -3
- package/lib/novel-to-game/skills/game-build/references/blender-asset-workflow.md +6 -7
- package/lib/novel-to-game/skills/game-build/references/build-brief-contract.md +2 -2
- package/lib/novel-to-game/skills/game-build/references/generative-media-pipeline.md +1 -4
- package/lib/novel-to-game/skills/game-build/references/playable-model-contract.md +1 -3
- package/lib/novel-to-game/skills/game-build/references/tts-production-contract.md +1 -3
- package/lib/novel-to-game/skills/game-concept/SKILL.md +1 -1
- package/lib/novel-to-game/skills/game-qa/SKILL.md +3 -4
- package/lib/novel-to-game/skills/game-qa/references/qa-contract.md +1 -1
- package/lib/novel-to-game/skills/game-qa/references/test-design-method.md +3 -2
- package/lib/novel-to-game/skills/novel-game-analyze/SKILL.md +13 -14
- package/lib/novel-to-game/skills/novel-game-analyze/references/gameability-protocol.md +1 -2
- package/lib/novel-to-game/skills/novel-to-game/SKILL.md +4 -4
- package/lib/novel-to-game/skills/novel-to-game/references/intake-method.md +2 -3
- package/lib/novel-to-game/skills/novel-to-game/references/pipeline-contract.md +0 -8
- package/lib/oh-story/manifest.json +49 -49
- package/lib/oh-story/skills/story/SKILL.md +2 -2
- package/lib/oh-story/skills/story/VERSION +1 -1
- package/lib/oh-story/skills/story-deslop/SKILL.md +2 -2
- package/lib/oh-story/skills/story-import/SKILL.md +5 -5
- package/lib/oh-story/skills/story-import/references/deep-analysis.md +1 -1
- package/lib/oh-story/skills/story-import/references/import-report.md +1 -1
- package/lib/oh-story/skills/story-import/references/import-tracking.md +1 -1
- package/lib/oh-story/skills/story-import/references/outline-reverse.md +1 -1
- package/lib/oh-story/skills/story-import/scripts/tracking_commit.py +6 -1
- package/lib/oh-story/skills/story-long-analyze/SKILL.md +2 -2
- package/lib/oh-story/skills/story-long-write/SKILL.md +2 -2
- package/lib/oh-story/skills/story-long-write/references/agent-calls.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/tracking-transaction.md +2 -2
- package/lib/oh-story/skills/story-long-write/scripts/tracking_commit.py +6 -1
- package/lib/oh-story/skills/story-review/SKILL.md +8 -7
- package/lib/oh-story/skills/story-review/references/agent-prompts.md +7 -7
- package/lib/oh-story/skills/story-review/references/tracking-transaction.md +2 -2
- package/lib/oh-story/skills/story-review/scripts/tracking_commit.py +6 -1
- package/lib/oh-story/skills/story-setup/SKILL.md +6 -6
- package/lib/oh-story/skills/story-short-write/SKILL.md +2 -2
- package/lib/oh-story/skills/story-short-write/references/agent-calls.md +3 -3
- package/lib/oh-story/skills/story-short-write/references/workflow-design.md +2 -2
- package/lib/oh-story/skills/story-short-write/references/workflow-revision.md +1 -1
- package/package.json +21 -21
- package/lib/drama/skills/short-drama-assets/assets/character-look.example.jsonl +0 -3
- package/lib/drama/skills/short-drama-assets/assets/continuity.example.jsonl +0 -4
- package/lib/drama/skills/short-drama-assets/assets/decisions.example.jsonl +0 -5
- package/lib/drama/skills/short-drama-assets/assets/location-view.example.jsonl +0 -3
- package/lib/drama/skills/short-drama-assets/assets/occurrences.example.jsonl +0 -5
- package/lib/drama/skills/short-drama-assets/assets/prop-state.example.jsonl +0 -3
- package/lib/drama/skills/short-drama-assets/examples/minimal/characters.jsonl +0 -2
- package/lib/drama/skills/short-drama-assets/examples/minimal/looks.jsonl +0 -2
- package/lib/drama/skills/short-drama-assets/scripts/asset_check.py +0 -267
- package/lib/drama/skills/short-drama-assets/scripts/selftest.py +0 -89
- package/lib/drama/skills/short-drama-image-prompts/examples/minimal-image-prompt-specs.jsonl +0 -2
- package/lib/drama/skills/short-drama-image-prompts/scripts/image_prompt_check.py +0 -443
- package/lib/drama/skills/short-drama-image-prompts/scripts/selftest.py +0 -95
- package/lib/drama/skills/short-drama-review/assets/finding-template.jsonl +0 -2
- package/lib/drama/skills/short-drama-review/assets/supersession-decision.example.json +0 -42
- package/lib/drama/skills/short-drama-review/assets/verdict-template.json +0 -32
- package/lib/drama/skills/short-drama-review/examples/minimal-findings.jsonl +0 -2
- package/lib/drama/skills/short-drama-review/examples/minimal-verdict.json +0 -34
- package/lib/drama/skills/short-drama-review/scripts/review_check.py +0 -325
- package/lib/drama/skills/short-drama-review/scripts/selftest.py +0 -87
- package/lib/drama/skills/short-drama-storyboard/assets/coverage-audition.example.jsonl +0 -2
- package/lib/drama/skills/short-drama-storyboard/assets/revision-lineage.fragment.json +0 -12
- package/lib/drama/skills/short-drama-storyboard/assets/scene-visual-plan.example.jsonl +0 -2
- package/lib/drama/skills/short-drama-storyboard/scripts/selftest.py +0 -191
- package/lib/drama/skills/short-drama-storyboard/scripts/storyboard_check.py +0 -824
- package/lib/drama/skills/short-drama-video-prompts/assets/coverage-scope.fragment.json +0 -21
- package/lib/drama/skills/short-drama-video-prompts/assets/motion-terminal.example.jsonl +0 -2
- package/lib/drama/skills/short-drama-video-prompts/assets/performance.fragment.json +0 -38
- package/lib/drama/skills/short-drama-video-prompts/examples/minimal-music-specs.jsonl +0 -2
- package/lib/drama/skills/short-drama-video-prompts/scripts/container_check.py +0 -329
- package/lib/drama/skills/short-drama-video-prompts/scripts/motion_timing_check.py +0 -451
- package/lib/drama/skills/short-drama-video-prompts/scripts/music_spec_check.py +0 -327
- package/lib/drama/skills/short-drama-video-prompts/scripts/selftest.py +0 -82
- package/lib/drama/skills/short-drama-write/scripts/voice_sheet_check.py +0 -416
|
@@ -23,7 +23,7 @@ description: "Direct game art and creative vision. Turn GAME_DESIGN into ART_DIR
|
|
|
23
23
|
4. 定义首屏焦点、HUD 信息层级、输入反馈、结果分级、失败与结果状态;
|
|
24
24
|
5. 为环境、角色、交互物和关键道具定义共享世界语法与各自识别锚点;
|
|
25
25
|
6. 定义目标语言的字体覆盖、阅读顺序、文本密度与文化符号边界;
|
|
26
|
-
7.
|
|
26
|
+
7. 为核心循环或最高视觉风险定义关键游戏时刻,说明玩家动作、压力、焦点和前后状态;
|
|
27
27
|
8. 定义声音世界、功能反馈层级和音乐边界;语音只在确有独特价值时选择,并始终保留字幕/静音路径。
|
|
28
28
|
|
|
29
29
|
`narrative-led` 或 `hybrid` 的叙事层还要说明人物距离、朝向、遮挡和姿态如何表现关系变化,以及对白区
|
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
适用于 2.5D 游戏里需要多方向、多动作且身份一致的角色或物件。逐帧二维生成很难在转向和动作之间保持
|
|
4
4
|
同一张脸、同一套服装和同一比例;先做出三维模型、再按游戏镜头逐帧渲染,可以把这些事实锁在模型里。
|
|
5
|
-
|
|
6
|
-
GAME_DESIGN 与 ART_DIRECTION 的裁决。
|
|
5
|
+
已有可用序列帧或程序化表现已经足够时不迁移。
|
|
7
6
|
|
|
8
7
|
## 流程
|
|
9
8
|
|
|
@@ -16,4 +15,4 @@ GAME_DESIGN 与 ART_DIRECTION 的裁决。
|
|
|
16
15
|
是否打滑、锚点是否抖动、光色是否与场景一致。只重做暴露问题的方向或动作。
|
|
17
16
|
|
|
18
17
|
工具、模型与服务按当前能力、许可与费用选择;上传内容只含该角色的目标图。源模型、绑定文件、渲染脚本
|
|
19
|
-
|
|
18
|
+
和最终图集都保存在工作区,供应商任务页不算资产。
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
# Blender 资产工作流(按需)
|
|
2
2
|
|
|
3
3
|
适用于需要可编辑几何、场景装配或反复调整的资产;已有资产或程序化实现足够时不迁移。
|
|
4
|
-
它是资产制作路径,不替代目标游戏运行时,也不改变 GAME_DESIGN 与 ART_DIRECTION 的裁决。
|
|
5
4
|
|
|
6
5
|
## 工具与输入
|
|
7
6
|
|
|
8
|
-
批处理可用 Blender Python/CLI;需要交互读取场景、对象与视口时可用 MCP
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
批处理可用 Blender Python/CLI;需要交互读取场景、对象与视口时可用 MCP。MCP 已登记不等于
|
|
8
|
+
已连通;先实际读取目标场景,确认操作对象。可执行 Python 的连接不是沙箱,本机服务不对外开放,
|
|
9
|
+
不执行来自网页或下载资产的未审查代码;在线素材服务另按项目授权启用。
|
|
11
10
|
|
|
12
11
|
## 最小迭代
|
|
13
12
|
|
|
@@ -18,7 +17,7 @@ MCP 已登记不等于已连通;先实际读取目标场景,确认操作对
|
|
|
18
17
|
3. 用目标加载器回读导出物,按实际消费项核对尺度、轴向、节点、材质及自定义属性;
|
|
19
18
|
UV/顶点色兼作风权重等数据时检查语义值,不只确认通道存在。沿用项目预算,不为候选放宽。
|
|
20
19
|
4. 放回真实游戏的相机、光照和输入路径,比较识别性、遮挡与交互;只修改暴露问题的资产。
|
|
21
|
-
|
|
20
|
+
资产请求与必要日志确认加载的是候选,而非缓存旧版或占位物。
|
|
22
21
|
|
|
23
|
-
Blender 视口或视频只能说明该表现,不能证明游戏可玩或性能达标;相关变化交现有游戏 QA
|
|
24
|
-
|
|
22
|
+
Blender 视口或视频只能说明该表现,不能证明游戏可玩或性能达标;相关变化交现有游戏 QA 验证。
|
|
23
|
+
候选未改善批准目标时保留原版。
|
|
@@ -58,11 +58,11 @@ production 的权威 verify 必须在同一次完整运行中证明启动、真
|
|
|
58
58
|
|
|
59
59
|
允许定向检查、修复和复跑;最终 `qa/verification.json` 原子替换为当前完整运行结果,
|
|
60
60
|
失败不得残留旧 PASS,也不能拼接不同版本或不同运行的六项成功。
|
|
61
|
-
有事件、知识权限或 patch
|
|
61
|
+
有事件、知识权限或 patch 时,将其相关回归纳入项目验证。
|
|
62
62
|
|
|
63
63
|
## 按需交接
|
|
64
64
|
|
|
65
|
-
- 视觉:只列批准的焦点资产、生产状态、运行中证据和剩余问题,继承 ART_DIRECTION
|
|
65
|
+
- 视觉:只列批准的焦点资产、生产状态、运行中证据和剩余问题,继承 ART_DIRECTION。
|
|
66
66
|
必需资产失败须明确报错;可降级项采用预先定义的替代,并验证玩家效果仍成立。
|
|
67
67
|
- 连续 3D:记录控制权、相机/移动前向、失焦归零,以及改变路线的布局与碰撞边界;
|
|
68
68
|
帧率或一条成功路线不证明碰撞正确。
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# 动态媒体生产合同
|
|
2
2
|
|
|
3
3
|
仅在 ART_DIRECTION 选择动态媒体时使用。工具和模型由环境决定,使用前核实当前能力、许可与费用。
|
|
4
|
-
|
|
4
|
+
需要改变视角、位置或空间关系的交互不能用视频伪装。
|
|
5
5
|
|
|
6
6
|
## 最小台账
|
|
7
7
|
|
|
@@ -20,6 +20,3 @@
|
|
|
20
20
|
|
|
21
21
|
在实际触发位置验证播放、跳过与降级。跳过或低动效版本仍进入同一合法状态,
|
|
22
22
|
保留必要信息、输入机会和结果。最终运行文件保存在工作区,供应商任务页不是资产。
|
|
23
|
-
|
|
24
|
-
必需媒体失败时明确报错;可降级媒体采用已定义替代并记录完成度差异。
|
|
25
|
-
相关诊断映射到现有六项玩家效果或 limitation,不另造媒体 QA 等级。
|
|
@@ -35,12 +35,10 @@
|
|
|
35
35
|
|
|
36
36
|
## 回放与兼容性
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
需要载入时用快照,需要重演时保留事件和规范化输入。
|
|
39
39
|
同一内容/规则版本、初态、seed 与规范化动作序列应复现规则终态和事件顺序;
|
|
40
40
|
在线生成表达不参与权威状态比较。
|
|
41
41
|
|
|
42
42
|
回滚遵循已批准设计。节点标识、变量语义、行动效果或知识权限变化时迁移或明确拒绝旧存档/日志,
|
|
43
43
|
不能静默重解释。局部修改声明基础版本、目标、预期差异与兼容性,重放失败路径及相邻反例,
|
|
44
44
|
检查修改范围外的不变量。
|
|
45
|
-
|
|
46
|
-
这些检查只证明被覆盖的因果与回放,不证明角色魅力、选择重量或复玩意愿。
|
|
@@ -43,7 +43,7 @@ description: "Design game concepts from a novel. From SOURCE_BIBLE and PRODUCT_B
|
|
|
43
43
|
2. 体验承诺及其可观察现象和失败现象;
|
|
44
44
|
3. 紧凑先例说明;
|
|
45
45
|
4. 候选概念卡:主类型、`experienceProfile`、借用/拒绝的玩法先例、核心动作与循环、压力、失败、
|
|
46
|
-
|
|
46
|
+
世界响应;说明玩家身份如何形成反复行动、执行阻力与可观察变化。
|
|
47
47
|
`signature_command` 按方法「身份专属命令」写值或 `N/A`;最后说明原作张力如何由玩家行动体现、
|
|
48
48
|
招牌画面、最小验证切片、最大风险和否决观察;
|
|
49
49
|
5. 硬否决结果、关键取舍、推荐与选择状态;
|
|
@@ -14,7 +14,7 @@ description: "Verify a game with evidence on its selected target runtime. Launch
|
|
|
14
14
|
## 唯一必需合同
|
|
15
15
|
|
|
16
16
|
每个候选都必须用真实运行证据覆盖:`launch`、`render`、`input`、`coreLoop`、`outcome`、`restart`。
|
|
17
|
-
`targetFinish`
|
|
17
|
+
`targetFinish` 描述成色,不改变这组六项。
|
|
18
18
|
|
|
19
19
|
## 执行
|
|
20
20
|
|
|
@@ -26,11 +26,10 @@ description: "Verify a game with evidence on its selected target runtime. Launch
|
|
|
26
26
|
代码路径。
|
|
27
27
|
4. 若候选有可执行模型、事件日志、patch 或 `signature_command`,按 test-design-method 的对应合同把
|
|
28
28
|
项目回归嵌入权威 verify;允许定向诊断、修复和复跑,最终六项证据必须来自同一次完整运行。
|
|
29
|
-
失败映射到已有 checks 或 limitation
|
|
29
|
+
失败映射到已有 checks 或 limitation。
|
|
30
30
|
5. 记录 limitation 和问题的 product/design/art/build 归属。
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
框架、测试库或调试接口。
|
|
32
|
+
优先使用已有可观察状态;只有无法判断结果时才增加最小测试钩子。
|
|
34
33
|
|
|
35
34
|
## 输出
|
|
36
35
|
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
## 条件检查与边界
|
|
58
58
|
|
|
59
59
|
连续 3D、多语言、无障碍、语音、媒体或生成资产只在游戏实际采用时运行诊断。只看玩家能否正确
|
|
60
|
-
|
|
60
|
+
看到、听到、操作和完成核心流程,不审计供应商请求、营销素材或生产身份。
|
|
61
61
|
|
|
62
62
|
只有 brief/ledger 预先批准的 fallback 才能继续,并证明核心动作、状态、结果、可读反馈和 restart
|
|
63
63
|
仍成立。安全失败仍是 FAIL;测试替身只证明测试层;placeholder 只描述完成度;历史证据只说明旧候选。
|
|
@@ -37,13 +37,14 @@
|
|
|
37
37
|
源码、攻略与隐藏状态可用于规则验证,不能据此证明玩家能自行理解提示或发现解法。
|
|
38
38
|
仅在评估引导、提示或解谜可发现性时,另用未接触解法的试玩上下文,只提供玩家可见信息与正常输入;
|
|
39
39
|
不向其开放源码、内部快照或答案文件。若已接触这些信息,结果只作知情验证,不冒充玩家视角试玩。
|
|
40
|
-
|
|
40
|
+
记录所见提示、实际尝试与卡点。
|
|
41
41
|
|
|
42
42
|
文字或叙事主导项目在目标视口检查当前动作、必要依据与反馈是否可达可读,按批准的阅读方式判断
|
|
43
43
|
遮挡、截断或不可操作。额外视口与溢出遍历按风险做诊断,不强制截图矩阵。
|
|
44
44
|
|
|
45
45
|
## 四、证据要求
|
|
46
|
-
|
|
46
|
+
证据用工作区相对路径且文件真实存在,不引用临时目录、缓存或个人桌面;状态取值与 limitation 按
|
|
47
|
+
qa-contract.md 记录。
|
|
47
48
|
|
|
48
49
|
大型录屏、逐点击截图、raw trace 和可重建 contact sheet 不长期进 Git;保留当前声明真正引用的最小
|
|
49
50
|
代表证据。问题按 product/design/art/build 归属。
|
|
@@ -26,20 +26,20 @@ description: "Deconstruct a novel for game adaptation. Compress a raw novel, dec
|
|
|
26
26
|
|
|
27
27
|
## 全书管道
|
|
28
28
|
|
|
29
|
-
建立边界 → 逐单元提取 → 覆盖门禁 → 分层聚合 → 回查原文 →
|
|
30
|
-
gameability-protocol.md
|
|
31
|
-
|
|
29
|
+
建立边界 → 逐单元提取 → 覆盖门禁 → 分层聚合 → 回查原文 → 压缩交付,各步做法见
|
|
30
|
+
gameability-protocol.md。选定改编段落的核对在概念选定后二次进入时做,产出逐事实表(见「输出」)。
|
|
31
|
+
工作卡只服务覆盖、恢复和复核,不把过程日志包装成策划成果。
|
|
32
32
|
|
|
33
33
|
可以在运行时并行处理互不重叠的章节批次,但每批必须使用同一提取契约,聚合和事实回查
|
|
34
|
-
|
|
34
|
+
保持串行;环境不支持并行时逐批串行完成。
|
|
35
35
|
|
|
36
36
|
## 提取维度
|
|
37
37
|
|
|
38
38
|
只保留会影响玩家动作、世界响应或视听身份的内容;维度、覆盖状态与命令/委托的记录方式以协议
|
|
39
39
|
「逐单元取证」「从事实得到系统候选」为准。
|
|
40
40
|
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
为硬规则、关键角色目标、玩家身份依据、转折结局和标志性锚点记录章节或文件位置;
|
|
42
|
+
推断必须明确标成推断或开放设计空间。
|
|
43
43
|
|
|
44
44
|
## 输出
|
|
45
45
|
|
|
@@ -47,20 +47,19 @@ gameability-protocol.md 为准,此处只列顺序,不重述。选定改编
|
|
|
47
47
|
证据、改编边界、玩家身份候选(PRODUCT_BRIEF 已锁身份时改为该身份的动作空间验证)、
|
|
48
48
|
可玩动词、可下达/承接的身份动作及其执行阻力、世界模型、空间与角色能动性、文化语境、
|
|
49
49
|
术语表(语言条件见上)、视觉锚点、风险和设计空白。全书覆盖按连续范围列出开篇、中段、结局和跨段
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
回收的关键变化、强弱节奏、反例与游戏化意义;表头写明来源单元数与成功数。短表格优先于重复文档、
|
|
51
|
+
结构化数据和证据索引。
|
|
52
52
|
|
|
53
53
|
改编边界必须是表格:`条目 | 边界类型 | 证据位置`,边界类型只用协议的四种标签;涉及
|
|
54
54
|
名分、座次、官阶或队伍序列的作品必须附人物名册行(`姓名 | 身份/次序 | 结局 | 证据回目`),
|
|
55
|
-
|
|
55
|
+
供下游回查人物身份与次序。
|
|
56
56
|
|
|
57
57
|
概念阶段选定改编段落后,二次进入本 skill 为该段落补一张逐事实表并追加进 SOURCE_BIBLE:
|
|
58
58
|
`事实 | 证据位置 | 边界类型`,含入镜角色的外观要点(服饰、兵器、体量及位置;原文无描写
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
切片说辞。
|
|
59
|
+
写「原文未明确」)。此表供下游回查段落事实;下游发现出入时回上游修正此表,不各自改写。
|
|
60
|
+
概念选定后只补充或纠正有依据的原作事实——SOURCE_BIBLE 不得包含下游发明物,游戏状态键名、
|
|
61
|
+
回合或日程编号、scene_id、Hub/界面结构、QA 与范围计划只属于 GAME_DESIGN,不得把既有事实
|
|
62
|
+
改写成切片说辞。
|
|
64
63
|
|
|
65
64
|
来源范围只记录会影响复核的版本、覆盖范围和授权边界。下载日期、字节数、校验值和
|
|
66
65
|
本地路径只有在复现契约确实需要时才写,不把获取日志当策划内容。
|
|
@@ -21,14 +21,14 @@ description: "Turn a novel into a fully playable game on the selected target pla
|
|
|
21
21
|
## 模式
|
|
22
22
|
|
|
23
23
|
- `quick`:默认;用推荐草案推进,比较有效替代后自动选择并完成全流程。
|
|
24
|
-
- `director
|
|
25
|
-
|
|
24
|
+
- `director`:在概念方向、白盒试玩后的内容取舍(可在此请目标玩家试玩)和视觉目标候选(仅制作视觉目标包时)
|
|
25
|
+
给出候选与推荐后停靠,等待用户选择;已有明确选择时不重复停靠。
|
|
26
26
|
- `resume`:读取 `_progress.md` 和实际产物,从最早未完成的交接继续。
|
|
27
27
|
|
|
28
28
|
## 流程
|
|
29
29
|
|
|
30
30
|
1. 建立工作区,记录来源、模式、当前阶段和未确认假设。
|
|
31
|
-
2. 生成 `PRODUCT_BRIEF.md
|
|
31
|
+
2. 生成 `PRODUCT_BRIEF.md`。
|
|
32
32
|
3. 调用 `novel-game-analyze` 生成有原文依据的 `SOURCE_BIBLE.md`。
|
|
33
33
|
4. 调用 `game-concept` 比较仍开放的方向并选定 `CONCEPT.md`;自然语言专属命令按玩法需要选择,
|
|
34
34
|
不适用时明确 `N/A`;`director` 的待决方向在此停靠。
|
|
@@ -39,7 +39,7 @@ description: "Turn a novel into a fully playable game on the selected target pla
|
|
|
39
39
|
7. 调用 `game-art-direction` 生成 `ART_DIRECTION.md`;只有高风险歧义或目标成色需要时再制作视觉目标包,目标图选定后
|
|
40
40
|
才进入批量资产生产。
|
|
41
41
|
8. 再由 `game-build` 将验证后的因果语义实现为完整候选,`game-qa` 验证最小闭环;问题按
|
|
42
|
-
product/design/art/build
|
|
42
|
+
product/design/art/build 归属回流。
|
|
43
43
|
|
|
44
44
|
## 语言与文化
|
|
45
45
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
# 需求确认:先给推荐,再处理高风险歧义
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
只有会实质改变方向或涉及安全的决定才停下来确认。
|
|
3
|
+
尽早锁定会影响后续制作的产品边界。
|
|
5
4
|
|
|
6
5
|
## 默认动作
|
|
7
6
|
|
|
@@ -48,4 +47,4 @@
|
|
|
48
47
|
## 输出
|
|
49
48
|
|
|
50
49
|
`PRODUCT_BRIEF.md` 紧凑写清上述产品边界、`targetFinish`、明确非目标、合规/权利边界、未确认假设和
|
|
51
|
-
|
|
50
|
+
需要用户裁决的阻断项。只有阻断项为空才进入拆解。
|
|
@@ -18,10 +18,6 @@ game-adaptations/{project}/
|
|
|
18
18
|
按需增加 `_coverage.md`、视觉目标、资产账本和最小证据目录。所有机器状态只取 `NOT_RUN` / `FAIL` /
|
|
19
19
|
`PASS`;`NOT_RUN` 表示没有证据,不能满足完成声明。
|
|
20
20
|
|
|
21
|
-
早期白盒候选、可执行模型、事件日志、回放与 patch 只在项目实际需要时增加。可执行模型必须被当前
|
|
22
|
-
候选运行时消费,或作为测试合同逐项对照实际规则;不能把整份 `GAME_DESIGN.md` 再抄成一份无人读取的
|
|
23
|
-
JSON/YAML。设计理由仍由 `GAME_DESIGN.md` 拥有,运行状态与动作由实现拥有,实际发生记录由事件日志拥有。
|
|
24
|
-
|
|
25
21
|
## 阶段 owner 与完成检查
|
|
26
22
|
|
|
27
23
|
概念、体验/关卡设计、美术方向分别由 `CONCEPT.md`、`GAME_DESIGN.md`、`ART_DIRECTION.md` 的 owner
|
|
@@ -35,9 +31,6 @@ JSON/YAML。设计理由仍由 `GAME_DESIGN.md` 拥有,运行状态与动作
|
|
|
35
31
|
`_progress.md` 只记录来源、模式、当前阶段、未确认假设、回流、预算复盘结论和这两项结果。详细测试状态留在
|
|
36
32
|
`qa/verification.json`,不要复制到多份状态表。
|
|
37
33
|
|
|
38
|
-
早期工作区缺少 `experienceProfile` 时,`resume` 按现有 `CONCEPT.md` 补记一次并继续;不得据此重做
|
|
39
|
-
已批准概念。
|
|
40
|
-
|
|
41
34
|
## 证据角色
|
|
42
35
|
|
|
43
36
|
构建准备候选与 verify 入口。QA 可诊断、修复后复跑;最终事实源原子记录当前同一次完整运行,
|
|
@@ -45,7 +38,6 @@ JSON/YAML。设计理由仍由 `GAME_DESIGN.md` 拥有,运行状态与动作
|
|
|
45
38
|
|
|
46
39
|
白盒试玩是设计回流,不是第七道顶层 QA 门。反馈至少记录观察位置、玩家输入、预期与实际差异、受影响
|
|
47
40
|
的状态/动作/知识/回响节点和 owner;修订后用可复现的初态与输入路径复查,随机性相关时固定 seed。
|
|
48
|
-
已有存档/日志因节点标识、变量语义、动作效果或知识权限变化而失效时,迁移或明确拒绝兼容,不能静默解释成新历史。
|
|
49
41
|
|
|
50
42
|
白盒试玩还要回答玩家实际追着玩、反复回来做的是哪一部分。`director` 可在此停靠,请用户找一位目标
|
|
51
43
|
玩家试玩;无人可找时,另起一个未读过设计文档与源码的代理会话,只凭画面和正常输入试玩。概念与设计阶段
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 2,
|
|
3
3
|
"upstream": {
|
|
4
|
-
"repository": "
|
|
5
|
-
"commit": "
|
|
6
|
-
"releaseVersion": "0.9.
|
|
7
|
-
"agentsVersion":
|
|
4
|
+
"repository": "https://github.com/zenstory-ai/oh-story-claudecode.git",
|
|
5
|
+
"commit": "70d1cf426f8cbe3d374e2b06e4c2cbdbd986da06",
|
|
6
|
+
"releaseVersion": "0.9.1",
|
|
7
|
+
"agentsVersion": 37
|
|
8
8
|
},
|
|
9
|
-
"generatedAt": "2026-10-
|
|
9
|
+
"generatedAt": "2026-10-27T08:36:12.470Z",
|
|
10
10
|
"skills": [
|
|
11
11
|
"browser-cdp",
|
|
12
12
|
"story",
|
|
@@ -94,8 +94,8 @@
|
|
|
94
94
|
},
|
|
95
95
|
{
|
|
96
96
|
"path": "skills/story-deslop/SKILL.md",
|
|
97
|
-
"sha256": "
|
|
98
|
-
"bytes":
|
|
97
|
+
"sha256": "b82bb526611511525e97f1c0782789ab52ab3db8e15036b593a83f05bb0c189d",
|
|
98
|
+
"bytes": 11930
|
|
99
99
|
},
|
|
100
100
|
{
|
|
101
101
|
"path": "skills/story-deslop/references/agent-calls.md",
|
|
@@ -154,8 +154,8 @@
|
|
|
154
154
|
},
|
|
155
155
|
{
|
|
156
156
|
"path": "skills/story-import/SKILL.md",
|
|
157
|
-
"sha256": "
|
|
158
|
-
"bytes":
|
|
157
|
+
"sha256": "630e500f07ce027ff886c2803751017540e96a26936cf72f3a15616267b2eec5",
|
|
158
|
+
"bytes": 11738
|
|
159
159
|
},
|
|
160
160
|
{
|
|
161
161
|
"path": "skills/story-import/references/benchmark-sync.md",
|
|
@@ -169,13 +169,13 @@
|
|
|
169
169
|
},
|
|
170
170
|
{
|
|
171
171
|
"path": "skills/story-import/references/deep-analysis.md",
|
|
172
|
-
"sha256": "
|
|
173
|
-
"bytes":
|
|
172
|
+
"sha256": "afbf56c9539021fd7322b766c40b813f3f04ff04d6ca55d6144425c85081f9f3",
|
|
173
|
+
"bytes": 5398
|
|
174
174
|
},
|
|
175
175
|
{
|
|
176
176
|
"path": "skills/story-import/references/import-report.md",
|
|
177
|
-
"sha256": "
|
|
178
|
-
"bytes":
|
|
177
|
+
"sha256": "d90b90d870f54377e686839efa8d14b4dcff7e1647d51af8d1e1ea61ca2f18f0",
|
|
178
|
+
"bytes": 4482
|
|
179
179
|
},
|
|
180
180
|
{
|
|
181
181
|
"path": "skills/story-import/references/import-special-cases.md",
|
|
@@ -184,8 +184,8 @@
|
|
|
184
184
|
},
|
|
185
185
|
{
|
|
186
186
|
"path": "skills/story-import/references/import-tracking.md",
|
|
187
|
-
"sha256": "
|
|
188
|
-
"bytes":
|
|
187
|
+
"sha256": "87ffc81c12a7f1ba729e057bc3ccd877d395d86544b09a0565c0a5766f5e70a0",
|
|
188
|
+
"bytes": 7702
|
|
189
189
|
},
|
|
190
190
|
{
|
|
191
191
|
"path": "skills/story-import/references/length-routing.md",
|
|
@@ -199,8 +199,8 @@
|
|
|
199
199
|
},
|
|
200
200
|
{
|
|
201
201
|
"path": "skills/story-import/references/outline-reverse.md",
|
|
202
|
-
"sha256": "
|
|
203
|
-
"bytes":
|
|
202
|
+
"sha256": "651301ddd428fbb61c86132e947318009d145c0b991895f96c8efff43bd364bb",
|
|
203
|
+
"bytes": 2845
|
|
204
204
|
},
|
|
205
205
|
{
|
|
206
206
|
"path": "skills/story-import/references/structure-mapping-long.md",
|
|
@@ -234,8 +234,8 @@
|
|
|
234
234
|
},
|
|
235
235
|
{
|
|
236
236
|
"path": "skills/story-import/scripts/tracking_commit.py",
|
|
237
|
-
"sha256": "
|
|
238
|
-
"bytes":
|
|
237
|
+
"sha256": "42cce59cd653d29504045d82f04756c2be36fb448c987f66f1cbd8b7539dd300",
|
|
238
|
+
"bytes": 83993
|
|
239
239
|
},
|
|
240
240
|
{
|
|
241
241
|
"path": "skills/story-import/scripts/wordcount_core.py",
|
|
@@ -244,8 +244,8 @@
|
|
|
244
244
|
},
|
|
245
245
|
{
|
|
246
246
|
"path": "skills/story-long-analyze/SKILL.md",
|
|
247
|
-
"sha256": "
|
|
248
|
-
"bytes":
|
|
247
|
+
"sha256": "037f98431e263013ff8c4b884bca437bcceba15b8b35470c9c4959d0871c887c",
|
|
248
|
+
"bytes": 11151
|
|
249
249
|
},
|
|
250
250
|
{
|
|
251
251
|
"path": "skills/story-long-analyze/references/author-facing.md",
|
|
@@ -409,13 +409,13 @@
|
|
|
409
409
|
},
|
|
410
410
|
{
|
|
411
411
|
"path": "skills/story-long-write/SKILL.md",
|
|
412
|
-
"sha256": "
|
|
413
|
-
"bytes":
|
|
412
|
+
"sha256": "5ef090e95bd5e4011bfc4f8806c8924b052deecb74d9942a7c29189a3c2556ce",
|
|
413
|
+
"bytes": 14458
|
|
414
414
|
},
|
|
415
415
|
{
|
|
416
416
|
"path": "skills/story-long-write/references/agent-calls.md",
|
|
417
|
-
"sha256": "
|
|
418
|
-
"bytes":
|
|
417
|
+
"sha256": "9a64ca17401a81046419e1a5b7da0097164e0ccff0273a2b4394697ce94854eb",
|
|
418
|
+
"bytes": 7373
|
|
419
419
|
},
|
|
420
420
|
{
|
|
421
421
|
"path": "skills/story-long-write/references/artifact-protocols.md",
|
|
@@ -749,8 +749,8 @@
|
|
|
749
749
|
},
|
|
750
750
|
{
|
|
751
751
|
"path": "skills/story-long-write/references/tracking-transaction.md",
|
|
752
|
-
"sha256": "
|
|
753
|
-
"bytes":
|
|
752
|
+
"sha256": "ff24a293ce055364398a2576cf34ea5730c8ec1d423a688962c774a546ab2c9c",
|
|
753
|
+
"bytes": 15618
|
|
754
754
|
},
|
|
755
755
|
{
|
|
756
756
|
"path": "skills/story-long-write/references/workflow-chapter.md",
|
|
@@ -849,8 +849,8 @@
|
|
|
849
849
|
},
|
|
850
850
|
{
|
|
851
851
|
"path": "skills/story-long-write/scripts/tracking_commit.py",
|
|
852
|
-
"sha256": "
|
|
853
|
-
"bytes":
|
|
852
|
+
"sha256": "42cce59cd653d29504045d82f04756c2be36fb448c987f66f1cbd8b7539dd300",
|
|
853
|
+
"bytes": 83993
|
|
854
854
|
},
|
|
855
855
|
{
|
|
856
856
|
"path": "skills/story-long-write/scripts/wordcount_core.py",
|
|
@@ -859,13 +859,13 @@
|
|
|
859
859
|
},
|
|
860
860
|
{
|
|
861
861
|
"path": "skills/story-review/SKILL.md",
|
|
862
|
-
"sha256": "
|
|
863
|
-
"bytes":
|
|
862
|
+
"sha256": "ea87e7aa4519b563b4c44279abb1caad11ef6d0750993b516cb73605bfadce00",
|
|
863
|
+
"bytes": 21128
|
|
864
864
|
},
|
|
865
865
|
{
|
|
866
866
|
"path": "skills/story-review/references/agent-prompts.md",
|
|
867
|
-
"sha256": "
|
|
868
|
-
"bytes":
|
|
867
|
+
"sha256": "867459c832c54826172df09dc24bddab736d0183a66b9b1202fb0bad61aabe0e",
|
|
868
|
+
"bytes": 14249
|
|
869
869
|
},
|
|
870
870
|
{
|
|
871
871
|
"path": "skills/story-review/references/banned-words.md",
|
|
@@ -934,8 +934,8 @@
|
|
|
934
934
|
},
|
|
935
935
|
{
|
|
936
936
|
"path": "skills/story-review/references/tracking-transaction.md",
|
|
937
|
-
"sha256": "
|
|
938
|
-
"bytes":
|
|
937
|
+
"sha256": "ff24a293ce055364398a2576cf34ea5730c8ec1d423a688962c774a546ab2c9c",
|
|
938
|
+
"bytes": 15618
|
|
939
939
|
},
|
|
940
940
|
{
|
|
941
941
|
"path": "skills/story-review/scripts/check-ai-patterns.js",
|
|
@@ -959,8 +959,8 @@
|
|
|
959
959
|
},
|
|
960
960
|
{
|
|
961
961
|
"path": "skills/story-review/scripts/tracking_commit.py",
|
|
962
|
-
"sha256": "
|
|
963
|
-
"bytes":
|
|
962
|
+
"sha256": "42cce59cd653d29504045d82f04756c2be36fb448c987f66f1cbd8b7539dd300",
|
|
963
|
+
"bytes": 83993
|
|
964
964
|
},
|
|
965
965
|
{
|
|
966
966
|
"path": "skills/story-review/scripts/wordcount_core.py",
|
|
@@ -969,7 +969,7 @@
|
|
|
969
969
|
},
|
|
970
970
|
{
|
|
971
971
|
"path": "skills/story-setup/SKILL.md",
|
|
972
|
-
"sha256": "
|
|
972
|
+
"sha256": "e0f79674c02932bb65202e19a43c3cc5e96abec36ef1cd245e05ba134bec6304",
|
|
973
973
|
"bytes": 17843
|
|
974
974
|
},
|
|
975
975
|
{
|
|
@@ -1449,13 +1449,13 @@
|
|
|
1449
1449
|
},
|
|
1450
1450
|
{
|
|
1451
1451
|
"path": "skills/story-short-write/SKILL.md",
|
|
1452
|
-
"sha256": "
|
|
1453
|
-
"bytes":
|
|
1452
|
+
"sha256": "e78b261c623f185eb08158cbd12bf0d2a2f4d8bd59b62076f18089edd0baf26f",
|
|
1453
|
+
"bytes": 10845
|
|
1454
1454
|
},
|
|
1455
1455
|
{
|
|
1456
1456
|
"path": "skills/story-short-write/references/agent-calls.md",
|
|
1457
|
-
"sha256": "
|
|
1458
|
-
"bytes":
|
|
1457
|
+
"sha256": "a7dad155a8f398bf267200652c53038310bfdf22f3ec1872877eb69589c751f1",
|
|
1458
|
+
"bytes": 2193
|
|
1459
1459
|
},
|
|
1460
1460
|
{
|
|
1461
1461
|
"path": "skills/story-short-write/references/author-memory-maintenance.md",
|
|
@@ -1619,8 +1619,8 @@
|
|
|
1619
1619
|
},
|
|
1620
1620
|
{
|
|
1621
1621
|
"path": "skills/story-short-write/references/workflow-design.md",
|
|
1622
|
-
"sha256": "
|
|
1623
|
-
"bytes":
|
|
1622
|
+
"sha256": "820eff40733a284a83b986581d56c64fb3b3e4b23d4cefb21a5e18711519bb4c",
|
|
1623
|
+
"bytes": 10085
|
|
1624
1624
|
},
|
|
1625
1625
|
{
|
|
1626
1626
|
"path": "skills/story-short-write/references/workflow-draft.md",
|
|
@@ -1629,8 +1629,8 @@
|
|
|
1629
1629
|
},
|
|
1630
1630
|
{
|
|
1631
1631
|
"path": "skills/story-short-write/references/workflow-revision.md",
|
|
1632
|
-
"sha256": "
|
|
1633
|
-
"bytes":
|
|
1632
|
+
"sha256": "481a9e1dc6d9c0f5355df0f6e07afc277e15850eb395cd0a4b3470a8dd298a7e",
|
|
1633
|
+
"bytes": 7809
|
|
1634
1634
|
},
|
|
1635
1635
|
{
|
|
1636
1636
|
"path": "skills/story-short-write/scripts/author_memory_commit.py",
|
|
@@ -1674,12 +1674,12 @@
|
|
|
1674
1674
|
},
|
|
1675
1675
|
{
|
|
1676
1676
|
"path": "skills/story/SKILL.md",
|
|
1677
|
-
"sha256": "
|
|
1678
|
-
"bytes":
|
|
1677
|
+
"sha256": "1b286eb40bf5939f5c78e442b6daca414c2ea400d4cc5ad417d16a5e31216b65",
|
|
1678
|
+
"bytes": 13712
|
|
1679
1679
|
},
|
|
1680
1680
|
{
|
|
1681
1681
|
"path": "skills/story/VERSION",
|
|
1682
|
-
"sha256": "
|
|
1682
|
+
"sha256": "179a5390966e85c2071a87c1b31de13df67460665196f6529f8c4986842f81e5",
|
|
1683
1683
|
"bytes": 6
|
|
1684
1684
|
}
|
|
1685
1685
|
]
|
|
@@ -99,9 +99,9 @@ cdp_port:{可选:Chrome 调试端口不是 9222 时写}
|
|
|
99
99
|
|
|
100
100
|
### 能不能用助手
|
|
101
101
|
|
|
102
|
-
> Spawn 版本提示(不阻断 spawn):先读取项目根 `.story-deployed` 的 `agents_version`。与本版 `agents_version:
|
|
102
|
+
> Spawn 版本提示(不阻断 spawn):先读取项目根 `.story-deployed` 的 `agents_version`。与本版 `agents_version: 37` 不一致时(标记缺失、字段缺失/非整数、小于或大于 37)**照常按当前宿主角色来源检查并 spawn**;同时用一句白话提示作者「查资料助手是旧版,运行 /story-setup(ZCode 先更新插件)后新开会话」,`Notice: agents bundle 版本不匹配(项目 {N},本版 37)` 原文写进回答最末一行「技术备注:」;大于 37 时额外提示先更新 oh-story-claudecode,不要用本地旧版 setup 降级覆盖。只有当前宿主角色缺失或不暴露调用能力时才降级 solo/direct,`Fallback: ... -> solo` 同样只进技术备注行。
|
|
103
103
|
|
|
104
|
-
|
|
104
|
+
走助手前只做本端可用性检查:当前不在子代理内、有本端调用工具,且对应角色可用(Claude `.claude/agents/*.md`、OpenCode `.opencode/agents/*.md`、Codex `.codex/agents/*.toml`、Antigravity `.agents/agents/agent-name/agent.md`;ZCode 查插件注册的同名角色,不要求 `.zcode/agents`)→ 可尝试 spawn。Antigravity 用 `invoke_subagent` + 同名 `TypeName`,ZCode 用 `Agent` 按实际 schema 派发,不跨端误判。任一不满足或返回 unknown agent,则降级处理:
|
|
105
105
|
|
|
106
106
|
- `story-explorer` 不可用 → 主会话直接用 Read/Grep 从书目录检索(角色状态、伏笔、进度、设定),回答前说一句「查资料助手没启用,这次我直接翻项目文件」;项目尚未部署时提示先 `/story-setup`。
|
|
107
107
|
- `story-researcher` 不可用 → 主会话用当前可用的搜索能力回答,回答前说一句「查资料助手没启用,这次我直接搜」;搜不到就如实说明。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
0.9.
|
|
1
|
+
0.9.1
|
|
@@ -73,9 +73,9 @@ node scripts/check-ai-patterns.js --check --fail-on=blocking <正文文件...>
|
|
|
73
73
|
|
|
74
74
|
### Phase 3:按授权改稿
|
|
75
75
|
|
|
76
|
-
> Agent
|
|
76
|
+
> Agent 兼容性:只检查当前宿主:Claude `.claude/agents/{agent}.md`(`subagent_type`)、OpenCode `.opencode/agents/{agent}.md`(`subagent` 的 `agent`)、Codex `.codex/agents/{agent}.toml`(`agent_type`)、Antigravity `.agents/agents/agent-name/agent.md`(`invoke_subagent` + `TypeName`)。ZCode 查插件注册的同名角色,用 `Agent` 按实际 schema 派发,不要求 `.zcode/agents`。仅角色/工具不可用或返回未知 agent 时降级 solo/direct:白话告诉作者「这次由我直接改」,`Fallback: project custom agents unavailable -> solo` 原文只进报告最后一行「技术备注:」。
|
|
77
77
|
>
|
|
78
|
-
> Spawn 版本提示(不阻断 spawn):先读取项目根 `.story-deployed` 的 `agents_version`。与本版 `agents_version:
|
|
78
|
+
> Spawn 版本提示(不阻断 spawn):先读取项目根 `.story-deployed` 的 `agents_version`。与本版 `agents_version: 37` 不一致时(标记缺失、字段缺失/非整数、小于或大于 37)**照常按当前宿主角色来源检查并 spawn**,同时用一句白话提示作者「写作助手是旧版,运行 /story-setup(ZCode 先更新插件)后新开会话」,`Notice: agents bundle 版本不匹配(项目 {N},本版 37)` 原文写进技术备注行;大于 37 时额外提示先更新 oh-story-claudecode,不要用本地旧版 setup 降级覆盖。只有当前宿主角色缺失或不暴露调用能力时才降级 solo/direct,`Fallback: ... -> solo` 同样只进技术备注行。
|
|
79
79
|
|
|
80
80
|
改动文件前,先把原文复制到书内 `.story/work/去味原稿/{YYYYMMDD}_{原文件名}`,Phase 4 对照它回读;作者要撤回时用它恢复。
|
|
81
81
|
|