# MAA-dsh-skill — 完整指引
> 📦 **技能版本:v0.0.3**,适用于 **maa-cli v0.7.5**(对应 **MAA v6.11.0 及以后**)。
>
> 📄 本文档是**完整指引**(原 README,随版本保留为详细说明);简版项目 README(含部署方式)见 [`README.md`](./README.md)。
基于 [MaaAssistantArknights (MAA)](https://github.com/MaaAssistantArknights/MaaAssistantArknights) 官方命令行工具 [maa-cli](https://github.com/MaaAssistantArknights/maa-cli) 构建的 DeepSeek Harness Skill,用于通过 MaaCore 自动化完成《明日方舟》游戏任务。跨平台支持 Windows / Linux / macOS。
> 目前该项目仍处于早期阶段,欢迎随时提交 [issue](https://github.com/trueRISCOacnt/maa-dsh-skill/issues) 与 [PR](https://github.com/trueRISCOacnt/maa-dsh-skill/pulls) !
> MAA 主仓库 README「CLI 支持」一节指向的官方使用指南:
本目录(解压后顶层目录名为 `maa-dsh-skill`)是**可分发的完整 Skill 包**:内含技能本体(SKILL.md、官方文档、JSON Schema、跨平台脚本)与打包发布说明。将整个文件夹拷贝到其它电脑即可安装使用(见下文「在其它电脑上使用」)。
> 💡 **平台说明**:目前该 skill 适用于 **Windows**。理论上该 skill 适用于其它操作系统(Linux/macOS 脚本与路径逻辑已内置),但**尚未验证**。
## 特性
- 🎮 刷关卡(含连战)、集成战略、生息演算、自动抄作业
- 🏗️ 基建收取与换班、公开招募、仓库识别
- 🔌 自定义任务编排(多任务流水线 + 条件变体)
- 🖥️ 模拟器自动检测与连接(MuMu / 雷电 / 蓝叠 / 夜神 / 逍遥)
- 📚 内置 maa-cli 官方文档本地副本(中英)、MAA 集成文档、JSON Schema
- 🧩 跨平台初始化与模拟器检测脚本(`.ps1` / `.sh`)
## 结构
```
maa-dsh-skill/ # 解压后顶层目录(= 安装到 .dsh/skills/ 下的 maa-dsh-skill 目录)
├── README.md # 项目 README(简短,含部署方式占位)
├── README-full.md # 完整指引(本文件)
├── SKILL.md # 技能主文件(frontmatter + 使用说明)
├── PACKAGING.md # 打包发布方法(后续打包时参考)
├── references/ # 官方文档副本 + JSON Schema
│ ├── zh-CN/ # maa-dsh-skill 文档:intro / install / usage / config / faq
│ ├── en-US/ # 同名英文版
│ ├── maa-official/ # MAA 官方连接/设备文档(模拟器支持矩阵、端口表、蓝叠 Hyper-V 配置)+ 集成文档 integration.html(全部任务类型与参数,意图↔指令查表用)
│ └── schemas/ # task / asst / cli 三个 JSON Schema
└── scripts/
├── maa-probe.ps1 / .sh # 环境探测(maa-cli / MaaCore 是否就绪)
├── maa-emulator-detect.ps1 / .sh # 模拟器检测(自动 + 手动定位 + -Probe 实时端口)
└── maa-skill-init.ps1 / .sh # 初始化:探测 MAA/maa-cli/模拟器/权限,读写 skill-config.toml
```
## 部署方式(在其它电脑上使用)
### 方式一:使用 npm 安装(DSH 插件 Bundle)
把本技能作为 **DSH 插件 Bundle** 装入 DSH profile:安装后插件会在 profile 启动时把包内 `SKILL.md` 注册为「运行时技能」,AI 助手即可在会话中直接加载该技能。
**前置条件**:目标电脑已安装 DSH 与 [pnpm](https://pnpm.io/)(`dsh plugin` 通过 pnpm 安装插件)。
#### 第一步:获取包
任选其一:
- 从 Git 仓库:包名 `github:trueRISCOacnt/maa-dsh-skill`
- 从 Github 上下载[最新的 Releases](https://github.com/EricsonXu114514/maa-dsh-skill/releases/latest)
- 本地目录 / tarball:解压 `MAA-dsh-skill-<版本>.zip` 得到的 `maa-dsh-skill/` 目录,或 `npm pack` 生成的 `maa-dsh-skill-<版本>.tgz`;
#### 第二步:安装到 profile
**推荐使用这种方式:**
```bash
dsh plugin --profile web add maa-dsh-skill
```
使用 GitHub 源下载:
```bash
dsh plugin --profile web add github:trueRISCOacnt/maa-dsh-skill
```
如果下载到了本地目录:(./maa-dsh-skill需要替换为解压后的文件夹的文件夹地址)
```bash
dsh plugin --profile web add ./maa-dsh-skill
```
使用 npm tarball 方式安装:
```bash
dsh plugin --profile web add ./maa-dsh-skill-0.0.3.tgz
```
(`web` 为默认 profile 名,首次使用会自动初始化;安装成功且包声明了 `dsh.bundle` 时,`dsh plugin` 会自动把包加入 profile 的 `dsh.profile.bundles` 层列表。)
#### 第三步:检查是否已安装
```bash
dsh plugin --profile web list
```
若可以看到 maa-dsh-skill,则说明成功安装。
启动 profile 后即注册成功(插件从包内读取 `SKILL.md` 注册为运行时技能)。这两行日志默认**不打印**;插件的 `showStartupLogs` 开关等配置见「配置文件与修改」一节。
#### 更新
```bash
dsh plugin --profile web update maa-dsh-skill
```
#### 卸载
```bash
dsh plugin --profile web remove maa-dsh-skill
```
> 💡 npm 方式与复制文件方式(方式二)可并存:若同一技能同时存在于 skill 发现根,文件系统技能优先,插件注册的同名技能会被注册表自动忽略,互不冲突。
### 方式二:直接复制文件([从 GitHub Releases 下载](https://github.com/EricsonXu114514/maa-dsh-skill/releases/latest))
**第一步:下载。** 从本技能项目的 **GitHub Releases** 页面[下载最新版 `MAA-dsh-skill-<版本>.zip`](https://github.com/EricsonXu114514/maa-dsh-skill/releases/latest),解压后得到顶层目录 `maa-dsh-skill/`。
**第二步:安装 Skill。** 在目标电脑上把 `maa-dsh-skill` 文件夹放到 DSH 的 skill 发现根目录之一:
```powershell
# 方式 A(推荐):用户级,所有 DSH 会话可用
# Windows: 复制到 C:\Users\<用户名>\.dsh\skills\maa-dsh-skill
# Linux/macOS: 复制到 ~/.dsh/skills/maa-dsh-skill
cp -r maa-dsh-skill ~/.dsh/skills/maa-dsh-skill
# 方式 B:项目级,仅该项目可用
# 复制到 <项目根>/.dsh/skills/maa-dsh-skill
```
> 目标电脑若配置了 `DSH_HOME`(如 `/opt/dsh`),用户级目录为 `$DSH_HOME/skills/maa-dsh-skill`。`.agents/skills/` 根目录同样兼容(技能发现会扫描 `.dsh/skills` 与 `.agents/skills`)。
在这之后,文件夹的结构应该长这样:
```
%userprofile%/
└──.dsh/
└──skills/
└──maa-dsh-skill/
├── references/
├── scripts/
├── PACKAGING.md
├── README.md
├── README-full.md
└── SKILL.md
```
**第三步:验证。** 在 DSH 对话中发送「列出可用技能」或直接说「加载技能 maa-dsh-skill」;也可让模型运行 `scripts/maa-probe.ps1`(Windows)或 `scripts/maa-probe.sh`(Linux/macOS)探测环境。技能目录更新由 DSH 实时监测,无需重启。
**第四步:准备运行环境(目标电脑)。** 技能本身只是指令集,真正执行需要**两个组件同时就位,缺一不可**:
| 组件 | 作用 | 来源 |
| --- | --- | --- |
| **MAA(MaaCore)** | 核心引擎,提供 `MaaCore.dll` 与 `resource/` 识别资源 | MAA GUI 安装包 / 便携版,或 `maa install` |
| **maa-cli** | 命令行前端,负责解释命令、加载 MaaCore 并执行任务 | `winget install maa-cli`、官方 install.ps1/install.sh、brew、AUR 等 |
> ⚠️ **重要**:只装 MAA GUI 或只装 maa-cli 都无法工作——**两者必须同时下载安装**。MAA 提供引擎与资源,maa-cli 提供命令行入口;没有 maa-cli 就无法以命令行方式驱动自动化,没有 MAA(MaaCore)maa-cli 也只是空壳(`maa version` 会报 MaaCore 未找到)。
安装后运行初始化(`scripts/maa-skill-init.ps1` / `.sh`)——**初始化会同时搜索 MAA 与 maa-cli**(还探测模拟器与权限设置),并把结果保存到 skill 配置文件(Windows:`%USERPROFILE%\.dsh\maa-config\skill-config.toml`;Linux/macOS:`$MAA_CONFIG_DIR/skill-config.toml`);首次会写入,之后每次初始化直接读取,无需重复探测:
> 💡 **省时建议**:首次初始化想省去自动搜索 MAA / maa-cli 的时间与 token?直接传入已知路径即可(Windows `-MaaPath` / `-CliPath`,Linux/macOS `--maa` / `--cli`),详见「配置文件与修改」一节。
1. **MAA(MaaCore)**:未装时运行 `maa install`(Windows 需先装 VC++ 运行库);已装 MAA GUI/便携版可直接复用其 MaaCore(技能 4.6 节,免下载)。
2. **maa-cli 二进制**:Windows `winget install maa-cli` 或官方 install.ps1;macOS `brew install MaaAssistantArknights/tap/maa-cli`;Linux 包管理器或 install.sh(详见技能第 3 节)。
3. **模拟器 + 游戏**:MuMu / 雷电 / 蓝叠 / 夜神 / 逍遥 等官方支持品牌(技能 4.5 节可用 `maa-emulator-detect` 自动检测与手动定位)。
4. **DSH 权限(Full Access)**:见下文专节。
**跨平台注意**:脚本均为双平台版本(`.ps1` 用于 Windows PowerShell,`.sh` 用于 Linux/macOS bash);二进制名差异(winget 安装为 `maa-cli`,其余为 `maa`)技能已内置探测逻辑。
## DSH 权限(Full Access)—— 必读
MAA 自动化需要**通过 ADB 控制模拟器**(截图、点击、启动游戏),这要求 DSH 具备完整权限;受限沙箱下这些操作必然失败(MaaCore 无法 spawn adb 子进程,EPERM;沙箱内启动模拟器会崩溃)。
**请提前在 DSH 中开启完整权限:设置 → 通用设置 → 权限改为 "Full Access"**。
技能会在每次开始运行真实任务前**检测完整权限**:
- 有完整权限 → 直接运行;
- **无完整权限 → 会先提示你**需要 Full Access(说明原因),征得同意后才提权运行;
- 以下两种情况**不再提示**,直接使用完整权限运行:
1. 你在对话中明确告知可以使用完整权限;
2. 初始化时已在 skill 配置文件(`skill-config.toml`)中写明 `[permission] full_access = true`(写入方式见「配置文件与修改」)。
`maa version`、`maa dir`、`maa list`、`maa run --dry-run` 等纯本地/只读命令不需要完整权限。
## 配置文件与修改(集中说明)
本技能涉及两类配置文件,修改都需谨慎:
| 配置文件 | 位置 | 作用 |
| --- | --- | --- |
| **skill 配置文件** | Windows:`%USERPROFILE%\.dsh\maa-config\skill-config.toml`;Linux/macOS:`$MAA_CONFIG_DIR/skill-config.toml` | 由初始化脚本读写:MAA / maa-cli 路径、模拟器、权限开关 |
| **DSH 插件配置** | `~/.dsh/profiles//cordis.patch.yml` | 以 npm / DSH Bundle 方式安装时的插件级配置(如启动日志开关) |
### 1. skill 配置文件(skill-config.toml)
初始化脚本(`scripts/maa-skill-init.ps1` / `.sh`)探测 MAA、maa-cli、模拟器与权限设置后,把结果写入该文件;之后每次初始化直接读取,无需重复探测。可直接编辑该文件修改配置。
**💡 省时建议**:首次初始化时,如果你**知道 MAA 或 maa-cli 所在的位置**(文件夹或二进制路径),直接告诉模型或传给脚本(Windows `-MaaPath` / `-CliPath`,Linux/macOS `--maa` / `--cli`),可**省去自动搜索的时间与 token**;不知道时才由脚本自动搜索常见路径。
该文件 `[permission]` 段包含两个开关:
| 开关 | 默认 | 含义 | 修改方式 |
| --- | --- | --- | --- |
| `full_access` | `false` | 是否同意运行真实任务时使用完整权限 | 运行 `scripts/maa-skill-init.ps1 -FullAccess` 写入,或直接编辑文件改为 `true` |
| `modify_skill` | `false` | 是否允许 harness/agent 更改本 skill 的内容(SKILL.md、README.md、scripts/、references/、schemas/ 等) | 只能由用户明确指示更改;直接编辑文件改为 `true`(初始化脚本只会原样保留该值) |
> 🔒 **技能内容保护(modify_skill)**:默认 `false` 时,除非用户明确要求,harness/agent 不得修改 skill 内的任何文件;该值**只能由用户明确指示更改**,harness/agent 不得自行修改(初始化脚本 `maa-skill-init.ps1` / `.sh` 只会原样保留该值,不会覆盖)。开启方式:在对话中明确指示,或直接编辑 `skill-config.toml` 将 `modify_skill` 改为 `true`。
### 2. DSH 插件配置(cordis.patch.yml)
仅以 npm / DSH Bundle 方式安装(「部署方式 · 方式一」)时使用。编辑 profile 的 `cordis.patch.yml`(如 `~/.dsh/profiles/web/cordis.patch.yml`)可覆盖插件配置。
**启动日志开关(`showStartupLogs`)**:控制启动 dsh 时是否打印 `[maa-dsh-skill] Skill loaded!` 与 `[maa-dsh-skill] skill "maa-dsh-skill" registered ...` 两行日志,**默认 `false`(不打印)**。开启:
```yaml
- id: maa-dsh-skill
config:
showStartupLogs: true
```
保存后重启 dsh 生效;移除该 `config` 块或设为 `false` 即恢复默认。错误/警告类日志(如 SKILL.md 缺失、注册失败)不受此开关影响,始终打印。
## ⚠️ 重要:使用前请先运行一次 MAA
**如果目标电脑上还没有事先运行过 MAA(GUI 或便携版),本技能将以 MAA 的默认配置来执行任务**,可能出现意想不到的事故。目前已知:
- **基建人员被打乱**:默认配置下基建任务按 MAA 内置默认逻辑自动入驻(不是基建换班),可能调动你不希望调整的干员。
- ……
**首次使用本技能前,请先手动打开一次 MAA(GUI)并确认、保存好你的设置**(尤其是基建排班方案、常刷关卡、理智药策略);每次运行真实任务前,也可先执行 `maa run <任务> --dry-run` 校验配置是否符合预期。
## 使用
模型在对话中提及「用 MAA 自动化明日方舟 / 安装配置 MAA / 编写自定义任务」等请求时会自动加载该技能。也可手动触发:
```text
加载技能 maa-dsh-skill
```
技能内含:跨平台安装(winget / brew / AUR / nix / 安装脚本 / cargo)、MaaCore 安装与更新、profiles 与 cli.toml 配置、**模拟器检测与手动定位**(`maa-emulator-detect`,官方优先品牌 MuMu/雷电/蓝叠/夜神/逍遥 + macOS/Linux 设备)、预定义任务(fight / roguelike / copilot / reclamation / startup / closedown 等)、自定义任务与条件编排、复用已安装 MAA、环境变量、日志与排查、以及 DSH 环境下的执行要点(二进制名 `maa` vs `maa-cli` 差异、**一开始就提权**、`--batch` 非交互、后台长任务、`--dry-run` 校验等)。
每次会话开始(初始化)时,模型会运行 `scripts/maa-skill-init.ps1` / `.sh`:**同时搜索 MAA 与 maa-cli**(以及模拟器、权限设置),首次探测结果写入 skill 配置文件(Windows:`%USERPROFILE%\.dsh\maa-config\skill-config.toml`;Linux/macOS:`$MAA_CONFIG_DIR/skill-config.toml`),之后直接读取,无需重复探测。
## 用户默认选项
> 用户指定的默认选项(写入时间:2026-08-28)。运行 MAA 任务时默认采用以下设置;具体任务可在此基础上覆盖。可直接使用的 maa-cli 任务模板见同目录 `templates/default-options.toml`(选项 ↔ 参数对照见 `templates/default-options.md`)。
### 理智作战(Fight)
| 选项 | 值 | MAA 参数 |
| --- | --- | --- |
| 使用药剂 | 0 | `medicine = 0` |
| 使用源石 | 0 | `stone = 0` |
### 基建换班(Infrast)
| 选项 | 值 | MAA 参数 |
| --- | --- | --- |
| 基建模式 | 队列轮换(Rotation) | `mode = 20000` |
| 无人机 | 不使用 | `drones = "_NotUse"` |
| 源石碎片自动补货 | true | `replenish = true` |
| 会客室信息板收取信用 | true | `reception_message_board = true` |
| 进行线索交流 | true | `reception_clue_exchange = true` |
| 赠送线索 | false | `reception_send_clue = false` |
| 训练完成后继续尝试专精当前技能 | false | `continue_training = false` |
> 注:`continue_training` 对应 MAA GUI「基建-训练室是否尝试连续专精」(MaaCore Infrast 任务参数,见 MaaWpfGui `AsstInfrastTask.cs` 序列化的 `continue_training` 键)。队列轮换模式下会跳过控制中枢/发电站/宿舍/办公室,`facility` 建议在 Mfg/Trade/Reception/Processing/Training 中选取。
### 自动肉鸽(Roguelike)
| 选项 | 值 | MAA 参数 |
| --- | --- | --- |
| 开始探索 N 次后停止任务 | 2 | `starts_count = 2` |
| 满级后自动停止 | true | `stop_at_max_level = true` |
## 验证
- frontmatter:`name`(kebab-case)与 `description` 必填,YAML 解析通过
- 发现:DSH watcher 实时监测,`SKILL.md` 写入后目录即时更新
- 脚本:`maa-probe.ps1` 已在 Windows PowerShell 5.1 下实测通过
- 端到端实测(2026-08-16,Windows 11 + MuMu 12 模拟器 + MAA v6.10.5):
| 项目 | 结果 |
| --- | --- |
| `maa version`(复用已装 MAA 6.10.5 的 MaaCore.dll,v6.16.8) | ✅ |
| `maa dir config` / `maa list` / `maa remainder` / `maa convert` | ✅ |
| `maa activity`(联网拉取当前活动数据) | ✅ |
| 自定义任务 `maa run daily --dry-run`(配置校验) | ✅ |
| `maa startup Official`(连接模拟器→拉起游戏→识别主界面,1m12s) | ✅ |
| `maa fight TO-5 --times 1`(真实战斗+掉落结算:装置×1、酮凝集×1 等,3m21s) | ✅ |
实测发现并回写进 SKILL.md 的要点:`adb_path` 需指向实际 adb(MuMu 12 自带 adb 路径)、实际端口以 `MuMuManager info -v all` 为准(本机为 16416 而非 16384)、沙箱中真实游戏任务需完整权限(MaaCore spawn adb 管道子进程会 EPERM)、模拟器主程序在沙箱内启动会崩溃(0xC0000409,需完整权限)、**涉及模拟器/游戏的操作应一开始就提权而非等报错**、复用已安装 MAA 的 junction + 环境变量方案(SKILL.md 4.6 节)。
### 模拟器检测功能实测(新增)
| 场景 | 结果 |
| --- | --- |
| `maa-emulator-detect.ps1` 自动检测(本机 MuMu 12) | ✅ 识别品牌/安装路径/adb/官方端口表 |
| `-Path` 手动定位(MuMu 安装目录) | ✅ 输出品牌/adb/建议配置;无效路径正确报错 exit 1 |
| `-Probe`(实例未运行时) | ✅ 快速跳过端口探测,不挂起 |
| `-Probe`(实例运行时,完整权限) | ✅ MuMuManager 读到实例 `0-1` 端口 16416 → adb 连接成功 → 建议配置自动带 `address = "127.0.0.1:16416"` |
| 沙箱内启动 MuMu 主程序 | ❌ fail-fast 崩溃(0xC0000409)→ 完整权限下正常启动(已写入技能 8.6 节) |
## 打包发布
需要把本技能打包为可分发的 zip 时,参考 [`PACKAGING.md`](./PACKAGING.md)(含 zip 命名规则、顶层目录名 `maa-dsh-skill`、放置位置与完整命令)。
### 更改版本号时需修改的文件与位置
当前版本为 **v0.0.3**。升级 / 发布新版本时,需把下表所有位置的版本号**同步更新**(行号为当前版本的行号,文档变动后请按「位置」描述定位):
| 文件 | 位置 |
| --- | --- |
| `package.json` | `version` 字段(第 3 行)——**必须为纯 semver(如 `0.0.1`),不带 `v` 前缀**:dsh-market 等工具显示已安装版本时会自动加 `v`,若写成 `v0.0.1` 会显示成 `vv0.0.1` |
| `SKILL.md` | frontmatter `metadata.version`(第 6 行) |
| `SKILL.md` | 正文首行「技能版本:…」徽标(第 15 行) |
| `SKILL.md` | 第 11 节「打包发布」示例 `v0.0.3` → `MAA-dsh-skill-v0.0.3.zip`(第 538 行) |
| `README.md` | 首行版本徽标 `v0.0.3`(第 3 行) |
| `README-full.md`(本文件) | 首行「技能版本:…」徽标(第 3 行) |
| `README-full.md`(本文件) | 「部署方式」中 tarball 安装示例 `maa-dsh-skill-0.0.3.tgz`(npm pack 按 package.json 纯 semver 生成,不带 `v`) |
| `PACKAGING.md` | 第 1 节 zip 命名示例 `MAA-dsh-skill-v0.0.3.zip`(第 9 行) |
| `PACKAGING.md` | 第 3 节 PowerShell 示例 `$version = "v0.0.3"`(第 35 行) |
| `PACKAGING.md` | 第 4 节 bash 示例 `version="v0.0.3"`(第 73 行) |
> ⚠️ 注意:`PACKAGING.md` 第 2 节的「版本号快速检查」命令只扫描 `SKILL.md`、`README.md`、`README-full.md` 三个 Markdown 文件,**不覆盖 `package.json` 及 `PACKAGING.md` 中的示例**,改完后请自行核对上表所有位置。
>
> 打包发布时,GitHub Releases 的 tag 与 zip 文件名(`MAA-dsh-skill-v<版本>.zip`)也应使用同一版本号。
## 参考
- maa-cli 仓库与文档:
- MAA CLI 使用指南:
- MAA 集成文档(任务类型与参数):(skill 内已内置本地副本:`maa-cli/references/maa-official/integration.html`,用于意图 ↔ 指令查表)
## 致谢
- 本skill几乎完全由[DeepSeek Harness](https://www.deepseek.com/harness/)使用**deepseek-v4-flash**编写
- [MaaAssistantArknights / MAA](https://github.com/MaaAssistantArknights/MaaAssistantArknights)
- [MaaAssistantArknights / maa-cli](https://github.com/MaaAssistantArknights/maa-cli)
- 官方使用指南: