概述
Pi Coding Agent 是一个开源的、基于终端的 AI 编程助手,与 Claude Code 类似。本项目(pi-vs-claude-code)提供了一批扩展(extensions),用于展示 Pi 的定制能力,涵盖自定义 UI 组件、多智能体编排、安全审计、跨智能体集成以及智能体之间的通信。
扩展是 TypeScript 文件,通过挂载 Pi 的生命周期事件来添加工具、修改 UI、拦截命令,并与其他智能体协调。
前置依赖
以下三项均为必需:
# 安装 Bun(运行时与包管理器)
curl -fsSL https://bun.sh/install | bash
# 安装 just(任务运行器)
brew install just # macOS
# 或 cargo install just # 跨平台
# 安装 Pi Coding Agent CLI
# 参见 https://github.com/mariozechner/pi-coding-agent
安装方式
# 克隆扩展仓库
git clone https://github.com/disler/pi-vs-claude-code.git
cd pi-vs-claude-code
# 安装依赖
bun install
# 复制环境变量模板
cp .env.sample .env
# 编辑 .env 并添加你的 API keys:
# OPENAI_API_KEY=sk-...
# ANTHROPIC_API_KEY=sk-ant-...
# GEMINI_API_KEY=...
# OPENROUTER_API_KEY=...
API Key 配置
Pi 不会自动加载 .env 文件,必须在启动前先 source 环境变量。
方式一 - 手动 source:
source .env && pi
方式二 - Shell 别名(添加到 ~/.zshrc):
alias pi='source $(pwd)/.env && pi'
方式三 - 使用 just(自动):
just pi # .env 会自动加载
运行扩展
单个扩展
pi -e extensions/minimal.ts
叠加多个扩展
pi -e extensions/minimal.ts -e extensions/cross-agent.ts
使用 Just 配方
# 列出所有可用配方
just
# 常用配方
just ext-minimal # 带上下文计量器的紧凑页脚
just ext-tool-counter # 带工具使用统计的丰富页脚
just ext-subagent-widget # 派生后台智能体并显示实时组件
just ext-agent-team # 多智能体编排仪表盘
just ext-damage-control # 带路径控制的安全审计
just ext-pi-pi # 用于构建 Pi 智能体的元智能体
just coms-net-server # 启动智能体间通信中枢
just coms # 连接到通信中枢
just all # 在独立终端中打开所有扩展
扩展架构
扩展导出一个带有生命周期钩子的 PiExtension 对象:
import type { PiExtension, PiApp } from "pi";
export default {
name: "my-extension",
version: "1.0.0",
// 扩展加载时调用
async init(app: PiApp) {
// 注册工具、组件、命令
},
// 智能体处理一轮对话前调用
async beforeTurn(app: PiApp, turn: Turn) {
// 拦截或修改本轮对话
},
// 智能体完成一轮对话后调用
async afterTurn(app: PiApp, turn: Turn) {
// 记录、分析或触发后续操作
},
// 关闭时调用
async destroy(app: PiApp) {
// 清理资源
}
} satisfies PiExtension;
主要能力与示例
极简页脚(Minimal Footer)
显示模型名称与上下文使用情况的紧凑 UI,通过在 init 中创建 Widget 并将其定位在 footer 实现。
自定义工具注册(Custom Tool Registration)
通过 app.registerTool 添加智能体可调用的新工具,示例为 analyze_code_quality,接收 file_path 参数并返回行数、复杂度与问题列表。
编辑器上方的实时组件(Live Widget Above Editor)
创建持久、实时更新的组件(position: "above-editor"),示例为工具调用次数的计数器,在 afterTurn 中统计 turn.toolCalls 并刷新 UI。
安全审计(Damage Control)
在 beforeTurn 中拦截并阻止危险命令。读取 .pi/damage-control-rules.yaml 规则文件,检查 blocked_patterns 与 allowed_paths,命中时抛出错误阻止执行。示例规则文件:
blocked_patterns:
- "rm -rf /"
- "dd if="
- ":(){ :|:& };:"
- "curl | bash"
- "wget | sh"
allowed_paths:
- "/tmp"
- "./src"
- "./tests"
- "./extensions"
多智能体编排
子智能体派生(/sub 命令)
注册 /sub 命令,将任务交由后台 Pi 智能体处理,通过 child_process 的 spawn 启动 Pi 子进程,并在编辑器上方显示实时状态组件。用法示例:
/sub implement user authentication with bcrypt
智能体团队编排(Agent Team Orchestration)
采用调度器模式配合专家智能体。读取 .pi/agents/teams.yaml 配置,注册 dispatch_agent 工具,按 agent_name 委派任务给对应专家智能体(可指定各自模型)。示例配置:
agents:
backend:
description: Node.js/TypeScript backend specialist
system_prompt: |
You are an expert backend engineer specializing in Node.js, TypeScript,
Express, and PostgreSQL. Focus on API design, database schemas, and server architecture.
model: gpt-4o
frontend:
description: React/Next.js frontend specialist
system_prompt: |
You are an expert frontend engineer specializing in React, Next.js, and Tailwind.
Focus on component architecture, state management, and responsive design.
model: claude-opus-4
security:
description: Security auditing specialist
system_prompt: |
You are a security expert. Audit code for vulnerabilities, suggest fixes,
and ensure best practices for authentication, authorization, and data protection.
model: gpt-4o
Pi 与 Pi 之间的通信
本地通信(同一台机器)
基于 Unix socket 的点对点消息传递。扩展在 /tmp/pi-coms 下为每个会话创建 socket,并提供 coms_list、coms_send、coms_get 三个工具,分别用于列出可用智能体、发送消息、获取消息。
网络通信(跨机器)
基于 HTTP/SSE 的中枢,用于局域网或远程智能体协调。
启动中枢服务器:
# 本地开发(127.0.0.1)
just coms-net-server
# 局域网可访问(需要认证 token)
export PI_COMS_NET_AUTH_TOKEN=your-secret-token
just coms-net-server-lan
连接智能体:
# 终端 1
just coms1 # 使用 gpt-4o
# 终端 2(同一网络上的另一台机器)
just coms2 # 使用 claude-opus-4
该扩展(extensions/coms-net.ts)提供以下工具:
coms_net_list- 列出已连接的智能体coms_net_send- 向特定智能体发送消息coms_net_broadcast- 向所有智能体广播coms_net_get- 获取待处理消息
跨智能体集成
可加载 Claude Code、Gemini、Codex 目录中的命令与技能(示例扩展 extensions/cross-agent.ts,资料中该部分代码被截断,完整实现暂未提供)。
限制与缺失信息
资料未说明本扩展集合的授权许可、收费标准、支持的 Pi 版本、Windows 原生支持情况,以及各配方的完整行为;跨智能体集成的代码示例在资料中不完整。以上内容暂未提供。