Help us learn about your current experience with the documentation. Take the survey.

Code Suggestions 故障排除

  • Tier: Premium, Ultimate
  • Add-on: GitLab Duo Core, Pro, or Enterprise, GitLab Duo with Amazon Q
  • Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated

使用 GitLab Duo Code Suggestions 时,您可能会遇到以下问题。

您可以运行 健康检查 来测试您的实例是否满足运行 Code Suggestions 的要求。

有关 GitLab Duo 故障排除的更多信息,请参阅:

建议未显示

如果建议未显示,请确保您:

如果建议仍未显示,请尝试针对不同 IDE 的以下故障排除步骤:

Code Suggestions 返回 401 错误

Code Suggestions 依赖于许可证令牌,该令牌 将您的订阅与 GitLab 同步

如果令牌过期,GitLab Duo Code Suggestions 将在令牌过期时返回以下错误, 状态为 401

语言服务器中的令牌验证失败:
(检查令牌失败:错误:获取个人访问令牌信息

如果 GitLab 可以访问 云服务器,请尝试 手动同步您的许可证

身份验证故障排除

问题可能是由最近的身份验证更改引起的, 特别是令牌系统。要解决此问题:

  1. 从您的 GitLab 账户设置中删除现有的个人访问令牌。
  2. 使用 OAuth 重新授权您的 GitLab 账户。
  3. 使用不同的文件扩展名测试 Code Suggestions 功能,以验证问题是否已解决。

VS Code 故障排除

以下文档是针对 VS Code 的 Code Suggestions 特定故障排除。

有关 VS Code 的非 Code Suggestions 故障排除,请参阅 VS Code 的 GitLab Workflow 扩展故障排除

VS Code 或 GitLab Web IDE 中未显示建议

如果您使用的是 GitLab 自托管,请确保已启用 GitLab Web IDE 的 Code Suggestions。相同的设置适用于 VS Code 作为本地 IDE。

  1. 在左侧边栏中,选择 扩展 > GitLab Workflow
  2. 选择 设置 settings ),然后选择 扩展设置
  3. GitLab > Duo Code Suggestions 中,选择 GitLab Duo Code Suggestions 复选框。

查看 Code Suggestions 日志

如果 IDE 已启用 Code Suggestions,但建议仍未显示:

  1. 在您的 IDE 中,在 GitLab Workflow 扩展设置 中,启用 GitLab: Debug
  2. 在顶部菜单中,选择 视图 > 输出 以打开底部面板,然后:
    • 在命令面板中,选择 GitLab: Show Extension Logs
    • 在底部面板的右侧,选择下拉列表以过滤日志。选择 GitLab Workflow
  3. 在 GitLab Workflow 扩展设置 中,清除并重新选择 GitLab Duo Code Suggestions 复选框。

禁用代码生成结果的流式传输

默认情况下,代码生成会流式传输 AI 生成的代码。流式传输将生成的代码 增量发送到您的编辑器,而不是等待完整的代码片段生成。 这提供了更交互式和响应式的体验。

如果您希望在代码生成结果完成时才看到它们,可以关闭流式传输。 禁用流式传输意味着代码生成请求可能会被感知为 需要更长时间才能解决。要禁用流式传输:

  1. 在 VS Code 中,在顶部栏中,转到 代码 > 设置 > 设置

  2. 在右上角,选择 打开设置 (JSON) 以编辑您的 settings.json 文件:

    VS Code 右上角的图标,包括 ‘Open Settings.’

  3. 在您的 settings.json 文件中,添加此行,如果已存在则将其设置为 false

    "gitlab.featureFlags.streamCodeGenerations": false,
  4. 保存您的更改。

错误:直接连接失败

为减少延迟,Workflow 扩展尝试直接将建议完成请求发送到 GitLab Cloud Connector, 绕过 GitLab 实例。此网络连接不使用 VS Code 扩展的代理和证书设置。

如果您的 GitLab 实例不支持直接连接,或者您的网络阻止扩展连接到 GitLab Cloud Connector,您可能会在日志中看到以下警告:

无法从 GitLab 实例获取直接连接详细信息。
代码建议请求将发送到 GitLab 实例。

此错误意味着您的实例要么不支持直接连接,要么配置错误。

如果您看到此错误,扩展无法连接到 GitLab Cloud Connector,并且正在回退到使用您的 GitLab 实例:

代码建议的直接连接失败。
代码建议请求将发送到您的 GitLab 实例。

通过您的 GitLab 实例的间接连接大约慢 100 毫秒,但其他方面工作相同。 此问题通常是由网络连接问题引起的,例如您的局域网防火墙或代理设置。

JetBrains IDEs 故障排除

以下文档是针对 JetBrains IDEs 的 Code Suggestions 特定故障排除。

有关 JetBrains IDEs 的非 Code Suggestions 故障排除,请参阅 JetBrains 故障排除

JetBrains IDEs 中未显示建议

  1. 工具 > GitLab Duo 菜单中,选择 验证设置。确保健康检查通过。
  2. 验证您的 JetBrains IDE 是否原生支持您正在处理的文件的语言。 转到 设置 > 语言和框架 以查看您的 JetBrains IDE 支持的完整语言和框架列表。

错误:无法找到到请求目标的有效认证路径

GitLab Duo 插件在连接到您的 GitLab 实例之前验证 TLS 证书信息。 您可以 添加自定义 SSL 证书

错误:检查令牌失败

当提供给 GitLab Language Server 进程的连接实例 URL 和身份验证令牌无效时,会发生此错误。要重新启用 Code Suggestions:

  1. 在您的 IDE 中,在顶部栏中,选择您的 IDE 名称,然后选择 设置
  2. 在左侧边栏中,选择 工具 > GitLab Duo
  3. 连接 下,选择 验证设置
  4. 根据需要更新您的 连接 详细信息。
  5. 选择 验证设置,并确认身份验证成功。
  6. 选择 确定保存

Microsoft Visual Studio 故障排除

以下文档是针对 Microsoft Visual Studio 的 Code Suggestions 特定故障排除。

有关 Microsoft Visual Studio 的非 Code Suggestions 故障排除,请参阅 Visual Studio 故障排除

IntelliCode 缺失

Code 需要 Visual Studio 的 IntelliCode 组件。如果该组件 缺失,您在启动 Visual Studio 时可能会看到类似这样的错误:

[VisualStudioPackage] 包的 SetSite 失败,来源:'Microsoft.VisualStudio.Composition'
描述:期望有 1 个具有合同名称 "Microsoft.VisualStudio.Language.Suggestions.SuggestionServiceBase" 的导出,
但在应用适用约束后找到 0 个。

Microsoft.VisualStudio.Composition.CompositionFailedException:
期望有 1 个具有合同名称 "Microsoft.VisualStudio.Language.Suggestions.SuggestionServiceBase" 的导出,
但在应用适用约束后找到 0 个。

  at Microsoft.VisualStudio.Composition.ExportProvider.GetExports(ImportDefinition importDefinition)
  at Microsoft.VisualStudio.Composition.ExportProvider.GetExports[T,TMetadataView](String contractName, ImportCardinality cardinality)
  at Microsoft.VisualStudio.Composition.ExportProvider.GetExport[T,TMetadataView](String contractName)
  at Microsoft.VisualStudio.Composition.ExportProvider.GetExportedValue[T]()
  at Microsoft.VisualStudio.ComponentModelHost.ComponentModel.GetService[T]()
[...]

要解决此问题,请安装 IntelliCode 组件:

  1. 在 Windows 开始菜单中,搜索 Visual Studio Installer 并打开它。
  2. 选择您的 Visual Studio 实例,然后选择 修改
  3. 单个组件 选项卡中,搜索 IntelliCode
  4. 选择该组件的复选框,然后在右下角选择 修改
  5. 等待 Visual Studio Installer 完成安装。

Microsoft Visual Studio 中未显示建议

  1. 确保您已正确 设置扩展
  2. 工具 > 选项 菜单中,找到 GitLab 选项。确保 日志级别 设置为 调试
  3. 视图 > 输出 中,打开扩展日志。将下拉列表更改为 GitLab Extension 作为日志过滤器。
  4. 验证调试日志是否包含类似的输出:
14:48:21:344 GitlabProposalSource.GetCodeSuggestionAsync
14:48:21:344 LsClient.SendTextDocumentCompletionAsync("GitLab.Extension.Test\TestData.cs", 34, 0)
14:48:21:346 LS(55096): time="2023-07-17T14:48:21-05:00" level=info msg="update context"

如果另一个扩展提供了类似的建议或完成功能,该扩展可能不会返回建议。要解决此问题:

  1. 禁用所有其他 Visual Studio 扩展。
  2. 确认您现在收到 Code Suggestions。
  3. 一次重新启用一个扩展,每次测试 Code Suggestions,以找到冲突的扩展。

Neovim 故障排除

以下文档是针对 Neovim 的 Code Suggestions 特定故障排除。

有关 Neovim 的非 Code Suggestions 故障排除,请参阅 Neovim 故障排除

代码补全失败

  1. 确认 omnifunc 在 Neovim 中已设置:

    :verbose set omnifunc?
  2. 通过在 Neovim 中运行以下命令确认语言服务器处于活动状态:

    :lua =vim.lsp.get_active_clients()
  3. 检查 ~/.local/state/nvim/lsp.log 中的语言服务器日志。

  4. 通过在 Neovim 中运行以下命令检查 vim.lsp 日志路径中的错误:

    :lua =vim.cmd('view ' .. vim.lsp.get_log_path())