[오픈소스] Intent Language — 생각이 곧 코드가 되는 언어
Intent Language — 생각이 곧 코드가 되는 언어
문제: 생각과 코드 사이의 거리
프로그래밍의 근본적 문제 — 생각은 한 줄인데 코드는 수백 줄.
생각: "미국 주식 뉴스 모아서 cb12에 올리고 네이버에도 보내줘" 현실: Python 크롤러 + API 호출 + HTML 변환 + 인증 + 에러처리 + cron → 수백 줄, 파일 5개, 디버깅 3시간
50년간 이 문제를 풀려는 시도는 있었지만 전부 실패했다.
기존 접근이 실패한 이유
- 노코드 (Zapier, n8n) — 코드를 블록으로 바꿈. 블록 끌어다놓기 ≠ 생각의 구조
- AI 코딩 (Cursor, Claude) — 자연어→코드 번역. 결국 Python/JS가 나옴. 번역이 빠를 뿐
- 자연어 프로그래밍 — 모호함. 매번 다르게 해석
- SQL — 데이터 질문은 잘함. "저장하고 보내줘"는 못함
공통 문제: 전부 생각→코드 번역이다. 번역을 없앤 게 아니라 번역을 빠르게 할 뿐.
핵심 아이디어: 번역을 없앤다
Intent Language는 생각의 구조 자체가 실행되는 언어다.
사람의 의도(intent)는 4가지 구조로 이뤄져 있다:
- from — 소스 (뉴스, API, DB, 파일)
- do — 의도 (모아서, 분석해서, 요약해서)
- to — 목적지 (cb12, 네이버, 이메일, 슬랙)
- when — 조건/시점 (매일 7시, 변하면, 실패하면)
이 4가지로 거의 모든 작업을 표현할 수 있다.
코드 예시
예시 1: 뉴스 자동화
from 뉴스.미국주식 do 수집 → AI분석 → 요약 to cb12/usstock, 네이버카페/해외주식 when 매일 07:00 if fail → 텔레그램 알림
예시 2: 재고 알림
from shopify.재고 do "10개 이하인 상품 찾아줘" to 슬랙 #알림 when 재고 변할 때
예시 3: 게시글 검토
from cb12/usstock 최근 글 do "영업전문가 관점에서 검토해줘" to cb12/usstock 댓글
"영업전문가 관점에서 검토해줘"가 문자열이 아니라 실행 가능한 명령이다. AI가 런타임에 해석하기 때문.
기존 언어와의 차이
- 설계 기준 — 기존: 컴퓨터가 이해하는 구조 / Intent: 사람의 의도 구조
- 모호함 처리 — 기존: 컴파일 에러 / Intent: AI가 런타임에 해석
- "분석해줘" — 기존: 함수 직접 구현 / Intent: 그 자체가 실행 명령
- 통합 — 기존: import/require/pip / Intent: from 소스명 (내장)
- 스케줄 — 기존: cron 별도 설정 / Intent: when 매일 07:00 (내장)
왜 지금 가능한가
- LLM의 등장 — "분석해줘"를 런타임에 해석할 수 있는 AI가 생김
- API 경제 — 모든 서비스가 API로 연결 가능
- Claude Code 같은 도구 — 언어 자체(파서, 런타임)를 대화하며 만들 수 있음
5년 전엔 불가능했다. 5년 후엔 누군가 먼저 할 것이다. 지금이 창.
영감: DeepMind AlphaFold
AlphaFold가 위대한 이유는 AI 기술이 아니라 50년 된 미해결 문제(단백질 접힘)를 풀었기 때문이다.
Intent Language가 풀려는 문제도 50년 됐다: 생각과 코드 사이의 거리.
노코드는 코드를 숨겼고, AI 코딩은 번역을 빠르게 했다. 둘 다 거리를 줄인 것이지 없앤 것이 아니다.
거리를 0으로 만드는 것. 그게 Intent Language의 목표다.
다음 단계
- 언어 문법(Grammar) 정의
- 파서(Parser) 프로토타입 (Elixir)
- 런타임: from/do/to/when 실행 엔진
- AI 연동: do 절의 자연어를 LLM이 해석
- 첫 번째 실행 가능한 프로그램
작성: 2026-02-26
Intent Language 명세 v0.1 (1/2) — 언어 구조
1. 기본 단위: Intent Block
intent "뉴스 자동화" {
from 뉴스.미국주식
do 수집 → AI요약
to cb12/usstock
when 매일 07:00
on_fail 텔레그램 알림
}
핵심 규칙: 따옴표 안 = AI가 해석 (자연어) / 따옴표 밖 = 언어가 직접 실행 (키워드)
2. 데이터 흐름 (파이프라인)
→ 는 Unix 파이프와 같은 개념. 각 단계의 출력이 다음 단계의 입력.
intent "매출 리포트" {
from db.orders[this_week]
do "제품별 매출 합산" → "상위 10개만" → "한국어 요약"
to 이메일 boss@company.com
when 매일 09:00
}
실행 과정: db에서 데이터 → AI가 합산 → AI가 필터 → AI가 요약 → 이메일 발송
3. 변수와 상태
let 바인딩:
let 우리가격 = from db.products[name="아이폰"].price
let 경쟁가격 = from competitor.coupang[name="아이폰"].price
do "우리: {우리가격}, 경쟁사: {경쟁가격} → 비교 분석해줘"
암묵적 전달: from의 결과는 자동으로 do에 전달. 명시할 필요 없음.
4. 커넥터 (소스/목적지)
내장: db. / api. / file. / web. / 뉴스. 목적지: cb12/ / 네이버카페/* / 이메일 / 텔레그램 / 슬랙
확장 가능:
connector coupang {
type: api
base: "https://api.coupang.com"
auth: bearer("{env.COUPANG_TOKEN}")
products: GET /products
}
→ from coupang.products[category="전자"]
5. 복합 Intent (합성)
intent는 다른 intent를 참조. 레고처럼 조합.
intent "수집" as 미국뉴스 {
from 뉴스.미국주식
do 수집 → "중요도 분류"
}
intent "배포" {
from 미국뉴스
to cb12/usstock, 네이버카페/해외주식
when 매일 07:00
}
6. 조건과 분기
if 매출 > 1000만원 {
to 슬랙 #celebration "🎉 매출 1000만 돌파!"
}
if 매출 < 100만원 {
to 슬랙 #alert "⚠️ 매출 부진"
}
작성: 2026-02-26 | Intent Language v0.1
Intent Language 명세 v0.1 (2/2) — 런타임과 실행
7. AI 실행 모델
따옴표 = AI 영역. 내부 동작:
- 컨텍스트 수집 — from 결과 데이터 + let 변수
- 프롬프트 구성 — 시스템 프롬프트 + 사용자 지시 + 데이터
- LLM 호출 — Claude/GPT-4
- 결과 파싱 — 다음 파이프에 맞는 형태로 변환
- 검증 — to 요구사항과 매칭
AI 힌트 (선택): do "매출 분석" using claude, format=table, lang=ko
8. 에러 처리
on_fail {
retry 3회, 간격 5분
then 텔레그램 "뉴스 수집 실패: {error}"
then 로그 errors/news.log
}
9. 실행 환경 3가지
REPL (대화형):
$ intent
> from db.users[active=true]
> do "가입일 기준 분류"
→ [신규: 45명, 일반: 230명, 장기: 89명]
파일 실행: $ intent run daily_report.intent
데몬 (스케줄러): $ intent serve morning_tasks.intent
10. 런타임 아키텍처 (Elixir)
Intent Runtime
Parser → Planner → Runner → AI Engine
↕
Scheduler (when)
↕
Connector Layer
db|api|file|web|cb12|email
- Parser — .intent 파일 → AST
- Planner — AST → 실행 계획 (의존성 분석)
- Runner — 파이프라인 실행 (GenServer)
- AI Engine — 따옴표 절을 LLM에 전달/해석
- Scheduler — when 절 관리
- Connector — from/to 실제 I/O
Elixir 최적 이유: GenServer=독립프로세스, Supervisor=장애복구, Flow=대량파이프라인
11. 현실 변환 — MB의 워크플로우
현재 (Python + cron + OpenClaw): collect_stocks.py (200줄) + send_email.py (150줄) + upload_to_board.py (180줄) + cb12_to_naver.py (120줄) + cron 5개 = 총 650줄 + 설정파일
Intent Language:
intent "미국주식 데일리" {
from 뉴스.미국주식, api.yahoo_finance
do 수집 → "시장 동향 분석" → "투자자용 리포트 작성"
to cb12/usstock
when 매일 07:00
}
intent "크로스포스팅" {
from cb12/usstock[today]
do 변환.네이버SE
to 네이버카페/해외주식, 티스토리/미국주식
when 매일 20:30
}
650줄 → 15줄. 이게 Intent Language의 존재 이유.
작성: 2026-02-26 | Intent Language v0.1