
CodeGeeX
用 CodeGeeX 在 VS Code 中补全、翻译与解释代码
CodeGeeX 是一款 VS Code 代码助手扩展,提供自动补全、多候选交互生成、跨语言翻译和可自定义模板的 Prompt 模式。本教程从安装与版本要求讲起,逐一说明四种模式的快捷键、候选数量设置、模板文件写法,并给出一个从补全到代码解释的完整操作示例。
CodeGeeX 是一个面向 VS Code 的多语言代码生成扩展,背后是一个在二十多种编程语言语料上预训练的大规模代码模型。它把几件日常写代码时最常遇到的事做成了编辑器内的快捷操作:在光标处自动续写代码、一次给出多个候选让你挑、把一段代码翻译成另一种语言、以及用可自定义的模板让模型按你的要求解释或生成代码。这篇教程讲的是如何在 VS Code 里装好它、把四种模式都用起来,并写一个属于自己的 Prompt 模板。如果你更想先在网页端试一下模型能力,可以打开 CodeGeeX 工具页;本文则专注于编辑器扩展的实际操作。
适合读这篇的人:已经会用 VS Code、希望在不切换窗口的情况下获得代码补全与改写建议的开发者;需要把旧项目里的代码片段迁移到另一种语言的工程师;以及想用少量示例「教」模型按固定风格输出注释或文档字符串的人。文中涉及的版本号、候选数量、功能开关等细节可能随扩展更新而变化,实际以官网与扩展设置页当前显示的信息为准。
准备工作
开始之前需要确认三件事:编辑器版本、扩展安装方式、以及首次使用时的隐私选项。
- VS Code 版本:扩展要求 VS Code 版本不低于 1.68.0。版本过低时扩展无法正常启用,先在「帮助 → 关于」里确认版本号,必要时升级。
- 安装扩展:在 VS Code 的扩展市场里搜索「codegeex」,找到对应条目后安装。扩展本身免费提供下载。
- 全局启用:安装完成后需要把扩展启用为全局生效,否则在部分工作区里不会触发补全。
- 隐私选项:首次使用时扩展会询问是否同意把生成的代码仅用于研究目的进行共享,该选项默认关闭。也就是说,不主动勾选就不会共享生成结果。你的代码只作为模型的输入用于辅助编程。
安装完成后,VS Code 底部状态栏会出现 CodeGeeX 的图标,这个图标在生成过程中会旋转,是判断扩展是否正在工作的最直接信号。
操作步骤
CodeGeeX 提供四种使用模式,彼此不冲突,可以按场景切换。下面按「最常用 → 最可定制」的顺序逐一说明。
第一步:用 Stealth 模式做行内自动补全
Stealth 模式是默认的补全形态。保持 CodeGeeX 处于激活状态,当你停止敲键盘时,扩展会自动开始生成,底部图标开始旋转。生成的代码以灰色文字显示在光标位置,此时按 Tab 即可把建议插入到文件中。
在这个模式里还有几个辅助快捷键:
Alt(macOS 上为Option)加[或]:在当前已有的多个候选之间前后切换。Alt(Option)加N:对当前建议不满意时,重新请求一批新的建议。- 候选数量:在扩展设置里找到
Candidate Num调整。候选越多,生成速度越慢,这是一个需要自己权衡的取舍。
生成总是从光标当前所在位置开始。如果在生成尚未结束时改动了光标之前的代码,很可能导致插入结果错位。遇到这种情况,等生成结束或直接重新触发一次。
第二步:用 Interactive 模式一次看多个候选
当你不确定想要什么写法、希望横向比较几种实现时,用交互模式更合适。把光标放到目标位置,按 Ctrl + Enter 激活交互模式,CodeGeeX 会生成 X 个候选并显示在右侧面板中。这里的 X 就是设置项 Candidate Num 的值,可以按需修改。
在右侧面板里浏览各个候选,点击你认为最合适的那一个,代码就会插入到光标当前位置。相比 Stealth 模式的灰色行内提示,面板形式更适合阅读较长的生成结果。
第三步:用 Translation 模式做跨语言翻译
翻译模式用于把一种语言的代码改写成另一种语言。操作顺序如下:
- 把其他语言的代码粘贴或输入到当前文件中。
- 选中这段代码。
- 按
Ctrl+Alt+T激活翻译模式。 - 在弹出的选项里选择所选代码原本的语言。
- 等待几秒,你会得到翻译成当前编辑器所用语言的结果。
- 点击「use code」按钮,把结果插入到光标位置。
插入方式可以在设置里配置:是保留原代码并把它注释掉,还是直接用翻译结果替换原代码。前者便于对照检查,后者适合确定要迁移的场景。
第四步:用 Prompt 模式套用自定义模板
Prompt 模式目前标注为实验性功能,但它是四种模式里最灵活的一个。它的原理是利用模型的少样本能力:你在输入里给出几个示例,模型会模仿这些示例的做法来生成结果。因此它既能做代码解释、摘要,也能让输出遵循特定风格、使用指定函数名或带上特定注释。
基本操作是:选中作为输入的代码,按 Alt(Option)加 T 触发 Prompt 模式,扩展会列出预定义的模板列表,选一个即可用你的输入生成代码。
模板本身是纯文本文件,结构由几部分组成:示例代码、<INPUT> 占位符、带解释的示例代码、以及解释的开头标记。<INPUT> 是选中代码被插入的位置;<INPUT0:1> 表示输入的第一行,用于保证被解释的是同一个函数。使用 Prompt 模式时,扩展会把你的输入和模板拼在一起,整体作为模型的输入。
下面是一个「逐行解释代码」的模板示例:
# language: Python
def sum_squares(lst):
sum = 0
for i in range(len(lst)):
if i % 3 == 0:
lst[i] = lst[i] ** 2
elif i % 4 == 0:
lst[i] = lst[i] ** 3
sum += lst[i]
return sum
<INPUT>
# Explain the code line by line
def sum_squares(lst):
# initialize sum
sum = 0
# loop through the list
for i in range(len(lst)):
# if the index is a multiple of 3
if i % 3 == 0:
# square the entry
lst[i] = lst[i] ** 2
# if the index is a multiple of 4
elif i % 4 == 0:
# cube the entry
lst[i] = lst[i] ** 3
# add the entry to the sum
sum += lst[i]
# return the sum
return sum
# Explain the code line by line
<INPUT:0,1>
同样的结构也可以用来生成 Python 文档字符串。下面这个模板给出的示例是一段带完整 docstring 的函数,模型会照着这个格式为你的输入补上文档:
def add_binary(a, b):
'''
Returns the sum of two decimal numbers in binary digits.
Parameters:
a (int): A decimal integer
b (int): Another decimal integer
Returns:
binary_sum (str): Binary string of the sum of a and b
'''
binary_sum = bin(a + b)[2:]
return binary_sum
<INPUT>
自定义模板在扩展设置的 Prompt Templates 里添加。每一项由键值对组成:键是模板在列表中显示的名称,值是模板文件的路径,文件类型可以是 .txt、.py、.h 等纯文本格式。写好之后,触发 Prompt 模式时就能在列表里看到自己的模板。
一个完整示例
下面把几种模式串起来,走一遍从补全到解释的完整流程。假设你正在写一个 Python 文件,需要实现一个对列表元素按索引条件做幂运算并求和的函数。
- 行内补全:在文件里写下函数签名
def sum_squares(lst):并换行,停止输入。等待底部图标旋转,灰色建议出现后按Tab接受。如果对结果不满意,按Alt+N换一批;想比较不同写法,按Alt+[或]在候选间切换。 - 多候选比较:如果补全结果不够理想,把光标放回函数体起始位置,按
Ctrl+Enter打开交互模式。右侧面板会按Candidate Num设定的数量列出候选,点选最合适的一个插入。 - 跨语言迁移:假设这段逻辑原本是 JavaScript 写的,把 JS 版本粘贴到当前 Python 文件里,选中它,按
Ctrl+Alt+T,选择 JavaScript 作为源语言。几秒后得到 Python 版本,点击「use code」插入。若想保留原代码对照,先在设置里选择注释掉原代码而不是替换。 - 生成逐行解释:选中写好的
sum_squares函数,按Alt+T,在模板列表里选择逐行解释模板。模型会按照模板中示例的格式,为你的函数每一行补上注释。 - 生成文档字符串:再次选中函数,按
Alt+T,这次选择 docstring 模板,得到带 Parameters 与 Returns 段落的文档注释。
整个流程不需要离开编辑器,也不需要手动复制粘贴到外部窗口。每一步的结果都是可编辑的普通代码,接受后按自己的规范再调整即可。
注意事项
- 版本门槛:VS Code 必须不低于 1.68.0,低于此版本扩展无法正常工作。
- 生成位置固定:所有模式的生成都从光标当前位置开始。生成过程中修改光标之前的代码,容易造成插入错位或结果不符合预期。
- 候选数量影响速度:
Candidate Num调大能提供更多选择,但会拖慢生成。交互模式下这个值直接决定右侧面板显示几个候选。 - Prompt 模式是实验性的:该模式标注为实验性功能,模板效果依赖示例质量。示例写得越贴近你想要的输出格式,结果越稳定。
- 模板文件路径:
Prompt Templates里配置的是模板文件的路径,文件需为纯文本类格式(.txt、.py、.h等),路径失效时模板不会出现在列表中。 - 隐私默认值:首次使用时关于共享生成代码用于研究的询问默认不勾选,不主动同意就不会共享。
- 翻译模式的插入策略:注释原代码与直接替换是两种不同行为,迁移前先确认设置,避免误覆盖源文件内容。
- 易变信息:扩展的版本要求、设置项名称、功能是否仍标注为实验性等,都可能随更新变化,使用前以官网与扩展设置页当前信息为准。