HN 日本語サマリー

← 一覧へ戻る
AI・機械学習

ハーネスこそが肝心

The Harness Is the Thing (scott-fryxell.github.io)

35 pointsby sfryxell14 コメント

要約

開発者の生産性を向上させるAIツールの進化について論じています。特に、LLM(大規模言語モデル)の能力を最大限に引き出すための「ハーネス」という概念が重要視されています。このハーネスは、開発者の期待とAIの能力を繋ぐインターフェースとして機能し、単一の開発者でも大規模チーム並みの成果を出せるように支援します。

全文翻訳

ハーネスこそが肝心 2026年8月25日 開発者としてキャリアを始めた頃、ムーアの法則はソフトウェアにも当てはまるというベテラン開発者の言葉を聞きました。その絶え間ない問題解決に関する議論こそが進歩の軌跡であり、J2EEやNetbeansの遅さ、テーブルベースのレイアウトやページ全体のリロードについての不満が、進歩の原動力となる日々の最適化であったことに気づくのに時間がかかりました。 この18ヶ月は、目覚ましい改善の連続でした。タブ補完からエージェントコーディングへ、そしてエージェントを管理するためのハーネスへと進化しました。生産性向上に驚嘆する段階から、このゲームに慣れ、最大限の効果を引き出すことに集中できるようになりました。新しい真実があります。単一の開発者プロジェクトでも、大規模開発チームと同等の品質と一貫性を実現できます。カスタムアプリケーションを開発すべきであり、経験豊富なエンジニアのオンボーディングに苦労する必要はありません。彼らがスタックを熟知していれば、あなたのプロジェクトにもすぐに貢献できるようになるでしょう。しかし何よりも、ハーネスこそが肝心であると学びました。私の期待とLLMの能力が出会う支点です。現在、私の環境は2つのサブスクリプション(Cursor、Claude)に支えられており、必要に応じてPiで補強できます。これら3つは私のスキルとAGENTS.mdを共有しています。3つのTUI(テキストユーザーインターフェース)を使用していますが、統一された体験が得られます。これにより、モデルは私にとってコモディティ化しました。ClaudeやCursorに、生産性向上のために必要な特別な魔法や体験はありません。今月末にCursorからCodexへの移行について、全く不安を感じていません。 コスト優位性 コモディティ化された時代において、私は多くの利用可能なモデルから素晴らしい結果を得ることができますが、リリース以来deepseek-v4-flash-0731を主に利用しています。Anthropic APIの予算を使ってFableを利用するのは稀なケースです。ほとんどのメンテナンスや簡単なタスクにはDeepseekをローカルで実行できます。しかし、複雑な機能や大規模なリファクタリング、多くの要素が絡む作業を模索する際には、最先端のモデルに手を伸ばします。最近、Can Bölük氏のprewalk2というテクニックについて学びました。これは、プランニング段階と最初のタスクに最先端モデルを使用し、パターンが確立されたら引き継ぐというものです。私はこれを、Building an Advanced Agentic Harnessの記事にあるプランナー/ワーカー/クリティックの分割と組み合わせました。単一のプロンプトで計画、実行、自己批評を行うと、目的が混同してしまうため、各役割を分離しました。これをスキルとして構築し、作業のどの段階でも引き継げるサポートとしてPi拡張機能を組み込みました。探索は、明示的なDAG(有向非巡回グラフ)タスクリストとして形式化された計画につながります。その後、ワーカーがDAGのノードを一つずつ実装することに集中します。完了したら、クリティックを呼び出して、実装されたものを簡略化し、疑問を投げかけます。この段階で十分なフィードバックがあれば、ワーカーフェーズが見直されることもあります。しかし、満足のいく結果が得られたら、クリティックはプロモーターに道を譲ります。これは、仕事が他者に適切に伝えられるまで完了しないという私のリマインダーです。私は、出荷して次に進みたいという自分の弱点を補強するためにプロモーターのステップを追加しました。これは、完了した作業を人々に知らせるためのリマインダーです。この段階ではFableの助けが必要ですが、プロモーションは微妙で簡単に失敗する可能性があり、誰もクリティックを好まないため、最先端モデルを通して行うことでより重みが増します。これにより、最も集中的なコンテキストでもFableの使用量が75%削減されました。これは健全に感じられ、AIソーク(AIに浸る)のようなものです。PiをDeepseekやFableの注入のために切り替えながら、2つの20ドルプランでクライアントの世話をし、自分のプロジェクトで着実に進歩することができます。 プロダクトハーネス接続 私のプロダクトは、写真を撮ってそれをベクターグラフィックに変換するのを簡単にするカメラアプリです。一つずつ処理します。解像度が低下し、画像が値のレイヤーと形状に単純化されます。コンテキストを保持し、詳細を削除して、再度描画できるようにします。それがこのアプリの設計目的です。印刷してその上に描画したり、Procreateにインポートしてレイヤー内で描画したりできます。この機能は、poster-driverを介してハーネスから利用可能です。ヘッドレスChromeで開き、ライブサイトを操作して、任意のグラフィックや分解されたビデオからポスターを生成します。これにより、アプリのスクリプト化がウェブページをロードするのと同じくらい簡単になります。以前は不格好な解決策しかなかった高度なユースケースが、今では利用可能で楽しいものになりました。十分に探求する余地のある機能です。 # harnessのルートから実行 npm run make:animation artifacts/my-movie.mp4 LLMがこれを理解するのを助け、私がハーネスに保存しているスクリプトを作成してくれました。これにより、トークンを消費せずに何十億回も実行できます。ハーネスがプロダクトにアクセスできるようになったため、プロダクトはより強力になりました。ファイルシステムAPIのサポートがあります。Braveで有効にした後、自分の考えをワークディレクトリに同期しています。自分の悲しい歌詞を収穫して、一人で部屋で歌っています。それはとても良い痛みです。もう一つの創造的な用途として、私の近所を3Dで再現し、その上にポスターを重ねたBlender環境に取り組んでいます。シーン、ストーリーボード、ウェブから提供できるものよりもはるかに多くのものを提供できます。1年前には不可能だった方法で、アプリが完全に利用可能になったように感じます。クリエイティブな人々は、AIツールではないツールをAI的な方法で使い続けることができます。創造的であることの最も楽しい部分を自分たちのものにしておくことができます。 ハーネスの分解 私はこのハーネスから日々の仕事を行っています。nvimの設定をワークディレクトリにマッピングしており、LLMは現在開いているファイルを知っており、それを編集できます。また、私はまだ泳ぐのが遅いので、正しい動きを使うのを助けてくれます。ハーネスを治具(jig)として考えています。LLMは私と一緒に設定を編集してくれます。これにより、作業に集中しながら、vimコマンドを規律正しく使用できます。ハーネスは、ホームディレクトリ以上のものをサポートするために自己完結型です(サンドボックス化、Webインターフェース、ファイルシステムアクセスAPI、Docker、Deno実行可能ファイルなど)。これらの概念はまだ私の心の中で形成されているため、ハーネスの概念を明確に保つために、npm start、cursor-agent、claudeをTUIとして参照しています。すべてのTUIはハーネスを共有します。監査可能であることが十分に重要であるため、TUIはすべてをartifacts/ディレクトリ内に保持するように指示されています。Cursorは.gitignoreを使用してファイルを無視しますが、これは賢明だと思います。そのため、gitを使用しないルートが必要です。ワークディレクトリのレポとハーネスを同期するスキルがあります。スキル、拡張機能、AGENTS.mdはルートのファーストクラスの市民であり、変更および構築されるのを待っています。TUIはそれに従わなければなりません。 # 最も近いAGENTS.mdをclaudeに自動ロード claude() { local dir="$PWD" while [[ "$dir" != "/" ]]; do if [[ -f "$dir/AGENTS.md" ]]; then command claude --append-system-prompt-file "$dir/AGENTS.md" "$@" return fi dir="${dir%/*}" done command claude "$@" } brayness/ ├── AGENTS.md ├── AGENTS.local.md ├── bin/ ├── prompts/ ├── plans/ ├── skills/ ├── extensions/ ├── artifacts/ └── work/ ├── realness/ ├── blog/ ├── brayness/ ├── nvim/ └── ... 当初、私はスキルをあまりにも限定的すぎました。具体性を緩め、トークンを燃やして初心者(clankers)に説明しすぎるラインがあることを学んでいます。ハーネスが落ち着くにつれて、変更の影響を確認するために、より経験的なアプローチを採用する必要があります。以下に、私の計画アーチにマッピングされたものをいくつか示します。 explore nvim-buffers flexible-visual-system vault interview-prep vuetify-to-semantic planner planning memory previous-work project-tooling brayness-sync worker realness-design typography user-interface rust-best-practices agent-browser logo-finder critic test-coverage simplify vue-inspect promoter hyperframes readable zoom-to-ableton motion-systems 地に足が着いた今、cursor-agentやClaudeの中で迷子になっているとは感じません。ワークフローに対する主体性を持ち、ソリューションのエンジニアリング方法を工夫できます。Piを使って学んだことは、しばしばClaudeやCursorでの経験に還元されます。Piがあれば、どんな問題でも乗り越えられると信じています。