Description / 问题描述
在同时开启 LittleWhiteBox (小白X) 的“变量管理”模块和 JS-Slash-Runner (酒馆助手) 时,小白X 的变量守护逻辑会错误地将原本属于 JavaScript 数组(Array)或对象(Object)类型的变量转换为压缩后的 JSON 字符串。
这导致其他依赖该变量对象的插件(如 JS-Slash-Runner)无法正常访问属性(例如 var[0].url 会失效,因为变量变成了字符串)。
Steps to Reproduce / 复现步骤
在酒馆中通过脚本或 JS-Slash-Runner 创建一个数组变量(例如:phone_camera_gallery)。
确认该变量在 JS-Slash-Runner 面板中显示为可展开的数组对象。
开启小白X的“变量管理”模块并打开其变量面板。
观察变量的变化:原本的数组对象被转换成了 JSON 字符串。
Expected Behavior / 预期行为
小白X 的变量劫持逻辑应该保持变量的原始引用类型(Live Object/Array),而不应该在 api.set 过程中将其强制 Stringify。
Actual Behavior / 实际行为
变量从:
[
{ "url": "...", "content": "..." },
{ "url": "...", "content": "..." }
]
变成了压缩后的字符串:
[{"url":"...","content":"..."},{"url":"...","content":"..."}]
Technical Analysis / 技术分析
经过初步排查,问题可能出在 scripts/extensions/third-party/LittleWhiteBox/modules/variables/variables-core.js 中的 installVariableApiPatch 函数。
小白X 劫持了 ctx.variables.local.set 等 API。在执行 guardValidate 或内部处理流程中,逻辑可能未能正确识别 Array 类型,或者在尝试“规范化”路径时误触发了序列化逻辑,导致最终存入酒馆变量池的是字符串而非原始对象。
Description / 问题描述
在同时开启 LittleWhiteBox (小白X) 的“变量管理”模块和 JS-Slash-Runner (酒馆助手) 时,小白X 的变量守护逻辑会错误地将原本属于 JavaScript 数组(Array)或对象(Object)类型的变量转换为压缩后的 JSON 字符串。
这导致其他依赖该变量对象的插件(如 JS-Slash-Runner)无法正常访问属性(例如 var[0].url 会失效,因为变量变成了字符串)。
Steps to Reproduce / 复现步骤
在酒馆中通过脚本或 JS-Slash-Runner 创建一个数组变量(例如:phone_camera_gallery)。
确认该变量在 JS-Slash-Runner 面板中显示为可展开的数组对象。
开启小白X的“变量管理”模块并打开其变量面板。
观察变量的变化:原本的数组对象被转换成了 JSON 字符串。
Expected Behavior / 预期行为
小白X 的变量劫持逻辑应该保持变量的原始引用类型(Live Object/Array),而不应该在 api.set 过程中将其强制 Stringify。
Actual Behavior / 实际行为
变量从:
[
{ "url": "...", "content": "..." },
{ "url": "...", "content": "..." }
]
变成了压缩后的字符串:
[{"url":"...","content":"..."},{"url":"...","content":"..."}]
Technical Analysis / 技术分析
经过初步排查,问题可能出在 scripts/extensions/third-party/LittleWhiteBox/modules/variables/variables-core.js 中的 installVariableApiPatch 函数。
小白X 劫持了 ctx.variables.local.set 等 API。在执行 guardValidate 或内部处理流程中,逻辑可能未能正确识别 Array 类型,或者在尝试“规范化”路径时误触发了序列化逻辑,导致最终存入酒馆变量池的是字符串而非原始对象。