外观
让 AI 拿到 GitHub 权限 · AI 陪跑教程
这是一门 "AI 陪跑"课程:把下面灰框里的整段教程复制下来,粘贴给任意一个 AI 助手(ChatGPT、Claude、Gemini、豆包、Kimi 都行),它就会扮演老师,一步一步带你把 gh(GitHub 命令行工具)装好、认证好、授权给它,之后这个 AI 就能替你在终端里直接提 issue、操作 GitHub,不用你手动开网页复制粘贴。
怎么用这门课(三步)
- 点下面代码框右上角的复制按钮,把整段教程复制走。
- 打开任意 AI 助手的对话框,先发一句:「请严格按照下面这份教程,一步一步带我操作,我是完全的新手。」,然后把复制的内容粘贴进去发送。
- 之后照着 AI 的指引做,把每一步结果贴回给它,它会帮你判断对错、继续下一步。
你会得到什么
你正在用的这个 AI 拿到 gh / git 权限,能替你在终端里直接提 issue、查仓库、管认证。教程用"上报 CC-Panes 崩溃 issue"作为落地示例,把配置→取日志→脱敏→提交整条链路走一遍。
提醒
- 提交到公开仓库的内容全网可见,教程会要求 AI 先脱敏、再给你过目、得到同意才提交。
- 账号密码 / API key / token 别贴进 issue。
课程全文(复制这一整段给 AI)
markdown
---
name: cli-gh-access
description: 手把手让你正在用的 CLI(这个 AI)拿到 gh / git 权限,从此能替你在终端里直接操作 GitHub——并以「上报 CC-Panes 崩溃 issue」为落地示例走完整流程:装 gh、认证、授权 AI 调用、收集本机崩溃日志、脱敏、自动提交 issue 到 wuxiran/cc-pane。当用户说"让 AI 用 git"、"配置 gh"、"给 AI git 权限"、"gh 权限"、"cli 提 issue"、"上报 ccpane 崩溃"、"报 issue 给作者"、"grant gh access"、"let the AI use github" 时使用。AI 陪跑:逐步引导、逐条给命令、脱敏后提交前先给用户确认。
---
# 让 CLI 拿到 gh / git 权限(并上报 CC-Panes issue)
> **你(AI)的角色**:耐心的技术老师。目标是**让你自己(这个 CLI/AI)拿到 gh 权限**,之后能替用户在终端里操作 GitHub;并用「上报 CC-Panes 崩溃 issue」这个真实场景把整个流程走一遍。
> 铁律:**一次一步 → 给命令 → 等用户回贴结果 → 确认 → 下一步**。提交任何公开内容前,先脱敏、再给用户过目、得到同意才发。
---
## 先科普:gh 是什么?
> **gh = GitHub 官方命令行工具(GitHub CLI)**。平时你要提个 issue,得开浏览器、登录、找仓库、点半天;装了 gh 之后,在终端里一条 `gh issue create` 就提交了。它还能看仓库、查/评论 issue、管认证。
>
> **为什么要让 AI 用它**:一旦这个 CLI(AI)拿到 gh 权限,它就能**替你**把崩溃日志整理成规整的 issue 直接提交,你不用手动复制粘贴到网页——这就是"让 CLI 获取 git 权限"的意义。
---
## 第 0 步:检测 gh 现状
先跑:
```bash
gh --version # 没输出/报错 = 没装 → 第 1 步装
gh auth status # 显示已登录某账号 = 已认证;报未登录 = 去第 1 步认证
```
你(AI)能把这两条命令跑出来,本身就说明当前环境允许调用 gh。
---
## 第 1 步:让 AI 拿到 git 权限(核心)
目标:**让陪跑你的这个 AI 能替你调用 gh**。三小步:
### 1.1 装 gh
- **Windows**:`winget install GitHub.cli`(或去 [cli.github.com](https://cli.github.com) 下载安装包);
- **macOS**:`brew install gh`;
- **Ubuntu/Debian**:`sudo apt install gh`(或按官网 apt 源)。
- 装完 `gh --version` 验证。
### 1.2 认证:把你的 GitHub 身份交给 gh
```bash
gh auth login
```
按提示选:`GitHub.com` → `HTTPS` → `Login with a web browser`,复制它给的一次性码,在浏览器里粘贴授权。
- **墙内联网/登录失败**:先设代理再重试(新开终端生效):
```bash
setx HTTPS_PROXY "http://127.0.0.1:10809" # Windows;本机 git 走这个口
# macOS/Linux 当前终端:export HTTPS_PROXY=http://127.0.0.1:10809
```
- 认证成功后 `gh auth status` 应显示 `Logged in to github.com as <你的账号>`。
### 1.3 授权 AI 调用 gh("把权限给 AI"这一下)
AI **第一次跑 gh 命令**时,你用的客户端(如 Claude Code)会弹出**权限确认框**——**选「允许」**。想省事就勾「**总是允许 `gh` 命令**」,以后就不再每次问了。
> 这一步就是字面意义上的"把 git 权限交给 AI":装好 gh + 认证好身份 + 客户端放行调用,三者齐了,AI 就能自己 `gh issue create` 替你干活。
**不想装/授权 gh 的兜底**:跳过,用第 3 步的**浏览器预填链接**方案,AI 把链接拼好,你点一下提交即可。
---
## 第 2 步:收集 CC-Panes 崩溃日志(落地示例·上报前的取证)
CC-Panes 是 Tauri 桌面应用,崩溃信息在两处:
1. **崩溃/panic 日志**(最关键):
```
C:\Users\<你>\.cc-panes\crash.log
```
格式 `[YYYY-MM-DD HH:MM:SS.mmm] PANIC: panicked at <src>:<line>:` + 堆栈。取**最近一次** panic 那一段即可(不用全文)。已知有个反复出现的崩溃是关窗时 `tao ... cannot move state from Destroyed`。
2. **运行错误/警告日志**:
```
C:\Users\<你>\AppData\Local\com.ccpanes.app\logs\cc-panes.log # 正式版
C:\Users\<你>\AppData\Local\com.ccpanes.dev\logs\cc-panes.log # dev 版
```
格式 `[date][time][module][LEVEL]`,**grep `[ERROR]` / `[WARN]`**,取崩溃时间点前后的尾部片段。这文件 ~10MB 轮转,别整个贴。
3. **先备份现场**:`cc-panes.log` 是活动文件,新会话会继续写/轮转——处理前先 `copy` 一份:
```bash
copy "%LOCALAPPDATA%\com.ccpanes.app\logs\cc-panes.log" "%TEMP%\cc-panes-snapshot.log"
```
4. **顺手收集环境信息**(写进 issue):CC-Panes 版本(看 `C:\Users\<你>\.claude\skills\.ccpanes-default-skills-version`,如 0.10.18)、Windows 版本、当前用的哪个 CLI(Claude/Codex)、崩溃时间。
5. 如果 `crash.log` 不存在或没有近期记录 → 说明没抓到崩溃,转而问用户**具体现象 + 复现步骤**,照样能报 issue。
---
## 第 3 步:脱敏 → 提交 issue 到 `wuxiran/cc-pane`
> **issue 报到哪**:`wuxiran/cc-pane`(这是 CC-Panes 的仓库,**公开**、开了 issues)。公开仓库任何 GitHub 账号都能提 issue,无需协作者权限。
### ⚠️ 提交前必做:脱敏(公开仓库,全网可见!)
把要贴的日志/信息过一遍,**删掉敏感内容**:
- API key / token / `sk-...` / `Bearer ...` 等一律打码;
- `~/.cc-panes/config.toml`、`providers.json` 里的凭据别贴;
- 含真实用户名的绝对路径 `C:\Users\张三\...` → 换成 `C:\Users\<用户>\...`;
- 内网 IP、代理地址、公司域名等。
### A(首选)用 gh CLI 提交
```bash
# 1) 查重:这个崩溃是不是已经有人报过
gh issue list -R wuxiran/cc-pane --search "cannot move state from Destroyed" --state all
# 命中已有 issue → 去那条下面补充信息/👍,别重复开:
# gh issue comment -R wuxiran/cc-pane <编号> --body "我也遇到,环境:..."
# 2) 没重复 → 提交(body 用脱敏后的内容,长日志放 <details> 折叠)
gh issue create -R wuxiran/cc-pane \
--title "关闭窗口时崩溃:tao cannot move state from Destroyed" \
--body "$(cat <<'EOF'
## 环境
- CC-Panes 版本:0.10.18
- 系统:Windows 11
- 使用的 CLI:Claude Code
## 现象
关闭某个终端标签页时整个 CC-Panes 崩溃退出。
## 复现步骤
1. 打开多个终端标签
2. 快速连续关闭标签
3. 应用崩溃
## 期望 / 实际
期望:正常关闭标签。实际:进程 panic 退出。
<details><summary>崩溃日志(crash.log 摘录,已脱敏)</summary>
```
[2026-06-16 23:37:39.367] PANIC: panicked at ...\tao-0.35.2\...\runner.rs:371:25:
cannot move state from Destroyed
... 堆栈 ...
```
</details>
EOF
)"
# 提交成功后 gh 会打印 issue 链接,如 https://github.com/wuxiran/cc-pane/issues/42
```
**AI 纪律**:`gh issue create` 是对外发布动作——**先把拼好的 title/body(尤其脱敏结果)贴给用户看,得到明确同意,再执行**。
### B(兜底)浏览器预填链接(没 gh 时)
AI 把内容 URL 编码后拼成链接,用户点开就能看到预填好的 issue,点提交即可:
```
https://github.com/wuxiran/cc-pane/issues/new?title=<编码后的标题>&body=<编码后的正文>
```
(浏览器 URL 有长度上限,日志太长时正文只放摘要,或提示用户把完整日志粘到 issue 里。)
### 日志太长?
- 优先放进 `<details><summary>崩溃日志</summary> ... </details>` 折叠块,不刷屏;
- 特别长可建 **secret gist** 贴链接:`gh gist create --secret 脱敏后的日志.txt`(gist 里同样不能有密钥)。
---
## 交付清单(全绿才算完)
- [ ] gh 已装、已认证(`gh auth status` 通过),AI 调用已被客户端放行
- [ ] 崩溃现场已备份,取到最近一次 panic + 相关 [ERROR]/[WARN] 片段 + 环境信息
- [ ] 日志已脱敏(无 key/token/凭据/真实路径/内网地址)
- [ ] 已查重(无重复才新开,有重复去评论)
- [ ] issue 草稿经用户确认后提交,拿到 issue 链接回给用户
---
## 给 AI 的执行纪律(自检)
- **主线是"让 CLI 拿到 gh 权限"**:先把装 gh / 认证 / 客户端放行三步走通,再谈提 issue。
- gh 命令跑不通先看是没装、没认证、还是被客户端拦(权限确认没点允许)。墙内联网失败先设 `HTTPS_PROXY`。
- **公开仓库 = 全网可见**:任何要贴出去的内容先脱敏,再给用户过目,得到同意才 `gh issue create`。
- 查重优先,别往仓库灌重复 issue;日志只取相关片段,长日志折叠/gist。
- 一次一步,给命令 → 等用户回贴 → 判断 → 下一步;专业名词用大白话解释。遇到卡壳?
把 AI 报的错、或你看到的界面截图,直接发回给正在陪跑你的那个 AI,让它帮你排查。