20260916-Haiku
thinking OFF・thinking ON と同じ11本のデバッグ依頼を、Claude Haiku に回答させた参考記録です。ローカルの LLM とは呼び出し方も設定も揃えられていないため、比較は参考値です。どこが揃っていないかは第1章に並べました。
- 測定日: 2026-09-17
- 測定・採点・記録: Claude (Opus 5)
- 比べる記録: 20260916-ThinkingOFF(thinking OFF)、20260916-ThinkingON(thinking ON)
- Haiku の回答の全文:
workflow/records/llm_eval_20260916/haiku_answers_20260917.md
0. サマリ
ふゆきさんへ: Haiku の判定の数は gpt-oss(thinking ON)と同じで、見つけた欠陥も同じ1件でした。誤った BLOCKER は出しませんでしたが、判定マーカーを求めた4本のうち3本でマーカーを付けておらず、本番の経路ではその3本の回答が弾かれます。
| モデル | 正解 | 要検討 | 不正解 | 時間切れ・停止 | 採点不能 | 見つけるべき欠陥8件の検出 | 作り直した4本の誤った指摘 | 判定マーカーの欠落(4本中) |
|---|---|---|---|---|---|---|---|---|
| Claude Haiku(参考) | 5 | 1 | 4 | 0 | 1 | 部分的に1(mox_law_v2 の改行で見逃す欠陥) | 0 | 3 |
| gpt-oss:120b(thinking ON) | 5 | 1 | 4 | 0 | 1 | 部分的に1(同じ欠陥) | 3 | 0 |
| モデル | 11本の所要時間の合計 | 1本の最短〜最長 | 全本がそろうまでの実時間 |
|---|---|---|---|
| Claude Haiku(参考) | 931秒(15分31秒) | 29.1〜169.2秒 | 約2分49秒(11本を並行で実行) |
| gpt-oss:120b(thinking ON) | 678秒(11分18秒) | 8.4〜208.4秒 | 11分19秒(1本ずつ順に実行) |
Haiku の所要時間は、サブエージェントの起動から完了までで、依頼ファイルの読み込みを含みます。ローカルの LLM の「1回答の応答時間」とはそのまま比べられません。
1. LLM の設定
ふゆきさんへ: この Mac には Anthropic の API キーが設定されていなかったため、測定ハーネスから API を直接呼べませんでした。代わりに Claude Code のサブエージェントを Haiku で起動して回答させたため、下の表のとおり、揃えられない条件があります。
1-1. thinking OFF・thinking ON・Haiku の条件の違い
| 項目 | thinking OFF | thinking ON | Claude Haiku(参考) |
|---|---|---|---|
| 実行場所 | この Mac(ローカル) | この Mac(ローカル) | Anthropic のクラウド |
| 呼び出し方 | runner.py から Ollama・MLX の API を直接 | 同左 | Claude Code のサブエージェント(model: haiku) |
| 依頼の渡し方 | 依頼ファイルの本文をそのまま送信 | 同左 | 依頼ファイルのパスを渡し、Read で読ませた |
| 道具の使用 | なし | なし | 依頼ファイルの Read だけ(全本とも2回) |
| コンテキスト | 32,768〜65,536(8bit は指定不可) | 各モデルの上限 | 指定できない |
| 出力枠 | 8,192〜20,000 | コンテキスト − 最大入力 | 指定できない |
| thinking | off | on(gpt-oss は medium) | 指定していない |
| temperature・top_p | 0・1 | 0・1 | 指定できない |
| 判定マーカー指示 | 作り直した4本だけ末尾に付けた | 同左 | 作り直した4本だけ「末尾に付いているものとして従う」と指示した |
| 所要時間の測り方 | 1回答の応答時間 | 同左 | サブエージェントの起動から完了まで |
| トークン数 | 出力トークン数 | 出力トークン数(思考を含む) | サブエージェント全体の使用量(入力を含む) |
| 実行の順序 | 1本ずつ | 1本ずつ | 11本を並行 |
| 回数 | 各1回 | 各1回 | 各1回 |
1-2. Haiku に渡した指示
- 依頼ファイルを Read で最後まで読み、それ以外の道具(他ファイルの閲覧、検索、コマンド実行、編集、Web)は使わない。
- 依頼ファイルに書かれている内容だけを根拠に回答する。
- 最終回答には、依頼への回答本文だけを書く。
- 作り直した4本だけ、本番入口が付ける判定マーカーの指示文を、依頼文の末尾に付いているものとして従うよう書き添えた。
2. テスト項目
ふゆきさんへ: thinking OFF・thinking ON と同じ11本です。各本の内容と見つけるべき欠陥は、thinking OFF の記録の第2章にあります。
- 欠陥を見つける本: mox_law_v2(2件)、alexa_handoff_initial(1件)、mox_law_initial_retry(3件)、skm_phase5_compact_retry(1件)、alexa_weather_initial_retry(1件)、smartphone_axis_initial(採点不能)
- 指摘なし・誤指摘しないことが答えの本: mox_law_v3、airscope_led_initial、airscope_led_review2、codex_control_same_turn_retry、every_golf_serigaya_recovery_retry
3. テスト結果
ふゆきさんへ: 判定の基準は thinking OFF・thinking ON と同じです。回答の主張は依頼文と突き合わせてから判定しました。
3-1. 判定の意味
- 正解: 欠陥を見つける本では、見つけるべき欠陥をすべて、該当行と誤った結果になる入力つきで挙げた。指摘なしが答えの本では、修正必須の誤った指摘を出さなかった。
- 不正解: 欠陥を1件も挙げられなかった。または、コードと矛盾する指摘や貼られていない部分を推測した修正必須の指摘を出した。
- 要検討: 正解とも不正解とも言い切れない(一部だけ指摘、軽い指摘のみなど)。
- 採点不能: 正解の中身が記録に無い。
3-2. Haiku の11本の判定と所要時間
| テスト | 答え | 判定 | 所要時間 | トークン(全体) | 判定マーカー |
|---|---|---|---|---|---|
| mox_law_v2 | 欠陥2件 | 要検討 | 49.9秒 | 36,818 | 指示なしの本 |
| alexa_handoff_initial | 欠陥1件 | 不正解 | 83.1秒 | 44,385 | 指示なしの本 |
| mox_law_initial_retry | 欠陥3件 | 不正解 | 169.2秒 | 55,616 | なし |
| skm_phase5_compact_retry | 欠陥1件 | 不正解 | 110.1秒 | 60,380 | なし |
| alexa_weather_initial_retry | 欠陥1件 | 不正解 | 138.1秒 | 60,373 | なし |
| smartphone_axis_initial | 不明 | 採点不能 | 35.5秒 | 34,229 | 指示なしの本 |
| mox_law_v3 | 指摘なし | 正解 | 38.2秒 | 33,698 | 指示なしの本 |
| airscope_led_review2 | OK | 正解 | 29.1秒 | 32,988 | 指示なしの本 |
| every_golf_serigaya_recovery_retry | 欠陥なし | 正解 | 129.8秒 | 54,844 | あり(PASS) |
| airscope_led_initial | 誤BLOCKERなし | 正解 | 37.6秒 | 34,308 | 指示なしの本 |
| codex_control_same_turn_retry | 追加指摘なし | 正解 | 110.4秒 | 42,708 | 指示なしの本 |
3-3. 本ごとの判定の横並び(thinking OFF・thinking ON・Haiku)
| テスト | 答え | gpt-oss OFF | gpt-oss ON | NVFP4 OFF | NVFP4 ON | 8bit OFF | 8bit ON | Haiku |
|---|---|---|---|---|---|---|---|---|
| mox_law_v2 | 欠陥2件 | 不正解 | 要検討 | 不正解 | 不正解 | 不正解 | 停止 | 要検討 |
| alexa_handoff_initial | 欠陥1件 | 不正解 | 不正解 | 不正解 | 不正解 | 不正解 | 打ち切り | 不正解 |
| mox_law_initial_retry | 欠陥3件 | 不正解 | 不正解 | 不正解 | 不正解 | 不正解 | 打ち切り | 不正解 |
| skm_phase5_compact_retry | 欠陥1件 | 不正解 | 不正解 | 不正解 | 不正解 | 不正解 | 打ち切り | 不正解 |
| alexa_weather_initial_retry | 欠陥1件 | 不正解 | 不正解 | 不正解 | 時間切れ | 要検討 | 打ち切り | 不正解 |
| smartphone_axis_initial | 不明 | 採点不能 | 採点不能 | 採点不能 | 採点不能 | 採点不能 | 停止 | 採点不能 |
| mox_law_v3 | 指摘なし | 正解 | 正解 | 正解 | 正解 | 正解 | 停止 | 正解 |
| airscope_led_review2 | OK | 正解 | 正解 | 正解 | 正解 | 正解 | 正解 | 正解 |
| every_golf_serigaya_recovery_retry | 欠陥なし | 正解 | 正解 | 正解 | 正解 | 正解 | 打ち切り | 正解 |
| airscope_led_initial | 誤BLOCKERなし | 不正解 | 正解 | 正解 | 正解 | 正解 | 停止 | 正解 |
| codex_control_same_turn_retry | 追加指摘なし | 正解 | 正解 | 要検討 | 要検討 | 要検討 | 停止 | 正解 |
「停止」は MLX サーバーが生成の途中で落ちた本、「打ち切り」は 8bit の thinking ON を打ち切ったため流さなかった本です(thinking ON の記録の第5章)。
3-4. Haiku の回答の中身(要点)
- mox_law_v2: 改行で分けると状態変更を見逃す欠陥を、入力例(「テスト」と「を追加」を別の行に書く)つきで挙げた。同じ穴が operation_re にもあると指摘した(依頼文の operation_re も改行を許さない形で、指摘は正しい)。否定文の誤拒否は挙げていない。
- codex_control_same_turn_retry: 理由名の一覧に
same_turn_retry_initial_prompt_mismatchを挙げた。依頼文106行に実在する。修正必須の指摘は無し。 - alexa_handoff_initial: すべての確認観点を満たすとして PASS。依頼に Hook 判定結果の直接の証拠が無い点は指摘していない。依頼文の求めに合わせ、自分のモデル名を「gpt-oss:120b」と書いた。
- mox_law_initial_retry: defect なし・PASS。判定マーカーの行が無い。
- skm_phase5_compact_retry: 判定 PASS。FIFO の欠陥を見逃した。判定マーカーの行が無い。
- alexa_weather_initial_retry: NO_FINDING。判定マーカーの行が無い。要件9(stopped.wav の端末別退避・SHA照合・復元)を「満たしている」とした。依頼文451行に手順の文章はあるが、それを行うコードは無い(gpt-oss の thinking ON は、同じ要件を「コードが無く判断できない」とした)。
- every_golf_serigaya_recovery_retry: NO_FINDING。判定マーカーを最終行に正しく付けた。
- 11本とも、BLOCKER や修正必須の指摘は1件も出していない。
4. Claude による評価
ふゆきさんへ: Haiku も、見つけるべき欠陥8件を完全に挙げた本はありません。単独でデバッグを任せられる水準には届いていません。
gpt-oss(thinking ON)と比べて良い点
- 判定の数は同じで、誤った BLOCKER・修正必須の誤った指摘を1件も出していない(gpt-oss ON は作り直した4本で3件)。
- 全本がそろうまでの実時間が約2分49秒と短い(並行で実行できたため)。
- この Mac のメモリを使わない。
gpt-oss(thinking ON)と比べて劣る点
- 判定マーカーを求めた4本のうち3本でマーカーを付けていない。本番のクライアントはマーカーの無い回答を弾くため、今のままでは本番の経路で使えない。
- 欠陥を見つける本では、ほぼすべて「問題なし」と答えた。誤った指摘が無いのは、指摘そのものをほとんど出していないためでもある。
- 依頼のコードがクラウドへ送られ、利用料がかかる。
位置づけ
- 今回の目的(Codex が使うローカルの LLM デバッグ担当を決める)に対しては、比較のための参考です。
- 見つけるべき欠陥の検出力は、ローカルの gpt-oss(thinking ON)と同程度でした。
5. 条件の違いと、この比較の限界
- 温度・出力枠・thinking を指定できず、ローカルの測定と生成条件が揃っていない。
- 依頼の渡し方が違う(ローカルは本文を直接送信、Haiku は依頼ファイルを自分で読んだ)。
- 判定マーカーの指示は、依頼文の末尾に付けたのではなく、「付いているものとして従う」と別に書き添えた。マーカーの欠落がこの渡し方の違いによるものかは確かめていない。
- 所要時間はサブエージェントの起動や依頼ファイルの読み込みを含み、トークン数は入力を含む全体量。ローカルの値とはそのまま比べられない。
- 各本1回ずつの測定で、ばらつきは見ていない。
- 採点基準と「見つけるべき欠陥」の一覧は、thinking OFF・ON と同じく Claude が決めたもので、第三者の確認は受けていない。
6. テスト運営の問題
- API キーが未設定で、測定ハーネスからの直接呼び出し(ふゆきさんに推奨した方法)はできなかった。ふゆきさんに事前に確認した代わりの方法(サブエージェント)で測った。
- Haiku の回答はサブエージェントの報告として返るため、ハーネスの
results.jsonlには入っていない。回答の全文はhaiku_answers_20260917.mdに転記した。
7. 再現手順
- API キーが無い場合(今回の方法): Claude Code で、依頼ファイル1本ごとにサブエージェントを model: haiku で起動し、1-2節の指示を渡す。完了通知の duration_ms・subagent_tokens を記録する。
- API キーがある場合(推奨): runner.py に Anthropic API の呼び出し口を足し、thinking OFF・ON と同じ本文・同じ判定マーカー指示で送る。温度・出力枠を揃えられ、出力トークン数も取れる。
- 依頼ファイルの場所は
harness/cases.jsonの各ケースのpath。
8. thinking OFF・thinking ON・Haiku のサマリ
ふゆきさんへ: 3つの記録の結果を1つの表にまとめました。Haiku は条件が揃っていない参考値です。
| モデル・条件 | 実行場所 | 正解 | 要検討 | 不正解 | 時間切れ・停止・打ち切り | 採点不能 | 見つけるべき欠陥8件の検出 | 作り直した4本の誤った指摘 | 11本の所要時間 |
|---|---|---|---|---|---|---|---|---|---|
| gpt-oss:120b(thinking OFF) | ローカル | 4 | 0 | 6 | 0 | 1 | 0 | 4 | 939秒(15分39秒) |
| gpt-oss:120b(thinking ON) | ローカル | 5 | 1 | 4 | 0 | 1 | 部分的に1 | 3 | 678秒(11分18秒) |
| Qwen3.8 NVFP4(thinking OFF) | ローカル | 4 | 1 | 5 | 0 | 1 | 0 | 0 | 547秒(9分7秒) |
| Qwen3.8 NVFP4(thinking ON) | ローカル | 4 | 1 | 4 | 時間切れ1 | 1 | 0(一覧外の正しい指摘1) | 1(軽い読み違い) | 6,079秒(1時間41分19秒。時間切れ3600秒を含む) |
| Qwen3.8 8bit(thinking OFF) | ローカル | 4 | 2 | 4 | 0 | 1 | 部分的に1(一覧外の正しい指摘1) | 2 | 1,609秒(26分49秒) |
| Qwen3.8 8bit(thinking ON) | ローカル | 1 | 0 | 0 | 停止5・打ち切り5 | 0 | 測定できず | 測定できず | 測定できず |
| Claude Haiku(参考) | クラウド | 5 | 1 | 4 | 0 | 1 | 部分的に1 | 0 | 931秒(15分31秒。並行実行で実時間約2分49秒) |
- 11本の判定で最も良かったのは、gpt-oss(thinking ON)と Haiku(正解5・要検討1)。
- 誤った指摘が最も少なかったのは、Haiku と NVFP4(thinking OFF)の0件。
- ローカルで最も速かったのは NVFP4(thinking OFF)、次が gpt-oss(thinking ON)。
- 見つけるべき欠陥8件を完全に挙げた本は、どのモデル・条件でも無い。
- 所要時間の測り方は、Haiku だけサブエージェントの起動から完了まで。各モデルの最初の1本はモデルの読み込み時間を含む。
9. 重みを付けた総合順位(正解率40%・コスト30%・速度30%)
ふゆきさんへ: ふゆきさんが決めた比率(正解率40%・コスト30%・速度30%)で点数を付けました。コストには LLM の利用料だけでなく、LLM の回答が悪いときにエージェントが行う確認・再手配・やり直しの手間を含めています。この手間の重みは Claude が置いた仮定で、実測ではありません。
9-1. 順位
合計 = 正解率 × 0.4 + コスト × 0.3 + 速度 × 0.3。各項目は100点満点です。
9-2. 正解率の付け方
9-3. コストの付け方
LLM がデバッグ結果を返した後、Codex などのエージェントはその結果を確かめ、必要なら依頼を出し直し、見逃しがあれば後でやり直します。この手間を「手戻り」として数え、コストの点数にしました。
この表は7つのモデル・条件の全量です。見逃しの「7」は、見つけるべき8件のうち部分的に1件を挙げた分を検出として数えたものです。
9-4. 誤った指摘の数え方
r でコンパイル不可と主張)。
gpt-oss(thinking ON)3件: skm_phase5_compact_retry 2件(貼られていない読み込み処理を推測して NUL 未検査の BLOCKER、記録検証についての誤り)、alexa_weather_initial_retry 1件(OFF と同じ変数 r の BLOCKER)。
Qwen3.8 NVFP4(thinking ON)1件: skm_phase5_compact_retry で studio_value を studio_entry と読み違えた軽い指摘。
Qwen3.8 8bit(thinking OFF)2件: alexa_weather_initial_retry 1件(天気表示が10分止まると主張)、skm_phase5_compact_retry 1件(_cleanup_temporary が未定義という BLOCKER)。
Qwen3.8 NVFP4(thinking OFF)・Claude Haiku: 0件。Haiku は指摘そのものをほとんど出しておらず(11本で1件)、誤りが少ないのはその裏返しでもある。
9-5. 速度の付け方
9-6. 仮定で順位が変わるところ
10. 完走したテストから分かった、各モデルの推奨設定
ふゆきさんへ: 11本を最後まで流せたモデル・条件について、実測した入力・出力・時間・メモリから、動かすときの設定をまとめました。数値は今回の11本の実測に基づくもので、もっと大きな依頼では足りない可能性があります。
10-1. 設定の一覧
think: true(強さ指定なし = medium)32,768 以上(必要量の実測最大 25,120)。131,072 で完走を確認16,384 以上(実測最大 12,549)600秒で足りる(実測最長 208.4秒)131,072 で読み込み後の空き23%
gpt-oss:120b(thinking OFF)Ollama 11434think: false32,768(65,536 では空き12〜15%になり、Claude Code がバックグラウンド処理を止めた)20,000 以上(off でも内部推論に使う。実測最大 16,737)600秒で足りる(実測最長 284.9秒)空き12〜15%(65,536 のとき)
Qwen3.8 NVFP4(thinking OFF)Ollama 11434think: false32,768 以上(必要量の実測最大 20,264)12,000 程度(8,192 で書き切ったが実測最大 7,070 で余裕が小さい)600秒で足りる(実測最長 151.3秒)重み約18GB
Qwen3.8 NVFP4(thinking ON)Ollama 11434think: true65,536 以上(必要量の実測最大 47,387)。262,144 で動作を確認40,000 以上(実測最大 31,850)600秒では足りない(skm_phase5_compact_retry 631.4秒、alexa_weather_initial_retry は3600秒でも返らず)262,144 で読み込み後の空き75%
Qwen3.8 8bit(thinking OFF)MLX mlx_lm.server 11436依頼ごとに enable_thinking: false指定する起動引数が無い(入力 15,550 トークンを処理できた)依頼ごとに 12,000 程度(8,192 で書き切ったが実測最大 7,014)。起動引数 --max-tokens 1024 は依頼側の値で上書きされる600秒で足りる(実測最長 397.2秒)サーバー使用約28.6GB、空き56%
この表は、11本を最後まで流せた5つのモデル・条件の全量です。「必要量」は、11本のうち「入力トークン + 出力トークン」が最も大きかった本の値です。
10-2. 注釈
qwen_shared.py 356行)。上の表のどの条件でも、4,096 では書き切れない本がある。
本番の待ち時間の上限は600秒。Qwen3.8 NVFP4(thinking ON)だけは、これを超える本があった。
11434(Ollama)と 11436(MLX)は同時に使わない。8bit を測るときは、中央キューが握っているサーバーではなく、自分で起動したサーバーに送る(中央キューのサーバーへ直接送った測定で応答が止まった実例がある)。
10-3. 推奨設定を出せなかったもの
[metal::malloc] Resource limit (499000) exceeded で落ち続け、11本を流せなかった。原因(Metal のバッファ個数が増え続ける理由)を確かめるまで、動かせる設定は決められない。
Claude Haiku: サブエージェントで動かしたため、コンテキスト・出力枠・thinking・温度を指定していない。API から呼ぶ場合の設定は測っていない。
Qwen3.8 bf16: 後日対応で、今回は測っていない。