Antigravity CLI 非 AES 架构 CPU 启动报错解决方案

解决在老旧的非 AES 指令集 CPU(如 J1900)上运行 Antigravity CLI 时出现 FATAL ERROR: This binary was compiled with aes enabled... 报错的问题。

问题背景

在尝试使用 Google 最新推出的 antigravity-cli (命令 agy) 时,由于当前的服务器 CPU(例如 J1900 蜗牛星际)年代较老,不支持 AES-NI 硬件指令集,导致执行命令时直接崩溃,并出现以下报错:

1
2
FATAL ERROR: This binary was compiled with aes enabled, but this feature is not available on this processor (go/sigill-fail-fast).
Illegal instruction

经过网络排查确认,这是因为 Antigravity CLI 底层使用 Go 语言编写,编译时启用了较高级别的微架构要求(如 GOAMD64=v3 或更高),强制要求 CPU 物理支持 AES 指令集。由于硬件上确实缺失该指令,常规的环境变量无法绕过该底层的验证逻辑。

根据之前修复 Antigravity IDE 崩溃的经验,我们可以继续使用 Intel® Software Development Emulator (SDE) 来拦截并模拟 AES 指令集,从而让 CLI 正常运行。

解决方案记录

以下是具体的操作步骤。需要注意的是,由于是通过 SDE 软件层面模拟硬件指令集,agy 命令的启动和响应速度可能会比正常情况有所下降。

1. 准备 Intel SDE 模拟器

如果你之前在解决 IDE 问题时已经安装过,可以直接跳过此步并使用已有的 sde64

前往 Intel® Software Development Emulator 下载最新的 Linux 压缩包。

1
2
3
4
5
# 在服务器上创建目录并解压
mkdir -p ~/intel-sde
tar -xf sde-external-10.7.0-2026-02-18-lin.tar.xz -C ~/intel-sde --strip-components=1
# 确保 64 位模拟器拥有执行权限
chmod +x ~/intel-sde/sde64

2. 允许进程注入 (修改内核参数)

Intel SDE 需要通过 ptrace 机制来劫持二进制文件。确保你的 Debian 系统允许此操作:

1
2
echo 'kernel.yama.ptrace_scope = 0' | sudo tee /etc/sysctl.d/99-ptrace.conf
sudo sysctl -p /etc/sysctl.d/99-ptrace.conf

3. 劫持并替换 agy 命令行程序

首先,找到 agy 程序的实际安装路径:

1
2
3
4
which agy
# 假设输出为 /usr/local/bin/agy 或 /usr/bin/agy
# 下面我们将获取到的路径赋值给变量
AGY_PATH=$(which agy)

对原始可执行文件进行重命名,作为备份隐藏起来:

1
sudo mv $AGY_PATH ${AGY_PATH}.real

创建一个新的拦截 Wrapper 脚本来顶替原来的 agy

1
sudo vim $AGY_PATH

将以下内容粘贴到脚本中(请确保 SDE_BIN 的路径与你的实际情况相符):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#!/bin/bash
# 你的 Intel SDE 实际路径
SDE_BIN="$HOME/intel-sde/sde64"
# 真实 agy 程序的路径
AGY_REAL="${BASH_SOURCE[0]}.real"

# 核心优化:限制为单核运行,防止 SDE 模拟耗尽 J1900 的所有算力导致系统卡死
export GOMAXPROCS=1
export GODEBUG=http2client=0,tls13=0

# 使用 -skx 参数模拟一个完整的 Skylake-X 架构(包含 AES 支持)
exec "$SDE_BIN" -skx -- "$AGY_REAL" "$@"

赋予这个新的 Wrapper 脚本可执行权限:

1
sudo chmod +x $AGY_PATH

测试与回滚策略

测试运行

完成上述操作后,直接在终端中运行:

1
agy --version

如果能正常输出版本号且没有再次出现 Illegal instruction 报错,则说明劫持成功,可以正常使用 CLI 功能了。

🚨 快速回滚方法

如果你发现该方案导致机器负载过高卡死,或者想要恢复原始状态,只需执行以下两条命令,将备份的原始文件还原即可:

1
2
AGY_PATH=$(which agy)
sudo mv ${AGY_PATH}.real $AGY_PATH
转载请保留本文转载地址,著作权归作者所有