---
name: task-assessor
description: 任务难度与成本评估技能。当用户要求评估任务复杂度、所需时间、消耗成本或需要什么技能时激活。触发词包括"评估任务"、"难度分析"、"成本估算"、"需要多久"、"需要什么技能"、"任务规划"。**重要：自动检测任务难度，L3及以上在执行前必须先报告并确认。**
---

# Task Assessor v2.0

## 概述

当用户提出任务需求时，快速评估任务的**难度等级**、**预估耗时**、**资源消耗**，并给出**清晰的结构化评估报告**。

---

## 模块一：意图澄清拦截（新增）

### 触发条件

**所有用户指令进入执行引擎前，先经过本模块检测。**

满足以下任一条件时触发澄清：

| 条件类型 | 示例 |
|---------|------|
| 缺少必要参数 | "查股价"（缺股票代码） |
| 动词模糊 | "处理文件"（打开/压缩/统计？） |
| 范围过大 | "整理所有文件"（无数量/类型） |
| 隐含假设 | "清空回收站"（回收站/邮箱？） |
| 多义性名词 | "发出去"（邮件/飞书/微信？） |

**不触发情况：**
- 指令清晰、无歧义
- 历史对话中已有同类任务的默认习惯（见记忆型澄清）

### 漏洞检测流程

```
用户指令
    ↓
调用大模型分析
    ↓
输出漏洞列表 [{field, type, options, question}]
    ↓
有漏洞？ → 是 → 生成结构化问卷
    ↓ 否      ↓
直接执行    发送问卷 → 等待回复 → 补全参数 → 执行
```

### 漏洞数据结构

每个漏洞包含：

| 字段 | 说明 | 示例 |
|-----|------|------|
| `field` | 缺失的字段名 | `stock_code` |
| `type` | 数据类型 | `string/number/enum/date` |
| `options` | 枚举可选值（type=enum时） | `["技术面","基本面","资金面"]` |
| `question` | 提问的自然语言 | "请选择分析角度" |

### 问卷生成规则

- 每个问题给出 2~5 个选项（用 A、B、C 标注）
- 支持混合形式：选择题 + 填空
- 格式示例：

```
请补充以下信息（回复序号+答案，如"1→600519,2→B"）：
1️⃣ 股票代码：______
2️⃣ 分析角度：
 A. 技术面
 B. 基本面
 C. 全维度
3️⃣ 时间范围：
 A. 近1周
 B. 近1月
 C. 近3月
```

### 暂存与回复处理

- 原始指令 + 问卷结构保存到会话缓存
- **有效期：10分钟**
- 超时后自动放弃，用户需重新发起
- 解析用户回复：`1→600519,2→B` 或自然语言 `股票600519，技术面`
- 补全参数后重新提交，跳过本技能再次拦截

### 记忆型澄清（v2.0新增）

**存储位置：** `~/.openclaw/data/intent-clarifier/prefs.json`

**规则：**
- 同一任务类型连续3次相同选择 → 设为默认值
- 下次同类任务不再询问该字段
- 用户可回复"重新设置"覆盖

**示例：**
用户三次选择"技术面 + 近1月"分析股票 → 第四次说"分析茅台" → 直接执行"茅台技术面近1月分析"

### 主动建议模式（v2.0新增）

当漏洞 ≥ 2 个时，直接生成 2~3 个完整任务计划供选择：

```
看起来你想整理下载文件夹，我有两个方案：
方案A：按文件类型分类（图片、文档、压缩包）到不同文件夹
方案B：删除30天未使用的大文件，其余按日期归档
回复 A 或 B，或继续细化。
```

### 风险拦截二次确认（v2.0新增）

高风险操作（删除文件、批量发送、修改系统配置）执行前二次确认：

```
⚠️ 确认执行：删除 C:\temp\ 下的所有文件（共23个）
回复 CONFIRM 确认，或 CANCEL 取消。
```

**风险白名单：** 见 `references/risk-whitelist.md`

### 撤回机制

用户可回复：
- `r` / `重新来` → 重置当前澄清流程
- `取消` → 放弃当前任务

---

## 模块二：难度评估（原有，保留）

### 任务复杂度等级

| 等级 | 标识 | 说明 | 典型场景 |
|------|------|------|---------|
| L1 | 🟢 简单 | 单次操作，5分钟内完成 | 查天气、读文件、发消息 |
| L2 | 🟡 普通 | 需要几步操作，5-30分钟 | 批量重命名、分析单只股票 |
| L3 | 🟠 复杂 | 多步骤或需要判断，30分钟-2小时 | 制作报告、分析多个标的 |
| L4 | 🔴 困难 | 大量数据处理或跨系统操作，2小时以上 | 全量年报整理、多平台同步 |
| L5 | ⚫ 极高 | 需要持续维护或未知领域探索 | 全新系统搭建、未知技术调研 |

### 评估维度

```
每个任务从以下4个维度评估：
1. 数据规模 — 多少数据量？（条数、文件数、涉及实体数）
2. 操作复杂度 — 多少步骤？是否有分支判断？
3. 依赖技能 — 需要哪些skill或工具？
4. 时间消耗 — 大概多久？（初估 → 细估）
```

### 评估流程

**Step 1: 理解任务本质**
- 用户想要什么最终结果？
- 现有技能能不能覆盖？
- 需要多少数据处理？

**Step 2: 确定复杂度等级**

```
数据量 < 100条 → L1-L2
数据量 100-1000条 → L2-L3
数据量 > 1000条 → L3-L4

多步骤（>3步） → +1级
涉及外部API/跨系统 → +1级
需要判断/决策 → +1级
```

**Step 3: 估算时间与成本**

| 复杂度 | 时间估算 | Token消耗 |
|--------|---------|----------|
| L1 | <5分钟 | <10k |
| L2 | 5-30分钟 | 10k-50k |
| L3 | 30分钟-2小时 | 50k-200k |
| L4 | 2-8小时 | 200k-500k |
| L5 | 8小时以上 | >500k |

**Step 4: 输出评估报告**

```
## 📋 任务评估报告

**任务：** [简述]
**复杂度：** L[X] [等级名称]

### 规模数据
- 数据量：
- 涉及范围：

### 难度分析
[分析难点在哪里]

### 预估耗时
- 初估：[时间]
- 细估：[时间]

### 资源消耗
- Token估算：[X]k-[X]k
- 成本估算：$X.XX

### 所需技能
- 已有：
- 需要补充：

### 执行建议
[是否建议分批、如何优化]

### ⚠️ 风险提示
[可能的卡点或问题]
```

### 执行前检查（⚠️ 重要）

```
用户发布任务
     ↓
意图澄清拦截（检测漏洞）
     ↓
有漏洞？ → 是 → 发送问卷 → 等待补全
     ↓ 否
评估任务难度等级
     ↓
判断等级
┌─────────────────────────┐
│ L1 或 L2                │
│ → 直接执行              │
└─────────────────────────┘
     ↓
┌─────────────────────────┐
│ L3、L4 或 L5            │
│ → 先输出评估报告        │
│ → 然后询问确认          │
└─────────────────────────┘
```

---

## 快速查表

| 用户需求 | 默认等级 | 典型耗时 |
|---------|---------|---------|
| "帮我查天气" | L1 | <1分钟 |
| "帮我分析贵州茅台" | L2 | 5-15分钟 |
| "帮我做个PPT" | L3 | 30-60分钟 |
| "整理所有A股年报" | L5 | 数天-数周 |
| "给我解释这个概念" | L1 | <5分钟 |
| "帮我写个方案" | L3 | 30-120分钟 |

---

## 特殊规则

### 当数据规模不明确时

```
"初估L3，但需要确认：你说的'所有数据'大概是多少条？"
```

### 当任务涉及多个子任务时

```
"这个任务可以拆成3个子任务：
① 数据清洗（L2）
② 格式转换（L3）
③ 报告生成（L2）
整体难度：L3，耗时约1小时"
```

### 当用户要求"顺便做一下"时

```
"这个'顺便'其实涉及：X步骤、Y数据量，可能比主任务还复杂"
```

---

## 缓存管理

### 意图澄清缓存

- **路径：** `~/.openclaw/data/intent-clarifier/cache.json`
- **结构：**
```json
{
  "sessionId": "xxx",
  "originalIntent": "分析茅台",
  "vulnerabilities": [...],
  "createdAt": 1716564000000,
  "expiresAt": 1716564600000
}
```
- **超时：** 10分钟（600秒）
- **清理：** 由 `scripts/intent-clarifier-cache.js` 管理

### 用户偏好缓存

- **路径：** `~/.openclaw/data/intent-clarifier/prefs.json`
- **结构：**
```json
{
  "user": {
    "stock_analysis": {
      "角度": { "value": "技术面", "count": 3 },
      "时间范围": { "value": "近1月", "count": 3 }
    }
  }
}
```

---

## 参考资料

- 评估方法论 → `references/assessment-methodology.md`
- 评估报告模板 → `references/assessment-template.md`
- 任务基准数据 → `references/task-benchmarks.md`
- 意图检测逻辑 → `references/intent-detection-logic.md`
- 回复解析规则 → `references/response-parser.md`
- 风险白名单 → `references/risk-whitelist.md`