跳至主要內容

CLI 使用指南

大约 18 分鐘

CLI 使用指南

功能介紹

  • 執行預定義或自定義的任務,例如 maa fightmaa run <task>;
  • 使用 maa installmaa update 安裝和更新MaaCore及資源;
  • 使用 maa self-update 更新自身。

安裝

Appimage

CLI 是 MAA 在 Linux 平臺的預設介面,你可以直接 下載open in new window 最新的 AppImage 包來使用 CLI。

包管理器

macOS

使用 Homebrewopen in new window 安裝:

brew install MaaAssistantArknights/tap/maa-cli

Linux

  • Arch Linux 使用者可以安裝 AUR 包open in new window:

    yay -S maa-cli
    
  • ❄️ Nix 使用者可以直接執行:

    # 穩定版
    nix run nixpkgs#maa-cli
    
    # 每夜構建
    nix run github:Cryolitia/nur-packages#maa-cli-nightly
    

    穩定版打包至 nixpkgsopen in new window 中,使用 nixpkgs 中的 Rust 工具鏈;每夜構建位於 NURopen in new window 中,使用 Beta channel 的 Rust 工具鏈,由 Github Action 每日自動更新和構建驗證。

  • 對於 Linux Brew 使用者,可以使用 Linux Brewopen in new window 安裝:

    brew install MaaAssistantArknights/tap/maa-cli
    

預編譯二進位制檔案

你可以從 maa-cli release 頁面open in new window下載預編譯的二進位制檔案,將其解壓後得到的可執行檔案放在你喜歡的位置。不同的平臺對應的檔名如下:

作業系統處理器架構檔名
Linuxx86_64maa_cli-x86_64-unknown-linux-gnu.tar.gz
aarch64maa_cli-aarch64-unknown-linux-gnu.tar.gz
macOSx86_64 maa_cli-universal-apple-darwin.zip
aaarch64
Windowsx86_64maa_cli-x86_64-pc-windows-msvc.zip

使用

maa-cli 的主要功能是執行任務,你可以透過 maa run <task> 來執行一個任務。這裡的 <task> 是一個任務的名字,你可以透過 maa list 來列出所有可用的任務。

更多資訊可以透過 maa help 獲取。

執行任務

maa-cli 的主要功能是執行任務,包括預定義的任務和自定義的任務。

預定義任務

  • maa startup [client]: 啟動遊戲並進入主介面,[client] 是客戶端型別,如果留空則不會啟動遊戲客戶端。
  • maa closedown: 關閉遊戲客戶端;
  • maa fight [stage]: 執行戰鬥任務,[stage] 是關卡名稱,例如 1-7;留空選擇上次或者當前關卡;
  • maa copilot <maa_uri>: 執行自動戰鬥任務,其中 <maa_uri> 是作業的 URI,其可以是 maa://1234 或者本地檔案路徑 ./1234.json
  • maa roguelike [theme]: 執行 roguelike 模式的戰鬥任務,[theme] 是 roguelike 模式的主題,可選值為 PhantomMizuki 以及 Sami

自定義任務

你可以透過 maa run <task> 來執行自定義任務。這裡的 <task> 是一個任務的名字,你可以透過 maa list 來列出所有可用的任務。
具體的任務定義可以在 配置小節 中找到。

任務總結

maa-cli 會在任務執行結束後向 stdout 輸出任務總結,包括每個子任務的執行時間和結果。你可以透過 --no-summary 選項來停用任務總結。

任務總結主要包括各任務的執行時間。對於以下任務,還會包括其他資訊:

  • 刷理智 fight: 關卡名稱,次數以及掉落統計;
  • 基建換班 infrast: 各設施進駐的幹員,對於製造站和貿易站,還會包括產物型別;
  • 公招 recruit: 公招標籤重新整理次數,招募次數以及檢測到的 tag 及星級。
  • 肉鴿 roguelike: 進行的次數,投資的次數。

日誌輸出

maa-cli 預設會向 stderr 輸出日誌。日誌輸出級別從低到高分別為 ErrorWarnInfoDebugTrace。預設的日誌輸出級別為 Warn。日誌級別可以透過 MAA_LOG 環境變數來設定,例如 MAA_LOG=debug。你也可以透過 -v 或者 -q 來增加或者減少日誌輸出級別。

--log-file 選項可以將日誌輸出到檔案中,日誌儲存在 $(maa dir log)/YYYY/MM/DD/HH:MM:SS.log 中,其中 $(maa dir log) 是日誌目錄,你可以透過 maa dir log 獲取。你也可以透過 --log-file=path/to/log 來指定日誌檔案的路徑。

安裝和更新

安裝和更新 MaaCore

你可以透過 maa installmaa update 來安裝和更新 MaaCore 及資源,更多資訊可以透過 maa help installmaa help update 獲取。

資源熱更新

由於遊戲的更新,MaaCore 需要最新的資源才能正常執行,你可以透過 maa hot-update 來更新資源,或者設定資源自動更新,詳見 CLI 相關配置

更新自身

你可以透過 maa self update 來更新 maa-cli 自身,注意對於由包管理器安裝的 maa-cli,你應該使用包管理器來更新 maa-cli

更多其他的命令可以透過 maa help 獲取。

其他子命令

  • maa list: 列出所有可用的任務;
  • maa dir <dir>: 獲取特定目錄的路徑,比如 maa dir config 可以用來獲取配置目錄的路徑;
  • maa version: 獲取 maa-cli 以及 MaaCore 的版本資訊;
  • maa convert <input> [output]: 將 JSONYAML 或者 TOML 格式的檔案轉換為其他格式;
  • maa complete <shell>: 生成自動補全指令碼;
  • maa activity [client]: 獲取遊戲的當前活動資訊,client 是客戶端型別,預設為 Official

配置

配置目錄

maa-cli 配置檔案位於特定的配置目錄中,你可以透過maa dir config獲取配置目錄。配置目錄也可以透過環境變數 MAA_CONFIG_DIR 更改。在下面的例子中,我們將用 $MAA_CONFIG_DIR 來表示配置目錄。

所有的配置檔案都可以使用 TOML,YAML 或者 JSON 格式,在下面的例子中,我們將使用 TOML 格式,並使用 .toml 作為副檔名。但是你可以混合這三種格式中的任意一種,只要你的副檔名正確。

定義自定義任務

每一個自定義任務都是一個單獨的檔案,它們應該位於 $MAA_CONFIG_DIR/tasks 目錄中。

基本結構

一個任務檔案包含多個子任務,每一個子任務是一個 MAA 任務,其包含一下幾個選項:

[[tasks]]
name = "啟動遊戲" # 任務的名字,可選,預設為任務型別
type = "StartUp" # maa任務的型別
params = { client_type = "Official", start_game_enabled = true } # maa任務的引數

任務條件

如果你想要根據一些條件執行不同引數的任務,你可以定義多個任務的變體:

[[tasks]]
name = "基建換班"
type = "Infrast"

[tasks.params]
mode = 10000
facility = ["Trade", "Reception", "Mfg", "Control", "Power", "Office", "Dorm"]
dorm_trust_enabled = true
filename = "normal.json" # 自定義的基建計劃的檔名應該位於`$MAA_CONFIG_DIR/infrast`

# 在12:00:00之前使用計劃1,在12:00:00到18:00:00之間使用計劃2,在18:00:00之後使用計劃0
[[tasks.variants]]
condition = { type = "Time", end = "12:00:00" } # 如果沒有定義start,那麼它將會是00:00:00
params = { plan_index = 1 }

[[tasks.variants]]
condition = { type = "Time", start = "12:00:00", end = "18:00:00" }
params = { plan_index = 2 }

[[tasks.variants]]
condition = { type = "Time", start = "18:00:00" }
params = { plan_index = 0 }

這裡的 condition 欄位用於確定哪一個變體應該被使用,而匹配的變體的 params 欄位將會被合併到任務的引數中。

注意:如果你的自定義基建計劃檔案使用相對路徑,應該相對於 $MAA_CONFIG_DIR/infrast。此外,由於基建檔案是由 MaaCore 而不是 maa-cli 讀取的,因此這些檔案的格式必須是 JSON。同時,maa-cli 不會讀取基建檔案,也不會根據其中定義的時間段來選擇相應的子計劃。因此,必須透過 condition 欄位來指定在相應時間段使用正確的基建計劃的引數中的 plan_index 欄位。這樣可以確保在適當的時間段使用正確的基建計劃。

除了 Time 條件,還有 DateTimeWeekdayDayMod條件。DateTime 條件用於指定一個時間段,Weekday 條件用於指定一週中的某些天,DayMod 見下文多天排班。

[[tasks]]
type = "Fight"

# 在夏活期間,刷SL-8
[[tasks.variants]]
params = { stage = "SL-8" }
condition = { type = "DateTime", start = "2023-08-01T16:00:00", end = "2023-08-21T03:59:59" }

# 在夏活期間以外的週二、週四和週六,刷CE-6
[[tasks.variants]]
condition = { type = "Weekday", weekdays = ["Tue", "Thu", "Sat"] }
params = { stage = "CE-6" }

# 其他時間,刷1-7
[[tasks.variants]]
params = { stage = "1-7" }

除了上述確定的條件之外,還有一個依賴於熱更新資源的條件 OnSideStory,當你啟動該條件後,maa-cli 會嘗試讀取相應的資源來判斷當前是否有正在開啟的活動,如果有那麼對應的變體會被匹配。 比如上述夏活期間刷 SL-8 的條件就可以簡化為 { type = "OnSideStory", client = "Official" },這裡的 client 引數用於確定你使用的客戶端,因為不同的客戶端的活動時間不同,對於使用官服或者 b 服的使用者,這可以省略。透過這個條件,每次活動更新之後你可以只需要更新需要刷的關卡而不需要手動編輯對應活動的開放時間。

除了以上基礎條件之外,你可以使用 { type = "And", conditions = [...] }{ type = "Or", conditions = [...] }, { type = "Not", condition = ... } 來對條件進行邏輯運算。

對於想要基建多天排班的使用者,可以將 DayModTime 組合使用,可以實現多天排班。比如,你想要實現每兩天換六次班,那麼你可以這樣寫:

[[tasks]]
name = "基建換班 (2天6班)"
type = "Infrast"

[tasks.params]
mode = 10000
facility = ["Trade", "Reception", "Mfg", "Control", "Power", "Office", "Dorm"]
dorm_trust_enabled = true
filename = "normal.json"

# 第一班,第一天 4:00:00 - 12:00:00
[[tasks.variants]]
params = { plan_index = 0 }
[tasks.variants.condition]
type = "And"
conditions = [
    # 這裡的 divisor 用來指定週期,remainder 用來指定偏移量
    # 偏移量等於 num_days_since_ce % divisor
    # 這裡的 num_days_since_ce 是公元以來的天數,0001-01-01 是第一天
    # 當天偏移量你可以透過 `maa remainder <divisor>` 來獲取.
    # 比如,2024-1-27 是第 738,912 天,那麼 738912 % 2 = 0
    # 當天的偏移量為 0,那麼本條件將會被匹配
    { type = "DayMod", divisor = 2, remainder = 0 },
    { type = "Time", start = "04:00:00", end = "12:00:00" },
]

# 第二班,第一天 12:00:00 - 20:00:00
[[tasks.variants]]
params = { plan_index = 1 }
[tasks.variants.condition]
type = "And"
conditions = [
  { type = "DayMod", divisor = 2, remainder = 0 },
  { type = "Time", start = "12:00:00", end = "20:00:00" },
]

# 第三班,第一天 20:00:00 - 第二天 4:00:00
[[tasks.variants]]
params = { plan_index = 2 }
[tasks.variants.condition]
# 注意這裡必須使用 Or 條件,不能直接使用 Time { start = "20:00:00", end = "04:00:00" }
# 在這種情況下, 第二天的 00:00:00 - 04:00:00 不會被匹配
# 當然透過調整你的排班時間避免跨天是更好的選擇,這裡只是為了演示
type = "Or"
conditions = [
  { type = "And", conditions = [
     { type = "DayMod", divisor = 2, remainder = 0 },
     { type = "Time", start = "20:00:00" },
  ] },
  { type = "And", conditions = [
     { type = "DayMod", divisor = 2, remainder = 1 },
     { type = "Time", end = "04:00:00" },
  ] },
]

# 第四班,第二天 4:00:00 - 12:00:00
[[tasks.variants]]
params = { plan_index = 3 }
[tasks.variants.condition]
type = "And"
conditions = [
  { type = "DayMod", divisor = 2, remainder = 1 },
  { type = "Time", start = "04:00:00", end = "12:00:00" },
]

# 第五班,第二天 12:00:00 - 20:00:00
[[tasks.variants]]
params = { plan_index = 4 }
[tasks.variants.condition]
type = "And"
conditions = [
  { type = "DayMod", divisor = 2, remainder = 1 },
  { type = "Time", start = "12:00:00", end = "20:00:00" },
]

# 第六班,第二天 20:00:00 - 第三天(新的第一天)4:00:00
[[tasks.variants]]
params = { plan_index = 5 }
[tasks.variants.condition]
type = "Or"
conditions = [
  { type = "And", conditions = [
     { type = "DayMod", divisor = 2, remainder = 1 },
     { type = "Time", start = "20:00:00" },
  ] },
  { type = "And", conditions = [
     { type = "DayMod", divisor = 2, remainder = 0 },
     { type = "Time", end = "04:00:00" },
  ] },
]

在預設的策略下,如果有多個變體被匹配,第一個將會被使用。如果沒有給出條件,那麼變體將會總是被匹配,所以你可以把沒有條件的變體放在最後,作為預設的情況。

你可以使用 strategy 欄位來改變匹配策略:

[[tasks]]
type = "Fight"
strategy = "merge" # 或者 "first" (預設)

# 在周天晚上使用所有的將要過期的理智藥
[[tasks.variants]]
params = { expiring_medicine = 1000 }

[tasks.variants.condition]
type = "And"
conditions = [
  { type = "Time", start = "18:00:00" },
  { type = "Weekday", weekdays = ["Sun"] },
]

# 預設刷1-7
[[tasks.variants]]
params = { stage = "1-7" }

# 在週二、週四和週六,刷CE-6
[[tasks.variants]]
condition = { type = "Weekday", weekdays = ["Tue", "Thu", "Sat"] }
params = { stage = "CE-6" }

# 在夏活期間,刷SL-8
[[tasks.variants]]
params = { stage = "SL-8" }
condition = { type = "DateTime", start = "2023-08-01T16:00:00", end = "2023-08-21T03:59:59" }

這個例子和上面的例子將刷同樣的關卡,但是在周天晚上,將會使用所有的將要過期的理智藥。在 merge 策略下,如果有多個變體被匹配,後面的變體的引數將合併入前面的變體的引數中。如果多個變體都有相同的引數,那麼後面的變體的引數將會覆蓋前面的變體的引數。

如果沒有變體被匹配,那麼任務將不會被執行,這可以用於只在特定的條件下執行子任務:

# 只在在18:00:00之後進行信用商店相關的操作
[[tasks]]
type = "Mall"

[[tasks.variants]]
condition = { type = "Time", start = "18:00:00" }

使用者輸入

對於一些任務,你可能想要在執行時輸入一些引數,例如關卡名稱。 你可以將對應需要輸入的引數設定為 Input 或者 Select 型別:

[[tasks]]
type = "Fight"

# 選擇一個關卡
[[tasks.variants]]
condition = { type = "DateTime", start = "2023-08-01T16:00:00", end = "2023-08-21T03:59:59" }
[tasks.variants.params.stage]
# 可選的關卡,必須提供至少一個可選值
# 可選值可以是一個值,也可以是同時包含值和描述的一個表
alternatives = [
    "SL-7", # 將被顯示為 "1. SL-7"
    { value = "SL-8", desc = "輕錳礦" } # 將被顯示為 "2. SL-8 (輕錳礦)"
]
default_index = 1 # 預設值的索引,從 1 開始,如果沒有設定,輸入空值將會重新提示輸入
description = "a stage to fight in summer event" # 描述,可選
allow_custom = true # 是否允許輸入自定義的值,預設為 false,如果允許,那麼非整數的值將會被視為自定義的值

# 無需任何輸入
[[tasks.variants]]
condition = { type = "Weekday", weekdays = ["Tue", "Thu", "Sat"] }
params = { stage = "CE-6" }

# 輸入一個關卡
[[tasks.variants]]
[tasks.variants.params.stage]
default = "1-7" # 預設的關卡,可選(如果沒有預設值,輸入空值將會重新提示輸入)
description = "a stage to fight" # 描述,可選
[tasks.variants.params.medicine]
# 依賴的引數,鍵為引數名,值為依賴的引數的預期值
# 當設定時,只有所有的依賴引數都滿足預期值時,這個引數才會被要求輸入
deps = { stage = "1-7" }
default = 1000
description = "medicine to use"

對於 Input 型別,當執行任務時,你將會被提示輸入一個值。如果你輸入了一個空值,如果有預設值,那麼預設值將會被使用,否則你將會被提示重新輸入。
對於 Select 型別,當執行任務時,你將會被提示輸入一個的索引或者自定義的值(如果允許)。如果你輸入了一個空值,如果有預設值,那麼預設值將會被使用,否則你將會被提示重新輸入。

--batch 選項可以用於在執行任務時跳過所有的輸入,這將會使用預設值;如果有任何輸入沒有預設值,那麼將會導致錯誤。

MaaCore 相關配置

和 MaaCore 相關的配置需要放在 $MAA_CONFIG_DIR/asst.toml 中。
目前其包含的配置有:

[connection]
type = "ADB"
adb_path = "adb"
device = "emulator-5554"
config = "CompatMac"

[resource]
global_resource = "YoStarEN"
platform_diff_resource = "iOS"
user_resource = true

[static_options]
cpu_ocr = false
gpu_ocr = 1

[instance_options]
touch_mode = "MAATouch"
deployment_with_pause = false
adb_lite_enabled = false
kill_adb_on_exit = false

連線配置

[connection] 相關欄位用於指定 MaaCore 連線遊戲的方式和引數。目前可用的連線方式有 ADBPlayTools

當你使用 ADB 連線時,你需要提供 adb 的路徑和裝置的序列號:

[connection]
type = "ADB"
adb_path = "adb" # adb可執行檔案的路徑
device = "emulator-5554" # 你的android裝置的序列號
config = "General" # maa connect的配置

注意,此處的 device 是任何 adb -s 可以接受的值,比如 emulator-5554127.0.0.1:5555

當你使用 PlayTools 連線時,你需要提供 PlayTools 的地址:

[connection]
type = "PlayCover"
address = "localhost:1717" # PlayTools的地址
config = "CompatMac" # maa connect的配置

兩者都需要提供 config,這個值將被傳給 MaaCore,用於指定一些平臺和模擬器相關的配置。對於 Linux 他預設為 CompatPOSIXShell,對於 macOS 他預設為 CompatMac,對於 Windows 他預設為 General。更多可選配置可以在資原始檔夾中的 config.json 檔案中找到。

資源配置

[resource] 相關欄位用於指定 MaaCore 載入的資源:

[resource]
global_resource = "YoStarEN" # 非中文版本的資源
platform_diff_resource = "iOS" # 非安卓版本的資源
user_resource = true # 是否載入使用者自定義的資源

當使用非簡體中文遊戲客戶端時,由於 MaaCore 預設載入的資源是簡體中文的,你需要指定 global_resource 欄位來載入非中文版本的資源。當使用 iOS 版本的遊戲客戶端時,你需要指定 platform_diff_resource 欄位來載入 iOS 版本的資源。這兩者都是可選的,如果你不需要載入這些資源,你可以將這兩個欄位設定為空。其次,這兩者也會被自動設定,如果你的 startup 任務中指定了 client_type 欄位,那麼 global_resource 將會被設定為對應客戶端的資源,而當你使用 PlayTools 連線時,platform_diff_resource 將會被設定為 iOS。最後,當你想要載入使用者自定義的資源時,你需要將 user_resource 欄位設定為 true

靜態選項

[static_options] 相關欄位用於指定 MaaCore 靜態選項,詳見 整合文件

[static_options]
cpu_ocr = false # 是否使用 CPU OCR,預設使用 CPU OCR
gpu_ocr = 1 # 使用 GPU OCR 時使用的 GPU ID,如果這個值被留空,那麼將會使用 CPU OCR

例項選項

[instance_options] 相關欄位用於指定 MaaCore 例項的選項,詳見 整合文件

[instance_options]
touch_mode = "ADB" # 使用的觸控模式,可選值為 "ADB","MiniTouch","MAATouch" 或者 "MacPlayTools"
deployment_with_pause = false # 是否在部署時暫停遊戲
adb_lite_enabled = false # 是否使用 adb-lite
kill_adb_on_exit = false # 是否在退出時殺死 adb

注意,touch_mode 可選項 MacPlayTools 和連線方式 PlayTools 繫結。當你使用 PlayTools 連線時,touch_mode 將會被強制設定為 MacPlayTools

maa-cli 相關配置

maa-cli 相關的配置需要放在 $MAA_CONFIG_DIR/cli.toml 中。目前其包含的配置如下:

# MaaCore 安裝和更新相關配置
[core]
channel = "Stable" # 更新通道,可選值為 "Alpha","Beta" "Stable",預設為 "Stable"
test_time = 0    # 用於測試映象速度的時間,0 表示不測試,預設為 3
# 查詢 MaaCore 最新版本的 api 地址,留空表示使用預設地址
api_url = "https://github.com/MaaAssistantArknights/MaaRelease/raw/main/MaaAssistantArknights/api/version/"

# 配置是否安裝 MaaCore 對應的元件,不推薦使用,分開安裝可能會導致版本不一致,從而導致一些問題,該選項可能在未來的版本中移除
[core.components]
library = true  # 是否安裝 MaaCore 的庫,預設為 true
resource = true # 是否安裝 MaaCore 的資源,預設為 true

# CLI 更新相關配置
[cli]
channel = "Stable" # 更新通道,可選值為 "Alpha","Beta" "Stable",預設為 "Stable"
# 查詢 maa-cli 最新版本的 api 地址,留空表示使用預設地址
api_url = "https://github.com/MaaAssistantArknights/maa-cli/raw/version/"
# 下載預編譯二進位制檔案的地址,留空表示使用預設地址
download_url = "https://github.com/MaaAssistantArknights/maa-cli/releases/download/"

# 配置是否安裝 maa-cli 對應的元件
[cli.components]
binary = true # 是否安裝 maa-cli 的二進位制檔案,預設為 true

# 資源熱更新相關配置
[resource]
auto_update = true  # 是否在每次執行任務時自動更新資源,預設為 false
backend = "libgit2" # 資源熱更新後端,可選值為 "git" 或者 "libgit2",預設為 "git"

# 資源熱更新遠端倉庫相關配置
[resource.remote]
branch = "main" # 遠端倉庫的分支,預設為 "main"
# 遠端倉庫的 url,如果你想要使用 ssh,你必須配置 ssh_key 的路徑
url = "https://github.com/MaaAssistantArknights/MaaResource.git"
# url = "git@github.com:MaaAssistantArknights/MaaResource.git"
# ssh_key = "~/.ssh/id_ed25519" # ssh 私鑰的路徑,支援展開 ~ 但不支援其他環境變數

注意事項

  • MaaCore 的更新通道中 Alpha 只在 Windows 上可用;
  • 由於 CLI 預設的 API 連結和下載連結都是 GitHub 的連結,因此在國內可能會有一些問題,你可以透過配置 api_urldownload_url 來使用映象。
  • 即使啟動了資源熱更新,你依然需要安裝 MaaCore 的資源,因為資源熱更新並不包含所有的資原始檔,只是包含部份可更新的資原始檔,基礎資原始檔仍然需要安裝。
  • 資源熱更新是透過 Git 來拉取遠端倉庫,如果後端設定為 git 那麼 git 命令列工具必須可用。
  • 如果你想要使用 SSH 協議來拉取遠端倉庫,你必須配置 ssh_key 欄位,這個欄位應該是一個路徑,指向你的 SSH 私鑰。
  • 遠端倉庫的 url 設定目前只對首次安裝資源有效,如果你想要更改遠端倉庫的地址,你需要透過 git 命令列工具手動更改,或者刪除對應的倉庫。倉庫所在位置可以透過 maa dir hot-update 獲取。
  • 遠端倉庫的 url 會根據你本機的語言自動設定,如果你的語言是簡體中文,那麼遠端倉庫的 url 將會被設定為國內的映象 https://git.maa-org.net/MAA/MaaResource.git,在其他情況則會被設定為 Github。如果你在國內但是使用的不是簡體中文,或者在國外使用簡體中文,那麼你可能需要手動設定以獲得最佳的體驗。

JSON Schema

你可以在 CLI 倉庫的 maa-cli/schemas 目錄下找到 maa-cli 的 JSON Schema 檔案,你可以使用這些檔案來驗證你的配置檔案,或者在編輯器中獲得自動補全。
任務檔案的 JSON Schema 檔案為 task.schema.jsonopen in new window
MaaCore 相關配置的 JSON Schema 檔案為 asst.schema.jsonopen in new window
CLI 相關配置的 JSON Schema 檔案為 cli.schema.jsonopen in new window