GitHub Copilot Chat 提示词工程

GitHub 官方的 Copilot Chat 提示词工程指南,给出八条可直接套用的策略:先说明总体目标再列具体要求、提供示例、拆分复杂任务、避免歧义、指明相关代码、反复试验迭代、保持对话历史相关,以及遵循良好的编码实践。

GitHub原文更新 译文发布 阅读 7 分钟

正文

遵循以下策略,改进 Copilot 给出的结果。

提示词是你向 GitHub Copilot 提出的请求,例如你向 Copilot Chat 提出的问题,或者你让 Copilot 补全的代码片段。除了你的提示词之外,Copilot 还会使用其他上下文(例如当前文件中的代码和聊天历史记录)来生成回复。

按照本文中的技巧编写提示词,让 Copilot 生成更好的回复。

先概括,再具体

为 Copilot 编写提示词时,先向 Copilot 概括描述目标或场景,然后列出所有具体要求。

例如:

编写一个 JavaScript 函数,判断一个数是否为质数

该函数应接收一个整数,如果该整数是质数则返回 true

如果输入不是正整数,该函数应报错

提供示例

使用示例帮助 Copilot 理解你想要什么。你可以提供示例输入数据、示例输出和示例实现。

例如:

编写一个 Go 函数,找出字符串中的所有日期并以数组形式返回。日期的格式可能如下:

* 05/02/24
* 05/02/2024
* 5/2/24
* 5/2/2024
* 05-02-24
* 05-02-2024
* 5-2-24
* 5-2-2024

示例:

findDates("我 11/14/2023 约了牙医,12-1-23 有读书会")

返回:["11/14/2023", "12-1-23"]

单元测试也可以用作示例。在编写函数之前,你可以先使用 Copilot 为该函数编写单元测试。然后,你可以让 Copilot 编写一个符合这些单元测试描述的函数。

将复杂任务拆分为更简单的任务

如果你想让 Copilot 完成一项复杂或大型的任务,请将该任务拆分为多个简单的小任务。

例如,与其让 Copilot 直接生成一个找单词谜题,不如把这个过程拆分为更小的任务,并让 Copilot 逐一完成:

  • 编写一个函数,生成 10 × 10 的字母网格。
  • 编写一个函数,在给定有效单词列表的情况下,找出字母网格中的所有单词。
  • 编写一个函数,利用前面的函数生成一个至少包含 10 个单词的 10 × 10 字母网格。
  • 更新上一个函数,使其打印出字母网格以及从网格中随机选取的 10 个单词。

避免歧义

避免使用含义模糊的词语。例如,如果“这个”可能指当前文件、Copilot 的上一条回复或某个特定代码块,就不要问“这个是做什么的”。而应当具体地提问:

  • createUser 函数是做什么的?
  • 你上一条回复中的代码是做什么的?

库也可能带来歧义:

  • 如果你使用的是不常见的库,请描述该库的作用。
  • 如果你想使用某个特定的库,请在文件顶部写好 import 语句,或指明你想使用哪个库。

指明相关代码

如果你在 IDE 中使用 Copilot 在编码时获取建议,请打开所有相关文件并关闭无关文件。Copilot 会利用已打开的文件来理解你的请求。

如果你在 IDE 中使用 Copilot Chat,请打开你希望 Copilot 参考的文件,或高亮选中相应的代码。你还可以使用关键字手动为 Copilot Chat 提供上下文。例如,你可以在 VS Code 中添加 @workspace 聊天参与者,或在 JetBrains IDE 中添加 @project。请参阅 GitHub Copilot Chat 速查表

反复试验与迭代

如果没有得到想要的结果,请迭代改进提示词后再试一次。

如果你使用 Copilot 在编码时获取建议,可以完全删除该建议并重新开始。或者,你也可以保留该建议并要求修改。

如果你使用的是 Copilot Chat,可以在下一个请求中引用上一条回复。或者,你也可以删除上一条回复并重新开始。

保持历史记录的相关性

Copilot Chat 会利用聊天历史记录获取有关你的请求的上下文。若只想向 Copilot 提供相关的历史记录:

  • 使用线程为新任务开启新的对话
  • 删除不再相关或未能给出预期结果的请求

遵循良好的编码实践

如果你在代码库中向 Copilot 请求建议或解释时没有得到想要的回复,请确保现有代码遵循最佳实践且易于阅读。例如:

  • 使用一致的代码风格和模式
  • 为变量和函数使用描述性的名称
  • 为代码添加注释
  • 将代码组织成模块化、职责范围明确的组件
  • 包含单元测试

提示:使用 Copilot 帮助你的代码遵循最佳实践。例如,让 Copilot 添加注释,或将一个大函数拆分为多个较小的函数。

延伸阅读

许可与署名

本文译自 GitHub 发布的《Prompt engineering for GitHub Copilot Chat原文链接,原文最后更新于 译文由 昆仑编辑部 翻译,按 CC BY 4.0许可证链接)发布。译文对原文做了翻译处理,可能与原文存在差异,请以原文为准;本译文不代表原作者立场,也不表示原作者认可本站。

本文译自 GitHub 文档《Prompt engineering for GitHub Copilot Chat》。 创作者:GitHub, Inc.(GitHub Docs) 版权声明:GitHub Inc. © 2026 原文链接:https://docs.github.com/en/copilot/concepts/prompting/prompt-engineering 原文源文件:https://github.com/github/docs/blob/main/content/copilot/concepts/prompting/prompt-engineering.md 所译原文版本:2026-07-09(页面未标注日期,取 github/docs 源文件最后提交日期) 许可证:原文文字内容依 Creative Commons Attribution 4.0 International(CC BY 4.0)许可发布 许可证链接:https://creativecommons.org/licenses/by/4.0/ 许可依据:https://github.com/github/docs/blob/main/README.md#license 修改说明:昆仑编辑部于 2026-09-13 依据上述版本译为简体中文;未收录页面导航、侧栏与反馈表单等站点元素;站内相对链接改为指向原文站点的绝对链接;示例提示词中的自然语言已译为中文;GitHub 提示框(Tip)改写为引用块。译文依 CC BY 4.0 提供。 免责声明:原文与译文均按“现状”提供,不附带任何担保;CC BY 4.0 第 5 条的免责与责任限制同样适用于本译文。 不背书:本译文与 GitHub 无隶属关系,不代表 GitHub 立场,也不表示 GitHub 认可或赞助本站;GitHub、Copilot 等商标归其权利人所有,不在上述许可范围内。 示例代码块:github/docs 仓库声明其代码另依 MIT 许可提供;本文示例块位于上述 CC BY 4.0 覆盖的 content 目录,为稳妥起见一并保留 MIT 版权与许可声明原文如下。 MIT 许可原文链接:https://github.com/github/docs/blob/main/LICENSE-CODE MIT License Copyright 2026 GitHub Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.