如何使用 Gemini Code Assist 写代码

coding入门8 分钟阅读2026/7/21

上个月,我正面对一个庞大的 Python 重构任务。我手里有个老旧的 Django 应用,里面足足有四十多个视图函数,而且连一个单元测试都没有。要是给它们全写上样板测试代码,起码得耗掉我这周两天的功夫。虽然我一直用着 GitHub Copilot,但我也挺好奇 Google 家的产品——特别是 Gemini Code Assist 有免费版,而且能跟我常用的 IDE 环境完美搭配。于是我决定试它一把,结果它真的改变了我处理那些枯燥编码任务的方式。今天我就来聊聊我是怎么安装配置的,中间踩了什么坑,以及怎么才能让它真正写出好用的代码。

安装(以及我踩的第一个坑)

我大部分工作都在 Visual Studio Code 里完成,所以下面的步骤是针对 VS Code 的,不过如果你用的是 JetBrains IntelliJ,流程也几乎一模一样。

首先,打开 VS Code,点击左侧面板的扩展图标(就是那个方块图标,或者按快捷键 Ctrl+Shift+X)。在顶部的搜索框里输入“Gemini Code Assist”。你会看到弹出好几个结果——一定要选 Google 发布的官方扩展。然后点击“Install”按钮。

就在这儿,我踩了第一个坑。装完之后,我立马打开了一个 Python 文件,满心以为聊天窗口会自动变出来。结果啥也没发生。我重启了 VS Code,还是没动静。我瞎点了十分钟才恍然大悟:你得先授权登录你的 Google 账号。

看看 VS Code 窗口的右下角。你应该能看到一个新增的状态栏项目,写着“Gemini Code Assist”。点一下它,会弹出一个菜单——选择登录选项。接着会打开一个浏览器窗口,要求你用 Google 账号进行身份验证。一旦你同意授权,浏览器显示“Authentication successful”后,你就可以关掉它回到 VS Code 了。现在,状态栏应该显示它已激活。

关联项目

登录之后,我注意到菜单里有个选项让我有点摸不着头脑:“Select Gemini Code project”。再次点击 Gemini Code Assist 的状态栏图标调出菜单,选择这个选项后,系统会提示你把当前的工作区与一个 Google Cloud 项目关联起来。

如果你只是在本地随便玩玩,可以跳过这步,或者选个默认值就行。但是,如果你在一家使用 Google Cloud 的大公司里干活,关联项目可以确保你的代码上下文和遥测数据走正确的路由,并且遵守你们组织的数据隐私政策。至于我个人的 Django 项目,我只是选了默认的免费项目,把那个提示糊弄过去就行了。

聊天界面:你的新“小黄鸭”

Gemini Code Assist 的核心就是聊天界面。你可以点击侧边栏的聊天图标打开它,或者使用命令面板(按 Ctrl+Shift+P 然后搜索“Gemini Chat”)。

这就是我测试之旅开始的地方。我没有一上来就让它把四十个测试全写了(那样通常只会得到截断的、乱七八糟的输出),而是开启了一段对话:

我: 我有个叫 get_user_profile 的 Django 视图函数,接收 request 和 user_id 作为参数。它从数据库里获取用户并返回 JSON 响应。你能帮我写个 pytest 测试用例吗?

Gemini: 当然可以!要给 get_user_profile 视图写 pytest 测试用例,通常你需要测试成功的情况(有效的 user_id)和失败的情况(无效的 user_id)。假设你使用的是 Django 测试客户端和 pytest-django,这里有一个你可以参考的模板:

import pytest
from django.urls import reverse
from myapp.models import User

@pytest.mark.django_db
def test_get_user_profile_success(client, create_user):
    user = create_user(id=1, username="testuser")
    url = reverse("user_profile", kwargs={"user_id": user.id})
    response = client.get(url)
    
    assert response.status_code == 200
    data = response.json()
    assert data["username"] == "testuser"

@pytest.mark.django_db
def test_get_user_profile_not_found(client):
    url = reverse("user_profile", kwargs={"user_id": 999})
    response = client.get(url)
    
    assert response.status_code == 404

让我惊喜的是,它并没有单纯地甩一堆代码给我;它加上了 @pytest.mark.django_db 装饰器,这是 pytest-django 生态里特有的,而且它还把成功和失败的路径分开了。虽然这代码没有完美贴合我的具体模型,但它给了我一个完成了 80% 的脚手架,我只需要针对自己的特定字段稍微改改就行。

行内代码生成:真正的省时利器

虽然聊天功能用来提问很棒,但真正的杀器在于行内生成。如果你打开一个文件,开始写注释或文档字符串,Gemini Code Assist 会以幽灵文本的形式自动建议实现代码。

回到我写测试的问题上,我打开了我的 tests.py 文件,敲下了这行注释:

# Test that submitting the edit_profile form with valid data updates the database

我停顿了一秒钟,Gemini 立刻以灰色文本建议了一整段 15 行的测试函数。里面包含了 pytest.mark.django_db 标记、一个用 Django 测试客户端模拟的 POST 请求、一个检查 HTTP 302 重定向的断言,以及一个断言用户字段确实发生改变的数据库查询。我按下 Tab 键,全盘接收。

这代码也不是完美的。它假设我的重定向跳转到了名为 profile_detail 的 URL,而我的代码实际上重定向到了 dashboard。但是,改一个字符串可比从头敲完整个测试的设置、请求和断言快太多了。

意外惊喜:上下文感知

有一点我没想到,就是它对周围上下文的抓取能力特别强。我的工作区里打开着一个 conftest.py 文件,里面定义了一个 create_user fixture。当我让聊天功能写测试时,它竟然用了我自定义的 create_user fixture,而不是在测试体里手动实例化一个 User() 对象。它读取了我的工作区上下文,并据此调整了输出。这绝对是一个让我直呼“哇塞”的时刻。

实用建议与坦率的局限性

深度体验了 Gemini Code Assist 几周后,以下是我的实用心得:

1. 明确你的技术栈。 如果你只说“写个测试”,它可能会默认用标准的 unittest。如果你想用 pytest,直接告诉它。如果你希望用 factory_boy 而不是直接用模型实例,也要明说。你给的约束越多,后面需要重写的就越少。

2. 拆解大任务。 千万别跟它说“给这整个 500 行的文件写测试”。它要么会截断输出,要么给你一堆大路货的测试。一次只让它给一个特定函数或一个特定边界情况写测试。我那四十个视图就是挨个让它写的,这样质量一直都很高。

3. 务必检查导入。 Gemini Code Assist 偶尔也会瞎编导入语句。它可能会建议导入你当前库版本中根本不存在的函数,或者用错了导入路径。每次接受一块生成的代码后,一定要立刻跑一下代码检查工具或测试套件。

4. 免费版有限制。 在一次高强度的编码过程中,我触发了速率限制,导致行内建议大概有一个小时没再出现。聊天界面通常会给你警告,但行内补全只会默默罢工。如果幽灵文本不弹出来了,看一眼状态栏——你可能已经达到这小时的配额了。

5. 搞不定复杂的业务逻辑。 Gemini Code Assist 写起样板代码来简直绝了:CRUD 操作、标准测试设置、序列化器以及基本的数据转换。但当你的代码依赖于极其特定且没有文档说明的业务规则时,它就不灵了。如果你的函数是根据内部一套错综复杂的公式来计算某个冷门的税率区间,那生成的代码几乎肯定是错的。把它当结构脚手架用,逻辑上还得靠自己把关。

说到底,Gemini Code Assist 不会替你把整个应用都写了。但对于那些吞噬你日常时间的枯燥、重复的脚手架工作——比如写四十个单元测试——它是一个极其趁手的工具。它把我原本需要两天的测试苦差事变成了四个小时的下午任务,而这正是我期望从开发工具中获得的效率提升。

相关 Agent

C

光标编辑器

AI驱动的代码编辑器,支持智能补全和对话。

了解更多 →