|
| 1 | +# GitHub Copilot AI Credits 六月复测交接 |
| 2 | + |
| 3 | +## 目标 |
| 4 | + |
| 5 | +在 2026 年 6 月重新验证 GitHub Copilot 从 premium quota / premium interactions 计费向 GitHub AI Credits / token-based billing 迁移后,真实 Copilot backend、usage API 与 VS Code Copilot 插件源码是否已经对齐。 |
| 6 | + |
| 7 | +本交接文件用于未来 agent 复现 2026 年 5 月底的检查流程,并在 6 月对同一批账号和后端端口重新测试。 |
| 8 | + |
| 9 | +## 背景结论(截至 2026-05-28) |
| 10 | + |
| 11 | +- `.vendor/vscode` 是 VS Code 主仓库的 very shallow sparse clone。 |
| 12 | +- Copilot 插件源码目录是 `.vendor/vscode/extensions/copilot`。 |
| 13 | +- 当时检查到的 `.vendor/vscode` HEAD 是 `1897fa34033285d932624a72654cb1cf943f634f`。 |
| 14 | +- 当时检查到的 HEAD 日期是 `2026-05-27T15:18:48Z`。 |
| 15 | +- 旧的 `microsoft/vscode-copilot-chat` 仓库已 archived,活跃开发迁入 `microsoft/vscode` 主仓库。 |
| 16 | +- 2026 年 5 月底,VS Code Copilot 插件源码已经出现 AI Credits / token-based billing 相关字段、UI 和错误文案。 |
| 17 | +- 2026 年 5 月底,4142 / 4145 / 4146 真实 Copilot backend 尚未返回这些新字段。 |
| 18 | + |
| 19 | +## 需要重新验证的问题 |
| 20 | + |
| 21 | +1. 6 月后 Copilot backend 是否开始返回 AI Credits / token-based billing 字段。 |
| 22 | +2. VS Code Copilot 插件源码里与 quota、charging、headers、initiator 相关的实现是否继续变化。 |
| 23 | +3. `X-Initiator: agent` 与 user / agent 交互类型是否影响计费、headers 或 usage 形态。 |
| 24 | +4. 4142 / 4145 / 4146 的 `/models` catalog 中哪些模型真实可用,而不是只存在于 catalog。 |
| 25 | +5. usage API 是否开始返回 AI Credits / token usage 相关的新字段。 |
| 26 | + |
| 27 | +## 建议使用的 skills |
| 28 | + |
| 29 | +- `copilot-backend-tester`:测试 Copilot 真实 backend、usage API、headers/body。 |
| 30 | +- `multi-source-inquiry`:查 GitHub 官方公告、Copilot billing 文档、VS Code / Copilot 相关 release note。 |
| 31 | +- `karpathy-guidelines`:若需要修改 repo 文件,先加载并遵守外科式改动原则。 |
| 32 | +- `handoff`:若复测后还要交接下一轮,把结论继续写成文档。 |
| 33 | + |
| 34 | +## 更新 VS Code Copilot 源码 |
| 35 | + |
| 36 | +不要 full clone 整个 VS Code 仓库。继续使用 very shallow + sparse checkout: |
| 37 | + |
| 38 | +```bash |
| 39 | +cd /home/cpf/code-inside/copilot-api/.vendor/vscode |
| 40 | +git fetch --depth=1 --filter=blob:none origin main |
| 41 | +git reset --hard origin/main |
| 42 | +git sparse-checkout set extensions/copilot |
| 43 | +git log -1 --format='%H %cI %s' |
| 44 | +``` |
| 45 | + |
| 46 | +确认目录: |
| 47 | + |
| 48 | +```bash |
| 49 | +pwd |
| 50 | +git remote -v |
| 51 | +git sparse-checkout list |
| 52 | +ls extensions/copilot |
| 53 | +``` |
| 54 | + |
| 55 | +预期 Copilot 插件源码目录: |
| 56 | + |
| 57 | +```text |
| 58 | +/home/cpf/code-inside/copilot-api/.vendor/vscode/extensions/copilot |
| 59 | +``` |
| 60 | + |
| 61 | +## 源码搜索种子 |
| 62 | + |
| 63 | +以下词只是 seeds,不是最终关键词。搜索时要围绕语义继续扩展: |
| 64 | + |
| 65 | +```bash |
| 66 | +cd /home/cpf/code-inside/copilot-api/.vendor/vscode |
| 67 | +rg -n 'token_based_billing|token_prices|copilot_usage|total_nano_aiu|nano_aiu|aiu|credits|premium_interactions|premium|quota|overage|billing|multiplier|model_picker_price_category|model_picker_enabled|policy.state|X-Initiator|X-Interaction-Type|initiator|agent' \ |
| 68 | + extensions/copilot/src extensions/copilot/package.json extensions/copilot/package.nls.json |
| 69 | +``` |
| 70 | + |
| 71 | +重点关注: |
| 72 | + |
| 73 | +- quota / usage 状态读取 |
| 74 | +- model picker 是否显示 price category |
| 75 | +- token-based billing 文案 |
| 76 | +- overage / exhausted / quota reset 文案 |
| 77 | +- request header 中 initiator / interaction type 的生成逻辑 |
| 78 | +- response header 的解析和转发逻辑 |
| 79 | + |
| 80 | +## 真实 backend 复测要求 |
| 81 | + |
| 82 | +测试 4142 / 4145 / 4146 的真实 backend。所有 Copilot 请求固定带: |
| 83 | + |
| 84 | +```text |
| 85 | +X-Initiator: agent |
| 86 | +``` |
| 87 | + |
| 88 | +不要只看 `/models` 里是否存在模型 id;必须同时检查: |
| 89 | + |
| 90 | +- `model_picker_enabled` |
| 91 | +- `policy.state` |
| 92 | +- `supported_endpoints` |
| 93 | +- 最终请求是否真的返回 `200` |
| 94 | + |
| 95 | +如果 `gpt-5.5` 在 catalog 里存在但 `model_picker_enabled=false` 或 `policy.state=disabled`,不能当作可用模型。 |
| 96 | + |
| 97 | +## 2026-05-28 的实测基线 |
| 98 | + |
| 99 | +### 4142 |
| 100 | + |
| 101 | +- 账号类型:business。 |
| 102 | +- `gpt-5.5` 的 `/responses` 当时可用。 |
| 103 | +- premium quota 当时已经 overage。 |
| 104 | +- 当时 header snapshot 示例: |
| 105 | + |
| 106 | +```text |
| 107 | +ent=300&ov=1382.4&ovPerm=true&rem=0.0&rst=2026-06-01T00:00:00Z&totRem=0.0 |
| 108 | +``` |
| 109 | + |
| 110 | +解释: |
| 111 | + |
| 112 | +- `rem=0.0`:premium quota remaining 为 0。 |
| 113 | +- `ovPerm=true`:overage permitted。 |
| 114 | +- `ov=1382.4`:已产生 overage。 |
| 115 | + |
| 116 | +### 4145 |
| 117 | + |
| 118 | +- 账号类型:individual。 |
| 119 | +- `gpt-5.5` catalog entry 当时存在但 disabled: |
| 120 | + - `model_picker_enabled=false` |
| 121 | + - `policy.state=disabled` |
| 122 | +- 当时可用模型示例: |
| 123 | + - `gpt-5.4-mini` `/responses` |
| 124 | + - `claude-haiku-4.5` `/v1/messages` |
| 125 | + |
| 126 | +### 4146 |
| 127 | + |
| 128 | +- 账号类型:individual。 |
| 129 | +- `gpt-5.5` catalog entry 当时存在但 disabled。 |
| 130 | +- 当时可用模型示例: |
| 131 | + - `gpt-5.4-mini` `/responses` |
| 132 | + - `claude-sonnet-4.6` `/v1/messages` |
| 133 | + |
| 134 | +## 复测时要观察的新字段 |
| 135 | + |
| 136 | +在完整 response headers 和 response body 中查找: |
| 137 | + |
| 138 | +- `token_based_billing` |
| 139 | +- `billing.token_prices` |
| 140 | +- `model_picker_price_category` |
| 141 | +- `usage.copilot_usage` |
| 142 | +- `copilot_usage.total_nano_aiu` |
| 143 | +- `total_nano_aiu` |
| 144 | +- `nano_aiu` |
| 145 | +- `aiu` |
| 146 | +- `x-quota-snapshot-premium_interactions` |
| 147 | +- `x-usage-ratelimit-session` |
| 148 | +- `x-usage-ratelimit-weekly` |
| 149 | +- `billing.multiplier` |
| 150 | + |
| 151 | +截至 2026-05-28,真实 backend 仍返回旧形态: |
| 152 | + |
| 153 | +- `x-quota-snapshot-premium_interactions` |
| 154 | +- `x-usage-ratelimit-session` |
| 155 | +- `x-usage-ratelimit-weekly` |
| 156 | +- `billing.multiplier` |
| 157 | +- ordinary token counts / cache token counts |
| 158 | + |
| 159 | +截至 2026-05-28,真实 backend 未见: |
| 160 | + |
| 161 | +- `token_based_billing=true` |
| 162 | +- `billing.token_prices` |
| 163 | +- `model_picker_price_category` |
| 164 | +- `usage.copilot_usage` |
| 165 | +- `copilot_usage.total_nano_aiu` |
| 166 | + |
| 167 | +## usage API 复测 |
| 168 | + |
| 169 | +usage API 要直打 GitHub API: |
| 170 | + |
| 171 | +```bash |
| 172 | +curl -i -sS https://api.github.com/copilot_internal/user \ |
| 173 | + -H "Authorization: token $GITHUB_TOKEN" \ |
| 174 | + -H "Accept: application/vnd.github+json" \ |
| 175 | + -H "X-GitHub-Api-Version: 2022-11-28" |
| 176 | +``` |
| 177 | + |
| 178 | +注意: |
| 179 | + |
| 180 | +- 用进程参数或本地配置中的 GitHub token。 |
| 181 | +- 不要使用 `/token` 返回的 Copilot token 打 usage API。 |
| 182 | +- 保存完整 headers/body,但文档和回复中必须脱敏 token。 |
| 183 | +- 重点比较 `quota_remaining`、overage、premium quota、AI credits / token usage 字段。 |
| 184 | + |
| 185 | +## 建议输出格式 |
| 186 | + |
| 187 | +复测完成后输出四块: |
| 188 | + |
| 189 | +1. 源码变化 |
| 190 | + - `.vendor/vscode` 最新 HEAD、日期、相关 diff / grep 结果。 |
| 191 | +2. backend 行为 |
| 192 | + - 4142 / 4145 / 4146 每个端口的模型可用性、请求状态、headers/body 新旧字段。 |
| 193 | +3. usage API 行为 |
| 194 | + - 是否出现 AI Credits / token usage 相关字段。 |
| 195 | +4. 结论 |
| 196 | + - “已经 rollout”、“部分 rollout”、“仍未 rollout”或“无法确认”,并给证据。 |
| 197 | + |
| 198 | +## 安全与脱敏 |
| 199 | + |
| 200 | +- 不要把 GitHub token、Copilot token、cookie、authorization header 写入文档。 |
| 201 | +- 如果保存原始响应,建议放入本地 ignored 目录,例如 `tmp/`。 |
| 202 | +- 对外报告只保留必要字段和脱敏后的 header/body 摘要。 |
| 203 | + |
| 204 | +## 停止条件 |
| 205 | + |
| 206 | +满足以下条件即可停止: |
| 207 | + |
| 208 | +- `.vendor/vscode/extensions/copilot` 已更新到当日最新 shallow sparse checkout。 |
| 209 | +- 已 grep 并记录 quota / charging / headers / initiator 相关源码变化。 |
| 210 | +- 4142 / 4145 / 4146 均完成真实 backend 测试,且每个端口至少有一个真实可用模型请求成功或明确失败原因。 |
| 211 | +- usage API 已直打并记录关键字段。 |
| 212 | +- 已明确判断新 AI Credits 字段是否在 backend/usage API 中出现。 |
0 commit comments