一个 pi 扩展包(pi package),让你在 pi 中使用 ZCode 账号(Start Plan / Weekend Build 等套餐)以及 Z.ai 的 GLM 模型。
扩展注册了名为 zcode 的模型提供方(provider)和 /zcode 命令。使用 ZCode 套餐凭证(JWT)时,请求由 pi 直接以 HTTP 流式(SSE)发送到 ZCode Plan 的 Anthropic 兼容接口,不需要启动额外的子进程;使用普通 Z.ai API Key 时,则走 Z.ai 公共 Anthropic 接口。
- 注册
zcodeprovider:默认提供zcode/glm-5.3-flash与zcode/glm-5.3;登录后会根据账号套餐(或公共 API 的/v1/models)刷新可用模型列表。 - 三种登录方式(
/login zcode):- 读取本机 ZCode 桌面端已登录的凭证(
~/.zcode/v2/credentials.json,自动解密); - 浏览器 OAuth 登录(可选 Z.ai 或 BigModel 智谱开放平台),自动打开浏览器并轮询授权结果;
- 手动输入 Z.ai API Key 或 ZCode JWT Token。
- 读取本机 ZCode 桌面端已登录的凭证(
- 未登录时自动回退:没有在 pi 中登录时,请求和
/zcode状态查询会尝试使用本机 ZCode 桌面端凭证。 - 套餐与额度查询:
/zcode列出所有 active 套餐(含 Weekend Build 等活动套餐)各模型的剩余/总额度、到期时间,以及跨套餐汇总额度,并更新状态栏。 - 流式输出与思考过程:支持文本、思考(thinking)内容和工具调用(tool use)的流式转发。
- 思考深度:pi 的推理等级映射为
low/high/max(其他等级按max处理)。 - 凭证刷新:Plan 凭证刷新时会校验余额接口,失败则重新读取本机桌面端账号。
内置模型目录(src/account.ts 中的 CATALOG)包含 GLM-5.3、GLM-5.3-Flash、GLM-5.3-FlashX、GLM-5.2、GLM-5.1、GLM-5、GLM-5-Turbo、GLM-4.7、GLM-4.6、GLM-4.5、GLM-4.5-Air、GLM-5V-Turbo、GLM-4.6V、GLM-4.7-Flash 等,实际显示哪些取决于账号套餐。默认两款:
| 模型 ID | 名称 | 上下文 | 最大输出 | 输入 | 思考 |
|---|---|---|---|---|---|
zcode/glm-5.3-flash |
GLM-5.3-Flash | 1,000,000 | 128,000 | 文本、图片 | ✅ low / high / max |
zcode/glm-5.3 |
GLM-5.3 | 1,000,000 | 128,000 | 文本 | ✅ low / high / max |
注意:通过 ZCode Plan 凭证请求时,模型 ID 含
flash的会发送为GLM-5.3-Flash,其余一律发送为GLM-5.3。费用在 pi 中按 0 计算。
本仓库是一个 pi package(package.json 中声明了 "pi": { "extensions": ["./extensions/zcode.ts"] }),以 TypeScript 源码形式由 pi 直接加载。请按 pi 加载扩展包的方式,将本仓库(或其本地克隆)添加为 pi package。
依赖(peer dependencies,由 pi 提供):
@earendil-works/pi-ai@earendil-works/pi-coding-agent
| 项目 | 说明 |
|---|---|
ZCODE_API_KEY |
provider 的 apiKey 配置为 $ZCODE_API_KEY,可通过该环境变量提供 Key / Token。 |
ZCODE_CREDENTIAL_SECRET |
解密 ZCode 桌面端凭证时使用的密钥;未设置时使用基于平台、home 目录和用户名的默认值。 |
~/.zcode/v2/credentials.json |
ZCode 桌面端凭证文件(桌面登录方式读取)。 |
~/.zcode/v2/telemetry-state.json |
读取其中的 deviceMid 作为设备 ID(不存在则随机生成)。 |
凭证类型判断:以 eyJ 开头的三段式 JWT 视为 ZCode Plan 凭证;其他视为 Z.ai 公共 API Key。
使用的接口:
- Plan 对话:
https://zcode.z.ai/api/v1/zcode-plan/anthropic/v1/messages - Plan 额度:
https://zcode.z.ai/api/v1/zcode-plan/billing/balance - 浏览器登录:
https://zcode.z.ai/api/v1/oauth/cli/init、/api/v1/oauth/cli/poll/<flow_id> - 公共 API:
https://api.z.ai/api/anthropic
/login zcode
/zcode models # 交互选择 ZCode 模型
/zcode use glm-5.3 # 按 ID 或名称直接切换
/model zcode/glm-5.3-flash
或启动时指定:
pi --model zcode/glm-5.3-flash/zcode # 或 /zcode status
输出包括每个 active 套餐的各模型剩余/总额度与百分比、到期时间,以及"总可用额度合计"。
/zcode sync
读取本机 ZCode 桌面端账号并显示账号名与套餐。
extensions/zcode.ts # pi 扩展入口:注册 zcode provider、登录流程、/zcode 命令
src/account.ts # 模型目录、桌面端凭证解密、套餐额度查询、浏览器 OAuth、公共模型列表
src/direct-client.ts # 将 pi 上下文转换为 Anthropic Messages 格式,直连 ZCode Plan 接口并解析 SSE 流
src/prompt-cache.ts # 请求时前置的系统提示前缀(ZAI_CACHE_PREFIX)
src/bridge.ts # 旧的 ZCode app-server 子进程桥接(ZCodeBridge),当前扩展未引用
scripts/check-account.ts # 打印本机 ZCode 账号、套餐与额度(不输出凭证本身)
scripts/check-account.mjs # 同上
scripts/save-desktop-login.ts # 将本机桌面端凭证写入 ~/.pi/agent/auth.json 的 zcode 条目
package.json 中没有定义构建、测试或 lint 脚本,仓库也没有测试文件。辅助脚本是 TypeScript,需要使用能直接运行 .ts 的运行时,例如:
node scripts/check-account.ts # Node.js 需支持 TypeScript 类型剥离
node scripts/save-desktop-login.ts # 会修改 ~/.pi/agent/auth.json这两个脚本都需要本机已登录 ZCode 桌面端。
MIT © 2026 KayanoLiam