Pi Mono:统一LLM API的AI Agent全栈工具箱
posts posts 2026-04-06T11:30:00+08:00Pi Mono是一款开源AI Agent工具箱,提供编码Agent CLI、统一LLM API、TUI/Web UI界面、Slack机器人以及vLLM Pod支持,助力开发者快速构建AI应用。技术笔记AI Agent, LLM, CLI工具, Slack Bot, vLLM, 开源工具, 全栈开发目录
Pi Mono:统一LLM API的AI Agent全栈工具箱
§1 学习目标
通过本文,您将掌握:
- Pi Mono的核心功能与架构设计
- 如何使用Pi Mono的编码Agent CLI
- 统一LLM API的配置与使用
- TUI与Web UI的部署方法
- Slack机器人与vLLM Pod的集成
- 最佳实践与开发扩展指南
§2 原理分析
2.1 什么是Pi Mono?
Pi Mono(GitHub: badlogic/pi-mono)是一款开源AI Agent工具箱,由知名开发者badlogic创建。该工具箱将多个AI开发组件整合到一个统一的框架中:
| 组件 | 功能描述 |
|---|---|
| 编码Agent CLI | 命令行编码助手,支持多种LLM后端 |
| 统一LLM API | 一套API对接不同LLM服务提供商 |
| TUI界面 | 终端用户界面,键盘操作 |
| Web UI | 浏览器访问的图形界面 |
| Slack机器人 | 集成到Slack的AI助手 |
| vLLM Pod | Kubernetes上部署的高性能推理Pod |
2.2 核心设计理念
Pi Mono的设计理念是统一与模块化:
- 统一API层:通过单一的API接口,开发者可以切换不同的LLM后端(OpenAI、Anthropic、本地模型等)
- 模块化架构:每个组件(CLI、UI、Bot、Pod)都可以独立使用
- 开箱即用:提供预设配置,快速启动
2.3 技术栈
| 层级 | 技术选型 |
|---|---|
| 核心语言 | TypeScript |
| CLI框架 | Node.js原生 |
| TUI | 终端UI库 |
| Web UI | React/Web技术 |
| 部署 | Docker/Kubernetes |
§3 架构分析
3.1 系统架构图
┌─────────────────────────────────────────────────────────────┐
│ Pi Mono 架构 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐│
│ │ CLI工具 │ │ TUI界面 │ │ Web UI ││
│ │ (Coding │ │ (终端用户 │ │ (浏览器访问) ││
│ │ Agent) │ │ 界面) │ │ ││
│ └─────┬─────┘ └──────┬──────┘ └──────────┬──────────┘│
│ │ │ │ │
│ └───────────────┼─────────────────────┘ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ 统一LLM API │ │
│ │ (核心抽象层) │ │
│ └────────┬────────┘ │
│ │ │
│ ┌──────────────┼──────────────┐ │
│ ▼ ▼ ▼ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ OpenAI │ │Anthropic │ │ 本地模型 │ │
│ │ GPT-4 │ │ Claude │ │ vLLM/ │ │
│ └──────────┘ └──────────┘ │ Ollama │ │
│ └──────────┘ │
│ │
│ ┌─────────────┐ ┌─────────────────────────────────────┐│
│ │ Slack Bot │ │ vLLM Pod ││
│ │ │ │ (Kubernetes高性能推理) ││
│ └─────────────┘ └─────────────────────────────────────┘│
└─────────────────────────────────────────────────────────────┘3.2 组件详解
3.2.1 编码Agent CLI
命令行工具,提供AI辅助编码能力:
# 安装
npm install -g @badlogic/pi-mono
# 启动编码Agent
pi-mono agent --model claude --code
# 代码审查
pi-mono review --file src/main.ts
# 代码生成
pi-mono generate --prompt "创建一个React组件"3.2.2 统一LLM API
import { createLLMClient, OpenAIProvider, AnthropicProvider } from '@badlogic/pi-mono';
// 配置多个Provider
const client = createLLMClient({
providers: [
new OpenAIProvider({ apiKey: process.env.OPENAI_API_KEY }),
new AnthropicProvider({ apiKey: process.env.ANTHROPIC_API_KEY })
],
defaultModel: 'claude-3-5-sonnet'
});
// 统一调用接口
const response = await client.complete({
prompt: '解释什么是Docker',
model: 'gpt-4' // 可切换不同模型
});3.2.3 TUI界面
终端内建的图形化界面,无需浏览器:
# 启动TUI
pi-mono tui
# TUI功能
- 模型切换
- 对话历史
- 提示词模板
- 输出导出3.2.4 Web UI
浏览器访问的完整GUI:
# 启动Web服务
pi-mono web --port 3000
# 访问 http://localhost:30003.2.5 Slack机器人
集成到Slack的AI助手:
# pi-mono.yaml
slack:
enabled: true
botToken: xoxb-xxx
signingSecret: xxx
channels:
- "#ai-assistant"3.2.6 vLLM Pod
Kubernetes上的高性能推理服务:
# vllm-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: pi-mono-vllm
spec:
containers:
- name: vllm
image: badlogic/pi-mono:vllm
resources:
limits:
nvidia.com/gpu: 1§4 功能详解
4.1 主要功能特性
| 功能 | 描述 | 状态 |
|---|---|---|
| 编码Agent CLI | AI辅助编程 | ✅ 稳定 |
| 多Provider支持 | OpenAI/Anthropic/本地 | ✅ 稳定 |
| TUI界面 | 终端UI | ✅ 稳定 |
| Web UI | 浏览器GUI | ✅ 稳定 |
| Slack集成 | Slack Bot | ✅ 稳定 |
| vLLM Pod | K8s推理 | ✅ 稳定 |
| 流式输出 | Streaming | ✅ 稳定 |
| 函数调用 | Function Calling | 🔄 开发中 |
4.2 支持的LLM Provider
| Provider | 模型 | 状态 |
|---|---|---|
| OpenAI | GPT-4, GPT-3.5-turbo | ✅ |
| Anthropic | Claude 3.5, Claude 3 | ✅ |
| Gemini Pro | ✅ | |
| 本地模型 | via Ollama/vLLM | ✅ |
| Azure OpenAI | GPT-4 Azure | 🔄 |
4.3 使用场景
- 个人开发助手:本地运行的AI编码助手
- 团队知识库:Slack集成的团队AI助手
- 生产环境:vLLM Pod提供的高性能推理服务
- 原型开发:快速验证AI应用概念
§5 使用说明
5.1 快速安装
# 通过npm安装
npm install -g @badlogic/pi-mono
# 验证安装
pi-mono --version
# 查看帮助
pi-mono --help5.2 配置API密钥
# 设置OpenAI API
export OPENAI_API_KEY=sk-xxx
# 设置Anthropic API
export ANTHROPIC_API_KEY=sk-ant-xxx
# 或使用配置文件
cat > ~/.pi-mono/config.yaml << EOF
providers:
openai:
apiKey: \${OPENAI_API_KEY}
anthropic:
apiKey: \${ANTHROPIC_API_KEY}
defaultModel: claude-3-5-sonnet
EOF5.3 启动Web UI
# 启动Web服务
pi-mono web --port 8080
# 后台运行
pi-mono web --port 8080 --daemon
# 查看日志
pi-mono logs --follow5.4 Slack Bot配置
- 创建Slack App:https://api.slack.com/apps
- 启用Bot功能
- 添加Bot Token到配置
- 启动Bot:
pi-mono slack --config ./slack-config.yaml5.5 部署vLLM Pod
# 构建镜像
pi-mono build --target vllm
# 推送到registry
docker push your-registry/pi-mono:vllm
# 部署到K8s
kubectl apply -f vllm-deployment.yaml
# 查看Pod状态
kubectl get pods -l app=pi-mono-vllm§6 开发扩展
6.1 自定义Provider
import { BaseLLMProvider, LLMResponse } from '@badlogic/pi-mono';
class CustomProvider extends BaseLLMProvider {
async complete(prompt: string): Promise<LLMResponse> {
// 调用自定义LLM服务
const response = await fetch('https://your-llm-api.com/complete', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ prompt })
});
return response.json();
}
}
// 注册Provider
client.registerProvider(new CustomProvider());6.2 自定义TUI组件
import { TUIComponent, registerComponent } from '@badlogic/pi-mono/tui';
class MyCustomComponent implements TUIComponent {
render(): string {
return `┌─────────────────────┐
│ Custom Component │
└─────────────────────┘`;
}
handleInput(key: string): void {
// 处理用户输入
}
}
registerComponent('custom', MyCustomComponent);6.3 Web UI插件开发
// plugins/my-plugin.ts
export default {
name: 'my-plugin',
routes: [
{
path: '/custom-page',
component: () => import('./CustomPage.vue')
}
],
hooks: {
beforeResponse: (req, res) => {
// 修改响应
}
}
};§7 最佳实践
7.1 安全建议
- API密钥管理:使用环境变量或密钥管理服务
- 网络隔离:生产环境建议内网部署
- 访问控制:配置适当的认证和授权
- 日志审计:开启访问日志,定期审查
7.2 性能优化
| 场景 | 建议 |
|---|---|
| 高并发 | 使用vLLM Pod + Kubernetes HPA |
| 低延迟 | 启用流式输出 + 本地缓存 |
| 大上下文 | 配置更大的上下文窗口模型 |
7.3 监控指标
建议监控以下指标:
- 请求延迟 (p50, p95, p99)
- Token消耗量
- Provider可用性
- 错误率
§8 FAQ
Q: Pi Mono支持哪些操作系统?
A: 支持macOS、Linux和Windows(通过WSL)。
Q: 可以使用本地模型吗?
A: 可以,通过Ollama或vLLM集成支持本地LLM。
Q: Slack Bot需要付费吗?
A: Slack Bot本身免费,但需要自行创建Slack App并获取Bot Token。
Q: vLLM Pod需要GPU吗?
A: 推荐使用GPU以获得最佳推理性能,但也支持CPU模式(性能较低)。
Q: 如何贡献代码?
A: 访问 GitHub仓库 查看贡献指南。
相关信息
- GitHub仓库:badlogic/pi-mono
- Stars:31,977
- Forks:3,479
- 今日新增:355 stars
- 官方文档:README.md
🦞 更新于2026年4月6日 | ← 回到首页