粤老四易千五 發表於 2026-2-25 10:37:00

GitHub Copilot CLI 完整使用教程

<h1 id="github-copilot-cli-完整使用教程">GitHub Copilot CLI 完整使用教程</h1>
<h3 id="以基于深度学习的社交媒体账号被盗风险预警系统为实战案例">以《基于深度学习的社交媒体账号被盗风险预警系统》为实战案例</h3>
<blockquote>
<p><strong>版本说明</strong>:本教程基于 2025 年 GitHub Copilot CLI 最新官方文档编写,当前处于 Public Preview 阶段,功能持续迭代。</p>
<p><strong>项目背景</strong>:本教程全程以"基于深度学习的社交媒体账号被盗风险预警系统"(下称"预警系统")为实战项目,演示从项目初始化、功能开发、测试、代码审查到 GitHub 工作流的完整开发过程。</p>
</blockquote>
<hr>
<h2 id="目录">目录</h2>
<ol>
<li>GitHub Copilot CLI 是什么?</li>
<li>前置条件与安装</li>
<li>认证登录</li>
<li>核心概念与界面说明</li>
<li>基础使用:从对话开始</li>
<li>实战第一阶段:项目规划与初始化</li>
<li>实战第二阶段:核心功能开发</li>
<li>实战第三阶段:调试与测试</li>
<li>实战第四阶段:代码审查与重构</li>
<li>实战第五阶段:GitHub 工作流</li>
<li>进阶功能详解</li>
<li>自定义配置</li>
<li>常见问题排查</li>
</ol>
<hr>
<h2 id="一github-copilot-cli-是什么">一、GitHub Copilot CLI 是什么?</h2>
<p>GitHub Copilot CLI 是 GitHub 在 2025 年推出的<strong>终端原生 AI 编程代理(Agent)</strong>,让你可以直接在命令行中用自然语言驱动 Copilot 完成各类开发任务。</p>
<h3 id="它能做什么">它能做什么</h3>
<ul>
<li>理解整个代码库的结构和逻辑</li>
<li>编写、修改、重构代码文件</li>
<li>运行命令、执行测试、修复报错</li>
<li>处理 Git 操作:提交、分支、合并冲突</li>
<li>原生操作 GitHub:Issues、PR、代码审查</li>
<li>通过 MCP 接入 GitHub 以外的外部工具</li>
</ul>
<h3 id="重要新旧版本的区别">重要:新旧版本的区别</h3>
<p>很多资料仍在介绍老版本的 <code>gh copilot</code> 扩展,那个版本<strong>已于 2025 年 10 月 25 日正式弃用</strong>。新版 GitHub Copilot CLI 是完全独立的工具,是真正的 Agent,能力不可同日而语。本教程介绍的是<strong>新版</strong>。</p>
<h3 id="一个有趣的事实">一个有趣的事实</h3>
<p>GitHub Copilot CLI <strong>默认使用 Claude Sonnet 4.5 作为底层模型</strong>,同时支持切换到 GPT-5、Gemini 等模型。也就是说,你在用 Copilot CLI 时,背后很可能是 Claude 在工作。</p>
<hr>
<h2 id="二前置条件与安装">二、前置条件与安装</h2>
<h3 id="前置条件">前置条件</h3>
<p>在安装之前,确认你具备以下条件:</p>
<p><strong>必须有:</strong></p>
<ul>
<li>有效的 GitHub Copilot 付费订阅(Free、Pro、Business 或 Enterprise 均可)</li>
<li>Node.js <strong>22 或更高版本</strong>(这是硬性要求)</li>
<li>npm <strong>10 或更高版本</strong></li>
</ul>
<blockquote>
<p><strong>关于组织用户</strong>:如果你的 Copilot 权限来自所在组织,需要组织管理员在组织设置中启用 Copilot CLI 功能,否则即使安装成功也无法使用。</p>
</blockquote>
<p><strong>检查 Node.js 和 npm 版本:</strong></p>
<pre><code class="language-bash">node --version   # 应该输出 v22.x.x 或更高
npm --version    # 应该输出 10.x.x 或更高
</code></pre>
<p>如果版本不满足要求,前往 https://nodejs.org 下载安装最新 LTS 版本。</p>
<h3 id="安装-github-copilot-cli">安装 GitHub Copilot CLI</h3>
<p>目前官方唯一推荐的安装方式是通过 npm:</p>
<pre><code class="language-bash">npm install -g @github/copilot
</code></pre>
<blockquote>
<p><strong>注意</strong>:与 Claude Code 不同,GitHub Copilot CLI 目前只有 npm 这一种安装方式,没有其他原生安装脚本。</p>
</blockquote>
<h3 id="验证安装">验证安装</h3>
<pre><code class="language-bash">copilot --version
</code></pre>
<p>如果打印出版本号,说明安装成功。</p>
<h3 id="更新到最新版本">更新到最新版本</h3>
<pre><code class="language-bash">npm install -g @github/copilot
</code></pre>
<p>更新命令与安装命令相同,npm 会自动安装最新版本。</p>
<hr>
<h2 id="三认证登录">三、认证登录</h2>
<h3 id="首次登录">首次登录</h3>
<p>安装完成后,进入任意项目目录启动 Copilot CLI:</p>
<pre><code class="language-bash">mkdir social-media-risk-warning
cd social-media-risk-warning
copilot
</code></pre>
<p>首次运行时,Copilot CLI 会提示你通过 <code>/login</code> 命令登录:</p>
<pre><code>Welcome to GitHub Copilot CLI
&gt; /login
</code></pre>
<p>按照屏幕上的提示,在浏览器中完成 GitHub 账户授权即可。</p>
<h3 id="使用-personal-access-token适合-cicd-环境">使用 Personal Access Token(适合 CI/CD 环境)</h3>
<p>如果需要在无头环境(服务器、CI/CD 流水线)中使用,可以通过 Token 认证:</p>
<p><strong>第一步</strong>:前往 GitHub → Settings → Developer settings → Fine-grained personal access tokens → Generate new token</p>
<p><strong>第二步</strong>:在 Permissions 中添加 <strong>"Copilot Requests"</strong> 权限(这是必须的)</p>
<p><strong>第三步</strong>:将 Token 配置到环境变量:</p>
<pre><code class="language-bash"># 临时设置(仅当前终端会话有效)
export GH_TOKEN="ghp_your_token_here"

# 永久设置(写入 shell 配置文件)
echo 'export GH_TOKEN="ghp_your_token_here"' &gt;&gt; ~/.zshrc
source ~/.zshrc

# 验证
echo $GH_TOKEN
</code></pre>
<hr>
<h2 id="四核心概念与界面说明">四、核心概念与界面说明</h2>
<h3 id="启动与目录信任">启动与目录信任</h3>
<p>每次进入一个新目录启动 Copilot CLI,它都会询问你是否信任当前目录的文件:</p>
<pre><code>Do you trust the files in this folder?
1. Yes, proceed
2. Yes, and remember this folder for future sessions
3. No, exit (Esc)
</code></pre>
<p><strong>选项说明:</strong></p>
<ul>
<li>选 <strong>1</strong>(推荐初次使用):本次会话信任,下次还会问</li>
<li>选 <strong>2</strong>(熟悉的项目):永久信任此目录,以后不再询问</li>
<li>选 <strong>3</strong>:退出</li>
</ul>
<blockquote>
<p><strong>安全提示</strong>:信任目录意味着 Copilot CLI 可以在此目录及其子目录中读取、修改、执行文件。只对你完全信任的项目选择"记住此目录"。</p>
</blockquote>
<h3 id="两种工作模式">两种工作模式</h3>
<p>按 <strong><code>Shift+Tab</code></strong> 可以在两种模式间循环切换:</p>
<p><strong>普通模式(默认)</strong>:你发出指令,Copilot 立即执行,遇到敏感操作(修改文件、运行命令)时逐步请求确认。</p>
<p><strong>计划模式(Plan Mode)</strong>:Copilot 先充分提问、理解需求,制定完整的实施计划,经你确认后再开始执行。适合复杂的多步骤任务,可以在动手前发现需求误解。</p>
<p><strong>自动驾驶模式(Autopilot Mode)</strong>:继续按 <code>Shift+Tab</code> 切到 "autopilot",Copilot 会自主决策完成整个任务,减少逐步确认。适合你完全信任且任务明确的场景,但要谨慎使用。</p>
<h3 id="工具权限确认">工具权限确认</h3>
<p>当 Copilot 需要执行可能修改系统的操作时(如 <code>touch</code>、<code>chmod</code>、<code>node</code>、<code>sed</code>、<code>rm</code> 等),会弹出权限请求:</p>
<pre><code>Copilot wants to run: touch src/models/lstm_detector.py
1. Yes
2. Yes, and approve 'touch' for the rest of this session
3. No, and tell Copilot what to do differently (Esc)
</code></pre>
<p><strong>建议策略</strong>:对 <code>touch</code>、<code>mkdir</code>、<code>chmod</code> 等低风险命令可以选 2 永久允许;对 <code>rm</code>、<code>curl</code> 等高风险命令每次手动确认。</p>
<h3 id="核心斜杠命令速查">核心斜杠命令速查</h3>
<table>
<thead>
<tr>
<th>命令</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>/login</code></td>
<td>登录 GitHub 账户</td>
</tr>
<tr>
<td><code>/help</code> 或 <code>?</code></td>
<td>查看所有可用命令</td>
</tr>
<tr>
<td><code>/clear</code></td>
<td>清除当前对话历史</td>
</tr>
<tr>
<td><code>/compact</code></td>
<td>压缩对话历史,释放上下文空间</td>
</tr>
<tr>
<td><code>/context</code></td>
<td>查看当前 token 使用情况</td>
</tr>
<tr>
<td><code>/usage</code></td>
<td>查看本次会话的 token 统计</td>
</tr>
<tr>
<td><code>/model</code></td>
<td>切换 AI 模型</td>
</tr>
<tr>
<td><code>/agent</code></td>
<td>切换或调用自定义 Agent</td>
</tr>
<tr>
<td><code>/review</code></td>
<td>对当前代码改动进行审查</td>
</tr>
<tr>
<td><code>/mcp add</code></td>
<td>添加 MCP 服务器</td>
</tr>
<tr>
<td><code>/add-dir /path</code></td>
<td>添加信任目录</td>
</tr>
<tr>
<td><code>/cwd /path</code></td>
<td>切换工作目录</td>
</tr>
<tr>
<td><code>/delegate &lt;任务&gt;</code></td>
<td>将任务委托给 Copilot Coding Agent</td>
</tr>
<tr>
<td><code>/resume</code></td>
<td>恢复历史会话</td>
</tr>
<tr>
<td><code>/feedback</code></td>
<td>提交反馈</td>
</tr>
</tbody>
</table>
<h3 id="命令行参数速查">命令行参数速查</h3>
<table>
<thead>
<tr>
<th>参数</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>copilot</code></td>
<td>启动交互会话</td>
</tr>
<tr>
<td><code>copilot -p "查询"</code></td>
<td>单次查询后退出</td>
</tr>
<tr>
<td><code>copilot --continue</code></td>
<td>继续最近一次会话</td>
</tr>
<tr>
<td><code>copilot --resume</code></td>
<td>从历史会话中选择恢复</td>
</tr>
<tr>
<td><code>copilot --autopilot</code></td>
<td>以自动驾驶模式启动</td>
</tr>
<tr>
<td><code>copilot --yolo</code></td>
<td>允许所有工具权限(谨慎)</td>
</tr>
<tr>
<td><code>copilot --allow-all</code></td>
<td>同上</td>
</tr>
<tr>
<td><code>copilot help</code></td>
<td>查看完整帮助</td>
</tr>
</tbody>
</table>
<hr>
<h2 id="五基础使用从对话开始">五、基础使用:从对话开始</h2>
<p>在正式进入实战项目之前,先掌握几个基础交互技巧。</p>
<h3 id="引用特定文件">引用特定文件</h3>
<p>在 prompt 中用 <code>@</code> 加相对路径来引用文件,Copilot 会将文件内容加入上下文:</p>
<pre><code>&gt; 解释一下 @src/models/detector.py 的工作原理
&gt; 修复 @src/api/routes.py 中的这个问题
</code></pre>
<p>开始输入 <code>@</code> 后,CLI 会自动补全路径提示,用方向键选择,<code>Tab</code> 确认。</p>
<h3 id="直接运行-shell-命令">直接运行 Shell 命令</h3>
<p>在 prompt 前加 <code>!</code> 可以直接运行 Shell 命令,不经过 AI:</p>
<pre><code>!git status
!ls -la src/
!pip install -r requirements.txt
</code></pre>
<h3 id="中途修改方向">中途修改方向</h3>
<p>当 Copilot 正在"思考"时,你可以:</p>
<ul>
<li>按 <code>Esc</code> 停止当前操作</li>
<li>直接输入新的补充指令,它会把这条指令排队在当前响应完成后执行</li>
</ul>
<h3 id="查看模型推理过程">查看模型推理过程</h3>
<p>按 <code>Ctrl+T</code> 可以显示或隐藏模型的推理过程,帮助你理解 Copilot 是如何规划任务的。这个设置在会话之间保持。</p>
<hr>
<h2 id="六实战第一阶段项目规划与初始化">六、实战第一阶段:项目规划与初始化</h2>
<p>现在开始实战。我们要构建的是<strong>基于深度学习的社交媒体账号被盗风险预警系统</strong>,具体包括:</p>
<ul>
<li>用户行为特征提取(登录时间、地理位置、设备指纹、操作频率等)</li>
<li>基于 LSTM 的异常行为检测模型</li>
<li>实时风险评分引擎</li>
<li>预警通知系统(短信/邮件/App推送)</li>
<li>RESTful API 后端(FastAPI)</li>
<li>管理后台</li>
</ul>
<h3 id="步骤-1使用计划模式进行项目规划">步骤 1:使用计划模式进行项目规划</h3>
<p>这类复杂项目,强烈建议先用计划模式让 Copilot 充分理解需求再动手。</p>
<pre><code class="language-bash">mkdir social-media-risk-warning
cd social-media-risk-warning
copilot
</code></pre>
<p>进入后按 <code>Shift+Tab</code> 切换到计划模式,然后输入:</p>
<pre><code>我要开发一个基于深度学习的社交媒体账号被盗风险预警系统。
系统需要:
1. 采集用户行为特征:登录时间序列、IP地理位置、设备指纹、操作行为序列
2. 使用LSTM神经网络检测异常行为模式
3. 实时计算风险评分(0-100分)
4. 当风险分超过阈值时触发多渠道预警(短信、邮件、App推送)
5. 提供RESTful API供前端调用
技术栈:Python 3.11 + FastAPI + PyTorch + PostgreSQL + Redis + Celery

请帮我制定完整的项目架构方案和开发计划,不要急着写代码。
</code></pre>
<p>Copilot 会在计划模式下提问并给出架构方案,例如询问:预期用户规模是多少?是否需要支持多平台?预警延迟要求是什么?</p>
<p>根据你的回答,它会给出详细的目录结构和开发顺序。确认后切回普通模式开始执行。</p>
<h3 id="步骤-2生成项目骨架">步骤 2:生成项目骨架</h3>
<p>确认架构方案后,在普通模式下输入:</p>
<pre><code>按照刚才的架构方案,初始化项目目录结构,
创建所有必要的目录和空文件,
同时生成 requirements.txt 和 .gitignore
</code></pre>
<p>Copilot 会依次请求 <code>mkdir</code>、<code>touch</code> 等命令的权限,逐一创建。完成后你会得到类似这样的结构:</p>
<pre><code>social-media-risk-warning/
├── src/
│   ├── api/
│   │   ├── __init__.py
│   │   ├── main.py         # FastAPI 应用入口
│   │   ├── routes/
│   │   │   ├── auth.py
│   │   │   ├── risk.py
│   │   │   └── alert.py
│   │   └── middleware/
│   │       └── auth_middleware.py
│   ├── models/
│   │   ├── __init__.py
│   │   ├── lstm_detector.py# LSTM 异常检测模型
│   │   ├── feature_extractor.py
│   │   └── risk_scorer.py
│   ├── services/
│   │   ├── alert_service.py# 预警通知服务
│   │   ├── user_service.py
│   │   └── risk_service.py
│   ├── db/
│   │   ├── models.py         # SQLAlchemy 数据模型
│   │   └── database.py
│   ├── tasks/
│   │   └── celery_tasks.py   # Celery 异步任务
│   └── utils/
│       ├── device_fingerprint.py
│       └── geo_utils.py
├── tests/
│   ├── test_models.py
│   ├── test_api.py
│   └── test_services.py
├── data/
│   └── sample_behavior_logs.json
├── notebooks/
│   └── model_training.ipynb
├── requirements.txt
├── .gitignore
├── docker-compose.yml
└── README.md
</code></pre>
<h3 id="步骤-3初始化-git-仓库">步骤 3:初始化 Git 仓库</h3>
<pre><code>帮我初始化 Git 仓库,创建第一个提交,
提交信息说明这是项目的初始骨架
</code></pre>
<p>Copilot 会执行:</p>
<pre><code class="language-bash">git init
git add .
git commit -m "feat: initialize project structure for social media account risk warning system"
</code></pre>
<h3 id="步骤-4生成自定义指令文件">步骤 4:生成自定义指令文件</h3>
<p>这是一个重要步骤。创建 <code>.github/copilot-instructions.md</code>,让 Copilot 在整个项目中始终记住项目规范:</p>
<pre><code>帮我创建 .github/copilot-instructions.md 文件,内容包括:
- 项目名称和用途
- 技术栈说明
- 编码规范(使用 Black 格式化,类型注解,docstring)
- 安全要求(所有 API 接口必须鉴权,敏感数据必须加密)
- 模型训练要求(所有模型必须可以序列化保存)
</code></pre>
<hr>
<h2 id="七实战第二阶段核心功能开发">七、实战第二阶段:核心功能开发</h2>
<h3 id="71-实现-lstm-异常检测模型">7.1 实现 LSTM 异常检测模型</h3>
<pre><code>在 src/models/lstm_detector.py 中实现 LSTM 异常行为检测模型,要求:

1. 输入:用户行为序列(时间步长30,特征维度包括:
   - 登录时间(0-23小时归一化)
   - 登录地理位置(经纬度归一化)
   - 设备指纹哈希值(one-hot编码)
   - 操作类型(发帖/评论/私信/登录,one-hot编码)
   - 操作间隔时间(秒,log归一化))

2. 模型结构:双层双向LSTM + Attention机制 + 全连接层

3. 输出:异常概率(0-1的浮点数)

4. 包含完整的 train、predict、save_model、load_model 方法

5. 所有方法都要有类型注解和 docstring
</code></pre>
<p>Copilot 会请求 <code>write</code> 权限写入文件。生成后,你可以继续追问:</p>
<pre><code>&gt; 我觉得 Attention 机制的实现可以更高效,
参考 Scaled Dot-Product Attention 的实现方式重构一下
</code></pre>
<h3 id="72-实现特征提取器">7.2 实现特征提取器</h3>
<pre><code>在 src/models/feature_extractor.py 中实现特征提取器:

1. 从原始日志中提取行为特征:
   - 设备指纹:基于 User-Agent + 屏幕分辨率 + 时区,
   使用 MD5 生成32位指纹
   - 地理位置异常:当前IP与历史常用IP的物理距离(km)
   - 时间异常:当前登录时间与用户历史登录时间分布的偏差

2. 返回标准化的特征向量,维度需要和 lstm_detector.py 的输入匹配

3. 实现 fit(学习用户历史基线)和 transform(提取特征)方法
</code></pre>
<h3 id="73-实现风险评分引擎">7.3 实现风险评分引擎</h3>
<pre><code>在 src/models/risk_scorer.py 中实现风险评分引擎:

规则:
- LSTM 异常概率 × 60(占比60%)
- 地理位置异常程度 × 20(占比20%)
- 设备变更 × 10(新设备登录加10分)
- 时间异常 × 10(非常用时段加10分)
- 最终分数在 0-100 之间

风险等级:
- 0-30:低风险(green)
- 31-60:中风险(yellow)
- 61-80:高风险(orange)
- 81-100:极高风险(red)

实现 calculate_score(features: dict) -&gt; RiskResult 方法,
RiskResult 是一个包含 score、level、reasons 字段的 dataclass
</code></pre>
<h3 id="74-实现-fastapi-路由">7.4 实现 FastAPI 路由</h3>
<pre><code>在 src/api/routes/risk.py 中实现风险检测 API:

接口1:POST /api/v1/risk/analyze
- 接收用户行为日志
- 调用特征提取 + 模型推理 + 风险评分
- 返回风险结果

接口2:GET /api/v1/risk/history/{user_id}
- 查询用户历史风险记录
- 支持分页(page, page_size 参数)

接口3:POST /api/v1/risk/threshold
- 更新风险预警阈值配置

所有接口需要 JWT 鉴权,
使用 FastAPI 的依赖注入实现鉴权中间件,
请求和响应都需要 Pydantic 模型定义
</code></pre>
<h3 id="75-实现预警服务">7.5 实现预警服务</h3>
<pre><code>在 src/services/alert_service.py 中实现多渠道预警服务:

支持三种渠道:
1. 邮件(使用 SMTP,模板化邮件内容)
2. 短信(接口预留,具体实现用占位符)
3. 站内推送(写入 Redis 消息队列,供 WebSocket 消费)

实现:
- AlertService 类
- send_alert(user_id, risk_result, channels=['email', 'sms']) 方法
- 当风险分超过70分时,记录到数据库
- 对同一用户,5分钟内不重复发送相同级别的预警(Redis 去重)
</code></pre>
<hr>
<h2 id="八实战第三阶段调试与测试">八、实战第三阶段:调试与测试</h2>
<h3 id="81-调试运行时错误">8.1 调试运行时错误</h3>
<p>假设你运行 FastAPI 时遇到了报错:</p>
<pre><code>!uvicorn src.api.main:app --reload
</code></pre>
<p>如果出现错误,直接在 Copilot CLI 中描述:</p>
<pre><code>运行 uvicorn 时报错:
ImportError: cannot import name 'RiskResult' from 'src.models.risk_scorer'

我在 src/api/routes/risk.py 中导入了这个类,
但在 @src/models/risk_scorer.py 里好像定义有问题,
帮我排查并修复
</code></pre>
<p>Copilot 会自动读取相关文件,定位问题并修复。</p>
<h3 id="82-使用-task-agent-运行测试">8.2 使用 Task Agent 运行测试</h3>
<p>Copilot CLI 内置了 <code>Task</code> 自定义 Agent,专门用于执行命令类任务:</p>
<pre><code>使用 Task agent 运行测试套件,执行 pytest tests/ -v,
如果有测试失败,给我完整的错误输出
</code></pre>
<p>或者直接调用:</p>
<pre><code>/agent task
&gt; 运行 pytest tests/ -v 并告诉我有没有失败
</code></pre>
<h3 id="83-编写单元测试">8.3 编写单元测试</h3>
<pre><code>为 @src/models/lstm_detector.py 编写完整的单元测试,
保存到 tests/test_lstm_detector.py:

测试用例要覆盖:
1. 模型初始化(不同参数)
2. 前向传播(输入维度验证)
3. 训练过程(loss 应该逐步下降)
4. 模型保存和加载(保存后重新加载,预测结果应一致)
5. 边界情况(全零输入、极端值输入)

使用 pytest + torch.testing
</code></pre>
<h3 id="84-为-api-编写集成测试">8.4 为 API 编写集成测试</h3>
<pre><code>为 @src/api/routes/risk.py 的三个接口写集成测试,
使用 FastAPI 的 TestClient,
需要 mock 掉 LSTM 模型的调用(避免测试依赖模型文件),
测试覆盖:正常请求、缺少鉴权、参数校验失败三种情况
</code></pre>
<h3 id="85-使用-review-命令做代码审查">8.5 使用 /review 命令做代码审查</h3>
<p>开发了一段代码之后,在提交前可以快速审查:</p>
<pre><code>/review
</code></pre>
<p>Copilot 会分析当前的 <code>git diff</code>,指出潜在问题,包括安全漏洞、边界情况和性能问题。</p>
<hr>
<h2 id="九实战第四阶段代码审查与重构">九、实战第四阶段:代码审查与重构</h2>
<h3 id="91-使用-code-review-agent">9.1 使用 Code-review Agent</h3>
<p>Copilot CLI 内置了 Code-review Agent,专门处理代码审查任务,聚焦于真正的问题、减少噪音:</p>
<pre><code>/agent code-review
&gt; 审查 src/models/ 目录下所有文件,重点关注:
1. 安全漏洞(如 SQL 注入、不安全的反序列化)
2. 内存泄漏(PyTorch 张量未释放)
3. 类型注解是否完整
</code></pre>
<h3 id="92-重构提升性能">9.2 重构:提升性能</h3>
<pre><code>@src/models/lstm_detector.py 的 predict 方法在处理大批量请求时性能较差,
目前是逐条处理,帮我重构成批量处理(batch prediction),
要求:
1. 支持输入 List] 批量特征
2. 使用 torch.no_grad() 推理
3. 结果返回 List
4. 添加批量大小(batch_size)参数,默认32
</code></pre>
<h3 id="93-重构添加缓存层">9.3 重构:添加缓存层</h3>
<pre><code>风险评分的计算比较耗时,同一用户5秒内的重复请求应该直接返回缓存结果。

在 src/services/risk_service.py 中:
1. 引入 Redis 缓存
2. 用 user_id + 行为特征的 MD5 作为缓存 key
3. 缓存有效期5秒
4. 缓存未命中时才调用模型计算
</code></pre>
<h3 id="94-使用-explore-agent-分析现有代码">9.4 使用 Explore Agent 分析现有代码</h3>
<p>如果你想快速了解某个模块而不影响主要上下文,使用 Explore Agent:</p>
<pre><code>/agent explore
&gt; 分析 src/db/models.py 的数据库设计,
告诉我是否有可以优化的索引,
以及 UserBehaviorLog 表的查询是否会有性能问题
</code></pre>
<hr>
<h2 id="十实战第五阶段github-工作流">十、实战第五阶段:GitHub 工作流</h2>
<p>这是 GitHub Copilot CLI 相比其他 CLI 工具的最大优势——原生理解 GitHub 上下文。</p>
<h3 id="101-提交代码">10.1 提交代码</h3>
<pre><code>提交当前所有改动,写一个符合 Conventional Commits 规范的提交信息,
说明本次主要实现了 LSTM 检测模型和风险评分引擎
</code></pre>
<p>Copilot 会执行:</p>
<pre><code class="language-bash">git add .
git commit -m "feat(model): implement LSTM anomaly detector and risk scoring engine

- Add BiLSTM with attention mechanism for behavior sequence analysis
- Implement multi-dimensional feature extraction (time, geo, device, ops)
- Add weighted risk scoring with 4-level classification
- Include model serialization and batch prediction support"
</code></pre>
<h3 id="102-创建功能分支">10.2 创建功能分支</h3>
<pre><code>我要开始开发预警通知系统,
帮我从 main 分支创建一个新的功能分支 feature/alert-system,
并切换过去
</code></pre>
<h3 id="103-推送并创建-pull-request">10.3 推送并创建 Pull Request</h3>
<p>开发完成后:</p>
<pre><code>把当前分支推送到 GitHub,
然后创建一个 Pull Request,目标分支是 main,
PR 标题和描述要包含:
- 本次实现的功能概述
- 主要变更文件列表
- 测试覆盖情况
- 是否有 Breaking Changes
</code></pre>
<p>Copilot 会通过内置的 GitHub MCP 服务器完成整个操作,不需要你手动在网页上操作。</p>
<h3 id="104-从-issue-直接实现功能">10.4 从 Issue 直接实现功能</h3>
<p>假设你在 GitHub 上有一个 Issue #12 描述了"需要支持 Webhook 回调通知":</p>
<pre><code>基于 GitHub issue #12 的描述实现 Webhook 回调通知功能,
实现完成后自动创建 PR 并关联到这个 issue
</code></pre>
<p>Copilot 会读取 Issue 内容,实现功能,创建 PR,并在 PR 描述中自动添加 <code>Closes #12</code>。</p>
<h3 id="105-查看和处理-issues">10.5 查看和处理 Issues</h3>
<pre><code>&gt; 显示这个仓库所有 open 状态的 Issues,按优先级排序
&gt; 把 issue #8 标记为 in progress,并把它分配给我
&gt; 总结最近一周新增的所有 Issues 和它们的共同主题
</code></pre>
<h3 id="106-委托复杂任务给-coding-agent">10.6 委托复杂任务给 Coding Agent</h3>
<p>对于耗时较长的任务,可以委托给 Copilot Coding Agent 在 GitHub 后台完成,你去做别的事:</p>
<pre><code>/delegate 为整个项目编写完整的 API 文档,
包括每个接口的 OpenAPI 注释、请求示例、响应示例,
完成后创建 PR
</code></pre>
<p>或者用 <code>&amp;</code> 前缀快速委托:</p>
<pre><code>&amp; 把所有缺少 docstring 的函数都补上文档注释
</code></pre>
<p>Copilot 会提交当前的未暂存改动作为检查点,在新分支上工作,完成后开 PR 请你 Review。</p>
<h3 id="107-恢复远程会话到本地">10.7 恢复远程会话到本地</h3>
<p>如果你在 GitHub 网页上启动了一个 Copilot 会话,可以把它拉到本地继续:</p>
<pre><code>/resume
</code></pre>
<p>选择对应的远程会话即可无缝接续。</p>
<hr>
<h2 id="十一进阶功能详解">十一、进阶功能详解</h2>
<h3 id="111-自定义指令custom-instructions">11.1 自定义指令(Custom Instructions)</h3>
<p>除了 <code>.github/copilot-instructions.md</code>,还可以用路径特定指令文件:</p>
<pre><code>.github/instructions/
├── models.instructions.md      # 只对 src/models/ 目录生效
├── api.instructions.md         # 只对 src/api/ 目录生效
└── testing.instructions.md   # 只对 tests/ 目录生效
</code></pre>
<p>示例 <code>models.instructions.md</code>:</p>
<pre><code class="language-markdown">---
applyTo: "src/models/**"
---

# 模型开发规范

- 所有 PyTorch 模型必须继承 nn.Module
- 必须实现 forward、save_model、load_model 方法
- 推理时使用 torch.no_grad() 装饰
- 模型文件保存为 .pt 格式,同时保存配置为 .json
- 不允许在模型代码中直接写数据库操作
</code></pre>
<h3 id="112-上下文管理">11.2 上下文管理</h3>
<p>长时间工作后,对话历史会接近 token 上限。Copilot CLI 会在达到 95% 时自动压缩,你也可以手动管理:</p>
<pre><code class="language-bash"># 查看当前 token 使用情况
/context

# 查看本次会话统计
/usage

# 手动压缩(会话历史被总结,减少 token 占用)
/compact
</code></pre>
<h3 id="113-mcp-扩展">11.3 MCP 扩展</h3>
<p>Copilot CLI 内置了 GitHub MCP 服务器。你可以额外添加其他 MCP 服务器扩展能力:</p>
<pre><code class="language-bash">/mcp add
</code></pre>
<p>按提示填写 MCP 服务器信息(以 PostgreSQL MCP 为例):</p>
<pre><code>Name: postgres
Command: npx
Args: -y @modelcontextprotocol/server-postgres postgresql://localhost/risk_warning_db
</code></pre>
<p>添加后,就可以直接查询数据库了:</p>
<pre><code>&gt; 查询过去24小时内风险分超过80的用户数量,按小时分组统计
&gt; 找出最近7天内被触发过3次以上预警的用户列表
</code></pre>
<h3 id="114-hooks在特定时机自动执行操作">11.4 Hooks:在特定时机自动执行操作</h3>
<p>Hooks 允许你在 Copilot 执行特定操作前后自动运行命令,比如每次修改 Python 文件后自动运行 linter:</p>
<p>在 <code>.github/copilot-cli-hooks.json</code> 中配置:</p>
<pre><code class="language-json">{
"post-write": [
    {
      "match": "**/*.py",
      "command": "black {file} &amp;&amp; ruff check {file} --fix"
    }
],
"pre-commit": [
    {
      "command": "pytest tests/ -q --tb=short"
    }
]
}
</code></pre>
<hr>
<h2 id="十二自定义配置">十二、自定义配置</h2>
<p>配置文件位于 <code>~/.copilot/config.json</code>,可以通过命令查看配置项:</p>
<pre><code class="language-bash">copilot help config
</code></pre>
<h3 id="常用配置项">常用配置项</h3>
<pre><code class="language-json">{
"model": "claude-sonnet-4-5",
"theme": "dark",
"show_reasoning": false,
"auto_compact": true,
"trusted_dirs": [
    "/Users/yourname/projects/social-media-risk-warning"
]
}
</code></pre>
<h3 id="切换模型">切换模型</h3>
<p>在交互界面中:</p>
<pre><code>/model
</code></pre>
<p>可用模型包括(根据你的订阅级别):</p>
<ul>
<li>Claude Sonnet 4.5(默认)</li>
<li>Claude Sonnet 4(高质量推理)</li>
<li>GPT-4.1</li>
<li>Gemini 2.0 Flash</li>
<li>更多见 <code>/model</code> 列表</li>
</ul>
<hr>
<h2 id="十三常见问题排查">十三、常见问题排查</h2>
<h3 id="问题一copilot-命令找不到">问题一:<code>copilot</code> 命令找不到</h3>
<pre><code class="language-bash"># 检查全局 npm 安装路径
npm list -g @github/copilot

# 确认 npm 全局路径在 PATH 中
npm config get prefix
echo $PATH

# 临时修复
export PATH="$(npm config get prefix)/bin:$PATH"

# 永久修复(加入 ~/.zshrc 或 ~/.bashrc)
echo 'export PATH="$(npm config get prefix)/bin:$PATH"' &gt;&gt; ~/.zshrc
source ~/.zshrc
</code></pre>
<h3 id="问题二nodejs-版本不满足要求">问题二:Node.js 版本不满足要求</h3>
<pre><code class="language-bash"># 使用 nvm 安装 Node.js 22
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
source ~/.zshrc
nvm install 22
nvm use 22
node --version# 应该显示 v22.x.x
</code></pre>
<h3 id="问题三组织用户无法使用">问题三:组织用户无法使用</h3>
<p>提示类似 "Copilot CLI is not enabled for your organization",需要联系 GitHub 组织管理员前往:</p>
<p><code>GitHub 组织设置 → Copilot → Policies → Copilot CLI → 启用</code></p>
<p>普通成员无权自行开启。</p>
<h3 id="问题四token-认证失败">问题四:Token 认证失败</h3>
<pre><code class="language-bash"># 确认变量存在
echo $GH_TOKEN

# 确认 token 有正确权限
# 前往 GitHub Settings → Developer settings → Fine-grained tokens
# 检查 "Copilot Requests" 权限是否已开启
</code></pre>
<h3 id="问题五windows-兼容性问题">问题五:Windows 兼容性问题</h3>
<p>优先使用 <strong>WSL2</strong>(Windows Subsystem for Linux)运行 Copilot CLI。</p>
<p>在 WSL2 中安装:</p>
<pre><code class="language-bash"># 安装 Node.js 22
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt-get install -y nodejs

# 安装 Copilot CLI
npm install -g @github/copilot
</code></pre>
<h3 id="问题六上下文窗口不足对话太长">问题六:上下文窗口不足(对话太长)</h3>
<pre><code class="language-bash"># 手动压缩对话历史
/compact

# 或者开始新会话,只提供必要上下文
/clear
&gt; 我在继续开发 @src/models/lstm_detector.py,
当前问题是 ...
</code></pre>
<hr>
<h2 id="附录预警系统完整开发流程汇总">附录:预警系统完整开发流程汇总</h2>
<p>以下是贯穿本教程的完整开发命令序列,方便快速参考:</p>
<pre><code class="language-bash"># === 第一阶段:项目初始化 ===
mkdir social-media-risk-warning &amp;&amp; cd social-media-risk-warning
copilot
# [切换计划模式] Shift+Tab
# [输入] 项目需求描述,等待规划
# [切换普通模式] Shift+Tab
# [输入] 按照刚才的方案初始化项目目录结构
# [输入] 帮我初始化 Git 仓库并创建初始提交

# === 第二阶段:功能开发 ===
# [输入] 实现 LSTM 检测模型...
# [输入] 实现特征提取器...
# [输入] 实现风险评分引擎...
# [输入] 实现 FastAPI 路由...
# [输入] 实现预警服务...

# === 第三阶段:测试 ===
# [输入] 为 lstm_detector.py 编写单元测试
# [输入] /agent task &gt; 运行 pytest tests/ -v
# [输入] /review

# === 第四阶段:代码审查 ===
# [输入] /agent code-review &gt; 审查安全漏洞

# === 第五阶段:GitHub 工作流 ===
# [输入] 提交当前所有改动,写 Conventional Commits 格式的提交信息
# [输入] 创建功能分支 feature/alert-system
# [输入] 推送并创建 Pull Request
# [输入] /delegate 补全所有函数的 docstring
</code></pre>
<hr>
<blockquote>
<p><strong>官方文档</strong>(持续更新):https://docs.github.com/en/copilot/how-tos/copilot-cli/use-copilot-cli</p>
<p><strong>参考命令手册</strong>:在 Copilot CLI 交互界面输入 <code>?</code> 或在终端运行 <code>copilot help</code> 查看完整命令列表。</p>
</blockquote>
<hr>
<h2 id="说明">说明</h2>
<p>本教程只是"使用工具的说明书",不是"系统能跑起来的保证"。**</p>
<p>两者之间还隔着相当大的距离。</p>
<hr>
<h2 id="教程能给你什么不能给你什么">教程能给你什么,不能给你什么</h2>
<h3 id="教程能给你的">教程能给你的</h3>
<ul>
<li>如何安装和使用 GitHub Copilot CLI 这个工具</li>
<li>如何用自然语言向 AI 描述需求、生成代码框架</li>
<li>如何利用 Copilot 辅助调试、写测试、管理 Git 工作流</li>
</ul>
<h3 id="教程不能替代的">教程不能替代的</h3>
<p>教程里的每一段对话示例,比如"实现 LSTM 异常检测模型",Copilot 能生成一个<strong>看起来合理的代码骨架</strong>,但这和一个<strong>真正可用的系统</strong>之间,还差以下这些东西:</p>
<p><strong>数据问题</strong>:LSTM 模型需要大量真实的用户行为日志来训练。你需要回答:数据从哪里来?格式是什么?如何标注正常行为和异常行为?没有数据,模型就是空架子。</p>
<p><strong>模型调优</strong>:LSTM 的层数、隐藏单元数、序列长度、学习率、正则化策略……这些超参数需要反复实验,不是 Copilot 一次生成就能用的。</p>
<p><strong>领域知识</strong>:什么样的登录行为算"异常"?地理位置偏移多少公里算可疑?这些阈值和规则需要业务理解,不是代码问题。</p>
<p><strong>系统集成</strong>:Redis、Celery、PostgreSQL、SMTP 服务、短信 API……每一个组件都需要实际配置、调试、处理各种边界情况。</p>
<p><strong>安全加固</strong>:教程里提到了 JWT 鉴权,但真实系统还需要防止暴力破解、防止 token 泄露、处理并发安全等问题,这些细节 Copilot 不会自动替你想到。</p>
<p><strong>测试验证</strong>:模型的误报率是多少?漏报率是多少?在什么规模的并发下系统会崩溃?这些只能通过真实测试回答。</p>
<hr>
<h2 id="开发这个系统需要多长时间">开发这个系统需要多长时间?</h2>
<p>这取决于你的背景:</p>
<p><strong>情况一:有 Python 开发经验 + 了解基本机器学习概念,但没做过完整系统</strong></p>
<p>用 Copilot CLI 辅助开发,完成一个<strong>能跑通主流程的 MVP 版本</strong>(不含真实模型训练和大规模测试),大约需要 <strong>4~8 周</strong>,每天投入 3~4 小时。</p>
<p><strong>情况二:有完整的深度学习 + 后端开发经验</strong></p>
<p>一个<strong>功能完整、可以小规模部署的版本</strong>,大约需要 <strong>8~16 周</strong>,包括数据处理、模型训练调优、系统集成和基本安全加固。</p>
<p><strong>情况三:学生做毕业论文 / 课程设计</strong></p>
<p>如果目标是展示系统架构和核心思路,而不是生产级别的可用性,用 Copilot CLI 生成代码框架 + 自己理解和修改,<strong>4~6 周</strong>可以做出一个能演示的版本。这是大多数人用这类教程最实际的目标。</p>
<hr>
<h2 id="copilot-cli-在这个项目里真正的价值">Copilot CLI 在这个项目里真正的价值</h2>
<p>它能把你从<strong>重复性的体力劳动</strong>中解放出来:</p>
<ul>
<li>不用手动写样板代码(FastAPI 路由、Pydantic 模型、数据库 Schema)</li>
<li>不用查文档找 PyTorch API 的用法</li>
<li>不用手动写 Git 提交信息和 PR 描述</li>
<li>不用从头写测试模板</li>
</ul>
<p><strong>它省下的是时间,不是判断力。</strong> 你仍然需要理解它生成的每一段代码在做什么,知道哪里可能出问题,知道如何验证结果是否正确。盲目接受 AI 生成的代码,尤其是在安全相关的系统里,是很危险的。</p>
<hr>
<h2 id="一个实际的建议">一个实际的建议</h2>
<p>如果你是要做这个项目,不妨把目标分成两层:</p>
<p><strong>第一层(用 Copilot CLI 完全可以做到)</strong>:搭建系统框架,生成可运行的代码骨架,实现完整的 API 接口,写通基本的测试和文档。这部分 Copilot 能帮你节省 50%~70% 的时间。</p>
<p><strong>第二层(需要你自己投入的)</strong>:收集或模拟训练数据,调整模型参数让它真正有效,处理各种边界情况和安全问题,部署和性能调优。这部分 Copilot 是辅助而不是主力。</p>
<p>把这两层目标分清楚,你对整个项目的时间和难度就会有更实际的预期。</p><br><br>
来源:https://www.cnblogs.com/zxhoo/p/19636309
頁: [1]
查看完整版本: GitHub Copilot CLI 完整使用教程