mcpField
C
cawplan-internal-qa-coding-humaninputs-sample

cawplan-internal-qa-coding-humaninputs-sample

github.com/cawcut测试与质量166 次安装2 天前更新
代码仓库

关于 cawplan-internal-qa-coding-humaninputs-sample

一项 CawPlan 技能,可收集人工输入记录、生成符合生产分类上下文规则的 JSON 测试样本,并通过浏览器编辑器标注,适用于评测数据准备。

主要功能

  1. 01通过 CawPlan CLI 获取人工输入记录
  2. 02生成含前序轮次上下文的测试样本
  3. 03标注预期类别与主题
  4. 04设置审核标记和可选理由
  5. 05在浏览器编辑器加载并导出 JSON

适用场景

  1. 01从筛选记录生成已标注的评测样本
  2. 02逐轮审核对话的类别与主题标签
  3. 03将标注后的 JSON 导出到评测目录

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/cawcut/skill-cawplan --skill cawplan-internal-qa-coding-humaninputs-sample

安装后在 Claude Code 中输入/cawplan-internal-qa-coding-humaninputs-sample确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

assets/
label-editor.html
assets/js/
classify_context.mjs
assets/samples/
.gitkeep
latest.json
references/
CATEGORY_TAXONOMY.md
TOPIC_TAXONOMY.md
scripts/
build_sample.mjs
classify_context.mjs

详细介绍

CawPlan 内部 QA — 人工输入样本与标签

初始化

cawplan skill check

任务

通过 CawPlan CLI 获取人工输入行,生成与生产环境分类上下文规则一致的 fixture JSON,然后打开本地标签编辑器,让人工为每轮设置 expected_categories、expected_topic,以及可选的 expected_reason 和 review_required。

工作流

1. 确定范围(使用与 humaninputs-test 相同的消歧规则)

成员(可选):cawplan session members → 精确的 --member git key。如果有歧义,请让用户选择,不要猜测。

产品(可选):cawplan products list --search "<name>" → unique_id。如果有歧义,请让用户选择。

产品内的用户(可选):product-human-input-logs --user-id 需要 PRM user_id,通过 cawplan users query 解析。

日期范围(必填):--from / --to,或使用 --date 指定单日。如果用户没有提供范围,默认取最近 2 天。

数量:--limit N(默认值为 20)。

会话形态(任选其一):

  • --one-session — 自动选择范围内行数最多的会话(最适合多轮 prev 链,例如 20 轮 Slack fixture)。
  • --session-id <id> — 明确保留一个会话。
  • 两者都不指定 — 排序后取前 N 行(仍按 session_id 计算 prev)。
2. 构建 fixture JSON

在此技能目录中运行:

SKILL_DIR="/media/spx/work/github/flow-cawplan-skill/skills/cawplan-internal-qa-coding-humaninputs-sample"

node "$SKILL_DIR/scripts/build_sample.mjs" \
  --from <YYYY-MM-DD> --to <YYYY-MM-DD> \
  [--member "<exact_member>"] \
  [--product "<product name>" | --product-id <id>] \
  [--user-id <prm_user_id>] \
  [--session-id <session_id> | --one-session] \
  --limit <N> \
  --output "<path>/human-input-sample.json" \
  --copy-for-editor

输出格式(与 /media/spx/work/2026/0830/ 下的 eval fixture 一致):

字段含义
items[].content原始人工输入
items[].assistant_message配对的原始助手回复(来自 API 的完整文本)
items[].prev_assistant_message已处理的同一会话中上一轮助手回复的最后一个段落(生产环境的 prev 槽位)。从日期范围内获取的所有行中解析,而不仅限于选定的 N 行,因此即使该会话较早的轮次未包含在输出中,近期切片仍可获得正确的 prev
items[].expected_categories标注前为空 []
items[].expected_topic标注前为空
items[].expected_reason供审核者参考的可选自由文本理由(填写前为空)
items[].review_required默认为 false;当类别/主题标签需要审核时设为 true
items[].cloud_category / cloud_topic来自云端增强的可选提示

预处理与 uid.core-product 的 ClassifyPrevAssistantTail / ClassifyAssistantSnippet 一致(参见 scripts/classify_context.mjs)。

3. 打开标签编辑器

执行 --copy-for-editor 后,启动静态服务并打开页面:

cd "$SKILL_DIR/assets"
python3 -m http.server 8765

浏览器:http://localhost:8765/label-editor.html

  • 加载最新样本 — 读取 assets/samples/latest.json(由 --copy-for-editor 写入)。
  • 加载 JSON — 选择任意 fixture 文件。
  • 下载已标注的 JSON — 导出填有 expected_categories / expected_topic 的 *-labeled.json;设置后还会包含 expected_reason / review_required。
  • 草稿会自动保存到浏览器的 localStorage。

告知用户输出路径、编辑器 URL,并提醒他们完成后导出已标注的 JSON(保存到自己的 eval 文件夹下,例如 /media/spx/work/2026/0830/)。

输出

向用户报告:

  • 已解析的筛选条件(成员 / 产品 / 日期 / 数量限制 / 会话)。
  • 生成的 JSON 和 assets/samples/latest.json 的路径。
  • 标签编辑器 URL(http://localhost:8765/label-editor.html)。
  • 提醒:标注完成后,从页面导出已标注的 JSON。

参考资料

  • scripts/build_sample.mjs — 获取并预处理
  • scripts/classify_context.mjs — 与生产环境对齐的段落规则
  • assets/label-editor.html — Web UI
  • references/CATEGORY_TAXONOMY.md — 类别标签定义
  • references/TOPIC_TAXONOMY.md — 主题标签定义

评论

支持 Markdown