Deep Dive

Pi Agent

OpenClaw 的核心引擎——從週末小專案到驅動萬人使用的 AI Agent 框架

v0.55.0 MIT 授權 Mario Zechner 開發 OpenClaw 核心依賴

什麼是 Pi Agent?

Pi(全稱 pi-coding-agent)是由奧地利開發者 Mario Zechner(badlogic)開發的開源 AI Agent Toolkit,以 MIT 授權發布。它不只是一個終端工具,而是一套完整的 AI Agent 基礎設施——從統一 LLM API 到 Session 管理、工具執行、Token 壓縮,一應俱全。

Pi 的官方網站幽默地命名為 shittycodingagent.ai,但實際上它已成為 OpenClaw 等大型專案的核心引擎,每天服務全球數萬名用戶。

🦞 關鍵事實:OpenClaw 在 package.json 中直接將 Pi 的四個套件列為核心依賴(版本 0.55.0),Pi 不是插件,而是 OpenClaw 的地基。

0.55.0
目前版本(2026/02/24 更新)
4
Pi 核心套件數量
MIT
授權方式(完全開源)
支援 LLM Provider 數

Pi Mono 套件生態系

Pi 以 Monorepo 形式管理,儲存庫位於 github.com/badlogic/pi-mono,包含七個獨立套件,各自解決 AI Agent 開發的不同面向。

套件名稱 功能說明 OpenClaw 用途
@mariozechner/pi-ai 統一多 Provider LLM API(OpenAI、Anthropic、Google 等),提供 completestreamSimple 等核心函式 ✅ 所有 LLM 呼叫的底層,Model Fallback 機制
@mariozechner/pi-coding-agent 互動式 Coding Agent CLI,含 Session 管理、工具集(read/write/edit/bash)、Token 估算、摘要壓縮 ✅ Session 狀態管理、Agent 工具執行核心
@mariozechner/pi-agent-core Agent 執行框架,處理 tool calling 迴圈與狀態機 ✅ Agentic Loop 的執行引擎
@mariozechner/pi-tui 終端 UI 函式庫,採用差分渲染技術 ✅ CLI 介面渲染
@mariozechner/pi-mom Slack Bot,將訊息委派給 Pi Coding Agent 處理 — 獨立使用
@mariozechner/pi-web-ui Web Components 形式的 AI 聊天介面元件庫 — 獨立使用
@mariozechner/pi-pods 管理 vLLM GPU Pod 部署的 CLI 工具 — 獨立使用

Pi 在 OpenClaw 架構中的地位

透過分析 OpenClaw 的 dist/pi-embedded-BDhvoWGL.js,可以清楚看到 Pi 在 OpenClaw 中扮演的角色——它不是插件,而是骨幹。

🧠

LLM 統一接口

pi-aicomplete()streamSimple() 是 OpenClaw 所有 LLM 呼叫的底層函式,無論用戶設定的是 Claude、GPT 還是 Gemini,都走同一條路徑。

OAuth 認證 API Key 管理 串流支援
💾

Session 持久化

SessionManager(來自 pi-coding-agent)負責維護對話歷史,讓用戶在重啟 OpenClaw 後仍能延續對話。同時管理 Session 版本控制與 transcript 檔案。

跨重啟持久化 Transcript 記錄 版本管理
🔧

工具執行引擎

codingToolscreateReadToolcreateWriteToolcreateEditTool 直接提供了 OpenClaw 的 Read/Write/Edit 工具實作基礎,讓 AI 能夠操作本機檔案系統。

read write edit bash
📦

Token 壓縮與摘要

當對話 Context 過長時,generateSummary()estimateTokens() 負責壓縮舊訊息為摘要,避免超出 LLM 的 Context Window 限制。

自動壓縮 Token 估算 智能摘要
🔍

Model Discovery

ModelRegistryAuthStorage 負責探索可用模型、管理認證資訊,讓 OpenClaw 能動態切換不同 LLM Provider 和帳戶。

動態模型列舉 多帳戶管理
🔄

Agent Session 建立

createAgentSession() 建立完整的 Agent 執行環境,包含工具綁定、系統提示注入、資源載入(DefaultResourceLoader)等,是每次 AI 回應的起點。

工具綁定 資源載入 環境初始化

分層架構圖

OpenClaw 採用清晰的分層設計,Pi 位於中間層,承上啟下:

// OpenClaw 完整分層架構
┌─────────────────────────────────────────────────────┐
│  📱 頻道層(Channel Layer)
│    Telegram · Discord · WhatsApp · Signal · iMessage
├─────────────────────────────────────────────────────┤
│  🦞 OpenClaw 應用層(Application Layer)
│    路由 · Skills · Heartbeat · Cron · Multi-Agent · 記憶
├─────────────────────────────────────────────────────┤
│  🥧 Pi 引擎層(Pi Engine Layer)← 本文主角
│    pi-ai · pi-coding-agent · pi-agent-core · pi-tui
│    SessionManager · codingTools · generateSummary
├─────────────────────────────────────────────────────┤
│  🤖 LLM 層(Model Layer)
│    Claude (Anthropic) · GPT (OpenAI) · Gemini (Google)
└─────────────────────────────────────────────────────┘

分工原則:Pi 負責「跟 LLM 說話」和「管理對話狀態」;OpenClaw 負責「接收人類訊息」和「決定怎麼回應」。兩者深度整合,不是鬆散的插件關係。

Pi 驅動的 Agentic Loop

每次你向 OpenClaw 發送訊息,背後都會觸發一個由 Pi 引擎驅動的 Agentic Loop。以下是完整流程:

1

訊息接收 → Session 載入

Gateway 接收到 Telegram 訊息後,SessionManager(pi-coding-agent)載入對應的對話歷史,確保 AI 記得之前說過什麼。

2

Context 準備

注入系統提示(SOUL.md、AGENTS.md、Skills)、記憶檔案、工作區快照。若 Context 過長,generateSummary() 自動壓縮舊訊息。

3

LLM 呼叫(pi-ai)

透過 streamSimple() 呼叫 LLM,支援串流輸出。若主 Provider 失敗,runWithModelFallback() 自動切換備援模型。

// pi-ai 核心呼叫
import { complete, streamSimple } from "@mariozechner/pi-ai";

const result = await streamSimple(model, {
  messages,   // 對話歷史
  tools,      // 可用工具清單
  system      // 系統提示
});
4

工具執行 → 回饋迴圈

LLM 若呼叫工具(exec、read、web_fetch 等),OpenClaw 執行工具後將結果附加到訊息串,再次呼叫 LLM。此迴圈持續到 LLM 不再呼叫工具為止。

// Agentic Loop 核心邏輯(簡化)
while (true) {
  const response = await streamSimple(model, { messages });

  if (!response.toolCalls?.length) break; // 沒有工具呼叫 → 結束

  for (const call of response.toolCalls) {
    const result = await executeTool(call); // 執行工具
    messages.push({ role: "tool", content: result }); // 回饋
  }
}
5

回應交付

最終回應透過 OpenClaw 的 Channel 層送回 Telegram/Discord 等平台,Session 狀態由 SessionManager 持久化到磁碟。

🛡️ Loop 防護:OpenClaw 內建 Tool Loop Detection,追蹤最近 30 次工具呼叫的模式。若偵測到重複呼叫(警告門檻:10次,熔斷門檻:30次),會強制中斷迴圈,防止無限循環。

獨立使用 Pi Agent

Pi 不只是 OpenClaw 的內部元件,你也可以獨立安裝並使用它作為 Coding Agent CLI:

# 安裝
npm install -g @mariozechner/pi-coding-agent

# 基本使用
pi '幫我分析這個專案的結構'

# 非互動模式
pi -p 'Summarize src/'

# 指定 Provider 和 Model
pi --provider anthropic --model claude-sonnet-4-5 -p 'Your task'
pi --provider openai    --model gpt-4o-mini       -p 'Your task'
pi --provider google    --model gemini-2.0-flash   -p 'Your task'

Pi 的優勢

  • 支援任意 LLM Provider
  • 完全開源(MIT)
  • 輕量,啟動快速
  • Session 管理內建
  • Prompt Caching 支援