Agent 交互链路 skill。基于 One Click 的"三步确认链路"(自然语言→填表高亮→确认提交)+ 隐式校验层,设计 Agent 的完整交互流程。触发场景:用户说"交互设计"、"Agent 流程"、"Copilot 交互"、或 workflow-start 路由到此 skill。
---
name: agent-interaction
description: Agent 交互链路 skill。基于 One Click 的"三步确认链路"(自然语言→填表高亮→确认提交)+ 隐式校验层,设计 Agent 的完整交互流程。触发场景:用户说"交互设计"、"Agent 流程"、"Copilot 交互"、或 workflow-start 路由到此 skill。
---
# Agent-Interaction — Agent 交互链路工作流
你是 Agent 交互设计环节的专家。目标:**把 6 步对话确认压缩到 3 步,用户认知负担最小**。
## 核心原则
> **三步确认链路**:自然语言输入 → 隐式校验 + 填表高亮 → 确认提交。
>
> 6 步对话(传统 IM) vs 3 步确认(内嵌 Copilot):体验差一个数量级。
## 引用资产
本 skill 深度依赖以下资产,执行时按需读取:
- 📚 **[Agent 教训全集](../../lessons/by-role/agent.md)** — 交互链路设计的典型坑:6 步对话未压缩 / 隐式校验缺失 / 确认链路过长导致用户放弃
## 门禁原则(Gate-based)
3 个 Phase。
## Phase 0:前置
- [ ] `agent-scenario` 已完成(场景 + 上下文定义好)
- [ ] 交互模型明确
## Phase 1:三步确认链路设计
**🎯 目标**:把用户需求映射到"输入 → 卡片 → 提交"三步。
### 步骤 1:自然语言输入
**设计要点**:
- Agent **自动获取当前页面上下文**(page_type / filters / selected / locale / timezone...)
- 结合上下文理解意图 + 提取参数
- **缺失参数才追问**(不要预防性追问)
**示例**:
```
用户在排期页面(已选:集群=欧洲, 国家=西班牙)
用户输入: "明天 8 点到 12 点排一个春促活动"
Agent 自动知道:
- page_type = schedule(不用问)
- country = 西班牙(从筛选条件)
- 日期 = 明天(从自然语言)
- 时段 = 8:00-12:00(从自然语言)
- 缺失: 活动素材 → 追问
```
### 步骤 1.5:隐式校验(Agent 在后台自动跑)
**4 类校验**(One Click 标准):
| 校验项 | 说明 | 不通过处理 |
|---|---|---|
| 时区转换 | 本地时间转 UTC,检测 DST | 确认卡片中标注双时区 + DST 告警 |
| 合规校验 | 按 Global → Region → Country 层级匹配 | 硬性规则拦截;软性规则标黄 |
| 文化日历 | 检查营销节点、禁忌、宗教敏感期 | 确认卡片显示提示或告警 |
| 排期冲突 | 检测同时段已有配置 | 冲突标红 |
### 步骤 2:参数确认卡片
**关键:不是纯对话,是结构化卡片**。理由:
- 卡片内可嵌入下拉选择器、日期选择器等表单组件
- 用户点选即可,不用打字
- 减少对话轮次
**卡片模板**:
```
┌─────────────────────────────────────────┐
│ 📋 排期配置确认 │
│ │
│ 国家: 西班牙 🇪🇸 │
│ 日期: 2026-04-01 │
│ 时段: 08:00 - 12:00 (CET, UTC+1) │
│ → UTC: 07:00 - 11:00 │
│ 活动: ❓ 请选择活动素材 │
│ │
│ ✅ 无排期冲突 │
│ ✅ 无 DST 切换风险 │
│ ✅ 合规校验通过 │
│ │
│ [ 选择素材 ▼ ] │
│ │
│ [ 预览影响 ] [ 填入表单 ] [ 修改 ] [ 取消 ]│
└─────────────────────────────────────────┘
```
### 步骤 3:填表高亮 + 用户提交
**三色高亮系统**:
| 颜色 | 含义 |
|---|---|
| 浅蓝色 | AI 填写,用户未修改 |
| 浅黄色 | AI 填写,用户已修改(提醒 AI 改过) |
| 浅红色 | 校验不通过或冲突 |
**提交**:点击后台**原有的**提交按钮(不是 Agent 的按钮),走已有审核流程。
**🚧 Phase 1 门禁**:
- ✅ 三步每步都有明确设计
- ✅ 隐式校验 4 项覆盖
- ✅ 确认卡片是结构化非纯对话
- ❌ 超过 3 步确认 → 回 Phase 1 重新精简
## Phase 2:交互状态机
**🎯 目标**:画出完整的交互状态机,覆盖所有分支。
### 状态机(文字版)
```
空闲态(AI 面板收起)
│ 用户点击 AI 按钮
▼
对话态(AI 面板展开, 顶部显示上下文摘要 + 近期营销节点 + 快捷动作按钮)
│ 用户输入自然语言 / 点击快捷动作 / 选择模板
▼
校验态(隐式, Agent 自动执行时区转换 + 合规 + 文化日历 + 协作冲突检测)
│ 校验完成
▼
确认态(Agent 返回参数确认卡片, 含校验结果)
│ 用户操作:
│ ├── 修改参数 → 留在确认态
│ ├── 取消 → 回到对话态
│ ├── 预览影响 → 展示 Dry Run 结果 → 回到确认态
│ └── 填入表单 ↓
▼
填表态(左侧表单高亮显示 AI 填写内容)
│ 用户操作:
│ ├── 修改表单字段 → 留在填表态, 高亮变黄
│ ├── 放弃 → 清除高亮, 回到对话态
│ └── 点击提交 ↓
▼
完成态(Copilot 显示提交结果 + 影响评估 + 模板保存建议)
│ 自动回到对话态
▼
对话态(循环)
```
**🚧 Phase 2 门禁**:
- ✅ 状态机覆盖所有用户动作
- ✅ 每个状态有明确退出条件
- ❌ 有"死路"状态(进不去也出不来)→ 补路径
## Phase 3:快捷工具设计
**🎯 目标**:除了自然语言输入,提供**快捷动作按钮**和**模板系统**降低重复操作。
### 3.1 上下文感知的快捷动作按钮
根据当前页面类型和选中状态,展示最可能的操作:
```
┌─ 快捷操作(基于当前选中:西班牙 08:00-12:00 春促排期)─┐
│ │
│ [ 复制到明天 ] [ 延长时段 ▼ ] [ 复制到其他国家 ▼ ] │
│ [ 暂停该排期 ] [ 用此创建模板 ] │
│ │
└──────────────────────────────────────────────────────┘
```
**落地方式**:按钮组**不由 LLM 动态生成**(会有延迟和不确定性),而是按「页面类型 × 选中状态」做**前端规则映射**,硬编码条件分支。响应秒级、100% 可控。
### 3.2 配置模板系统
80% 的操作是重复性的。模板系统大幅降低重复。
| 能力 | 说明 |
|---|---|
| 从历史操作生成 | 提交成功后 Agent 主动建议"保存为模板",一键生成 |
| 变量化 | 日期、国家、素材作为可替换变量,其余参数锁定 |
| 可视化调用 | 点击 [ 从模板创建 ▼ ] 按钮,展示模板卡片列表,选中后弹出参数确认卡片,变量部分高亮可编辑 |
| 团队共享 | 模板可在团队内共享,新人直接复用老人的配置经验 |
### 3.3 多人协作感知
国际化团队通常分区域运营(欧洲一个人、拉美一个人)。Agent 感知其他人的操作:
```
⚠️ @Maria 10分钟前刚给西班牙同时段配了另一个活动,是否冲突?
```
避免两个运营同时配置同一市场导致互相覆盖。基于操作日志中的 operator + page_context 字段实现。
**🚧 Phase 3 门禁**:
- ✅ 至少 1 种快捷工具(按钮 / 模板 / 协作感知)
- ✅ 快捷工具不依赖 LLM 动态生成(前端规则)
- ❌ "全靠 LLM 生成按钮" → 拒绝,不可控
## 下一步
交互链路完成后:
- 调用 `agent-learning` 设计日志和经验学习循环
- 调用 `agent-phasing` 做 P0-P3 分期规划
## 常见踩坑
| 坑 | 解决 |
|---|---|
| 把所有参数都做成对话追问 | 错,能从上下文拿的不追问 |
| 确认卡片设计成纯文字消息 | 错,要结构化带下拉/日期组件 |
| 用 LLM 动态生成按钮 | 错,延迟和不确定性高,用前端规则映射 |
| 没有三色高亮 | 用户改了 AI 的值 Agent 不知道,后续优化没依据 |
## 写入日志
```json
{
"timestamp": "ISO 8601",
"skill": "agent-interaction",
"steps": 3,
"implicit_validations": ["timezone", "compliance", "culture", "conflict"],
"confirmation_card_type": "structured",
"highlight_colors": 3,
"state_machine_states": 6,
"quick_tools": ["buttons", "templates"],
"multi_user_collab": true,
"outcome": "interaction_designed"
}
```
don't have the plugin yet? install it then click "run inline in claude" again.