@cluski/pi-new-api

Pi extension: register a self-hosted New API gateway as a custom OpenAI-compatible provider.

Packages

Package details

extension

Install @cluski/pi-new-api from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:@cluski/pi-new-api
Package
@cluski/pi-new-api
Version
0.1.0
Published
Jul 31, 2026
Downloads
264/mo · 11/wk
Author
cluski
License
MIT
Types
extension
Size
12.1 KB
Dependencies
0 dependencies · 1 peer
Pi manifest JSON
{
  "extensions": [
    "./src/index.ts"
  ]
}

Security note

Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.

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>/pi-new-api@v0.1.0

包里的 @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

想固化配置而不污染环境?把 apiKeybaseUrl 写进 ~/.pi/agent/models.jsonnew-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-coding provider 里 K3 走的是 Anthropic /v1/messages 协议(还带 User-Agent: KimiCLI/1.5、adaptive thinking)。但经 New API 网关后统一成了 OpenAI 协议,所以本 extension 按 moonshotai provider 的 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 里的默认值。
  • 换 tokenexport NEW_API_KEY=... 即可,extension 不会缓存;想用命令式取 key 也可写 apiKey: "!pass-show newapi-token"