Skip to main content

Pi Provider 模板

Issue #309 在 templates/pi-providers 提供每家 provider 一份完整的 pi_providers 文件。每份文件都是 Pi models.json 形状的有效 JSON:可以把整份复制为 .orbi/pi-providers.json,也可以把其中唯一条目复制到已有文件的 providers 对象中。然后在 orbi.toml 中只设置两个选择项:

清单

模板出现在清单中不代表承诺额度、可用性、速度或模型支持。未实测 是有意保留的状态。

接入一家新 provider

  1. 复制最接近的模板并设置一个 provider id。baseUrlapiapiKey 和非空 models 列表必须一起保留。选择的 pi_model 必须精确等于某个 models[].id
  2. OpenAI-compatible endpoint 使用 openai-completions。Google Gemini 使用 google-generative-ai,其 baseUrl 保持为 https://generativelanguage.googleapis.com/v1beta
  3. 真实 key 放在 .orbi/env(gitignored、权限 600),提交的 JSON 只使用 $VAR${VAR} 引用:
    已安装的 [email protected] 通过 EnvironmentFile 加载此文件;key 绝不能进入 Git 或模板。字面量 key 只是降级方案:文件仍应 gitignored,并且要接受它可能通过本地文件和进程工具泄漏的风险。
  4. 手动 tick 时 systemd 不会加载 .orbi/env。先导出变量,或在当前 shell 中 source:
  5. orbi.toml 只选择 provider/model,不维护注释掉的 provider 配置块。真实任务前运行 loader/runner 校验;选中的 provider、model、endpoint、API 或 key 引用不正确时会 fail fast。

thinkingLevelMap

不要为 provider 猜测完整映射。Gemini 模板的已知安全写法正是 {"off": null}:其他 thinking level 使用 provider 默认映射。若把所有 level 都映射成 null,可能发送 provider 不支持的值并得到 400。其他 provider 若没有经过 Pi provider 契约验证,应省略此字段。

Google Gemini:AI Studio 免费层

在 Google 的 AI Studio API key 页面 创建 API key。key 只保存在本机:提交的模板只引用 GOOGLE_API_KEY,不要把真实值写入 Git、Issue、PR 或 journal。
  1. 在 AI Studio 创建或选择 key,然后写入 Orbi 使用的 gitignored 环境文件:
    已安装的 systemd unit 会加载 .orbi/env。手动 tick 时,先按上手指南导出变量。
  2. templates/pi-providers/gemini.json 复制为 .orbi/pi-providers.json。其中完整的选中条目如下:
  3. orbi.toml 中选择精确的 provider 和 model:
    apibaseUrl、model ID 和 $GOOGLE_API_KEY 引用都是已验证模板的一部分。除非重新核实当前 Pi/Gemini 契约,否则保持 Gemini 的 thinkingLevelMap{"off": null};把所有 thinking level 都映射为 null 可能导致上游 400

免费层限流与实测表现

截至 2026-09-04 核实,AI Studio Gemini API 免费层按 RPM、RPD、TPM 限流。官方限流页面是动态页面,因此本文不抄写会变化的宣传数字。该账号真实的每日 RPD/TPD 上限未测量,应标为未实测,不能理解为不限量。 本机使用 provider google 和 model gemini-3.8-flash 的真实 Pi 请求约 15 秒起跑。burst 后上游返回 HTTP 429,消息为 You exceeded your current quota;约 50 分钟后再次返回 HTTP 200。这条有日期的观察说明是暂时性限流,不能证明 key 无效,也不能证明每日额度已耗尽。它只是一个账号的证据,不是额度保证。 Orbi 不会在 session 中静默重试或切换 provider。保留失败 run 的证据,等待暂时性限流恢复,或在下一次运行手动选择另一家已配置的 provider:
替换 provider 文件和匹配的环境变量,再次验证精确的 provider/model/key,然后执行一次真实 pi --print 检查。切换必须手动完成;#313规划的按 provider 自动轮换尚不是当前行为。

z.ai GLM:体验/免费额度

如果 z.ai 账号有体验或免费额度,可使用这条路径。z.ai 提供 OpenAI-compatible API;Orbi 模板使用直连 endpoint https://api.z.ai/api/paas/v4 和 Pi 的 openai-completions API。key 获取流程以 z.ai 的 API 快速开始API key 管理页为准。页面可能变化;不要把 key 写入仓库、Issue、PR 或 journal。
  1. 在 z.ai 控制台创建 API key,然后放入本地 gitignored 环境文件:
    systemd service 会通过 EnvironmentFile 加载该文件;手动 tick 不会加载。手动运行前先执行 set -a; . .orbi/env; set +a,再运行上手指南的手动 tick 命令
  2. templates/pi-providers/z-ai.json 复制为 .orbi/pi-providers.json,或复制其中的 provider 条目。选择精确的 ID:
    当前完整的 models 条目是:
    reasoning 是可选的 Pi model catalog 字段,用于表示模型是否支持 reasoning;thinkingLevelMap 将 Pi thinking level 映射为 provider 特定值。已提交的 z.ai 模板有意省略这两个字段:在没有经过 Pi/z.ai 契约核实前,本文不宣称 z.ai 的 reasoning 或 thinking 映射。不要把 Gemini 的 {"off": null} 映射复制给 z.ai。
  3. 派发任务前验证条目。Runner 的 _load_pi_providers 会校验 provider、精确 model ID、endpoint/API 和非空 ZAI_API_KEY,但不会测试或承诺额度是否可用。

已知的免费额度边界

  • **2026-09-04 已核实:**使用 glm-5.3-flash 的真实 Orbi 交付从 Issue #303 完成到 commit b81f77a,并到达 PR #304。这证明一次成功运行,不是额度保证。
  • 本指南使用的材料中,z.ai 没有静态公布统一的体验/免费上限。确切额度、重置时间、并发和模型可用性取决于账号及 z.ai 当前政策;本文未实测
  • 本指南没有对耗尽或限流响应做受控测量;限流表现:未实测。以上游 HTTP 认证/限流错误为准,不要编造数字或增加重试循环。

额度用尽后的切换路径

Orbi 不提供自动 fallback。保留 orbi.toml 中的选择字段,但要把 pi_providerpi_model 改为清单中另一 provider 的匹配值;同时替换 provider 文件和 key,然后重新验证。例如切换到已有的 OpenRouter 模板及其选中模型:
复制 openrouter.json,在 .orbi/env 设置 OPENROUTER_API_KEY,派发前执行一次真实 pi --print 检查。OpenRouter 的 z-ai/glm-5.2:free 是另一条 provider 路径;本文未实测也不承诺它的可用性和额度。

Cloudflare Workers AI

Cloudflare 的 OpenAI-compatible endpoint 按账号区分。复制 cloudflare-workers-ai.json,把 baseUrl 中的 REPLACE_WITH_ACCOUNT_ID 换成 Cloudflare Account ID,并创建同时具有 Workers AI - ReadWorkers AI - Edit 权限的 API token(Cloudflare REST API 文档要求这两个权限)。token 放在 .orbi/env
orbi.toml 中选择:
模型 ID 来自 Cloudflare 当前的 Workers AI 模型目录,endpoint 路径来自 Workers AI 配置文档。Cloudflare 官方定价页说明每天免费 10,000 Neurons,在 00:00 UTC 重置(信息核对日期:2026-09-04)。超过免费额度后,若未启用计费,后续操作会失败。额度和价格可能变化,运行前请重新查看官方页面。

实测一个 Orbi 任务的消耗

派发一个 Issue 前、PR 打开后,分别记录 Workers AI 账号的 Neurons 使用量(必须是同一 UTC 日)。任务消耗为 after - before;保留 dashboard/API 的 UTC 时间戳、模型、Issue 和 PR URL,但不要保留 token。Orbi journal 只能证明选中了 provider/model,不能代替 Neurons 计量。本仓库尚未使用带 Cloudflare 账号的真实 Orbi 任务;真实请求和 Neurons 消耗未实测,不得推断或编造。

托管服务与本地 Qwen 的定位

Workers AI 是托管服务:Cloudflare 提供推理服务和账号 Neurons 额度,适合没有高性能 GPU 的机器,但依赖网络、账号额度和 Cloudflare 的模型可用性。local-qwen 是自托管:不消耗 provider 额度,请求发往本地 OpenAI-compatible server,但操作者需要提供硬件、模型运行时和电力。轻量托管执行可选 Cloudflare;重视数据不出机和本地可控可用性时选本地 Qwen。

本地 provider

本地 OpenAI-compatible server 仍需要非空的 apiKey 字段才能通过 provider 形状校验;本地模板使用无秘密的 dummy 值 local。模型 id 必须与 server 宣告的 id 一致(llama.cpp 可用 --alias 设置)。

Codex OAuth:使用 ChatGPT/Codex 订阅额度

这条路径使用 Pi 原生的 openai-codex provider 和 OAuth 凭据。不使用 OPENAI_API_KEY,也不需要第二份 pi_providers JSON。它消耗的是订阅/Codex 额度,不是 OpenAI API 账单。

第一次登录:必须按这个顺序

  1. 启动交互式 Pi 会话:pi
  2. 在 Pi 提示符中执行 /login codex
  3. 在浏览器完成 Codex OAuth 授权。
  4. 回到 Pi,用当前 Pi CLI 实际支持的命令检查登录:
    成功时应报告 "status":"ready""authType":"oauth"。该命令默认会刷新过期 OAuth 凭据;不要在共享终端或 transcript 中使用 --credentials
  5. 检查成功后,再配置 Orbi 并运行真实 Issue。

最小 Orbi 配置

如果存在 pi_providers,请删除;保持它未设置。不要复制或创建 openai-codex provider 条目。Pi 从自己的 models.json 提供 catalog,Orbi 的 per-run agent 目录复用 Pi 原生 auth。
Pi catalog 在 2026-09-07 检查到该模型的 API 是 openai-codex-responses,endpoint 是 https://chatgpt.com/backend-api;启用 reasoning,支持 text/image 输入,上下文限制 1,000,000 tokens,输出限制 128,000 tokens。其 catalog 的 thinking 映射支持 minimal → lowxhigh → xhighmax → max;默认可不设 pi_thinking,也可设置这些已核实的级别。这些是 Pi 的请求限制,不是订阅额度承诺。

额度与计费边界

OAuth 凭据消耗用户的 Codex/ChatGPT 订阅额度。它与 OpenAI API key、API organization 计费以及任何 OPENAI_API_KEY 余额相互独立。Pi catalog 的 cost 字段只是路由元数据,不是账单或额度计数器。额度、重置时间、限流、模型可用性和错误文本取决于账号计划且可能变化。2026-09-05 的真实运行来自一个本机账号;证据没有记录账号计划和确切额度,因此本文不做普遍额度承诺。额度耗尽或限流时,Pi session 中通常会出现上游认证/限流失败;请以当前 Codex UI/help 为准,不要用 catalog 推算剩余额度。

应保留的真实 Issue 证据

在用户自己的仓库运行第一个 Issue,并保留不含秘密的证据。成功运行至少应记录:
本指南对应的 Orbi 已完成运行(2026-09-07)留下了以下脱敏、无秘密记录:
这只是一个本机账号的证据,不代表额度保证;证据没有记录账号计划和确切额度。不要整份粘贴 session JSONL:先删掉凭据和包含秘密的 prompt。

额度或认证失败时切换 provider

只替换选择项即可。切换到 Orbi 模板里的 provider 时,需要把对应文件加回来,因为 fallback 不再是 Pi 原生 provider:
使用本页对应的模板和 secret 配置;绝不要把 OAuth token 或 API key 写入仓库、Issue、PR body 或 journal。认证失效时先用 /login codex 修复/重新登录;切换 provider 不会修复过期的 Codex session。

Groq 免费档

groq.json 复制为 .orbi/pi-providers.json,再设置选择项和 key 引用:
模板使用 Groq 的 OpenAI-compatible endpoint(api: "openai-completions")和 $GROQ_API_KEY;真实 key 放在 gitignored 的 .orbi/env,不要写入 JSON 或提交。 根据 Groq 的限流表groq/compound 的 Free Plan 行为 30 RPM / 250 RPD / 70K TPM(2026-09-04 核对)。这是账号限额,不是 Orbi 承诺;实际使用前应重新查看官方表。模型目录列出该模型 131,072 token 上下文和 8,192 token 最大输出。TPM 较低,适合短小、边界清晰的 coding Issue 和小修复,不适合长上下文仓库分析。 额度命中时上游返回 HTTP 429;Orbi 不会静默重试,也不会在 session 中途切换 provider。应把该 run 视为失败,保留 Issue/worktree 证据,并在下一次运行手动选择另一家已配置的 provider。#313规划了按 provider 预算和 run 边界自动轮换;在该功能实现前,不要把它当作当前行为。本指南中的真实 Groq 请求、usage 计量和 429 响应未实测;没有脱敏证据时不要声称 Groq Issue 已跑通。 完整的 OpenAI-compatible 配置见上手指南,provider 文章系列见 Issue #305