GitHub Copilot 是一個強大的 AI 編程助手,通過合理配置自定義指令,可以讓它更好地理解和遵循項目特定的編碼規范,省的每次提問時輸入重復提示語。
目錄
- 方法一:項目級別指令文件(推薦)
- 方法二:VS Code 工作區設置
- 方法三:代碼內注釋指令
- 實施建議
方法一:項目級別指令文件(推薦)
1. 創建 .github/.copilot-instructions.md
文件
官方文檔凌晨:https://copilot-instructions.md/#main-content-zh
在項目根目錄創建此文件,如果尚無 .github 目錄,則創建該目錄。Copilot 會自動讀取并作為上下文參考。
文件路徑跟是否啟用配置項如下,可以直接在vscode中搜索對應選項:
2.文件內容示例
# Copilot 代碼規范## 通用編程規范### 函數命名規范
- 使用駝峰命名法(camelCase)
- 函數名應該是動詞或動詞短語
- 布爾值返回的函數使用 is/has/can 前綴#### 示例:
```javascript
// ? 正確
function calculateTotalPrice(items) { }
function isUserLoggedIn() { }
function hasPermission(user, action) { }// ? 錯誤
function price(items) { }
function userLogin() { }
function permission(user, action) { }
也可以寫一些團隊規范,如:
### 組件開發規范
- React/Vue 組件使用 PascalCase 命名
- 組件文件名與組件名保持一致
- Props 使用 TypeScript 類型定義
- 狀態管理優先使用內置 hooks### API 調用規范
- 使用 async/await 而不是 Promise.then()
- 統一錯誤處理機制
- 請求參數使用 TypeScript 接口定義## 項目特定規范### 目錄結構約定
- `/src/components` - 可復用組件
- `/src/pages` - 頁面組件
- `/src/utils` - 工具函數
- `/src/types` - TypeScript 類型定義
- `/src/api` - API 接口封裝### 樣式規范
- 使用 CSS Modules 或 styled-components
- 顏色值使用 CSS 變量
- 響應式設計優先使用 flexbox 和 grid## 代碼提交規范### Git Commit 消息格式<type>(<scope>): <subject><body><footer>類型包括:
- `feat`: 新功能
- `fix`: 修復 bug
- `docs`: 文檔更新
- `style`: 代碼格式化
- `refactor`: 重構代碼
- `test`: 添加測試
- `chore`: 維護任務### 代碼審查要求
1. 所有 public 方法必須有 JSDoc 注釋
2. 復雜邏輯必須添加內聯注釋
3. 新增功能必須包含單元測試
4. 性能敏感代碼需要性能測試### API 設計原則
- RESTful API 設計規范
- 使用標準 HTTP 狀態碼
- 響應數據格式統一使用 JSON
- 分頁查詢統一參數命名
也可以針對特定技術棧創建指令:
# Vue.js 項目指令## 組件開發規范
- 使用 Composition API 優于 Options API
- 組件 props 必須定義 TypeScript 類型
- 事件命名使用 kebab-case
- 組件樣式使用 scoped## 狀態管理
- 使用 Pinia 進行狀態管理
- Store 模塊按功能劃分
- Actions 使用 async/await## 路由配置
- 路由懶加載
- 路由守衛統一處理權限
- 頁面標題動態設置
方法二:VS Code 工作區設置
項目級別設置
在項目根目錄創建 .vscode/settings.json
:
{"github.copilot.enable": {"*": true,"plaintext": false,"markdown": true},"github.copilot.advanced": {"customInstructions": "遵循項目編碼規范:函數使用駝峰命名,組件使用 PascalCase,優先使用 TypeScript 類型定義。API 調用使用 async/await。","inlineSuggestCount": 3},"editor.rulers": [80, 120],"editor.codeActionsOnSave": {"source.fixAll.eslint": true,"source.organizeImports": true}
}
用戶級別設置
打開 VS Code 設置(Ctrl+,
),在 settings.json
中添加:
{"github.copilot.advanced": {"inlineSuggestCount": 3,"customInstructions": "編寫清晰、可維護的代碼。優先使用現代 JavaScript/TypeScript 特性。函數命名要有描述性。添加必要的錯誤處理。"}
}
方法三:代碼內注釋指令
文件頂部注釋
/*** COPILOT: 本文件遵循以下規范* 1. 使用 TypeScript 嚴格模式* 2. 所有函數必須有類型定義* 3. 錯誤處理使用統一的 try-catch 模式* 4. 異步操作使用 async/await*/// COPILOT: 用戶相關的工具函數集合
export class UserUtils {// COPILOT: 驗證用戶權限,返回布爾值static hasPermission(user: User, permission: string): boolean {return user.permissions.includes(permission);}
}
內聯注釋指令
// COPILOT: 創建一個異步函數來獲取用戶數據,包含錯誤處理
async function fetchUserData(userId: string): Promise<User | null> {try {const response = await api.get(`/users/${userId}`);return response.data;} catch (error) {console.error('Failed to fetch user data:', error);return null;}
}// COPILOT: 使用防抖優化搜索功能
const debouncedSearch = debounce((query: string) => {performSearch(query);
}, 300);
特定功能指令
<template><!-- COPILOT: 創建一個響應式的用戶卡片組件,支持頭像、姓名、角色顯示 --><div class="user-card"><img :src="user.avatar" :alt="`${user.name}的頭像`" class="avatar" /><div class="user-info"><h3 class="user-name">{{ user.name }}</h3><span class="user-role">{{ user.role }}</span></div></div>
</template><script setup lang="ts">
// COPILOT: 定義用戶接口類型,包含必要的屬性
interface User {id: string;name: string;avatar: string;role: string;email: string;
}defineProps<{user: User;
}>();
</script>
實施建議
1. 優先級排序
-
項目級別指令文件(
.copilot-instructions.md
)- 最高優先級- 被版本控制跟蹤
- 團隊共享
- 項目特定規范
-
VS Code 工作區設置(
.vscode/settings.json
)- 開發環境配置
- 編輯器行為定制
- 插件配置統一
-
代碼內注釋指令
- 文件或函數級別的特定指導
- 臨時性指令
- 上下文相關提示
2. 團隊協作最佳實踐
規范制定流程
- 團隊討論 - 收集團隊成員意見
- 試運行 - 在小范圍內測試規范效果
- 正式采用 - 將規范納入項目文檔
- 持續改進 - 定期評估和更新規范
規范執行策略
# 規范執行檢查清單## 代碼提交前檢查
- [ ] ESLint 檢查通過
- [ ] TypeScript 編譯無錯誤
- [ ] 單元測試覆蓋率滿足要求
- [ ] API 文檔已更新
- [ ] 性能測試通過## 代碼審查要點
- [ ] 函數命名符合規范
- [ ] 錯誤處理完整
- [ ] TypeScript 類型定義準確
- [ ] 注釋清晰易懂
- [ ] 無安全漏洞
3. 監控和改進
指令效果評估
// 定期評估 Copilot 建議質量
const evaluateCopilotSuggestions = {metrics: {acceptance_rate: '建議接受率',code_quality: '生成代碼質量',consistency: '規范一致性',productivity: '開發效率提升'},collection_methods: ['開發者反饋調研','代碼審查記錄分析','自動化質量檢測','性能指標監控']
};
持續優化策略
- 定期回顧 - 每月評估規范執行情況
- 反饋收集 - 建立開發者反饋渠道
- 指令調整 - 根據實際使用情況優化指令
- 培訓更新 - 定期培訓團隊新規范
4. 常見問題和解決方案
Q: Copilot 不遵循自定義指令怎么辦?
A:
- 檢查指令文件格式是否正確
- 確保指令描述清晰具體
- 在代碼中添加更多上下文注釋
- 使用多種方法組合(文件 + 注釋 + 設置)
Q: 團隊成員遵循程度不一致?
A:
- 將規范集成到 CI/CD 流程
- 使用自動化工具強制檢查
- 定期進行代碼審查培訓
- 建立規范違反的反饋機制
Q: 如何平衡規范嚴格性和開發效率?
A:
- 區分強制性規范和建議性規范
- 提供自動化工具減少手動工作
- 根據項目階段調整規范嚴格程度
- 收集開發者反饋及時調整
結論
通過合理配置 GitHub Copilot 的自定義指令,可以顯著提高代碼生成的質量和一致性。建議采用多種方法的組合:
- 使用項目級別指令文件作為主要規范載體
- 配置 VS Code 工作區設置統一開發環境
- 在關鍵代碼處添加內聯注釋指導
- 集成 ESLint 等工具強制執行規范
- 建立完善的團隊協作和監控機制
記住,最好的規范是團隊都能理解、接受并愿意執行的規范。在制定和實施過程中,要充分考慮團隊實際情況,持續優化改進。