Open Source · Prompt Harness
self-tuning-loop
직접 쓰던 setup에서 OSS로 빼낸 diff 기반 프롬프트 harness. 어차피 하던 편집에서 가이드라인을 자동으로 정제합니다.
v0.1 · public · MIT · 2026–
정체와 이유
매일 몇 개의 AI 드래프팅 파이프라인 — LinkedIn 포스트, 블로그 드래프트, 뉴스 큐레이션 — 을 운영하고 있습니다. 드래프트를 편집할 때마다 학습 시그널이 만들어집니다. 모델이 쓴 것과 제가 실제로 발행한 것 사이의 diff가 그것입니다. 대부분의 팀은 이 시그널을 버립니다. "모델을 더 좋게 만든다"의 표준 답이 fine-tuning, GPU, labelled data이기 때문에, 어디에든 쌓이고 있는 피드백이 그대로 방치됩니다.
self-tuning-loop은 제 setup 안에서 그 갭을 메우려고 만든 작은
조각입니다. 잘 작동해서 OSS로 빼냈습니다. 각 (draft, final)
페어를 캡처하고, LLM이 3회 이상 반복되는 패턴을 찾아내고, 각
패턴을 Safe / Risky로 분류해 Safe만 프롬프트 가이드라인의 새
버전에 추가합니다. 출력은 plain markdown이라,
git diff로 감사할 수 있고
롤백은 한 줄이면 됩니다.
루프
┌──────────┐ ┌────────────┐ ┌────────────────┐ │ AI draft │ ─► │ Human edit │ ─► │ Diff captured │ └──────────┘ └────────────┘ └───────┬────────┘ ▲ │ │ ▼ ┌────┴──────────────┐ ┌────────────────────┐ │ Updated prompt │ ◄──[Safe]─│ LLM extracts │ │ (next draft uses) │ │ repeating pattern │ └───────────────────┘ └────────────────────┘ scored per version → improvement visible
Generate · Capture · Analyse · Evolve. 앞의 세 단계는 앱과 인라인으로 돌고, 마지막 Evolve는 cron으로 실행됩니다 (기본 weekly). TypeScript on Node.js 22+, 스토리지는 Supabase, LLM 호출은 Anthropic SDK를 씁니다.
사용 방식
MJ Ops 안에서 시작했습니다.
토요일 회고 잡 (weekly-linkedin,
weekly-review) 이 각
파이프라인의 지난 주 diff를 읽고 다음 주에 쓸 갱신된 프롬프트를
발행합니다. LinkedIn 드래프팅, 뉴스 큐레이션, Naver 블로그
드래프팅이 모두 같은 루프를 자기 가이드라인 파일과 함께
통과합니다. 제 파이프라인에서 패턴이 명확히 작동하는 것을 확인한
뒤, harness 자체를 이 레포로 빼냈습니다.
왜 fine-tuning, DSPy, TextGrad, OPRO가 아닌가
학계는 자동 프롬프트 최적화에 대해 진지한 연구를 쌓아 왔습니다. self-tuning-loop은 그 안에서 조금 다른 niche를 차지합니다. 이들 중 유일하게 사람의 편집 diff를 학습 시그널로 사용한다는 점입니다. 다른 방법들은 모두 팀이 일과 별개로 만들어내야 하는 예시, 점수 함수, labelled pair를 요구합니다.
| Fine-tune | DSPy | TextGrad | OPRO | STL | |
|---|---|---|---|---|---|
| 비용 | $$$ GPU | $ LLM | $$ LLM | $ LLM | $ LLM |
| 필요 데이터 | 100개+ labelled | 예시 + metric fn | 미분 가능 시그널 | Score function | 3+ diffs |
| 편집 시그널 | — | — | — | — | ✓ |
| 출력 포맷 | 블랙박스 weights | 컴파일된 프로그램 | Gradient text | Search trace | Markdown |
| 롤백 | 체크포인트 복원 | 재컴파일 | 재실행 | 재실행 | 한 줄 삭제 |
| 감사 가능 | No | Partial | Partial | Partial | git diff |
Trade-off는 분명합니다. 이 harness는 어려운 추론에서 fine-tuning을 이기지 못합니다. 대신 결과의 스타일 — 톤, 포맷, 구조 컨벤션 등 — 이 수렴해야 하는 상황에 맞춘 도구입니다.
상태
Public MIT 레포로 v0.1까지 공개되어 있고, README는 English와 한국어로 제공됩니다. 스택은 TypeScript + Supabase + Anthropic SDK. 대상은 이미 AI 드래프트를 편집하고 있고, 모델이 그 편집을 실제로 반영해 주길 바라는 솔로 파운더와 소규모 팀입니다.
Minbook 관련 글
- 버려지는 시그널 — 모든 팀이 이미 필요한 학습 시그널을 가지고 있는 이유.
- System Anatomy — 4단계 루프와 Safe/Risky 분류기.