aip-sci 0.1.0

Affective Interaction Programming - 情感交互编程
Documentation
# AIP (Affective Interaction Programming)

**情感交互编程——基于情绪数据模型的AI决策与生成式用户交互系统**

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Rust](https://img.shields.io/badge/Rust-1.75+-orange.svg)](https://www.rust-lang.org/)

---

## 概述

AIP是一个将**用户情绪作为AI决策者直接优化目标**的创新框架。与传统推荐系统不同,AIP不推荐内容,而是**生成交互逻辑本身**——将用户特质与实时行为情绪信号映射到参数化的交互机制,包括节奏、强度与反馈动态。

### 核心理念

> 交互参数不仅仅是内容的传递机制,它们是**强大的情感工具**。AIP将用户情绪从"评价指标"转变为"可编程设计变量"。

---

## 核心组件

### EDM (Emotion Data Model) - 情绪数据模型

从触屏动力学、按键熵与犹豫模式等行为信号推断用户的实时情绪状态。

**输入**:15维行为特征(10秒窗口)

| 特征ID | 特征名 | 情绪关联 |
|--------|--------|----------|
| 0 | 点击频率 | 唤醒↑ |
| 1 | 滑动速度 | 唤醒↑ |
| 2 | 多点触控比例 | 唤醒↑ |
| 3 | 设备倾斜标准差 | 唤醒↑ |
| 4 | 重试延迟 | 效价↓ |
| 5 | 暂停时长 | 效价↓ |
| 6 | 犹豫时间 | 效价↓ |
| 7 | 路径效率 | 掌控↑ |
| 8 | 取消率 | 掌控↓ |
| 9 | 完成率 | 掌控↑ |
| 10 | 平均压力 | 唤醒↑ |
| 11 | 压力标准差 | 唤醒↑ |
| 12 | 动作精度 | 掌控↑ |
| 13 | 平均反应时间 | 效价↓ |
| 14 | 反应时间标准差 | 效价↓ |

**输出**:三维情绪状态

```rust
pub struct EmotionState {
    pub valence: f32,    // 效价 [0, 1]
    pub arousal: f32,    // 唤醒 [0, 1]
    pub dominance: f32,  // 掌控感 [0, 1]
}
```

**模型架构**:

```
输入 (15维特征 × 5步历史)
1D卷积 (滤波器=32, 核=3)
SE模块 (通道注意力)
双向LSTM (64)
自注意力层
MLP (64→32→3)
Sigmoid → [效价, 唤醒, 掌控感] ∈ [0,1]
```

**性能目标**:

| 维度 | Pearson r 目标 | RMSE 目标 |
|------|----------------|-----------|
| 效价 | ≥ 0.55 | ≤ 0.18 |
| 唤醒 | ≥ 0.60 | ≤ 0.16 |
| 掌控感 | ≥ 0.50 | ≤ 0.20 |

---

### Director - 交互策略网络

基于用户特质、环境状态和实时情绪向量,输出连续的交互参数以优化复合奖励。

**状态空间 (23维)**:

| 类别 | 维度 | 描述 |
|------|------|------|
| 用户特质 | 8 | 年龄组、性别、自我报告风格、反应时间百分位等 |
| 环境状态 | 6 | 关卡、进度、资源、时间等 |
| 实时情绪 | 3 | 效价、唤醒、掌控感 |
| 情绪统计 | 6 | 过去30秒的均值和标准差 |

**动作空间 (7维连续)**:

| 参数 | 范围 | 含义 |
|------|------|------|
| intensity_factor | [0.5, 2.0] | 事件频率/密度的乘数 |
| feedback_intensity | [0.3, 1.5] | 触觉/视觉反馈的强度 |
| pace_speed | [0.6, 1.8] | 交互进程的速度 |
| reward_scarcity | [0.0, 1.0] | 稀有奖励的概率 |
| env_arousal | [0.3, 1.0] | 背景刺激水平 |
| rhythm_modulation | [0.8, 1.5] | 音频反馈的节奏/步调 |
| challenge_curve | [-1.0, 1.0] | 难度进展的陡峭程度 |

**奖励函数**:

```
R = 0.4 · R_progress + 0.4 · R_emotion + 0.2 · R_retention
```

**训练算法**:PPO (Proximal Policy Optimization)

| 参数 ||
|------|-----|
| 学习率 | 3e-4 |
| 裁剪系数 | 0.2 |
| GAE λ | 0.95 |
| 熵系数 | 0.01 |
| 小批量大小 | 64 |

---

## 项目结构

```
aip/
├── Cargo.toml
├── src/
│   ├── lib.rs
│   ├── edm/                    # EDM模块
│   │   ├── core.rs             # 核心接口定义
│   │   ├── features.rs         # 特征工程
│   │   └── roguelite/          # Roguelite游戏实现
│   │       ├── core.rs         # 推理实现
│   │       └── training.rs     # 训练实现
│   ├── director/               # Director模块
│   │   ├── core.rs             # 核心接口定义
│   │   └── roguelite/          # Roguelite游戏实现
│   │       ├── core.rs         # 推理实现
│   │       └── training.rs     # 训练实现
│   ├── ffi/                    # FFI接口
│   └── utils/                  # 工具函数
├── tests/                      # 测试文件
├── docs/                       # 文档
│   ├── core.md                 # 核心技术架构
│   ├── roguelite.md            # Roguelite游戏方案
│   └── training_schemes.md     # 训练标记方案
└── papers/                     # 论文
    └── 001.md                  # 第一部分论文
```

---

## Cargo Features

| Feature | 描述 | 依赖 |
|---------|------|------|
| `edm` | EDM核心接口 | - |
| `edm_roguelite` | EDM Roguelite推理 | `edm` |
| `edm_roguelite_training` | EDM Roguelite训练 | `edm_roguelite` |
| `director` | Director核心接口 | - |
| `director_roguelite` | Director Roguelite推理 | `director`, `edm_roguelite` |
| `director_roguelite_training` | Director Roguelite训练 | `director_roguelite` |

---

## 快速开始

### 安装

```toml
[dependencies]
aip = { version = "0.1.0", features = ["edm_roguelite", "director_roguelite"] }
```

### 基础用法

```rust
use aip::edm::{EmotionDataModel, EmotionState};
use aip::director::{InteractionStrategy, InteractionState, InteractionParams};

// EDM推理
let edm = RogueliteEdm::load("models/edm_v1.safetensors")?;
let features = compute_behavior_features(&events);
let emotion = edm.infer(&features)?;

// Director决策
let director = RogueliteDirector::load("models/director_v1.safetensors")?;
let state = InteractionState {
    user_traits,
    env_state,
    emotion,
    emotion_stats,
};
let params = director.decide(&state)?;

// 应用交互参数
apply_intensity_factor(params.intensity_factor);
apply_feedback_intensity(params.feedback_intensity);
```

### 构建命令

```bash
# 基础编译
cargo build

# 完整编译 (所有features)
cargo build --all-features

# 全部测试
cargo test --all-features

# 文档生成
cargo doc --open

# 代码格式化
cargo fmt

# 静态检查
cargo clippy --all-features
```

---

## 应用场景:Roguelite游戏

AIP在Roguelite游戏环境中进行验证,游戏特点:

- **2D俯视像素风格**:4x像素放大,像素对齐渲染
- **生成式地牢**:程序化生成,Delaunay三角剖分 + MST连接
- **移动端控制**:虚拟摇杆 + 技能按钮,自动锁定
- **实时情绪采集**:15维行为特征,10秒窗口

### 游戏控制方案

```
┌─────────────────────────────────────────────────────────────────────┐
│  ┌─────────┐                                    ┌─────────────────┐│
│  │ HP: ████│                                    │ Level: 1-3      ││
│  │ MP: ██  │                                    │ Score: 12,450   ││
│  └─────────┘                                    └─────────────────┘│
│                                                                     │
│                    ┌─────────────────────┐                          │
│                    │    游戏画面区域      │                          │
│                    │    (玩家 + 敌人)     │                          │
│                    └─────────────────────┘                          │
│                                                                     │
│  ┌─────────┐  ┌─────────┐  ┌─────────┐    ┌─────┐  ┌─────┐        │
│  │ 技能1   │  │ 技能2   │  │ 技能3   │    │道具1│  │道具2│        │
│  └─────────┘  └─────────┘  └─────────┘    └─────┘  └─────┘        │
│                                                                     │
│  ┌───────────────┐                                                  │
│  │   虚拟摇杆     │  (左手控制移动)                                  │
│  └───────────────┘                                                  │
└─────────────────────────────────────────────────────────────────────┘
```

### AIP参数对游戏的影响

| 参数 | 游戏影响 |
|------|----------|
| intensity_factor | 敌人生成速率、伤害倍率 |
| feedback_intensity | 屏幕震动、音效音量 |
| pace_speed | 游戏节奏、事件触发频率 |
| reward_scarcity | 稀有道具掉落率 |
| env_arousal | 环境特效密度、背景音乐强度 |
| rhythm_modulation | 音乐节奏、心跳音效 |
| challenge_curve | 难度曲线斜率 |

---

## 训练方案

### 冷启动策略

```
新用户 ──→ 用户画像采集 ──→ 群体匹配 ──→ 初始策略分配
              │                │               │
              ↓                ↓               ↓
         静态特质         相似用户群        预训练模型
         (8维)            聚类中心          参数迁移

校准期 ──→ 行为数据采集 ──→ 在线学习 ──→ 个性化模型
(2分钟)      (10秒窗口)      (增量更新)    (用户专属)
```

### 实时训练架构

```
┌──────────────┐    ┌──────────────┐    ┌──────────────┐
│   客户端      │    │   边缘节点    │    │   云端服务器  │
│  (游戏端)     │───→│  (推理+缓存)  │───→│  (训练中心)   │
└──────────────┘    └──────────────┘    └──────────────┘
       │                   │                    │
       ↓                   ↓                    ↓
  行为数据采集         增量推理更新          批量模型训练
  特征计算             轨迹缓存              全局模型更新
  本地推理             快速响应              模型分发
```

### 标记方案

| 标注方式 | 成本 | 质量(Pearson r) | 适用场景 |
|----------|------|-----------------|----------|
| 纯人工SAM || 0.90 | 金标准、小规模验证 |
| LLM批量标注 || 0.70-0.80 | 大规模历史数据 |
| LLM+人工复核 || 0.85 | 生产环境推荐 |
| 隐式行为推断 | 极低 | 0.60-0.70 | 实时补充标注 |

---

## 性能指标

| 指标 | 目标值 |
|------|--------|
| EDM推理延迟 | < 5ms |
| Director推理延迟 | < 5ms |
| EDM Pearson r (效价) | ≥ 0.55 |
| Director平均奖励 | ≥ 0.7 |
| 模型更新成功率 | ≥ 99% |
| 情绪稳定性方差 | ≤ 0.1 |

---

## 研究成果

### 初步仿真结果

1. **情绪预测准确性**:EDM与用户自我报告的效价/唤醒/掌控感达到交叉验证 Pearson r > 0.55
2. **策略自发特化**:不同用户群体收敛到性质迥异的交互风格
3. **消融实验**:移除情绪项会导致情绪波动性增加,而留存率并未提升

### 用户群体特化示例

| 群体 | 特征 | 典型参数 |
|------|------|----------|
| 探索型 | 低唤醒偏好,慢节奏 | intensity=0.73, pace=0.85 |
| 战斗型 | 高唤醒偏好,快节奏 | intensity=1.42, pace=1.35 |
| 社交型 | 中等唤醒,高反馈 | feedback=1.2, rhythm=1.1 |
| 挑战型 | 高掌控感,陡峭曲线 | challenge=0.8, scarcity=0.7 |

---

## 依赖库

- **Candle**: 模型推理和训练
- **ndarray**: 数值计算
- **serde**: 序列化/反序列化

---

## 文档

- [核心技术架构]docs/core.md
- [Roguelite游戏方案]docs/roguelite.md
- [训练标记方案]docs/training_schemes.md
- [FFI接口指南]FFI_GUIDE.md
- [性能报告]PERFORMANCE_REPORT.md
- [论文:情感交互编程]papers/001.md

---

## 参考文献

1. Barthet et al. (2024). Closing the Affective Loop via Experience-Driven Reinforcement Learning Designers.
2. Yannakakis & Togelius (2011). Experience-driven procedural content generation.
3. Mehrabian & Russell (1974). An approach to environmental psychology.
4. Schulman et al. (2017). Proximal policy optimization algorithms.

---

## 许可证

MIT License

---

## 联系方式

**张海龙**  
Email: hailongz@qq.com