[English](./README.en.md) | 中文

# @easbot/agent

EASBot Agent - 多Agent协作生态系统的核心运行时

## 特性

- **多运行模式**：TUI 交互模式、ACP 服务模式、命令行模式
- **分层上下文系统**：动态构建包含系统提示、工具、记忆的上下文
- **工具系统**：内置文件操作、搜索、编辑、Shell 执行等工具
- **记忆系统**：集成 Memory、Note、Codebase 知识库
- **会话管理**：自动上下文压缩、多会话支持
- **命令系统**：可扩展的内置命令系统
- **Hook 机制**：事件驱动的插件系统
- **Skill 系统**：技能发现、加载和生命周期管理
- **MCP 支持**：Model Context Protocol 集成

## 安装

```bash
# pnpm add @easbot/agent
```

## 快速开始

### TUI 交互模式（默认）

```bash
easbot
```

### ACP 服务模式

```bash
easbot acp
```

### HTTP 服务模式

```bash
easbot serve
```

## 使用示例

### 初始化新项目

```bash
easbot init
```

### 文件操作

```typescript
import { File, Ripgrep } from '@easbot/agent';

// 读取文件
const content = await File.read('/path/to/file');

// 搜索文件内容
const results = await Ripgrep.search({
  pattern: 'TODO',
  cwd: '/path/to/project'
});
```

### 上下文构建

```typescript
import { ContextEngine } from '@easbot/agent';

const contextEngine = new ContextEngine(config);
const context = await contextEngine.build({
  mode: 'coder',
  userMessage: '帮我重构这个函数'
});
```

### 命令注册

```typescript
import { define } from '@easbot/agent';

define('hello', {
  description: '打印问候语',
  execute: async ({ session }) => {
    await session.send('你好！');
  }
});
```

### Hook 系统

```typescript
import { HookRegistry } from '@easbot/agent';

const hooks = new HookRegistry();
hooks.register('before:tool-call', async (tool) => {
  console.log('Tool called:', tool.name);
});
```

## CLI 命令

| 命令 | 说明 |
|------|------|
| `easbot` | 启动 TUI 交互模式 |
| `easbot tui` | 启动 TUI 交互模式 |
| `easbot acp` | 启动 ACP 服务模式 |
| `easbot serve` | 启动 HTTP 服务模式 |
| `easbot init` | 初始化新项目 |
| `easbot update` | 检查并更新 |
| `easbot upgrade` | 升级到最新版本 |

### 全局选项

| 选项 | 说明 |
|------|------|
| `--log-level` | 设置日志级别 (DEBUG/INFO/WARN/ERROR) |
| `--print-logs` | 打印日志到终端 |
| `--debug` | 开启调试模式 |

## 模块结构

```
src/
├── adapter/          # Agent 通信适配器
├── api/              # 业务逻辑 API 层
├── auth/             # 认证授权
├── bus/              # 事件总线
├── cli/              # 命令行接口
├── command/          # 命令定义系统
├── compaction/       # 会话上下文压缩
├── config/           # 配置加载
├── context/          # 上下文构建引擎
├── creation/         # 动态工具构建
├── env/              # 环境变量管理
├── file/             # 文件操作
├── format/           # 格式化
├── global/           # 全局配置
├── hook/             # Hook 插件系统
├── i18n/             # 国际化
├── ide/              # IDE 集成
├── installation/     # 安装管理
├── knowledge/        # 知识库集成
├── provider/         # AI 模型提供商
├── session/          # 会话管理
├── skill/            # 技能系统
├── tool/             # 工具系统
├── server/           # HTTP/WebSocket 服务器
├── pty/              # PTY 支持
├── pkg/              # 包管理
└── shell/            # Shell 执行
```

## 配置

### 环境变量

```bash
# 模型提供商配置
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...

# 日志配置
LOG_LEVEL=INFO

# 代理配置
HTTP_PROXY=http://proxy:8080
HTTPS_PROXY=http://proxy:8080
```

### 配置文件

项目根目录下的 `.easbot/` 目录包含：

- `easbot.json` - 主配置文件
- `AGENTS.md` - Agent 定义
- `BOOT.md` - 启动配置
- `SOUL.md` - 价值观配置
- `IDENTITY.md` - 身份配置
- `USER.md` - 用户配置
- `CODER.md` - Coder 模式配置

## 开发

```bash
# 安装依赖
pnpm install

# 开发模式
pnpm dev

# 构建
pnpm build

# 类型检查
pnpm type-check

# Lint
pnpm lint
pnpm lint:fix
```

## 发布

```bash
# Windows
powershell -ExecutionPolicy Bypass -File scripts/publish.ps1

# Unix/macOS
bash scripts/publish.sh
```

## 许可证

MIT
