phi-agent 0.1.4

phi-agent — General-purpose AI Agent framework (builder factory, renderer, config, session management)
Documentation
# 架构设计

phi-agent 与依赖 crate 之间的关系,以及关键设计决策。

## 依赖链

```
agent-base (运行时内核 + Tool trait)
agent-works (MCP, Skills, Focus)
phi-agent (lib) ← 框架层,不含工具
phi (bin) ← CLI,在这里注册工具
```

每个 crate 都是 [hibuka-labs](https://github.com/hibuka-labs) 下的独立仓库。

## 各 Crate 职责

### agent-base
运行时内核:
- `AgentRuntime` — 核心事件循环(LLM 对话 → 工具调用 → 循环)
- `Tool` trait — 所有工具实现的接口
- `LlmClient` trait — LLM 提供商的抽象层
- `RuntimeEvent` — 每轮对话中发出的所有事件
- `AgentBuilder` — 组装 Agent 的构建器模式

### agent-works
基于 agent-base:
- **MCP** — Model Context Protocol 支持
- **Skills** — 插件/技能系统
- **Focus** — 带类型的结构化 LLM 调用

### phi-agent(本 crate)
框架层 — 仅提供基础设施,不含工具:
- `base_agent_builder()` — 预配置的构建器工厂
- `PhiAgent``AgentRuntime` 的高级封装
- `EventRenderer` — 终端 / JSON / 静默三种输出格式
- 配置解析、会话管理、系统提示词

### phi-tools
工具实现。`master` 分支:`LocalShellTool`。其他分支有更多工具。

### phi(二进制)
CLI 消费者。串联所有组件:创建 `OpenAiClient`、注册工具、运行 REPL 或单次执行。

## 关键设计决策

### 不内置工具
phi-agent 不了解任何具体工具。工具通过 `AgentBuilder::register_tool()` 外部注册。框架保持精简,消费者完全可控。

### 不内置记忆
没有向量数据库、没有嵌入存储、没有隐藏状态。每一个决策都可以追溯到 prompt 中的内容。

### OpenAI 兼容 CLI
CLI 使用 `OpenAiClient`。如需 Anthropic,替换为 `AnthropicClient` 即可 — 框架本身同时支持两者。

### 会话隔离
每个会话有独立的目录和文件锁,防止多进程并发访问。详见 [高级用法](advanced.md)。