VS Code 技能评测扩展
版本 0.1.0。本地 VSIX 已支持安装;尚未提交 Marketplace。无遥测,无 Webview 网络请求。
使用
- 用 VS Code 打开可信的本地工作区。在资源管理器展开“技能评测”。
- 选择工作区内的
SKILL.md。多根工作区先选择根目录。
- 编辑
evals/trigger/cases.json,或导入 assets/eval_review.html 导出的 JSON。点击保存;保存本身不运行模型。
- 选择触发、功能或全部评测,点击启动并确认执行边界。日志位于 VS Code 任务终端,支持停止。
- 点击“选择结果”,选择某次运行下的
trigger/results.json 或 functional/results.json,不是 summary.json。
- 查看评分、最终输出和 A/B 汇总;需要实际文件时,点击“选择产物文件预览”。填写每条运行反馈并保存。
现有目录只有 trigger_tests.yaml 时,不会自动解析它。先导入对应 JSON 或添加用例并保存。运行器会用 JSON 重新生成 YAML;不要把旧 YAML 和新 JSON 当成两份独立真源。功能请求和 grader 仍在工作区 YAML/脚本中用 VS Code 原生编辑器编辑。
缺少 SKILL.md、评测配置、Python、Waza 或 Copilot 授权时,运行器报错,不伪造评测通过。技能目录名需匹配 frontmatter name;本仓库 skill/ 是打包真源,不是可直接执行的同名技能目录。
数据适配
- 旧触发编辑器的
{query, should_trigger} 导入后转换为 {id, name, prompt, should_trigger, confidence}。新用例分配 UUID;已有 case 的 id、name、confidence 及额外字段保留。导出仍使用旧编辑器格式,因此导出再导入不能保留原 id 等元数据。
- Waza 仅接受已用真实历史结果验证的
schemaVersion: "1.2"。tasks[].runs[] 映射运行记录,validations 映射评分与证据,final_output 映射输出;baseline_outcome 独立映射禁用技能版本。触发结果使用 trigger_results / trigger_metrics,不拿 smoke task 当触发准确率。
- 缺失评分、baseline 或状态显示未知/无数据,不填零或通过。
- 使用独立 Webview 评审模型,不把 Waza JSON 重命名成
eval_metadata.json、grading.json、benchmark.json,也不直接嵌入旧 viewer.html 的 HTTP/下载反馈逻辑。旧 HTML 与 generate_review.py 保持原样,仅作为参考。
- 本版本展示 Waza A/B 汇总原始指标,不补算置信区间。实际产物不从结果内的任意路径自动读取;用户通过文件选择器明确选择文本、代码或 PNG/JPEG/GIF/WebP。HTML 显示源码,禁止脚本执行;暂不预览 PDF/Office。
工作区写入和安全
- 用例保存到所选技能的
evals/trigger/cases.json。
- 每次运行使用独立
.skill-review/runs/<UUID>/,不覆盖旧结果。
- 反馈保存到
.skill-review/feedback/<结果路径的 SHA-256>.json,包含结果文件内容 SHA-256、eval id、运行记录 id、文字和时间。内容变化的旧反馈不会套用到新结果。
- 用例和反馈保存检测外部修改,冲突时拒绝覆盖;重新加载后再编辑。工作区写入拒绝路径越界及符号链接。
- Webview 使用 CSP、固定消息操作和
textContent;不接收 shell 命令或写入目标路径。运行使用 ProcessExecution 参数数组,不经过 shell。
- 运行前需要可信工作区和单次确认。Waza 和 grader 继承 VS Code 环境,可能使用模型额度;工作区信任并不是沙箱。
--keep-workspace 保留 Waza 产物,可能占磁盘;用户确认后自行清理。输出与反馈可能含敏感业务数据,不应自动发布。
配置与打包
copilotSkillCreator.python 设置 Python 可执行文件,默认 python3;copilotSkillCreator.waza 可指定 Waza 绝对路径;copilotSkillCreator.model 为空时保留评测配置。BYOK 环境由启动 VS Code 的父环境提供,扩展不保存密钥。
npm ci --ignore-scripts
npm test
npm run package
构建复制 skill/ 到 dist/skills/copilot-skill-creator/,生成 dist/copilot-skill-creator.vsix。贡献点指向该目录内的 SKILL.md。白名单只包含扩展运行文件、技能、授权和说明,不包含历史会话、评测结果或凭据。
安装使用 VS Code“扩展:从 VSIX 安装”;卸载使用扩展页“卸载”,不会删除工作区结果或反馈。Marketplace 发布前仍需核验 publisher nyn5255 的真实所有权、完善公开说明,并完成真实 VS Code 安装和交互验收。
官方贡献点格式:VS Code Agent Skills。
验证边界
npm test 覆盖真实 Waza 历史数据适配、case 格式往返、文件冲突/越界/符号链接和模拟 VS Code 消息桥。打包使用 Microsoft @vscode/vsce。这些检查不替代真实 VS Code Extension Host UI 测试,也不证明一次新的付费 Waza 行为评测已执行。