前言
终端执行对您的环境和配置有较强的依赖,VSCode 和 JetbrainsIDEs 对不同操作系统的终端支持也有一定限制和兼容性问题,因此您在使用灵码 Agent 模式的过程中可能会遇到无法正确唤起终端执行命令、无法拿到执行输出等问题。
VSCode
常见排错方法
灵码 VSCode 插件依赖 VSCode Shell 集成 API 调用终端运行命令并读取其输出,该 API 是 VSCode 1.93 版本提供的新功能,目前仅支持以下类型的 shell,因此您需要保证 VSCode 版本大于 1.93 并且默认终端配置为如下类型之一:
- Linux/macOS: bash, fish, pwsh, zsh 
- Windows: Git Bash, pwsh 
如果遇到终端执行异常问题,可以依次按以下方法尝试解决:
方法 1:升级 VSCode
请检查您使用的 VSCode 版本,保证是 1.93 及以上:
- 打开 VSCode; 
- 按下 - Cmd + Shift + P(Mac)或- Ctrl + Shift + P(Windows/Linux);
- 输入 - Code: Check for Updates,然后选择它;
- 更新完成后重新启动 VSCode。 
方法 2:配置 VSCode 支持的 Shell
- 打开 VSCode; 
- 按下 - Cmd + Shift + P(Mac)或- Ctrl + Shift + P(Windows/Linux);
- 输入 - Terminal: Select Default Profile,然后选择它;
- 选择一个受支持的 Shell: - Linux/macOS: bash, fish, pwsh, zsh 
- Windows: Git Bash, pwsh 
 
- 完全退出 VSCode,然后重新打开 VSCode。 
方法 3:手动安装 Shell 集成
如果在尝试上述排错步骤后仍然遇到问题,您可以尝试手动安装 Shell 集成。
例如,如果您使用 zsh:
- 将以下行添加到您的 - ~/.zshrc文件中:- [[ "$TERM_PROGRAM" == "vscode" ]] && . "$(code --locate-shell-integration-path zsh)"
- 保存文件; 
- 完全退出 VSCode,然后重新打开 VSCode。 - 如果您使用Bash ( - ~/.bashrc):
[[ "$TERM_PROGRAM" == "vscode" ]] && . "$(code --locate-shell-integration-path bash)"如果您使用PowerShell ($Profile):
if ($env:TERM_PROGRAM -eq "vscode") { . "$(code --locate-shell-integration-path pwsh)" }如果您使用Fish (~/.config/fish/config.fish):
string match -q "$TERM_PROGRAM" "vscode"; and . (code --locate-shell-integration-path fish)如果您使用其他类型的 Shell,可参考文档:手动安装 Shell 集成。
仍有问题?
如果您尝试过以上方法,仍遇到偶现的无法获取终端输出的情况,可以尝试关闭(点击 终止终端 按钮)无法获得输出的终端窗口,然后重新运行该命令。这将刷新终端连接,大概率能解决问题。
Windows 系统排错方法
如果您使用的是 Windows,并且在尝试了上述步骤后仍然遇到问题,您可使用如下方法:
Git Bash
您可以尝试使用 Git Bash。Git Bash 可以在 Windows 上提供类似 Unix 的命令行体验,如需使用 Git Bash,您需要:
- 从 https://git-scm.com/downloads/win 下载并运行 Git for Windows 安装程序; 
- 退出并重新打开 VSCode; 
- 按下 - Ctrl + Shift + P打开命令面板;
- 输入 - Terminal: Select Default Profile,然后选择它;
- 选择“Git Bash”。 
PowerShell
如果您仍然希望使用 PowerShell,请确保您使用的是更新后的版本(至少 v7+)。
- 通过运行以下命令检查当前的 PowerShell 版本: - $PSVersionTable.PSVersion
- 如果您的版本低于 7,请更新 PowerShell。 
默认情况下,出于安全原因,PowerShell 限制脚本的执行。您可能还需要调整 PowerShell 的执行策略:
- 以管理员身份打开 PowerShell:按下 - Win + X并选择“Windows PowerShell(管理员)”或“Windows 终端(管理员)”;
- 通过运行以下命令检查当前的执行策略: - Get-ExecutionPolicy- 如果输出已经是 - RemoteSigned、- Unrestricted或- Bypass,则您可能不需要更改执行策略。这些策略应允许 Shell 集成正常工作;
- 如果输出是 - Restricted或- AllSigned,则您可能需要更改策略以启用 Shell 集成。
 
- 通过运行以下命令更改执行策略: - Set-ExecutionPolicy RemoteSigned -Scope CurrentUser- 这将仅为当前用户设置 - RemoteSigned策略,这比系统范围更改更安全。
- 确认更改:在提示时输入 - Y并按 Enter 键;
- 验证策略更改:再次运行 - Get-ExecutionPolicy以确认新的设置;
- 重新启动 VSCode 并再次尝试 Shell 集成。 
WSL
如果您使用 WSL,尝试添加 . "$(code --locate-shell-integration-path bash)" 到你的 ~/.bashrc,然后重启后重试。
其他异常情况
终端输出异常
如果您看到带有矩形、线条、转义序列或控制字符的异常输出,这可能与终端自定义工具有关。常见的罪魁祸首包括:Powerlevel10k(一种为提示符添加视觉元素的 zsh 主题)、Oh My Zsh、Fish shell 主题等。
如何排错:
- 在您的 Shell 配置文件中临时禁用这些工具(例如,Zsh 的 - ~/.zshrc文件);
- 如果问题解决,逐步重新启用功能以识别冲突的工具 
例如,如果您在 Zsh 中使用 Powerlevel10k,可以通过注释掉 ~/.zshrc 文件中的相关行来禁用它:
# 注释掉 Powerlevel10k 的源代码行
# source /path/to/powerlevel10k/powerlevel10k.zsh-theme如果禁用这些自定义解决了问题,您可能需要找到与 VSCode Shell 集成功能兼容的替代配置。
Jetbrains IDEs
全新 Beta 版终端从 2024.1 版 IDE 开始在新 UI 中提供,灵码 Jetbrains 端插件暂不支持新版终端模式。

可通过以下方式关闭新终端:
方式 1: 在 Settings 或 Preferences 中, 打开 Tools - Terminal - Enable New Terminal(工具 - 终端 - 启用新终端)中取消勾选新终端;
方式 2:在 Terminal(终端)窗口标题中,单击图标,取消勾选 Enable New Terminal(启用新终端)。
联系我们
如果您参考这篇文档提供的解决方案仍然无法解决您的问题,可以联系我们。