Skip to main content

自动完成

如果您想要获得最佳的自动补全体验,我们推荐使用Codestral,它可以通过Mistral API获得。为此,请获取一个API密钥并将其添加到您的config.json中:

{
"tabAutocompleteModel": {
"title": "Codestral",
"provider": "mistral",
"model": "codestral-latest",
"apiKey": "YOUR_API_KEY"
}
}

使用 Ollama 进行设置(默认)

如果您想在本地运行您的自动完成模型,我们推荐使用Ollama。为此,首先从这里下载最新版本的Ollama。然后,运行以下命令以下载我们推荐的模型:

ollama run qwen2.5-coder:1.5b-base

一旦下载完成,你应该开始在VS Code中看到补全。

设置自定义模型

所有可用于聊天模型的配置选项都可以用于表格自动完成。例如,如果您想使用远程的Ollama实例,您可以像这样编辑您的config.json(请注意,它不在模型数组中):

config.json
{
"tabAutocompleteModel": {
"title": "Tab Autocomplete Model",
"provider": "ollama",
"model": "qwen2.5-coder:1.5b-base",
"apiBase": "https://<my endpoint>"
},
...
}

如果您还不熟悉可用的选项,您可以在这里找到完整的参考这里

配置选项

以下内容可以在config.json中配置:

tabAutocompleteModel

这只是一个类似于config.json"models"数组中的对象。您可以选择并配置任何您喜欢的模型,但我们强烈建议使用专为表格自动完成设计的小型模型,例如deepseek-1bqwen2.5-coder:1.5bstarcoder2-3b

tabAutocompleteOptions

此对象允许您自定义标签自动完成的行为。可用的选项如下所示,您可以在这里找到它们的默认值。

  • disable: 禁用自动完成(也可以从IDE设置中完成)
  • template: 一个可选的模板字符串,用于自动完成。它将使用Mustache模板语言进行渲染,并传递'prefix'和'suffix'变量。(字符串)
  • useFileSuffix: 确定是否在提示中使用文件后缀。(布尔值)
  • maxPromptTokens: 使用的提示令牌的最大数量。较小的数字将产生更快的完成,但上下文较少。(数字)
  • prefixPercentage: 输入中应分配给前缀的百分比。(数字)
  • maxSuffixPercentage: 提示中可以用于后缀的最大百分比。(数字)
  • debounceDelay: 按键后触发自动完成的延迟时间,单位为毫秒。(数字)
  • multilineCompletions: 是否启用多行补全("always"、"never" 或 "auto")。默认为 "auto"。
  • useCache: 当提示与之前的提示相同时,是否缓存并重用完成结果。在测试时禁用可能有用。
  • disableInFiles: 一个用于指定你想禁用标签自动补全的文件列表的全局模式。

完整示例

config.json
{
"tabAutocompleteModel": {
"title": "Tab Autocomplete Model",
"provider": "ollama",
"model": "qwen2.5-coder:1.5b-base",
"apiBase": "https://<my endpoint>"
},
"tabAutocompleteOptions": {
"debounceDelay": 500,
"maxPromptTokens": 1500,
"disableInFiles": ["*.md"]
}
}

常见问题解答

我想要更好的补全效果,应该使用GPT-4吗?

或许令人惊讶的是,答案是否定的。我们为自动补全建议的模型是使用高度特定的提示格式进行训练的,这使得它们能够响应完成代码的请求(参见这些提示的示例这里)。一些最好的商业模型,如GPT-4或Claude,并没有使用这种提示格式进行训练,这意味着它们不会生成有用的补全。幸运的是,出色的自动补全并不需要巨大的模型。大多数最先进的自动补全模型的参数不超过100亿,超过这个数量并不会显著提高性能。

我没有看到任何补全

按照以下步骤确保一切设置正确:

  1. 确保您已勾选“启用标签自动完成”设置(在VS Code中,您可以通过点击状态栏中的“Continue”按钮来切换,在JetBrains中,可以通过转到设置 -> 工具 -> Continue来切换)。
  2. 确保你已经下载了Ollama。
  3. 运行 ollama run qwen2.5-coder:1.5b-base 以验证模型是否已下载。
  4. 确保禁用任何其他代码补全提供程序(例如 Copilot),因为它们可能会产生干扰。
  5. 检查日志输出以查找任何潜在错误:cmd/ctrl + shift + P -> "切换开发者工具" -> VS Code中的"控制台"选项卡,JetBrains中的~/.continue/logs/core.log。
  6. 检查 VS Code 设置,确保 "editor.inlineSuggest.enabled" 设置为 true(使用 cmd/ctrl + , 然后搜索此项并勾选复选框)
  7. 如果您仍然遇到问题,请在我们的Discord中告知我们,我们将尽快提供帮助。

补全始终是单行的

为了确保您收到多行补全,您可以在tabAutocompleteOptions中设置"multilineCompletions": "always"。默认情况下,它是"auto"。如果您仍然发现只看到单行补全,这可能是因为某些模型在文件中间开始生成补全时倾向于生成较短的补全。您可以尝试暂时将光标下方的文本移出活动文件,或切换到更大的模型。

我可以为自动完成配置一个“触发键”吗?

是的,在VS Code中,如果你不想自动显示建议,你可以:

  1. 在VS Code设置中设置"editor.inlineSuggest.enabled": false以禁用自动建议
  2. 打开“键盘快捷键”(cmd/ctrl+k, cmd/ctrl+s)并搜索 editor.action.inlineSuggest.trigger
  3. 点击“+”图标以添加新的键绑定
  4. 按下您想要用于触发建议的键组合(例如 cmd/ctrl + space
  5. 现在,每当您想要查看建议时,您可以按下您的键绑定(例如 cmd/ctrl + space)以手动触发建议

是否有快捷键可以一次接受一行?

这是VS Code的一个内置功能,只是有点隐蔽。更多详情请参见这个很棒的StackOverflow回答

如何关闭自动完成

VS Code

点击屏幕右下角状态面板中的“继续”按钮。勾号将变为“取消”符号,您将不再看到补全内容。您可以再次点击以重新开启。

或者,打开VS Code设置,搜索“Continue”并取消勾选“启用Tab自动完成”的复选框。

你也可以使用默认快捷键直接禁用自动完成功能:按住 ctrl/cmd + K(继续按住 ctrl/cmd),然后按 ctrl/cmd + A。这将关闭自动完成功能,而无需通过设置导航。

JetBrains

打开设置 -> 工具 -> 继续并取消勾选“启用标签自动完成”选项。

反馈

如果您关闭了自动完成功能,我们很乐意听取您的改进建议!请在我们的Discord中告诉我们,或在GitHub上提交问题。