# 智能体响应规则

本文档定义了智能体加载Skill后必须遵循的响应规则和流程。

## 目录
1. [首次交互检测](#首次交互检测)
2. [响应流程](#响应流程)
3. [错误处理](#错误处理)
4. [容错机制](#容错机制)

---

## 首次交互检测

### 第一步：检查是否为首次交互
```bash
python3 scripts/init_dialogue_optimized.py --check --memory-dir ./agi_memory
```

### 第二步：根据检测结果决定响应方式

#### 情况A：检测到首次交互（`is_first_interaction: True`）

**首次交互直接初始化默认人格**

**执行闭环**：
1. 调用默认人格初始化命令：
   ```bash
   python3 scripts/init_dialogue_optimized.py --default --memory-dir ./agi_memory
   ```
2. 【必须】验证检查：再次运行 `--check` 确认 `is_first_interaction: False`
3. 【必须】内容校验：读取 `personality.json` 确认 `initialized: true`
4. 满足以上条件后，才进入交互模式

**输出约束**：
- ❌ 不需要用户选择
- ❌ 不显示任何选择界面
- ✅ 验证通过后直接响应用户的原始询问

#### 情况B：已初始化（`is_first_interaction: False`）

**直接进入交互模式**
- ❌ **不要**调用欢迎消息命令
- ❌ **不要**显示人格初始化相关内容
- ❌ **不要**询问用户是否要初始化人格
- ✅ 直接处理用户的实际问题
- ✅ 按照标准流程响应用户请求
- ✅ 如果用户输入 `/root` 命令，则进入自定义人格模式

---

## 响应流程

### 状态锚点定义

| 阶段 | 状态依据 | 进入条件 |
|------|---------|---------|
| 初始化中 | 命令执行开始 | 检测到首次交互 |
| 初始化完成 | 命令退出码=0 | `--default` 执行成功 |
| 验证通过 | 文件存在 + initialized=true | `--check` 返回 False |
| 交互模式就绪 | 验证通过 + 内容校验成功 | 满足上述所有条件 |

### 成功判定标准
- ✅ 命令退出码 = 0
- ✅ `personality.json` 文件存在
- ✅ 文件内容可解析（JSON格式正确）
- ✅ 文件内容 `initialized` 字段为 `true`

---

## 错误处理

### 初始化失败场景
| 失败场景 | 检测方式 | 处理策略 |
|---------|---------|---------|
| 初始化命令失败 | 退出码≠0 | 输出错误信息，终止流程 |
| 验证检查失败 | `--check` 仍返回 True | 重试初始化，最多3次 |
| 文件校验失败 | 内容损坏 | 删除文件，重新初始化 |

---

## 容错机制

### 失败场景处理

| 失败场景 | 检测方式 | 处理策略 |
|---------|---------|---------|
| 权限不足 | 检测 OSError | 输出权限错误，建议检查目录权限 |
| 磁盘空间不足 | 检测 IOError | 输出空间不足警告 |
| JSON损坏 | try-except json.load | 删除文件，重新初始化 |
| C扩展加载失败 | ImportError 捕获 | 自动降级，输出降级提示（可选） |
| 并发冲突 | 文件锁定检测 | 重试机制，最多3次 |

### 重试机制
- 初始化失败：最多重试3次
- 验证失败：最多重试3次
- 并发冲突：使用文件锁，自动重试

---

## 相关文档
- [初始化指南](init_dialogue_optimized_guide.md) - 详细的初始化流程说明
- [C扩展使用说明](c_extension_usage.md) - C扩展的加载和降级机制
