NFM 使用 Python 编写。
UI 部分使用 NiceGUI 开发,MaaFw 部分使用 MaaFw Python Binding 开发。
NFM 采用 {MaaFw 大版本}.{UI 大版本}.{UI 小版本}
的规则进行版本号命名。 NFM 的2.x.x 版本理论上可以兼容全部基于 Maa 2.0 大版本开发的应用。
如果你是纯 pipeline 开发者,你需要确保自己的 pipeline
与 interface.json
已经符合 MaaFw 2.0 的开发要求。
如果你是 Python 集成开发者,推荐始终基于 MaaFw 的最新版本开发应用。如果你有停留在特殊版本的需求,建议 MaaFw版本 不要低于 2.2.0 。
NFM 使用的 MaaFw 将尽可能地保持最新。如果这无法满足你的开发需求,可修改依赖版本后自行编译应用。
./res
文件夹用于存放 MaaFw 的资源文件。请保持文件结构为./res/{应用名称}/...
。
需要注意的是, NFM 不会读取 interface.json
内的 name
字段,而是直接使用文件夹名称作为应用名。
NFM 将尝试读取对应应用路径下的 interface.json
中的 author
, url
与 message
字段。如不存在对应字段或对应字段为空,则显示 Undefined
。
NFM 支持使用 MaaFw Python Binding 开发的自定义任务。你可以参照以下思路注册自定义任务。
NFM 是这样实现自定义任务的:
- 传入应用名称 (如 Sample)
- 根据应用名称,读取
utils/custom.py
中对应的自定义任务列表。NFM 将获取class Sample: recs: list[dict[str, CustomRecognition]] | None = [{"CustomA": sample.CustomA()}] acts: list[dict[str, CustomAction]] | None = [{"CustomB": sample.CustomB()}]
recs
与acts
两个 list[dict] 。 - 加载资源时,遍历两个 list ,依次注册自定义任务。
custom.py
中的类名建议与 .res/{应用名称}
中的 应用名称
保持一致,以便二次开发。