vscode中augment执行command后获取stdout很慢
我是让augment改godot脚本, 执行godot --headless -s examples.gd的时候,终端已经打印完信息了, 但是还在不停刷新, 不进行下一步,能卡几分钟, 和chatgpt研究了一下啊,这个现象我一看就懂你说的了。你这个情况其实不是 Augment 卡住,而是 Godot 在终端里输出带有控制字符(ANSI 光标移动 / 覆盖行) 的内容——也就是说,它在不停地「刷新
情况
我是让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
这样变量只在这一条命令内有效,后续不会保留。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)