pi-setup

star 49

This skill should be used when the user wants to install or configure Pi Agent (@earendil-works/pi-coding-agent) with DeepSeek (built-in), Ant-Ling Ring-2.6-1T (single-model custom provider), and ZenMux (multi-model OpenAI-compatible aggregator including Gemini 3.5 Flash, Claude, GPT), including auth, models.json, settings.json, a curated extension set, and known-pitfall fixes. Triggers on "配置 pi"、"setup pi agent"、"pi 装一下"、"配 ring/deepseek/gemini/zenmux 到 pi".

wquguru By wquguru schedule Updated 6/13/2026

name: pi-setup description: This skill should be used when the user wants to install or configure Pi Agent (@earendil-works/pi-coding-agent) with DeepSeek (built-in), Ant-Ling Ring-2.6-1T (single-model custom provider), and ZenMux (multi-model OpenAI-compatible aggregator including Gemini 3.5 Flash, Claude, GPT), including auth, models.json, settings.json, a curated extension set, and known-pitfall fixes. Triggers on "配置 pi"、"setup pi agent"、"pi 装一下"、"配 ring/deepseek/gemini/zenmux 到 pi". license: MIT allowed-tools: "Read,Write,Edit,Bash,AskUserQuestion" version: "1.1.0"

Pi Setup

帮用户从零配置 Pi Agent,搭配 DeepSeek V4(内置)+ Ant-Ling Ring-2.6-1T(单模型自定义 provider)+ ZenMux(多模型聚合 provider,含 Gemini 3.5 Flash、Claude、GPT 等),装一套精选扩展,并自动规避 8 个已知坑。

用户输入的参数:$ARGUMENTS

核心原则

  1. 检测优先:每一步先探测现状(pi 是否已装、配置是否已存在、密钥在哪个 shell 文件),再决定动作。绝不盲目覆盖用户已有配置——发现已存在就 diff 给用户看,问是否覆盖。
  2. 密钥不落明文:pi 配置里只放 !shell命令 惰性读取,密钥留在用户原文件(~/.deepseek、shell rc 等)。
  3. 交互确认关键选择:用 AskUserQuestion 收集"启用哪些模型"等决策,不替用户拍板。
  4. 环境变量靠检测提醒:不假设是 ~/.zshrc,扫所有候选文件 + 当前进程环境,按实际情况给针对性提示。

工作流程

1. 检测现状

并行跑这些探测,汇总成一张"现状表":

which pi && pi --version                       # pi 是否已装、版本
ls -la ~/.pi/agent/ 2>/dev/null                # 现有配置文件
cat ~/.pi/agent/settings.json 2>/dev/null      # 现有 settings(packages/默认模型)
cat ~/.pi/agent/models.json 2>/dev/null        # 现有自定义 provider
echo $SHELL                                    # 用户默认 shell
ls -la ~/.gemini-zenmux* ~/.zenmux 2>/dev/null # ZenMux 密钥文件候选

把"已装/未装、哪些配置已存在、默认 shell、ZenMux 密钥文件是否存在"整理给用户,再继续。

2. 环境变量检测(不限 ~/.zshrc)

这是本 skill 的重点。 不要假设密钥在 ~/.zshrc。按以下顺序探测每个所需变量(DEEPSEEK_API_KEYLING_API_KEYZENMUX_API_KEY,以及用户额外要的):

# a) 当前进程环境(最权威——说明已 export 且生效)
printenv DEEPSEEK_API_KEY >/dev/null && echo "DEEPSEEK_API_KEY: in live env"
printenv LING_API_KEY     >/dev/null && echo "LING_API_KEY: in live env"
printenv ZENMUX_API_KEY   >/dev/null && echo "ZENMUX_API_KEY: in live env"

# b) 独立密钥文件
[ -f ~/.deepseek ] && grep -l DEEPSEEK_API_KEY ~/.deepseek 2>/dev/null
for f in ~/.zenmux ~/.gemini-zenmux ~/.gemini-zenmux-new ~/.gemini-zenmux-key; do
  [ -f "$f" ] && grep -lE '^(ZENMUX_)?API_KEY=' "$f" 2>/dev/null
done

# c) 扫所有常见 shell 启动文件 + 是否带 export
for f in ~/.zshrc ~/.zshenv ~/.zprofile ~/.bashrc ~/.bash_profile ~/.profile ~/.config/fish/config.fish ~/.deepseek ~/.zenmux ~/.gemini-zenmux*; do
  [ -f "$f" ] && grep -nE 'DEEPSEEK_API_KEY|LING_API_KEY|ZENMUX_API_KEY|^API_KEY=' "$f" 2>/dev/null | sed "s|^|$f:|"
done

ZenMux 密钥文件的常见两种格式:

  • ~/.zenmux / ~/.gemini-zenmux-new 等独立文件,内含 API_KEY=sk-...ZENMUX_API_KEY=sk-...
  • 环境变量 ZENMUX_API_KEY 在 shell rc 里 export

按检测结果分情况提醒(写进最终报告):

检测结果 提醒动作
变量在 live env ✅ 可直接用 apiKey: "VAR_NAME"(最简单)
在某 rc 文件且带 export ✅ 新开 shell 生效;告知具体文件
在某 rc 文件但export(坑 1) ⚠️ 子进程读不到,用 !{shell} -ic 'echo $VAR' 惰性读,或建议加 export
在独立文件(如 ~/.deepseek ✅ 用 !awk / !grep 从该文件提取
完全找不到 ❗ 明确告诉用户该把哪个变量加到哪个文件(用其默认 shell 对应的 rc),给出可粘贴的行

shell rc 选择按 $SHELL 推导:zsh→~/.zshrc,bash→~/.bashrc(交互)/~/.bash_profile(登录),fish→~/.config/fish/config.fish

3. AskUserQuestion — 收集关键决策

AskUserQuestion 一次性问以下问题(能合并成一次调用就合并)。AskUserQuestion 每问最多 4 个选项,Q1 已经顶到上限,所以 ZenMux 用单一捆绑选项加入(同时启用 paid + free 两个 Gemini 模型)。

Q1 — 启用哪些模型multiSelect: true,引导用户全选)

  • deepseek-v4-pro(DeepSeek V4 Pro,1M ctx,内置)
  • deepseek-v4-flash(DeepSeek V4 Flash,1M ctx,内置,便宜)
  • ant-ling/Ring-2.6-1T(蚂蚁 Ring 2.6 1T,256K ctx,自定义)
  • zenmux/google/gemini-3.5-flash(ZenMux 聚合,Google 5月19日 GA,agentic 强;会同时启用 -free 限免版方便切换,跨家对比 Claude/GPT 也走这个 provider,setup 后追加到 models.json 即可)
  • 在 question 文案里写明"默认建议全选——它们都进 Ctrl+P 循环列表,不占额外上下文"

Q2 — 默认模型(单选,选项来自 Q1 已选项)

  • 决定 settings.jsondefaultProvider / defaultModel

Q3 — 默认 thinking 级别(单选)

  • xhigh(最强推理,Ring 烧 token 多但质量高)/ high(Gemini 3.5 Flash 默认推荐档)/ medium(通用) / off
  • 提示:这是全局值,跨模型映射不同(DeepSeek 的 minimal/low/medium 不支持会被 clamp;Gemini 的 xhigh 在 thinkingLevelMap 里映射回 high)

Q4 — 扩展集(单选)

  • 全量 22 个(功能 8 + TUI 9 + 行为 5,约 7.7k tokens)/ 仅核心(mcp-adapter、web-access、subagents、fff、context-prune)/ 跳过扩展

只问这些;不要追问 skill 类型之类的元问题——参数已明确。

4. 写配置文件

按用户选择生成。所有 JSON 模板见 references/config-templates.md严格照抄(尤其 compat.supportsDeveloperRole: falsethinkingLevelMap,这是坑 2/3 的修复)。

写之前若文件已存在:读出来 diff 给用户,确认后再覆盖。

  • ~/.pi/agent/auth.json → DeepSeek key(!awk~/.deepseek 或检测到的位置惰性读),chmod 600
  • ~/.pi/agent/models.json → 把用户选中的自定义 provider 都写进 providers
    • 选了 Ring → ant-ling provider 块
    • 选了 ZenMux Gemini → zenmux provider 块(默认同时包含 google/gemini-3.5-flash + google/gemini-3.5-flash-free 两个模型,apiKey 用 !awk 从检测到的 ZenMux 密钥文件惰性读)
    • 两者都选 → 两个 provider 都写进同一个 providers 对象(合并,不要互相覆盖)
  • ~/.pi/agent/settings.json → defaultProvider/Model、defaultThinkingLevel、enabledModels(用户在 Q1 选的;ZenMux 模型在 enabledModels 里用 zenmux/google/gemini-3.5-flash 形式)
  • DeepSeek 不写 models.json(内置,手配有害——见坑 7)
  • ZenMux Gemini 之外的模型(Claude / GPT 等)不在 skill 默认范围内自动写——会在最终报告里告诉用户"在 zenmux.models 数组追加即可,模型 ID 见 https://zenmux.ai",避免硬编码不存在或已过期的 model ID

5. 装扩展

按 Q4 选择 pi install。命令清单见 references/config-templates.md 的"扩展安装"节。全局跳过 pi-autoresearch@vanillagreen/pi-extension-manager@vanillagreen/pi-session-manager

6. 修扩展快捷键冲突(坑 6)

装了 @plannotator/pi-extension + @marckrenn/pi-sub-bar 时,写 ~/.pi/agent/pi-sub-bar-settings.json 把 cycleProvider 改 ctrl+alt+s(模板在 references)。

7. 验证

cat ~/.pi/agent/models.json | python3 -m json.tool >/dev/null && echo "models.json valid"
pi --list-models | grep -iE 'Ring|deepseek-v4|gemini'
cd /tmp && pi --provider <默认provider> --model <默认model> -p "say pong" --no-extensions
pi -p "say hi" 2>&1 | grep -i conflict   # 无输出 = 快捷键冲突已解

若 Q1 选了 ZenMux Gemini,额外用 curl 验一次端点(避开 Pi 自身的扩展加载干扰):

KEY=$(awk -F= '/^(ZENMUX_)?API_KEY=/{print $2; exit}' ~/.gemini-zenmux-new 2>/dev/null \
       || printenv ZENMUX_API_KEY)
curl -s -X POST https://zenmux.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  -d '{"model":"google/gemini-3.5-flash-free","messages":[{"role":"user","content":"reply pong"}],"max_tokens":2048,"reasoning_effort":"low"}' \
  | python3 -c "import json,sys; r=json.load(sys.stdin); print('  content:', r['choices'][0]['message'].get('content','')[:80] or '(empty)')"

输出非空 = ZenMux 可达、key 有效、reasoning_effort 透传正常。空 content + finish_reason:length 多半是 max_tokens 给小了(Gemini 3.5 Flash 默认会先 reasoning,必须 ≥2K)。

任何一步 400 Invalid Request Messages 或截断、或其它异常,先查 references/troubleshooting.md(7 个坑的现象→复现→根因→解法),按 curl 探针二分定位,再动手。

输出

完成后给用户一份报告:现状检测结果、环境变量提醒(按 §2 的表)、最终生成的文件清单、用户的模型/thinking 选择、验证结果、日常使用速查(Ctrl+L 切模型 / Shift+Tab 切 thinking / Ctrl+P 循环)。

配置文件直接落在 ~/.pi/agent/,不产出到 Downloads。

Install via CLI
npx skills add https://github.com/wquguru/skills --skill pi-setup
Repository Details
star Stars 49
call_split Forks 5
navigation Branch main
article Path SKILL.md
More from Creator