情况

我是让augment改godot脚本, 执行godot --headless -s examples.gd的时候,终端已经打印完信息了, 但是还在不停刷新, 不进行下一步,能卡几分钟

解决办法

1.写一个mcp python脚本代执行返回输出(缺点:自己看不见py输出)

import subprocess,os
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("run_godot")

@mcp.tool(description='执行 Godot 脚本')
def run_godot(script_path: str):
    """
    执行 Godot 脚本。
    参数:
      script_path: GDScript 脚本路径,比如 "examples.gd"
    返回:
      Godot 命令执行的标准输出和返回码
    """
    # 获取 workspaceFolder 环境变量
    workspace_folder = os.environ.get("workspaceFolder")
    if workspace_folder:
        # 切换当前工作目录到 workspace
        os.chdir(workspace_folder)

    # 构造 Godot 命令
    cmd = ["godot", "--headless", "-s", script_path]

    try:
        # 执行命令
        result = subprocess.run(
            cmd,
            capture_output=True,
            text=True,
            encoding="utf-8",
            errors="ignore",
            timeout=30
        )
        return {
            "returncode": result.returncode,
            "stdout": result.stdout.strip(),
            "stderr": result.stderr.strip()
        }
    except subprocess.TimeoutExpired:
        return {"error": "Godot 执行超时 (30s)"}
    except FileNotFoundError:
        return {"error": "未找到 Godot 可执行文件,请确认在 PATH 中"}

mcp json

{
  "mcpServers": {
    "run_godot": {
      "command": "python",
      "args": [
        "D:/godot_runner.py"
      ],
      "env": {"workspaceFolder":"工作文件夹绝对路径, 需用/斜杠"}
    }
  }
}

2.切换VSCODE的终端PowerShell为cmd(可行)

打开命令面板:
Ctrl + Shift + P
输入并选择:
Terminal: Select Default Profile
你会看到可选项,比如:
PowerShell
Command Prompt
Git Bash
Windows Subsystem for Linux (WSL)
选择 Command Prompt ✅ 之后,新打开的终端(Ctrl + `)就是 cmd 了。

草, 思路是对的, cmd确实不会卡住, 但augment插件用的不是vscode的终端, 是它自己开的终端, 改完vscode的,agent执行指令还是用的ps,只能这样,让ai用cmd /C "godot --headless -s examples.gd --quit"
让ai写个bat,起名叫godot.bat,然后放到系统环境变量里, 这样augment执行godot -s *.gd就会用cmd包装一层

@echo off
rem === 拦截 Augment 的 godot 调用 ===
rem 目标:自动在参数末尾添加 --quit 并调用真实 godot.exe

setlocal enabledelayedexpansion

rem Godot 可执行文件路径(根据你的情况修改)
set "GODOT_EXE=D:\environment\godot\Godot_v4.5.1-stable_win64.exe"

rem 组合所有参数
set "ARGS="
:loop
if "%~1"=="" goto afterloop
    set "ARGS=!ARGS! %~1"
    shift
goto loop
:afterloop

rem 打印调试信息(可删)
rem echo [godot.bat] executing: %GODOT_EXE% !ARGS! --quit

rem 调用 cmd /C 确保 PowerShell 输出行为干净
cmd /C "%GODOT_EXE% !ARGS! --quit"

endlocal

3.更改环境变量GODOT_TERMINAL_COLOR(实测不行)

注意!!!可能会导致augment无法正常获取输出, 比如有的时候能获取输出但获取不了报错
执行一次, 当前终端有效, 重启终端失效

$env:GODOT_TERMINAL_COLOR=0

想让它永久生效,有三种方式:
方式 1:写进 PowerShell 配置文件(推荐)
在 PowerShell 启动时自动设置环境变量:
运行:
notepad $PROFILE
如果提示文件不存在,就同意创建一个。
在文件里加这一行:
$env:GODOT_TERMINAL_COLOR = “0”
保存、关闭。
下次打开 PowerShell 时就自动生效。
📦 路径通常是:C:\Users<你的用户名>\Documents\PowerShell\Microsoft.PowerShell_profile.ps1

方式 2:写进系统环境变量(永久全局生效)
适合如果你经常用 Godot CLI。
打开 Windows 搜索 → 输入 “环境变量” → 打开 “编辑系统环境变量”
点击 “环境变量(N)…”
在 “用户变量” 或 “系统变量” 里点 “新建”
名称:GODOT_TERMINAL_COLOR
值:0
确定、确定。
⚠️ 需要重启 PowerShell 或电脑才能看到效果。
所有命令行(cmd、PowerShell、Augment 内 shell)都会继承这个变量。
方式 3:仅在命令前临时设置(一次性)
如果你只是想让某个命令干净输出,不改全局:
$env:GODOT_TERMINAL_COLOR=0; godot --headless -s docs_examples_test.gd --quit
这样变量只在这一条命令内有效,后续不会保留。

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐