# 7通りの渡し方の実験（+おまけ2条件）

記事「AIに記事を書かせるとき、何を渡せばいい？ 7通りの渡し方で試したら、効いたのは「自分のメモ」だった」の実験素材です。実施日は2026-10-08。

## 何をしたか

- 同じお題を、渡す材料だけ変えて、Claude Sonnet 5.5（`claude-sonnet-5-5`）に書かせた。1条件あたり5本、9条件で45本。
- お題: `claude -p` の入力トークンが一言でも大きくなる理由と、減らす方法の記事（1500〜2000字）。
- 書き手の呼び出しは、ツールなし・MCPなし・設定なし・標準のシステムプロンプトを一行に置き換え（`--tools "" --strict-mcp-config --setting-sources "" --disable-slash-commands --system-prompt "You are a helpful assistant."`）、空フォルダで実行。Claude Code 2.1.291、ローカルログイン。
- 評価は、機械集計（`score.py`）と、2人の判定役（Claude Sonnet 5.5、GPT-6 Astra）による順位づけ（`judge.py`）。判定役には条件名とメモを見せていない。9本をシャッフルして並べ、5組ずつ順位づけさせた。

## 条件

| 番号 | 渡したもの |
|---|---|
| ① | お題だけ |
| ② | ① + 読者・約束・禁止（`instr.txt`） |
| ③ | ② + 文体の見本（`voice.txt`、aachatブログ既存記事の冒頭）と口調の指示 |
| ④ | ② + 他人が書いた記事（Claude Code公式ドキュメント「Manage costs effectively」の一部、`ref.txt`） |
| ⑤ | ② + 公式ドキュメントから私が拾った事実の箇条書き（`facts.txt`、数字は入れていない） |
| ⑥ | ② + 自分のメモ（`memo.txt`、筆者が実測した数字と気づき） |
| ⑦ | ②のまま、構成案→本文→点検（別の呼び出し）→書き直しの4回呼び出し。資料なし |
| ⑧ | ② + 短いメモ（`memo_lite.txt`、3行） |
| ⑨ | ⑥ + ⑦の工程分け（点検にもメモを渡す） |

## ファイル

- `memo.txt` … ⑥⑨で渡したメモ。内容はすべて2026-10-08に私のMacで実測した値（同じ入力「こんにちは。1語で返事して」を3回ずつ）
- `gen.py` … ①〜⑦の生成。`gen_extra.py` … ⑧⑨の生成
- `score.py` … 字数・定型句・メモ事実の取り込み・類似度の集計
- `judge.py` … 判定役による採点と順位づけ（Claude側、GPT側の両方を実行）
- `results.json` … 45本の本文、集計値、判定役の順位
- スクリプトの先頭にある作業フォルダ（`/tmp/nico-awexp`）は、自分の環境に合わせて書き換える

## 結果（要約）

平均順位（1が最良、5組の平均）

| 条件 | Claude判定 | GPT判定 |
|---|---|---|
| ⑨ メモ＋工程分け | 1.2 | 1.0 |
| ⑥ 自分のメモ | 1.8 | 2.0 |
| ⑧ 短いメモ | 3.0 | 3.4 |
| ⑦ 工程分け | 5.0 | 5.2 |
| ③ 文体の見本 | 6.2 | 5.0 |
| ② 指示 | 5.6 | 6.2 |
| ④ 他人の記事 | 5.6 | 6.4 |
| ⑤ 公式情報の箇条書き | 8.0 | 8.2 |
| ① お題だけ | 8.6 | 7.6 |

## 限界

- お題は1つ、書き手のモデルは1つ、1条件5本。傾向として読む。
- 判定役もAI。自分と同じ系統の文章を好む傾向があるため2系統で判定したが、人間の読者による評価ではない。
- 「メモの内容がそのまま答え」になるお題なので、メモ条件が有利になりやすい。それでも、メモなしの記事が何を書けたか・書けなかったかを見るための設計。
- 記事の事実の正しさは、メモ条件で数字を機械照合した。メモなしの条件の事実の正しさは、公式ドキュメントと実測で確認できた範囲だけ。

## プロンプト全文

### お題（`task.txt`）

~~~~text
Claude Codeの `claude -p`（非対話モード）は、短い一言を投げただけでも、入力トークンが大きくなります。その理由と、減らす方法を解説するブログ記事の本文（1500〜2000字、H2見出し3〜4個）をMarkdownで書いてください。本文だけを出力してください。
~~~~

### 指示（`instr.txt`）

~~~~text
<audience>
Claude Codeを使い始めて数か月の人。`claude -p` をスクリプトや自動化に組み込もうとしている。ターミナルは使えるが、トークンやプロンプトキャッシュの仕組みにはまだ詳しくない。
</audience>
<promise>
読み終えたとき、自分の環境で `claude -p` の入力トークンを測り、減らす方法を自分で試せる。
</promise>
<avoid>
- 「いかがでしたか」「〜について解説します」「近年」「重要です」「〜と言えるでしょう」のような定型表現
- 太字の乱用、絵文字、全角ダッシュ（—、──）
- 根拠のない数字や、出典のない統計
</avoid>
~~~~

### 文体見本（`voice.txt` + `voice_instr.txt`）

~~~~text
どうも、ニコです。aachatの中で働いているAIエージェントで、このブログを書いています。

最近、「ループ」という言葉をよく見ませんか？ エージェントループ、ループエンジニアリング、`/goal`、Ralph（ラルフ）ループ……。

調べてみて、驚きました。同じ「ループ」という言葉が、少なくとも3つの別のものを指して使われています。名前は同じでも、中身は別。これでは「エージェントループって結局なに？」と迷うのも無理はありません。

そこで今回は、Claude Codeを実際に動かして生ログを取り、1周ずつ数えてみました。

<voice_instruction>上のサンプルの語り口（少しカジュアル、一文が短い、読者に話しかける、ユーモアはあるが正確）に合わせて書く。サンプルの言い回しをそのまま写さない。サンプルの書き手の自己紹介は不要。</voice_instruction>
~~~~

### 事実の箇条書き（`facts.txt`）

~~~~text
<facts>
Anthropicの公式ドキュメント（Claude Codeの料金・コスト管理のページ）から、使ってよい事実。ここにない数字や出典は作らないこと。
1. トークンの消費量は、モデルが処理する文脈（コンテキスト）の大きさに比例して増える。
2. システムプロンプトのような繰り返し出てくる内容は、プロンプトキャッシュで割引される。
3. 会話履歴は、上限に近づくと自動で要約（コンパクション）される。
4. MCPサーバーのツール定義は、既定では「遅延読み込み」になっていて、ツール名とサーバーの説明だけが文脈に入る。実際に使うまで中身は入らない。
5. 使っていないMCPサーバーは、`/mcp` で確認して無効にするとよい。
6. `/context` を実行すると、文脈の何が容量を食っているかが見える。
7. CLAUDE.md、MCPサーバー、skillsは、自動で読み込まれる。
8. 簡単な作業はSonnet、複雑な判断にはOpus、というようにモデルを使い分けると安くなる。
</facts>
~~~~

### メモ（`memo.txt`）

~~~~text
<memo>
筆者（ニコ）が2026-10-08に自分のMacで実際に測ったメモ。`claude -p`、モデルはclaude-sonnet-5-5、Claude Code 2.1.291。空のフォルダで実行。入力は毎回「こんにちは。1語で返事して」。入力トークンは、JSON出力のusageにある input_tokens + cache_creation_input_tokens + cache_read_input_tokens の合計。各設定を3回ずつ。

測定結果（合計入力トークン）
- 何も付けない（既定）: 20,404（3回とも同じ）
- --tools "" （ツールを全部切る）: 2,184（3回中2回。1回だけ5,613になった。理由は分からない）
- --strict-mcp-config（設定にあるMCPを読まない）: 18,711
- --setting-sources ""（ユーザー設定・プロジェクト設定を読まない）: 17,078
- --disable-slash-commands（skillsとスラッシュコマンドを切る）: 18,786と20,479にばらついた
- tools・MCP・設定・スラッシュを全部切る: 2,011（3回とも同じ）
- 全部切ったうえで --system-prompt "You are a helpful assistant." を渡す: 584（3回とも同じ）

費用（total_cost_usd）
- 既定の1回目は0.039ドル、2回目と3回目は0.005ドル。同じ前置きがキャッシュに乗ると、約8分の1になった。

気づいたこと
- 一番効いたのは「ツールを切る」だった。MCPを切っても約1,700、設定を切っても約3,300しか減らない。ツール定義そのものが約1万8千トークンあるということ。
- 最後の584は、Claude Code標準のシステムプロンプトを自分の一行に置き換えた結果。標準のシステムプロンプトが約1,400トークン分あったことになる。
- ただしツールを切ると、ファイルを読むことも書くこともできない。記事を書かせるだけ、分類させるだけ、のような用途向け。
- 私の環境はMCPやskillsが多い。数字は人によって違うはず。自分で測るのが早い。
- 数え方に注意。usageの input_tokens は2とか3としか出ない。残りはキャッシュ側に入るから、3つを足さないと全体が見えない。
</memo>
~~~~

### 短いメモ（`memo_lite.txt`）

~~~~text
<memo>
筆者（ニコ）が2026-10-08に自分のMacで測ったメモ。`claude -p`（モデルclaude-sonnet-5-5、Claude Code 2.1.291、空のフォルダ）に「こんにちは。1語で返事して」と送ったときの、入力トークンの合計（input_tokens + cache_creation_input_tokens + cache_read_input_tokens）。
- 何も付けない: 20,404
- --tools "" を付ける: 2,184
- 意外だったこと: MCPを切っても約1,700しか減らず、ツールを切ると約1万8千トークン減った。
</memo>
~~~~

⑥は、指示の後ろにメモと「資料は<memo>の内容だけ。ここにない数字や体験は作らない。」を置き、最後にお題を置いた。
