본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 06. 22:56

탭 전환이 지겨워서 터미널 기반 AI 노트 작성 도구를 만들었습니다

요약

컨텍스트 스위칭으로 인한 집중력 저하를 해결하기 위해 Go 언어로 제작된 터미널 기반 AI 노트 작성 도구 'Rune'을 소개합니다. TUI 환경에서 LLM과 대화하며 마크다운 노트를 실시간으로 자동 생성합니다.

핵심 포인트

  • 터미널 내에서 LLM 대화와 노트 작성을 동시에 수행
  • 컨텍스트 스위칭을 최소화하여 학습 흐름 유지
  • Go 언어 기반의 TUI(Terminal User Interface) 구현
  • 로컬 파일 시스템에 구조화된 마크다운 저장

컴퓨터 앞에 앉아 무언가를 깊이 있게 배우려고 할 때 느껴지는 특유의 좌절감이 있습니다.

어떤 주제, 예를 들어 "분산 시스템 (distributed systems)"이나 "선형 대수학 (linear algebra)"을 펼칩니다. 브라우저에서 ChatGPT나 Claude를 켭니다. 대화를 시작하며 어느 정도 진전이 생기고, 머릿속에 모델을 구축해 나갑니다. 그러다 방금 배운 내용을 적기 위해 에디터로 Alt-Tab을 눌러 전환합니다. 다시 후속 질문이 생겨 브라우저로 돌아갑니다. 그러고 나서 다시 에디터로 돌아옵니다. 그러다 보면 스스로의 흐름(flow)을 계속 끊어버렸기 때문에, 노트가 미완성된 생각들로 엉망이 되어 있다는 사실을 깨닫게 됩니다.

저는 이 루프에 끊임없이 빠지곤 했습니다. 그래서 이를 해결하기 위해 무언가를 만들었습니다.

Rune이란 무엇인가?

homescreen

Rune은 Go 언어로 작성된 터미널 기반 AI 노트 작성 동반자입니다. 완전히 터미널 내에서 작동하며, 로컬 또는 클라우드 LLM (Large Language Models)과 대화하고, 구조화된 마크다운 (markdown) 노트를 로컬 파일 시스템에 직접 작성합니다. 이 모든 과정이 단일 TUI (Terminal User Interface) 창 안에서 이루어집니다.

요약하자면: 주제를 입력하면 Rune이 그 과정을 안내하며, 대화를 나누는 동안 노트가 자동으로 작성됩니다.

제가 실제로 해결하고자 했던 문제

문제는 도구가 나빴던 것이 아닙니다. ChatGPT는 훌륭합니다. Obsidian도 훌륭합니다. 문제는 그들 사이의 "간극" — 즉, 집중력을 깨뜨리고 노트를 미완성 상태로 남겨두는 끊임없는 컨텍스트 스위칭 (context switching)이었습니다.

저는 다음과 같은 기능을 원했습니다:

  • 빈 파일이 아닌, 주제로부터 시작할 것
  • 제가 무언가를 "학습 (learning)"하고 있는지 아니면 "조사 (researching)"하고 있는지에 따라 세션을 구조화할 것
  • 대화가 진행됨에 따라 나를 대신해 노트를 작성할 것
  • 창을 전환하지 않고도 실시간으로 노트를 볼 수 있을 것
  • 모든 것을 로컬에 저장하여 내가 소유할 것

그것이 바로 Rune입니다.

작동 방식 — 단계별 안내

runedemo

Rune을 실행하면 가장 먼저 주제를 묻습니다. Go concurrencysystem design, 또는 CQRS pattern 같은 것들 말이죠.

그다음 Rune은 세션을 분류 (classifies the session) 합니다. 이것이 당신이 배우려고 하는 _기술 (skill)_인지, 아니면 조사 중인 연구 (research) 주제인지 파악합니다. 이를 바탕으로 메인 세션이 시작되기 전에 몇 가지 가이드 질문을 던집니다. 사소해 보일 수 있지만 중요한 부분입니다. 이 과정은 당신이 해당 세션에서 실제로 무엇을 얻고자 하는지에 대해 의도적으로 생각하게 만듭니다.

그러면 메인 TUI (Terminal User Interface)가 열립니다.

인터페이스는 Bubbletea로 구축된 이중 패널 탭 레이아웃 (dual-panel tabbed layout) 구조입니다. 왼쪽 패널은 채팅창입니다. Tab 키를 눌러 접근할 수 있는 오른쪽 패널은 생성되고 있는 마크다운 (markdown) 노트의 실시간 미리보기 또는 노트 디렉토리의 파일 탐색기를 보여줍니다.

채팅을 진행함에 따라, Rune은 구조화된 마크다운 파일을 디스크에 직접 작성합니다. 미리보기 패널은 파일 시스템을 감시하며 실시간으로 다시 렌더링합니다. 당신은 노트가 문장 단위로 형태를 갖춰가는 과정을 말 그대로 지켜볼 수 있습니다.

그날의 작업을 마치면 프로그램을 종료합니다. 내일 다시 돌아왔을 때, 동일한 주제를 다시 열면 Rune이 이전 세션 기록을 불러옵니다. 별도의 설정이나 컨텍스트 (context)를 다시 설명할 필요가 없습니다.

이야기할 가치가 있는 기술적 결정들

Go + Bubbletea

Go는 CLI (Command Line Interface) 도구를 위한 명백한 선택이었습니다. 빠른 시작 속도, 단일 바이너리 (single binary), 그리고 견고한 동시성 기본 요소 (concurrency primitives)를 갖추고 있기 때문입니다. Bubbletea는 제가 TUI를 위해 사용한 프레임워크입니다. 이 프레임워크는 Elm 스타일의 아키텍처 (Model → Update → View)를 따르는데, 덕분에 이중 패널 레이아웃과 탭 전환을 놀라울 정도로 깔끔하게 구현할 수 있었습니다.

Ollama를 활용한 로컬 우선 (Local-First) 방식

기본적으로 Rune은 로컬에서 실행 중인 Ollama 인스턴스(http://localhost:11434)와 통신합니다. API 키가 필요 없으며, 데이터가 기기 외부로 유출되지 않습니다. 클라우드 모델을 사용하고 싶다면 환경 변수나 앱 내 설정 화면(Ctrl+T)을 통해 폴백(fallback)을 구성할 수 있습니다.

OLLAMA_URL=http://your-remote-instance:11434
OLLAMA_MODEL=llama3
OLLAMA_CLOUD_MODEL=claude-3-5-sonnet
...

노트 저장 (Notes Storage)

Rune이 생성하는 모든 것 — 마크다운 (markdown) 파일, 세션 상태 (session state), 설정 (config), 로그 (logs) — 는 홈 디렉토리의 rune/ 폴더에 저장됩니다. 독점적인 형식이 아닌 일반 텍스트이며, 데이터베이스를 사용하지 않습니다. 이 파일들을 어떤 에디터로든 열 수 있고, git에 커밋하거나 이미 사용 중인 어떤 도구와도 동기화할 수 있습니다.

파일 첨부 (File Attachments)

TUI 컴포저 (composer)에서 PDF, CSV, 텍스트 파일을 세션의 컨텍스트 (context)로 직접 첨부할 수 있습니다. 무언가를 조사할 때 모델이 학습 데이터가 아닌 실제 문서를 바탕으로 작업하기를 원할 때 유용합니다.

시작하기 (Getting Started)

로컬에 Go와 Ollama가 설치되어 있어야 합니다.

git clone https://github.com/bogusdeck/Rune
cd Rune
go build -o rune .
...

그런 다음 Rune을 실행하고, 주제를 입력하기만 하면 됩니다.

향후 계획 (What's Next)

Rune은 아직 초기 단계입니다. 계획 중인 몇 가지 사항은 다음과 같습니다:

  • 더 쉬운 설치를 위한 Homebrew tap
  • 더 많은 세션 유형을 통한 더 나은 주제 분류
  • 세션을 PDF 또는 HTML로 내보내기
  • 커스텀 노트 템플릿을 위한 플러그인 지원

만약 여러분이 터미널에서 생활하며 마크다운으로 노트를 작성하는 분이라면, 진심으로 직접 사용해 보시고 무엇이 고장 났거나 불편한지 말씀해 주시면 감사하겠습니다.

Repo: github.com/bogusdeck/Rune

Site: runecli.vercel.app

AI 자동 생성 콘텐츠

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

원문 바로가기
0

댓글

0