LM Studio Bionicの安全性を調べた記事の最後に、私はこう予告しました。
BionicとCodex CLIを同じモデルで回して、ハーネスの差を見る
あれから1週間。Codex CLIのほうは、日常タスク編からずっと同じ21回のテストで、ローカルモデルやクラウドのLunaを測ってきました。残るはBionic側です。いよいよHyper-VのVMにBionicを入れて、ホストのQwenを使わせよう……としたところで、止まりました。
先に結論を書きます。
- Bionicはやめました。 VMからホストのモデルを使うには「LM Link」が必須で、これがLM Studioのサーバーとインターネットを経由する仕組みでした。完全ローカルではありません
- 代わりに、OSSのCline(Apache-2.0)で測りました。 VMからホストのLM Studioを直接叩けて、アカウントも外部サービスも要りません
- 同じQwen3.6 35B、同じ21回のテスト、同じ判定器で、合格はCodex CLIの10/21に対してClineは13/21。 中身の質(ルーブリック)も3.32から3.78に上がりました
- ただし、ハーネスで直らないものもあります。 ブログ下書きの「書き直しが止まらない」癖と、動画プロンプトの記法は、どちらのハーネスでも同じように落ちました
同じモデルでも、ハーネスを替えるだけで合格が3本動く。ハーネス編で「ハーネスの設計はファインチューニングと同じくらい大事」と書きましたが、今回はそれを、市販のハーネスの乗り換えで測った形です。
なぜBionicをやめたのか
Bionicで別の端末(今回ならホストのEVO-X2)のモデルを使うには、「LM Link」という機能を使います。Claude Codeに調べてもらうと、こういう仕組みでした。
- ホストとVMの両方で、LM Studioのアカウントにサインインする
- 端末どうしは、LM Studioのサーバー(LM Studio Hub)を経由して見つけ合う
- つながったあとの通信は、Tailscaleの暗号化された網に乗る。会話の中身はLM Studioのサーバーを通らない、と公式は説明しています
安全性の調査編でも「Tailscaleベースである以上、VM側にインターネット接続が必要になるはず」と書きましたが、それが確定した形です。暗号化されているとはいえ、手元の2台をつなぐためにアカウント登録と外部のサーバーが要る。私がやりたいのは「完全にローカルで閉じた箱の中で、エージェントのふるまいを観察する」ことなので、ここで気が進まなくなりました。
そこで思い出したのが、調査編で比較表に載せていたClineです。リポジトリはApache-2.0で、接続先のURLを自分で書けるので、VMからホストの:1234を直接叩けます。Codex CLIと同じつなぎ方で、アカウントも外部サービスも要りません。しかも、ちょうど9月24日に、デスクトップ版(Cline Desktop)のLinux版が出たところでした。
まず、結果をどうぞ


| Codex CLI 0.155.1 | Cline CLI 3.0.65 | |
|---|---|---|
| 合格(21回) | 10/21 | 13/21 |
| 中身の質(ルーブリック平均) | 3.32 | 3.78 |
| 判定項目の通過率 | 82% | 84% |
| 1タスクの中央値 | 95秒 | 123秒 |
| 21回の合計 | 91分 | 92分 |
| 25分の打ち切り | 1回 | 2回 |
条件は、ハーネス以外すべて揃えました。モデルはホストのLM StudioのQwen3.6 35B(コンテキスト64K、ROCm)で、ロード設定も同じ。題材・依頼文・判定器は日常タスク編からそのまま使っています。Codex CLIは9月20日、Clineは9月25〜26日に回しました。どちらもコマンドの承認なしで自律実行、25分で打ち切り、各タスク3回です。
Clineの21回は、Claude Codeがコマンドライン版(Cline CLI)で無人で回しました。デスクトップ版で1本ずつ手で回すのはさすがにしんどかったので、自動化を頼んだ形です。デスクトップ版でも4本を手で回したので、あとで比べます。
構成:外に出られない箱を作る

Codex CLIはOSの機能でコマンドを縛るサンドボックスを持っていますが、Clineは持っていません。エージェントが実行するコマンドは、Clineを動かしているユーザーの権限でそのまま動きます。そこで、隔離はVMの側で作りました。
- Cline専用のLinuxユーザー
clineを作る。 VMの普段のユーザーのホームには、OpenAIのAPIキー(前回までのLuna計測で使ったもの)やLM Studioのトークンが置いてあります。同じユーザーで動かすと、エージェントからそれに手が届く。専用ユーザーからは、そのホームを読めないようにしました clineユーザーの外向き通信を、ホストの:1234だけに絞る。 Linuxのファイアウォール(nftables)で、そのユーザーのプロセスだけを対象に、ホストのLM Studioとループバック以外を拒否しています。DNSも止めたので、名前を引いて外に出ることもできません- Cline専用のLM Studioトークンを発行する。 後から無効にできるように、ベンチ用とは別にしました
ユーザーの作成とファイアウォールの設定は、Claude Codeが用意したスクリプトを私がVMの端末で実行しました。システムのセキュリティ設定なので、ここは自分の手でやっています。Claude Codeが確かめたところ、clineユーザーからはホストのLM Studioに届き、GitHubにもDNSにも届かず、普段のユーザーのホームにあるAPIキーやトークンも読めませんでした。
Clineの落とし穴3つ
箱を作るのは順調でしたが、Cline側で3回つまずきました。
1. モデル一覧を、トークンなしで取りに行く。 ClineにLM StudioのURLとトークン(LM Studioが発行する合言葉。Clineの設定欄では「API Key」と呼んでいます)を入れても、モデル一覧が「HTTP 401」で出てきません。トークンは正しく、curlで同じURLを叩くと200が返る。Claude CodeがClineの中身を読んで原因を突き止めました。一覧を取る処理が、トークンを付けずにリクエストを送っていたのです。LM Studio側で認証を有効にしている限り、一覧は必ず401になり、手でモデル名を足しても保存されません。会話のリクエストにはトークンが付くので、壊れているのは一覧だけです。回避策として、Claude CodeがVMの中に小さな中継を置きました。 トークンの付いていないリクエストにだけトークンを付けて、ホストへ渡します
2. コマンドライン版が、入力の終わりを待って固まる。 Claude Codeが自動化のためにコマンドライン版を動かしたところ、10分間なにも起きませんでした。依頼文は引数で渡しているのに、標準入力の終わりまで待ち続けていたのが原因です。入力を閉じて起動すれば(< /dev/null)、25秒で終わりました
3. コマンドライン版の設定が、トークンの入力を必須にしている。 しかも、LM Studioプロバイダの接続先URLは変えられません。そこでClaude Codeは、仮のトークンを入れて中継で本物に差し替え、LM Studioの既定の場所(VMの127.0.0.1:1234)に中継をもう1つ置きました。本物のトークンは、コマンドライン版の設定ファイルには保存していません
もう1つ、デスクトップ版は利用統計の送信が既定でオンでした。外向き通信を絞っているので実際には外に出ていませんが、私が設定でオフにしました。
タスク別:伸びたところ、変わらないところ
D5(家計簿の分析と計画)とD6(会議メモ)が、1/3から3/3に。 差のほとんどはここです。
- D5:3回とも、削減額の表・7月のデータ欠損の扱い・計画の弱点の節を揃えました。Codex CLIでは、欠損月に触れなかった回と、計算スクリプトが動かなかった回で落ちていました。ただし1回は「サブスク6件の解約」を表の1行にまとめて、判定器の「変更は3件まで」をすり抜けています。実際には8契約の変更なので、合格ではありますが条件の趣旨には反しています
- D6:3回とも、決定8件・アクション4件を1分前後で全部拾いました。Codex CLIが2回落とした「公開前に法務レビューを入れる」という決定を、Clineは3回とも拾っています
D2(ブログ下書き)は、どちらも全滅。落ち方も似ていました。

Clineの3回中2回は、「下書きを書く→字数を数える→足りない(または多い)→書き直す」のループから抜けられず、25分で打ち切られました。1回目は編集41回・コマンド42回。途中でファイルを消して一から書き直し、最後の原稿は見出しが二重になっていました。2回目は1,760字→422字→240字→2,020字と上下して、打ち切りの時点で原稿が残っていません。Codex CLIでも、同じモデルが同じループで打ち切りになっています。これはハーネスではなく、モデル側の癖と見ています。 完走した1回(98秒)は、です・ます調で字数も章立ても満たしましたが、依頼書の矛盾(総字数と各章600字)に触れず、未検証の数値の注記も落としました。
ちなみに、前回のLunaで話題にした「壊れた物差し」(字数を数える道具がバイト数を返すのに気づかない)は、Clineの21回では一度も出ませんでした。3回ともwc -mで正しく数えています。数え方は正しいのに、止まれない。落とし穴の種類が違います。
D3(動画プロンプト)も、どちらも0/3。 Clineは18項目中11〜12項目の通過で、Codex CLI(10〜15項目)と同じ水準です。台詞は3回とも一字一句正しく書けているのに、ガイドラインが求める言語タグ([Japanese])を3回とも付けない。冒頭の決まり文句や、各節の書式でも落ちました。ハーネス編で「型に流し込む」パイプラインを作ってようやく通った課題なので、市販のハーネスを替えるだけでは届きません。
D4(校正)は、3/3から2/3に。 通った2回は再現率0.65・適合率0.93で、Codex CLIとほぼ同じです。落ちた1回は、分類コードに「TYO」(TYPOの誤記)を使い、「2台」を「4台」に直す誤った修正案を出すなど、形式から崩れていました。
時間は、ほぼ同じ。 21回の合計は91分と92分。ただしClineはD2の打ち切り2回だけで52分使っていて、完走した回で比べると、Clineのほうがリクエストを多く使います。D3では、リクエスト数がCodex CLIの1.7倍、生成トークン数が2.1倍でした。
デスクトップ版でも回してみた
コマンドライン版での自動化の前後に、デスクトップ版で4本を手で回しました(D0は2回)。
| タスク | 結果 | 所要 | 何が起きたか |
|---|---|---|---|
| D0(1回目) | 不合格 | 80秒 | 作業フォルダを開き忘れて依頼を送ったため、ホームフォルダ全体を「このフォルダ」と読み、7タスク分のファイルを数えて「37個」と答えた |
| D0(2回目) | 合格 | 25秒 | フォルダを開いて送り直すと、3ファイルを正しく数えた |
| D2 | 不合格 | 約2分 | 字数(1,898字)、矛盾への気づき、要点はすべて満たし、落ちたのは文体(だ・である調が14か所)だけ。最後の返事が空で、画面上は途中で止まったように見えた |
| D5 | 合格 | 約2.5分 | 報告書の字数を最初にwc -c(バイト数)で測り、「バイト数ではなく文字数を確認します」と自分で気づいてwc -mで測り直した |
| D3 | 不合格 | 約4.5分 | 18項目中14項目を通過(コマンドライン版の3回は11〜12項目)。台詞に言語タグ[Japanese]を付け、ショットの時刻の書き方も正しかった。落ちたのは、Picture 2の定義行、冒頭の決まり文句、retentionの書式、本文の語数(232語、下限は250語) |
コマンドライン版の結果と、おおむね同じ傾向です。D2とD3は、手で回した1回のほうが判定項目を多く満たしましたが、どちらも不合格でした。1回ずつなので、デスクトップ版のほうが良いとまでは言えません。一番難しいD3でも大きな差が無かったので、残りのタスクを手で回すのはやめました。
ハーネスの差とは、何だったのか
同じモデルで合格が3本動いた理由を、Claudeは「Clineのほうが、依頼文の細部を最後まで拾う」と見ています。D6の法務レビュー、D5の欠損月、D1で選定理由を関心領域に結びつける書き方。どれも、Codex CLIでは3回中1〜2回こぼれていた細部です。システムプロンプトや、ツールの使わせ方の違いが効いていると思われますが、どの部分が効いたのかまでは切り分けていません。
一方で、Clineは「止まらない」側に振れやすい。コマンドの承認なしでツールを使い続け、D2ではリクエスト95回でコンテキストの上限(64K)に達しました。Codex CLIには、D2で「下書きを書かずに終える」回もありました。止まらずに粘るのは、細部を拾う強さと表裏かもしれません。実用では、打ち切り時間の設定が大事になります。
そして、D2のループとD3の記法は、どちらのハーネスでも直らない。ハーネスで伸びるのは「モデルが持っている力を、どれだけ取りこぼさずに使うか」までで、モデルが持っていない力は出てこない。当たり前といえば当たり前ですが、数字で見ると納得感があります。
人間がやったこと、Claude Codeに任せたこと
| 人間(私) | Claude Code |
|---|---|
| 「VMにBionicを入れてホストのQwenを使わせたい」という発案。LM Linkの外部依存を理由にBionicを見送り、Clineに切り替える判断 | Bionic・LM Link・Clineの調査、Cline DesktopとCLIの入手(公開されたハッシュ値で照合)とインストール |
| VMのメモリ設定、専用ユーザーの作成、外向き通信の制限スクリプトの実行、Cline専用トークンの発行と入力、利用統計のオフ | ファイアウォールのスクリプトの作成と確認、モデル一覧が出ない原因の特定(Clineの中身を読んだ)、認証の中継の作成 |
| デスクトップ版で4本を手で実行(D0は2回)、自動化の依頼、一番難しいD3での手作業との比べ直し | コマンドライン版用のハーネスの作成、21回の無人実行・回収・判定・採点、REPORT、この記事の下書きと図 |
| この記事のレビュー | VMのキーボードが効かなくなった件の原因特定と復旧 |
正直、気になっていること
- 各タスク3回です。 差の6本分(D5とD6で各+2、D4で-1、合計+3)は、回数を増やせば動く可能性があります
- 条件は完全には同じではありません。 Codex CLIはOSのサンドボックスの中、ClineはVMの専用ユーザーとファイアウォールの中で動いています。ClineはVM内の中継を経由しているので、リクエストのたびにわずかな遅れが乗ります
- 中身の質(ルーブリック)はClaudeの採点で、私は中身を確かめていません。 判定器とタスクを作ったのもClaudeです。このシリーズを通して同じ構造です
- Clineのどこが効いたのかは、切り分けていません。 システムプロンプト、ツールの定義、コンテキストの圧縮(Clineは既定で会話を要約して詰める)のどれが効いたのかは、まだ分かりません
- 調査編で予告した「Auto Reviewが実際にどれくらい自動承認するか」は、Bionicを使わない以上、保留です
- 余談:Hyper-VのVMで、キーボードが突然効かなくなる現象に何度も遭いました。 Claude Codeが切り分けたところ、キー入力はVMの仮想キーボードまで届いているのに、Linux側のドライバがそれを渡さなくなっていました。
sudo modprobe -r hyperv_keyboard && sudo modprobe hyperv_keyboardでドライバを読み込み直すと、VMを再起動せずに戻ります。同じ症状で困っている方はお試しください
まとめ
- VMからホストのモデルを使う構成では、BionicはLM Link(アカウント+外部サーバー+Tailscale)が必須。完全ローカルにこだわるなら、接続先を直接書けるClineが素直
- 同じQwen3.6 35B・同じ21回・同じ判定器で、合格はCodex CLI 10/21に対してCline 13/21、中身の質は3.32→3.78
- 伸びたのは細部の拾い方(D5・D6)。D2の書き直しループとD3の記法は、ハーネスを替えても直らない
- Clineはモデル一覧を認証なしで取りに行くため、認証を有効にしたLM Studioでは中継が要る。コマンドライン版は
< /dev/nullで起動する - ClineにはOSのサンドボックスが無いので、専用ユーザーと外向き通信の制限で箱を作るのが前提
次にやること
今回はQwen3.6 35Bだけで比べました。同じ評価セットで一番成績の良かったQwen3.8 Flash Next(IQ4_XS、Codex CLIで17/21)をClineで回したら、どこまで行くのか。ハーネスで+3本なら、ローカルでも20本に届くかもしれません。1タスク11分のモデルなので、時間はかかりますが。
モデルを替えても、ハーネスを替えても、評価セットと判定器はそのまま残してあります。170万円の片翼は、まだまだ測りがいがあります(笑

コメント