前言¶
在 DSH 里让 agent 跑《明日方舟:终末地》的 MaaEnd 日常,难点往往不在「能不能调 HTTP」,而在 MXU 和界面点击不是同一条路径:缺 agent_configs、窗口未 connect、资源未 load 时,任务会在极短时间内全部失败。单独写脚本调 tasks/start,还要自己处理成败判定、静音和关游戏时序。下面介绍维护者 Aression 的客户端插件 dsh-maend(仓库 Aression/dsh-maend):不改 MaaEnd 本体,通过本机 MXU Web 服务(默认 127.0.0.1:12701/api/*)接入 DSH,提供 agent 工具、Web 看板,以及「启动静音、任务链全部成功后再关游戏」两类 hook。
这是什么¶
dsh-maend 是 DeepSeek Harness 插件(npm 包名 dsh-maend,当前资料中版本 0.2.0,MIT 许可证)。它面向已在 Windows 上使用 MaaEnd(MXU,资料要求 v2.35.x)的玩家与 DSH 用户:在 DSH 进程内注册 maend_* 工具与 /api/dsh-maend/* 路由,并注入侧边栏 MaaEnd 面板;MaaFramework 与 MXU 仍跑在本机,插件只做 HTTP/WebSocket 客户端与选项编译(pipeline_override 与 MXU 前端一致)。
社区目录页:skillhub.cn/plugins/Aression/dsh-maend(独立站点,与 DeepSeek / 幻方无官方从属关系)。
核心功能¶
Agent 工具(10 个 maend_*)¶
| 工具 | 作用 |
|---|---|
maend_status |
实例、运行状态、任务、定时策略、hooks、安装目录、日志(只读) |
maend_run |
启动任务链(可按 taskNames 取子集;默认应用 hooks;运行前自检见下文) |
maend_stop |
停止当前任务链 |
maend_logs |
读 MXU 日志 |
maend_screenshot |
抓取当前游戏画面 PNG |
maend_power |
mute / unmute / screenoff;关机 / 重启 / 休眠需 confirm |
maend_kill_game |
关闭游戏进程(默认 Endfield.exe,其它进程名需 confirm) |
maend_task_toggle |
开关某任务并回读校验 |
maend_hooks |
读 / 改 hooks |
maend_launch |
拉起 MaaEnd.exe --autostart -i <实例名> [--quit-after-run] |
maend_run 会自动补齐界面「开始」前的准备步骤(agent_configs + PI_*、connect、resource/load、清理残留 agent),返回体中的 connection.steps 可核对实际动作。
看板面板¶
DSH Web UI 侧边栏 MaaEnd → 中央面板:实例下拉、连接 / 运行状态、开始 / 停止、任务列表开关(含 MXU 内置特殊任务)、hooks 开关、右侧实时画面与最近日志。实时画面经插件代理 GET /api/dsh-maend/screenshot,转发 MXU 的 GET /api/maa/instances/:id/screenshot。面板路由受 DSH 会话鉴权保护,外部未登录访问 /api/dsh-maend/status 会得到 401,属预期行为。
Hooks:启动静音与成功后才关游戏¶
Hooks 配置保存在 ~/.dsh/maend-hooks.json(与 MXU 自身配置无关),默认字段如下:
{
"muteOnStart": true,
"unmuteOnFinish": true,
"killGameOnFinish": true,
"webhookUrl": "",
"processName": "Endfield.exe"
}
- 启动静音:在链首注入 MXU 特殊任务
MXU_POWER{mute}(系统默认播放端点静音),结束后可按配置unmute。 - 自动关游戏:任务链全部跑完后单独执行
MXU_KILLPROC{Endfield.exe},且只认 WebSocket 里各task_id的Succeeded;失败或中止不会关游戏。设计上不把MXU_KILLPROC放在链内,因为 MXU 任务链 fail-forward,链尾关进程会在「全失败」时仍被当成跑完。
成败判定订阅 MXU WebSocket 的 Tasker.Task.Succeeded / Failed,不依赖可能残留的 task_run_state.statuses。
可选辅助脚本¶
若希望在 MaaEnd 自己的任务列表里也能看到、排序静音相关条目,可使用仓库内脚本(注意:add-special-tasks.mjs --kill 写入链内的关游戏任务为无条件执行,与插件 hook 的成功门控不同):
node scripts/add-special-tasks.mjs --instance <id|name> --dry
node scripts/add-special-tasks.mjs --instance <id|name>
node scripts/add-special-tasks.mjs --instance <id|name> --kill
node scripts/remove-special-tasks.mjs --instance <id|name> --task __MXU_KILLPROC__ --dry
node scripts/remove-special-tasks.mjs --instance <id|name> --task __MXU_KILLPROC__
环境要求¶
- Windows 10/11(MXU Win32 控制器仅 Windows;插件本身依赖 Node.js ≥ 20,DSH 自带运行时即可)
- MaaEnd v2.35.x,且 本地 Web 服务已开启:MaaEnd → 设置 → 通用 → 本地 Web 服务(默认端口
12701) - 本机已配置 DeepSeek Harness profile(
~/.dsh/profiles/<profile>/)
安装与启用¶
官方 README 以「本地 bundle」安装到当前 DSH profile,步骤如下。
- 将仓库克隆到本机任意目录(示例路径可替换):
git clone https://github.com/Aression/dsh-maend.git D:\devspace\dsh-maend
- 在 DSH 会话中让 agent 执行(或等价调用
plugin_manager工具):
plugin_manager { action: "install_bundle", target: "link:D:\\devspace\\dsh-maend" }
返回 application: "applied" 即生效;刷新 DSH 页面后应出现侧边栏 MaaEnd 图标。资料说明无需 pnpm install、无需构建(client 为免构建 ESM)。
安装前建议自行阅读仓库源码与 MIT 许可证;插件以当前 DSH 进程权限访问本机 MXU 与文件系统。
配置要点¶
MaaEnd 安装目录按顺序探测(命中即用,并写入 ~/.dsh/maend-install.json):环境变量 MAAEND_HOME / MAAEND_INSTALL_DIR → 插件 installDir → 上次成功目录 → 运行中 MXU /api/interface 的 basePath → 运行中 MaaEnd.exe 路径 → 常见下载目录下名称含 maend 的文件夹。
可选插件配置项:
| 键 | 默认 | 说明 |
|---|---|---|
baseUrl |
http://127.0.0.1:12701 |
MXU Web 服务地址 |
installDir |
自动探测 | 含 MaaEnd.exe 的安装目录 |
instance |
第一个实例 | 默认实例 id |
cwd |
安装目录 | tasks/start 工作目录 |
面板或 maend_hooks 可改 hooks;非默认 MXU 端口时在插件配置中改 baseUrl。
典型用法¶
- 确认 MaaEnd 已开 Web 服务,游戏窗口可由 MXU 连接。
- 安装 bundle 并刷新 DSH,打开 MaaEnd 面板确认实例与连接状态。
- 在对话中让 agent 调用
maend_status查看任务与 hooks,再用maend_run跑日常链;需要时用maend_stop中止。 - 需要无人值守时打开 hooks:启动静音、结束后取消静音、仅在全链成功后关游戏;也可
maend_screenshot/ 看板实时画面核对进度。
资料还提醒:MXU 的「成功」包含「按计划跳过」(日常已完成、定时未命中),判断是否真正执行需结合日志,不能只看状态码。
适用场景与注意¶
适合:已在 Windows 用 MaaEnd 做终末地自动化,希望在 DSH 里用自然语言或 agent 编排日常,并要在同一 Web UI 看状态、画面和日志的用户。
注意:
- 平台与 MXU 绑定 Windows;Linux/macOS 上无法按资料要求完整使用。
- 插件不修改 MaaEnd 安装包,但会通过 API 启停任务、改任务开关、静音与结束进程,使用前确认 hooks 与
processName符合你的习惯。 - 社区目录星标等统计以站点 / GitHub 页面为准;功能细节以 README 与仓库
package.json为准。
结尾¶
dsh-maend 把 MaaEnd 的 MXU Web 能力收敛进 DSH:agent 工具负责「能跑起来、判得准」,看板负责「看得见、点得着」,hooks 把静音和关游戏放进与任务链一致的调度语义里。进一步了解可访问目录页 skillhub.cn/plugins/Aression/dsh-maend 与源码 github.com/Aression/dsh-maend。