ShadowLemoon f7976b0bbd feat: 根据文件夹名字和内容重合度区分仓库;启动时自动更新仓库和订阅 (#2767)
* feat: 实现启动时自动更新已订阅脚本及多仓库分离存储

- ScriptConfig: 新增 AutoUpdateSubscribedScripts 配置项
- ScriptRepoUpdater: 动态 CenterRepoPath, 按仓库URL分离存储
  - 内容重合度检测(Jaccard系数)判断仓库异同
  - URL→文件夹名持久化映射(repo_folder_mapping.json)
  - repo_updated.json 存放于各自仓库文件夹内
  - AutoUpdateSubscribedScripts 启动时自动更新订阅脚本
  - 静默同步仓库、渠道URL解析、检出更新脚本
- RepoWebBridge: 使用动态路径, 辅助方法改为 internal
- MainWindowViewModel: 启动时调用自动更新

* feat: 基于内容重合度的导入zip仓库

* perf: 合并默认仓库url映射

* perf: 清理兼容字段

* perf: 添加线程锁以避免并发调用

* fix: 缓存FolderMapping、修复重合度异常返回值、目录扫描异常隔离、移除未使用变量

* perf: 优化更新流程

* perf: 内存缓存添加锁

* fix: 修复更新状态逻辑,确保克隆失败时不标记为已更新

* perf: 文件夹映射先写磁盘再写缓存

* refactor: 简化生成唯一文件夹名称的方法,移除不必要的参数

* fix: ResetRepo加写锁并清理URL映射条目

* perf: 优化重合度算法

* docs: 更新注释

* fix: 仅重置实际更新成功的脚本的 hasUpdate 标记

* feat: 手动一键更新按钮

* feat: 订阅路径迁移至独立文件存储并简化更新逻辑

- 订阅数据从 config.json 迁移到 User/subscriptions/{repo}.json 独立文件
- 添加 ReaderWriterLockSlim 保护订阅文件并发读写
- 使用 System.Text.Json + ConfigService.JsonOptions 序列化
- 新增 RepoWebBridge.GetSubscribedScriptPaths() 桥接方法
- 启动时自动从旧 config.json 迁移订阅数据到独立文件
- 合并手动/自动更新为 UpdateAllSubscribedScriptsCore 共用核心
- 移除 hasUpdate 检查,直接全量更新所有订阅脚本
- 移除冗余 logPrefix 参数

* refactor: 简化启动时自动更新调用

- 移除 Task.Run + try-catch 包装,异常处理已内置于方法中
- 直接使用 fire-and-forget 异步调用

* fix: 订阅目录命名改为 PascalCase (Subscriptions)

* refactor: 移除死代码和冗余中间层方法

* fix: ReadSubscriptionFile 异常时记录日志避免订阅数据静默丢失

* fix: 进度条改为Indeterminate模式、异常日志补全、订阅去重、迁移批量写入、锁注释

* refactor: 提取 ReadFolderMappingFromDisk 消除映射方法嵌套 try

* fix: 补全静态方法异常日志、WriteSubscriptionFile异常保护、ManualUpdate注释

* fix: ManualUpdateSubscribedScripts 加 try-catch 兜底并提示用户重置仓库

* fix: Dialog打开时检测后台自动更新状态,自动禁用按钮并显示进度提示

- ScriptRepoUpdater 新增 IsAutoUpdating 标志和 AutoUpdateStateChanged 事件
- ScriptRepoWindow 订阅事件,自动更新期间显示进度条、禁用所有操作按钮并 Toast 提示
- 更新仓库/重置仓库按钮也加上 IsEnabled 绑定 IsUpdating

* fix: 将自动更新调用包裹在 Task.Run 中避免 UI 线程阻塞

AutoUpdateSubscribedScripts 的 await 后续会被 WPF SynchronizationContext
调度回 UI 线程,导致大量 Git checkout 和文件 IO 操作阻塞界面。
用 Task.Run 确保整个流程在线程池执行。

* fix: 进度条分离 IsProgressIndeterminate 属性,按操作类型正确切换确定/不确定模式

* refactor: 消除 pathing 展开重复逻辑、用布尔字段替换字符串比较追踪状态来源、补全锁注释、统一日志方式

* fix: ExpandTopLevelPaths 泛化展开所有 PathMapper 顶层 key 防止误删用户目录,迁移移入锁内

* fix: 命令行启动配置组/一条龙前先等待自动更新订阅脚本完成

* feat: 添加命令行启动时是否先自动更新选项

* fix: 修复按钮位置
2026-02-20 15:09:17 +08:00
2025-02-23 22:03:52 +08:00
2023-10-16 18:20:02 +08:00
2026-02-14 16:15:32 +08:00


Windows 下载数 Release

🌟 点一下右上角的 StarGithub 主页就能收到软件更新通知了哦~
Star

English | 中文| 繁体中文
BetterGI · 更好的原神, 一个基于计算机视觉技术,意图让原神变的更好的项目。

功能

  • 实时任务
    • 自动拾取:遇到可交互/拾取内容时自动按 F,支持黑白名单配置
    • 自动剧情:快速点击过剧情、自动选择选项、自动提交物品、关闭弹出书页等
    • 自动邀约:自动剧情开启的情况下此功能才会生效,自动选择邀约选项
    • 快速传送:在地图上点击传送点,或者点击后出现的列表中存在传送点,会自动点击传送点并传送
    • 半自动钓鱼AI 识别自动抛竿,鱼上钩时自动收杆,并自动完成钓鱼进度
    • 自动烹饪:自动在完美区域完成食物烹饪,暂不支持“仙跳墙”
  • 独立任务
    • 全自动七圣召唤:帮助你轻松完成七圣召唤角色邀请、每周来客挑战等 PVE 内容
    • 自动伐木:自动 Z 键使用「王树瑞佑」,利用上下线可以刷新木材的原理,挂机刷满一背包的木材
    • 自动秘境:全自动秘境挂机刷体力,自动循环进入秘境开启钥匙、战斗、走到古树并领取奖励
    • 自动音游:一键自动完成千音雅集的专辑,快速获取成就
    • 全自动钓鱼:在出现钓鱼 F 按钮的位置面向鱼塘,然后启动全自动钓鱼,启动后程序会自动完成钓鱼,并切换白天和晚上
  • 全自动
    • 一条龙:一键完成日常(使用历练点),并领取奖励
    • 自动采集/挖矿/锄地:通过左上角小地图的识别,完成自动采集、挖矿、锄地等功能
    • 键鼠录制:可以录制回放当前的键鼠操作,建议配合调度器使用
  • 操控辅助
    • 那维莱特转圈:设置快捷键后,长按可以不断水平旋转视角(当然你也可以用来转草神)
    • 快速圣遗物强化:通过快速切换“详情”、“强化”页跳过圣遗物强化结果展示,快速+20
    • 商店一键购买:可以快速以满数量购买商店中的物品,适合快速清空活动兑换,尘歌壶商店兑换等
  • ……

自带一个遮罩窗口覆盖在游戏界面上,用于显示日志和图像识别结果

截图

0 39 1

下载

Note

下载地址:Github 下载

不知道下载哪个?第一次使用?请看:快速上手 遇到问题请先看:常见问题

最新测试版本可以从自动构建中获取: 或者从CNB上直接下载速度快CNB Releases

使用方法

由于图像识别比较吃性能,低配置电脑可能无法正常使用部分功能。

推荐的电脑配置至少能够中画质60帧流畅游玩原神否则部分功能的使用体验会较差。

你的系统需要满足以下条件:

  • Windows 10 或更高版本的64位系统
  • .NET 8 运行时 (没有的话,启动程序,系统会提示下载安装)

⚠️注意:

  1. 窗口大小变化、切换游戏分辨率、切换显示器的时候请重启本软件。
  2. 不支持任何画面滤镜HDR、N卡滤镜等。游戏亮度请保持默认。
  3. 当前只支持 16:9 的分辨率,推荐在 1920x1080 窗口化游戏下使用。
  4. 模拟操作部分可能被部分安全软件拦截请加入白名单。已知360或者自定义规则WD会拦截部分类型的模拟点击

打开软件以后,在“启动”页选择好截图方式,点击启动按钮就可以享受 BetterGI 带来的便利了!

详细使用指南请看:快速上手

具体功能效果与使用方式见:文档

FAQ

  • 为什么需要管理员权限?
    • 因为游戏是以管理员权限启动的,软件不以管理员权限启动的话没有权限模拟鼠标点击。
  • 会不会封号?
    • 理论上不会被封。 BetterGI 不会做出任何修改游戏文件、读写游戏内存等任何危害游戏本体的行为,单纯依靠视觉算法和模拟操作实现。 但是mhy是自由的用户条款上明确说明第三方软件/模拟操作是封号理由之一。当前方案还是存在被检测的可能。只能说请低调使用,请不要跳脸官方。
  • 更多常见问题...

致谢

本项目的完成离不开以下项目:

另外特别感谢 @Lightczx@emako 对本项目的指导与贡献

开发者

格式化:CodeMaid.configSettings.XamlStyler

如何编译项目?

许可证

GPL-v3

问题反馈

Issue 或 QQ群779233019

Languages
C# 99.4%
JavaScript 0.4%
Batchfile 0.1%