课程
当您被样板代码或细枝末节的语法困住时,写代码会变得枯燥乏味。尤其是在尝试新 AI 模型、只想专注于搭建功能时,这种摩擦会被放大。Tabnine 通过在编辑器内提供 AI 代码补全,帮助您化解这种减速。
在本文中,我将一步步讲解如何在 Visual Studio Code(VS Code)中使用 Tabnine,基于 Google 最新的图像生成模型 Nano Banana 创建一款 AI 图像编辑器。文章结尾,我们将得到一个可运行的 Python 应用,允许用户通过提示词生成并编辑图像。
如果您想及时了解最新的 Google 图像生成模型,建议阅读我们的 Nano Banana 2 指南。


什么是 Tabnine?
Tabnine 是一款由 AI 驱动的编码助手,类似于 GitHub Copilot 和 Cursor。它可在 VS Code、PyCharm、Jupyter 等主流编辑器中使用。
Tabnine 的一些关键特性包括:
- Jira 集成:Tabnine 可以连接 Jira,这是一款流行的软件工程项目管理平台。这让工作管理更轻松,也便于 Tabnine 跟踪流水线中的任务。
- 自定义命令:Tabnine 内置多种命令,例如 "Explain code" 或 "Fix code"。它也允许用户定义基于提示词的自定义命令。
- 自定义行为:Tabnine 允许您配置一个提示,来引导 AI 模型的回答方式。比如,如果您有明确的编码规范,可以提供给它,以确保生成的代码遵循这些规范。
- 智能自动补全:不仅补全变量名,还能建议整行或整块代码。
- 上下文感知:Tabnine 会适应您的项目结构和编码风格。
- 支持多种 AI 模型:Tabnine 支持最流行的 AI 模型,方便您选择使用哪一个。
- 团队学习:在企业版方案中,它可以从您团队的私有代码库中学习,提供更贴合公司模式的建议。
Tabnine 安装与设置
开始之前,我们需要创建一个 Tabnine 账户并订阅他们的某个套餐。他们提供 14 天试用,您可以免费体验。试用期之后,Tabnine 每月费用为 9 美元。
创建好 Tabnine 账户后,打开 VS Code。若尚未安装 VS Code,可从此处安装。打开扩展选项卡,搜索 "tabnine" 以找到官方扩展。

安装扩展后,系统会提示我们登录。随后即可在左侧菜单栏访问 Tabnine(本截图中的最后一个选项)。

浏览 Tabnine 的界面
在构建我们的 AI 图像编辑器之前,先快速了解 Tabnine 的主要元素。
打开 Tabnine 后,会看到一个 AI 聊天界面:

顶部是模型选择器,可以选择要使用的模型。本教程我将沿用默认选项Gemini 2.5 Pro。

底部可以定义上下文,也就是回答时希望 AI 模型可见的内容。

默认情况下,上下文包含当前文件和工作区(项目)。我们可以添加其他内容,比如终端,这在遇到错误时非常有用,便于让模型知晓。我们还可以使用 "@" 字符并输入希望添加到上下文中的函数名,来提供特定的代码片段。
在汉堡菜单中,我们可以配置 Tabnine:

其中两个值得注意的设置是自定义行为和自定义命令。在自定义行为部分,我们可以设置一个提示,引导模型在生成代码时的表现。这在希望代码遵循特定规范时很有用。

命令部分允许定义可在聊天界面通过 /<command-name> 执行的自定义命令。命令本质上是为执行特定动作而设计的提示。这是节省时间、避免反复输入相同提示的好方法。

用 Tabnine 进行“vibe-coding”打造 AI 图像编辑器
本节将带您构建一个 Python 应用,使用 Google 最新的图像生成模型 Nano Banana 来编辑图像。用户可以用提示词生成图像,或将现有图像与提示词结合进行编辑。
我的目标是看看是否能以 vibe-coding 的方式构建此应用,也就是完全通过从零开始的提示词来搭建。
本教程中生成的所有代码可在这个 GitHub 仓库中找到。
创建基础界面
首先,我想创建一个基础界面,让用户可以从电脑选择图像并输入提示词。我新建了一个文件夹,并在该文件夹中打开 VS Code。我没有创建任何文件。这是我的第一个提示:

事后我才意识到,我忘了说明自己要构建的是 Python 应用。幸运的是,AI 模型恰好也做了这个假设。它对我的提示进行了响应,解释了将要执行的命令和编写的代码。
要应用这些更改,我们可以逐条应用,或点击屏幕底部的 "Apply All" 按钮。请注意,其中一些更改涉及命令执行。在这些情况下,命令会安装必要的 Python 包,并创建存放代码的文件和文件夹。
这是我运行其创建脚本后界面的样子:

顶部显示所有已选图像的列表,并提供按钮打开文件选择器。用户可以选择一个或多个文件,所选文件会被列出。不过,当选择新文件时,旧列表会被覆盖,于是我要求将新文件追加到列表中,而不是移除旧文件。

接着,我希望改进界面,用缩略图而非路径来展示图像:

这是结果:

另一个重要功能是可以方便地移除图像:

按照这个提示,它修改了代码,使得我们在缩略图上点击右键时会弹出菜单,允许删除图像。我希望实现这种交互,因此提出了该改动请求:

在这次修改后尝试应用程序时,删除图像不再生效。我怀疑是因为我使用的是 Mac,但当时没有说明。我想看看它能否自己判断出来。

它处理得很好,我可以右键单击图像来删除它:

基础界面的最后一步是为提示词添加一个文本框。

至此,基础界面已完成。我们可以选择图像并输入提示词。不过,我们还无法生成图像——这将在下一节中实现。

集成 Nano Banana
为保持代码的条理性,我让它创建一个新的 Python 脚本,其中包含一个使用 Google 生成式 AI API 及其最新图像模型来生成图像的函数。

它创建了新脚本和 .env 文件。该文件用于存放连接 Google API 所需的 API 密钥。如果您跟着操作,需要先在此处创建 API 密钥,并将其放入 .env 文件中。
随后,我让它在界面中添加一个新按钮,用于调用图像生成函数。按钮添加好了,但点击后出现错误。因此,在让它修复错误前,我先将终端添加进上下文。


它对文件做了一些更新,但错误依旧。我继续让它修复,但没有成功。它开始声称 AI 模型不存在,并试图将代码引向我知道并不正确的方向。
为解决这个问题,我只好手动修复代码。我前往Gemini 官方网站,从那里复制并改造了示例代码。
这也是我认为即便在vibe coding 时也需要具备一定编码基础的原因之一。我们常会遇到 AI 模型无法修复的问题,懂编程很重要,这样才能判断模型说得不对并加以修正。这类工具应始终用于提速,而非完全替代。
不过,即便这段代码需要手写,Tabnine 的自动补全仍很有帮助。比如,当我想把选中的图像路径转换为图像对象提供给模型时,只需开始输入意图,就得到了正确的代码:

我们也能在函数名上方看到,Tabnine 提供编辑、测试、修复、解释和文档化函数的工具。比如我使用了文档化功能来为代码写注释,它会先显示计划修改的差异,之后我可以选择接受或拒绝:

最终结果
应用程序现已可用。我们来尝试为某个人物创建一个带来自其他图像配件的手办形象:

结果如下:

使用 Tabnine 编写测试
在项目中编写自动化测试非常重要。Tabnine 的一项功能就是帮助我们编写这些测试。
该功能可在 "Test" 选项卡中使用,或通过点击函数定义上方的 "Test" 选项来使用。这样,Tabnine 会为该函数创建测试计划。

测试计划由若干场景组成,每个场景描述函数的预期行为。以下是 Tabnine 为我们的函数识别的一些场景:

要为某个特定场景生成测试,我们只需点击它。随后会生成该场景对应的测试函数,我们可以将其整合进测试套件。

当我应用这些更改时,测试文件只包含了测试函数,其他内容都缺失,例如导入语句和外层测试类。我不得不回到 "Chat" 选项卡,请它把测试实现补完整。之后又遇到一个错误,因为它创建的文件名不正确。与之前一样,我告知它发生了错误,它就修复了。现在测试可以成功运行。
后来我再添加其他测试时,一切运行良好。

结语
Tabnine 通过与主流代码编辑器的便捷集成,展现了其作为快速开发强大工具的潜力。其 AI 辅助编码能力能显著提速,让开发者将精力更多投入到创新而非重复性任务。
然而,我尝试完全靠 vibe-coding 构建应用的过程,也凸显了扎实编码基础的重要性。若对 AI 生成代码不加验证地盲目依赖,可能带来复杂问题,让开发者难以及时理解并处理错误。
总体而言,Tabnine 表现高效,但往往让人感觉背后的 AI 模型才是“主力”,与 GitHub Copilot 等工具相仿。虽然 Tabnine 的确实用,这次经历再次说明:传统的编码知识不可替代,它对于确保复杂软件应用的高效、可持续开发至关重要。
