# 恢复笔记

## 当前判断

这是一个 Chrome Manifest V3 扩展。代码属于 JavaScript 混淆，不是文件级加密。
原始构建使用字符串表、数组轮换、短变量别名和捆绑的第三方代码。

## 已确认的运行模块

### `js/background.js`

- 引入 `usage-stats.js`。
- 维护 DevTools 面板端口和 content script 端口。
- 路由 `DevPanel` 与 `contentChrome` 连接。
- 在 DevTools 和对应的游戏标签页/帧之间转发消息。
- 接收 `AI_REQUEST` 和 `AI_CANCEL`。
- 使用 `AbortController` 取消当前 AI 请求。
- 发送带 Bearer API Key 的流式 OpenAI 兼容请求。
- 产生 `AI_RESPONSE_CHUNK`、`AI_RESPONSE_END`、
  `AI_RESPONSE_ABORTED` 和 `ERROR` 消息。

### `js/content.js`

- 在文档开始阶段、所有 frame 中运行。
- 注入页面侧桥接脚本。
- 创建 Window 事件桥和 Chrome Runtime 端口。
- 在扩展上下文失效或 back-forward cache 恢复后重新连接。
- 从扩展存储中加载用户脚本。

### `js/usage-stats.js`

- 创建或读取匿名安装标识。
- 上报引擎名称、引擎版本和扩展版本。
- 使用时间戳避免同一时间窗口重复上报。

### `js/ai-panel.js`

- 使用 `chrome.storage.local` 保存模型配置和对话相关状态。
- 支持服务商模型、自定义模型、完整请求 URL 和 OpenAI Chat Completions 格式。
- 配置项包含模型 ID、API Key、API 根地址、完整 URL、多模态开关和上下文窗口。
- API Key 以明文保存在本机扩展存储中。
- 发送请求时向后台传递 `messages`、`model`、`apiKey` 和 `apiUrl`。
- 接收并处理 `AI_RESPONSE_START`、`AI_RESPONSE_CHUNK`、
  `AI_RESPONSE_END` 和 `AI_RESPONSE_ABORTED`。

### `js/engine.js` 与 `js/inspector.js`

- 包含游戏引擎适配器和对象检查运行时。
- 检测并连接 Laya、Egret、Cocos2dx、Cocos Creator、Godot、PIXI、ThreeJS 以及扩展自定义钩子。
- 提供场景树、属性检查、属性修改、高亮、性能、Shader
  和骨骼资源操作。
- `engine.js` 中的 `EngineManager` 和 7 个引擎适配器已补充语义名称。
- `inspector.js` 中的消息通道、检查器工具、帧检查器、用户代码运行时和主运行时类已补充语义名称。

## 下一阶段

- 解码运行时计算得到的间接字符串。
- 从业务代码中拆出第三方编辑器和运行库。
- 继续恢复检查器运行时中的局部变量名、方法分组和状态字段。
- 重建原始模块边界和构建配置。
- 在 Chrome 中加载恢复版本，并对比 DevTools 实际行为。
