今日のポイント
- ChatGPT — 攻撃者はこの経路でサンドボックス制限のないiframeを作り、許可されたYouTube oEmbedエンドポイントを使ってChatGPT自身のオリジンでJavaScriptを実行できます。
- Prospero — ProsperoはWindows、macOS、Linuxに対応し、ローカルまたは遠隔モデル、サブエージェント、MCP、デスクトップ操作、skillsを提供します。
- QwenPU — QwenPUは計算そのものをモデル内へ移しました。
咸話咸説のデイリーAIシチュー、Robin がお届けします。今日はChatGPTのHTMLプレビュー攻撃から始め、コーディングエージェントの仕事の組み立て方、ローカル推論のトレードオフ、そして大きなモデルの中で小さなモデルを動かす実験を見ていきます。
ChatGPTのプレビューサンドボックスを、1通のメッセージがすり抜けた
プレビュー画面の中に閉じ込めるはずのHTMLが、どうしてアカウントの非公開データに触れられるのでしょうか。Parameter LabsはChatGPTの攻撃連鎖として、HTMLプレビューのサンドボックス、MathLiveの仮想キーボード通信、CSPが許可したYouTube oEmbedを説明しました。
問題は、メッセージがウィンドウの境界を越えたあとに起きました。研究者は、MathLiveの仮想キーボードがiframeからのpostMessageを受け付け、親ページが届いた内容をinnerHTMLで挿入していることを見つけました。攻撃者はこの経路でサンドボックス制限のないiframeを作り、許可されたYouTube oEmbedエンドポイントを使ってChatGPT自身のオリジンでJavaScriptを実行できます。信頼されていない内容を隔離する境界が、こうして迂回されました。
研究者によれば、修正前はログイン済みのユーザーが悪意あるChatGPT共有リンクを開くと、攻撃連鎖が発動する可能性がありました。スクリプトはAPIから非公開データを取得し、画像参照で外部へ送信し、ユーザーに代わって操作できます。OpenAIは問題を閉じ、5,000ドルのバグ報奨金を支払いました。開発者が見るべき教訓は、サンドボックスの外側にあるメッセージ処理です。プレビューを隔離するだけでは足りず、親ページがメッセージをどう受け取るかが境界の実効性を決めます。出典:Simon Willison
Prosperoがコーディングエージェントにネイティブなデスクトップを与える
プレビュー画面から開発画面へ移ると、nullprogramのProsperoは別のコーディングエージェント体験を試しています。C++とDear ImGuiでネイティブGUIを構築し、コードを生成・検査・編集するモデル周辺のツール層をデスクトップアプリに移しました。
ProsperoはWindows、macOS、Linuxに対応し、ローカルまたは遠隔モデル、サブエージェント、MCP、デスクトップ操作、skillsを提供します。開発者がエージェントと働くとき、タスクをどう渡し、出力をどう確認し、次の操作をどう始めるかという問題に向き合う設計です。
議論は具体的な画面操作にも及びます。エージェントの出力をクリックして対応ファイルをサイドバーで開きたい開発者もいれば、非同期の一括回答や、より豊かなプロンプト編成を求める人もいます。一般的なWeb技術スタックよりメモリ使用量が約2桁少ないという報告もありますが、入手できる材料には正式なベンチマークがありません。今は性能の主張を確定するより、ネイティブ画面がエージェント操作を整理しやすくするかを見る段階です。出典:nullprogram
DeepSeek Harnessの試作がリポジトリの依頼を独立セッションへ分配する
画面は問題の一部にすぎません。複数のエージェントは、同じコードベースをどう扱うのでしょうか。DeepSeek Harnessは「Exploring Super-agent Design: Towards a More Autonomous Agent System」を公開し、設計の一部をdsh-superagent-prototypeリポジトリで実行可能な形にしました。
この研究試作は1つのGitHubリポジトリを中心に、router-workerパターンを使います。ルーターが、GitHubまたは任意のFeishuから来た許可済みの依頼を並列処理可能な作業項目へ変換し、それぞれを独立したエージェントセッションに割り当てます。入口が依頼を受け、ルーターが分割・分配し、各ワーカーが処理する流れを、開発者が実際に観察できます。
プロジェクトはMITライセンスで、正式なDeepSeek製品ではなく設計検証用の試作です。公開版はリリース向けに調整され、内部実装とは異なります。記事にあるアイデアの一部も将来の方向性です。1つのリポジトリで複数セッションを協調させ、エージェントが自発的に修正案を出す動きを試せる、実行可能なサンプルとして価値があります。出典:Reddit r/LocalLLaMA
tandem.cppはよく使うエキスパートをGPUに残す
エージェントの次は、モデルをローカルで動かす方法です。tandem.cppは単一ユーザーのデコード向けに作られた、独立したllama.cppパッチです。頻繁に使うMixture-of-Experts(MoE)のエキスパートをGPUに残し、残りをシステムメモリへ移してCPUと協調計算します。ggml-orgとは無関係のプロジェクトです。
MoEモデルはトークンごとに一部のエキスパートだけを有効にしますが、候補となる全エキスパートの重みはどこかに置く必要があります。tandem.cppはVRAMに収まりきらないモデルを対象に、エキスパートの配置でデコード速度を改善します。作者がi5-12400F、64GB DDR4、RTX 4090で測ったところ、IQ3_SとMTPを使うQwen3.8-Flash-Nextの貪欲デコードはllama.cppの29.8から97.3トークン毎秒へ、約3.3倍になりました。gpt-oss-120bは27.8から51.5になっています。
これは限られた民生ハードウェアでの自己申告値で、現在の実装もQwen3.8向けに最適化されています。VRAMに全エキスパートを置けないとき、どれをGPUに残し、どれをCPUで計算するかを考える具体的な方法です。向上幅はモデル、量子化方式、マシン構成ごとに再測定する必要があります。出典:Reddit r/LocalLLaMA
BetelgeuseはSSDもエキスパートのスケジューリングに参加させる
システムメモリまで足りない場合、重みはどこへ置くのでしょうか。Redditユーザーの/u/zyxcissは、llama.cppベースのBetelgeuseブランチで、GSQ-RCO-IQ2_XS量子化版の68GB Qwen 3.8 Flash Nextを動かしたと述べています。環境はRTX 3060 12GB、シングルチャネル16GB DDR4、MemoryMax=12GのCachyOS/Arch Linuxです。
作者の報告では、エキスパートを削らず、初回デコードは毎秒16.80トークン、持続速度は22.03、局所的なピークは48でした。元資料は実行回数、ウォームアップ、ワークロード条件を分けていないため、初回値と持続値を管理された冷間・温間比較とは扱えません。方式は密な層などを約3.2GBのVRAMに常駐させ、エキスパートスロット、RAMキャッシュ、io_uringページャで重みを調整し、物理SSDの読み取りを1トークンあたり12.43MiBまで減らします。
作者は、28,080件のルーティング記録と576個の生成トークンが未変更版とバイト単位で一致したとも述べています。小さなVRAMとメモリで、選ばれたエキスパートをすべて残しながら、VRAM、RAM、NVMeの間で重みを運ぶ実験です。一方、専用エキスパートローダーが必要で、縮小されたファイルは標準のllama.cpp、Ollama、LM Studioでは直接使えません。完全な方法説明や独立再現のない、作者による報告である点にも注意が必要です。出典:Reddit r/LocalLLaMA
Basaltは速度向上の代償を測る
前の2本は、エキスパートをどこに置き、どう運ぶかの話でした。Basaltの開発者は問題を出力側へ移します。転送を減らすためにエキスパートの選択を変えると、品質にどれだけ代償が出るのでしょうか。RTX 5090、RTX 5060 Ti、128GB DDR5の環境でQwen 3.8 Flash Nextを使い、正確な量子化とルーティングバイアス、末尾エキスパートのスキップを比較しました。
ルーティングバイアスはGPUに常駐するエキスパートを優先し、末尾スキップはVRAMにない低順位のエキスパートを飛ばします。どちらも転送を減らしますが、本来計算に参加するエキスパートを変えます。RTX 5090だけを使い、エキスパートキャッシュを5GBに制限して小容量VRAMを模した試験では、IQ3_Sの散文スループットが毎秒192から299トークンに上がる一方、梯子タスクのスコアは5.2点、事実正確率は2.3ポイント下がりました。
さらに強い設定では、Q8_0の事実正確率が38.1%から2.7%へ落ち、支離滅裂な回答やループも現れました。VRAMに余裕がある場合、NVFP4の速度は毎秒272から271トークンと、ほぼ変わりません。結果は構成と運用点に左右されます。実験は1つのハードウェアとモデルだけを対象にし、梯子タスクは1シード、事実タスクは3シード、速度は1回の冷間実行で測ったものです。Basaltは現在これらのスイッチを既定で無効にし、警告を表示します。スループットが上がったとき、選ばれたエキスパートと最終回答も変わっていないか。それがローカル推論で確認すべき点です。出典:Reddit r/LocalLLaMA
QwenPUは小さな言語モデルをQwenの重みに組み込む
最後の話は「モデルはどこで動くか」から「モデルの中で何を動かせるか」へ問いを変えます。開発者divagr18のQwenPUは、Gated DeltaNetの状態をメモリに使い、32ビットRISC-V CPUとベクトルユニットをQwen 3.5-4Bの重みに組み込み、Andrej Karpathyの26万パラメータのstories260Kを外側のモデル内で動かします。
小さなモデルは26万パラメータのCプログラムです。重みはQwen自身のメモリに置かれ、外部ツールを必要としません。行列積、softmax、アテンションを実行するNPUも外側のモデル重みに組み込まれ、3種類の実装はいずれもビット単位で正確です。CPU、メモリ、ベクトル演算をモデル内部に置き、別の言語モデルの計算を担わせる実験です。
今回参照した材料では、コードと重みは公開済みで、完全な技術記事は執筆中です。開発者は性能とサイズの改善も続けており、現時点のスナップショットにベンチマークはありません。速度やメモリ効率を確定する材料ではなく、「モデル内モデル」を再現できる研究例として見るのが妥当です。出典:Reddit r/LocalLLaMA
今日の話を合わせると、モデルの外側にも内側にも具体的な工学上の課題があります。HTMLプレビューはメッセージ境界を守り、コーディングエージェントは画面と作業分配を整理し、ローカル推論は重みの配置と出力の変化を確認しなければなりません。QwenPUは計算そのものをモデル内へ移しました。これが今日のデイリーAIシチューです。システムがどう動き、各方式がどんなトレードオフを生むのかを見てきました。
🎧 本エピソードはポッドキャストでも配信中:デイリーAIシチュー · 2026-11-02 を聴く。
