본문으로 건너뛰기

© 2026 Molayo

HN분석2026. 06. 08. 02:33

Show HN: Lathe – 새로운 도메인을 건너뛰는 것이 아니라, LLM을 사용하여 학습하세요

요약

Lathe는 LLM을 활용하여 사용자가 직접 실습할 수 있는 다부작 기술 튜토리얼을 생성하고 관리하는 도구입니다. 로컬 UI를 통해 생성된 튜토리얼을 수행하며, Claude Code, Cursor, Codex와 연동하여 학습 과정을 지원합니다.

핵심 포인트

  • 프롬프트 기반의 실습 위주 기술 튜토리얼 자동 생성
  • 로컬 UI를 통한 튜토리얼 수행 및 관리 기능 제공
  • Claude Code, Cursor, Codex 등 주요 AI 코딩 도구 지원
  • 튜토리얼 출처, 사용 모델, 프롬프트 기록 기능 포함

Lathe

당신을 대신해 생각하는 것이 아니라, 당신을 가르치기 위해 LLM (Large Language Models)을 사용하는 실험입니다.

Lathe는 콘텐츠를 쉽게 접근할 수 있도록 조정된 기술을 사용하여, 요청에 따라 실습 위주의 다부작(multi-part) 기술 튜토리얼을 생성합니다. 그런 다음, 즐거운 학습을 위해 처음부터 구축된 로컬 UI에서 직접 손으로 직접 튜토리얼을 수행합니다. (마치 우리가 석기 시대에 했던 것처럼 말이죠 😎)

<img src="docs/img/read-tutorial.png" alt="Reading a tutorial in the Lathe UI" width="800">

이것은 무엇인가요?

  • 어떤 프롬프트(prompt)로부터도 실습 위주의 기술 튜토리얼(단일 파트 또는 다부작 시리즈)을 생성합니다.
  • 목적에 맞게 구축된 로컬 UI에서 직접 튜토리얼을 수행합니다.
  • 기술(skills)을 사용하여 질문을 하고, 튜토리얼을 검증하며, 새로운 파트로 확장합니다.
  • 라이브러리에서 튜토리얼을 검색, 필터링 및 관리합니다.
  • 모든 튜토리얼은 출처, 사용된 모델, 그리고 튜토리얼의 "어조(voice)"를 이끌어낸 프롬프트를 기록합니다.

빠른 시작

Lathe는 LLM 기술과 생성된 튜토리얼을 저장, 관리 및 보기 위해 사용되는 Golang CLI의 조합입니다. 설치(아래 참조) 후, 다음과 같은 프롬프트를 입력하여 모든 LLM 세션(Claude Code, Cursor, Codex 지원) 내에서 튜토리얼을 생성할 수 있습니다:

/lathe build a 3D Slicer in Erlang
<img src="docs/img/lathe-prompt-cc.png" alt="Prompting Claude Code with `/lathe build a 3D Slicer in Erlang`" width="800">

그런 다음 아무 터미널에서나 lathe를 실행하세요:

lathe serve              # 웹 서버를 시작하고 브라우저를 엽니다
<img src="docs/img/tutorial-selection-light-mode.png" alt="Browsing tutorials in lathe (light mode)" width="800">

걱정 마세요, 다크 모드(dark mode)도 있습니다:

<img src="docs/img/tutorial-selection-dark-mode.png" alt="Browsing tutorials in lathe (dark mode)" width="800">

읽고 싶은 튜토리얼을 클릭하고 학습을 시작하세요!

CLI에는 다른 명령어가 많이 있지만, 솔직히 말씀드리면 이들은 LLM에게 튜토리얼을 관리할 수 있는 결정론적인 (deterministic) 방법을 제공하기 위해 구축되었습니다. 일상적인 사용에는 위에서 언급한 기능들만으로도 충분할 것으로 예상합니다 (저 역시 그것들만 사용합니다). 만약 튜토리얼에 대해 질문하거나, LLM에게 검증을 요청하거나, 추가적인 부분으로 확장하고 싶다면, UI에 각각의 기능이 마련되어 있어 해당 동작을 트리거하기 위해 LLM에 전달해야 할 정확한 기술/프롬프트 (skill/prompt)를 제공할 것입니다.

설치 (Install)

Lathe는 단일 독립 실행형 바이너리 (self-contained binary)입니다. $PATHlathe가 설정되어 있기만 하면 되며, 기술 (skills)은 대화형 Claude Code, Cursor 또는 Codex 세션에서 실행됩니다.

Homebrew (macOS, 권장):

brew install devenjarvis/tap/lathe

Cask (사전 빌드된 바이너리)로 배포되므로 macOS 전용입니다. Linux에서는 아래의 설치 스크립트나 go install을 사용하세요.

설치 스크립트 (curl | sh):

curl -sSf https://raw.githubusercontent.com/devenjarvis/lathe/main/install.sh | sh

Go (Go 1.25+ 필요):

go install github.com/devenjarvis/lathe@latest

소스로부터 설치 (From source):

git clone https://github.com/devenjarvis/lathe
cd lathe
go build -o lathe

기술 (skills) 설치

기술들은 바이너리에 포함되어 있습니다. lathe를 설치한 후, Claude Code (또는 Cursor / Codex)가 이를 발견할 수 있도록 프로젝트에 넣어주세요:

lathe skills install                 # ./.claude/skills/<name>/SKILL.md (이 프로젝트)
lathe skills install --user          # ~/.claude/skills/<name>/SKILL.md (모든 프로젝트)
lathe skills install --agent cursor  # ./.cursor/commands/<slug>.md (Cursor 슬래시 명령어)
...

Codex는 Claude Code와 동일한 SKILL.md 형식을 사용하므로, 기술들이 그대로 제공됩니다 (또한 --user~/.agents/skills/...에 설치됩니다). Cursor 명령어는 /<slug> (예: /lathe)와 같이 슬래시로 호출됩니다. 대화형 핸드오프 (interactive handoff) 모델은 Claude Code를 기준으로 문서화되어 있으므로, Cursor와 Codex에서는 몇 가지 런타임 (runtime) 세부 사항이 다를 수 있습니다.

이것이 존재하는 이유는 무엇인가요?

저는 2000년대 십 대 시절, Lua를 사용하여 PSP (PlayStation Portable)용 홈브루 (homebrew) 게임을 만들고, 그 후 C++를 사용하며 프로그래밍을 배웠습니다. 당시 제가 배운 것 중 많은 부분은 제가 참여할 수 있었던 것에 대해 매우 감사하게 생각하는 작은 PSP 홈브루 커뮤니티를 통해 이루어졌지만, 그 형성기 학습의 상당 부분은 인터넷에서 이용 가능한 무료 온라인 리소스와 튜토리얼 덕분이기도 했습니다 (2007 cplusplus.com에 감사를 표합니다. 세상에, 그 사이트에 지금은 예전보다 광고가 훨씬 더 많아졌네요 😅). 결국 저는 전문 소프트웨어 엔지니어가 되었고, 이후 10년 동안 수많은 기술 블로그와, 제 학습 스타일에서 더 중요한 요소인 실습형 튜토리얼 (hands-on tutorials)을 찾아 소비하며 "업스킬링 (upskilling)" (비록 보통 <본업>에 필요한 것보다 더 흥미로운 주제를 배우기 위한 것이었지만)을 해왔습니다. build-your-own-x repo, Crafting Interpreters, 그리고 레이 트레이서 (raytracer) 구축부터 시계열 데이터베이스 (timeseries database), 선형 대수 행렬 라이브러리 (linear algebra matrix library) 구축, 그리고 그 사이의 모든 것을 가르쳐준 1,000개의 다른 일회성 튜토리얼들이 저에게 큰 자산이 되었습니다 (진심으로, 저에게 영향을 준 그 놀라운 실습형 튜토리얼들을 모두 나열하는 것은 시작조차 할 수 없습니다).

실습형 학습 (Hands on learning)은 제가 항상 가장 잘 배웠던 방식입니다. 이러한 튜토리얼들은 제가 완전히 새로운 도메인에서 제로 투 원 (zero-to-one)으로 나아가는 데 필요한 학습 곡선 (learning curve)을 제공해주었을 뿐만 아니라, 무엇보다도 제가 스스로 원 투 투 텐 (one-to-two-to-ten)으로 나아갈 수 있는 발판과 자신감을 주었습니다.

시간을 빨리 돌려 2026년이 되었고, 이제 우리에게는 LLM (Large Language Models)이 있습니다. 제가 LLM과 맺고 있는 복잡한 관계에 대해 주제를 벗어난 이야기를 하지는 않겠지만, 소프트웨어를 작성하는 데 있어 LLM은 매우 흥미롭고, 많은 경우 정말 생산적일 수 있습니다! 하지만 LLM은 대부분의 작업을 대신 해줍니다. 그리고 그 작업이 사라짐과 동시에, 새로운 개념이나 도메인을 배우는 데 도움이 되었던 부분 또한 함께 사라집니다. 어떤 경우에는 그것이 중요하지 않을 수도 있습니다. 출시해야 할 제품이 있고 LLM이 더 빠르게 출시하도록 도와주니까요. 하지만 이 분야를 즐기는 저라는 개인에게는

선반(Lathe) 튜토리얼이 사람이 작성한 것만큼 훌륭할까요? 전혀 그렇지 않습니다. 하지만 열정, 개성, 그리고 구조적 견고함이 부족한 대신, 튜토리얼 작성자가 당신의 모든 질문에 답변하기 위해 대기하고 있으며, 당신이 원하는 것과 정확히 일치하지 않을 때 언제든 튜토리얼을 수정하거나 업데이트할 준비가 되어 있다는 점으로 이를 보완합니다. 또한, 이들은 2018년에 시작한 시리즈의 6개 파트를 실제로 모두 완성합니다 (우리 모두 그런 경험이 있죠 😁). Lathe는 LLM이며, 제가 이 특정 작업에 대해 제가 할 수 있는 한 최대한 좋게 구축하고 튜닝(Tuning)했음에도 불구하고, 여전히 LLM이 실패하는 방식으로 실패할 것입니다. 저는 당신이 접근할 수 있는 가장 큰 "사고형 (thinking)" 모델(Opus, GPT-5 Codex 등)을 사용할 것을 권장합니다. 이러한 작업은 프로그래밍할 때 최적화할 수 있는 반복적인 기계적 실행보다는, 하나의 구체적인 개념을 처음부터 끝까지 조사하고, 설계하고, 설명하는 것에 더 가깝기 때문입니다.

또한, 제 생각에 이 맥락에서 환각 (Hallucination)의 위험은 현저히 낮습니다. Lathe는 _당신_이 사고할 수 있도록 돕기 위해 구축되었으며, 당신이 직접 이 코드를 타이핑하고 있다는 기대치를 바탕으로 설계되었습니다. 가이드를 읽고 직접 타이핑함으로써, 당신은 작업에 능동적으로 참여하게 되며, 이상한 부분을 발견했을 때 자연스럽게 "잠깐, 이게 말이 되나?"라고 질문할 수 있는 위치에 있게 됩니다. 그 시점에 /lathe-ask를 사용할 수 있으며 (때때로 LLM은 제가 생소한 도메인이라 미처 생각하지 못했던 좋은 추론을 내놓기도 하여 저 또한 무언가를 배우게 됩니다), 또는 그냥 LLM에게 튜토리얼을 업데이트하라고 직접 말할 수도 있습니다. 이를 뒷받침할 교육학적 자격은 없지만, 저는 LLM의 인지된 실수들을 포착하고 반박함으로써 개념을 실제로 더 잘 내면화하고 있는 것 같다는 생각이 듭니다. 결과는 사람마다 다를 수 있습니다 (YMMV).

그럼에도 불구하고, 만약 사람이 작성한 튜토리얼 (tutorial)을 찾을 수 있다면 저는 항상 그것을 가장 먼저 선택할 것입니다. 대부분의 경우 그러기를 바랍니다. 하지만 저와 같은 방식으로 학습하며 교육 자료가 부족한 도메인에 뛰어들고 싶다면, lathe는 꽤 멋진 도구입니다. 다만 이것은 사람이 아니라 LLM (Large Language Model)이라는 점을 기억하세요. 이를 돕기 위해, 저는 사용자가 무엇을 얻을 수 있고 무엇을 얻을 수 없는지를 항상 명확히 하려고 노력합니다. lathe의 튜토리얼 작성 기술은 작성한 내용에 대해 확신이 없을 때 사용자에게 알려줄 것이며, 저는 좀 더 "개인적인" 목소리를 제공하면서도, 자신이 아닌 무언가인 척하지 않는 기본 설정을 유지해 왔습니다.

솔직히 말해봅시다, 이걸 '바이브코딩 (vibecode)' 하신 건가요? 그것은 당신의 논지와 모순되는 것 아닌가요?

네, lathe는 "바이브코딩 (vibecoded)" 되었습니다. 이 경우, lathe의 범위와 리스크는 낮습니다. 이것은 개인적인 학습을 위한 살아있는 논제입니다. 그렇긴 하지만, 저는 최근 이것을 매일 사용하고 있으며 제 도구 상자에서 유용하고 안정적인 도구임이 증명되었습니다. 저는 이것을 사용함으로써 많은 것을 배우고 있으며, 현 시점에서는 다른 사람들에게도 도움이 될 만큼 충분히 괜찮다고 생각합니다. 향후 몇 번의 포인트 릴리스 (point releases)에서는 다른 사람들을 위해 안정성을 유지할 수 있도록 의도적인 코드/아키텍처 (architecture) 정리 작업을 진행할 예정이며, 당연히 제가 받는 모든 피드백을 반영할 것입니다.

투명성을 위해 말씀드리자면, 오늘 저는 저의 개인적인 유스케이스 (usecases) — MacOS에서 Claude Code를 사용하는 환경 — 를 위해 lathe를 테스트합니다. 만약 이 설정 이외의 환경을 사용 중이라면, lathe가 작동은 해야 하겠지만, 제가 검증하지는 않았습니다. 만약 다른 설정에서 시도해 보았을 때 작동하거나, 혹은 진행 중에 문제에 부딪힌다면, 어떤 결과든 이슈 (issue)를 통해 알려주시면 정말 감사하겠습니다!

좋습니다, 그럼 어떻게 작동하나요?

  • LLM 기술 (LLM skills) — 튜토리얼을 생성하고 작업하며, 이 모든 과정은 사용자의 대화형 LLM 세션 내에서 실행됩니다: /lathepart-01.md를 작성하고, /lathe-extend는 다음 파트를 추가하며, /lathe-verify는 튜토리얼을 직접 실행하여 컴파일 및 작동 여부를 확인합니다. /lathe-ask는 읽고 있는 파트에 대한 질문에 답변하고, /lathe-tag는 기존 튜토리얼에 검색 태그를 추가합니다.
    • 저는 이 모든 것을 대화형으로 실행하는 방식으로 전환했는데, 그 이유는 제가 Claude Code 사용자이기 때문이며, 헤드리스(headless) claude -p 방식이 2026-06-15부터 유료 과금 체계로 전환될 예정이기 때문입니다. 해당 변경 이후에 비용이 미미하다는 것을 알게 된다면(튜토리얼 생성은 vibecoding에 비해 토큰을 많이 소비하지 않습니다), 이러한 상호작용 중 일부를 다시 UI로 옮길 수도 있을 것입니다. 지켜봐 주세요!
  • lathe CLI (Go) — 튜토리얼을 ~/.lathe/tutorials/로 복사하고, 렌더링된 결과물을 http://localhost:4242에서 서빙하며, 모든 영구적인 상태(durable state)를 관리합니다. CLI 자체는 LLM을 직접 호출하지 않습니다. 웹 버튼과 lathe verify/lathe extend 명령어는 단지 사용자가 세션에 붙여넣을 수 있도록 기술(skill) 명령어를 전달할 뿐이며, 이 기술들이 결과를 기록하기 위해 CLI(lathe store, lathe verify-result, lathe extend-start/extend-commit, lathe voice add)를 다시 호출합니다.

화려한 UI는 무엇인가요?

질문해 주셔서 감사합니다! lathe의 기술(skills)과 CLI는 (제가 생각하기에) 훌륭한 읽기 및 학습 경험을 제공하기 위해 병행하여 구축되었습니다. 저에게 있어 단순히 Claude에게 직접 프롬프트를 입력하는 것보다 lathe를 사용할 가치가 있게 만드는 몇 가지 핵심 기능은 다음과 같습니다:

오른쪽 사이드바에 마우스를 올리면 나타나는 전체 목차 탐색

[IMG:1]

더 깊이 생각하도록 유도하는 사이드 노트(side-notes)가 포함된 콘텐츠

[IMG:2]

각 튜토리얼 끝에 배치된 독자를 위한 연습 문제

[IMG:3]

글쓰기 목소리 (Writing voices)

AI 자동 생성 콘텐츠

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

원문 바로가기
0

댓글

0