Pi 仓库结构
npm Monorepo
Pi 使用 npm workspaces 管理多个包。核心包关系:
text
packages/
├── ai/ # LLM provider 抽象层
│ └── src/
│ ├── ai.ts # AI interface(stream、generate 等)
│ ├── providers/ # OpenAI / Anthropic / DeepSeek 等
│ ├── models.ts # Model 类型和 registry
│ └── utils/ # token counting、streaming 等
│
├── agent/ # Agent 核心(与 coding 无关的通用层)
│ └── src/
│ ├── agent.ts # Agent 类(核心 loop)
│ ├── agent-loop.ts # 对话循环实现
│ ├── context.ts # Message context 管理
│ ├── tools.ts # Tool interface 定义
│ └── ...
│
├── coding-agent/ # CLI 和 coding-specific 逻辑
│ └── src/
│ ├── cli.ts # CLI 入口(Yargs)
│ ├── main.ts # 主流程编排
│ ├── core/
│ │ ├── agent-session.ts # Session 管理(JSONL)
│ │ ├── tools/ # 工具实现(bash、edit、grep 等)
│ │ ├── extensions/ # Extension API
│ │ ├── modes/ # CLI 输出模式
│ │ └── settings.ts # 配置管理
│ └── ui/
│
├── tui/ # 终端 UI 渲染
│ └── src/
│ ├── app.tsx # React-like 入口
│ ├── components/ # 组件(ChatList、DiffView 等)
│ ├── renderer.ts # 自研 differential renderer
│ └── hooks/
│
├── orchestrator/ # 多 agent 编排
│ └── src/
│ ├── orchestrator.ts # 编排器主类
│ ├── agents.ts # Agent pool 管理
│ └── tasks.ts # 任务分发
│
└── shared/ # 共享工具
└── src/
├── logger.ts
├── config.ts
└── types.ts分层设计
Layer 1: packages/ai ← LLM 抽象(最底层)
Layer 2: packages/agent ← Agent loop(依赖 ai)
Layer 3: packages/coding-agent ← CLI + 工具 + session(依赖 agent)
Layer 4: packages/tui ← 终端 UI(依赖 coding-agent)
Layer 5: packages/orchestrator ← 多 agent 编排(依赖 agent)Pi 的区分度很清晰:每层只能向下依赖,coding-agent 不直接操作 LLM 细节。
包依赖度
| 包 | 依赖 |
|---|---|
ai | 自包含 |
agent | ai |
coding-agent | agent、ai |
tui | coding-agent、agent |
orchestrator | agent、ai |