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

View File

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