1.3 KiB
1.3 KiB
ADR-004: Mod v1 采用 JSON-only 数据运行时
Status
Accepted
Date
2026-05-10
Context
OES-WEB 的目标是让 Mod 成为核心能力,但浏览器内执行玩家导入的脚本会带来注入、数据窃取、无限循环和调试成本风险。当前阶段更需要先把基础内容扩展、覆盖、加载顺序、冲突报告和游戏系统接入跑稳。
Decision
Mod v1 只支持 JSON 数据 Mod,不执行任意 JavaScript。
- Mod 包结构:
{ manifest, data } manifest声明 id/name/version/priority/dependenciesdata支持 items/enemies/npcs/quests/recipes/spells/skills/perks/zonesModValidator校验清单、数据域、内容 id 和危险 keyModResolver按依赖和优先级合并启用 Mod,并报告冲突DataRegistry使用 Base Data + Resolved Mod Data 重建运行时数据快照- 旧脚本入口保留为禁用桩,任何执行请求都会失败并发出
script:error
Consequences
- 武器、敌人、掉落、任务和地图可以先通过 JSON 稳定扩展
- 安全边界清晰,避免
new Function/eval 类执行入口进入主包 - 脚本 Mod 暂时不能实现复杂行为,后续如需要应单独设计 Worker 沙箱和权限 API
- 系统必须逐步改为只读
DataRegistry,减少硬编码内容