Agentic Codingが急激なモデルの進化に伴い民主化されてきていますがいかがお過ごしでしょうか。
「これやって〜」→「なんでやってないねん!」を経験しているだろうし、あるいは「なんでrm -rfしてるの!?」とか「なんでDBをDROPしてるの!?」とか、はたまた「出来上がったけど結局手直しめっちゃしてる…」とかとかもやっていると思います。私もそうです。
そういったAI自体の挙動や、ツール呼び出し、仕上がりを制御しましょうね、というものがハーネスエンジニアリングと呼ばれてます。が、この"ハーネス"という話題が非常に範囲が広いのでこれを語る前に、この範囲の話をしますよ、と明示したほうがいいんじゃないかなと個人的には思います。SREやるぞ!とかDevOpsやるぞ!などと同じ。
実際にOpenAIとAnthropicが語っている範囲もちょっと違います。根本は一緒ですが。
- ハーネスエンジニアリング:エージェントファーストの世界における Codex の活用 | OpenAI
- Harness design for long-running application development \ Anthropic
…でもちょっとまって。AIをもりもり使う前の我々はそういった問題にも対処してましたよね?
例えば、チームに新しく来た人をチームの一員にしていくため、何かしらをチームと本人がやっていくわけですが、どうやっていましたっけ?開発環境を整えて、ドキュメントを整えて、システム全体像をわかるようにして、いざコミット!にむけてのチームの動き方、コーディング規約、PR、CI、レビュー、リリース、監視、…..etcなどなどを明文化したり。
例えば、本番環境がぶっ壊れるのを防ぐために、アプリケーションのデプロイフローを整備したり、設定変更のフローを整備したり、証跡を取るようにしたり。仮にぶっ壊れてもそれに気付けるようにしたり、すぐ戻せるようにしたり。
例えば、他チームからの依頼や相談を捌くためのフローを整備したり優先度設定を出来るようにしたり、よく関わるチームとのコミュニケーションや体制を整備したり。
要するに「開発体験を整理・改善し、あぶないことは出来ないやらないようにし、本質に集中できるようにする」ということをやっていたはずです。
このあたりはAIに置き換わっても同じ話なのでは?
(関連しそうな記事)
- ai-workspace、やりたいことが概ね出来上がった | ごみばこいん
- AIにワークフローを任せすぎてはいけない | ごみばこいん
- チームスペースのドキュメントをどう整理するか | ごみばこいん
- 新しくチームに来た人向けに何を書いておくか | ごみばこいん
- ドキュメントを育てていく | ごみばこいん
- 考古学というスキル | ごみばこいん
とはいえ、人間とAIは様々な点で違います、少なくとも今は。記憶が通用しない(暗黙知が通用しない)、圧倒的コード生成量、コンテキストウィンドウの限界…
そういった世界になったときに人間向けに行っていた規律とは少し異なるものが必要になるはずです。そこがハーネスエンジニアリングの本体なのではと思います。
「人間が開発体験を整えて人間の開発生産性を向上していく」をやってますが、まずは「人間が開発体験を整えてAIの開発生産性を向上していく」と「AIが開発体験を整えて人間の開発生産性を向上していく」をやっていく。ここでHuman in the loopが出来上がるはず。たぶん我々はこのあたりに位置してると思います。俺が作った最強のCLAUDE.mdを見ろ!とか、Coworkでこんな作業をシュッと終わらせられるようにした!とか。
今後は「AIが開発体験を整えてAIの開発生産性を向上していく」という世界にもっていく。それによってHuman on the Loopな世界が実現し、AIが主体的に開発を進めて、人間が適宜監督や調整を行う形になる。というのがこれからのスタンダードな姿になっていくんじゃないかなあ。