9줄짜리 파이썬으로 구현한 Claude Code
Claude Code in 9 lines python
핵심 요약
Claude Code와 유사한 기능을 하는 최소한의 코딩 에이전트를 9줄의 파이썬 코드로 구현하여 공유함.
- 최소 구현 — 외부 의존성 없이 표준 라이브러리만 사용함
- API 호환성 — OpenAI 응답 형식과 호환되는 모든 API에서 작동함
- 코드 효율성 — 세션 관리와 캐싱을 통해 API 비용을 절감함
- 코드 골프 논란 — 가독성을 위해 변수명을 줄이는 방식에 대한 비판이 제기됨
Claude Code나 Codex처럼 사용할 수 있는 최소한의 코딩 에이전트 구현이 어떤 모습일지 궁금했습니다.
물론 기능 하나하나를 다 구현하려는 건 아니고, 불필요한 건 전부 걷어낸 상태를 말하는 거죠.
제가 생각해낸 결과물은 이렇습니다:
- 9줄의 파이썬 코드
- 외부 의존성 없음 (표준 라이브러리만 사용)
- OpenAI 응답 형식과 호환되는 모든 API에서 작동
- 컨텍스트 윈도우 사용량(%) 표시
기본적으로 API 비용 효율성도 꽤 좋은 편입니다:
- 시스템 프롬프트 없음
- 좋은 캐싱 (session_id, 안정적인 append-only 기록)
- 도구는 오직 하나: sh
코드는 깃허브에서 확인할 수 있습니다 (Go로 짠 ~20줄 버전도 있고, 클로저 버전도 곧 나올 예정입니다).
https://github.com/smol-env/smol
import json,sys;from subprocess import getoutput;from urllib.request import Request,urlopen;from uuid import uuid4
url=sys.argv[1];h=[];H={"Content-Type":"application/json","session_id":uuid4().hex};b=dict(model="gpt-5.6-sol",input=h,tools=[dict(type="custom",name="sh")])
while True:
if not(p:=input("> ")).strip():continue
h+=[dict(role="user",content=p)]
while True:
r=json.load(urlopen(Request(url,json.dumps(b).encode(),H)));o=r["output"];h+=o;c=[i for i in o if i["type"]=="custom_tool_call"]
if not c:print(o[-1]["content"][0]["text"],f'\n[{r["usage"]["total_tokens"]/10500:05.2f}%]');break
h+=[dict(type="custom_tool_call_output",call_id=i["call_id"],output=getoutput(i["input"])) for i in c]
참고: 아직 많은 OpenAI 응답 API 엔드포인트가 지원하지 않는 "custom" 도구 API를 사용합니다.
그렇긴 하지만, 에이전트에게 "function_call"을 통해 sh를 사용하도록 지시하고 모델 이름을 바꾸면 로컬 추론 엔드포인트에서도 바로 작동할 겁니다.
더 최소화하거나 (여전히 최소한이면서 유용한) 기능을 추가할 방법에 대한 질문이나 피드백은 언제든 환영합니다!

