120 lines
3.3 KiB
Markdown
120 lines
3.3 KiB
Markdown
|
|
# CLAUDE.md
|
|||
|
|
|
|||
|
|
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|||
|
|
|
|||
|
|
## 项目概述
|
|||
|
|
|
|||
|
|
这是一个基于 [Mastra 框架](https://mastra.ai) 构建的多功能 AI Agent 项目。项目采用模块化架构,包含天气查询、时间查询、计算器、文件列表和笑话生成等基础功能。
|
|||
|
|
|
|||
|
|
## 常用命令
|
|||
|
|
|
|||
|
|
### 开发环境
|
|||
|
|
```bash
|
|||
|
|
pnpm install # 安装依赖
|
|||
|
|
pnpm dev # 启动开发服务器(http://localhost:4111)
|
|||
|
|
pnpm build # 构建项目用于部署
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 脚本工具
|
|||
|
|
```bash
|
|||
|
|
pnpm generate # 运行生成脚本
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 项目架构
|
|||
|
|
|
|||
|
|
### 核心组件
|
|||
|
|
|
|||
|
|
#### 1. Mastra 配置 (`src/mastra/index.ts`)
|
|||
|
|
- 初始化 Mastra 框架实例
|
|||
|
|
- 注册所有 Agent
|
|||
|
|
- 全局配置入口
|
|||
|
|
|
|||
|
|
#### 2. Agent 系统 (`src/mastra/agents/`)
|
|||
|
|
- `multi-function-agent.ts`: 主代理,集成所有工具功能
|
|||
|
|
- Agent 配置包含:名称、系统指令、模型配置、可用工具
|
|||
|
|
|
|||
|
|
#### 3. Tool 系统 (`src/mastra/tools/`)
|
|||
|
|
- 每个工具使用 `createTool` 工厂函数
|
|||
|
|
- 遵循统一结构:id、描述、输入/输出 Schema、执行逻辑
|
|||
|
|
- 工具通过 `tools/index.ts` 统一导出
|
|||
|
|
|
|||
|
|
### 工具清单
|
|||
|
|
- `weatherTool`: 天气查询(使用 Open-Meteo API)
|
|||
|
|
- `timeTool`: 时间查询
|
|||
|
|
- `calculatorTool`: 基本算术运算
|
|||
|
|
- `filelistTool`: 目录文件列表
|
|||
|
|
- `jokeTool`: 随机笑话生成
|
|||
|
|
|
|||
|
|
### 配置系统
|
|||
|
|
- **环境变量**: `.env` 文件存储 API 密钥和配置
|
|||
|
|
- **TypeScript**: `tsconfig.json` 配置为 ES2022 模块系统
|
|||
|
|
- **依赖管理**: 使用 pnpm 和 `package.json`
|
|||
|
|
|
|||
|
|
## 开发流程
|
|||
|
|
|
|||
|
|
### 1. 环境设置
|
|||
|
|
```bash
|
|||
|
|
cp .env.example .env
|
|||
|
|
# 编辑 .env 文件,配置必要的 API 密钥
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 运行开发服务器
|
|||
|
|
启动后可通过以下方式访问:
|
|||
|
|
- **Studio UI**: http://localhost:4111(交互式测试)
|
|||
|
|
- **REST API**: http://localhost:4111/api/agents/multiFunctionAgent/generate
|
|||
|
|
- **Swagger UI**: http://localhost:4111/swagger-ui(API 文档)
|
|||
|
|
|
|||
|
|
### 3. 扩展项目
|
|||
|
|
|
|||
|
|
#### 添加新工具
|
|||
|
|
1. 在 `src/mastra/tools/` 下创建新工具文件
|
|||
|
|
2. 使用 Zod 定义输入/输出 Schema
|
|||
|
|
3. 实现 `execute` 函数逻辑
|
|||
|
|
4. 在 `tools/index.ts` 中导出
|
|||
|
|
5. 在 Agent 配置中添加新工具
|
|||
|
|
|
|||
|
|
#### 添加记忆功能
|
|||
|
|
```bash
|
|||
|
|
pnpm add @mastra/memory @mastra/libsql
|
|||
|
|
```
|
|||
|
|
然后在 Agent 配置中添加 Memory 配置。
|
|||
|
|
|
|||
|
|
#### 添加语音功能
|
|||
|
|
```bash
|
|||
|
|
pnpm add @mastra/voice-openai
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 关键设计模式
|
|||
|
|
|
|||
|
|
### 1. 模块化工具设计
|
|||
|
|
- 每个工具独立实现,通过统一接口接入
|
|||
|
|
- 工具间无依赖,便于测试和替换
|
|||
|
|
|
|||
|
|
### 2. 配置驱动
|
|||
|
|
- Agent 能力通过配置组合
|
|||
|
|
- 扩展无需修改核心代码
|
|||
|
|
|
|||
|
|
### 3. 类型安全
|
|||
|
|
- 使用 Zod 进行运行时验证
|
|||
|
|
- TypeScript 提供编译时类型检查
|
|||
|
|
|
|||
|
|
## 注意事项
|
|||
|
|
|
|||
|
|
1. **模型配置**: Agent 当前使用 DeepSeek 模型,在 `multi-function-agent.ts` 中配置
|
|||
|
|
2. **API 调用**: 天气工具依赖外部 API,需要网络连接
|
|||
|
|
3. **构建要求**: 项目使用 ES2022 模块系统,需确保兼容性
|
|||
|
|
4. **环境变量**: 开发和生产环境都依赖 `.env` 配置
|
|||
|
|
|
|||
|
|
## 调试和测试
|
|||
|
|
|
|||
|
|
### 通过 Studio UI
|
|||
|
|
访问 http://localhost:4111 进行交互式测试,可以:
|
|||
|
|
- 查看工具调用过程
|
|||
|
|
- 调试 Agent 推理链
|
|||
|
|
- 测试不同输入场景
|
|||
|
|
|
|||
|
|
### 通过 REST API
|
|||
|
|
使用 curl 或 HTTP 客户端测试特定功能。
|
|||
|
|
|
|||
|
|
### 查看构建输出
|
|||
|
|
构建后在 `.mastra/output/` 目录中可查看编译结果。
|