본문으로 건너뛰기

© 2026 Molayo

GitHub요약2026. 05. 20. 02:38

yangshun/teenycode

요약

TypeScript로 작성된 200라인 미만의 초소형 코드 편집 에이전트인 teenycode를 소개합니다. OpenAI의 도구 호출(tool calling) 기능을 활용하여 파일 읽기, 목록 나열, 편집 기능을 수행하며, 에이전트 구축의 핵심 원리를 학습하기 위한 교육적 목적으로 설계되었습니다.

핵심 포인트

  • 200 LOC 미만의 최소한의 코드로 구현된 교육용 CLI 에이전트
  • OpenAI의 Tool Calling을 활용한 파일 시스템 제어 (read, list, edit)
  • Zod를 사용한 도구 입력 검증 및 JSON Schema 활용
  • 복잡한 의존성 없이 직접 수정 및 학습이 가능한 단순한 구조

TypeScript로 작성된 아주 작은 코드 편집 에이전트 (200 LOC) — OpenAI와 통신하며 작업 디렉토리의 파일을 읽고, 목록을 나열하고, 편집할 수 있는 최소한의, 해킹 가능한 CLI (Command Line Interface)입니다.

이 저장소는 Amp의 "How to Build an Agent"를 기반으로 제작되었으며, 최소한의 CLI 코딩 에이전트의 핵심 요소를 보여주기 위한 **교육적 목적 (educational purposes)**을 위해 만들어졌습니다.

  • OpenAI를 호출하고 도구 호출 (tool calls)을 사용하는 채팅 기반 CLI
  • 파일 도구:
    read_file (파일 읽기), list_files (파일 목록 나열), edit_file (단일, 고유한 교체 또는 새 파일 생성) - 추측하기보다 파일을 읽는 것을 선호하며, 요청을 충족하는 가장 작은 편집을 수행합니다.
  • 최소한의 의존성 (dependencies)과 직접 수정할 수 있는 단순한 코드

참고

bash 도구는 위험할 수 있고 이 저장소가 교육용으로 의도되었기 때문에 포함되지 않았습니다. 필요하다면 직접 추가할 수 있습니다.

  • Node.js 22+
  • npm / Vite Plus
  • OpenAI API 키

저장소를 클론(cloning)하지 않고 즉시 실행해 보세요 (본인의 OpenAI API 키가 필요합니다):

export OPENAI_API_KEY=sk-...
npx teenycode

또는 npx teenycode를 실행하는 디렉토리의 .env 파일에 OPENAI_API_KEY=sk-...를 넣으세요.

한 줄로 실행하고 싶다면:

OPENAI_API_KEY=sk-... npx teenycode

또는 저장소를 클론하여 소스에서 실행할 수 있습니다:

npm install
cp .env.example .env # 그 후 .env를 편집하여 OPENAI_API_KEY를 설정하세요
npm start

Chat with <model>과 같은 프롬프트가 나타나면 요청을 입력하세요. exit, quit, :q 또는 Ctrl-C로 종료할 수 있습니다.

OPENAI_API_KEY가 누락된 경우, CLI는 설정 안내를 출력하고 종료됩니다.

src/index.ts: 엔트리 포인트 (Entry point); OPENAI_API_KEY를 확인하고 에이전트를 시작합니다.
src/agent.ts: 채팅 루프 (Chat loop), 도구 라우팅 (tool routing) 및 메시지 상태 관리
src/tools.ts: Node fs API로 구현된 세 가지 내장 도구

에이전트는 함수/도구 호출 (function/tool calling) 기능이 있는 OpenAI Chat Completions를 사용합니다. 도구 입력은 Zod로 검증되며, 스키마는 모델을 위해 JSON Schema로 내보내집니다.

➜ teenycode git:(main) ✗ OPENAI_API_KEY=sk-... npx teenycode
Chat with gpt-5 (type 'exit' or 'quit' or use Ctrl-C to quit)
You: What is this repo about?
...

에이전트(Agent)는 세 가지 파일 도구(file tools)를 노출합니다:

read_file

(path: string

): 상대 경로(relative path)에 있는 파일의 텍text 내용을 읽고 반환합니다.

list_files

(path: string

): 주어진 경로의 파일과 디렉터리(directories)를 나열합니다 (현재 디렉터리의 경우 "."를 사용하세요).

edit_file

(path: string, old_str: string, new_str: string

): 주어진 파일에서 old_str과 정확히 일치하는 한 군데를 new_str로 교체합니다.

관례(Conventions):

  • 모든 경로는 현재 작업 디렉터리(current working directory)를 기준으로 하는 상대 경로입니다.

  • 에이전트는 추측하기보다 읽는 것을 선호하며, 가능한 한 가장 작은 변경을 만드는 것을 목표로 합니다.

  • 편집(Edits)은 설계 단계부터 정밀하게(surgical) 이루어집니다. 작업 내용을 git에 유지하고 자주 커밋(commit)하세요.

  • 에이전트는 현재 작업 디렉터리를 기준으로 동작합니다.

vp install
cp .env.example .env
# .env를 편집하고 API 키를 설정하세요
...
vp check
vp lint --fix
vp fmt
...

Amp의 'How to Build an Agent'에서 발췌되었습니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 GitHub Codex tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0