ai-chatbot/analysis/qiaodou-extract
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
..
2026-04-05 02:08:26 +08:00
2026-04-05 02:08:26 +08:00

桥豆麻衣酱 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