feat(config): 添加高阶过滤功能并限制连续分隔符数量

- 实现了 limitConsecutiveSeparators 函数来限制连续分隔符不超过3个
- 在模板匹配设置中应用分隔符数量限制逻辑
- 更新 README.md 添加 high_level_filtering 配置项说明
- 添加高阶过滤语法说明文档和使用示例
- 修改 settings.json 中高阶过滤标签提示查看文档
- 优化配置界面中的高阶过滤功能描述
This commit is contained in:
yan
2026-01-26 13:42:28 +08:00
parent d0e05851e2
commit a0a807ce20
4 changed files with 71 additions and 23 deletions

View File

@@ -185,29 +185,47 @@ sequenceDiagram
## 重要配置项一览settings.json
| 配置项 | 类型 | 主要作用 | 推荐默认/示例 |
|---------------------|-----|-------------------------------------------------------------|--------------------------------------------|
| config_uid | 复选框 | 当前配置uid:{无}(仅仅显示配置uid无其他作用) | xxx |
| key | 文本 | 脚本密钥 | xxx |
| config_run | 下拉 | 运行模式:刷新 / 加载 / 执行 | 刷新 → 首次,加载 → 日常 |
| refresh_record | 复选框 | 配置模式-刷新-清空运行记录 | |
| refresh_record_mode | 下拉 | 清空运行记录模式 全部 | UID | |
| loading_level | 文本 | 路径层级深度≥1实际支持更高深度 | 2 或 3 |
| 配置项 | 类型 | 主要作用 | 推荐默认/示例 |
|---------------------|-----|-------------------------------------------------|--------------------------------------------|
| config_uid | 复选框 | 当前配置uid:{无}(仅仅显示配置uid无其他作用) | xxx |
| key | 文本 | 脚本密钥 | xxx |
| config_run | 下拉 | 运行模式:刷新 / 加载 / 执行 | 刷新 → 首次,加载 → 日常 |
| refresh_record | 复选框 | 配置模式-刷新-清空运行记录 | |
| refresh_record_mode | 下拉 | 清空运行记录模式 全部 | UID | |
| high_level_filtering | 文本 | 高阶过滤 | |
| loading_level | 文本 | 路径层级深度≥1实际支持更高深度 | 2 或 3 |
| the_layer | 复选框 | 只加载指定层级 | |
| 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_hoe_ground | 文本 | 锄地特化队伍配置(语法:父文件夹->子文件夹=队伍名,... | 敌人与魔物->蕈兽=蕈兽队 |
| team_seven_elements | 文本 | 七元素队伍(矿物,火,水,风,雷,草,冰,岩) | 按顺序填写 |
| is_debug | 复选框 | 开发者模式(详细日志) | 调试时开启 |
| 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_hoe_ground | 文本 | 锄地特化队伍配置(语法:父文件夹->子文件夹=队伍名,... | 敌人与魔物->蕈兽=蕈兽队 |
| team_seven_elements | 文本 | 七元素队伍(矿物,火,水,风,雷,草,冰,岩) | 按顺序填写 |
| is_debug | 复选框 | 开发者模式(详细日志) | 调试时开启 |
## 语法说明
- high_level_filtering 高阶过滤
```text
语法xxx->xxx-> ..... 无限制
实例pathing\地方特产\
语法:地方特产
实例pathing\地方特产\枫丹\
语法:地方特产->枫丹
实例pathing\地方特产\枫丹\幽光星星\
语法:地方特产->枫丹->幽光星星
实例pathing\地方特产\枫丹\幽光星星\幽光星星@jbcaaa\
语法:地方特产->枫丹->幽光星星->幽光星星@jbcaaa
```
- 语法风格请保持一致 ,否则会导致路径会出现异常运行 如使用 地产->nam=1 同时保持 地产->nam=队伍名1 则路径会出现异常运行
- order_rules 执行顺序规则
1. `rootName` 根目录下层文件夹名称,`parentName` 父目录名称,`name` 文件夹名称

View File

@@ -59,7 +59,7 @@
{
"name": "high_level_filtering",
"type": "input-text",
"label": "高阶过滤<配置模式 加载 生效>",
"label": "高阶过滤{语法看文档}<配置模式 加载 生效>",
"default": ""
},
{

View File

@@ -593,7 +593,37 @@ async function loadUidSettingsMap(uidSettingsMap) {
templateMatchSettings[templateMatchSettings.length - 1]?.type === "separator") {
templateMatchSettings.pop();
}
/**
* 限制连续的分隔符数量不超过3个
* @param {Array} settings - 设置项数组
* @returns {Array} 处理后的设置项数组
*/
function limitConsecutiveSeparators(settings) {
if (!Array.isArray(settings) || settings.length === 0) {
return settings;
}
const result = [];
let consecutiveSeparatorCount = 0;
for (const item of settings) {
if (item?.type === "separator") {
consecutiveSeparatorCount++;
// 只有当连续分隔符数量不超过3个时才添加
if (consecutiveSeparatorCount <= 3) {
result.push(item);
}
} else {
// 遇到非分隔符时重置计数
consecutiveSeparatorCount = 0;
result.push(item);
}
}
return result;
}
templateMatchSettings = limitConsecutiveSeparators(templateMatchSettings)
// uidSettings.push(levelSettings)
// 将更新后的设置写入配置文件
file.writeTextSync(manifest.settings_ui, JSON.stringify(templateMatchSettings))

View File

@@ -59,7 +59,7 @@
{
"name": "high_level_filtering",
"type": "input-text",
"label": "高阶过滤<配置模式 加载 生效>",
"label": "高阶过滤{语法看文档}<配置模式 加载 生效>",
"default": ""
},
{