Repo Optimizer: 나는 KISS AI Agent가 하룻밤 사이에 스스로 최적화하도록 했습니다. 비용을 98% 절감했습니다.

발행: (2026년 2월 13일 오전 12:32 GMT+9)
11 분 소요
원문: Dev.to

Source: Dev.to

위에 제공된 소스 링크 외에 번역할 텍스트가 포함되어 있지 않습니다. 번역을 원하는 본문을 제공해 주시면 한국어로 번역해 드리겠습니다.

설정

나는 KISS 를 유지하고 있다. 이는 하나의 원칙, 단순함을 유지하라 에 기반한 미니멀리스트 다중 에이전트 프레임워크이다.
프레임워크의 대표 코딩 에이전트인 RelentlessCodingAgent는 스마트 자동 연속성을 갖춘 단일 에이전트 시스템이다—LLM 기반 코딩 루프의 하위 세션을 실행하고, 세션 간 진행 상황을 추적하며, 작업이 성공하거나 예산이 소진될 때까지 계속해서 작업을 수행한다. 이 에이전트는 스스로 진화하여 끈질기게 실행되도록 설계되었다.

작동은 하지만 비용이 많이 들었다. Claude Sonnet 4.5 로 한 번 실행할 때 비용은 $3–5이고 소요 시간은 600–800 초였다. 단순함과 효율성을 내세우는 프레임워크에 비추어 보면 이는 위선처럼 느껴졌다.

그래서 나는 69줄짜리 Python 스크립트를 만들고, 간단한 영어로 문제를 해결하도록 지시했다.

KISS AI Agent

도구: repo_optimizer.py

전체 옵티마이저는 자체 소스 코드를 대상으로 하는 RelentlessCodingAgent입니다. 아래는 스크립트의 핵심 부분입니다:

from kiss.agents.coding_agents.relentless_coding_agent import RelentlessCodingAgent

TASK = """
Can you run 'uv run src/kiss/agents/coding_agents/relentless_coding_agent.py'
in the background so that I can see its output and you monitor the output in real time?
If you observe any repeated errors in the output, please fix them and run the command again.
Once the command succeeds, analyze the output and optimize
src/kiss/agents/coding_agents/relentless_coding_agent.py
so that it runs reliably, faster, and with less cost.
Keep repeating the process until the running time and the cost are reduced significantly,
such 99%.
...
"""

agent = RelentlessCodingAgent("RepoAgent")
result = agent.run(
    prompt_template=TASK,
    model_name="claude-opus-4-6",
    work_dir=PROJECT_ROOT,
)

그게 전부입니다. 에이전트는 스스로 실행하면서 출력을 관찰하고, 문제를 진단하고, 자신의 코드를 수정한 뒤 다시 실행합니다 — 이 과정을 반복하면서 숫자가 감소할 때까지 진행합니다.

그라디언트 하강도, 하이퍼파라미터 그리드 탐색도, 보상 모델도 없습니다. 단지 LLM이 로그를 읽고 소스 파일을 다시 쓰는 것뿐입니다.

옵티마이저가 실제로 하는 일

피드백 루프는 다음과 같이 작동합니다:

  1. Run 대상 에이전트를 벤치마크 작업에 실행하고 출력을 캡처합니다.
  2. Monitor 로그를 실시간으로 모니터링합니다. 에이전트가 충돌하거나 반복 오류가 발생하면 코드를 수정하고 다시 실행합니다.
  3. Analyze 성공적인 실행을 분석합니다: 실제 경과 시간, 토큰 수, 비용(달러).
  4. Optimize 소스 코드를 순수 영어로 지정된 전략을 사용해 최적화합니다 — 프롬프트 압축, 모델 교체, 불필요한 단계 제거 등.
  5. Repeat 메트릭이 정체되거나 목표 감소량에 도달할 때까지 반복합니다.

전략 자체는 작업 프롬프트의 단순한 항목입니다:

  • 의미를 유지하면서 더 짧은 시스템 프롬프트
  • 중복된 지시문 제거
  • 대화 턴 최소화
  • 배치 작업, 조기 종료 활용
  • 효율성과 신뢰성을 높이는 에이전시 패턴을 찾기 위해 웹 검색

옵티마이저는 특정 기술을 강제 적용하도록 하드코딩되지 않았습니다. 읽고, 추론하고, 실험하고, 반복합니다. 어떤 기술을 선택할지는 로그가 보여주는 내용에 따라 달라집니다.

결과

하룻밤 동안 실행한 후, 옵티마이저가 다음 보고서를 생성했습니다:

지표전 (Claude Sonnet 4.5)후 (Gemini 2.5 Flash)감소율
시간~600–800 초169.5 초~75 %
비용~$3–5$0.1296–98 %
토큰수백만300,729대규모

최적화 후 세 가지 벤치마크 테스트 모두 통과했습니다: 다이아몬드 종속성 해결, 순환 감지, 및 실패 전파.

옵티마이저가 변경한 내용

옵티마이저는 자율적으로 발견한 구체적인 9가지 수정을 적용했습니다:

  1. 모델 전환 – Claude Sonnet 4.5 ($3/$15 per M tokens) → Gemini 2.5 Flash ($0.30/$2.50 per M tokens) — 입력 비용이 10배, 출력 비용이 6배 저렴.
  2. 압축된 프롬프트 – 장황한 CODING_INSTRUCTIONS 보일러플레이트를 제거하고, 의미를 잃지 않으면서 TASK_PROMPTCONTINUATION_PROMPT를 짧게 만들었습니다.
  3. Write() 도구 추가 – 원래 에이전트는 Edit()만 가지고 있었으며, 고유성 충돌 시 실패했습니다. 각 실패마다 2–3단계가 낭비되었는데, Write()를 추가함으로써 이를 없앴습니다.
  4. 강화된 종료 지시 – “테스트가 통과하면 즉시 finish를 호출하십시오. 추가 검증은 하지 마세요.” – 에이전트가 중복 확인 실행에 토큰을 소모하는 것을 방지했습니다.
  5. Bash 타임아웃 안내 – “테스트 실행 시 timeout_seconds=120을 설정하세요” – 병렬 Bash 실행 시 멈춤을 방지했습니다.
  6. 제한된 폴 루프 – “제한된 폴 루프를 사용하고, 무제한 대기는 하지 마세요” – 백그라운드 프로세스에서 무한 루프 위험을 없앴습니다.
  7. max_steps 감소 – 25 → 15. 에이전트가 효율적으로 동작하도록 강제하면서도 작업을 완료하기에 충분했습니다.
  8. 단계 임계값 단순화 – 복잡한 적응 계산 대신 항상 max_steps - 2를 사용합니다.
  9. CODING_INSTRUCTIONS 임포트 제거 – 매 프롬프트에 로드되는 불필요한 토큰 오버헤드를 없앴습니다.

이러한 변경 사항은 별난 것이 없으며, 뒤돌아보면 모두 명백합니다. 이들을 합치면 98 % 비용 절감 효과가 있습니다. 중요한 점은 인간이 직접 적용한 것이 아니라 — 옵티마이저가 실험을 통해 각각을 발견하고 검증했다는 것입니다.

왜 이것이 작동하는가

RelentlessCodingAgent는 일반‑목적 코딩 루프입니다: 자연어로 된 작업을 받고, Bash와 Read, Edit, Write 도구에 접근할 수 있으며, 성공할 때까지 하위 세션을 실행합니다. repo_optimizer.py는 단순히 이 동일한 루프를 내부적으로 재사용합니다.

이는 KISS 프레임워크의 세 가지 특성 때문에 가능합니다:

  1. Agents는 단순히 Python 함수입니다. 구성 파일이 없습니다 c

(원본 내용은 여기서 끝납니다; 설명의 나머지는 소스에서 잘렸습니다.)

더 큰 그림: repo_agent.py

옵티마이저는 실제로 훨씬 더 단순한 도구인 repo_agent.py의 특수화 버전입니다. 이 스크립트는 28줄짜리로, 어떤 작업이든 명령줄 인수로 받아 프로젝트 루트에서 실행합니다:

uv run python -m kiss.agents.coding_agents.repo_agent "Add retry logic to the API client."

레포 에이전트와 레포 옵티마이저는 동일한 엔진(RelentlessCodingAgent)과 동일한 인터페이스(문자열)를 공유합니다. 차이점은 작업뿐입니다. 옵티마이저의 작업은 **“이 에이전트를 속도와 비용 면에서 최적화한다.”**는 것이지만, “포괄적인 테스트 커버리지를 추가한다” 혹은 **“REST에서 GraphQL로 마이그레이션한다”**와 같이 쉽게 바꿀 수 있습니다.

KISS의 에이전트들은 당신이 무엇을 시키든 상관하지 않습니다. 그들은 ‘완료될 때까지 끈질기게’ 수행하는 것에만 집중합니다.

직접 해보세요

# Install KISS
# https://github.com/ksenxx/kiss_ai/README.md

# Run the repo optimizer on your own codebase
uv run python -m kiss.agents.coding_agents.repo_optimizer

# Or give the repo agent any task in plain English
uv run python -m kiss.agents.coding_agents.repo_agent "Refactor the database layer for connection pooling."

프레임워크, 에이전트, 그리고 옵티마이저 모두 오픈 소스입니다:
github.com/ksenxx/kiss_ai

KISS는 Koushik Sen에 의해 구축되었습니다. 기여를 환영합니다.

0 조회
Back to Blog

관련 글

더 보기 »