登录

Aeroshell DSL语法说明

Aeroshell 智能任务编排 是为 AI 终端设计的任务执行DSL。 它不是普通脚本语言,而是用于约束 AI 输出、编排远程主机任务、降低误操作风险的安全执行格式,适用于经常需要批量执行并行多机器任务。

它解决什么问题?

自然语言转远程任务

用户只需要说“检查某台服务器磁盘”“批量查看 nginx 状态”, AI 会转换为 Aeroshell 可执行的 TaskScript。

让 AI 输出可控

DSL 限制了合法指令、命令格式、主机定位方式和危险操作, 避免 AI 直接生成不可控的 Shell 脚本。

适合批量运维场景

支持单主机、多主机循环、并行任务, 可用于巡检、状态查询、服务检查、环境初始化等场景。

基础语法结构

一个最小任务通常由三部分组成:定位主机、建立连接、发送命令。 每条 DSL 指令独立一行,便于执行器解析、审计和回放。

FETCHCRED HOST "scan.termdev.com" PROTOCOL "ssh" CONNECT SENDCMD "df -h"

主机定位语法

FETCHCRED 用来获取主机凭据。Aeroshell 会根据用户输入的主机信息, 选择 IP、HOST、NAME 或 UUID。

FETCHCRED IP "192.168.1.10" PROTOCOL "ssh" FETCHCRED HOST "scan.termdev.com" PROTOCOL "ssh" FETCHCRED NAME "生产服务器" PROTOCOL "ssh" FETCHCRED UUID "6b89f8a0-2d8e-4b52-a3d8-1f88a2e0f921" PROTOCOL "ssh"

IP

用户明确输入 IPv4 地址时使用,例如 192.168.1.10。

HOST

域名、普通主机字符串、server-01、prod-db 默认都使用 HOST。

NAME

只有用户明确说“主机名为 xxx”或“服务器名称为 xxx”时才使用 NAME。

场景一:单主机顺序任务

适合检查单台服务器状态、查看磁盘、检查服务、执行一组有先后顺序的命令。

FETCHCRED HOST "prod-web" PROTOCOL "ssh" CONNECT SENDCMD "df -h" SENDCMD "free -h" SENDCMD "systemctl status nginx"

场景二:多主机执行相同任务

多台服务器执行完全相同的命令时,必须使用 FOR。 例如批量巡检磁盘、内存、系统版本、服务状态。

FOR host IN ["prod-web","prod-db","192.168.1.10"] FETCHCRED HOST "{host}" PROTOCOL "ssh" CONNECT SENDCMD "df -h" SENDCMD "free -h" ENDFOR

场景三:多主机执行不同任务

多台主机执行不同命令时,必须使用 PARALLEL。 每个 TASK 都是独立任务,不能共享连接状态。

PARALLEL TASK FETCHCRED HOST "prod-web" PROTOCOL "ssh" CONNECT SENDCMD "systemctl status nginx" END TASK FETCHCRED HOST "prod-db" PROTOCOL "ssh" CONNECT SENDCMD "systemctl status mysql" END ENDPARALLEL

场景四:安全安装软件

TaskScript 支持常见安装场景,但要求命令必须无人值守、可重复执行, 且不能升级系统或执行远程脚本。

FETCHCRED HOST "ubuntu-dev" PROTOCOL "ssh" CONNECT SENDCMD "sudo apt-get update" SENDCMD "sudo apt-get install -y nginx" SENDCMD "sudo systemctl enable nginx" SENDCMD "sudo systemctl restart nginx" SENDCMD "sudo systemctl status nginx"

语法约束

每行一条指令

DSL 中每一行只能表达一个动作,例如 FETCHCRED、CONNECT 或 SENDCMD。 这样执行器可以逐行解析、逐步回显。

命令必须独立

禁止 cmd1 && cmd2、cmd1 ; cmd2、cmd1 || cmd2。 多个操作必须拆成多条 SENDCMD。

禁止交互式操作

禁止 passwd、su -、mysql_secure_installation、read、expect 等需要人工输入的命令。

禁止危险操作

默认禁止删除系统关键目录、格式化磁盘、清空数据库、关闭防火墙、破坏 sshd。

下载必须安全

允许 wget 下载文件,但禁止 curl | sh、wget | sh、bash <(curl) 这类远程脚本直执行。

路径必须明确

禁止使用 ~ 作为路径,要求使用绝对路径,避免不同用户环境导致执行结果不一致。

错误输出

当用户描述缺少必要信息、存在逻辑冲突或涉及危险操作时, DSL 生成器会返回固定错误,避免继续生成不安全任务。

错误: 没有指定主机信息 ERROR: Missing task. ERROR: Logic conflict detected. ERROR: Unsupported or dangerous operation.