refactor(FullyAutoAndSemiAutoTools): 重构路径扫描系统并优化多账号支持

- 修复 manifest.json 中的密钥格式,去除多余空格
- 重构路径扫描功能,支持任意深度目录结构的树状扫描
- 新增按 UID 缓存路径列表功能,提升多账号切换性能
- 优化黑白名单过滤逻辑,使用 Set 数据结构提升查找效率
- 更新 README 文档,详细说明新的路径扫描和缓存机制
- 修改配置文件结构,新增 RefreshSettings.json 和 path-json-by-uid.json
- 调整 CD 规则配置,更新示例中的冷却时间设置
- 完善 Cron 解析服务部署文档,提供多种部署方式说明
- 优化用户操作流程,简化首次配置和日常使用的步骤
This commit is contained in:
yan
2026-01-18 13:43:19 +08:00
parent 9536d3f9b5
commit 7553b0d6af
2 changed files with 108 additions and 143 deletions

View File

@@ -4,21 +4,22 @@ BetterGI 平台下功能最全面的路径批量执行解决方案之一
## 项目概述 ## 项目概述
FullyAutoAndSemiAutoTools 是一套高度模块化、可高度自定义的自动化路径执行工具箱。 FullyAutoAndSemiAutoTools 是一套高度模块化、可高度自定义的自动化路径执行工具箱主要用于原神BetterGI平台的日常、周常、素材收集等重复性任务自动化
支持**全自动**与**半自动**两种运行模式,核心目标包括: 支持**全自动**与**半自动**两种运行模式,核心目标包括:
- 智能扫描 & 多层级管理大量路径文件 - 智能扫描 & 多层级管理大量路径文件(支持任意深度目录结构)
- 精细的冷却时间控制(小时制 + Cron因BGI不支持Cron解析,需搭配bettergi-scripts-tools+开启JS HTTP[前往bettergi-scripts-tools部署](https://github.com/Kirito520Asuna/bettergi-scripts-tools) - 精细的冷却时间控制(小时制 + Cron,需要外部解析服务)
- 根据路径特性自动切换战斗/元素队伍 - 根据路径特性自动切换战斗/元素队伍
- 集成丰富的实时辅助功能 - 集成丰富的实时辅助功能
- 执行记录防重复 + 择优优先未完成路径 - 执行记录防重复 + 择优优先未完成路径
- 支持黑白名单、多 UID 隔离记录 - 支持黑白名单、多 UID 隔离记录与路径缓存
### 核心亮点 ### 核心亮点(最新版)
- 路径树状扫描 + 多级加载默认2级可调 - **路径扫描全面重构**:支持任意层级目录,父子关系清晰,性能稳定
- 小时制 & Cron 双冷却系统(需要支持外部 HTTP API - **按 UID 缓存路径列表**`path-json-by-uid.json`),多账号切换极快
- 小时制 & Cron 双冷却系统(需搭配 bettergi-scripts-tools
- 智能队伍切换(战斗/七元素) - 智能队伍切换(战斗/七元素)
- 实时任务:自动对话跳过、自动拾取、自动战斗 - 实时任务:自动对话跳过、自动拾取、自动战斗
- 择优执行 + 执行记录 + 错误路径追踪 - 择优执行 + 执行记录 + 错误路径追踪
@@ -30,24 +31,28 @@ FullyAutoAndSemiAutoTools 是一套高度模块化、可高度自定义的自动
``` ```
FullyAutoAndSemiAutoTools/ FullyAutoAndSemiAutoTools/
├── config/ ├── config/
│ ├── SevenElement.json # 七元素路径→队伍映射 │ ├── SevenElement.json # 七元素路径→队伍映射
│ ├── cd-pathing.json # 路径冷却规则hours/cron │ ├── cd-pathing.json # 路径冷却规则hours/cron
│ ├── record.json # 本次执行记录 │ ├── record.json # 本次执行记录
│ ├── PathRecord.json # 历史路径执行记录 │ ├── PathRecord.json # 历史路径执行记录
── uidSettings.json # 用户配置快照多UID支持 ── uidSettings.json # 用户配置快照多UID支持
│ ├── path-json-by-uid.json # 按UID缓存的路径JSON列表
│ └── RefreshSettings.json # 刷新配置缓存(可选)
├── utils/ ├── utils/
│ ├── SwitchTeam.js # 队伍切换核心 │ ├── SwitchTeam.js # 队伍切换核心
│ ├── cron.js # Cron 解析工具 │ ├── cron.js # Cron 解析工具
│ └── uid.js # UID 识别模块 │ └── uid.js # UID 识别模块
├── pathing/ # ★ 所有路径文件目录(需符号链接) ├── pathing/ # ★ 所有路径文件目录(需符号链接)
├── SymLink.bat # 一键创建 pathing 链接 ├── SymLink.bat # 一键创建 pathing 链接
├── main.js # 主程序入口 ├── main.js # 主程序入口(已重构路径扫描)
├── manifest.json # 脚本元信息 & 版本标识 ├── manifest.json # 脚本元信息 & 版本标识
└── settings.json # 配置模板(用户界面依据) └── settings.json # 配置模板(用户界面依据)
``` ```
## 核心流程图 ## 核心流程图
### 1
### 1. 整体流程图graph TD 风格,适合看结构与分支)
```mermaid ```mermaid
graph TD graph TD
A[启动脚本] --> B[初始化<br>配置/工具/记录/密钥检查] A[启动脚本] --> B[初始化<br>配置/工具/记录/密钥检查]
@@ -55,14 +60,14 @@ graph TD
B --> C{运行模式?} B --> C{运行模式?}
C -->|刷新配置| D[扫描 pathing 目录<br>构建树状结构<br>生成多选配置项<br>应用黑白名单] C -->|刷新配置| D[扫描 pathing 目录<br>构建树状结构<br>生成多选配置项<br>应用黑白名单]
D --> E[保存用户配置<br>到 uidSettings.json] D --> E[保存用户配置<br>到 uidSettings.json + path-json-by-uid.json]
C -->|加载配置| F[读取 uidSettings.json<br>恢复上次选择 & 记录] C -->|加载配置| F[读取 uidSettings.json & path-json-by-uid.json<br>快速恢复上次选择 & 路径缓存]
C -->|开始执行| G[核心执行流程] C -->|开始执行| G[核心执行流程]
subgraph 核心执行流程 subgraph 核心执行流程
G --> H[读取 CD 配置<br>加载执行记录] G --> H[读取 CD 配置<br>加载执行记录 & UID路径缓存]
H --> I[构建 needRunMap<br>遍历路径组 & 过滤] H --> I[构建 needRunMap<br>遍历路径组 & 过滤]
I --> J{CD 检查<br>hours/cron} I --> J{CD 检查<br>hours/cron}
J -->|仍在CD| K[移除该路径] J -->|仍在CD| K[移除该路径]
@@ -107,13 +112,13 @@ graph TD
style G fill:#f3e5f5,stroke:#7b1fa2 style G fill:#f3e5f5,stroke:#7b1fa2
style AE fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px style AE fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px
``` ```
### 2 ### 2. 执行时序图sequenceDiagram 风格,适合看交互顺序)
```mermaid ```mermaid
sequenceDiagram sequenceDiagram
participant U as 用户 participant U as 用户
participant S as 脚本设置界面 participant S as 脚本设置界面
participant Init as 初始化模块 participant Init as 初始化模块
participant Scan as 路径扫描 participant Scan as 路径扫描(重构版)
participant CD as 冷却检查 participant CD as 冷却检查
participant Exec as 执行引擎 participant Exec as 执行引擎
participant RT as 实时任务 participant RT as 实时任务
@@ -124,19 +129,19 @@ sequenceDiagram
U->>S: 启动脚本 → 选择模式 U->>S: 启动脚本 → 选择模式
alt 模式 = 刷新配置 alt 模式 = 刷新配置
S->>Scan: 扫描 pathing 目录 S->>Scan: 扫描 pathing 目录(支持任意深度)
Scan-->>S: 返回树状结构 & 文件列表 Scan-->>S: 返回完整树状结构 & 文件列表
S->>S: 生成多选配置项<br>应用黑白名单过滤 S->>S: 生成多选配置项<br>应用黑白名单精确过滤Set优化
S-->>U: 显示配置界面供勾选 S-->>U: 显示配置界面供勾选
U->>S: 保存配置 U->>S: 保存配置
S->>Record: 写入 uidSettings.json S->>Record: 写入 uidSettings.json + path-json-by-uid.json
else 模式 = 加载配置 else 模式 = 加载配置
S->>Record: 读取 uidSettings.json S->>Record: 读取 uidSettings.json & path-json-by-uid.json
Record-->>S: 返回上次配置 & 路径选择 Record-->>S: 返回上次配置 & 缓存路径列表
S-->>U: 恢复配置界面 S-->>U: 快速恢复配置界面
else 模式 = 执行 else 模式 = 执行
S->>Init: 开始执行 S->>Init: 开始执行
Init->>Record: 加载历史记录(record & PathRecord) Init->>Record: 加载历史记录 & UID路径缓存
Init->>CD: 读取 cd-pathing.json Init->>CD: 读取 cd-pathing.json
CD-->>Init: 返回冷却状态 CD-->>Init: 返回冷却状态
@@ -190,146 +195,106 @@ sequenceDiagram
end end
``` ```
## 重要配置项一览settings.json ## 重要配置项一览settings.json
| 配置项 | 类型 | 主要作用 | 推荐默认/示例 | | 配置项 | 类型 | 主要作用 | 推荐默认/示例 |
|-------------------------|------------|----------------------------------------|----------------------------| | --------------- | ------ |----------------------------------------------------------|-----------------------------------------|
| config_run | 下拉 | 运行模式:刷新 / 加载 / 执行 | 刷新 → 首次,加载 → 日常 | | config_run | 下拉 | 运行模式:刷新 / 加载 / 执行 | 刷新 → 首次,加载 → 日常 |
| loading_level | 文本 | 路径层级深度≥1 | 2 或 3 | | loading_level | 文本 | 路径层级深度≥1实际支持更高深度 | 2 或 3 |
| config_white_list | 文本 | 白名单(逗号分隔) | 晶蝶,特产 | | order_rules | 文本 | 执行顺序规则(可留空)<br>语法:父文件夹名称->文件夹名称=顺序整数,...<br>示例:食材与炼金->晶蝶=1, | ""(默认按扫描顺序)或 "食材与炼金->晶蝶=1,pathing->地方特产=2" |
| config_black_list | 文本 | 黑名单(优先级更高) | 其他,锄地专区,周本 | | config_white_list | 文本 | 白名单(逗号分隔) | 晶蝶,特产 |
| open_cd | 复选框 | 启用冷却控制 | 建议开启 | | config_black_list | 文本 | 黑名单(优先级更高) | 其他,锄地专区,周本 |
| http_api | 文本 | Cron 解析服务地址 | http://127.0.0.1:port/... | | open_cd | 复选框 | 启用冷却控制 | 建议开启 |
| real_time_missions | 多选 | 实时辅助(对话/战斗/拾取) | 至少开「自动拾取」 | | http_api | 文本 | Cron 解析服务地址 | http://127.0.0.1:8081/... |
| choose_best | 复选框 | 择优模式(优先未跑/最久未跑路径) | 推荐开启 | | real_time_missions | 多选 | 实时辅助(对话/战斗/拾取) | 至少开「自动拾取」 |
| mode | 下拉 | 全自动 / 半自动 | 全自动(日常) | | choose_best | 复选框 | 择优模式(优先未跑/最久未跑路径) | 推荐开启 |
| auto_semi_key_mode | 下拉 | 自动快捷键行为(继续/跳过 | 继续运行 | | mode | 下拉 | 全自动 / 半自动 | 自动(日常 |
| auto_key | 文本 | 半自动干预快捷键 | F10 / F11避免冲突 | | auto_semi_key_mode | 下拉 | 半自动快捷键行为(继续/跳过) | 继续运行 |
| team_fight | 文本 | 战斗/通用行走队伍名称 | 必须填写 | | auto_key | 文本 | 半自动干预快捷键 | F10 / F11避免冲突 |
| team_seven_elements | 文本 | 七元素队伍(矿物,火,水,风,雷,草,冰,岩)| 按顺序填写 | | team_fight | 文本 | 战斗/通用行走队伍名称 | 必须填写 |
| is_debug | 复选框 | 开发者模式(详细日志) | 调试时开启 | | team_seven_elements | 文本 | 七元素队伍(矿物,火,水,风,雷,草,冰,岩) | 按顺序填写 |
| is_debug | 复选框 | 开发者模式(详细日志) | 调试时开启 |
## CD 规则示例cd-pathing.json ## CD 规则示例cd-pathing.json
```json ```json
[ [
{ {
"name": "晶蝶", "name": "晶蝶",
"type": "hours", "type": "hours",
"level": 2, "level": 2,
"value": 12 "value": 12
}, },
{ {
"name": "矿物", "name": "地方特产",
"type": "cron", "type": "hours",
"level": 1, "level": 1,
"value": "0 0 0 1/3 * ?" "value": 46
}, },
{ {
"name": "周本", "name": "矿物",
"type": "hours", "type": "cron",
"level": 3, "level": 1,
"value": 168 "value": "0 0 0 1/3 * ?"
} }
] ]
``` ```
### 部署 [bettergi-scripts-tools](https://github.com/Kirito520Asuna/bettergi-scripts-tools)开启Cron解析 ## Cron 解析服务部署(必须)
#### 1.windows exe 直接运行 **bettergi-scripts-tools** 是 Cron 解析的必要依赖,请至少选择一种方式部署:
前往 [release](https://github.com/Kirito520Asuna/bettergi-scripts-tools/releases) 下载 带windows的zip包解压运行.exe文件即可
#### 2.java ### 1. Windows 一键运行
前往 [release](https://github.com/Kirito520Asuna/bettergi-scripts-tools/releases) 下载 jar包 下载 [release](https://github.com/Kirito520Asuna/bettergi-scripts-tools/releases) 中的 windows zip 包 → 解压 → 双击 .exe 运行
```shell
java -jar xxxx.jar ### 2. Java 运行
下载 jar 包 → 执行:
```bash
java -jar bettergi-scripts-tools-xxxx.jar
``` ```
#### 3.部署docker
```shell ### 3. Docker 部署
```bash
docker pull ghcr.io/kirito520asuna/bettergi-scripts-tools:latest docker pull ghcr.io/kirito520asuna/bettergi-scripts-tools:latest
docker run -d -p 8081:8081 -v /path/to/application-prod.yml:/app/application-prod.yml --name bettergi-scripts-tools ghcr.io/kirito520asuna/bettergi-scripts-tools:latest docker run -d -p 8081:8081 --name bettergi-scripts-tools ghcr.io/kirito520asuna/bettergi-scripts-tools:latest
``` ```
### Cron Api
```http request
###
POST http://localhost:8081/bgi/cron/next-timestamp
Content-Type: application/json
{
"cronExpression": "",
"startTimestamp": 1,
"endTimestamp": 1
}
###
POST http://localhost:8081/bgi/api/cron/next-timestamp
Content-Type: application/json
{
"cronExpression": "",
"startTimestamp": 1,
"endTimestamp": 1
}
###
POST http://localhost:8081/bgi/jwt/cron/next-timestamp
Content-Type: application/json
{
"cronExpression": "",
"startTimestamp": 1,
"endTimestamp": 1
}
```
---
**默认 API 地址**`http://127.0.0.1:8081/bgi/cron/next-timestamp`
## 推荐使用流程 ## 推荐使用流程
1. **首次准备** 1. 双击 `SymLink.bat` 创建 pathing 链接
双击 `SymLink.bat` 创建 pathing 链接 2. 首次运行强烈建议先「刷新」一次(生成 path-json-by-uid.json 缓存)
将所有 .json 路径文件放入 pathing 或子目录 3. 日常使用「加载」模式 → 快速恢复配置 & 路径列表
4. 微调路径组 → 切换「执行」模式 → 一键启动
2. **第一次完整配置**(建议花 510 分钟) **多账号特别友好**:每个 UID 都有独立路径缓存,切换账号无需重复扫描
→ 选择「**刷新**」模式 → 执行
→ 设置白/黑名单、队伍、CD规则、实时任务、执行模式等
→ 保存(自动生成 uidSettings.json
3. **日常执行**(最常用方式)
→ 打开设置 → 选择「**加载**」模式 → 执行
→ 微调本次要跑的路径组
→ 切换到「**执行**」模式 → 一键启动
4. **半自动模式建议**
mode = 半自动
设置不常用快捷键(推荐 F10/F11
路径完成后暂停,等待按键决定继续或跳过
## 小技巧与实用建议 ## 小技巧与实用建议
- 最省事:全自动 + 择优模式 + 自动拾取 + 冷却控制 - 最省事组合:全自动 + 择优模式 + 自动拾取 + 冷却控制
- 最安全:半自动 + 自动拾取 + 详细日志 + 大量黑名单 - 最安全组合:半自动 + 自动拾取 + 详细日志 + 大量黑名单
- 每12周建议执行一次「刷新」同步新路径 - 路径目录再深也没关系,扫描已支持任意层级
- 错误路径反复出现?查看 record.json 加黑名单或修复 - 错误路径反复出现?查看 record.json 加黑名单或修复
- 多UID用户每个号「刷新」一次,建立独立配置 - 多UID用户首次每个号「刷新」一次,建立独立缓存
## 注意事项 ## 注意事项
- 需要战斗的路径建议在描述中写「请配置好战斗策略」或放在战斗相关目录 - 首次使用或升级后建议删除旧 `path-json-by-uid.json` 重新生成
- 半自动模式请确保快捷键不与 BetterGI 冲突 - 半自动模式请确保快捷键不与 BetterGI 冲突
- Cron 模式需要网络正常并正确配置 http_api 地址 - Cron 模式必须部署解析服务,否则冷却检查无效
- 记录文件自动保存支持断点续跑与多UID隔离
- 最低兼容版本BetterGI 0.54.3+ - 最低兼容版本BetterGI 0.54.3+
## 版本密钥 ## 版本密钥
| 版本 | 密钥 |
|:------|:----------|
| 0.0.1 | PGCSBY37NJ|
## 版本历史 | 版本 | 密钥 |
### 0.0.1 (2026-01-05) |----------------|-------------------------------------------|
- 基础功能已完成 | 0.0.1 | PGCSBY37NJ |
## 版本历史(简要)
### 0.0.1 2026.01.18
基本功能完成
**作者**:云端客 (Kirito520Asuna) **作者**:云端客 (Kirito520Asuna)

View File

@@ -3,7 +3,7 @@
"name": "全自动或半自动工具箱", "name": "全自动或半自动工具箱",
"version": "0.0.1", "version": "0.0.1",
"bgi_version": "0.54.3", "bgi_version": "0.54.3",
"key": " PGCSBY37NJ ", "key": "PGCSBY37NJ",
"description": "", "description": "",
"saved_files": [], "saved_files": [],
"authors": [ "authors": [