😊

Claude Codeとの付き合い方

に公開

概要

Claude Codeとしばらくコーディングした結果、なんとなく付き合い方が分かってきたのでメモ

マイクロマネジメントしない

Claude Codeはターミナルでやっていることが逐一分かるのでついつい進捗を見てしまいますが、人の注意力は有限のリソースなのでClaude Codeの途中経過を見ると結果的にやれることが少なくなります。
同じように、コーディング終了後に人が「テストが失敗している」「〇〇が抜けている」というような指摘をするのも時間と注意力がもったいないし、イライラゲージが溜まっていきます。そういうのはやめて、Claude Codeに自分でコードレビューや抜けがあるかを確認させた後で、最終成果物を人間がレビューした方が効率的にも精神的にも良いです。

Claude Codeに自己検証させる

自己検証させるにはサブエージェントかSDkが便利です。
サブエージェントは以下のようにプロンプトだけで済むのでお手軽です

@{計画ファイルへのパス}を読んで実装を行って。
コード変更はsubagentで行って下さい。
それが終わったら、検証&コードレビューのsubagentでテストが成功しているか、
実装と要件が合っているかを検証し、必要ならコード変更をさせて下さい。
検証&コードレビューはsubagentを3回sequentialに呼び出して下さい

こんな感じのプロンプトで自己検証を3回やらせられます。サブエージェントを使うと親エージェントのコンテキストウィンドウが埋まらないので命令を忘れにくいのと、新しいコンテキストウィンドウで開始すると実装時とコンテキストが違うので第三者みたいな目で検証してくれている気がします(雰囲気)
全ての問題を解決してくれるわけではないけど、停止前にテストの成功を確認するとプロンプトしてるのにテストが通ってないみたいなのは減ります

SDKを使う

SDKはPythonコードを書かないといけないものの、より細かい制御ができます
便利な点として、Pythonで制御できるのでAPIリミットに達したらsleepさせて、解除後に自動でまたプロンプトを実行するような事ができます。SDK公式ではこの機能はありませんが、claude -p "1+1"のようなコマンドを実行すればAPIリミットに当たっている場合に解除時間が出力されるので、それを元にsleepさせるくらいで実現できます。これを使えばMAX200が無くても寝る時に朝まで実行させられます

セッション開始時間を固定する

Claude Codeのセッションは最初のプロンプトから5時間ですが、このせいでいつAPIリミットがリセットされるか分からなくなって混乱します。なので時間を固定します。
やり方は簡単で、常時起動しているクラウドVMなどからclaude -p "1+1=?"というコマンドを指定した時間にcronで実行するだけです。ただしnpmでインストールされているのでフルパスで指定するか何かでcronから実行できる必要にする必要があります
自分は7時、12時、17時、22時にリセットされるように固定しています。
ただし、月のセッション数が50を超えると制限される可能性がある(まだ起きてはいないはず)のでこの方法はそのうち使えなくなるかも

定期的にgitコミットさせる

ある程度複雑な作業をやらせる場合はタスク毎にコミットさせた方が良い。コミットする手間が省けるし、エージェントが途中で狂ってgit checkoutしても全てが消える恐れが無くなる。そもそもエージェントが書いたコードへのコミットメッセージを人が書くのは困難。
各タスクが完了したらgitコミットしてと指定するだけでやってくれる

結論

こういうテクニックみたいなのが流行るのはChatGPT登場時を思い出しますね。
多分半年から1年くらいでエージェントIDEみたいなものが出てきて勝手に面倒を見てくれるようになってこういうのは意識しなくなるんじゃないかと思いますが、この混沌とした過渡期も楽しいものではありますね

Discussion