DreamingFish Updater/远程管理与 AI agent

远程管理与 AI agent

这一页讲两件进阶的事:一是在自己的 Windows 电脑上,用桌面版管理服务器上的终端版;二是把日常维护交给脚本或者 AI agent。都不是必需的,用得上的时候再来看就好。

一、在自己电脑上用桌面版管理服务器#

管理端放在 Linux 服务器上的话,平时要先在自己电脑上建 SSH 隧道,再打开浏览器才能管理。如果你自己的电脑是 Windows,也可以装一个桌面版,让它帮你连过去:SSH 转发它会自己建好,打开的就是熟悉的管理界面,读写的是服务器上的项目和文件。

先准备好这几件事#

  1. 服务器上的终端版是 0.2.1 或更新的版本,并且已经启动了 Web 管理界面(首次引导按 Y,或者交互式命令行主菜单 [10])。建议用 tmux 挂着,断开 SSH 也不会停。
  2. 自己电脑上能直接 SSH 登录服务器。打开 PowerShell,运行 ssh mc-server(或者 ssh 用户名@服务器地址)试一下,能进去就行。第一次连接时的主机身份确认,也要先在这里完成。
  3. 最好配好密钥登录。桌面版借用的是你电脑上的 OpenSSH 配置和密钥,不会弹出终端让你输入 SSH 密码。

想用 mc-server 这样的短名字,可以在自己电脑的 C:\Users\你的用户名\.ssh\config 里写一段配置(没有这个文件就新建一个):

SSH 配置 · C:\Users\你的用户名\.ssh\config
Host mc-server
    HostName 你的服务器地址
    User 用户名
    IdentityFile ~/.ssh/id_ed25519
i
还没配过 SSH 密钥?

在 PowerShell 里运行 ssh-keygen -t ed25519,一路回车,会在 C:\Users\你的用户名\.ssh\ 下生成 id_ed25519 和 id_ed25519.pub。把 .pub 文件里的那一行,追加到服务器上 ~/.ssh/authorized_keys 的末尾,再试一次 ssh mc-server,不用输密码就能进去就对了。

在桌面版里连接#

  1. 打开桌面版,在连接页上方选“SSH 连接”,填一个好认的连接名称。
  2. “SSH 配置名称或 user@host”填刚才的 mc-server,或者 用户名@服务器地址;“远程管理端口”填服务器上 Web 管理界面的端口,默认 18080。
  3. 点“连接工作区”,再用服务器上的管理账户登录。之后看到的文件、项目和发布记录,都是服务器上的那一份。
选“SSH 连接”,填 SSH 配置名称和远程管理端口,点“连接工作区”

连接记录只保存名称、地址、目录和端口,不保存登录密码和私钥。下次打开桌面版,在左边选这个连接就能直接进去。

如果你已经给服务器上的 Web 管理界面配好了 HTTPS 反向代理(比如 https://admin.example.com/),或者自己已经把端口转发到了本机,也可以选连接页上方的“管理地址”,直接填这个地址,桌面版就不再另外建 SSH 转发了。

断开和退出#

在连接页点正在运行的工作区旁边的“×”,只是断开连接,服务器上的终端版和下载服务照常运行,不影响玩家更新。关掉窗口会收进系统托盘,选“退出桌面端”才会真正结束程序。如果网络断了,或者 SSH 连接意外中断,桌面版会回到连接页,那里可以重新打开,也能点“运行日志”看看是哪里出了问题。

二、把维护交给脚本或 AI agent#

终端版除了交互式命令行,还有一套参数式命令:不进菜单,把要做的事直接写在一条命令里。这样就能写进脚本,也能交给会在终端里执行命令的 AI agent:你告诉它要做什么,它通过 SSH 登录服务器,替你把命令跑完。

参数式命令怎么用#

读取文件列表、导入或移出文件、设置维护方式、检查并发布、生成部署包、查看和撤销操作记录,都有对应的命令。加上 --json,结果就会变成程序好读的 JSON;有确认步骤的操作,要明确加上 --yes 才会直接执行。比如先看看文件和改动,再发布:

Linux · 参数式命令
./dfs-admin --json project files dreamhaven
./dfs-admin --json project scan dreamhaven
./dfs-admin --json project publish dreamhaven --version 1.0.1 --changelog "更新模组与配置" --yes

Windows 把 ./dfs-admin 换成 DreamingFishAdmin.exe 即可。这些命令走的是和网页管理界面、桌面版同一套检查:签名、预览是否过期、玩家端兼容性一样都不会少。发布时如果有文件被移除,要用 --removed-files DELETE(移除玩家副本)或 --removed-files RELEASE(留给玩家)明确说清楚怎么处理。

想做的事命令
看文件、导入或移出文件project files(--import、--remove)
设置维护方式、可选内容、问题版本project policy(preset、group、withdraw、correct 等)
检查改动、发布、回滚project scan、project publish、project rollback
查看发布历史project releases
操作记录、撤销、恢复发布设置project operations(--undo、--restore-published)
发布玩家端程序、生成部署包player publish、project deployment
导出外部托管目录project export-static
加密备份与恢复backup create、backup restore

不记得参数的时候,在命令后面什么都不加直接运行,会打印出这条命令的用法;dfs-admin project 会列出全部项目子命令。管理数据不在默认位置的话,加上 --data /绝对路径/data 指定。

让 AI agent 帮你维护#

推荐让 agent 先看、再改,发布之前停下来让你确认:

  1. 先看:project files 看现在有哪些文件,project scan 看准备发布的改动。
  2. 再改:把新文件放进标准目录,或者用 project files --import 导入;需要的话用 project policy 调整维护方式。
  3. 发布前给你过目:让 agent 把 project scan 的预览列出来,新增了什么、更新了什么、移除了什么,你看过没问题,它再执行 project publish ... --yes。
  4. 改错了就撤回:project operations 能看到每一步操作,--undo 操作ID 撤销某一步,--restore-published 把维护设置恢复成当前发布的样子。

交代任务的时候,可以直接这样说:

交给 agent 的任务(示例)
通过 ssh mc-server 登录管理服务器,在 /opt/dfs-admin 里用 ./dfs-admin 的参数式命令(加 --json)维护项目 dreamhaven:
把我上传到 ~/upload 的模组放进标准目录的 mods 里,同一个模组的旧版本删掉。
然后扫描改动,先把预览列给我看;等我确认后再发布 1.0.2,被删掉的旧版本选择移除玩家副本,更新说明写“更新模组”。
除此之外不要动别的文件。
!
交给 agent 之前想一想

agent 用的是你登录服务器的权限,你能做的事它都能做。签名私钥就在管理端的 data 里,别让它把 data 复制到别的地方;发布前让你确认的那一步,也最好别省。