# Ariste

Ariste 是一个用 Rust 编写的 AI Agent 框架，支持工具调用和多代理协作。它提供了一个强大的命令行界面，让你可以与 AI 模型进行交互式对话，并利用各种工具来完成复杂的软件工程任务。

## 特性

- **交互式 CLI** - 提供友好的命令行界面，支持历史记录和自动补全
- **工具调用** - 内置多种工具用于文件操作、代码搜索、命令执行等
- **多代理支持** - 支持启动专门的子代理处理特定任务
- **Ollama 集成** - 默认使用 Ollama 作为 LLM 提供商
- **配置灵活** - 支持自定义模型、API endpoint 等配置

## 支持的工具

| 工具 | 描述 |
|------|------|
| `Bash` | 执行 shell 命令 |
| `Read` | 读取文件内容 |
| `Write` | 写入文件 |
| `Edit` | 编辑文件（支持字符串替换） |
| `Glob` | 文件模式匹配 |
| `Grep` | 在文件中搜索内容 |
| `WebFetch` | 获取网页内容 |
| `Task` | 启动子代理处理复杂任务 |
| `TodoWrite` | 任务管理和跟踪 |

## 安装

### 前置要求

- Rust (edition 2024 或更高版本)
- Ollama (用于运行本地 LLM)

### 从源码构建

```bash
git clone <repository-url>
cd ariste
cargo build --release
```

构建完成后，二进制文件位于 `target/release/ariste`。

## 配置

Ariste 会在当前工作目录下创建 `.ariste` 文件夹用于存储配置和历史记录。

默认配置（`.ariste/config.json`）：

```json
{
  "provider": "ollama",
  "base": "http://127.0.0.1:11434",
  "model": "qwen3"
}
```

你可以修改此文件来使用不同的模型或 Ollama 实例。

## 使用方法

### 启动 Ariste

```bash
cargo run --bin ariste
# 或使用已构建的二进制文件
./target/release/ariste
```

### 命令

- `/help` - 显示帮助信息
- `/clear` - 清空对话历史
- `/quit` 或 `/exit` 或 `/q` - 退出程序

### 示例对话

```
➜  ariste cargo run --bin ariste
   Ariste v0.1.0
   ===============

   Working directory: /path/to/your/project

   Type your message and press Enter to send.
   Use /quit to exit.

You: 请列出当前目录的所有 Rust 源文件

Ariste: [使用 Glob 工具查找文件]

You: 在 main.rs 中搜索 "println"

Ariste: [使用 Grep 工具搜索内容]

You: /q
```

## 项目结构

```
src/
├── agent/          # Agent 和消息处理
├── cli/            # 命令行界面和自动补全
├── config/         # 配置管理
├── llm/            # LLM 集成 (Ollama)
├── tools/          # 工具实现
├── ui/             # 用户界面组件
├── utils/          # 工具函数
├── main.rs         # 主程序入口
└── lib.rs          # 库入口
```

## 开发

### 运行测试

```bash
cargo test
```

### 代码格式化

```bash
cargo fmt
```

### 检查代码

```bash
cargo clippy
```

## 依赖

主要依赖项：

- `tokio` - 异步运行时
- `reqwest` - HTTP 客户端
- `tungstenite` - WebSocket 支持
- `rustyline` - 命令行界面
- `clap` - 命令行参数解析
- `serde` - 序列化/反序列化
- `colored` - 终端颜色输出

完整依赖列表请参见 [Cargo.toml](Cargo.toml)。

## 许可证

本项目采用 MIT 许可证。详见 LICENSE 文件。

## 贡献

欢迎提交 Issue 和 Pull Request！

## 致谢

本项目灵感来源于 Claude Code 和其他 AI Agent 框架。
