dsh-maend:在 DeepSeek Harness 里驱动 MaaEnd 日常与看板

前言

在 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,步骤如下。

  1. 将仓库克隆到本机任意目录(示例路径可替换):
git clone https://github.com/Aression/dsh-maend.git D:\devspace\dsh-maend
  1. 在 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。

典型用法

  1. 确认 MaaEnd 已开 Web 服务,游戏窗口可由 MXU 连接。
  2. 安装 bundle 并刷新 DSH,打开 MaaEnd 面板确认实例与连接状态。
  3. 在对话中让 agent 调用 maend_status 查看任务与 hooks,再用 maend_run 跑日常链;需要时用 maend_stop 中止。
  4. 需要无人值守时打开 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。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜