analysis_claude_code/docs/v1-モデルがエージェント.md
CrazyBoyM e3e23ae9bd docs: add Japanese support, separate language content
- Add Japanese README (README_ja.md)
- Add Japanese documentation (v0-v4)
- Remove mixed-language tables from all READMEs
- Each language now only references its own content
- Update language switcher links in all READMEs

Supported languages:
- English (README.md, docs/v*-*.md)
- Chinese (README_zh.md, docs/v*-*中文*.md)
- Japanese (README_ja.md, docs/v*-*日本語*.md)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 02:47:09 +08:00

140 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# v1: モデルがエージェント
**約200行。4ツール。すべてのコーディングエージェントの本質。**
Claude Codeの秘密**秘密などない。**
CLIの装飾、プログレスバー、権限システムを取り除く。残るのは驚くほどシンプルモデルがタスク完了までツールを呼び出すループ。
## コアの洞察
従来のアシスタント:
```
ユーザー -> モデル -> テキスト応答
```
エージェントシステム:
```
ユーザー -> モデル -> [ツール -> 結果]* -> 応答
^___________|
```
アスタリスクが重要。モデルはタスク完了を決定するまでツールを**繰り返し**呼び出す。これがチャットボットを自律エージェントに変える。
**重要な洞察**: モデルが意思決定者。コードはツールを提供してループを実行するだけ。
## 4つの必須ツール
Claude Codeは約20のツールを持つ。しかし4つで90%のユースケースをカバー:
| ツール | 目的 | 例 |
|--------|------|-----|
| `bash` | コマンド実行 | `npm install`, `git status` |
| `read_file` | 内容を読む | `src/index.ts`を表示 |
| `write_file` | 作成/上書き | `README.md`を作成 |
| `edit_file` | 精密な変更 | 関数を置換 |
この4つのツールで、モデルは
- コードベースを探索(`bash: find, grep, ls`
- コードを理解(`read_file`
- 変更を加える(`write_file`, `edit_file`
- 何でも実行(`bash: python, npm, make`
## エージェントループ
1つの関数で完全なエージェント
```python
def agent_loop(messages):
while True:
# 1. モデルに聞く
response = client.messages.create(
model=MODEL, system=SYSTEM,
messages=messages, tools=TOOLS
)
# 2. テキスト出力を表示
for block in response.content:
if hasattr(block, "text"):
print(block.text)
# 3. ツール呼び出しがなければ完了
if response.stop_reason != "tool_use":
return messages
# 4. ツールを実行して続行
results = []
for tc in response.tool_calls:
output = execute_tool(tc.name, tc.input)
results.append({"type": "tool_result", "tool_use_id": tc.id, "content": output})
messages.append({"role": "assistant", "content": response.content})
messages.append({"role": "user", "content": results})
```
**なぜこれが機能するか:**
1. モデルがループを制御(`stop_reason != "tool_use"`までツールを呼び続ける)
2. 結果がコンテキストになる("user"メッセージとしてフィードバック)
3. メモリは自動messagesリストに履歴が蓄積
## システムプロンプト
必要な唯一の「設定」:
```python
SYSTEM = f"""You are a coding agent at {WORKDIR}.
Loop: think briefly -> use tools -> report results.
Rules:
- Prefer tools over prose. Act, don't just explain.
- Never invent file paths. Use ls/find first if unsure.
- Make minimal changes. Don't over-engineer.
- After finishing, summarize what changed."""
```
複雑なロジックなし。明確な指示のみ。
## この設計が機能する理由
**1. シンプルさ**
ステートマシンなし。計画モジュールなし。フレームワークなし。
**2. モデルが考える**
モデルがどのツールを、どの順序で、いつ停止するか決定。
**3. 透明性**
すべてのツール呼び出しが可視。すべての結果が会話に。
**4. 拡張性**
ツール追加 = 1関数 + 1JSONスキーマ。
## 何が欠けているか
| 機能 | 省略理由 | 追加先 |
|------|----------|--------|
| Todo追跡 | 必須ではない | v2 |
| サブエージェント | 複雑さ | v3 |
| 権限 | 学習ではモデルを信頼 | 本番 |
要点:**コアは極小**。他のすべては改良。
## より大きな視点
Claude Code、Cursor Agent、Codex CLI、Devin—すべてこのパターンを共有
```python
while not done:
response = model(conversation, tools)
results = execute(response.tool_calls)
conversation.append(results)
```
違いはツール、表示、安全性。しかし本質は常に:**モデルにツールを与えて作業させる**。
---
**モデルがエージェント。これがすべての秘密。**
[← v0](./v0-Bashがすべて.md) | [READMEに戻る](../README_ja.md) | [v2 →](./v2-構造化プランニング.md)