trace-to-training-data について
評価済みエージェントトレースを、データセット整備向けのSFT例やDPOの選好ペアに変換するスキルです。報酬による選別、同一タスク内のペア作成、機密情報と評価データの漏洩確認を扱います。
主な機能
- 01トレースをSFTまたはDPO形式に変換
- 02報酬に基づく成功トレースの選別
- 03専門家の修正からSFT例を作成
- 04複数ステップの不良箇所をマスク
- 05機密情報、重複、出典の確認
活用シーン
- 01採点済みトレースを学習行に変換
- 02同一タスクの選好ペアを作成
- 03評価例の学習データ混入を防止
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ wshobson/ agents --skill trace-to-training-dataインストール後、Claude Code で/trace-to-training-dataを入力して読み込まれたか確認します。
同梱ファイルreferences/conversion-recipes.md
詳細
トレースからトレーニングデータへ
このスキルは、ここで変換されるトレースを eval-harness-first がすでに評価済みであることを前提としています — 変換が始まる前に、goldens、graders、および runs/<run-id>/results.json がすべて存在しています。これは、そのスキルが自身のフローで言及しているフライホイールの端です。「同じラベル付きトレースがトレーニングセットになる」。変換はここで行われ、評価はすでに上流で完了しています。
入力: 評価済みのトレース — eval/goldens.jsonl と runs/<run-id>/results.json。各行は task_id、grader からの verdict、およびタスクがスカラー スコア (judge スコア、実行の部分点、または RLVR 検証器) をサポートする場合は reward を持ちます:
{"task_id": "t-042", "trace_id": "t-042-a3",
"messages": [{"role": "user", "content": "..."}],
"verdict": "pass", "reward": 0.91,
"grader": "exact_match"}
出力形式: dataset-curation の Format Selection テーブルとまったく同じ形の行 — SFT の messages 行、または DPO の prompt/chosen/rejected ペア — にすることで、このスキルの出力はそのスキルの入力となり、その間に再整形のステップはありません。
原則
eval ハーネスはすでにラベリング作業を完了しています。results.json 内のすべてのトレースは、このスキルが触れる前に verdict を、そして多くの場合 reward を持っています。評価済みのトレースをトレーニング行に変換するのは機械的です — dataset-curation のテーブルから形を選び、フィールドをマッピングし、JSONL を書き出すだけです。残る作業はキュレーションです — どのトレースが品質基準を満たすか、どのペアが有益か、そしてどの行がトレーニングセットに決して入ってはならないか。
トレースを再評価する必要がある変換ステップは、このスキルが目をつぶるべきギャップではなく、ハーネスに grader が欠けている兆候として扱ってください。verdict や reward のないトレースはまだ変換可能ではありません — まず eval-harness-first に戻してください。変換を進めるためにここで手動ラベリングしないでください。
トレースからの SFT
- 成功した軌跡のうち、報酬の上位割合を保持する — 通過したすべてのものではなく。通過したトレースを報酬でランク付けし、単に合格基準をクリアしただけのすべてのトレースではなく、割合 (Agent-lightning パターン) を取ります — ぎりぎり合格したトレースは、しきい値をはるかに超えてスコアしたものよりも弱い SFT シグナルです。
- エキスパートによる修正済みの失敗は、そのまま gold SFT の例になります (Langfuse パターン) — 人間が失敗したトレースの出力を正しいものに編集した場合、その修正には報酬しきい値は不要です。人間がすでに検証済みだからです。修正はそのまま SFT セットに投入してください。
- ステップレベルのマスキングは、マルチステップのトレースにおいて軌跡全体の破棄よりも優れています。 マルチステップの軌跡の一部のステップだけが悪い場合、軌跡全体を破棄するのではなく、悪いステップの損失をマスクし、良いステップを保持します。SRFT は、SWE-bench においてステップレベルの critic マスキングが軌跡破棄よりも 32.2% 対 30.9% と報告しています — より細かい粒度のカットによる、控えめではあるものの実在する差です。
トレースからの選好ペア
- 同じタスク上の通過対失敗の軌跡からペアを構築する — 異なるタスクにまたがって引っ張ってきた無関係な最高スコアと最低スコアのトレースから決して構築しないでください — クロスタスクのペアは、モデルに一方の応答を他方よりも好むようにではなく、一方のタスクを他方よりも好むように教えてしまいます。
- 棄却メンバーは、そのタスクの報酬分布の μ−2σ で選択し、絶対最小値は決して選ばないでください。
preference-optimizationの Pair Construction セクションが完全な選択式を担っています。このスキルは、それが消費する評価済みの軌跡を提供します。 - judge スコアによるデルタ選択は、シグナルを削らずにペアの量を削減します。 各候補ペアを chosen マイナス rejected の judge デルタでスコアリングし、最もデルタの高いサブセットのみを保持します — 16.5k の候補プールの上位 5k が、プール全体の下流結果と一致しました。まず完全な候補セットを構築し、次にデルタでフィルタリングしてください。最初から生成を 5k に制限しないでください。
衛生管理
- どの行を出荷する前にも、シークレットと PII をスキャンし、 見つかったものは伏せ字にしてください。 本番ログを ソースとするトレースには、認証情報、API キー、 トークン、顧客データが含まれている可能性があります。 すべての SFT 行と DPO 行に対してシークレット/PII スキャンを 実行し、一致箇所を伏せ字にしてください。 伏せ字後に機密フィールドが残っている場合、変換は フェイルクローズします(その行は生の内容のまま出荷されず、 破棄されます)。シークレットを決してコミットしないでください。
- 評価用ゴールデンは、トレーニングデータに
決して漏れてはいけません。
すべての
eval/goldens.jsonlの ID を、 変換されたすべての SFT セットと DPO セットから除外してください。 ゴールデンとしても存在するトレースは、 後でチェックポイントが採点されるまさにその項目で トレーニングすることになり、それ以降のすべての 評価実行を気づかないうちに水増ししてしまいます。 - 新しく変換された行の中だけでなく、
トレーニングセットに対しても重複排除
してください — 完全一致または
埋め込み類似度による方法で、
dataset-curationの重複排除 メソッドフィールドに一致させ、 このバッチがマージされる前に 既存のトレーニングデータに対して実行します。 - 来歴はデータセットカードに記載します。
変換されたすべての行は、その
ソース
run_idとtrace_idまで たどれなければなりません —dataset-curationの来歴フィールドは、 まさにこのtrace-to-training-data出力へのリンクをチェックします。 たどれるソースのない行は、 マージする準備ができていません。
関連スキル
eval-harness-first— このスキルが 変換する採点済みトレースを生成します。 判定や報酬のないトレースはまだ 変換できないため、変換の前に そこへ戻してください。dataset-curation— このスキルの来歴 データが供給するターゲットフォーマットと データセットカードを所有します。 変換された行は、そのフォーマット選択 テーブルのフィールド名に正確に一致しなければならず、 近似ではいけません。preference-optimization— このスキルが構築する DPO ペアを消費し、 上記で参照されている完全な μ−2σ 棄却選択 の計算式を所有します。
JSONL から JSONL への変換の実例
— 採点済みトレースから SFT 行へ、トレース
ペアから DPO ペアへ、修正から
SFT 行へ、棄却サンプリングの
ループ、そしてゴールデンホールドアウトの
チェック — は
references/conversion-recipes.md にあります。