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 故障排除的更多信息,请参阅:
建议未显示
如果建议未显示,请确保您:
- 正确配置了 GitLab Duo。
- 使用 支持的语言 和 编辑器扩展。
- 正确配置了您的编辑器扩展。
如果建议仍未显示,请尝试针对不同 IDE 的以下故障排除步骤:
Code Suggestions 返回 401 错误
Code Suggestions 依赖于许可证令牌,该令牌 将您的订阅与 GitLab 同步。
如果令牌过期,GitLab Duo Code Suggestions 将在令牌过期时返回以下错误,
状态为 401:
语言服务器中的令牌验证失败:
(检查令牌失败:错误:获取个人访问令牌信息如果 GitLab 可以访问 云服务器,请尝试 手动同步您的许可证。
身份验证故障排除
问题可能是由最近的身份验证更改引起的, 特别是令牌系统。要解决此问题:
- 从您的 GitLab 账户设置中删除现有的个人访问令牌。
- 使用 OAuth 重新授权您的 GitLab 账户。
- 使用不同的文件扩展名测试 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。
- 在左侧边栏中,选择 扩展 > GitLab Workflow。
- 选择 设置( ),然后选择 扩展设置。
- 在 GitLab > Duo Code Suggestions 中,选择 GitLab Duo Code Suggestions 复选框。
查看 Code Suggestions 日志
如果 IDE 已启用 Code Suggestions,但建议仍未显示:
- 在您的 IDE 中,在 GitLab Workflow 扩展设置 中,启用 GitLab: Debug。
- 对于 Web IDE,您必须启用 marketplace extensions。
- 在顶部菜单中,选择 视图 > 输出 以打开底部面板,然后:
- 在命令面板中,选择
GitLab: Show Extension Logs。 - 在底部面板的右侧,选择下拉列表以过滤日志。选择 GitLab Workflow。
- 在命令面板中,选择
- 在 GitLab Workflow 扩展设置 中,清除并重新选择 GitLab Duo Code Suggestions 复选框。
禁用代码生成结果的流式传输
默认情况下,代码生成会流式传输 AI 生成的代码。流式传输将生成的代码 增量发送到您的编辑器,而不是等待完整的代码片段生成。 这提供了更交互式和响应式的体验。
如果您希望在代码生成结果完成时才看到它们,可以关闭流式传输。 禁用流式传输意味着代码生成请求可能会被感知为 需要更长时间才能解决。要禁用流式传输:
-
在 VS Code 中,在顶部栏中,转到 代码 > 设置 > 设置。
-
在右上角,选择 打开设置 (JSON) 以编辑您的
settings.json文件: -
在您的
settings.json文件中,添加此行,如果已存在则将其设置为false:"gitlab.featureFlags.streamCodeGenerations": false, -
保存您的更改。
错误:直接连接失败
为减少延迟,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 中未显示建议
- 从 工具 > GitLab Duo 菜单中,选择 验证设置。确保健康检查通过。
- 验证您的 JetBrains IDE 是否原生支持您正在处理的文件的语言。 转到 设置 > 语言和框架 以查看您的 JetBrains IDE 支持的完整语言和框架列表。
错误:无法找到到请求目标的有效认证路径
GitLab Duo 插件在连接到您的 GitLab 实例之前验证 TLS 证书信息。 您可以 添加自定义 SSL 证书。
错误:检查令牌失败
当提供给 GitLab Language Server 进程的连接实例 URL 和身份验证令牌无效时,会发生此错误。要重新启用 Code Suggestions:
- 在您的 IDE 中,在顶部栏中,选择您的 IDE 名称,然后选择 设置。
- 在左侧边栏中,选择 工具 > GitLab Duo。
- 在 连接 下,选择 验证设置。
- 根据需要更新您的 连接 详细信息。
- 选择 验证设置,并确认身份验证成功。
- 选择 确定 或 保存。
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 组件:
- 在 Windows 开始菜单中,搜索 Visual Studio Installer 并打开它。
- 选择您的 Visual Studio 实例,然后选择 修改。
- 在 单个组件 选项卡中,搜索 IntelliCode。
- 选择该组件的复选框,然后在右下角选择 修改。
- 等待 Visual Studio Installer 完成安装。
Microsoft Visual Studio 中未显示建议
- 确保您已正确 设置扩展。
- 从 工具 > 选项 菜单中,找到 GitLab 选项。确保 日志级别 设置为 调试。
- 在 视图 > 输出 中,打开扩展日志。将下拉列表更改为 GitLab Extension 作为日志过滤器。
- 验证调试日志是否包含类似的输出:
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"如果另一个扩展提供了类似的建议或完成功能,该扩展可能不会返回建议。要解决此问题:
- 禁用所有其他 Visual Studio 扩展。
- 确认您现在收到 Code Suggestions。
- 一次重新启用一个扩展,每次测试 Code Suggestions,以找到冲突的扩展。
Neovim 故障排除
以下文档是针对 Neovim 的 Code Suggestions 特定故障排除。
有关 Neovim 的非 Code Suggestions 故障排除,请参阅 Neovim 故障排除。
代码补全失败
-
确认
omnifunc在 Neovim 中已设置::verbose set omnifunc? -
通过在 Neovim 中运行以下命令确认语言服务器处于活动状态:
:lua =vim.lsp.get_active_clients() -
检查
~/.local/state/nvim/lsp.log中的语言服务器日志。 -
通过在 Neovim 中运行以下命令检查
vim.lsp日志路径中的错误::lua =vim.cmd('view ' .. vim.lsp.get_log_path())