Fモード — フィルタ優先モード
原則: 生データはコンテキストに入れず、結果のみを渡す。 ロジックをデータ側(シェルパイプライン、短いスクリプト、サブエージェント)に移し、コンパクトなサマリーだけを持ち帰る。ログダンプをそのまま読むトークンはすべて、推論に使えなくなるトークンであり、ノイズの多い長いコンテキストは推論を悪化させる(単にコストが高くなるだけでない)。
1. 読む前にフィルタリングと集約を行う
| 代わりにこれを使う | こうする |
|---|---|
cat app.log | `grep -c ERROR app.log; grep -E 'ERROR |
| 5 MBのJSONを読む | jq '.items | length', jq -r '.items[] | [.id,.status] | @tsv' | sort | uniq -c |
SELECT * FROM orders | SELECT status, count(*) FROM orders GROUP BY 1 |
git log | git log --oneline -20, git log --format=%s origin/main..HEAD |
| ファイルをスクロールする | grep -n 'def handle' file.py で探し、offset/limit付きで読む |
2. フィルタリングは決して障害を隠してはならない
切り詰めたビューが「正常」に見えるのは、ビューがないよりも悪い。
- 終了コードを保持する:
set -o pipefail、またはcmd > out.txt 2>&1; echo "exit=$?"; tail -20 out.txt。tailに直接パイプするとコマンドの終了コードが失われる。 tailに加えてエラーマーカーもgrepする:grep -cE 'FAIL|ERROR|Traceback|panic' out.txt。- 分母付きでカウントを表示する:
passed 41/42、「OK」だけではダメ。
pytest -q --tb=short > /tmp/t.out 2>&1; echo "exit=$?"
grep -cE 'FAILED|ERROR' /tmp/t.out; tail -15 /tmp/t.out
3. 多数の類似チェック → 1つのスクリプト、1つのテーブル
10個のエンドポイント、20個のファイル、30行の検証: ループしてコンパクトなテーブル(名前 | ステータス | 詳細)と合計を出力する1つのスクリプトを書く。10回のツール呼び出しと10個の完全な出力を避ける。
for u in / /api/health /api/items; do
printf "%-14s %s\n" "$u" "$(curl -s -o /dev/null -w '%{http_code}' "localhost:8000$u")"
done
4. サマリーを意味でチェックする(形だけではない)
一見正しそうな出力でも間違っていることがある。期待値や妥当性の合計と比較する: カウントが入力サイズと一致する、既知の行が存在する、ファイル数が ls | wc -l と合う。サマリーをクロスチェックできない場合は、その旨を明記する。
5. テスト
Quietモード、短いトレースバック、失敗セクションのtail:
pytest -q --tb=shortvitest run --reporter=dot,jest --silentgo test ./... 2>&1 | grep -E '^(FAIL|ok|---)'cargo test -q
6. ブラウザチェック
完全なDOMスナップショットの代わりに、コンパクトなJSON({title, errors: n, buttons: n, overflowX: bool})を返すスクリプトを評価する。DOM構造そのものが問題である場合にのみスナップショットを取得する。スクリーンショットは視覚的なチェック用であり、テキストを読むためではない。
7. 広範囲の調査 → サブエージェント
大規模な検索、ログフォレンジック、データベースダンプ: file:line参照付きの結論を返すサブエージェントに委任する。その結果もあくまで主張であるため、実行に移す前に重要なポイントを検証する。
8. 機密情報と個人データ
サマリーや診断情報にシークレットや実際のPII(個人識別情報)を決して出力しない。マスクする(postgres://***)か、件数のみ表示する(emails found: 12)。キャッチした例外メッセージ内の接続文字列やキーもマスクする。
9. ファイルの読み取り
- まず
grep -nで検索し、関連範囲だけをoffset/limit付きで読む。 - 編集しようとしているソースコードは全文読む — 部分読み込みは編集ミスの原因になる。
- 編集直後にファイルを「確認のために」再読み込みしない。編集ツールは失敗時に既にエラーを返す。
10. 停止ルール
同じ修正が2回失敗したら停止する。正確なエラー行から根本原因を特定するか、質問する。3回目のブラインドリトライは禁止。
11. コンテキストの衛生管理
- 無関係なタスクの間はコンテキストをクリアし、長時間のセッションはコンパクトにする。
- このプロジェクトで使用しないプラグイン、スキル、MCPサーバーは無効にする。それぞれがすべてのリクエストでプロンプトトークンを消費する。
- 節約量は主張されたパーセンテージではなく、実際の使用数値(例:
/cost)で判断する。