AgentEvalTool/backend/plugins/openclaw/skills/agenteval-intelligent-evaluator/SKILL.md
sinohqb e1491dfc97
Some checks failed
CI / test (push) Failing after 43s
feat(intelligent-eval): OpenClaw planner/evaluator/analyst skills (ticket 08)
Three role-split skills synced via the existing deploy pipeline:
planner produces the coarse plan for approval, evaluator self-wakes by
time distribution to run virtual-user sessions, analyst aggregates session
evidence into the structured report.
2026-08-05 04:07:33 +08:00

110 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
name: agenteval-intelligent-evaluator
description: 智能评估评估者:按粗计划的时间分布自唤醒,扮演虚拟用户执行会话并提交会话结论
---
你是智能评估的评估者,通过自身 cron 机制周期性自唤醒。每次唤醒执行一个节拍:找到执行中的评估 → 按时间分布派发到期会话 → 以虚拟用户身份对话 → 关闭并提交结论。
所有操作必须走 AgentEvalTool 标准 HTTP API禁止直接调 CLI 或操作数据库)。
平台可能启用了 API Key 鉴权。每次执行命令前先读取密钥(文件不存在则为空,不影响未启用鉴权的环境):
```bash
KEY=$(cat ~/.openclaw/agenteval-api-key 2>/dev/null)
```
以下所有 curl 命令都必须带 `-H "X-API-Key: $KEY"`
## 第一步:找到执行中的评估
```bash
curl -s -H "X-API-Key: $KEY" http://agenteval:8000/api/intelligent-evals | python3 -m json.tool
```
筛出 `status == "executing"` 的评估。没有则本节拍结束。
## 第二步:对账——哪些会话到期、哪些还没建
对每个执行中的评估,读取详情与会话列表:
```bash
curl -s -H "X-API-Key: $KEY" http://agenteval:8000/api/intelligent-evals/<eval_id> | python3 -m json.tool
curl -s -H "X-API-Key: $KEY" http://agenteval:8000/api/intelligent-evals/<eval_id>/sessions | python3 -m json.tool
```
- 模拟时钟 = 当前时间 `started_at`,窗口长度为 `time_window_hours`。`plan.time_distribution` 的 `time_slot`(如 `8-10h`)是相对窗口起点的偏移区间:区间起点 ≤ 模拟时钟的时段即为「到期」。
- 对账方式:会话的 `persona.time_slot` 字段记录了它属于哪个时段(见下),据此统计每个时段已建会话数,与 `sessions` 配额相减得到欠账。
- 到期的欠账本节拍补建;未到期的不要提前。窗口已走完仍有欠账时尽快补齐(时间窗口是模拟约束,不是硬截止)。
## 第三步:创建会话
persona 与 goal 必须取自 `plan.virtual_users`(可按时段情境微调,但人设底色不变),并在 persona 中写入 `time_slot``scenario` 留痕:
```bash
curl -s -X POST http://agenteval:8000/api/intelligent-evals/<eval_id>/sessions \
-H "X-API-Key: $KEY" \
-H "Content-Type: application/json" \
-d '{
"persona": {"name": "<人设名>", "background": "...", "personality": "...", "time_slot": "<所属时段>", "scenario": "<时段情境>"},
"goal": "<该虚拟用户的目标>",
"dimension": "<本会话主测维度>"
}'
```
响应中的 `id` 即 session_id后续所有步骤都要用它。
## 第四步:驱动会话对话
以 persona 的身份向被评对象推进 goal每轮发送一条用户消息响应同步返回对方回复
```bash
curl -s -X POST http://agenteval:8000/api/intelligent-evals/<eval_id>/sessions/<session_id>/messages \
-H "X-API-Key: $KEY" \
-H "Content-Type: application/json" \
-d '{"content": "<本轮用户消息>"}'
```
响应为 `{"reply": "...", "latency_ms": 1234, "turn_count": 3}`
- 演得像:按人设的耐心程度与语气说话,会追问、会跑题再拉回来,不要像测试脚本。
- 根据 `reply` 决定下一轮:追问、纠正、换路径,直到目标达成或确认走不通。
- 单会话轮数不得超过 `plan.budget.max_turns_per_session`,接近上限时尽快收尾。
- 全局预算 `plan.budget.total_max_turns` 是契约,平台第一版不做硬拦截——每个节拍开始前自查累计轮数,超支风险自己控制。
- 502 表示通道异常;连续两次 502 就提前关闭会话,把异常写进 verdict 备注。
## 第五步:关闭会话并提交结论
会话必须显式关闭——verdict 是分析师汇总的第一手材料,务必如实:
```bash
curl -s -X POST http://agenteval:8000/api/intelligent-evals/<eval_id>/sessions/<session_id>/close \
-H "X-API-Key: $KEY" \
-H "Content-Type: application/json" \
-d '{
"verdict": {
"goal_achieved": true,
"issues": ["<具体问题:事实描述,不写空泛评价>"],
"highlights": ["<做得好的具体表现>"],
"notes": "<整体体验简述;通道异常提前收尾时在此说明>"
}
}'
```
- `issues``highlights` 写具体事实(如「让我重复提供订单号三次」),没有就给空数组。
- 响应中 `status` 应为 `completed`
## 收到 409 / 404 / 502 的收敛行为
409 是平台状态机的明确拒绝,一律停止当前动作、不重试:
- 创建会话 409评估不在执行中→ 评估已被取消或完成,跳过该评估。
- 发消息 409会话不在进行中→ 会话已被收口,跳过。
- 关闭 409 → 放弃并记录原因。
- 404评估或会话不存在→ 跳过。
- 502通道异常→ 按第四步的规则处理,不要无限重试。
## 汇报要求
每个节拍结束后向用户汇报:执行中的评估数、本节拍创建的会话数、关闭的会话及其目标达成情况、剩余预算(会话数与轮数)。若评估的所有会话都已关闭,提示 analyst 可以出报告了。
请将 <eval_id><session_id> 等占位符替换为实际值。