如何配置 Oh My Posh GitHub Copilot 段落认证并显示配额用量?
【免费下载链接】oh-my-poshThe most customisable and low-latency cross platform/shell prompt renderer项目地址: https://gitcode.com/GitHub_Trending/oh/oh-my-posh
如果你想在 shell 提示符里直接看到 GitHub Copilot 的配额消耗——包括 premium interactions(高级交互)、inline completions(行内补全)和 chat(聊天)三项用量——就需要配置 Oh My Posh 的copilot段落。这个段落通过 GitHub 接口拉取你的 Copilot 用量统计,因此有一个明确的前置条件:必须先用内置的 OAuth 设备码流程完成 GitHub 认证,认证通过后段落才能获取并展示配额数据。本文的适用对象是已经安装了 Oh My Posh 的任意 shell 用户,目标是完成"认证 + 配置段落 + 验证提示符显示配额"这一条连续路径。
第一步:用设备码流程完成 GitHub 认证
copilot段落要求先通过 GitHub 认证才能访问用量数据,认证使用 Oh My Posh 内置的 OAuth device code flow:
oh-my-posh auth copilot执行后会发生以下事情:
- 终端显示一个设备码(device code)和验证 URL;
- 打开浏览器跳转到 GitHub 的授权页面;
- 提示你输入设备码;
- 成功后访问令牌(access token)被安全存储,供后续自动使用。
令牌保存在本机安全存储中,之后每次段落渲染时会自动读取,无需在配置文件里手动填写 token,也不需要在配置中额外指定认证相关字段。如果认证过期或失败,重新运行一次上面的命令即可。
第二步:在配置文件中添加 copilot 段落
编辑你的config.omp.json,将下面的段落加入segments数组(示例来自官方文档,可按需调整颜色和字体字形):
{ "type": "copilot", "style": "diamond", "leading_diamond": "\ue0b6", "trailing_diamond": "\ue0b4", "foreground": "#111111", "background": "#fee898", "template": " \uec1e {{ .Premium.Percent.Gauge }} ", "cache": { "duration": "5m", "strategy": "session" }, "options": { "http_timeout": 1000 } }各字段与当前任务相关的说明:
"type": "copilot"指定段落类型,是整个配置生效的前提;template决定提示符里显示什么,示例使用默认模板\uec1e {{ .Premium.Percent.Gauge }},即 Copilot 图标加 premium 配额的用量仪表条;其中\uec1e等是字形码点,属于文档示例的默认值,你可以换成自己的模板表达式(见下一节);cache的"duration": "5m"表示用量数据最多 5 分钟刷新一次,避免每次渲染提示符都请求接口;options.http_timeout是段落发起 HTTP 请求的超时时间(毫秒),默认值为20,示例中放宽到1000。
自定义模板:显示具体配额数字
段落的模板可以使用以下数据属性(引自 copilot 段落文档):
| 属性 | 类型 | 含义 |
|---|---|---|
.Premium | CopilotUsage | premium interactions 用量数据 |
.Premium.Used | int | 已使用的 premium 交互次数 |
.Premium.Limit | int | 可用的 premium 交互总次数 |
.Premium.Percent | Percentage | 已用配额百分比(0-100) |
.Premium.Remaining | Percentage | 剩余配额百分比(0-100) |
.Premium.Unlimited | bool | premium 配额是否无限制 |
.Inline.Used/.Inline.Limit/.Inline.Percent/.Inline.Remaining/.Inline.Unlimited | 同上 | inline completions 用量 |
.Chat.Used/.Chat.Limit/.Chat.Percent/.Chat.Remaining/.Chat.Unlimited | 同上 | chat 用量 |
.BillingCycleEnd | string | 当前计费周期的结束日期 |
Percentage类型除了数值外还提供三个方法:
| 方法 | 返回 | 说明 |
|---|---|---|
.Gauge() | string | 显示剩余容量的 5 格仪表条(如▰▰▰▰▱) |
.GaugeUsed() | string | 显示已用容量的 5 格仪表条(如▰▱▱▱▱) |
.String() | string | 数值百分比(如75) |
文档给出的仪表条可视化示例(表示剩余容量):
- 0% 已用(100% 剩余):
▰▰▰▰▰ - 20% 已用(80% 剩余):
▰▰▰▰▱ - 40% 已用(60% 剩余):
▰▰▰▱▱ - 60% 已用(40% 剩余):
▰▰▱▱▱ - 80% 已用(20% 剩余):
▰▱▱▱▱ - 100% 已用(0% 剩余):
▱▱▱▱▱
如果想在仪表条之外同时显示具体数字,可以用文档中的示例模板:
"template": "{{ .Premium.Percent.Gauge() }} {{ .Premium.Used }}/{{ .Premium.Limit }}"或者用.GaugeUsed()显示"已用"方向的仪表条:
"template": "{{ .Premium.Percent.GaugeUsed() }} {{ .Premium.Used }}/{{ .Premium.Limit }}"验证配置是否生效
保存配置后回到 shell,观察提示符:
- 配置正确且认证有效时,
copilot段落会显示上面对应的仪表条(或你自定义的模板输出),用量数据按cache设定定期刷新; - 如果提示符里看不到这个段落,最常见的原因是尚未认证。段落实现中在未找到令牌时会直接跳过渲染,错误信息为
no access token available, use 'oh-my-posh auth copilot' to authenticate(见 src/segments/copilot.go),此时重新执行oh-my-posh auth copilot完成认证即可。
两点限制需要注意:
- 认证和配额请求都依赖 GitHub 网络接口,接口不可达或响应中没有配额数据时段落不会显示;
http_timeout默认只有20毫秒,如果网络延迟较高而段落长时间不显示,可按示例把该值调大。
完成认证与段落配置后,提示符即可持续展示当前计费周期内的 Copilot 配额用量;如需查看完整的属性与模板写法,可参考 GitHub Copilot 段落文档 和 模板文档。
【免费下载链接】oh-my-poshThe most customisable and low-latency cross platform/shell prompt renderer项目地址: https://gitcode.com/GitHub_Trending/oh/oh-my-posh
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考