Chapter 10: 자체 LLM 없이 시작하기 — Claude Code/Codex + Obsidian
10.1 GPU가 없어도 시작할 수 있다
이 챕터의 독자는 한 가지 조건을 공유한다. 자체 LLM 인프라가 없다. GPU 클러스터도, 사내 모델 호스팅도, 회사가 결제해주는 OpenAI Enterprise도 없다. 박사 1년차이거나, 산업 R&D의 1인 셀이거나, 도메인은 강하지만 ML 인프라는 약한 단독 연구자다. (Part II의 OSS 매트릭스를 본 독자라면 알겠지만, 2026년 5월 현재 6개의 LLM Wiki OSS 구현체 모두가 SaaS LLM을 가정한다 — 이것이 disclaimer가 아니라 entry point다.)
좋은 소식은 두 가지다. 첫째, 2026년 4월 Karpathy gist 이후 출시된 LLM Wiki 패턴은 모델이 아니라 파일 규약에 가깝다 [6]. raw markdown, agent instruction file (AGENTS.md / CLAUDE.md), git diff 워크플로우 — 모델이 바뀌어도 자료는 살아남는다. 둘째, Claude Code와 Codex의 무료/저비용 진입 비용은 GPU 호스팅 비용의 1/1000 수준이다 [2]. Karpathy 자신이 gist에서 명시한다: "copy-paste this idea file into your favorite LLM agent, e.g. Codex, Claude Code, OpenCode, Pi" [6].
(Chapter 2)의 4-레이어 분류에서 우리는 L1 LLM Wiki가 가장 먼저 구축해야 하는 기반 계층이라고 말했다. (Chapter 3)의 6-Level 성숙도 모델에서 L2(LLM Wiki)는 일회성 채팅(L0)과 AI Research Assistant(L1)를 넘어, 지식이 누적되기 시작하는 첫 단계다. Part IV의 세 챕터는 그 L2까지 가는 길을 단계별로 보여준다. 이 챕터는 Day 1이다. 5분짜리 PDF 한 편을 던지는 것에서 시작해, 30분 안에 첫 vault 구조를 잡고, 한 주 안에 hook으로 강제된 7가지 운영 규칙을 갖춘 연구 repo를 만들 수 있는 분량을 다룬다.
선행 서베이 Claude Code에서 Codex로 (이하 C2C-IV)의 Part IV가 같은 영역을 다루지만 더 짧다 [12]. 그 책의 Ch10은 Karpathy 패턴 자체를 소개했고, Ch11은 Obsidian 운영을 보여줬다. 이 책은 한 달 뒤의 시점에서 튜토리얼 깊이로 다시 쓴다. 한 달 사이에 OSS 구현체가 두 배로 늘었고, Codex 0.128의 /goal 명령이 출시되었고 [8], Claude Code의 subagent/hook/skill/MCP 4 메커니즘이 별도의 운영 패턴으로 정착했다 [2]. 이 챕터는 그 새 자료들을 onboarding-ready 형태로 압축한다.
10.2 설치 — 가장 작은 도구 묶음
먼저 도구다. 무엇을 깔아야 하나? 다음 네 가지면 충분하다.
1. Obsidian — 평문 마크다운 vault 에디터. 무료. 백링크와 graph view를 그 자리에서 보여주는 것이 GUI 텍스트 에디터 대비 결정적 차이다. obsidian.md에서 다운로드, 첫 실행 시 "Create new vault"를 누르고 적당한 폴더를 지정한다.
2. Claude Code (Anthropic CLI) — 터미널 기반 agent. npm install -g @anthropic-ai/claude-code로 설치, claude로 실행. 첫 실행 시 API key를 요구한다 (콘솔 console.anthropic.com에서 생성, 결제카드 등록 필수, 그러나 종량제 — 한 달 $10-30 수준에서 LLM Wiki onboarding이 충분하다). subagent, hook, skill, MCP 네 가지 primitive를 모두 지원한다 [2].
3. Codex CLI (OpenAI) — 터미널 기반 agent. npm install -g @openai/codex로 설치, codex로 실행. 0.128.0부터 /goal long-horizon 명령이 정식 지원되어, "5시간짜리 ingest를 자기 전에 걸어두기"가 가능해졌다 [7]. Tecton & Tide의 6시간 실행 보고는 /goal이 5시간 pause 후에도 살아남았음을 확인한다 [11].
4. git — 이미 깔려 있을 것이다. 깔려 있지 않다면 brew install git (macOS), apt install git (Ubuntu).
설치 직후 첫 vault 만들기 (Obsidian이 아니라 디스크에서 직접):
mkdir -p ~/research-vault/{raw/{papers,daily-notes,inbox},wiki/{concepts,claims,open-questions,dead-ends},agents,logs}
cd ~/research-vault
touch AGENTS.md CLAUDE.md README.md log.md TODO.md
git init && git add -A && git commit -m "init: empty research vault"
이것이 가장 작은 LLM Wiki 골격이다. Karpathy의 원형보다 디렉터리가 두 개 많다 — dead-ends/ (G14 negative-result capture)와 inbox/ (정리되지 않은 자료의 임시 보관소). 둘 다 wiki rot을 늦추기 위해 (Chapter 6)에서 정당화된 디렉터리다.
Cost transparency (G10): 위 환경의 한 달 실비는 Anthropic API $15-25, OpenAI API $10-20, Obsidian $0, 디스크 공간 무시 가능. 자체 GPU의 1/100 수준이고, 학생/주니어 1인의 커피값 수준이다. AAR의 $18k/5일 Opus 4.6 9-instance 실험 [2]과 비교하면 1/1000이다 — 즉, 이 챕터의 패턴은 AAR을 줄인 것이 아니라, AAR이 도달하기 전에 누구나 시작할 수 있는 base layer다.
10.3 최소 vault 구조 — Part II에서 검증된 골격
(Chapter 6)에서 우리는 wiki rot을 막기 위한 디렉터리 구조를 제안했다. 그 prescriptive schema를 onboarding용으로 단순화하면 다음 트리다.
research-vault/
├── raw/ # L1: 원본, immutable
│ ├── papers/ # PDF, arXiv export
│ ├── daily-notes/ # 일일 메모 (자기 손글씨)
│ └── inbox/ # 아직 정리되지 않은 자료
│
├── wiki/ # L2: LLM이 관리
│ ├── concepts/ # 기술 개념·용어
│ ├── claims/ # 출처 있는 주장 (claim schema 필수)
│ ├── open-questions/ # 미해결 질문
│ └── dead-ends/ # 시도했으나 실패한 가설 (G14)
│
├── agents/ # 작업별 specialist agent 설정
│ ├── literature-reviewer.md
│ └── statistician.md
│
├── logs/ # ingest/query/lint 변경 기록
│ └── 2026-05-22.md
│
├── AGENTS.md # L3: Codex용 instruction
├── CLAUDE.md # L3: Claude Code용 instruction
├── README.md # 인간 독자용 vault 설명
├── log.md # 매 세션 종료 시 갱신
└── TODO.md # 미완료 작업
(Chapter 4)에서 보여줬듯 Karpathy의 원형은 raw/와 wiki/ 두 디렉터리만으로도 작동한다 [6]. 위 구조는 거기에 연구용 4개 디렉터리(claims/, open-questions/, dead-ends/, logs/)를 추가했다. 이 4개는 연구 컨텍스트에서만 의미가 있다 — 개인 PKM에 그대로 적용할 필요는 없다. Wenhao Yu의 Zettelkasten 관점 비평이 지적하듯, 너무 많은 디렉터리는 그 자체로 wiki rot의 한 원인이다 [14]. 위는 "한 사람이 머릿속에 담을 수 있는 최대치"에 가깝다.
claim page 최소 필드 ((Chapter 6) 스키마):
---
type: claim
source: raw/papers/karpathy2026-autoresearch.pdf
confidence: medium
scope: nanochat-scale GPT-2 training
contradicts: []
---
# Claim: autoresearch reduces Time-to-GPT-2 by 11%
**Evidence**: Karpathy reports 700 experiments / 2 days / 11% reduction
in Time-to-GPT-2 metric on nanochat training loop [6].
**Verified by**: bswen2026autoresearch700 independent verification [16].
**Scope**: nanochat-scale (single-node GPU), GPT-2 architecture only.
**Open question**: does the 11% transfer to GPT-4-scale training?
→ see wiki/open-questions/autoresearch-scaling.md
이 schema는 "출처 없는 주장"이 wiki에 들어오는 것을 막는다. (Chapter 6)의 hook 표 중 첫 번째 항목 — citation check — 가 강제하는 것이 바로 이 형식이다.
10.4 AGENTS.md / CLAUDE.md 첫 작성
다음으로 agent에게 vault 구조를 설명해야 한다. 아래 템플릿이 가장 작은 작동하는 instruction file이다.
AGENTS.md와 CLAUDE.md는 거의 같은 내용을 담는다 — Codex와 Claude Code가 각각의 convention으로 자기 파일을 우선 읽기 때문이다 [2]. (Chapter 10 후반의 cross-vendor portability 논의 참조.)
# Research Vault — Agent Instructions
## Research Rules (Mandatory)
1. 모든 wiki/claims/ 페이지는 source ID를 가져야 한다.
source ID 없으면 commit 거부.
2. raw/ 디렉터리는 절대 수정하지 않는다.
원본 보존 — 새 정보는 wiki/ 또는 inbox/에만 쓴다.
3. 실험 코드는 unit test 또는 dry-run 후에만 실행한다.
4. 내부 데이터는 summary만 외부 모델에 전달한다.
원문 환자/고객/매출 데이터를 직접 prompt에 넣지 않는다.
5. wet-lab 또는 robot command는 human approval 전에 실행하지 않는다.
6. 결과가 예상과 다르면 실패 원인 3개 + follow-up 실험 3개를 wiki/dead-ends/에 기록한다.
7. report.md와 log.md를 세션 종료 시 갱신한다.
## Vault Structure
- `raw/papers/`: PDF, READ ONLY
- `raw/daily-notes/`: 일일 메모, READ ONLY
- `raw/inbox/`: 정리 대기, MOVE-OUT-ONLY (읽고 정리 후 삭제)
- `wiki/concepts/`: 기술 개념 페이지, EDIT OK
- `wiki/claims/`: claim schema 강제 페이지, EDIT OK
- `wiki/open-questions/`: 미해결 질문, EDIT OK
- `wiki/dead-ends/`: 폐기된 가설, APPEND ONLY (지우지 마라)
- `logs/YYYY-MM-DD.md`: 세션 로그, APPEND ONLY
## Standard Operations
"ingest [paper]" → read raw/papers/[paper], create wiki/claims/, wiki/concepts/ pages
"discuss [topic]" → search wiki/, synthesize answer with citations
"lint" → check for orphan links, missing sources, contradictions
"weekly review" → list pages modified this week, flag low-confidence claims
이 7개 규칙은 ChatGPT seed §9.1의 Research Rules에서 가져왔다. 핵심은 5번과 6번이다. 5번이 (Chapter 9)에서 다룬 RoboChem-Flex류 wet-lab 안전을, 6번이 (Chapter 6)에서 다룬 negative-result capture(G14)를 강제한다.
10.5 첫 PDF 던지기 — 5분 워크플로우
이론은 충분하다. 실제로 무엇을 하나? 첫 PDF를 던지는 5분 시나리오다.
# 1. arXiv에서 PDF 다운로드
cd ~/research-vault
curl -L https://arxiv.org/pdf/2408.06292 -o raw/papers/sakana2024-aiscientist.pdf
# 2. Claude Code 실행 (또는 codex)
claude
Claude Code 안에서:
> ingest raw/papers/sakana2024-aiscientist.pdf
5분 안에 다음 파일들이 생긴다 (실제로 저자의 vault에서 같은 명령으로 생성된 예시):
wiki/claims/sakana-end-to-end-loop.md— "Sakana v1은 ideation→experiment→paper→review를 end-to-end로 자동화한다 [17]"wiki/concepts/agentic-tree-search.md— Sakana v2가 도입한 tree-search 변형 설명wiki/open-questions/sakana-novelty-validity.md— "Sakana의 novelty assessment가 신뢰할 수 있는가? → Schmidgall 2025 반론 참조"logs/2026-05-22.md— "ingested sakana2024-aiscientist.pdf, generated 3 wiki pages, 1 open question"
이것이 LLM Wiki의 가장 작은 작동 단위다. 한 번의 ingest로 연결된 페이지 4개가 만들어진다. 페이지 간 연결은 [[wiki/open-questions/sakana-novelty-validity]]처럼 wikilink로 표현된다. Obsidian이 그 자리에서 graph view로 그려준다.
중요: 4개 페이지를 그대로 믿지 마라. (Chapter 11)에서 다루겠지만, terry의 4개월 운영 경험과 Aimaker의 4개월 longitudinal 보고 [15]가 한 가지에 합의한다: 첫 주에 ingest된 페이지의 약 30%는 한 달 뒤 lint 단계에서 수정·삭제·통합된다. 이것은 실패가 아니라 정상적 wiki 운영 사이클이다. 매주 한 번 claude 또는 codex에서 lint 명령을 실행하라 — 그 자체가 wiki rot 방어선이다.
10.6 Subagents · Skills · Hooks · MCP — 4 메커니즘의 연구 활용
Claude Code(와 Codex)는 단순한 챗 인터페이스가 아니다. 네 개의 메커니즘이 각각 다른 연구 사용처를 가진다 [2].
Subagent — task-specific specialist
별도의 context window, 시스템 prompt, tool 권한을 가진 specialized assistant. 예시 4개:
agents/literature-reviewer.md
agents/statistician.md
agents/safety-reviewer.md
agents/paper-formatter.md
literature-reviewer는 PubMed/arXiv MCP만 쓰고 wiki/ 만 쓰는 권한을 가진다. statistician은 numpy/scipy 코드를 실행하고 results/ 에 결과를 남긴다. 분리의 이유는 컨텍스트 오염 방지 — 통계 분석 중에 PubMed 검색 결과가 끼어들지 않게 한다. C2C-IV Ch10에서는 이 분리를 한 문단으로 다뤘다 [12]; 한 달 뒤의 운영 경험은 각 subagent가 자기만의 짧은 instruction file을 갖는 편이 같은 큰 instruction file을 공유하는 것보다 안정적임을 시사한다.
Skill — reusable workflow package
특정 업무에 필요한 instruction, scripts, resources의 패키징. 예: paper-ingest, claim-audit, weekly-review skill. Astro-Han의 karpathy-llm-wiki 패키지가 이 형식의 가장 깨끗한 예시다 — Claude Code, Cursor, Codex에서 모두 작동하는 skill 매니페스트로 raw→wiki→query→lint workflow를 포장한다 [3]. terry의 vault에서도 /post, /paper, /paper-search, /survey 등 사용자 정의 skill이 (Chapter 11)에서 등장한다.
Hook — deterministic gate
agent lifecycle의 특정 지점에서 deterministic shell command를 실행. (Chapter 6)에서 명시한 7가지 hook이 정확히 이 메커니즘으로 강제된다.
| Hook | 기능 | 구현 hint |
|---|---|---|
| citation check | wiki/claims/*.md에 source ID 없으면 commit 거부 |
pre-commit hook: grep -L '^source:' wiki/claims/*.md && exit 1 |
| raw immutability | raw/ 디렉터리 수정 시 차단 |
git pre-commit: git diff --cached --name-only raw/ && echo "raw is immutable" && exit 1 |
| test-before-run | 실험 코드 실행 전 test 요구 | tool-call hook: agent가 python experiment.py 호출 시 pytest tests/ 먼저 실행 |
| data boundary | 민감 데이터 외부 전송 차단 | API call hook: prompt 내용을 grep으로 patient/customer ID pattern 검사 |
| robot safety | 장비 command 생성 시 human approval | tool-call hook: 특정 MCP tool 호출 전 stdin 승인 요구 |
| report sync | 결과 생성 후 report.md/log.md 갱신 확인 | post-tool hook: 파일 수정 후 두 파일의 mtime이 현재 세션 이내인지 검사 |
| negative-result capture | 실패 가설을 dead-ends/에 자동 기록 | post-experiment hook: exit code≠0이면 wiki/dead-ends/ 에 stub 페이지 생성 |
마지막 hook이 (Chapter 6)에서 prescriptive하게 제안한 G14 schema slot이다. 어떤 OSS 구현체도 아직 이것을 갖지 않는다 — 이 책의 prescriptive contribution이다.
MCP — Model Context Protocol
Claude/Codex를 PubMed, 사내 데이터베이스, ELN, 장비 API에 연결하는 표준 인터페이스. 예시:
pubmed-mcp— 논문 검색 + 초록 가져오기arxiv-mcp— arXiv 메타데이터obsidian-mcp— vault 내부 검색 (ekadetov의 LLM Wiki 패키지가 이것을 자동 설정한다 [4])- 사내 PostgreSQL — internal experiment log 조회 (단, data boundary hook과 함께)
MCP는 paper-to-agent(Chapter 8)의 substrate이기도 하다. Stanford Paper2Agent가 논문 코드를 MCP 서버로 자동 변환한다 [10]; 이것이 (Chapter 12)의 L3 단계다.
10.7 Claude Code vs Codex — host portability의 honest framing
(Chapter 10)의 가장 흔한 질문: "Claude Code부터 배워야 하나, Codex부터 배워야 하나?"
honest 답변은 파일은 portable하지만 agent loop는 그렇지 않다 (G13)이다. 세 layer로 나누면:
| Layer | Claude Code | Codex 0.128 | Portability |
|---|---|---|---|
| 파일 규약 | CLAUDE.md, .claude/agents/*.md, vault markdown |
AGENTS.md, .codex/agents/*.toml, vault markdown |
완벽 — vault markdown은 양쪽 모두 읽음 |
| Slash command | /agents, /skills, /hooks |
/goal, /init, /exec |
부분 — /agents는 직접 대응 없음, /goal은 Claude의 long-horizon 패턴과 다름 |
| Agent loop primitive | subagent (별 context), hook (event-driven), skill | /goal (persistent), worktree (병렬), permission profile |
불가능 — 같은 워크플로우를 두 호스트에서 운영하려면 재설계 필요 |
C2C-IV의 결론 [12]이 한 달 뒤에도 유효하다: 지식이 CLAUDE.md 내부나 subagent memory가 아니라 AGENTS.md·HANDOFF.md·TODO.md 같은 평문에 외부화되어 있으면, Claude Code↔Codex 전환은 가능하다. 그러나 subagent를 9개 운영하는 워크플로우를 그대로 Codex /goal로 옮기는 것은 lossy 변환이다. claude2codex·cc2codex 자동 변환 도구들도 이 점을 명시한다 — subagent는 multi_agent=true skill로, hook은 대부분 drop된다 [12].
실용 권고:
- 빠른 대화형 실험·여러 specialist agent 병렬 — Claude Code
- 5시간짜리 자율 ingest·overnight 실행·worktree 기반 병렬 브랜치 — Codex 0.128
/goal - 둘 다 잘 모를 때 — 어느 쪽이든 한 달 깊게. 두 달째 다른 쪽을 시도하면 파일은 그대로 살아남는다.
Codex 0.128의 /goal 명령은 특히 주목할 가치가 있다. 2026년 4월 30일 출시 [8], Willison의 explainer는 이것을 "OEM-blessed Ralph loop"로 정의한다 [13]. Tecton & Tide의 6시간 실행 보고는 /goal이 5시간 pause 후에도 살아남았음을 확인한다 [11]. 즉, "자기 전에 ingest 5시간 걸어두고 아침에 결과 확인"이 가능하다 — LLM Wiki maintenance의 batch-mode 운영이다.
10.8 7가지 hook 규칙 — 운영 안전망
(Chapter 6) §6.x의 hook 표를 다시 가져와 구현 hint와 함께 정리한다. 이 7개를 첫 주에 모두 구현할 필요는 없다 — 1, 2번부터 시작하고, 데이터·실험·로봇에 닿을 때 3-7번을 차례로 켜라.
# .git/hooks/pre-commit (citation check + raw immutability)
#!/bin/bash
# Hook 1: citation check
for f in $(git diff --cached --name-only --diff-filter=AM | grep '^wiki/claims/'); do
if ! grep -q '^source:' "$f"; then
echo "ERROR: $f missing 'source:' field"
exit 1
fi
done
# Hook 2: raw immutability
if git diff --cached --name-only | grep -q '^raw/'; then
echo "ERROR: raw/ is immutable. Move new files to inbox/ or wiki/."
exit 1
fi
(Chapter 11)에서 보겠지만 terry의 vault는 이 hook들을 자체 git hook과 Claude Code의 tool_use hook 두 layer로 운영한다. 이중화의 이유는 단순하다 — agent가 git을 우회해서 직접 파일을 수정할 때를 위한 safety net이다.
10.9 첫 주의 체크리스트
이 챕터를 다 읽었다면 다음을 24시간 안에 끝낼 수 있다.
- [ ] Obsidian + Claude Code (또는 Codex) 설치
- [ ]
~/research-vault/골격 생성 +git init - [ ]
AGENTS.md/CLAUDE.md작성 (§10.4 템플릿 복사) - [ ] arXiv PDF 1편 다운로드 →
raw/papers/에 저장 - [ ]
ingest [paper]한 번 실행 - [ ]
wiki/claims/*.md3-4개가 생성되었는지 확인 - [ ]
git commit -m "first ingest"가 통과하는지 확인 (citation hook이 작동하면 통과)
이것이 L0(일회성 채팅)에서 L2(LLM Wiki)로의 도약이다. (Chapter 11)에서는 한 달 뒤의 모습 — terry가 4개월 동안 운영한 vault가 어떻게 진화했는지, 그것이 어떻게 terryum.ai로 확장되었는지 — 를 본다. (Chapter 12)는 L2에서 L5/L6까지의 단계별 로드맵이다.
핵심 메시지를 한 줄로: GPU가 없어도, 자체 LLM이 없어도, 평문 마크다운과 git과 1달 $30어치 API 호출만으로 외장두뇌의 가장 작은 작동 단위는 오늘 만들 수 있다. Karpathy의 BYOAI / files-over-apps 코인지는 (Chapter 4)에서 우리가 다룬 대로 빈말이 아니다 [6].
참고문헌
- Anthropic (2026). Claude Code memory + subagent documentation. Anthropic Developer Docs.
- Anthropic (2026). Automated Alignment Researchers — Using LLMs to scale scalable oversight. Anthropic Research, 2026-04-14.
- Astro-Han (2026). Astro-Han/karpathy-llm-wiki — Agent Skills-compatible LLM Wiki package. GitHub.
- ekadetov (2026). ekadetov/llm-wiki — Claude Code plugin for persistent compounding KBs in Obsidian. GitHub.
- Karpathy, A., Y. He, X. Lee, et al. (2026). LLM Wiki — A pattern for building personal knowledge bases using LLM agents. GitHub Gist, 2026-04-04.
- Karpathy, A. (2026). Farzapedia reply — personalization argument for LLM Wiki. X (Twitter), 2026.
- OpenAI (2026). Custom instructions with AGENTS.md. OpenAI Codex Docs.
- OpenAI Codex Team (2026). Codex CLI 0.128.0 release notes. OpenAI Codex Changelog, 2026-04-30.
- Park, J. (GeekNews) (2026). RAG는 잊어라, Karpathy가 제안하는 'LLM 위키'라는 새로운 지식 관리 패러다임. GeekNews, 2026. [GeekNews / Park, 2026]
- Stanford Paper2Agent Team (2025). Paper2Agent: Reimagining Research Papers As Interactive and Reliable AI Agents. arXiv:2509.06917.
- Tecton and Tide (2026). /goal: The Six-Hour Codex Run That Survived a Five-Hour Pause. Tecton and Tide Blog. [Tecton and Tide, 2026]
- Um, T. (terryum) (2026). Claude Code → Codex 이관 전략. terryum.ai post, 2026-04-24. [Um, 2026]
- Willison, S. (2026). Codex CLI 0.128.0 adds /goal. Simon Willison's Weblog, 2026-04-30.
- Yu, W. (2026). What Is Karpathy's LLM Wiki? A Zettelkasten User's Honest Review. Personal Blog, 2026.
- Aimaker (2026). AI-powered second brain from LLM Wiki — 4-month report. Aimaker Substack, 2026.
- bswen (2026). What Results Did 700 Autoresearch Experiments Achieve Overnight?. Medium, 2026-03-30. [bswen, 2026]
- Lu, C., Lu, C., et al. (2024). The AI Scientist: Towards Fully Automated Open-Ended Scientific Discovery. arXiv:2408.06292.