错误发现技能(Error Discovery Skill)用于对 LLM 输出或 trace 数据集进行交互式错误分析,目标是发现失败模式。该技能仅适用于交互式会话。
数据理解 技能首先加载数据文件(支持 JSONL、CSV、JSON 等格式),检查 5 至 10 条记录,识别每个字段的类型和含义,区分主内容字段与元数据字段,判断哪些字段在记录间变化。内容结构可为:单一文本字段(文章、摘要、邮件等)、输入/输出对(提示加完成、问题加答案等)、多轮 trace(消息序列含不同角色,如 system、human、assistant、tool call、tool result、thinking 块,常见于代理 trace 和聊天日志)、代码(源文件、补丁、diff)、结构化输出(JSON、函数调用等)、复合内容(任务描述加 trace 加最终输出)。对于多轮 trace,还需识别角色类型、是否存在工具调用与结果配对、是否存在思考块、回合的逻辑分组方式。同时分析记录间差异维度(元数据如主题、模型、难度;结构如长度、回合数、工具调用数;结果如成功/失败、分数)和记录内差异维度(各段落的作者/角色、内容类型、重要程度)。
视觉编码设计 在编写代码前,将每个变化维度映射到唯一种视觉通道,运用格式塔原则:相似性(颜色、形状)用于类别维度;接近性(间距)用于逻辑单元;共同区域(容器、背景)用于多部分内容;图形/背景(透明度、对比)用于强调。具体规则:颜色用于最重要的类别区分(多轮 trace 按角色分配不同色相;单一内容按标签或来源分类),不用于定量数据;透明度用于表示是否需要仔细阅读,仅降低跨记录完全相同的冗余内容(如重复的系统提示),不按角色统一淡化;间距用于层级结构(逻辑组内 4-8px,组间 16-24px,主要区块间 32-48px);字体用于内容类型(自然语言用比例字体,代码用等宽字体,元数据用小号,思考/推理用斜体或特殊处理);边框/容器用于分组(工具调用与结果共享容器,输入输出用分隔线或并排);结构异常标记仅在头部显示(基于数据集级预计算平均值,标记统计异常维度,多数记录应为零或一个标记)。
审查界面构建 架构采用 Python HTTP 服务器(stdlib http.server,无依赖),提供多个 API 端点:GET / 提供 HTML 应用,GET/POST /api/samples 获取和推送样本,GET/POST /api/annotations 获取和保存标注,GET /api/graph 获取所有记录的二维投影,GET/POST /api/patterns 获取和推送失败模式分类,GET/POST /api/suggestions 获取和推送建议。磁盘文件存储在 error_discovery_data/ 目录下,包含 samples.json、annotations.json、graph.json、patterns.json、suggestions.json。HTML 应用每次标注自动保存到服务器,并定期轮询新样本和建议。
界面包含三个视图:内容/文章视图是主要审查界面,支持阅读和标注;地图视图是所有记录的二维散点图(PCA 或 UMAP 投影),显示聚类、样本项和已标注项,可点击样本节点跳转到内容视图;进度视图包含两个部分——失败模式(技能已分类的失败模式的树状图,按标注数量调整大小,内列注释,可点击跳转到内容视图)和待审查的代理建议列表(含全选复选框、接受选中/忽略选中按钮)。
内容视图设计应用视觉编码规则:头部的标题、标签、主题保持简洁,仅在真正异常时添加结构异常标记;多轮 trace 中每个消息/回合为块,按角色使用彩色左边框或背景色,角色标签小号加粗显示在块顶部,思考块使用视觉区分处理(如浅背景、斜体、缩进),工具调用函数名突出显示,参数放在可折叠的 JSON 中,工具结果默认折叠,仅对完全相同的重复内容降低透明度,相关回合视觉分组;单一文本内容渲染为格式化 HTML 或段落;代码/diff 使用语法高亮,添加行绿色背景,删除行红色背景,显示行号;输入/输出对堆叠并提供清晰分隔线,或并排显示。内联标注:选中文本后弹出浮层输入,按 Enter 保存,高亮段保持可见。边栏注释:标注和建议显示在右侧边栏列中,与高亮文本垂直对齐,采用两列布局(左侧文章主体 flex: 1 最大宽度约 720px,右侧边栏宽约 240px),注释绝对定位,支持悬停链接,注释显示引用文本、审查者备注和编辑/删除按钮(悬停显示),不使用悬停提示作为主要显示方式。代理建议在行内高亮(虚线边框、柔和色调)和边栏注释(不同左边框颜色、代理建议标签)上与人工标注视觉区分,边栏显示始终可见的接受/忽略按钮。不支持质量标签、下拉菜单或结构化表单,仅自由文本备注。每次更改自动保存到服务器,保留 localStorage 备份,定期轮询新样本和建议。
地图视图:所有记录的二维散点图,按聚类着色(与凸包颜色匹配),用形状区分类别(圆形表示 AI,方形表示人类),样本项显示为较大节点带深色边框,已标注项用不同颜色(如橙色),绘制聚类凸包或凸边界作为微妙背景形状,悬停显示标题、元数据和标注数量,点击样本节点跳转到内容视图。
聚类与初始样本选择 提取适合内容类型的特征,使用 KMeans 或类似方法在归一化特征上聚类,目标 6 至 10 个聚类。初始样本量为 15 至 25 条(数据集超过 50 时):聚类代表(约 60-70%)选取距每个质心最近的 1 至 2 条,混合类别/标签;随机样本(约 30-40%)从全数据集中抽取,覆盖聚类可能遗漏的维度;去除重复。优先考虑多样性,目标是发现失败模式而非估计频率。
交互式审查循环 应用运行且人工开始审查后,遵循 review-loop.md 进行持续的交互式会话,包括监控到达的标注。如果会话在人工审查前结束(例如非交互式运行),则构建并冒烟测试应用,然后停止服务器并给出稍后启动的命令;不得声称审查循环已运行或任何内容仍在运行。