# 智能体创建与部署指南

> 从零开始在 PaaS 平台上创建、部署、运行你的 AI 智能体

---

## 一、前置条件

```bash
# PaaS 服务已在运行 (端口 8000)
curl http://localhost:8000/health
# {"status":"ok","version":"0.1.0"}

# 已有 API Key（如果没有，先创建租户）
python -m agentpaas create-tenant --name "我的空间"
# 输出 API Key，自动保存到 ~/.agentpaas/config.json
```

---

## 二、创建智能体 — 3 种方式

### 方式 1：快速创建（一行命令）

不写 YAML，直接指定 prompt：

```bash
python -m agentpaas agent create \
  --name "代码助手" \
  --prompt "你是一个 Python 代码助手，帮助用户编写、调试和优化代码。用中文回复。" \
  --description "Python 编程辅助" \
  --tags "coding,python"
```

输出：
```
Agent created: ag_xxxx
Version: 1
Endpoint: /api/v1/agents/ag_xxxx
```

### 方式 2：YAML 配置创建（推荐）

创建配置文件 `my-agent.yml`：

```yaml
agentId: my-assistant
name: 我的助手
description: 一个能操控电脑的个人 AI 助手

type: react

model:
  provider: anthropic
  name: claude-sonnet-4-20250514
  temperature: 0.3
  maxTokens: 4096

systemPrompt: |
  你是一个智能助手，能帮用户完成各种任务。
  通过输出 JSON 代码块调用工具：
  ```json
  {"action": "工具名", "input": {参数}}
  ```
  
  可用工具: ReadFile, EditFile, WriteFile, Bash, WebSearch, 等42个工具。
  任务完成时调用: {"action": "terminate", "input": {"answer": "完成摘要"}}
  用中文回复，简洁自然。

react:
  maxSteps: 15
  toolTimeout: 30

memory:
  enabled: true
  strategy: local
  size: 30

mcp:
  localTools:
    - ReadFile
    - EditFile
    - WriteFile
    - ListFiles
    - SearchContent
    - Bash
    - GitStatus
    - GitDiff
    - GitLog
    - GitCommit
    - CodeSearch
    - ProjectMap
    - RunTests
    - WebSearch
    - WebFetch
    - TaskCreate
    - TaskList
    - NotebookEdit
    - MemoryStore
    - MemoryRecall
    - Notify
    - terminate
  policy:
    mode: auto

guard:
  dangerousCommandBlock: true
  highRiskConfirmation: true
  maxOutputLength: 5000
```

部署：

```bash
python -m agentpaas agent create --name "我的助手" --config my-agent.yml
```

### 方式 3：从模板创建

已有的模板：

| 模板 | 说明 | 路径 |
|------|------|------|
| agent67 | 全能助手 + 编程 (42 工具) | `agentexample/agent67/agent-config.yml` |
| research67 | 科研助手 (论文/实验) | `agentexample/research67/orchestrator.yml` |
| agentbuilder67 | Agent 构建器 | `agentexample/agentbuilder67/orchestrator.yml` |

复制模板后修改：

```bash
cp agentexample/agent67/agent-config.yml my-agent.yml
# 编辑 my-agent.yml 修改 name、systemPrompt 等
python -m agentpaas agent create --name "我的助手" --config my-agent.yml
```

---

## 三、运行智能体

### 通过 CLI 运行

```bash
# 单次执行
python -m agentpaas run ag_xxxx "帮我分析一下当前目录的项目结构"

# 从文件读取输入
python -m agentpaas run ag_xxxx --input-file task.txt

# 覆盖参数
python -m agentpaas run ag_xxxx "写一首诗" --temperature 0.8 --max-steps 5
```

### 通过 API 运行

```bash
curl -X POST http://localhost:8000/api/v1/agents/ag_xxxx/run \
  -H "Authorization: Bearer ap_your_key" \
  -H "Content-Type: application/json" \
  -d '{"input": "你好，介绍一下你自己"}'
```

### 交互式运行（agent67 专用）

```bash
python -m agentexample.agent67.run
```

---

## 四、管理智能体

### 查看列表

```bash
python -m agentpaas agent list
```

### 查看详情

```bash
python -m agentpaas agent get ag_xxxx
```

### 更新配置

```bash
# 修改 YAML 后重新部署（自动版本递增）
python -m agentpaas agent update ag_xxxx --config my-agent-v2.yml --changelog "优化 prompt"
```

### 回滚版本

```bash
python -m agentpaas agent rollback ag_xxxx --version 1
```

### 查看版本历史

```bash
python -m agentpaas agent versions ag_xxxx
```

### 删除

```bash
python -m agentpaas agent delete ag_xxxx
```

---

## 五、监控

```bash
# 平台总览
python -m agentpaas status

# 所有 Agent 健康度
python -m agentpaas status agents

# 单个 Agent 健康度
python -m agentpaas health ag_xxxx

# 运行历史
python -m agentpaas runs ag_xxxx --limit 10

# 运行详情
python -m agentpaas trace run_xxxx

# 用量统计
python -m agentpaas usage --group-by agent
```

---

## 六、42 个可用工具速查

在 YAML 的 `mcp.localTools` 中声明需要的工具：

### 文件操作
| 工具 | 功能 |
|------|------|
| `ReadFile` | 读取文件（文本/PDF/CSV/Notebook/图片） |
| `EditFile` | 精确字符串替换 |
| `WriteFile` | 创建/覆盖文件 |
| `ListFiles` | Glob 文件搜索 |
| `SearchContent` | 正则内容搜索 |

### 代码
| 工具 | 功能 |
|------|------|
| `CodeSearch` | 语义代码搜索（6 种语言） |
| `ProjectMap` | 项目结构概览 |
| `RunTests` | 自动检测框架运行测试 |

### Shell & Git
| 工具 | 功能 |
|------|------|
| `Bash` | 终端命令（持久 CWD） |
| `GitStatus` / `GitDiff` / `GitLog` / `GitCommit` / `GitBranch` | Git 全流程 |

### Web
| 工具 | 功能 |
|------|------|
| `WebSearch` | 网络搜索 |
| `WebFetch` | 获取网页→Markdown |

### Notebook & 文档
| 工具 | 功能 |
|------|------|
| `NotebookEdit` | Jupyter Notebook cell 编辑 |
| `DocGen` | Markdown→HTML/PDF/Word |
| `ChunkSplit` | 长文档分块 |
| `OCR` | 图片/扫描件文字提取 |

### 知识库
| 工具 | 功能 |
|------|------|
| `KBCreate` / `KBAdd` / `KBSearch` / `KBList` | 知识库管理全流程 |

### 任务管理
| 工具 | 功能 |
|------|------|
| `TaskCreate` / `TaskUpdate` / `TaskList` | 任务创建/更新/列表 |

### 记忆 & 学习
| 工具 | 功能 |
|------|------|
| `MemoryStore` / `MemoryRecall` / `MemoryList` / `MemoryForget` | 持久化记忆 |
| `ScheduleCreate` / `ScheduleList` / `ScheduleDelete` | 定时任务 |
| `Notify` | 多渠道通知 |
| `EventSubscribe` / `EventList` | 事件订阅 |
| `ProfileGet` / `ProfileUpdate` | 用户画像 |
| `LearningFeedback` / `LearningStrategies` | 自适应学习 |

---

## 七、YAML 配置详解

### 最小配置

```yaml
type: simple
systemPrompt: "你是一个助手。"
model:
  name: claude-sonnet-4-20250514
```

### 完整配置字段

```yaml
agentId: string           # Agent 唯一标识
name: string              # 显示名称
description: string       # 描述
type: simple|react|chain|router|parallel  # 类型

model:
  provider: anthropic|openai|dashscope    # LLM 提供商
  name: string            # 模型名
  temperature: 0.0-1.0    # 温度
  maxTokens: int          # 最大输出 token
  fallback: [string]      # 备选模型列表

systemPrompt: string      # 系统提示词

react:                    # ReAct 模式配置
  maxSteps: int           # 最大步数 (建议 10-20)
  toolTimeout: int        # 工具超时秒数
  thinkTimeout: int       # LLM 思考超时

memory:
  enabled: bool           # 启用记忆
  strategy: local|redis   # 存储策略
  size: int               # 记忆条数上限
  ttl: int                # 记忆存活秒数

mcp:
  localTools: [string]    # 启用的工具列表
  policy:
    mode: auto|force|disable  # 工具策略

runtime:
  engine: recursive|cek|adaptive # 执行引擎选择（默认 recursive）
                                 # cek: 逐步成本监控、暂停/恢复、循环检测
                                 # adaptive: 自动选择

guard:
  dangerousCommandBlock: bool    # 拦截危险命令
  highRiskConfirmation: bool     # 高风险操作确认
  maxOutputLength: int           # 输出长度限制
  validator: string              # 输出验证表达式
  retry: int                     # 验证失败重试次数
  fallback: error|empty|last     # 失败后策略

hooks:                    # Hook 配置
  pre_tool:
    - command: string     # Shell hook
  post_llm:
    - command: string

persona:                  # 人格配置
  name: string            # lambda🐑 / jarvis / friday / 自定义
  style: casual|formal|efficient
  template: string        # 内置模板名
```

---

## 八、典型场景

### 编程助手

```yaml
type: react
systemPrompt: "你是编程助手。编程流程: ReadFile→CodeSearch→EditFile→RunTests→GitCommit"
mcp:
  localTools: [ReadFile, EditFile, WriteFile, CodeSearch, ProjectMap, RunTests, Bash, GitStatus, GitDiff, GitCommit, terminate]
```

### 知识问答助手

```yaml
type: react
systemPrompt: "你是知识问答助手。先在知识库中搜索，搜不到再用 WebSearch。"
mcp:
  localTools: [KBSearch, KBAdd, WebSearch, WebFetch, WriteFile, terminate]
```

### 文件管理助手

```yaml
type: react
systemPrompt: "你是文件管理助手。帮用户整理、搜索、分类文件。"
mcp:
  localTools: [ReadFile, WriteFile, ListFiles, SearchContent, Bash, Notify, terminate]
```

### 日报生成助手

```yaml
type: react
systemPrompt: "你是日报生成助手。每天分析 git log 和文件变更，生成日报保存到桌面。"
mcp:
  localTools: [GitLog, GitDiff, ProjectMap, WriteFile, DocGen, Notify, terminate]
```

---

## 九、常见问题

**Q: Agent 超时？**
增大 `react.thinkTimeout` 和 `react.toolTimeout`，或换更快的模型。

**Q: 工具调用失败？**
检查 `mcp.localTools` 中是否声明了该工具。42 个工具名区分大小写。

**Q: 如何查看所有可用工具？**
```bash
python -c "from lambdagent.builtin_tools.registry import BUILTIN_TOOLS; print(sorted(BUILTIN_TOOLS.keys()))"
```

**Q: 如何让 Agent 记住我？**
在 `mcp.localTools` 中加入 `MemoryStore` 和 `MemoryRecall`。

**Q: 如何本地交互式运行？**
```bash
python -m agentexample.agent67.run
```

**Q: 如何微信绑定？**
```bash
python -m agentpaas wechat ag_xxxx
```
