Kimi K3로 첫 AI 에이전트 루프 구축하는 방법 (상세 설정 가이드)

@zodchiii
영어3일 전 · 2026년 7월 20일
167K
78
15
16
238

TL;DR

Kimi K3를 사용하여 자동화된 AI 에이전트 루프를 생성하기 위한 기술 가이드입니다. 컨텍스트 캐싱을 통한 비용 효율성과 목표 지향적인 워크플로우 구축에 중점을 둡니다.

에이전트 루프는 AI에게 도움을 요청하는 것과 잠에서 깨어 완성된 작업을 확인하는 것의 차이를 만듭니다. 대부분의 사람들은 루프를 구축하지 않는데, 최첨단 모델에서 수백 번 반복하는 데는 실제로 비용이 많이 들기 때문입니다.

내용: 루프 패턴을 하나의 다이어그램, 두 가지 정확한 설정(Claude Code 및 raw API), 그리고 K3를 루프 머신으로 만드는 캐시 수학으로 설명합니다.

첫 번째 루프는 오늘 밤 턴당 약 $0.39에 실행됩니다.

전체 설정은 다음과 같습니다 👇

본격적으로 시작하기 전에, 저는 AI 및 바이브 코딩에 대한 일일 노트를 Telegram 채널에서 공유합니다: https://t.me/zodchixquant 🧠

darkzodchi - inline image

루프가 실제로 무엇인가

과대광고를 걷어내면 루프는 네 단계의 반복입니다:

text
1GOAL → ATTEMPT → CHECK → (better? keep : retry)
2 ↑__________________________|
  • 목표(Goal): 측정 가능한 완료 지점이지, 막연한 느낌이 아닙니다. "모든 테스트 통과", "페이지 로딩 1초 미만", "점수 90점 이상"
  • 시도(Attempt): 모델이 목표를 향해 한 단위의 작업을 수행합니다
  • 확인(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를 사용한다면 루프는 내장되어 있으며, Moonshot의 공식 설정을 통해 K3가 그 아래에 위치합니다:

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

그러면 루프는 두 개의 명령어로 구성됩니다:

  • /goal 은 완료 지점을 설정합니다: "tests/ 디렉토리의 모든 테스트 통과 및 커버리지 80% 이상 유지". Claude Code는 첫 번째 답변에서 멈추지 않고 이 목표를 향해 계속 작업합니다
  • /loop 는 이를 반복적으로 만듭니다: 세션이 일정에 따라 또는 목표가 유지될 때까지 다시 실행됩니다

/status를 통해 K3를 사용 중인지 확인하세요(/model 메뉴에는 표시되지 않음). 설정에 포함된 1M 자동 압축 창은 긴 루프가 드물게 압축되도록 하여 반복 기록을 유지합니다.

설정 B: raw 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"""당신은 루프 안에서 작업하는 코딩 에이전트입니다.
10GOAL: 아래 프로젝트의 모든 테스트를 통과시키세요.
11PROJECT:
12{project_dump}
13RULES:
14- 턴당 하나의 집중된 변경만 수행하세요
15- 변경한 내용과 이유를 2줄로 설명하세요
16- 테스트가 통과하면 정확히 다음과 같이 응답하세요: 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 ]

세 가지 중요한 세부 사항:

  • 확인은 코드로 이루어지며, 막연한 느낌이 아닙니다. run_tests()가 진행 상황을 결정하며, 모델은 스스로를 평가하지 않습니다
  • 기록은 제한됩니다. 마지막 3개 교환만 포함하며, 안정적인 접두사가 지속적인 컨텍스트를 전달하고 캐시 친화적으로 유지됩니다
  • 모든 변경 사항은 브랜치로 이동합니다. 루프가 10번 틀려도 메인 브랜치는 그 영향을 받지 않습니다

자리를 비우기 전의 보호 장치

  • 예산 중단: 턴당 토큰 수를 계산하고 달러 한도에 도달하면 루프를 중단합니다. MAX_TURNS만으로는 충분하지 않으며, 한 번의 비대해진 턴이 일반적인 턴 10개보다 더 많은 비용을 소모할 수 있습니다
  • 진행 중단: 동일한 테스트가 3턴 연속 실패하면 중단하고 플래그를 표시합니다. 수렴할 수 없는 루프는 예산을 정중하게 소모합니다
  • K3의 한 가지 주의사항: 추론은 현재 max-only로 실행되므로, 모든 턴은 $15/M의 전체 생각(thinking) 출력을 전달합니다. 턴을 집중적으로 유지하고, 턴당 하나의 실패만 처리하면 출력 측면이 안정적으로 유지됩니다

일반적인 실수

  • 모호한 목표. "코드 개선"과 같은 목표는 영원히 루프됩니다. 루프는 완료 지점을 확인할 수 있을 때만 유용합니다
  • 모델이 스스로 평가하도록 두는 것. "제게는 맞아 보입니다"는 루프가 쓰레기를 배출하는 방법입니다. 검사자는 외부에 있어야 합니다: 테스트, 린터 또는 루브릭이 있는 두 번째 모델
  • 캐시를 깨는 것. 접두사의 타임스탬프, 무작위 ID 또는 재정렬된 파일은 매 턴이 $0.30/M 대신 $3/M으로 청구되도록 만듭니다. 동일함은 동일함을 의미합니다
  • 브랜치 규율 없음. 메인 브랜치에 대한 쓰기 권한이 있는 감독되지 않은 루프는 단계가 추가된 공포 스토리입니다
  • 야간 실행부터 시작하는 것. 첫 번째 루프는 지켜보면서 10-15턴 실행하세요. 잠들기 전에 신뢰를 쌓으세요

15분 설정

  1. Moonshot API 키를 확보하고, 10-30% 보너스 기간 내에 충전하세요. 8월 11일까지 유효 (3분)
  2. 설정 A 또는 B를 선택하고 연결하세요 (5분)
  3. 실제 작은 작업에 대해 확인 가능한 목표 하나를 작성하세요: 실패하는 테스트, 린트 통과 등 (2분)
  4. 감독하에 10턴을 실행하고, 확인이 작업을 어떻게 이끄는지 지켜보세요 (4분)
  5. 비용을 확인하세요. 그런 다음 다음 루프의 규모를 결정하세요 (1분)

루프는 프로그래밍에서 가장 오래된 아이디어를 가장 새로운 도구에 적용한 것입니다. K3는 이를 실제로 사용할 수 있을 만큼 저렴하게 만들었습니다.

읽어주셔서 감사합니다!

저는 AI 및 바이브 코딩에 대한 일일 노트를 Telegram 채널에서 공유합니다: 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 → 𝕏 사용해 보기

분석할 패턴 더 보기

최근 바이럴 아티클

더 많은 바이럴 아티클 보기