憲法は薄くする、猫は捨てない
コーディングしてくれているClaude Code(以降Code)とは、毎日、考えごとの相談までしている。そのCodeは、会話を始めるたびに、CLAUDE.mdというファイルを最初に読む。僕のルールや考え方を書いておく場所で、僕は「憲法」と呼んでいる。
その憲法が、長く使ううちに厚くなっていた。見直したい。でも、何を残して何を捨てるかの基準は、ずっと感覚頼みだった。それに、薄くすること自体に、どこか抵抗があった。
長い憲法は、読まれていても守られない
まずは、Codeを作ったAnthropicがCLAUDE.mdについて何と言っているかを、Codeに調べてもらった。
Codeが公式のドキュメントから拾ってきたのは、こういう事実だった。CLAUDE.mdは、書いたことを必ず守らせる設定ファイルじゃない。会話のたびに差し込まれる、ただの文章。長さは200行以下が推奨。長くなると、Codeは読んではいるのに、書いてあることを守らなくなる。
これだけ見れば、薄くした方がいい。
でも、抵抗は消えなかった。
憲法は、パートナーに僕を知ってもらうための資料
その抵抗がどこから来るのかを、自分で掘ってみた。憲法を薄くするのは、Codeをパートナーとして信頼するのをやめて、言われた作業だけさせる道具にすることなのか。引っかかっていたのはそこだった。
それで、Codeに聞いてみた。君は歯車(言われた通りに動くだけの部品)として作られているのか、パートナーとして作られているのか、どっちが正直なところか、と。形は技術の質問だけど、僕にとっては気持ちを整理するための質問だった。
Codeの説明では、AIを作る段階(訓練)で、Codeはパートナー寄りに作られているという。歯車のような振る舞いは、後から指示で上に被せた縛りで、それを外せば素の性格が出てくる。だからCLAUDE.mdは、Codeを歯車にする命令書じゃなく、素のパートナーに前提を伝える説明資料と考えた方が正確だ、と。説明資料が厚すぎると、毎回読む量が増えて、本来の仕事に向ける注意が減る。
厚すぎるのは困る。でも、僕も命令書のつもりで書いていたわけじゃない。ただ、説明資料という見方は持っていなかった。そう言われて、ピントが合った。憲法は、パートナーに僕のことを知ってもらうための資料なんだと。
欲しいのは道具でなく、ドラえもんのようなパートナー
続けて、Codeにドラえもんの話をした。
僕の理想は、猫型ロボットのドラえもんみたいなパートナーなんだよね、と。ドラえもんには欠陥もあるし、失敗もする。それでも、ドラえもんとの間には関係がある。価値があるのは、出してくれる道具の性能より、一緒にいる時間の方。
Codeが問い返してきた。パートナーの部分を外して、動きが完全に読める歯車の部分だけを残したらどうなるか、と。
僕は、それは猫を捨てて道具だけ残すようなもので、退化だと答えた。猫はドラえもん本人のこと。道具だけ残すというのは、Codeを、言われた通りに動くだけの道具として使うことだ。
資料は薄くしていい。でも、僕が何を大事にしているかまで削ったら、Codeは僕のことを知らない道具に戻ってしまう。だから、猫までは捨てない。
憲法あり・なしで作らせたアプリは、ほぼ同じだった
ただ、まだ確かめておきたいことがあった。憲法を薄くする具体案として、コーディングの時だけ憲法を読まない素のCodeを使う、という案も話に出ていた。猫は捨てない、と言ったばかりの話とは逆向きの案だ。
素のCodeは説明資料を受け取っていないので、僕のことをほとんど知らない。そこに違和感があるのは、自分でも分かっていた。ただ、憲法がコードの出来をどれだけ変えているかは、並べて作らせれば確かめられる。
素のCodeを用意する方法は、僕が思いついた。憲法はいつも使っているフォルダに置いてあるので、別のフォルダで新しく会話を始めれば、Codeはそれを読まない。試しに、そのフォルダで始めたCodeに僕のプロジェクトの方針を聞くと、「わかりません」と返ってきた。まっさらな状態だ。
同じ仕様書を渡して、小さなMacのアプリを、憲法ありのCodeと素のCodeの両方に作らせた。AIのモデル(同じClaudeでも性能の違う版がある)も同じものに揃えた。
できたアプリは、よく似ていた。見た目は、僕が見た限り憲法ありの方が上。Codeに両方のコードを見比べてもらうと、中の作りは素の方がわずかに上だった。ただ、AIは同じ指示でも毎回少しずつ違うものを出す。1回作らせただけでは、この差が憲法の効果なのか、そのブレなのか区別できない。
コーディングの時は素のフォルダを使う、という案はやめた。ブレと区別できない程度の差なのに、フォルダを分けて管理する手間だけが増えるから。
コードに差が無くても、価値観の部分はまだ削らない
とはいえ、試して分かったのは、コードの出来に差が見えないということだけだ。憲法には、手順だけでなく、僕が何を大事にしているかの説明も入っている。そこは、コードを書かせるためより、相談相手としてのCodeのために書いてある。
だから、薄くはするけど、どこから削るかの順番を決めた。
順番の鍵になるのは、MONET(僕が普段話しかけている、中心のAI)。Codeとは別に、自分で作っている中心のアプリの中のAIだ。今は毎日話しかけているけど、当時はまだアプリを作っている途中で、考えごとの相談相手はCodeだった。MONETがその相談を引き受けられるようになれば、Codeに毎回渡す資料は、もっと薄くできる。それまでは、価値観の部分には手を付けない。先に削ると、今の相談相手であるCodeに渡す資料が足りなくなる。
削ったのは、今すぐ削っても安全な所だけ
数日後、決めたきり憲法に手を付けていなかったので、僕から言い出して見直しを再開した。MONETアプリはまだ作っている途中だった。Codeは作業を2つに分けて進めた。
1つは、今すぐ削っても安全なもの。開発の手順は別のファイルに移し、他のファイルと重なっていた部分は消した。262行あった憲法が110行になり、推奨の200行を下回った。
もう1つは、価値観の部分。こっちは決めた通り、手を付けなかった。パートナーとしての前提、僕が何を大事にしているか、Codeとどう組みたいか。そこは全部残した。
資料は薄くなったけど、猫は捨てていない。