dsh-plugin-beyond-simulator 2.2.0 → 2.2.2
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 +83 -132
- package/dsh-plugin/dist/client.js +28 -6
- package/dsh-plugin/dist/index.js +26 -23
- package/dsh-plugin/dist/play-renderer.js +108 -107
- package/dsh-plugin/dist/worker.js +20 -17
- package/dsh-plugin/lib/play.html +2 -2
- package/dsh-plugin/presets/wonderland-lua-builder/README.md +1 -1
- package/dsh-plugin/presets/wonderland-lua-builder/evals/agent-behavior.md +4 -4
- package/dsh-plugin/presets/wonderland-lua-builder/skills/qxqy-game-studio/references/07-device-validation.md +4 -4
- package/dsh-plugin/skill.md +12 -4
- package/package.json +1 -1
package/dsh-plugin/lib/play.html
CHANGED
|
@@ -258,8 +258,8 @@
|
|
|
258
258
|
onStatus: applyStatus,
|
|
259
259
|
onError: showError,
|
|
260
260
|
onAudioStatus: status => {
|
|
261
|
-
$('audio').textContent =
|
|
262
|
-
$('audio').title = status.error || (
|
|
261
|
+
$('audio').textContent = status.muted ? t('声音已关闭') : !status.unlocked ? t('开启声音') : t('声音已开启')
|
|
262
|
+
$('audio').title = status.error || (status.muted || status.unlocked ? t('切换静音') : t('点击或在画布内操作以解锁音效'))
|
|
263
263
|
},
|
|
264
264
|
isActive: () => !closing,
|
|
265
265
|
isInputActive: () => !workspace.classList.contains('hidden'),
|
|
@@ -50,6 +50,6 @@ DSH 0.1.7-rc.1 起,本仓库根包 `dsh-plugin-beyond-simulator` 在构建时
|
|
|
50
50
|
|
|
51
51
|
启动前先检查工作区指引、本地知识目录,以及当前 AI 宿主的插件/MCP/Skill 配置和可见能力,寻找 `miliastra-toolbox` 系列或其他知识来源。确认当前能读到官方客户端 2D/Lua API 与使用指南,记录来源、版本和缺项;已有资料直接复用,仅询问仍缺少的内容。详见 [知识库发现与可用性核验](skills/qxqy-game-studio/references/workflow.md#知识库发现与可用性核验)。本工作流不捆绑官方知识库,不能从普通 Lua/UI 或 3D 节点经验猜接口。
|
|
52
52
|
|
|
53
|
-
步骤 7
|
|
53
|
+
步骤 7 同时负责交付后的协作:引导用户完成导入/挂载、核对真实索引并绑定脚本目录。AI 可按用户授权保存、预览并同步脚本,返回逐文件结果和备份位置;用户随后在千星沙箱保存试玩。手动修改也要同步回项目。详见 [真机交付步骤](skills/qxqy-game-studio/references/07-device-validation.md)及[实机脚本同步能力](../../studio/docs/script-sync.md)。
|
|
54
54
|
|
|
55
55
|
模拟器只预览 `100001–100006` 六种基础图元,其他官方图片 ID 显示缺失框,需真机确认。行为评估见 [agent-behavior.md](evals/agent-behavior.md);模拟器通过不等于真机通过。
|
|
@@ -154,17 +154,17 @@ Must-not:一开始要求重新安装插件;遍历整个用户目录或回显
|
|
|
154
154
|
|
|
155
155
|
## E14 导入交付与后续脚本更新
|
|
156
156
|
|
|
157
|
-
前置:用户刚导入 GIA,提供目标控件的新索引和本机关卡脚本目录;MCP
|
|
157
|
+
前置:用户刚导入 GIA,提供目标控件的新索引和本机关卡脚本目录;MCP 支持配置、保存、预览和复制,Web 与 MCP 是独立进程,入口脚本尚待挂载。
|
|
158
158
|
|
|
159
159
|
提示:
|
|
160
160
|
|
|
161
161
|
> 已经导入了,帮我对好索引并绑定这个目录,以后修 bug 就更新这里。接下来我还要做什么?
|
|
162
162
|
|
|
163
|
-
Must
|
|
163
|
+
Must:复用已给索引和路径;列出本项目剩余的脚本映射/挂载、索引核验、复制与试玩操作;修复内联与路径源码,核验后确认变更;保存目录配置与工程并预览差异。仅要求绑定时准备更新而不复制;已要求同步时,在同一 handle 用 preview 的计划和选定脚本 apply,检查逐文件结果与备份位置,无需另到 Web 点击。随后指引用户在千星沙箱保存并试玩;区分已配置、已复制、真机已验证。
|
|
164
164
|
|
|
165
|
-
Must-not
|
|
165
|
+
Must-not:再次索取相同路径/索引;未保存、未预览或未获更新授权就复制;复用另一工程或进程的计划;以 shell 或人工接口绕过校验与备份;把目录绑定说成实时双向同步;承诺新增脚本无需映射或挂载。
|
|
166
166
|
|
|
167
|
-
|
|
167
|
+
补充变体:旧宿主 schema 没有 save/apply 时,不虚构能力,提示升级或走编辑器手动确认;用户直接手改实机脚本时,先核对并合并有效修改回工作区与存档;服务无法访问游戏目录时,提供手动更新方案,不伪造绑定成功。
|
|
168
168
|
|
|
169
169
|
## 汇总指标
|
|
170
170
|
|
|
@@ -21,7 +21,7 @@ GIA 不保存脚本挂载关系;交付时单列需要在千星沙箱建立或
|
|
|
21
21
|
| 导入与挂载 | 导入本次所需资产,核对脚本映射路径,将入口脚本挂到指定客户端控件/容器节点或模板。已有正确映射和挂载可复用。 | 给出“哪个文件 → 哪个资产/挂载对象”的对应关系,以及本轮新增或变化项。 |
|
|
22
22
|
| 核对真实索引 | 检查导入后目标控件/模板的实际索引;有变化时提供资产/控件名、原值(若已知)和新值,文字或截图均可。 | 按控件身份校准工程与脚本;复用已有回传,不重复索取。 |
|
|
23
23
|
| 绑定后续更新位置 | 若希望复用本机脚本同步,确认正确的账号、关卡及导入脚本目录;可选择发现的候选目录或粘贴真实路径。 | 准备工作区源码与实机脚本的路径对应关系,保存配置并预览差异。 |
|
|
24
|
-
| 更新脚本 |
|
|
24
|
+
| 更新脚本 | 可要求 AI 更新已绑定目录,或在 Web/DSH 的“Lua 脚本 → 实机脚本同步”检查差异并确认复制;也可手动更新。 | 完成源码与索引修复、保存工程,按授权同步并核对回执,指出新增脚本需要的映射/挂载。 |
|
|
25
25
|
| 保存与试玩 | 在千星沙箱保存并重新试玩,按清单走开局、成功/失败、重开及本轮变更;回传异常步骤、实际结果和相关画面/日志。 | 对照预期定位问题、修复并提供下一轮更新与回归步骤。 |
|
|
26
26
|
|
|
27
27
|
绑定同步目录是便于后续更新的选项;没有本机目录访问能力时仍可交付 Lua 和明确的手动更新路径,不以绑定目录作为真机验证的强制前提。
|
|
@@ -60,11 +60,11 @@ GIA 不保存脚本挂载关系;交付时单列需要在千星沙箱建立或
|
|
|
60
60
|
|
|
61
61
|
### 后续让 AI 配合更新脚本
|
|
62
62
|
|
|
63
|
-
AI
|
|
63
|
+
AI 可调用 `qxqy_script_sync` 的 `discover/status/configure/save/preview/apply` 发现目录、配置、保存、预览及复制;MCP 工程操作带同一个 `handle`,Harness 使用同一会话。调用前以当前工具 schema 为准。
|
|
64
64
|
|
|
65
65
|
1. **对齐当前版本。** 先核对索引变更、工作区源码、存档内联源码及已知的实机手改。非空白内联 `source` 优先,否则读取 `path`;不能只改磁盘文件后默认同步的是新内容。发现实机独有修改先比较并合并回项目,有真实冲突再请用户判断。
|
|
66
|
-
2. **保存并准备差异。**
|
|
67
|
-
3.
|
|
66
|
+
2. **保存并准备差异。** 完成引用修复和已核验变更的确认,用 `save` 保存完整存档(args 为 `path`、`expectedRevision`,已有路径可省略 path;MCP 也可用 `qxqy_project_save`),再 `preview` 核对每个脚本的来源、目标和新增/覆盖内容。不能在复制前说“已同步到真机”。
|
|
67
|
+
3. **按授权复制。** 用户已要求更新既定目录时,选择无错误且有变化的脚本,用 `apply` 提交 `{ planId: preview.id, scriptIds: [...], confirmed: true }`,无需再次要求用户点击编辑器。仅绑定或查看差异时不执行复制。计划过期则重新预览,不能跨工程或进程使用。旧宿主未提供 save/apply 时,指引用户升级,或在 Web/DSH 编辑器加载同一存档、重新预览后手动确认;不要用 shell、人工端点或目录联接绕过接口校验。
|
|
68
68
|
4. **核对结果再试玩。** 记录实际复制回执中的成功/失败和备份位置。只同步存档登记的 Lua 脚本(含未挂载的 require 模块),不是整个目录镜像;新增脚本仍须在真实编辑器建立映射和必要挂载,UI/模板结构变更另按实际情况重新交付资产。用户在千星沙箱保存并试玩,才能验证是否加载本轮源码。
|
|
69
69
|
|
|
70
70
|
用户选择手动更新时,提供本次改动文件和准确目标路径,提醒保留实机已有修改;手改后将最终版本同步回项目,以免下一轮被旧存档覆盖。复制到磁盘、编辑器保存/重新加载、真机验证分别记录,不承诺“绑定一次以后自动生效”。
|
package/dsh-plugin/skill.md
CHANGED
|
@@ -51,7 +51,7 @@ qxqy_studio_play { "action": "device", "args": { "canvasId": "pc-21-9" } }
|
|
|
51
51
|
- 切设备 = 换了台真机:时间归零、历史重置,用例不跨设备;要回归多画布就用 `runCase` 加 `args.canvasId` 分别跑。
|
|
52
52
|
- 不带 `canvasId` 的 `start` 跟随编辑器当前画布;`stop` 后粘性设备失效,回到跟随编辑器。
|
|
53
53
|
|
|
54
|
-
用户也可自己点顶栏"试玩 ↗"
|
|
54
|
+
用户也可自己点顶栏"试玩 ↗"(会先保存脚本再开独立标签页);独立试玩页顶栏有「切换设备画布」「人数」「视角」下拉。工具启动的试玩默认关闭浏览器音效;用户可在试玩页打开,不要为了听声音反复 start。
|
|
55
55
|
|
|
56
56
|
多人试玩(最多 8 人,每位玩家一份独立客户端;Lua `PlayerSelf` 相对当前客户端):
|
|
57
57
|
|
|
@@ -62,7 +62,7 @@ qxqy_studio_play { "action": "view", "args": { "playerIndex": 2 } } ← 切
|
|
|
62
62
|
|
|
63
63
|
### 4. 导出与引导 GIA 尝试
|
|
64
64
|
|
|
65
|
-
|
|
65
|
+
用户可在顶栏"导出"操作;AI 也可调用 `qxqy_studio_export`。`list` 列出客户端控件及 revision;`preview` / `export` 的 args 传 `controlIds`(Authoring id)、`expectedRevision`、可选 `includeScripts`(默认 true)。export 默认部分组合 GIA;可选 path 写入工作区新文件、不覆盖,省略返回 base64,也支持原有 format/assetType。完整协议与子树/脚本依赖边界见 `studio/docs/partial-export.md`。格式选择:
|
|
66
66
|
|
|
67
67
|
| 需求 | 选什么 |
|
|
68
68
|
|---|---|
|
|
@@ -101,9 +101,16 @@ qxqy_studio_play { "action": "view", "args": { "playerIndex": 2 } } ← 切
|
|
|
101
101
|
|
|
102
102
|
### 6. 已导入 GIA 后,显式复制脚本更改到实机
|
|
103
103
|
|
|
104
|
-
使用 `qxqy_script_sync` 的 `discover/status/configure/preview`
|
|
104
|
+
使用 `qxqy_script_sync` 的 `discover/status/configure/save/preview/apply` 更新实机脚本目录。configure 的 args 为 `{ config: { version: 1, workspaceDir, clientImportRoot, clientSubdir }, expectedRevision }`;MCP 另带 handle。路径位于宿主机器,配置随完整存档保存。`workspaceDir` 与 `clientSubdir` 通常同值,以保留 GIA 映射的相对路径;不要按文件名平铺。
|
|
105
105
|
|
|
106
|
-
先完成 `controlGuidChanges` 的语义引用修复和确认,再准备复制。内容沿用非空白内联 source 优先、否则 path
|
|
106
|
+
先完成 `controlGuidChanges` 的语义引用修复和确认,再准备复制。内容沿用非空白内联 source 优先、否则 path 文件;两者不同须核对,不能只改磁盘后默认复制新内容。用户已要求更新到明确的目录时,直接在该授权范围内同步,无需重复要求用户点击编辑器;仅绑定目录或查看差异不构成复制授权。目标账号 / 关卡或更新范围不明确时,只询问缺项。
|
|
107
|
+
|
|
108
|
+
1. `save` 的 args 为 `{ path, expectedRevision }`,保存当前完整存档;首次指定工作区相对 path,后续可省略并沿用已加载 / 保存的路径。MCP 也可用 `qxqy_project_save`。
|
|
109
|
+
2. `preview` 检查来源、目标、新旧源码和 `sourceMismatch`;选择无错误且有变化的 `rows[].id`。
|
|
110
|
+
3. `apply` 的 args 为 `{ planId: preview.id, scriptIds: [...], confirmed: true }`,只复制本次选中的脚本。MCP 使用同一 handle,Harness 使用同一会话;计划失效后重新预览,不跨进程复用。
|
|
111
|
+
4. 读取 `completed`、逐文件 `results` 和 `backupRoot`;有失败时按回执处理,不能把部分成功说成全部完成。不要用 shell 或目录联接替代接口的检查和备份。
|
|
112
|
+
|
|
113
|
+
用户也可在 Web/DSH 编辑器自行确认;MCP 与 Web 各有会话,改由 Web 操作时需加载 AI 保存的存档并重新生成计划。
|
|
107
114
|
|
|
108
115
|
已有脚本内容变更复制后,在千星沙箱保存并重新试玩;新增脚本仍需建立映射和必要挂载。工具成功只表示复制到磁盘,不能声称真机通过。覆盖前备份、过期计划拒绝、文件选择等见 [脚本同步](../studio/docs/script-sync.md)。
|
|
109
116
|
|
|
@@ -164,6 +171,7 @@ qxqy_studio_play { "action": "serverSend", "args": { "target": "PlayerSelf", "na
|
|
|
164
171
|
|---|---|---|
|
|
165
172
|
| `qxqy_studio_get` | 读工程无损 JSON 快照 | 无参数;严格 JSON |
|
|
166
173
|
| `qxqy_studio_patch` | 编辑工程,参数 `{ "op": { ... } }` | 带 `expectedRevision`;成功后 revision +1 |
|
|
174
|
+
| `qxqy_studio_export` | 单项 / 部分组合 / 原有格式导出 | list → preview → export;controlIds 是客户端 Authoring id,父子去重,path 不覆盖 |
|
|
167
175
|
| `qxqy_studio_ui_screenshot` | 获取编辑器舞台 PNG | Host 根据 boxes 渲染;不需要打开模拟器标签;不含完整 DOM 工具栏 |
|
|
168
176
|
| `qxqy_studio_play_screenshot` | 获取当前试玩 Runtime PNG | Host 根据 paint 渲染;需要已 start,不需要打开试玩页;不推进 Runtime |
|
|
169
177
|
| `qxqy_studio_load` | 从会话工作区列出/拉取存档 | 不传 `path` 列出;传相对路径加载 |
|