Your Name be5b9aef12
Some checks failed
Lint / build (20) (push) Has been cancelled
Playwright Tests / test (push) Has been cancelled
chore: sync latest workspace changes
2026-04-05 02:08:26 +08:00

182 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 桥豆麻衣酱 App 近似源码提取说明
## 结论
已从安装包 `/Applications/桥豆麻衣酱.app` 的可执行文件中成功提取出前端静态资源。
这不是开发者原始仓库源码,而是:
- Tauri 桌面壳里的前端打包产物
- 可直接检索的 JS/CSS/worker/wasm 资源
- 足够用于做接口、权限、业务逻辑、模型支持范围的审计
当前共提取出 `29` 个资源,清单见:
- `manifest.json`
## 目录
- `app.arm64`
- 从通用 Mach-O 中切出来的 arm64 可执行文件
- `extract_tauri_assets.js`
- 本次用于提取内嵌资源的脚本
- `manifest.json`
- 每个资源的偏移、压缩大小、解压大小、输出路径
- `extracted/assets/`
- 解压出的前端资源
## 最重要的文件
- `extracted/assets/index-m-NWkaV-.js`
- 主前端 bundle,约 `4.0 MB`
- React + Vite 风格打包产物
- 绝大多数业务逻辑都在这里
- `extracted/assets/index-CgHmA0qR.css`
- 主样式文件,约 `182 KB`
- `extracted/assets/thumbnailWorker-Iu1AjlwR.js`
- 缩略图 worker,负责图片缩放和 JPEG 缩略图生成
- `extracted/assets/ort.bundle.min-OfoG_cy9.mjs`
- ONNX Runtime Web bundle
- `extracted/assets/ort.webgpu.bundle.min-CEayb2S6.mjs`
- ONNX Runtime WebGPU bundle
- `extracted/assets/ort-wasm-simd-threaded.jsep-D5Jk56-t.wasm`
- ONNX Runtime wasm 二进制,约 `23.9 MB`
## 从 bundle 中确认到的内容
### 1. 这确实是 Tauri 桌面应用
在主 bundle 中能直接看到 Tauri 调用痕迹和桌面特有命令,比如:
- `download_file_bypass_cors`
- `proxy_fetch`
- `start_local_server`
可在主文件里直接搜这些关键字。
### 2. 它不是纯聊天壳,而是带图像/视频工作流能力
主 bundle 中能搜到很多工作流节点和媒体能力相关关键词,例如:
- `gen-image`
- `gen-video`
- `storyboard-node`
- `inpaint-crop`
- `motion-control`
- `custom-agent`
- `local-save`
这说明它有比较完整的图像、视频、分镜、局部重绘、本地保存等功能。
### 3. 默认端点和多供应商能力都在前端 bundle 里
主 bundle 中可见默认端点配置:
- `https://ai.comfly.chat`
- `https://ai.t8star.cn`
- `https://api.midjourney.com`
还可以看到对多个供应商和模型系的支持痕迹,例如:
- `openai`
- `gemini`
- `deepseek`
- `doubao`
- `jimeng`
- `kling`
- `vidu`
- `zhipu`
- `moonshot`
- `qwen`
- `minimax`
- `midjourney`
- `suno`
### 4. 图片审核地址的默认值写在前端状态初始化里
主 bundle 内能直接看到默认审核地址:
- `http://118.196.112.236:3428/api/moderation/image`
同时它还读取这几个本地存储键:
- `qiaodoumayi_seedance_moderation_url`
- `qiaodoumayi_seedance_moderation_user_id`
- `qiaodoumayi_seedance_moderation_key_hex`
这说明图片审核地址并不是仅服务端下发,也可能由本地配置覆盖。
### 5. 本地保存能力通过本地服务和文件落地配合实现
主 bundle 中可见:
- `start_local_server`
- `qiaodoumayi_download_directory`
这说明它支持启动本地接收器/本地服务,再结合用户设置的下载目录做文件保存。
## 建议优先看的位置
### 主 bundle
文件:
- `extracted/assets/index-m-NWkaV-.js`
建议优先搜索这些词:
- `qiaodoumayi_`
- `seedance`
- `moderation`
- `download_file_bypass_cors`
- `proxy_fetch`
- `start_local_server`
- `runninghub`
- `api.openai.com`
- `generativelanguage.googleapis.com`
- `dashscope.aliyuncs.com`
### 缩略图 worker
文件:
- `extracted/assets/thumbnailWorker-Iu1AjlwR.js`
这个文件很短,适合先看,能快速确认:
- 它会 `fetch` 图片
- 用 `createImageBitmap` 和 `OffscreenCanvas` 做缩放
- 最终转成 JPEG data URL 返回给主线程
## 已确认的几个关键定位点
以下行号来自提取后的 bundle,可作为检索起点:
- `index-m-NWkaV-.js:924`
- `qiaodoumayi_seedance_moderation_url`
- `index-m-NWkaV-.js:1673`
- `download_file_bypass_cors`
- `index-m-NWkaV-.js:2068`
- `start_local_server`
注意:
- 这是打包文件,很多行非常长
- 行号只能作为“进入附近区域”的参考,不等于原始源码位置
## 局限
- 没找到 sourcemap
- 没恢复出原始 React/TypeScript 目录结构
- 变量名、模块边界、注释都已经过打包压缩处理
- 目前恢复的是“近似源码”,不是开发者仓库
## 怎么继续深挖
如果要继续做更细的审计,下一步建议按下面顺序:
1. 以 `index-m-NWkaV-.js` 为主,按 `qiaodoumayi_`、`seedance`、`proxy`、`download` 搜配置和命令入口
2. 把出现的外连域名、接口路径、Tauri 命令整理成一张表
3. 继续从本地存储和日志交叉验证哪些配置在这台机器上真正被启用
4. 对最敏感的几条链路单独追踪:图片审核、本地代理、本地保存、文件下载绕过 CORS