ln-840-benchmark-compare について
Claude Codeで標準ツールのみの場合とhex-line利用時を比較するA/Bベンチマーク用スキルです。期待差分で結果を検証し、起動状況、正確性、時間、コスト、トークンを報告します。
主な機能
- 01シナリオ別A/B実行
- 02差分に基づく正確性検証
- 03実行ごとの分離ワークツリー
- 04起動状況と利用指標の集計
- 05Markdownと機械可読レポート
活用シーン
- 01hex-lineの有無でClaude Codeを比較
- 02期待差分に対するシナリオ結果の確認
- 03時間、コスト、トークンの変化を確認
MCP 対応
hex-line MCPサーバーを設定したClaudeセッションと、標準ツールのみのセッションを比較します。必要なログと差分成果物を出力できる場合、3つ目のMCP互換セッションも追加できます。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ levnikolaevich/ claude-code-skills --skill ln-840-benchmark-compareインストール後、Claude Code で/ln-840-benchmark-compareを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/benchmark_worker_runtime_contract.mdcoordinator_summary_contract.mdexpectations.jsongoals.mdmcp-bench.jsonmonitor_integration_pattern.mdreferences/scripts/benchmark-worker-runtime/cli.mjsreferences/scripts/benchmark-worker-runtime/lib/guards.mjsphases.mjsstore.mjsreferences/scripts/coordinator-runtime/lib/artifacts.mjscli-helpers.mjscore.mjsloop-health.mjsruntime-constants.mjsschemas.mjsvalidate.mjsworker-guards.mjsworker-runtime.mjsscripts/extract-scenarios.mjsparse-results.mjsrun-benchmark.sh詳細
パス: ファイルパス(
references/)は、このスキルのディレクトリを基準とします。
ベンチマーク比較
タイプ: L3 ワーカー カテゴリ: 8XX 最適化 -> 840 ベンチマーク
Claude Code でクリーンな A/B ベンチマークを実行します。1つは組み込みツールのみのセッション、もう1つは hex-line を使用するセッションです。このベンチマークはシナリオベースで、差分検証、マニフェスト駆動、実行時データに基づいています。アクティベーション、正確性、所要時間、コスト、トークン数を測定します。現在のランナーは、この内部 A/B に意図的に範囲を限定しています。このベンチマーク単独では、外部の代替手段と比較して最良であることは証明できません。
入力 / 出力
| 方向 | 内容 |
|---|---|
| 入力 | mcp/hex-line-mcp/ を含むリポジトリのチェックアウト、任意の references/goals.md、任意の references/expectations.json |
| 出力 | plugins/optimization-suite/skills/ln-840-benchmark-compare/results/{date}-comparison.md に保存される比較レポートと、機械可読なベンチマーク要約アーティファクト |
前提条件
claude --versionが成功するgitが成功するmcp/hex-line-mcp/server.mjsが存在するmcp/hex-line-mcp/hook.mjsが存在するplugins/optimization-suite/skills/ln-840-benchmark-compare/references/goals.mdが存在するplugins/optimization-suite/skills/ln-840-benchmark-compare/references/expectations.jsonが存在するplugins/optimization-suite/skills/ln-840-benchmark-compare/references/mcp-bench.jsonが存在する
クイック実行
bash plugins/optimization-suite/skills/ln-840-benchmark-compare/scripts/run-benchmark.sh \
[plugins/optimization-suite/skills/ln-840-benchmark-compare/references/goals.md] \
[plugins/optimization-suite/skills/ln-840-benchmark-compare/references/expectations.json]
追加セッションプロファイル(任意):
EXTRA_SESSION_ID=other-mcp \
EXTRA_SESSION_LABEL="Other MCP" \
EXTRA_MCP_CONFIG=/abs/path/to/other-mcp.json \
EXTRA_SETTINGS='{"disableAllHooks":true}' \
bash plugins/optimization-suite/skills/ln-840-benchmark-compare/scripts/run-benchmark.sh
モニターとの統合(Claude Code 2.1.98+)
必ず読んでください: references/monitor_integration_pattern.md を読み込みます
ベンチマークの進捗をストリーミングします:
Monitor(command="bash plugins/optimization-suite/skills/ln-840-benchmark-compare/scripts/run-benchmark.sh 2>&1 | grep --line-buffered -E 'scenario|PASS|FAIL|error|session'", timeout_ms=3600000, description="benchmark run")
フォールバック:Bash(run_in_background=true)。
ランナーが処理する内容:
- 構文の事前チェック
- SessionStart の事前チェック
goals.mdからのシナリオ抽出- シナリオ/セッションごとに分離されたワークツリー
- シナリオごとの差分
- 最終比較レポート
現在の範囲:
- 組み込み Claude セッション
- Claude と
hex-lineの組み合わせ - 環境変数
EXTRA_SESSION_*を介した、任意の3つ目の Claude 互換セッションプロファイル
外部ベースラインに関する注意:
- 同じ
goals.mdとexpectations.jsonを使用します - 外部ツールに合わせてシナリオを書き換えないでください
- 内部 A/B のみを根拠に「最高のツール」と主張しないでください
- 3つ目の任意セッションプロファイルが有効なのは、同じ
stream-jsonログ形式と差分アーティファクトを出力できる場合に限ります
ワークフロー
フェーズ 1:標準スイートを定義する
このスキルが管理する標準ペアを1組使用します:
plugins/optimization-suite/skills/ln-840-benchmark-compare/references/goals.mdplugins/optimization-suite/skills/ln-840-benchmark-compare/references/expectations.json
ルール:
- スイートは、一般的なエンジニアリングシナリオをバランスよく組み合わせたものでなければなりません。
hex-lineに有利になるようスイートを設計しないでください。goals.mdのすべてのシナリオに、expectations.jsonの対応するエントリーが必要です。- 正確性の基準には
expectations.jsonを使用します。 - 今後、外部ベースラインを使用する場合も、同じペアを変更せずに再利用してください。
シナリオごとにサポートされる期待値フィールド:
| フィールド | 意味 |
|---|---|
id | 結果ファイル名に使用されるシナリオ識別子 |
expectedChangedFiles | 変更が必要なファイル |
forbiddenChangedFiles | 変更してはならないファイル |
requiredDiffPatterns | 保存された差分に含まれている必要がある正規表現パターン |
forbiddenDiffPatterns | 差分に含まれてはならない正規表現パターン |
requiredResultPatterns | 最終的なアシスタントの結果テキストに含まれている必要がある正規表現パターン |
requiredCommands | 少なくとも1つの Bash コマンドに一致する必要がある正規表現パターン |
exactChangedFiles | true の場合、追加の変更ファイルは許可されません |
フェーズ 2:事前チェック
ランナーは以下に合格する必要があります。
node --check server.mjsnode --check hook.mjsnode --check extract-scenarios.mjsnode --check parse-results.mjshook.mjsによる SessionStart のスモークチェック
事前チェックに失敗した場合、ベンチマークは無効となり、シナリオを実行する前に停止する必要があります。
フェーズ 3:シナリオごとの実行
goals.md にある各 ## シナリオについて、次を行います。
- 独立したプロンプトファイルを生成する
- 同じコミットから、クリーンなワークツリーを 2 つ作成する
- 組み込みの Claude セッションを実行する
- hex-line の Claude セッションを実行する
.jsonlログと.diff.txtの成果物を保存する- 両方のワークツリーを削除する
組み込みセッション:
- MCP なし
- フックは無効
Hex-line セッション:
server.mjsを指す解決済み MCP 設定outputStyle: "hex-line"hook.mjsを介したPreToolUseフック
フェーズ 4:結果の解析
parse-results.mjs は、各シナリオを両方のセッションについて評価します。
シナリオの合格には、以下が必要です。
- 有効な実行
- セッションが正常に完了している
- 変更されたファイルが期待と一致している
- diff のパターンが期待と一致している
- 結果テキストのパターンが期待と一致している
- 必須コマンドが実際に実行されている
フェーズ 5:レポートの確認
最終レポートには、以下のセクションがあります。
- シナリオの結果
- 有効化
- 時間
- コスト
- トークン
- ツールの合計
- 有効性
解釈ルール:
invalid runは、製品のパフォーマンスではなく、セットアップ/導入の失敗を意味します- シナリオの
FAILは、正確性の契約が満たされなかったことを意味します hex-lineでは、有効化は製品品質の一部であり、外部ノイズではありません- このレポートは内部 A/B 評価には必要ですが、最良の代替手段を主張するには不十分です
レポートの契約
plugins/optimization-suite/skills/ln-840-benchmark-compare/results/{date}-comparison.md では、以下に回答する必要があります。
- 各シナリオは正しく完了しましたか?
hex-lineは、探索のずれなく適切に有効化されましたか?- 実時間、API 時間、コスト、出力トークン、ツール呼び出しの合計はどのように変化しましたか?
- 実行は有効でしたか?
シナリオの正確性を考慮せずに、時間やコストの生データだけで判断しないでください。
外部ベースラインのポリシー
- このスキルが管理するのは標準スイートであり、普遍的なリーダーボードではありません。
- メンテナーが
hex-lineと外部の代替手段を比較する場合、同じgoals.md、expectations.json、および diff ベースの評価ルールを再利用する必要があります。 - 外部での実行には異なるハーネスを使用できますが、同じタスクのテキスト、開始コミット、正確性の契約を維持する必要があります。
- 外部ツールが契約の形式を満たせない場合は、それに合わせてスイートを書き換えるのではなく、ハーネスの制約として記録してください。
- 組み込みの Claude と
hex-lineの比較のみを対象とするレポートでは、その旨を明記する必要があります。
ランタイム契約
必ず読むこと: Load references/benchmark_worker_runtime_contract.md, references/coordinator_summary_contract.md
ランタイム CLI:
node references/scripts/benchmark-worker-runtime/cli.mjs start --skill ln-840-benchmark-compare --identifier suite-default --manifest-file <file>
node references/scripts/benchmark-worker-runtime/cli.mjs checkpoint --skill ln-840-benchmark-compare --identifier suite-default --phase PHASE_0_CONFIG --payload '{...}'
node references/scripts/benchmark-worker-runtime/cli.mjs record-summary --skill ln-840-benchmark-compare --identifier suite-default --payload '{...}'
node references/scripts/benchmark-worker-runtime/cli.mjs complete --skill ln-840-benchmark-compare --identifier suite-default
必須の状態フィールド:
report_readysummary_recordedfinal_resultself_check_passed
ドメインのチェックポイント:
PHASE_0_CONFIGPHASE_1_PREFLIGHTPHASE_2_LOAD_SUITEPHASE_3_RUN_SCENARIOSPHASE_4_PARSE_RESULTSPHASE_5_WRITE_REPORTPHASE_6_WRITE_SUMMARYPHASE_7_SELF_CHECK
ガードルール:
- 現在のフェーズをチェックポイントに記録せずに先へ進まないでください
benchmark-workerのサマリーが記録される前に完了しないでください- セルフチェックに合格する前に完了しないでください
ランタイムの調整
- 管理対象の実行では、決定的な
runIdと正確なsummaryArtifactPathを渡せます。 - スタンドアロンでの実行もサポートされています。両方が省略された場合、ランタイムはスタンドアロン実行を作成し、
benchmark-workerファミリーのデフォルトのサマリー成果物パスに書き込みます。
実行時サマリーアーティファクト
必ずお読みください: references/coordinator_summary_contract.md を読み込んでください
比較レポートの書き込み後、benchmark-worker サマリーエンベロープを出力してください。
管理モード:
- 正確な
summaryArtifactPathに書き込んでください
スタンドアロンモード:
.hex-skills/runtime-artifacts/runs/{run_id}/benchmark-worker/ln-840-benchmark-compare--{identifier}.jsonに書き込んでください
推奨ペイロード:
scenarios_totalscenarios_passedscenarios_failedactivation_validvalidity_verdictreport_pathwarningsmetrics
既知の落とし穴
| 落とし穴 | 解決策 |
|---|---|
| hex-line の実行に SessionStart がない | 事前チェックに失敗した時点で停止します |
エージェントが hex-line を使う前に ToolSearch に逸れる | アクティベーションの問題として扱い、レポートに記録します |
| 前回のクラッシュでワークツリーが残っている | 新しいワークツリーを追加する前に削除します |
| 差分アーティファクトがない | シナリオの正しさを失敗として扱います |
| 単純なシナリオで組み込み機能が有利になる | よくあるケースならスイートに残します。都合のよいものだけを選ぶより、正直さを優先します |
| 外部比較でシナリオが編集されている、または期待値が緩和されている | 比較を無効として扱います |
完了の定義
-
goals.mdで標準となるバランスの取れたスイートが定義されている -
expectations.jsonでシナリオの正しさがすべて記述されている - ランナーが構文と SessionStart の事前チェックに合格する
- 各シナリオが、同じコミットから作成したクリーンなワークツリー 2 つで実行される
- パーサーがログと差分からアクティベーションとシナリオの正しさを評価する
- 最終レポートが
plugins/optimization-suite/skills/ln-840-benchmark-compare/results/に保存されている -
benchmark-workerサマリーアーティファクトが、管理モードまたはスタンドアロンの実行時パスに書き込まれている - 一時ワークツリーが削除されている
- レポートに、内部 A/B 比較のみなのか、追加の外部ベースラインも含むのかが明記されている
バージョン: 2.0.0 最終更新日: 2026-03-24