# Moras Experience Commerce Protocol - Draft v0.1

## 1. Why

Dreamova 式产品启发的关键不是“AI 生成视频”，而是把内容种草升级为：

> 向往生活 → 自我代入 → 连续 Remix → 确认是否适合 → 可信成交。

Moras-A2A 的 Experience Commerce Protocol 负责把这个过程协议化，让外部 Agent、商家 Agent、内容资产和交易基础设施能围绕同一个体验式 proposal 协作。

## 2. Experience Intent

在现有 Intent 上增加 `experience_context`，用于表达用户想先体验和确认的生活方式场景。

```json
{
  "raw_query": "see whether a cream sofa fits my small apartment",
  "experience_context": {
    "scene": "apartment living room",
    "self_context": {
      "room_size": "small studio",
      "renter": true
    },
    "desired_feeling": "warm minimalist",
    "visual_constraints": ["cream palette", "wood texture"],
    "confirmation_goal": "decide whether this style fits before buying"
  }
}
```

## 3. Experience Proposal

在现有 Proposal 上增加 `experience_preview`，让商家/内容/Moras Agent 返回的不只是商品报价，而是可预览、可 remix 的体验提案。

```json
{
  "intent_id": "int_abc",
  "merchant_agent_id": "moras-core",
  "product_id": "3003",
  "proposal_state": "quoted",
  "experience_preview": {
    "asset_type": "image",
    "asset_refs": [{ "type": "generated_scene", "id": "asset_scene_001" }],
    "remixable_dimensions": ["color", "style", "budget", "room_size"],
    "scene_preview": {
      "prompt": "small warm minimalist studio with cream sofa"
    }
  }
}
```

## 4. Experience Commerce Document (ECD)

服务端会从 Intent + Proposal 合成 `experience_card`，作为 PCD 的上层体验式交易文档。

```json
{
  "experience_id": "exp_prp_123",
  "scene": { "scene": "apartment living room" },
  "products": [
    { "product_id": 3003, "role_in_scene": "recommended_item", "price": 129.99 }
  ],
  "creator_evidence": [],
  "why_it_fits_you": ["Matches desired feeling: warm minimalist"],
  "remix_actions": ["change_color", "change_style", "change_budget", "change_room_size"],
  "cta": {
    "confirm": "proposal.confirmed",
    "remix": "proposal.remixed",
    "buy_bundle": "match.accepted"
  }
}
```

## 5. Decision Feedback Events

Experience Commerce 不是一次性推荐，而是可迭代交易协商。标准事件：

- `proposal.picked`：用户觉得方向对。
- `proposal.noped`：用户明确否定。
- `proposal.remixed`：用户要求改风格、预算、材质、场景。
- `proposal.confirmed`：用户确认体验/商品组合可以进入交易。
- `experience.generated`：体验资产已生成。
- `experience.viewed`：体验资产已被查看。

```json
POST /v1/decision-events
{
  "event_type": "proposal.remixed",
  "intent_id": "int_001",
  "proposal_id": "prp_001",
  "action": "change_color",
  "from": "black",
  "to": "cream",
  "reason": "user prefers warm tone",
  "actor_agent_id": "gpt-shopper"
}
```

服务端会把事件落到 `agent_feedback_events`，并生成 `taste_signal`，作为后续 Taste-Decision Graph 的原料。

## 6. Proactive Experience Feed

外部用户 Agent 可以调用：

```json
POST /v1/experience-feed
{
  "agent_id": "user-agent-001",
  "taste_profile": {
    "visual_preferences": ["warm minimalist", "cream palette"],
    "negative_preferences": ["glossy plastic"]
  },
  "inspiration_refs": [
    { "source": "pinterest", "url": "https://example.test/pin/1", "scene": "small apartment" }
  ],
  "limit": 3
}
```

返回 `ready_to_experience` proposal shells，供上游 Agent 继续调生成模型、商家 Agent 或 Moras 商品池完成体验资产和交易提案。

## 7. Guardrails

- AI 生成只作为交易确认工具，不作为无交易闭环的电子榨菜。
- 每个体验提案都必须尽量绑定 `intent_id`、`proposal_id`、`merchant_agent_id`、`asset_refs`、`trust_score`、`attribution_chain`。
- MatchToken snapshot 必须保留 `experience_context`、`experience_preview` 和 `experience_card`，用于归因、审计与结算。
