俺のエージェントは俺の指示にだけ従っていればいいんだよ
そう思いませんか
真面目な話
CLAUDE.mdをはじめとした自然言語の指示ファイルは便利です。が、時には逆効果だと感じています。
これ、AI時代以前からそうだと思いませんか?
ドキュメントを渡される。でも、実際の挙動を観察すると何かが違う。結局リバースエンジニアリングをする。
そう、自然言語で書かれたドキュメントは実態を反映しているとは限らないのです。
そもそも、自然言語にwell-definedを求めてはいけません。
コードを書くたびにドキュメントを残していたとしても、自然言語は解釈の余地が生まれます。
そのうえで、ドキュメントを管理するコストは果たしてその効果に見合うのでしょうか?
人力は論外だとして、LLMを使うにしてもAnthropic自身が次のように述べています。
Teams should expect to do a meaningful configuration review every three to six months, but it's also worth doing one whenever performance feels like it's plateaued after major model releases.
モデルやCLIの更新が発生するので定期的に見直そうという話ですね。これは面倒くさい!
かといって管理をサボると「効いているのかわからないおまじない」が積みあがっていくのが目に見えています。
ハーネスを組み上げるだけで骨が折れますし、モデルの挙動は非決定論的ですし、プロバイダがいつナーフしてくるかわかりません。
この状況でプロンプト芸を組み立てるのはマゾすぎると思います。
エディタのように、ユーザーによって使用しているLLMも異なることでしょう。
制御しようとしすぎず、不便を感じたらその場で臨機応変に対処するのがAI時代の持続可能な開発ではないのでしょうか。
定期的に見直す最善の方法は
スクラップ & ビルドです。
既存の指示ファイルを全部取り除いて挙動を見る。これしかないです。
例えばこのあたりがメジャーですね。
CLAUDE.md
AGENTS.md
.claude
.gemini
.agent
.github/copilot-instructions.md
.github/instructions/*
.github/prompts/*
.github/skills/*
これらの削除を手動で行おうとすると、
- 指示ファイルを消す
- エージェントに作業させる
- コミット前に消した指示ファイルを戻す
- コミット
- コミット後にまた指示ファイルを消す
ステップが多くてかなり面倒です。
Git hooksで実装してみる
Git hooksを使うとコミット前とコミット後に処理を挟むことができます。
これをセットアップするツールを作ればよさそうです。
ということで作りました
その名も free-my-agentです。
❯ free-my-agent init # hooksを追加
hooks installed in .git/hooks
❯ free-my-agent free # 指示ファイルを退避
freed: /home/n/GitHub/free-my-agent/CLAUDE.md
❯ git add . # 変更をステージ
❯ git commit -m "some changes" # コミット時に復元され、また退避される
restored: CLAUDE.md
freed: /home/n/GitHub/free-my-agent/CLAUDE.md
[test 4ee933e] some changes
1 file changed, 3 insertions(+)
よさそう!
claudeに頼んだら任意のディレクトリをfreeする機能やグローバル設定も追加してくれました。
ご利用は自己責任でお願いします。
$ free-my-agent --help
Hide agent instruction files during work, restore them on commit
Usage: free-my-agent <COMMAND>
Commands:
init Install git hooks into .git/hooks/
add Add a glob pattern to managed list (default: local to this repo)
remove Remove a glob pattern from managed list (default: local to this repo)
list List managed patterns
free Backup and delete managed files (free the agent)
restore Restore managed files from backup (called by pre-commit hook)
status Show which files are currently hidden
help Print this message or the help of the given subcommand(s)