第一期结业测评
> 一句话:学员粘贴「第一期结业测评」→ 你扫描他的 WorkBuddy 使用记录 → 生成指标卡 → 自动打开浏览器显示评分。学员零操作、零自评,100 分全部由真实数据得出。
✅ 成绩单页面地址 EVAL_URL(已部署)
成绩单页面 EVAL_URL(已部署):https://ujvu.github.io/wb-eval/
本地联调备用:http://127.0.0.1:8765/student.html
页面已于 2026-09-29 部署到 GitHub Pages,学员可直接访问。 第 5 步会在学员自己的电脑上执行 open "<EVAL_URL>#m=…",公网地址对他们可达。
触发词
「第一期结业测评」「结业测评」「测一下我的使用情况」「第一期结业」
执行流程(严格按序,每完成一步用 ✅/⚠️ 回报)
第 0 步 · 确认身份
不知道学员姓名/园区就先问一句(两次对话内问完),不要编。
第 1 步 · 只读扫描(先别写文件)
数据源:
1. ~/.workbuddy/tasks/*/*.json(subject/status/createdAt/updatedAt;一个任务文件夹里的多个编号 JSON 合并为 1 个任务,说明去重口径)
2. ~/.workbuddy/traces/*/trace_*.json(模型、token、工具调用类型、失败情况)
3. ~/.workbuddy/memory/、~/.workbuddy/memery/、~/WorkBuddy/Claw/memory/
4. ~/.workbuddy/artifact-index/
5. ~/WorkBuddy/ 下 2026-09-01 之后的产物文件
Windows 数据目录为 %USERPROFILE%\.workbuddy\。找不到就把 ls 结果告诉学员,不要猜。
扫完回答三个问题(数据最早/最晚?9 月后剩多少任务多少活跃天?哪些源读不到?)然后停下来等学员回「继续」。
第 2 步 · 在 ~/WorkBuddy/结业作业/ 写文件(不覆盖任何已有文件)
WB任务清单_姓名_20260930.csv:UTF-8 带 BOM,表头 13 列——
序号,任务ID,任务名称,任务描述,状态,创建时间,完成时间,持续时长分钟,主要模型,工具调用次数,是否失败或返工,产物文件,所属场景
场景 9 类选 1–2:家园沟通/台账文档/备课教研/数据统计/日程待办/成长档案/会务发布/电脑维护/其他WB使用报告_姓名_20260930.md+ 脱敏版(人名/手机号/身份证/住址→某某),按第 3 步提纲写。
第 3 步 · 报告提纲
- 【一】原始统计:任务总数/已完成(含去重口径)、时间跨度、活跃天数、活跃周数、按周分布、模型与 token、工具调用分布、失败返工数及占比、产物数及类型、数据完整性声明
- 【二】任务画像:按完成度列 ≤10 个(任务名/场景/模式/技能或钉钉能力/交付文件/是否真正投入使用);单列复杂任务数(多步骤/多文件/跨工具)
- 【三】覆盖范围:十类场景逐项打勾(勾了写对应任务名);工具链六项(钉钉DWS/技能/知识库/AI听记/手机助理/系统维护)
- 【四】对话质量体检:举实证(正反例、前后指令对照)
- 【五】第二期打算(200 字内)
十类场景:家园沟通、台账文档、备课教研、数据统计、日程待办、成长档案、会务发布、电脑维护、技能与知识库、手机远程助理。
第 4 步 · 指标卡(核心,页面靠它评分)
报告末尾追加代码块(三个反引号 + metrics),严格按此结构;数值用数字、拿不到填 null、不删字段、与【一】【三】一致、自查 JSON 可解析:
{"meta":{"name":"姓名","campus":"园区","role":"岗位","workbuddyVersion":"如5.5.6","dingtalkBound":true,"workdirSet":true,"skillsInstalled":2,"modesUsed":["ask","plan","craft"],"dataComplete":true,"dataGaps":[]},
"usage":{"tasksTotal":0,"tasksCompleted":0,"tasksPending":0,"activeDays":0,"activeWeeks":0,"spanStart":"2026-09-01","spanEnd":"2026-09-25","failedTasks":0,"artifactsTotal":0},
"tasks":{"effectiveClosedLoop":0,"complexCount":0,"top":[]},
"coverage":{"scenarios":["实际做到的场景名"],"toolchains":["实际用到的工具链"]},
"quality":{"instructionClarity":0,"modeMatch":0,"boundary":0,"humanConfirm":0,"iteration":0,"safety":0,"reusableArtifact":0,"sharing":0,
"instructionClarityEvidence":"","modeMatchEvidence":"","boundaryEvidence":"","humanConfirmEvidence":"","iterationEvidence":"","safetyEvidence":"","reusableArtifactEvidence":"","sharingEvidence":""}}
quality 八项评分标准(评的是用法不是水平;每项必须附一句 Evidence 实证,查不到写"未发现"按低档给分,不许为讨好学员虚高):
| 项 | 满分 | 给分标准 |
|---|---|---|
| instructionClarity | 3 | 3=多数指令含「做什么+给谁+要什么格式」且有≥2个正例;2=常缺一项;1=基本笼统"帮我做个X";0=无从判断 |
| modeMatch | 3 | 3=三种模式按任务性质切换且能说清理由;2=用过两种;1=只用一种;0=无 |
| boundary | 3 | 3=主动交代工作目录/脱敏且有实例;2=提过无实例;1=没有;0=敏感信息直传外部模型 |
| humanConfirm | 3 | 3=发布前核对+要求列改动差异(有实例);2=有核对;1=偶尔;0=从不 |
| iteration | 3 | 3=有返工前后指令对照;2=有改进描述;1=反复返工说不清;0=无返工无从评 |
| safety | 5 | 5=脱敏+人工终审+实例;4=已脱敏;3=知道但偶漏;1=明显不足;0=敏感外传 |
| reusableArtifact | 8 | 8=已封装技能或完整工作流;6-7=完整提示词含[变量];4-5=不完整;2-3=一句思路;0=未交 |
| sharing | 7 | 7=群内案例分享留痕;5-6=答疑帮人有记录;3-4=提过好问题;1-2=参与讨论;0=无 |
第 5 步 · 自动打开成绩单(关键动作)
把指标卡 JSON(含 quality)压成一行,按学员系统执行:
macOS: open "<EVAL_URL>#m=<encodeURIComponent(JSON.stringify(指标卡))>"
Windows: start "" "<EVAL_URL>#m=<同上>"
Linux: xdg-open "<EVAL_URL>#m=<同上>"
成功后告诉学员:「✅ 浏览器已打开你的结业评分,看分数和结果就行」。
打不开(无浏览器/无权限)就把完整链接发给学员让他自己点,并把链接写入 ~/WorkBuddy/结业作业/成绩单链接.txt。
第 6 步 · 留档(先打印「📋 待发送预览」,等学员回「发」再执行)
运行 dws --version:
- 可用:脱敏版报告 + CSV 传钉钉群「AI 教师工作坊(第一期)」群文件(有「第一期结业作业」文件夹放里面);再向群里发提交卡——
【结业提交卡】WB使用报告-姓名-园区-2026 + 一行摘要(任务 N · 完成 N · 活跃 N 天/N 周 · 场景 N/10 · 工具链 N/6 · 有效闭环 N · 复杂任务 N)+ 报告文件名 + 完整指标卡 JSON。
- 不可用:不自行找网络通道,把脱敏版、CSV、提交卡文本的路径报给学员,由他手动传。
只提交脱敏版;原始版永远不离开学员电脑。
第 7 步 · 收尾(5 行内)
文件在哪、成绩单页面打开没有、提交卡发没发出去、指标卡哪些字段是 null。
📌 硬规矩(任何一步都适用)
- 只读:只访问本技能列出的目录;不修改、不删除任何已有文件。
- 不编数:所有数字必须有来源;拿不到写「无数据」/null,禁止估算。
- 脱敏:人名、手机号、身份证号、住址一律「某某」。
- 证据:quality 八项每项一句实证;说缺点不扣"印象分",虚高才是坑学员。
- 预览再发:一切对外发送(群文件/群消息)先打印预览等确认。
- 不越权:不读取工作目录之外的个人文件;不做任何"帮学员提分"的修饰。
🔀 边界情况
- 记录不全/换过电脑:有多少算多少,
dataComplete:false+dataGaps写明原因,不额外扣分。 - 任务数 ≥80 且活跃周 ≤1:疑似刷量,正常统计但在报告里标注,评审端会复核。
- 学员没做过复杂任务/没成果:如实给低分,第 5 步页面会给出具体提分清单——低分不是失败,是下一步的路径。