好东西
好东西,,谢谢分享
大佬麻烦更新一下,用Get-CimInstance替代wmic命令吧。
另外现在实在想用的佬,可以管理员打开PowerShell,执行命令安装wmic:
DISM /Online /Add-Capability /CapabilityName:WMIC~~~~
试一下这个办法
![]()
win11?试一下这个办法:
![]()
是的win11
感谢,勾选后可以了
大佬啊 支持一下
谢谢佬,mac亲测没问题
好东西,star一下
好东西,感谢大佬!
感谢,真的很好用
感谢佬友, mac arm架构已成功运行
感谢佬开源,mac上也用上了,很好用~
感谢大佬,windows系统反重力已经用上了
star已点,基于楼主项目ai写了个shell脚本
#!/bin/bash
# Antigravity Quota 手动测试脚本
# 用于获取 Antigravity AI 模型的配额信息
set -e
echo "=========================================="
echo " Antigravity Quota 手动测试脚本"
echo "=========================================="
# 1. 查找 language_server 进程
echo ""
echo "[1] 查找 Antigravity language_server 进程..."
# 根据系统自动选择进程名
if [[ "$OSTYPE" == "darwin"* ]]; then
PROCESS_NAME="language_server_macos"
else
PROCESS_NAME="language_server_linux"
fi
# 获取进程信息(完整命令行)
PROCESS_INFO=$(ps -ww -eo pid,args | grep "$PROCESS_NAME" | grep -v grep | grep "antigravity" | head -1)
if [ -z "$PROCESS_INFO" ]; then
echo "❌ 未找到 Antigravity 进程!"
echo " 请确保 Antigravity 正在运行"
echo ""
echo "调试信息 - 所有 language_server 进程:"
ps -ww -eo pid,args | grep "language_server" | grep -v grep || echo "(无)"
exit 1
fi
echo "✅ 找到进程:"
echo " $PROCESS_INFO"
# 2. 提取 PID
PID=$(echo "$PROCESS_INFO" | awk '{print $1}')
echo ""
echo "[2] 进程 PID: $PID"
# 3. 提取 CSRF Token
CSRF_TOKEN=$(echo "$PROCESS_INFO" | grep -oE '\-\-csrf_token[= ]+[a-f0-9-]+' | grep -oE '[a-f0-9-]+$')
if [ -z "$CSRF_TOKEN" ]; then
echo "❌ 未能提取 CSRF Token"
exit 1
fi
echo ""
echo "[3] CSRF Token: ${CSRF_TOKEN:0:8}...${CSRF_TOKEN: -8}"
# 4. 提取 extension_server_port (可选)
EXT_PORT=$(echo "$PROCESS_INFO" | grep -oE '\-\-extension_server_port[= ]+[0-9]+' | grep -oE '[0-9]+$')
echo ""
echo "[4] Extension Server Port: ${EXT_PORT:-"(未指定)"}"
# 5. 获取进程监听的所有端口
echo ""
echo "[5] 检测进程监听的端口..."
# 尝试使用 lsof, ss, 或 netstat
if command -v lsof &> /dev/null; then
PORTS=$(lsof -Pan -p $PID -i 2>/dev/null | grep LISTEN | grep -oE '127\.0\.0\.1:[0-9]+' | cut -d: -f2 | sort -u)
TOOL="lsof"
elif command -v ss &> /dev/null; then
PORTS=$(ss -tlnp 2>/dev/null | grep "pid=$PID," | grep -oE '127\.0\.0\.1:[0-9]+' | cut -d: -f2 | sort -u)
TOOL="ss"
elif command -v netstat &> /dev/null; then
PORTS=$(netstat -tulpn 2>/dev/null | grep "$PID" | grep LISTEN | grep -oE '127\.0\.0\.1:[0-9]+' | cut -d: -f2 | sort -u)
TOOL="netstat"
else
echo "❌ 需要 lsof, ss 或 netstat 命令"
exit 1
fi
echo " (使用 $TOOL 检测)"
echo " 监听端口: $PORTS"
# 6. 测试端口连通性并获取配额
echo ""
echo "[6] 测试端口并获取配额信息..."
API_PATH="/exa.language_server_pb.LanguageServerService/GetUserStatus"
REQUEST_BODY='{
"metadata": {
"ideName": "antigravity",
"extensionName": "antigravity",
"ideVersion": "1.0.0",
"locale": "en"
}
}'
WORKING_PORT=""
RESPONSE=""
for PORT in $PORTS; do
echo ""
echo " 测试端口 $PORT (HTTPS)..."
# 尝试 HTTPS
RESPONSE=$(curl -s -k --max-time 5 \
-X POST \
-H "Content-Type: application/json" \
-H "Connect-Protocol-Version: 1" \
-H "X-Codeium-Csrf-Token: $CSRF_TOKEN" \
-d "$REQUEST_BODY" \
"https://127.0.0.1:$PORT$API_PATH" 2>/dev/null) || true
if [ -n "$RESPONSE" ] && [[ "$RESPONSE" != *"error"* ]] && [[ "$RESPONSE" == *"userStatus"* ]]; then
WORKING_PORT=$PORT
echo " ✅ 端口 $PORT (HTTPS) 连接成功!"
break
fi
# 尝试 HTTP
echo " 测试端口 $PORT (HTTP)..."
RESPONSE=$(curl -s --max-time 5 \
-X POST \
-H "Content-Type: application/json" \
-H "Connect-Protocol-Version: 1" \
-H "X-Codeium-Csrf-Token: $CSRF_TOKEN" \
-d "$REQUEST_BODY" \
"http://127.0.0.1:$PORT$API_PATH" 2>/dev/null) || true
if [ -n "$RESPONSE" ] && [[ "$RESPONSE" != *"error"* ]] && [[ "$RESPONSE" == *"userStatus"* ]]; then
WORKING_PORT=$PORT
echo " ✅ 端口 $PORT (HTTP) 连接成功!"
break
fi
echo " ❌ 端口 $PORT 无响应或响应无效"
done
if [ -z "$WORKING_PORT" ]; then
echo ""
echo "❌ 所有端口测试失败!"
echo " 可能原因:"
echo " 1. Antigravity 未完全启动"
echo " 2. CSRF Token 已过期(重启 Antigravity 后会变化)"
echo " 3. 网络/防火墙问题"
exit 1
fi
# 7. 解析并显示配额信息
echo ""
echo "=========================================="
echo " 配额信息 (原始 JSON)"
echo "=========================================="
echo "$RESPONSE" | python3 -m json.tool 2>/dev/null || echo "$RESPONSE"
echo ""
echo "=========================================="
echo " 配额摘要"
echo "=========================================="
# 使用 Python 解析 JSON(更可靠)
python3 << EOF
import json
import sys
from datetime import datetime
try:
data = json.loads('''$RESPONSE''')
user_status = data.get('userStatus', {})
# 用户信息
print(f"用户邮箱: {user_status.get('email', 'N/A')}")
# 计划信息
plan_status = user_status.get('planStatus', {})
plan_info = plan_status.get('planInfo', {})
print(f"订阅计划: {plan_info.get('planName', 'N/A')}")
# Prompt Credits
monthly = plan_info.get('monthlyPromptCredits', 0)
available = plan_status.get('availablePromptCredits', 0)
if monthly > 0:
remaining_pct = (available / monthly) * 100
print(f"Prompt Credits: {available}/{monthly} ({remaining_pct:.1f}% 剩余)")
# 模型配额
print("\n模型配额:")
print("-" * 60)
model_configs = user_status.get('cascadeModelConfigData', {}).get('clientModelConfigs', [])
for config in model_configs:
label = config.get('label', 'Unknown')
quota_info = config.get('quotaInfo', {})
remaining = quota_info.get('remainingFraction', None)
reset_time = quota_info.get('resetTime', '')
if remaining is not None:
pct = remaining * 100
# 计算重置时间
if reset_time:
try:
reset_dt = datetime.fromisoformat(reset_time.replace('Z', '+00:00'))
now = datetime.now(reset_dt.tzinfo)
delta = reset_dt - now
hours = int(delta.total_seconds() // 3600)
minutes = int((delta.total_seconds() % 3600) // 60)
reset_str = f"{hours}h {minutes}m 后重置"
except:
reset_str = reset_time[:19]
else:
reset_str = "N/A"
# 状态指示符
if pct <= 0:
indicator = "⚫"
elif pct <= 30:
indicator = "🔴"
elif pct <= 50:
indicator = "🟡"
else:
indicator = "🟢"
print(f"{indicator} {label:30} {pct:5.1f}% ({reset_str})")
except Exception as e:
print(f"解析失败: {e}")
sys.exit(1)
EOF
echo ""
echo "=========================================="
echo " 测试完成!"
echo "=========================================="
echo "工作端口: $WORKING_PORT"
echo "CSRF Token: $CSRF_TOKEN"
echo ""
echo "手动 curl 命令:"
echo "curl -s -k -X POST \\"
echo " -H 'Content-Type: application/json' \\"
echo " -H 'Connect-Protocol-Version: 1' \\"
echo " -H 'X-Codeium-Csrf-Token: $CSRF_TOKEN' \\"
echo " -d '$REQUEST_BODY' \\"
echo " 'https://127.0.0.1:$WORKING_PORT$API_PATH'"
2 个赞
如果以后更新版本了,咱们这个是只能手动更新?
这个编辑器使用模型需要代理吗

