{"id":50336184,"url":"https://github.com/weatherwind/pjsk-auto-player","last_synced_at":"2026-05-29T14:00:25.536Z","repository":{"id":360942285,"uuid":"1252443004","full_name":"WeatherWind/pjsk-auto-player","owner":"WeatherWind","description":"基于 ADB + OpenCV 的 Project Sekai (プロジェクトセカイ) 自动打歌 AP 工具。预测引擎 + Pipeline流水线 + 冲榜模式。PJSK auto play / autoclicker with prediction engine, MAA-inspired pipeline, and batch farming mode.","archived":false,"fork":false,"pushed_at":"2026-05-28T15:07:14.000Z","size":0,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-28T15:12:17.988Z","etag":null,"topics":["adb","auto-player","autoclicker","game-automation","opencv","pjsk","project-sekai"],"latest_commit_sha":null,"homepage":"https://github.com/WeatherWind/pjsk-auto-player","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/WeatherWind.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-28T14:22:55.000Z","updated_at":"2026-05-28T15:07:17.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/WeatherWind/pjsk-auto-player","commit_stats":null,"previous_names":["weatherwind/pjsk-auto-player"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/WeatherWind/pjsk-auto-player","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeatherWind%2Fpjsk-auto-player","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeatherWind%2Fpjsk-auto-player/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeatherWind%2Fpjsk-auto-player/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeatherWind%2Fpjsk-auto-player/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WeatherWind","download_url":"https://codeload.github.com/WeatherWind/pjsk-auto-player/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeatherWind%2Fpjsk-auto-player/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33655441,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-29T02:00:06.066Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["adb","auto-player","autoclicker","game-automation","opencv","pjsk","project-sekai"],"created_at":"2026-05-29T14:00:18.792Z","updated_at":"2026-05-29T14:00:25.530Z","avatar_url":"https://github.com/WeatherWind.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PJSK Auto Player — CV 自动化研究工具\n\n\u003e 基于 ADB + OpenCV 的计算机视觉与自动化控制研究项目。\n\u003e 参考 MAA (MaaAssistantArknights) + ALAS (AzurLaneAutoScript) + MaaFramework 架构设计。\n\n---\n\n## 🚀 快速开始 — 开箱即用\n\n### 方式 1：双击启动 (推荐)\n\n| 系统 | 操作 |\n|------|------|\n| **macOS** | 双击 `PJSK Auto Player.command` |\n| **Windows** | 双击 `run.bat` |\n| **Linux** | 双击 `run.sh` 或终端运行 `./run.sh` |\n\n首次运行会自动安装依赖并打开设置向导。之后每次双击直接启动桌面控制面板。\n\n### 方式 2：命令行\n\n```bash\npython main.py              # 🖥️ 桌面模式 — 自动打开浏览器控制面板\npython main.py start        # 单次执行\npython main.py auto         # 连续执行（自动处理结算与重试）\npython main.py setup        # 设置向导\n```\n\n---\n\n## ✨ 版本亮点\n\n| 版本 | 特性 |\n|------|------|\n| **v5.1.0** | 🌍 i18n 国际化 (中/英/日) + 社区项目调研 + 模拟器连接指南 |\n| **v5.0.0** | 🖥️ MAA 风格原生桌面 GUI + 反检测 + 活动检测 |\n| **v4.11.0** | 🖥️ 开箱即用: 桌面应用 + 自动打开浏览器 + 首次运行向导 + 系统托盘 |\n| **v4.10.0** | 🧬 ALAS 深度集成: cached_property/Resource/颜色预处理/Benchmark/配置 Schema |\n| **v4.9.0** | 🏗️ MAA/ALAS 融合架构: Pipeline V2 + 场景多算法投票 + Web 暗色面板 + 分级异常 + 守护进程 |\n\n---\n\n## 🔥 主要特性\n\n### 🎯 预测引擎\n基于时序预测的触发系统：检测判定区域上方目标 → 追踪移动速度 → 计算到达时间 → 准时触发。\n补偿 ADB 链路的 100-300ms 传输延迟，变被动响应为主动预测。\n\n### 🧠 Pipeline V2 引擎 (参考 MAA 设计)\n- **JSON 任务配置驱动** — 识别→动作→跳转的声明式流水线\n- **@任务继承** — `\"ClickOK@ClickSelf\"` 复用父任务配置，只覆盖差异\n- **节点生命周期** — `pre_wait_freezes → pre_delay → action → post_wait_freezes → post_delay`\n- **插件系统** — AOP 风格，在任务前后自动注入日志/统计/错误处理\n- **子任务并行** — 主任务间隙并行扫描弹窗/通知\n\n### 🏗️ 新架构 (v4.9.0+)\n\n```\n                        ┌──────────────────────────────┐\n                        │      Web GUI V2 (暗色面板)    │\n                        │  SSE 实时推送 · Canvas 图表   │\n                        ├──────────────────────────────┤\n                        │    CLI / 守护进程 (Daemon)    │\n                        │  status · stop · config · JSON│\n                        ├──────────────────────────────┤\n                        │     Pipeline V2 任务引擎      │\n                        │  @继承 · 生命周期 · 插件系统  │\n                        ├──────────┬──────────┬────────┤\n                        │ 场景检测  │ 识别引擎  │ 控制器  │\n                        │ SceneCls. │ Vision   │ Ctrl   │\n                        │ 多算法投票 │ OCR/匹配  │ADB/scre│\n                        │           │ /颜色    │cpy/ADB │\n                        ├──────────┴──────────┴────────┤\n                        │  配置系统 V2 (分层 + 热加载)   │\n                        │  异常体系 (分级 + 自动恢复)    │\n                        └──────────────────────────────┘\n```\n\n### 🎲 操作随机化\n模拟人工操作特征：时机抖动 ±15ms、坐标偏移 ±5px、随机漏键 0.1%、长按时长抖动\n\n### 🎮 执行策略\n- **AP** — 高精度触发策略\n- **FC** — 平衡稳定性策略\n- **LIVE** — 基础通过策略\n- **混合** — 智能切换策略 (70% FC + 25% AP + 5% LIVE)\n\n### ⚡ PID 自适应延迟\n每次执行结束后基于实际触发提前量自动微调延迟补偿，逐步收敛到最佳值。\n\n### 📡 多后端控制器\n- **scrcpy 60 FPS** — 视频流方式高速截图\n- **Minitouch \u003c5ms** — 超低延迟触摸\n- **ADB 兜底** — 自动检测最优后端，无缝降级\n\n### 🌐 Web 控制面板 V2\n现代暗色主题，零外部依赖的单页应用：\n- 实时帧预览 (SSE 推送)\n- 任务状态监控\n- FPS/点击量实时折线图\n- 配置在线编辑\n- 日志查看器\n- 截图浏览器\n\n### 🛡️ 分级异常体系 (参考 ALAS 设计)\n| 异常 | 恢复策略 |\n|------|---------|\n| `GameStuckError` | 画面卡住 → 重启 |\n| `GameBugError` | 状态异常 → 杀进程重启 |\n| `GamePageUnknownError` | 未知页面 → 导航返回 |\n| `ConnectionLostError` | 连接断开 → 等待重连 |\n| `TooManyClickError` | 防死循环 → 停止任务 |\n\n### 🔧 配置系统 V2\n- **分层配置**: 默认 \u003c Profile \u003c 本地覆盖 \u003c 运行时\n- **热加载**: 修改文件自动重载 (ConfigWatcher)\n- **CLI 配置管理**: `pjsk config set play.mode ap`\n\n---\n\n## 快速开始\n\n### 前置条件\n- Python 3.9+\n- Android 设备 (二选一):\n  - **真机**: USB 调试开启，USB 数据线连接\n  - **模拟器**: MuMu 模拟器 12 (推荐) 或雷电模拟器 9\n- ADB (自动检测或手动安装)\n\n### 连接方式\n\n#### 方式 A: 真机 (USB 直连)\n```bash\n# 1. 手机开启 USB 调试 (开发者选项中)\n# 2. USB 数据线连接电脑\n# 3. 验证连接\nadb devices\n# 应显示:  \u003cserial\u003e  device\n\n# 4. 运行设置向导\npython main.py setup\n```\n\n#### 方式 B: MuMu 模拟器 12 (推荐)\n```bash\n# 1. 下载安装 MuMu 模拟器 12: https://mumu.163.com/\n# 2. 在模拟器中安装 PJSK (通过 Google Play / QooApp / APK)\n# 3. 模拟器设置 → 其他设置:\n#    - 关闭 ROOT 权限\n#    - 分辨率: 1280x720 (推荐)\n#    - 开启 ADB 调试\n# 4. 连接模拟器 ADB\nadb connect 127.0.0.1:7555   # MuMu 12 默认端口\n\n# 5. 验证连接\nadb devices\n# 应显示:  127.0.0.1:7555  device\n\n# 6. 运行设置向导\npython main.py setup\n```\n\n#### 方式 C: 雷电模拟器 9\n```bash\n# 类似 MuMu，端口改为 5555\nadb connect 127.0.0.1:5555\npython main.py setup\n```\n\n\u003e ⚠️ **模拟器注意事项**:\n\u003e - 日服 (jp) 检测较严，建议使用 MuMu 12 Android 9 镜像\n\u003e - 国际服 (en) 和台服 (tw) 检测相对宽松\n\u003e - 模拟器内**不要开启 ROOT**，否则可能被游戏检测\n\u003e - 如遇到游戏闪退，尝试在模拟器设置中关闭\"开发者选项\"\n\n### 安装\n```bash\ngit clone https://github.com/WeatherWind/pjsk-auto-player.git\ncd pjsk-auto-player\npip install -r requirements.txt\n```\n\n### 使用\n```bash\n# 1. 首次运行 → 设置向导\npython main.py setup\n\n# 2. 校准\npython main.py calibrate\n\n# 3. 开始执行\npython main.py start\n\n# 4. 或启动 Web 控制面板 (浏览器 http://localhost:8080)\npython main.py web\n```\n\n---\n\n## 📂 项目结构\n\n```\npjsk-auto-player/\n├── main.py                 # 入口\n├── cli.py                  # CLI 命令处理\n├── app.py                  # 应用主类 (协调所有模块)\n├── config/                 # 配置系统 V2\n│   ├── __init__.py         # ConfigLoader (分层/热加载)\n│   └── default.yaml        # 默认配置\n├── controller/             # 设备控制器\n│   ├── base.py             # BaseController 抽象\n│   ├── adb.py              # ADB 控制\n│   ├── scrcpy.py           # scrcpy 视频流\n│   └── combined.py         # 智能路由\n├── pipeline/               # Pipeline V2\n│   ├── base.py             # AbstractTask / PackageTask\n│   ├── process.py          # ProcessTask 执行引擎\n│   ├── node.py             # 节点生命周期\n│   ├── plugins.py          # 插件系统 (AOP)\n│   ├── task_data.py        # JSON + @继承解析\n│   └── scheduler.py        # 任务调度器\n├── scene/                  # 场景检测\n│   ├── classifier.py       # 多算法投票分类\n│   ├── states.py           # 场景状态定义\n│   └── transitions.py      # 状态机\n├── vision/                 # 图像识别引擎\n│   ├── matcher.py          # 模板匹配\n│   ├── ocr.py              # OCR 识别\n│   ├── color.py            # 颜色检测\n│   └── scene.py            # 多算法融合\n├── web/                    # Web GUI V2\n│   ├── app.py              # HTTP + SSE 服务器\n│   ├── websocket.py        # SSE 实时推送\n│   └── dashboard.html      # 暗色控制面板\n├── wizard/                 # 设置向导\n│   └── setup.py            # 5 步傻瓜式向导\n├── notification/           # 通知系统\n│   ├── desktop.py          # 桌面通知\n│   └── web.py              # Web 推送\n├── exceptions.py           # 分级异常体系\n├── VISION.md               # 架构演进文档\n├── lib/                    # 原代码 (向后兼容)\n│   ├── adb_controller.py\n│   ├── auto_play.py\n│   ├── scrcpy_controller.py\n│   ├── scene_classifier.py\n│   ├── screen_analyzer.py\n│   ├── ocr_reader.py\n│   ├── pipeline.py\n│   ├── web_dashboard.py\n│   └── setup_wizard.py\n├── resource/\n│   └── tasks/\n├── config.yaml             # 兼容旧配置文件\n└── VERSION\n```\n\n---\n\n## 命令行参考\n\n| 命令 | 说明 |\n|------|------|\n| `python main.py` | Web 控制面板 (默认) |\n| `python main.py start` | 单次执行 |\n| `python main.py auto` | 连续执行 |\n| `python main.py web` | Web 控制面板 |\n| `python main.py daemon` | 后台守护进程 |\n| `python main.py calibrate` | 一键校准 |\n| `python main.py setup` | 设置向导 |\n| `python main.py status` | 查看守护进程状态 |\n| `python main.py stop` | 停止守护进程 |\n| `python main.py config list` | 列出配置档案 |\n| `python main.py config set play.mode ap` | 运行时修改配置 |\n\n---\n\n## 架构\n\n### 设计理念\n- **分层解耦**: 配置 → 控制器 → 识别 → Pipeline → Web/GUI 完全独立\n- **声明式配置**: 行为由 JSON/YAML 驱动，不硬编码\n- **MAA 任务模型**: ProcessTask 执行引擎 + @继承语法\n- **ALAS 异常体系**: 分级异常 + 自动恢复策略\n- **MaaFramework 架构**: 3 层分离 (Controller → Resource → Agent)\n\n### 技术栈\n- Python 3.9+\n- OpenCV (图像处理)\n- ADB / scrcpy / minitouch (设备控制)\n- EasyOCR / pytesseract (文字识别)\n- http.server + SSE (Web 服务)\n\n---\n\n## 免责声明\n\n本软件用于学习和研究目的。使用本软件可能违反 Project Sekai (SEGA/Colorful Palette) 的服务条款。用户应自行承担所有风险和责任。开发者不对任何账号封禁或其他后果负责。\n\n详见 [TERMS.md](TERMS.md)。\n\n---\n\n## License\n\nMIT License\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fweatherwind%2Fpjsk-auto-player","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fweatherwind%2Fpjsk-auto-player","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fweatherwind%2Fpjsk-auto-player/lists"}