伸び止まりを前提に組む
エージェントの出力が安定しないとき、次のモデルを待つという解き方がある。 実際これは長いあいだ有効だった。半年待てば上の世代が出て、同じ指示のまま結果が良くなる。
この前提が外れると、手元に残るのは同じモデルから同じ結果を繰り返し出す仕掛けだけになる。 ここには、このリポジトリで実際に効いたものと、効かなかったものを置く。
性能待ちと制御、どちらに投資しているか
効いたもの
1. 指示書の実体を1つにする
同じ内容を2ファイルに書いて同期させると、片方が必ず古くなる。同期ではなくシンボリックリンクで実体を1つにする。
$ ls -l AGENTS.md
AGENTS.md -> CLAUDE.md
$ ls -l ~/.codex/AGENTS.md
/Users/…/.codex/AGENTS.md -> /Users/…/.claude/CLAUDE.md
リポジトリ側とグローバル側の両方でこの形にしている。詳細は指示書を1つにする。
リンクにできない箇所(.claude/skills/ と .agents/skills/ のように、
片方だけに書き分けが必要なもの)は実ファイルを2つ持つしかない。そこは点検スクリプトで担保する。
$ python3 scripts/check-skill-sync.py
ズレていても誰もエラーを出さないのがこの種の問題の質が悪いところで、 「指示が効かない」と「指示が届いていない」を見分ける手段を先に持っておく必要がある。
2. 制約を足す前に、制約を疑う
結果が悪いとき、条件を足したくなる。だが出力形式の指定はツール選択の指示を兼ねるため、 足した条件がエージェントの道具を封じていることがある。
- 「SVGで書け」「ラスタ画像を使うな」→ 画像生成ツールが使えなくなり、座標を手で計算し始める
- 条件を足すほど結果が悪くなる場合、原因は指示の粗さではなく制約そのもの
切り分け手順は制約がツールを封じる。
3. 実行環境の制約をモデルの能力と混同しない
Codexに調査や修正を投げて結果が出ないとき、モデルが弱いのだと判断しかけた。 実際はOSサンドボックスがNode経由の通信を遮断していただけだった。
| 設定 | 挙動 |
|---|---|
workspace-write | Node経由の通信がOSサンドボックスに遮断される |
danger-full-access | 遮断されない |
モデルの選択も環境側の都合で決まる。sparkはChatGPTアカウントでは使えず、
最上級のモデルは5時間の利用上限にすぐ到達する。実務で回るのは sol low か terra high だった。
「モデルが期待より弱い」と感じたら、先に環境と権限を見る。
効かなかったもの
同じ指示での再実行は最大5回までという上限を運用ルールに入れている。 返ってこないコマンドを再実行し続けるのは無限ループの典型で、 5回で結果が出ないなら原因はモデル側ではない。
関連
- 指示書を1つにする — 指示が届いていない状態の作り方と直し方
- 制約がツールを封じる — 条件を足すほど悪くなる仕組み
- 開発日記: LLMの未来 — この整理を始めたきっかけ