Kimi K3 で初めての AI エージェントループを構築する方法(詳細なセットアップ手順)

@zodchiii
英語4 日前 · 2026年7月20日
167K
78
15
16
238

TL;DR

Kimi K3 を使用した自動 AI エージェントループ作成のための技術解説。コンテキストキャッシュを活用したコスト効率と、目標達成型の堅牢なワークフローに焦点を当てています。

エージェントループとは、AI に助けを求めることと、目が覚めたときに仕事が完了していることの違いを生み出すものです。ほとんどの人はエージェントループを構築しません。なぜなら、フロンティアモデルで 100 回の反復を実行すると、実際にコストがかかるからです。

この記事では、ループのパターンを 1 つの図で説明し、2 つの正確なセットアップ(Claude Code と生の API)、そして K3 をループマシンにするキャッシュ計算について詳しく解説します。

初めてのループは、今夜、約 $0.39/ターンで実行できます。

完全なセットアップはこちら 👇

本題に入る前に、 私は Telegram チャンネルで AI とバイブコーディングに関する日々のメモを共有しています:https://t.me/zodchixquant 🧠

darkzodchi - inline image

ループの正体

誇大広告を排すれば、ループとは 4 つのステップの繰り返しです:

text
1GOAL → ATTEMPT → CHECK → (better? keep : retry)
2 ↑__________________________|
  • Goal(目標): 漠然とした雰囲気ではなく、測定可能なゴールライン。「すべてのテストが通る」「ページ読み込みが 1 秒未満」「スコア 90 以上」
  • Attempt(試行): モデルが目標に向けて 1 単位の作業を行う
  • Check(確認): 何かが目標に対して結果を検証する。テストスイート、リンター、別のモデルなど
  • Repeat(繰り返し): 確認結果をフィードバックして再実行し、目標が達成されるか予算が尽きるまで停止しない

以上です。それ以外のすべて(メモリ、サブエージェント、夜間実行)は、このサイクルの装飾に過ぎません。

なぜ K3 なのか:ループの経済性

ループは毎回同じコンテキスト(コードベース、目標、履歴)を再読み込みします。ほとんどのモデルでは、この繰り返しに全額を支払うことになります。しかし K3 ではそうではありません:

text
1Turn cost = fresh_tokens × $3/M + cached_tokens × $0.30/M
2
3Real shape (800K stable context + 50K fresh per turn):
4K3: $0.24 + $0.15 = $0.39/turn
5Fable 5: 850K × $10/M = $8.50/turn

50 ターンの夜間ループ:K3 では約 $20、Fable 5 では約 $425。これは割引の問題ではありません。「実行しっぱなしにできる」か「常に監視しなければならない」かの違いです。

唯一のルール:安定したコンテキストを毎回同一のプレフィックスとして保持し、タスクを最後に配置することで、キャッシュが実際にヒットするようにします。

darkzodchi - inline image

セットアップ A:Claude Code(5 分で完了)

Claude Code を使用している場合、ループは組み込まれており、K3 は Moonshot の公式設定を介して下位に配置されます:

bash
1export ANTHROPIC_BASE_URL=https://api.moonshot.ai/anthropic
2export ANTHROPIC_AUTH_TOKEN=${YOUR_MOONSHOT_API_KEY}
3export ANTHROPIC_MODEL=kimi-k3
4export ANTHROPIC_DEFAULT_OPUS_MODEL=kimi-k3
5export ANTHROPIC_DEFAULT_SONNET_MODEL=kimi-k3
6export ANTHROPIC_DEFAULT_HAIKU_MODEL=kimi-k3
7export CLAUDE_CODE_SUBAGENT_MODEL=kimi-k3
8export ENABLE_TOOL_SEARCH=false
9export CLAUDE_CODE_AUTO_COMPACT_WINDOW=1048576
10claude

その後、ループは 2 つのコマンドで実行できます:

  • /goal でゴールラインを設定:「tests/ のすべてのテストがパスし、カバレッジは 80% 以上を維持」。Claude Code は最初の回答で停止するのではなく、目標に向かって作業を続けます
  • /loop で繰り返しを有効化:セッションがスケジュールに従って、または目標が達成されるまで再実行されます

/status で K3 を使用していることを確認してください(/model メニューには表示されません)。設定の 1M 自動コンパクトウィンドウにより、長いループでのコンパクト化が稀になり、反復履歴が維持されます。

セットアップ B:生の API ループ(完全制御)

Claude Code 以外でのループ用に、OpenAI 互換の完全な最小限のループを以下に示します:

python
1from openai import OpenAI
2
3client = OpenAI(
4 api_key=MOONSHOT_API_KEY,
5 base_url="https://api.moonshot.ai/v1",
6)
7
8# Stable prefix: identical every turn = cache hits at $0.30/M
9STABLE = f"""You are a coding agent in a loop.
10GOAL: make all tests pass in the project below.
11PROJECT:
12{project_dump}
13RULES:
14- One focused change per turn
15- Explain what you changed and why in 2 lines
16- If tests pass, reply exactly: GOAL_REACHED
17"""
18
19history = []
20MAX_TURNS = 30
21
22for turn in range(MAX_TURNS):
23 result = run_tests() # your check: pytest, npm test, etc.
24 if result.passed:
25 print(f"Done in {turn} turns")
26 break
27
28 response = client.chat.completions.create(
29 model="kimi-k3",
30 messages=[
31 {"role": "system", "content": STABLE},
32 *history[-6:], # last 3 exchanges, capped
33 {"role": "user", "content":
34 f"Turn {turn}. Test output:\n{result.output}\n"
35 f"Fix the next failure."},
36 ],
37 )
38 change = response.choices[0].message.content
39 apply_change(change) # write the edit, commit to a branch
40 history += [
41 {"role": "user", "content": f"Turn {turn} test output given"},
42 {"role": "assistant", "content": change},
43 ]

3 つの重要な詳細:

  • チェックはコードであり、雰囲気ではない。 run_tests() が進捗を判断し、モデルが自分自身を評価することはありません
  • 履歴は制限されている。 最後の 3 回のやり取りのみ。安定したプレフィックスが永続的なコンテキストを保持し、キャッシュフレンドリーな状態を維持します
  • すべての変更はブランチに送られる。 ループが 10 回間違えても、main ブランチが影響を受けなければ問題ありません

放置する前のガードレール

  • 予算制限: ターンごとのトークンをカウントし、ドル単位の上限でループを停止する。MAX_TURNS だけでは不十分で、1 回の肥大化したターンが通常の 10 ターン分を消費する可能性があります
  • 進捗制限: 同じテストが 3 ターン連続で失敗した場合、停止してフラグを立てる。収束できないループは、丁寧に予算を消費し続けます
  • K3 の注意点: 推論は現在 max-only で実行されるため、すべてのターンで完全な思考出力が $15/M で発生します。ターンを集中させ、1 ターンに 1 つの失敗に抑えることで、出力側のコストを抑えられます

よくある間違い

  • 曖昧な目標。 「コードを改善する」は永久にループし続けます。ループは、そのゴールラインがチェック可能である限りにおいてのみ有効です
  • モデルに自己評価をさせる。 「正しく見える」は、ループがゴミを出荷する方法です。チェッカーは外部にある必要があります:テスト、リンター、またはルーブリックを持つ別のモデル
  • キャッシュを壊す。 プレフィックス内のタイムスタンプ、ランダム ID、またはファイルの並び替えは、毎回のターンが $0.30/M ではなく $3/M で課金されることを意味します。同一とは、文字通り同一であることを指します
  • ブランチ規律の欠如。 main ブランチへの書き込みアクセスを持つ監視なしのループは、手間がかかるホラーストーリーです
  • 夜間実行から始める。 最初のループは監視しながら 10〜15 ターン実行してください。信頼を得てから、寝ている間に実行しましょう

15 分でセットアップ

  1. Moonshot API キーを取得し、10〜30% のボーナス枠内でチャージする(8 月 11 日まで有効)(3 分)
  2. セットアップ A または B を選択して配線する(5 分)
  3. 実際の小さなタスクに対して、チェック可能な目標を 1 つ作成する:失敗するテスト、lint パスなど(2 分)
  4. 10 回の監視付きターンを実行し、チェックが作業をどのように促進するか観察する(4 分)
  5. コストを確認する。その後、次のループの規模を決定する(1 分)

ループは、プログラミングにおける最も古いアイデアを、最新のツールに適用したものです。K3 は、それを実際に使用できるほど安価にしただけです。

お読みいただきありがとうございます!

私は Telegram チャンネルで AI とバイブコーディングに関する日々のメモを共有しています:https://t.me/zodchixquant 🧠

darkzodchi - inline image
YouMindで再制作

Turn one viral article into a full content workflow

Collect the source, decode the pattern, create assets, draft the story, and distribute from one AI workspace.

Explore YouMind
クリエイターのために

あなたの Markdown をきれいな 𝕏 記事に

自分の長文を投稿するとき、画像・表・コードブロックを 𝕏 向けに整形するのは手間がかかります。YouMind は Markdown 全体を、そのまま投稿できるきれいな 𝕏 記事に変換します。

Markdown → 𝕏 を試す

解読すべきパターンをもっと

最近のバイラル記事

バイラル記事をもっと見る