|
| 1 | +# 故障排除 |
| 2 | + |
| 3 | +<cite> |
| 4 | +**本文档中引用的文件** |
| 5 | +- [README.md](file://README.md) |
| 6 | +- [changelog.md](file://changelog.md) |
| 7 | +- [LICENSE.md](file://LICENSE.md) |
| 8 | +</cite> |
| 9 | + |
| 10 | +## 目录 |
| 11 | +1. [简介](#简介) |
| 12 | +2. [系统要求与兼容性](#系统要求与兼容性) |
| 13 | +3. [认证问题](#认证问题) |
| 14 | +4. [环境问题](#环境问题) |
| 15 | +5. [功能问题](#功能问题) |
| 16 | +6. [性能问题](#性能问题) |
| 17 | +7. [日志收集与分析](#日志收集与分析) |
| 18 | +8. [版本兼容性检查](#版本兼容性检查) |
| 19 | +9. [反馈机制](#反馈机制) |
| 20 | +10. [常见问题解答](#常见问题解答) |
| 21 | + |
| 22 | +## 简介 |
| 23 | + |
| 24 | +GitHub Copilot CLI 是一个强大的终端集成AI编码助手,提供了智能的代码补全、重构和开发支持。本故障排除指南旨在帮助用户识别、诊断和解决在使用过程中可能遇到的各种问题。 |
| 25 | + |
| 26 | +## 系统要求与兼容性 |
| 27 | + |
| 28 | +### 支持的操作系统 |
| 29 | + |
| 30 | +GitHub Copilot CLI 支持以下平台: |
| 31 | +- **Linux** - 完全支持 |
| 32 | +- **macOS** - 完全支持 |
| 33 | +- **Windows** - 完全支持(实验性警告已移除) |
| 34 | + |
| 35 | +### Node.js 版本要求 |
| 36 | + |
| 37 | +**最低要求:** Node.js v22 或更高版本 |
| 38 | +**推荐版本:** 最新稳定版 |
| 39 | + |
| 40 | +**重要提示:** 在启动时会强制执行最小 Node 版本要求,如果版本不兼容,CLI 将无法启动。 |
| 41 | + |
| 42 | +### npm 版本要求 |
| 43 | + |
| 44 | +- **npm** v10 或更高版本 |
| 45 | +- (仅限 Windows)**PowerShell** v6 或更高版本 |
| 46 | + |
| 47 | +**节源码** |
| 48 | +- [README.md](file://README.md#L25-L35) |
| 49 | + |
| 50 | +## 认证问题 |
| 51 | + |
| 52 | +### 组织策略限制 |
| 53 | + |
| 54 | +**症状:** 访问被拒绝或收到策略限制错误 |
| 55 | + |
| 56 | +**诊断步骤:** |
| 57 | +1. 检查是否在企业环境中使用 |
| 58 | +2. 验证组织管理员是否启用了 Copilot CLI |
| 59 | +3. 确认网络访问权限 |
| 60 | + |
| 61 | +**解决方案:** |
| 62 | +- 联系组织管理员确认 Copilot CLI 的启用状态 |
| 63 | +- 检查企业网络策略和防火墙设置 |
| 64 | +- 参考官方文档:[管理组织中的 GitHub Copilot 策略](http://docs.github.com/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-github-copilot-features-in-your-organization/managing-policies-for-copilot-in-your-organization) |
| 65 | + |
| 66 | +### Personal Access Token (PAT) 权限不足 |
| 67 | + |
| 68 | +**症状:** 使用 PAT 登录时出现权限错误 |
| 69 | + |
| 70 | +**诊断步骤:** |
| 71 | +1. 检查 PAT 是否具有 "Copilot Requests" 权限 |
| 72 | +2. 验证环境变量设置 |
| 73 | +3. 确认 PAT 格式正确 |
| 74 | + |
| 75 | +**解决方案:** |
| 76 | +1. 访问 [GitHub PAT 设置页面](https://github.com/settings/personal-access-tokens/new) |
| 77 | +2. 添加 "Copilot Requests" 权限 |
| 78 | +3. 设置环境变量: |
| 79 | + - `GH_TOKEN` 或 `GITHUB_TOKEN`(优先级顺序) |
| 80 | +4. 重新启动 CLI 并使用 `/login` 命令 |
| 81 | + |
| 82 | +### OAuth 登录失败 |
| 83 | + |
| 84 | +**症状:** OAuth 流程中断或浏览器无法打开 |
| 85 | + |
| 86 | +**诊断步骤:** |
| 87 | +1. 检查网络连接 |
| 88 | +2. 验证防火墙设置 |
| 89 | +3. 确认浏览器可正常打开 |
| 90 | + |
| 91 | +**解决方案:** |
| 92 | +- 对于 SSH 用户:确保环境支持设备代码轮询 |
| 93 | +- 手动复制设备代码到浏览器 |
| 94 | +- 使用 PAT 作为替代认证方式 |
| 95 | +- 更新至最新版本以获得改进的 OAuth 实现 |
| 96 | + |
| 97 | +**节源码** |
| 98 | +- [changelog.md](file://changelog.md#L272-L278) |
| 99 | +- [changelog.md](file://changelog.md#L201-L213) |
| 100 | + |
| 101 | +## 环境问题 |
| 102 | + |
| 103 | +### Node.js 版本不兼容 |
| 104 | + |
| 105 | +**症状:** 启动时显示版本错误或功能异常 |
| 106 | + |
| 107 | +**诊断步骤:** |
| 108 | +1. 运行 `node --version` 检查版本 |
| 109 | +2. 验证 npm 版本:`npm --version` |
| 110 | +3. 检查 PowerShell 版本(Windows 用户) |
| 111 | + |
| 112 | +**解决方案:** |
| 113 | +1. 升级 Node.js 到 v22 或更高版本 |
| 114 | +2. 使用版本管理器(如 nvm)管理 Node.js 版本 |
| 115 | +3. 清理 npm 缓存并重新安装 |
| 116 | + |
| 117 | +### 代理配置错误 |
| 118 | + |
| 119 | +**症状:** 网络连接超时或代理认证失败 |
| 120 | + |
| 121 | +**诊断步骤:** |
| 122 | +1. 检查代理环境变量设置 |
| 123 | +2. 验证代理服务器可达性 |
| 124 | +3. 确认认证凭据正确 |
| 125 | + |
| 126 | +**解决方案:** |
| 127 | +1. 设置代理环境变量: |
| 128 | + - `HTTPS_PROXY` 或 `HTTP_PROXY` |
| 129 | + - 格式:`http://username:password@proxy-server:port` |
| 130 | +2. 对于 Node.js v24+ 用户,代理支持已增强 |
| 131 | +3. 检查防火墙规则和网络策略 |
| 132 | + |
| 133 | +**节源码** |
| 134 | +- [changelog.md](file://changelog.md#L201-L213) |
| 135 | +- [changelog.md](file://changelog.md#L223-L231) |
| 136 | + |
| 137 | +## 功能问题 |
| 138 | + |
| 139 | +### 工具调用失败 |
| 140 | + |
| 141 | +**症状:** MCP 工具执行失败或无响应 |
| 142 | + |
| 143 | +**诊断步骤:** |
| 144 | +1. 检查工具配置文件 |
| 145 | +2. 验证环境变量解析 |
| 146 | +3. 确认路径权限 |
| 147 | + |
| 148 | +**解决方案:** |
| 149 | +1. 更新 MCP 服务器配置格式 |
| 150 | +2. 确保环境变量前缀使用 `$` 符号 |
| 151 | +3. 检查工具依赖项和权限设置 |
| 152 | +4. 使用 `--allow-all-paths` 参数临时解决问题 |
| 153 | + |
| 154 | +### 会话卡死 |
| 155 | + |
| 156 | +**症状:** 会话无法正常结束或响应停滞 |
| 157 | + |
| 158 | +**诊断步骤:** |
| 159 | +1. 检查是否有未完成的工具调用 |
| 160 | +2. 验证内存使用情况 |
| 161 | +3. 确认网络连接状态 |
| 162 | + |
| 163 | +**解决方案:** |
| 164 | +1. 使用 `/exit` 或 `/quit` 命令退出 |
| 165 | +2. 强制终止进程(`Ctrl+C`) |
| 166 | +3. 清理会话状态文件 |
| 167 | +4. 重启 CLI 并使用 `--resume` 恢复会话 |
| 168 | + |
| 169 | +### 多行输入异常 |
| 170 | + |
| 171 | +**症状:** 输入框无法正确处理多行文本 |
| 172 | + |
| 173 | +**诊断步骤:** |
| 174 | +1. 检查终端协议支持 |
| 175 | +2. 验证 Kitty 协议设置 |
| 176 | +3. 确认终端配置 |
| 177 | + |
| 178 | +**解决方案:** |
| 179 | +1. 在 VSCode 中运行 `/terminal-setup` 命令 |
| 180 | +2. 设置 `COPILOT_KITTY` 环境变量 |
| 181 | +3. 使用 `/terminal-setup` 命令配置非 Kitty 终端 |
| 182 | +4. 检查终端键盘协议支持 |
| 183 | + |
| 184 | +**节源码** |
| 185 | +- [changelog.md](file://changelog.md#L120-L132) |
| 186 | +- [changelog.md](file://changelog.md#L182-L199) |
| 187 | +- [changelog.md](file://changelog.md#L134-L141) |
| 188 | + |
| 189 | +## 性能问题 |
| 190 | + |
| 191 | +### 响应延迟 |
| 192 | + |
| 193 | +**症状:** 命令响应时间过长 |
| 194 | + |
| 195 | +**诊断步骤:** |
| 196 | +1. 检查网络连接质量 |
| 197 | +2. 监控系统资源使用 |
| 198 | +3. 分析对话上下文长度 |
| 199 | + |
| 200 | +**解决方案:** |
| 201 | +1. 减少对话上下文长度 |
| 202 | +2. 使用 `/clear` 开始新的会话 |
| 203 | +3. 检查代理设置和网络配置 |
| 204 | +4. 更新到最新版本以获得性能优化 |
| 205 | + |
| 206 | +### 内存占用过高 |
| 207 | + |
| 208 | +**症状:** 内存使用持续增长 |
| 209 | + |
| 210 | +**诊断步骤:** |
| 211 | +1. 监控内存使用趋势 |
| 212 | +2. 检查大文件处理 |
| 213 | +3. 分析工具调用频率 |
| 214 | + |
| 215 | +**解决方案:** |
| 216 | +1. 定期使用 `/clear` 清理会话 |
| 217 | +2. 避免处理过大的文件 |
| 218 | +3. 使用 `--disable-parallel-tools-execution` 减少并发 |
| 219 | +4. 检查是否有内存泄漏问题 |
| 220 | + |
| 221 | +**节源码** |
| 222 | +- [changelog.md](file://changelog.md#L53-L70) |
| 223 | +- [changelog.md](file://changelog.md#L215-L221) |
| 224 | + |
| 225 | +## 日志收集与分析 |
| 226 | + |
| 227 | +### 启用调试日志 |
| 228 | + |
| 229 | +GitHub Copilot CLI 提供了灵活的日志级别配置: |
| 230 | + |
| 231 | +**可用的日志级别:** |
| 232 | +- `none` - 禁用日志 |
| 233 | +- `error` - 仅错误信息 |
| 234 | +- `warning` - 警告和错误 |
| 235 | +- `info` - 基本信息和警告 |
| 236 | +- `debug` - 详细调试信息 |
| 237 | +- `all` - 全部日志 |
| 238 | +- `default` - 默认级别 |
| 239 | + |
| 240 | +**启用调试日志的方法:** |
| 241 | +1. 创建或编辑配置文件:`~/.copilot/config` |
| 242 | +2. 添加配置项:`log_level: debug` |
| 243 | +3. 重启 CLI 应用程序 |
| 244 | + |
| 245 | +### 日志文件位置 |
| 246 | + |
| 247 | +**会话状态文件:** |
| 248 | +- 新格式:`~/.copilot/session-state/` |
| 249 | +- 旧格式:`~/.copilot/history-session-state/`(将迁移) |
| 250 | + |
| 251 | +**启动日志:** |
| 252 | +- 包含当前版本信息,便于问题报告 |
| 253 | +- 在调试模式下提供更多详细信息 |
| 254 | + |
| 255 | +### 日志分析技巧 |
| 256 | + |
| 257 | +**常见日志模式:** |
| 258 | +1. **认证相关:** 查找 API 请求 ID 和认证状态变化 |
| 259 | +2. **工具调用:** 监控工具执行时间和结果 |
| 260 | +3. **性能问题:** 分析响应时间和资源使用 |
| 261 | +4. **错误处理:** 关注错误消息和堆栈跟踪 |
| 262 | + |
| 263 | +**节源码** |
| 264 | +- [changelog.md](file://changelog.md#L120-L132) |
| 265 | +- [changelog.md](file://changelog.md#L143-L158) |
| 266 | + |
| 267 | +## 版本兼容性检查 |
| 268 | + |
| 269 | +### 当前版本信息 |
| 270 | + |
| 271 | +根据 changelog,当前最新版本为 **0.0.353**,发布于 2025年10月28日。 |
| 272 | + |
| 273 | +### 版本更新建议 |
| 274 | + |
| 275 | +**定期更新的好处:** |
| 276 | +1. 获取最新的功能和改进 |
| 277 | +2. 修复已知的安全漏洞 |
| 278 | +3. 解决性能问题 |
| 279 | +4. 改进用户体验 |
| 280 | + |
| 281 | +**更新方法:** |
| 282 | +```bash |
| 283 | +npm update -g @github/copilot |
| 284 | +``` |
| 285 | + |
| 286 | +### 已修复问题回顾 |
| 287 | + |
| 288 | +**最近的重要修复:** |
| 289 | +- **0.0.353:** 支持自定义代理服务器 |
| 290 | +- **0.0.352:** 改进 MCP 工具处理 |
| 291 | +- **0.0.351:** 优化路径检测逻辑 |
| 292 | +- **0.0.350:** 限制 GitHub MCP 工具数量以节省上下文空间 |
| 293 | + |
| 294 | +**节源码** |
| 295 | +- [changelog.md](file://changelog.md#L1-L10) |
| 296 | + |
| 297 | +## 反馈机制 |
| 298 | + |
| 299 | +### 提交问题报告 |
| 300 | + |
| 301 | +GitHub Copilot CLI 提供多种反馈渠道: |
| 302 | + |
| 303 | +**1. GitHub Issues** |
| 304 | +- 访问项目仓库:[GitHub Copilot CLI Issues](https://github.com/github/copilot-cli/issues) |
| 305 | +- 提交技术问题和功能请求 |
| 306 | +- 包含详细的重现步骤和环境信息 |
| 307 | + |
| 308 | +**2. Discussions** |
| 309 | +- 参与社区讨论 |
| 310 | +- 寻求帮助和最佳实践 |
| 311 | +- 分享使用经验和技巧 |
| 312 | + |
| 313 | +**3. 内置反馈命令** |
| 314 | +- 在 CLI 中运行 `/feedback` 命令 |
| 315 | +- 提交保密的反馈调查 |
| 316 | +- 快速报告问题而不离开 CLI 界面 |
| 317 | + |
| 318 | +### 报告问题的最佳实践 |
| 319 | + |
| 320 | +**完整的错误报告应包含:** |
| 321 | +1. **问题描述:** 清晰描述遇到的问题 |
| 322 | +2. **重现步骤:** 详细的操作步骤 |
| 323 | +3. **预期行为:** 正确的行为应该是什么 |
| 324 | +4. **实际行为:** 实际观察到的现象 |
| 325 | +5. **环境信息:** |
| 326 | + - 操作系统版本 |
| 327 | + - Node.js 版本 |
| 328 | + - Copilot CLI 版本 |
| 329 | + - 终端类型和配置 |
| 330 | +6. **日志信息:** 启用调试日志并提供相关输出 |
| 331 | +7. **截图或录屏:** 如有必要,提供视觉证据 |
| 332 | + |
| 333 | +### 社区参与 |
| 334 | + |
| 335 | +**积极参与的好处:** |
| 336 | +- 加速问题解决过程 |
| 337 | +- 影响产品发展方向 |
| 338 | +- 获得社区支持和帮助 |
| 339 | +- 分享您的经验给其他用户 |
| 340 | + |
| 341 | +## 常见问题解答 |
| 342 | + |
| 343 | +### Q: 我可以使用哪些模型? |
| 344 | + |
| 345 | +**A:** 默认使用 Claude Sonnet 4.5,可通过 `/model` 命令切换: |
| 346 | +- Claude Sonnet 4 |
| 347 | +- Claude Sonnet 4.5 |
| 348 | +- GPT-5(如果可用) |
| 349 | + |
| 350 | +### Q: 如何重置会话? |
| 351 | + |
| 352 | +**A:** 使用以下命令: |
| 353 | +- `/clear` - 清理当前会话 |
| 354 | +- `/exit` 或 `/quit` - 退出 CLI |
| 355 | +- `copilot --resume` - 恢复最近的会话 |
| 356 | + |
| 357 | +### Q: 为什么我的输入被截断? |
| 358 | + |
| 359 | +**A:** 可能是由于: |
| 360 | +1. 上下文窗口接近限制 |
| 361 | +2. 大量内容粘贴 |
| 362 | +3. 终端宽度限制 |
| 363 | + |
| 364 | +**解决方案:** |
| 365 | +- 使用 `/clear` 开始新会话 |
| 366 | +- 使用 `/terminal-setup` 优化输入 |
| 367 | +- 检查终端宽度设置 |
| 368 | + |
| 369 | +### Q: 如何处理权限问题? |
| 370 | + |
| 371 | +**A:** 确保: |
| 372 | +1. 具有文件和目录的读写权限 |
| 373 | +2. 使用正确的认证方式 |
| 374 | +3. 检查组织策略限制 |
| 375 | + |
| 376 | +**节源码** |
| 377 | +- [changelog.md](file://changelog.md#L244-L257) |
| 378 | + |
| 379 | +## 结论 |
| 380 | + |
| 381 | +GitHub Copilot CLI 是一个功能强大但复杂的工具,可能会遇到各种技术挑战。通过遵循本故障排除指南,您可以有效地诊断和解决大多数常见问题。 |
| 382 | + |
| 383 | +记住: |
| 384 | +- 保持软件更新到最新版本 |
| 385 | +- 启用适当的日志记录以便调试 |
| 386 | +- 充分利用内置的诊断命令 |
| 387 | +- 积极参与社区反馈 |
| 388 | + |
| 389 | +如果遇到本指南未涵盖的问题,请随时通过 GitHub Issues 或 Discussions 寻求帮助。 |
0 commit comments