终端执行异常说明
前言
终端执行对您的环境和配置有较强的依赖,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(启用新终端)。
联系我们
如果您参考这篇文档提供的解决方案仍然无法解决您的问题,可以联系我们。
- 本页导读 (1)
- 前言
- VSCode
- 常见排错方法
- Windows 系统排错方法
- 其他异常情况
- Jetbrains IDEs
- 联系我们