diff --git a/BetterGenshinImpact/Model/Gear/BaseGearTask.cs b/BetterGenshinImpact/Model/Gear/BaseGearTask.cs
new file mode 100644
index 00000000..1e593f44
--- /dev/null
+++ b/BetterGenshinImpact/Model/Gear/BaseGearTask.cs
@@ -0,0 +1,85 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Text.Json.Serialization;
+using System.Threading.Tasks;
+using BetterGenshinImpact.GameTask.AutoGeniusInvokation.Exception;
+using CommunityToolkit.Mvvm.ComponentModel;
+using Microsoft.Extensions.Logging;
+
+namespace BetterGenshinImpact.Model.Gear;
+
+///
+/// 为了和其他Task做区分,使用Gear(齿轮)来作为前缀命名调度器内定义的任务
+///
+public abstract class BaseGearTask : ObservableObject
+{
+ [JsonIgnore]
+ private readonly ILogger _logger = App.GetLogger();
+
+ ///
+ /// 任务名称
+ ///
+ public string Name { get; set; } = string.Empty;
+
+ ///
+ /// 任务的位置相对 User 目录下的路径
+ ///
+ public string RelativePath { get; set; } = string.Empty;
+
+ ///
+ /// 任务是否启用
+ ///
+ public bool Enabled { get; set; } = true;
+
+ ///
+ /// 父节点
+ ///
+ public BaseGearTask? Father { get; set; }
+
+ ///
+ /// 子节点
+ ///
+ public List Children { get; set; } = [];
+
+ ///
+ /// 执行任务
+ ///
+ public async Task Execute()
+ {
+ var stopwatch = new Stopwatch();
+ try
+ {
+ _logger.LogInformation("------------------------------");
+ stopwatch.Start();
+ await Run();
+ }
+ catch (NormalEndException e)
+ {
+ throw;
+ }
+ catch (TaskCanceledException e)
+ {
+ _logger.LogInformation("取消执行配置组: {Msg}", e.Message);
+ throw;
+ }
+ catch (Exception e)
+ {
+ _logger.LogDebug(e, "执行脚本时发生异常");
+ _logger.LogError("执行脚本时发生异常: {Msg}", e.Message);
+ }
+ finally
+ {
+ stopwatch.Stop();
+ var elapsedTime = TimeSpan.FromMilliseconds(stopwatch.ElapsedMilliseconds);
+ _logger.LogInformation("→ 脚本执行结束: {Name}, 耗时: {Minutes}分{Seconds:0.000}秒", Name,
+ elapsedTime.Hours * 60 + elapsedTime.Minutes, elapsedTime.TotalSeconds % 60);
+ _logger.LogInformation("------------------------------");
+ }
+ }
+
+ ///
+ /// 执行任务
+ ///
+ public abstract Task Run();
+}
\ No newline at end of file
diff --git a/BetterGenshinImpact/Model/Gear/GearTask.cs b/BetterGenshinImpact/Model/Gear/GearTask.cs
deleted file mode 100644
index 9b4c7504..00000000
--- a/BetterGenshinImpact/Model/Gear/GearTask.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-namespace BetterGenshinImpact.Model.Gear;
-
-///
-/// 为了和其他Task做区分,使用Gear(齿轮)来作为前缀命名调度器内定义的任务
-///
-public class GearTask
-{
-
-}
\ No newline at end of file
diff --git a/BetterGenshinImpact/Model/Gear/GearTrigger.cs b/BetterGenshinImpact/Model/Gear/GearTrigger.cs
new file mode 100644
index 00000000..67987d98
--- /dev/null
+++ b/BetterGenshinImpact/Model/Gear/GearTrigger.cs
@@ -0,0 +1,9 @@
+namespace BetterGenshinImpact.Model.Gear;
+
+///
+/// 为了和其他Trigger做区分,使用Gear(齿轮)来作为前缀命名调度器内定义的触发器
+///
+public class GearTrigger
+{
+
+}
\ No newline at end of file