Skip to main content

8. 초보자 코드 실습 1: Hello World부터 파일 생성 자동화까지

이제부터가 진짜 재미있는 구간입니다. 앞 장들에서 설치하고, 플러그인을 붙이고, 설정하고, 로그인까지 끝냈다면 준비 운동은 끝난 셈입니다. 이번 장에서는 "연동이 됐다"를 넘어서, 정말로 일을 시킬 수 있다는 감각을 손에 익혀 보겠습니다.

OpenCode는 터미널에서 쓰는 오픈소스 코딩 에이전트이고, OpenAI OAuth 플러그인을 통해 ChatGPT Plus/Pro 기반 Codex 계열 모델을 연결해 사용할 수 있습니다.12 그리고 opencode run 같은 비대화형 실행과 TUI 작업 흐름을 모두 지원하므로, 아주 작은 실습부터 단계적으로 성공 경험을 만들기 좋습니다.3

이번 장의 목표는 거창하지 않습니다. 텍스트 파일 하나 만들기, Hello World 코드 생성하기, 그 코드를 수정해 실행해 보기, 마지막에는 코드로 파일 여러 개를 자동 생성하는 스크립트까지 만들어 보는 것입니다. 작은 성공이 쌓이면, 그다음 장의 기존 프로젝트 분석과 수정도 훨씬 덜 무섭게 느껴집니다.

초보자 코드 실습 1: Hello World부터 파일 생성 자동화까지

이번 장에서 익힐 감각

이번 실습에서 꼭 잡아야 할 감각은 세 가지입니다.

  • 자연어 프롬프트로 파일을 만들 수 있다.

  • 만들어진 코드를 바로 실행해 결과를 확인할 수 있다.

  • 한 번의 요청으로 여러 파일과 작은 구조까지 자동화할 수 있다.

여기서 중요한 것은 "멋진 앱 완성"이 아닙니다. 내가 시킨 일이 실제 파일과 실행 결과로 돌아오는 경험이 더 중요합니다. 초보자는 이 감각이 생기면 갑자기 도구가 친근해집니다.

실습 준비: 연습 폴더를 하나 만들자

실습은 늘 새 폴더에서 하는 편이 마음이 편합니다. 기존 프로젝트를 건드리면 잘못 바뀌었을 때 괜히 긴장하게 되기 때문입니다.

아래처럼 연습용 폴더를 하나 만듭니다.

mkdir -p ~/opencode-lab-1
cd ~/opencode-lab-1
pwd

이 장의 예시는 대부분 아래 모델 기준으로 진행하겠습니다.

openai/gpt-5.2-codex + medium

이유는 단순합니다. 코드 생성과 수정 실습에 무난하기 때문입니다. 모델 선택 자체는 이미 앞 장에서 충분히 다뤘으니, 여기서는 손을 움직이는 데 집중하겠습니다.

실습 1: 코드 말고 텍스트 파일부터 만들어 보자

처음부터 자바스크립트 파일을 만들 필요는 없습니다. 가장 작은 성공은 아주 단순한 텍스트 파일입니다. 이 단계는 "프롬프트를 주면 파일이 생긴다"는 감각을 얻기 위한 워밍업입니다.

터미널에서 아래 명령을 실행해 보세요.

opencode run "Create a file named memo.txt with exactly three lines: Hello OpenCode / OpenAI OAuth works / This is my first generated file. Use plain text only." --model=openai/gpt-5.2-codex --variant=medium

실행이 끝나면 파일 내용을 직접 확인합니다.

cat memo.txt

예상 결과는 이런 모습입니다.

Hello OpenCode
OpenAI OAuth works
This is my first generated file.

이 실습이 중요한 이유는 아주 분명합니다. 프롬프트만으로도 파일 이름, 줄 수, 내용 형식을 제어할 수 있다는 것을 바로 확인할 수 있기 때문입니다. 초보자에게는 이 정도만으로도 충분히 큰 첫 성공입니다.

실습 2: Hello World 코드 생성하고 실행하기

이제 진짜 코드로 넘어가 보겠습니다. 가장 유명한 입문 예제인 Hello World는 여전히 좋은 출발점입니다. 단순해서 결과를 검증하기 쉽고, 실패했을 때 어디가 이상한지도 금방 보입니다.

아래 명령으로 hello.js를 만들어 봅시다.

opencode run "Create hello.js as a minimal Node.js script that prints Hello, OpenCode! to the console. Use only one console.log line." --model=openai/gpt-5.2-codex --variant=medium

생성된 파일을 확인합니다.

cat hello.js

보통은 이런 식의 코드가 들어갑니다.

console.log("Hello, OpenCode!");

이제 직접 실행해 봅니다.

node hello.js

정상이라면 출력은 아주 시원하게 끝납니다.

Hello, OpenCode!

여기서 초보자가 꼭 느껴야 하는 포인트가 있습니다. 방금 한 일은 단순히 AI에게 코드 설명을 들은 것이 아닙니다. 파일 생성 → 코드 확인 → 실제 실행까지 한 번에 해낸 것입니다. 이 순간부터 OpenCode는 채팅 도구가 아니라 작업 도구로 느껴지기 시작합니다.

실습 3: 만든 코드를 수정해서 입력값 받기

파일을 새로 만드는 것만으로는 반쪽짜리 경험입니다. 실무에서는 기존 파일을 고치는 일이 훨씬 많기 때문입니다. 이번에는 hello.js를 수정해서, 이름을 입력하면 인사하도록 바꿔 보겠습니다.

아래처럼 요청합니다.

opencode run "Update hello.js so it reads the first CLI argument as a name. If no name is given, use 'Beginner'. Print Hello, <name>! Keep the file short and beginner-friendly." --model=openai/gpt-5.2-codex --variant=medium

변경된 파일을 확인합니다.

cat hello.js

이런 형태가 나오면 좋습니다.

const name = process.argv[2] || "Beginner";
console.log(`Hello, ${name}!`);

이제 실행해 봅시다.

node hello.js Mina

출력은 이렇게 나와야 합니다.

Hello, Mina!

이 실습에서 새로 등장한 것은 process.argv[2]입니다. 이 말은 "터미널에서 node hello.js Mina처럼 실행했을 때, 세 번째 칸에 들어온 값" 정도로 이해하면 충분합니다. 너무 어려운 문법으로 받아들일 필요는 없습니다. 그냥 명령줄에서 입력한 이름을 읽어 오는 자리라고 생각하면 됩니다.

그리고 이름 없이 실행하면 기본값도 확인할 수 있습니다.

node hello.js
Hello, Beginner!

이 작은 수정 하나로도 금방 실감이 납니다. OpenCode는 새 파일만 잘 만드는 도구가 아니라, 이미 있는 코드를 읽고 요구사항에 맞게 고쳐 주는 도구이기도 합니다.

실습 4: 파일 하나를 두 개로 나눠 작은 구조 만들기

이번에는 한 걸음 더 가 보겠습니다. 초보자는 파일이 여러 개로 나뉘는 순간부터 갑자기 겁을 먹곤 합니다. 하지만 겁먹을 필요 없습니다. 이번 실습은 오히려 여러 파일 구조를 OpenCode가 어떻게 도와주는지 보여 주는 좋은 예입니다.

hello.js에 들어 있던 기능을 src/greet.js와 src/index.js로 나눠 보겠습니다.

opencode run "Refactor the current hello.js app into two files using CommonJS: src/greet.js and src/index.js. greet.js should export a greet(name) function. index.js should read process.argv[2] with default 'Beginner' and print the result. Delete hello.js after the refactor. Keep everything beginner-friendly." --model=openai/gpt-5.2-codex --variant=medium

어떤 파일들이 생겼는지 확인합니다.

find . -maxdepth 2 -type f | sort

예를 들면 이런 목록이 보일 수 있습니다.

./memo.txt
./src/greet.js
./src/index.js

이제 각 파일을 열어 봅니다.

cat src/greet.js
printf 'n---n'
cat src/index.js

아주 단순한 결과 예시는 아래와 같습니다.

src/greet.js

function greet(name) {
  return `Hello, ${name}!`;
}

module.exports = { greet };

src/index.js

const { greet } = require("./greet");

const name = process.argv[2] || "Beginner";
console.log(greet(name));

실행도 해봅니다.

node src/index.js OpenCode
Hello, OpenCode!

이 단계가 중요한 이유는, 이제 OpenCode가 단순히 한 줄짜리 파일만 만드는 것이 아니라 기능을 파일 단위로 분리하고, 서로 연결되는 구조까지 만들 수 있다는 점을 보여 주기 때문입니다. 초보자 입장에서는 여기서 자신감이 꽤 크게 올라갑니다.

실습 5: README까지 함께 만들기

실무에서는 코드만 있으면 끝이 아닙니다. "이걸 어떻게 실행하나요?"라는 질문이 항상 따라옵니다. 그래서 작은 프로젝트라도 실행 방법을 적어 둔 문서가 있으면 훨씬 좋습니다.

이번에는 방금 만든 구조를 설명하는 README.md를 생성해 보겠습니다.

opencode run "Create a beginner-friendly README.md in Korean for this project. Explain what the project does, list the files briefly, and show how to run it with node src/index.js OpenCode." --model=openai/gpt-5.2-codex --variant=medium

생성된 문서를 확인합니다.

cat README.md

문서가 너무 장황하면 다시 짧게 줄이도록 요청해도 됩니다.

opencode run "Shorten README.md so it fits on one screen and keeps only the essential run instructions." --model=openai/gpt-5.2-codex --variant=medium

이 실습이 좋은 이유는, OpenCode를 코드 생성기처럼만 쓰지 않고 문서 정리 도구로도 함께 쓸 수 있다는 점을 체감하게 해 주기 때문입니다.

실습 6: 코드로 파일 여러 개 자동 생성하기

이제 이번 장의 하이라이트입니다. 앞에서는 OpenCode가 파일을 만들게 했습니다. 이번에는 한 단계 더 나아가, OpenCode가 만든 코드가 또 다른 파일들을 자동으로 만들게 해보겠습니다. 여기서부터 "자동화"의 맛이 확 살아납니다.

scripts/generate-files.js라는 스크립트를 만들겠습니다.

opencode run "Create scripts/generate-files.js. When run with node, it should create a generated directory and three text files inside it: welcome.txt, todo.txt, and summary.txt. Put simple beginner-friendly sample content in each file. Use only built-in Node.js modules fs and path. Print a success message showing how many files were created." --model=openai/gpt-5.2-codex --variant=medium

생성된 스크립트를 확인합니다.

cat scripts/generate-files.js

결과는 대략 이런 느낌이면 충분합니다.

const fs = require("fs");
const path = require("path");

const outputDir = path.join(__dirname, "..", "generated");

if (!fs.existsSync(outputDir)) {
  fs.mkdirSync(outputDir, { recursive: true });
}

const files = {
  "welcome.txt": "Welcome to OpenCode practice!n",
  "todo.txt": "1. Learn promptsn2. Run coden3. Repeat small winsn",
  "summary.txt": "This folder was generated automatically.n",
};

for (const [fileName, content] of Object.entries(files)) {
  fs.writeFileSync(path.join(outputDir, fileName), content, "utf8");
}

console.log(`Created ${Object.keys(files).length} files in generated/`);

이제 직접 실행해 봅니다.

node scripts/generate-files.js

정상이라면 이런 메시지가 보입니다.

Created 3 files in generated/

진짜 파일이 생겼는지도 확인해 보세요.

find generated -maxdepth 1 -type f | sort
generated/summary.txt
generated/todo.txt
generated/welcome.txt

내용도 열어 봅니다.

cat generated/welcome.txt
printf 'n---n'
cat generated/todo.txt

여기서 얻는 감각이 아주 중요합니다. 이제 우리는 단순히 "AI가 파일 하나 써줌" 수준을 넘어섰습니다. AI가 자동화 스크립트를 만들고, 그 스크립트가 다시 여러 파일을 만든다는 흐름을 직접 경험한 것입니다. 이게 바로 실무에서 OpenCode가 체감되는 지점입니다.

같은 작업을 TUI에서 해보면 더 실무답다

지금까지는 opencode run으로 빠르게 실습했습니다. 이 방식은 아주 좋습니다. 다만 실제로 조금 더 길게 작업할 때는 TUI가 더 편한 경우가 많습니다. OpenCode는 인수 없이 실행하면 기본적으로 TUI를 시작합니다.3

연습 폴더에서 아래처럼 들어가 보세요.

opencode

그다음 이런 식으로 대화해 보면 좋습니다.

@scripts/generate-files.js 이 파일이 하는 일을 초보자에게 쉽게 설명해줘.

이어서 이렇게 요청할 수도 있습니다.

generated/todo.txt 내용을 더 친절한 한국어 체크리스트로 바꿔줘.

마지막으로 실행 결과까지 다시 확인해 봅니다.

!node scripts/generate-files.js

이 흐름이 실무에서 특히 좋습니다. 파일을 읽고, 설명을 듣고, 수정 요청을 하고, 바로 실행까지 한 자리에서 이어 갈 수 있기 때문입니다. 마치 옆자리의 조용한 짝꿍에게 "이 파일 뭐 하는 거야?", "여기 좀 고쳐 줘", "다시 실행해 봐"라고 말하는 느낌에 가깝습니다.

초보자에게 잘 먹히는 프롬프트 공식

초보자는 프롬프트를 너무 길게 쓰거나, 반대로 너무 짧게 써서 결과가 흔들리는 경우가 많습니다. 처음에는 아래 네 요소만 챙겨도 품질이 꽤 안정됩니다.

  • 어떤 파일을 만들거나 수정할지

  • 무엇을 하게 만들지

  • 어떤 기술이나 제약을 쓸지

  • 실행 확인을 어떻게 할지

예를 들어 나쁜 요청은 이런 식입니다.

자바스크립트 파일 좀 만들어줘.

이 요청은 너무 넓습니다. 파일 이름도 없고, 목표도 없고, 실행 방법도 없습니다.

조금 더 좋은 요청은 이런 식입니다.

Create hello.js as a minimal Node.js script that prints Hello, OpenCode! Use one console.log line only.

더 실전적인 요청은 이렇게 갈 수 있습니다.

Update src/index.js so it reads the first CLI argument as a name, uses Beginner as the default, and works with node src/index.js Mina.

좋은 프롬프트는 소설처럼 길 필요가 없습니다. 대신 작업 대상, 원하는 동작, 제약 조건이 분명해야 합니다.

실습이 꼬였을 때는 이렇게 복구하자

초보자는 실습 도중 파일이 어중간하게 바뀌면 당황하기 쉽습니다. 하지만 이런 일은 아주 흔합니다. 당황하지 말고 하나씩 확인하면 됩니다.

먼저 파일 내용을 다시 확인하세요.

cat hello.js
cat src/index.js
cat scripts/generate-files.js

그다음 실제 실행 결과를 봅니다.

node src/index.js Test
node scripts/generate-files.js

문제가 있으면 요청을 더 좁게 주면 됩니다. 예를 들면 이렇게요.

opencode run "Fix scripts/generate-files.js so it creates the generated directory if it does not exist and writes exactly three files: welcome.txt, todo.txt, and summary.txt." --model=openai/gpt-5.2-codex --variant=medium

핵심은 한 번에 너무 많은 걸 고치게 하지 않는 것입니다. 초보자일수록 작게 고치고, 바로 실행해 보고, 다시 고치기가 훨씬 안전합니다.

이번 장에서 꼭 가져가야 할 자신감

이번 장에서 우리는 아주 작지만 중요한 계단을 여러 개 올라왔습니다. 텍스트 파일 하나 만들기에서 시작해서, Hello World 코드를 만들고, 입력값을 받도록 수정하고, 파일을 둘로 나누고, README를 만들고, 마지막에는 자동으로 여러 파일을 생성하는 스크립트까지 만들었습니다.

이 흐름이 중요한 이유는 하나입니다. OpenCode와 OpenAI OAuth 연동의 가치는 로그인 화면에서 끝나지 않기 때문입니다. 진짜 가치는 내가 자연어로 지시한 작업이 실제 파일과 실행 결과로 돌아오는 순간에 드러납니다.23

오늘 한 실습이 단순해 보여도 괜찮습니다. 오히려 그래서 좋습니다. 작은 성공은 재현이 쉽고, 재현이 쉬우면 자신감이 붙고, 자신감이 붙으면 더 큰 작업도 덜 무섭습니다. 다음 장에서는 이 자신감을 바탕으로, 이미 존재하는 프로젝트를 읽고 분석하고 수정하는 쪽으로 한 단계 더 올라가 보겠습니다.

참고

1오픈 소스 AI 코딩 에이전트

2opencode-openai-codex-auth GitHub 저장소

3OpenCode CLI 문서

책 목록

초보자를 위한 OpenCode × OpenAI OAuth 실전 가이드: 설치, 설정, 로그인, 코드 실습까지

전체 목차 보기

이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.

틸노트는 사용자가 AI를 활용해 노트를 쉽게 작성하거나 편집할 수 있는 서비스입니다.

AI 스퀘어 단톡방에 함께해요

AI 활용과 틸노트 사용 팁을 나누는 오픈채팅방입니다. 입장 비밀번호는 tilnote입니다.

참여하기