GitHub Copilot 上下文工程实战指南与 7 个核心技巧
GitHub Copilot 的底层工作机制,重点阐述了通过上下文工程优化 AI 代码生成的七项核心技巧。内容包括建立项目规范(Project Constitution)、利用临近文件注入上下文、注释驱动开发、幽灵命名法、内联微调、Few-Shot 提示及自动化指令。旨在帮助开发者控制 AI 输入,获得符合生产级规范的 Java 代码,减少手动纠错成本。

GitHub Copilot 的底层工作机制,重点阐述了通过上下文工程优化 AI 代码生成的七项核心技巧。内容包括建立项目规范(Project Constitution)、利用临近文件注入上下文、注释驱动开发、幽灵命名法、内联微调、Few-Shot 提示及自动化指令。旨在帮助开发者控制 AI 输入,获得符合生产级规范的 Java 代码,减少手动纠错成本。

在学习技巧前,你需要理解 Copilot 的大脑构造。它不是在瞎猜,它是在根据你喂给它的'上下文(Context)'计算概率。
Copilot 的上下文由三层组成:
.github 里的规则(即'项目宪法'),权重最高。你的目标:控制这三层输入,从而控制输出。
—— 全局锁死技术栈与规范
.github/copilot-instructions.md,填入以下内容:# 项目规范 - 技术栈:Spring Boot 3 + MyBatis-Plus + Lombok - 数据库:PostgreSQL,主键自增 - 实体类:必须使用 @Data, @TableName - 禁止:禁止使用 JPA,禁止硬编码魔法值
效果:新建文件时,AI 会自动遵守所有规则,宛如一个入职 3 年的老员工。
—— 物理注入上下文
finish() 而不是 complete())。TodoController 之前,先打开 TodoItem.java(实体)和 TodoService.java(接口),并不要关闭。@PostMapping("/{id}/done")
public ApiResponse<TodoItem> done(@PathVariable Long id) {
// AI 此时拥有了上帝视角,它确切知道 Service 里有一个 completeTask 方法
// 自动补全:return ApiResponse.success(todoService.completeTask(id));
}
—— 思维链 (Chain of Thought) 注入
// 业务逻辑:完成任务
// 1. 查库,若 ID 不存在抛出 BusinessException
// 2. 检查任务是否已过期,若过期记录 WARN 日志
// 3. 更新状态 is_completed = true 并落库
public void completeTask(Long id) {
// (光标停在这里,回车)
}
效果:AI 会严格按照 1-2-3 的顺序生成逻辑严密的代码,绝不偷懒。
—— 变量名即指令
// 定义一个描述性极强的变量名
List<TodoItem> incompleteHighPriorityItems = ...;
// AI 瞬间生成:
// list.stream().filter(t -> !t.isCompleted() && t.getPriority() == 3)...
技巧:生成代码后,利用 IDE 快捷键 (Shift+F6) 把变量名改短即可。
—— 局部代码重构
Ctrl+I (Win) / Cmd+I (Mac) 进行原地修改。for 循环 -> Ctrl+I -> 输入:改为 Stream 流写法。"2025-10-01" -> Ctrl+I -> 输入:提取为常量。—— 专治复杂格式转换
// 解析规则示例:
// 输入:"[ERR] 101: DB_FAIL" -> level:ERR, code:101, msg:DB_FAIL
// 输入:"[INF] 200: OK" -> level:INF, code:200, msg:OK
// 解析:String log = "[WRN] 404: NOT_FOUND";
// (AI 会立即模仿上面的逻辑生成解析代码)
—— 摆脱垃圾时间
/ 指令自动化处理脏活累活。@workspace /tests 生成覆盖'边界条件'的测试。/doc(一键生成标准注释)。/fix 修复潜在的 Bug。# Smart Todo Project Constitution
## 1. 技术栈规范 (Tech Stack)
- **Core**: Java 17, Spring Boot 3.2+
- **ORM**: MyBatis-Plus 3.5+ (严禁使用 JPA/Hibernate)
- **JSON**: Jackson (严禁使用 Fastjson)
- **Utils**: Hutool 5.8+ (优先使用 StrUtil, CollUtil, ObjUtil)
## 2. 编码强制约束 (Coding Rules)
- **Controller**:
- 必须返回 `ApiResponse<T>`。
- 禁止在 Controller 层编写业务逻辑。
- **Entity**:
- 必须使用 Lombok `@Data`。
- 必须包含 `@TableName` 和 `@TableId`。
- **Service**:
- 推荐使用 `@RequiredArgsConstructor` 进行构造器注入。
- **Logging**:
- 必须使用 `@Slf4j`。
- 严禁使用 `System.out.println`。
## 3. 负向约束 (Negative Constraints)
- 禁止在循环中执行 SQL 查询 (N+1 问题)。
- 禁止生成带有 `// TODO` 的空方法。
- 禁止使用魔法值,必须提取为 Enum 或 Constant。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online