@cluski/pi-new-api
v0.1.0
Published
Pi extension: register a self-hosted New API gateway as a custom OpenAI-compatible provider.
Maintainers
Readme
pi-new-api
为 pi 开发的 New API 网关 extension:把自建的 New API 聚合网关注册成一个 OpenAI 兼容 provider,统一纳管公司买的多套 coding plan。
New API 把上游各家厂商(Zhipu GLM、Kimi/Moonshot、Anthropic、OpenAI、……)统一转译成 OpenAI /v1/chat/completions 协议吐出来,本 extension 就是在 pi 里挂上这个网关地址 + token,并把精选模型按各厂商官方参数配好。
安装
这是一个 npm pi 包(package.json 里带 pi manifest 和 pi-package 关键字)。有三种用法:
1) 本地开发 / 试跑(不发布) —— 直接用本地路径加载:
pi -e ./packages/new-api # 临时加载(本次运行有效,不写入设置)
pi install ./packages/new-api # 安装到用户设置(~/.pi/agent/settings.json)
pi install -l ./packages/new-api # 安装到项目设置(.pi/settings.json,随仓库共享给团队)2) 发布到 npm 后安装:
npm publish --access public # 先登录拥有 @cluski scope 的 npm 账号
pi install npm:@cluski/pi-new-api # 别人/别的项目这样装3) 从 git 安装(推到 GitHub 后):
pi install git:github.com/<user>/[email protected]包里的
@earendil-works/*是 peerDependencies(*),不打包进 tarball —— pi 运行时自带这些核心包,版本自动对齐。
配置
| 环境变量 | 必填 | 说明 |
| --- | --- | --- |
| NEW_API_KEY | ✅ | New API 后台签发的令牌(形如 sk-...)。extension 以 Authorization: Bearer <key> 发送。 |
| NEW_API_BASE_URL | ❌ | 网关地址,默认 http://10.30.60.169:3000/v1。换机房/走域名时覆盖即可,无需改代码。 |
export NEW_API_KEY=sk-xxxxxxxxxxxxxxxx
# 可选:
export NEW_API_BASE_URL=http://your-newapi-host:3000/v1想固化配置而不污染环境?把
apiKey、baseUrl写进~/.pi/agent/models.json的new-api段即可,pi 会按models.json> extension > 内置 的优先级叠加。
暴露的模型
精选 5 个 coding 模型,compat 全部对齐 pi-ai 内置 provider 的官方定义,所以经网关走和直连厂商行为一致:
| model.id | 显示名 | 上游厂商 | 对齐的 pi-ai 内置定义 | 协议 | contextWindow | maxTokens |
| --- | --- | --- | --- | --- | --- | --- |
| glm-5.2 | GLM 5.2 | 智谱 Z.AI | zai-coding-cn glm-5.2 | openai-completions (thinkingFormat: zai) | 1,000,000 | 131,072 |
| glm-4.7 | GLM 4.7 | 智谱 Z.AI | zai-coding-cn glm-4.7 | openai-completions (thinkingFormat: zai) | 204,800 | 131,072 |
| k3 | Kimi K3 | Kimi/Moonshot | moonshotai kimi-k3 | openai-completions (thinkingFormat: openai, deferred tools) | 1,048,576 | 131,072 |
| k3-256k | Kimi K3 256K | Kimi/Moonshot | 同 k3,仅缩短上下文窗口 | openai-completions | 262,144 | 131,072 |
| kimi-for-coding | Kimi For Coding | Kimi/Moonshot | moonshotai kimi-k2.7-code | openai-completions (thinkingFormat: deepseek) | 262,144 | 262,144 |
⚠️ 注意 Kimi K3 系:pi-ai 官方的
kimi-codingprovider 里 K3 走的是 Anthropic/v1/messages协议(还带User-Agent: KimiCLI/1.5、adaptive thinking)。但经 New API 网关后统一成了 OpenAI 协议,所以本 extension 按moonshotaiprovider 的kimi-k3(OpenAI 格式)来配,而非kimi-coding(Anthropic 格式)。
用法
# 启动 pi 后切换模型
/model new-api/k3
# 或在启动时指定
pi --model new-api/glm-5.2项目结构
new-api/
├── package.json npm 包清单(name/version/keywords=pi-package/pi.extensions manifest/peerDependencies)
├── src/index.ts 扩展工厂:注册 new-api provider + 5 个模型
├── tsconfig.json
├── README.md
└── LICENSE类型检查
npm install # dev 依赖:typescript;pi 核心包通过 workspace 软链提供类型
npm run check # tsc --noEmit注意事项
- 新增/改名模型:New API 后台改了渠道名,直接改
src/index.ts里的id字段即可,无需动其它配置。 - 换网关地址:覆盖
NEW_API_BASE_URL环境变量,或改src/index.ts里的默认值。 - 换 token:
export NEW_API_KEY=...即可,extension 不会缓存;想用命令式取 key 也可写apiKey: "!pass-show newapi-token"。
