Files
maa-online/user_config/README.md
T
RRRosmontis 7806524279 feat: 增加每日内存回收与 malloc arena 限制
流媒体会话会在 glibc malloc arena 中留下大量不归还操作系统的冷匿名内存,实测单个
服务可累积到 2.5 GB 并占满整个 swap 文件(33 个 64/128 MB 匿名段,空闲时不增长,
随会话单调抬升)。本次从根因与兜底两侧处理:

- systemd/maa-online-server.service: 设置 MALLOC_ARENA_MAX=2,把线程 arena 数量
  从 8xCPU 压到 2,抑制 arena 膨胀
- systemd/maa-daily.service: 单元结束时经 ExecStopPost 重启 API 服务,回收当次会话残留
- systemd/maa-online-recycle.service, maa-online-recycle.timer: 新增每日 03:59(游戏
  每日刷新前)独立回收定时器,错开更新与日常任务窗口,Persistent=false 避免补跑撞车
- bin/maa-online-can-recycle: 回收守卫,检测日常任务(systemd 单元或手工运行)是否
  进行中,是则跳过回收,避免重启打断任务
- bin/maa-online-install-systemd: 安装并启用新增的回收单元
- README.md, user_config/README.md: 补充内存回收机制与定时器说明
2026-09-19 23:58:54 +08:00

8.6 KiB
Raw Blame History

MAA Online 用户配置

daily.example.toml 是公开模板。执行 install.sh 后会复制为被 Git 忽略的 daily.toml,并建立以下链接:

config/tasks/daily.toml
  -> user_config/daily.toml

使用前必须确认

下面这些参数会改变游戏资源或账号行为。首次运行前请逐项确认。

全局参数

参数 当前值 可填写值/作用
client_type Official 官服用 Official;B服用 Bilibili
startup true 运行任务前自动启动并进入游戏
closedown true 全部任务结束后退出网易云游戏实例

清理理智 Fight

参数 当前值 说明
stage 1-7 必填偏好。要刷的关卡,如 1-7、CE-6、LS-6、AP-5、活动关卡
medicine 0 最多使用多少瓶普通理智药;0 表示不用
medicine_expire_days 0 使用多少天内将过期的理智药;0 表示不用
stone 0 最多碎多少颗源石;强烈建议保持 0
times 999 最大作战次数;理智不足时仍会停止
series 0 0 自动选择最大代理倍率,1 单次代理,其他正数为指定倍率
report_to_penguin false 是否匿名上报掉落至企鹅物流
report_to_yituliu false 是否匿名上报至一图流

修改关卡示例:

stage = "CE-6"

只刷十次:

times = 10

自动公招 Recruit

参数 当前值 说明
refresh true 是否刷新低价值三星标签,会消耗游戏内免费刷新次数
select [5, 4] 允许选择的标签组合等级
confirm [4, 3] 允许自动确认的标签等级;高价值组合不自动确认
first_tags 高级资深干员 三星组合时优先考虑的标签;通常无需修改
extra_tags_mode 0 0 默认;1 尽量选三个标签;2 尽量选择更多高星标签
times 4 本轮最多处理/发起多少次招募,会消耗招聘许可
set_time true 是否自动设置招募时间
expedite false 是否使用加急许可;建议保持 false
preserve_tags 高资、资深、支援机械 识别到任一标签时保留槽位,留给人工确认
recruitment_time 540 分钟 三星和四星组合默认设置为 9 小时
server CN 国服为 CN,国际服可为 US、JP、KR

如果只想识别公招、不自动确认和发起招募:

confirm = []
times = 0

基建换班 Infrast

参数 当前值 说明
mode 20000 已启用一键轮换;0 为自动计算换班,10000 为自定义排班
facility 七类常用设施 要处理的设施及顺序
drones _NotUse 不使用无人机;也可填 Money、CombatRecord、PureGold 等
threshold 0.3 心情低于此比例时参与换班判断
dorm_notstationed_enabled false 是否将未进驻干员放入宿舍
dorm_trust_enabled false 是否优先安排需要提升信赖的干员进宿舍

设施名称:

Mfg          制造站
Trade        贸易站
Power        发电站
Control      控制中枢
Reception    会客室
Office       办公室
Dorm         宿舍
Processing   加工站
Training     训练室

信用商店 Mall

参数 当前值 说明
visit_friends true 访问好友基建获取信用
shopping true 是否自动购买信用商店商品
buy_first 招聘许可、龙门币 优先购买列表,按顺序购买
blacklist 家具零件、加急许可 第二轮购物时不购买的商品
force_shopping_if_credit_full false 信用将溢出时是否无视黑名单;建议保持 false
only_buy_discount false 第二轮是否只购买折扣商品
reserve_max_credit true 信用高于 300 时可继续购买其他非黑名单商品;降至 300 以下后停止第二轮购物
credit_fight false 是否借助战打一局 OF-1 获取次日信用;会产生额外操作
formation_index 0 信用战使用的编队;0 当前编队,1~4 对应编队栏

完全禁止自动购物,但仍访问好友:

visit_friends = true
shopping = false

奖励领取 Award

参数 当前值 说明
award true 领取每日和每周任务奖励
mail true 领取所有邮件奖励
recruit false 是否领取限定池每日免费单抽
orundum false 是否领取幸运墙等活动合成玉奖励

交互式编辑

运行:

bin/maa-online-config

使用数字选择“全局”或某个任务,再选择具体配置项。字符串可以直接输入;列表既可以输入完整 TOML,也可以用逗号分隔,例如:

1-7
招聘许可,龙门币
5,4

在主菜单输入 s 保存。每次保存前会自动备份到 user_config/backups/,随后运行 MAA dry-run;若验证失败会自动回滚。输入 q 退出,Ctrl+C 会取消未保存的修改。

检查配置但不执行

每次修改后先运行:

bin/maa-online run daily --dry-run --batch

出现任务列表且没有 Error,表示 TOML 格式和参数能够被解析。

正式执行

终端一:

bin/maa-online-server

终端二:

curl -X POST http://127.0.0.1:22888/start
bin/maa-online run daily --batch -v \
  --log-file=maa-daily.log

紧急停止

停止当前 MAA:

pkill -INT -f '/runtime/bin/maa'

退出网易云游戏实例:

curl -X POST http://127.0.0.1:22888/exit

示例模板设置

公开示例模板会:

  • 使用基建一键轮换模式;
  • 最多处理四次公招,但保留高资、资深和支援机械标签;
  • 刷 1-7 直到理智不足;
  • 不吃理智药;
  • 绝不碎石;
  • 不使用加急许可;
  • 访问好友;优先购买指定商品,信用高于 300 时不限折扣购买其他非黑名单商品;
  • 不无视信用商店黑名单;
  • 领取每日/每周任务奖励;
  • 领取所有邮件;
  • 任务结束后退出云游戏。

自动定时与断点续跑

仓库提供 systemd 单元,可让日常任务每天自动执行(安装见根目录 README 的「自动定时执行」一节):

单元 作用
maa-online-server.service 云游戏 API 常驻服务,崩溃自动重启,启动前清除代理环境变量,限制 malloc arena 数量
maa-daily.timer 每天 04:00 起随机 0–2 小时触发
maa-online-recycle.timer 每天 03:59(游戏每日刷新前)重启 API 服务以回收内存
maa-update.timer 每周日 03:20 起随机 30 分钟,更新 maa-cli / MaaCore / 资源

bin/maa-online-daily-run 的流程:等待 API 就绪 → 规划剩余任务 → 启动云游戏 → 在停滞看门狗下 执行任务 → 失败则释放云会话并重试(默认最多 3 次)。

内存回收:流媒体会话会在 glibc malloc arena 中留下大量不归还操作系统的冷匿名内存(实测可累积 到 GB 级并占满 swap)。因此 maa-daily.service 结束时会重启 API 服务,另有 maa-online-recycle.timer 每天独立回收一次;回收服务在 bin/maa-online-can-recycle 守卫下运行, 日常任务进行期间会自动跳过,不会打断任务。

看门狗会在出现连续 ScreencapFailed 或日志中的 Disconnected 时中止当前尝试;后端本身也会在信令 WebSocket 被远端关闭、或视频流停滞超过 MAA_ONLINE_STALE_LIMIT_SECONDS(默认 120 秒)时主动拆掉 会话,避免云实例空挂。

断点续跑:第 2 次及之后的重试不再重跑整份 daily.toml。bin/maa-resume-tasks.py 读取前几次尝试 的日志,跳过已出现 <任务类型> Completed 的任务,只把剩余任务写入 config/tasks/daily-resume.toml 后执行。若所有任务都已完成,脚本直接判定成功,不再开新会话。 StartUp 永不跳过:每次连接都是新的云实例,必须先进入游戏。

手动补跑(例如某天中断后,用当天剩余额度把没做完的任务补上):

MAA_ONLINE_RESUME_FROM="artifacts/maa-daily-20260919-053237.log" bin/maa-online-daily-run

查看执行情况:

systemctl list-timers maa-daily.timer
journalctl -u maa-daily.service -n 50
ls -lt artifacts/maa-daily-*.log | head

注意:网易云游戏免费额度有限(常见为每天 30 分钟),而一次完整日常约需 24 分钟,重试次数越多越容易 额度耗尽。断点续跑正是为压缩重试开销而设计的,但仍建议关注额度消耗。