업무 앱은 몇 토큰일까? 완전한 CRM이 16k라는 사실
AI가 실제로 일하는 단위로 재면, 완전한 CRM은 약 16k 토큰의 타입 메타데이터 — 컨텍스트 윈도우의 8%입니다. 에이전트의 컨텍스트에 통째로 들어가는 소프트웨어는 유지보수 방식이 달라집니다: 컨텍스트 크기의 소프트웨어.
요약: AI가 실제로 일하는 단위 — 토큰 — 로 재면, 완전한 CRM은 약 16,000 토큰입니다. 31개 파일, 1,792줄의 타입 메타데이터로 데이터 모델, 뷰, 대시보드, 리드 전환 플로, 권한, 액션, 번역까지 담습니다. 표준 200k 토큰 컨텍스트 윈도우의 8% 미만입니다. 이 기준을 통과하는 소프트웨어에는 이름을 붙일 가치가 있습니다. 컨텍스트 크기의 소프트웨어(context-sized software) — AI 에이전트가 통째로 담아 추론하고 전체를 리팩터링할 수 있을 만큼 작은 시스템입니다. 시스템이 컨텍스트 크기가 되는 순간, 에이전트는 자동완성이기를 멈추고 유지보수자가 됩니다.
직접 세어 보세요
이 숫자는 우리가 설계한 벤치마크가 아닙니다. 평범한 앱 — 오픈소스 ObjectStack 프레임워크에 동봉된 CRM 예제 — 에서 그대로 나온 값입니다:
git clone https://github.com/objectstack-ai/objectstack
find objectstack/examples/app-crm/src -name '*.ts' -not -name '*.test.ts' \
| xargs cat | wc -l
# → 31개 파일, 1,792줄 ≈ 16k 토큰 (토큰당 약 4자 기준)
| 시스템 | 파일 | 줄 수 | ≈ 토큰 | 200k 컨텍스트에 들어가나? |
|---|---|---|---|---|
CRM 예제 (app-crm) — 객체, 뷰, 대시보드, 플로, 권한, 번역 | 31 | 1,792 | ~16k | 예 — 12배 여유 |
| HotCRM — 완전한 마켓플레이스 CRM: 15개 객체, 10개 플로, 4개 대시보드, 2개 AI 코파일럿, 4개 언어 | 128 | ~17,000 | ~150k | 예 — 간신히 |
| 전통적인 수작업 CRM 코드베이스 | 수천 | 30만–100만+ | 수백만 | 아니요 — 어림도 없음 |
같은 제품 카테고리에서 세 자릿수 차이가 납니다.
왜 토큰이 올바른 단위가 되었나
50년 동안 우리는 소프트웨어를 코드 줄 수로 쟀습니다. 구속 조건이 인간 독자였기 때문입니다. 독자가 바뀌었습니다. AI 에이전트가 시스템을 안전하게 바꾸려면 먼저 시스템을 읽어들여야 하고, 이것이 모든 코드베이스를 두 가지 상태로 가릅니다:
- 시스템 > 컨텍스트. 에이전트는 grep하고, 표본을 뽑고, 추측합니다. 수정은 국소적인데 실수는 전역적입니다. 모든 변경이 열쇠 구멍 너머로 하는 고고학이 됩니다.
- 시스템 ≤ 컨텍스트. 에이전트는 모든 것 — 모든 객체, 모든 권한 규칙, 모든 의존성 — 을 한 번에 읽습니다. *“이걸 바꾸면 뭐가 깨질까?”*가 희망 사항이 아니라 답할 수 있는 질문이 됩니다. 데이터 모델, 권한, API, UI를 가로지르는 개념 하나를 통일해서 바꾸는 일도 하나의 일관된 diff입니다.
이건 점진적 개선이 아니라 상태 전환입니다. 그리고 경계선은 당신의 컨텍스트 윈도우가 있는 곳에 그어집니다.
업무 앱이 50배로 압축되는 이유
압축 트릭이 아니라 삭제 덕분입니다. 엔터프라이즈 애플리케이션은 두 가지가 뒤엉킨 것입니다:
- 결정. 어떤 객체가 존재하는지, 어떻게 연결되는지, 누가 어떤 필드를 볼 수 있는지, 리드가 전환되면 무슨 일이 일어나는지. 이것이 당신의 비즈니스 온톨로지이며, 진정으로 환원 불가능합니다 — 당신 말고는 아무도 결정할 수 없습니다.
- 배관. 테이블, CRUD 엔드포인트, 목록·상세 화면, 권한 미들웨어, 감사 기록. 이것은 지금껏 작성된 모든 업무 앱에서 사실상 동일하고 — 즉 유도 가능합니다.
ObjectStack의 베팅은 산출물에 결정만 남기고 배관은 전부 런타임이 유도하게 하는 것입니다. 그 1,792줄이 바로 결정 목록 — 타입이 있고 Zod로 검증되는 메타데이터입니다. 데이터베이스 스키마, REST API, 관리 UI, MCP 도구는 부팅 때마다 거기서 계산됩니다. 유도 가능한 것은 아무것도 저장되지 않으므로 표류할 수도 없고 — 당신의 토큰 예산을 쓰지도 않습니다.
압축되지 않는 것
경계에 대한 정직함이 홍보보다 중요합니다:
- 새로운 알고리즘. 가격 최적화 엔진이나 맞춤 매칭 엔진은 진짜 코드이고 앞으로도 그렇습니다. 포맷에는 비상구가 있습니다 — 액션과 플러그인은 평범한 TypeScript입니다.
- 픽셀 단위 맞춤 경험. 스키마 기반 UI는 엔터프라이즈 패턴을 아주 잘 렌더링하지만, 브랜드를 정의하는 마케팅 사이트나 게임을 만드는 방식은 아닙니다.
- 특이한 통합. 30년 된 SOAP 서비스로 가는 커넥터는 여전히 커넥터 코드입니다.
그래서 이 주장은 “모든 것이 메타데이터가 된다”보다 좁고 — 그래서 더 강합니다: 엔터프라이즈 소프트웨어의 대부분을 이루는 CRUD+워크플로 코어는 유도 가능하고, 정말 중요한 잔여물 — 온톨로지 — 는 컨텍스트에 들어갑니다.
소프트웨어가 컨텍스트 크기가 되면 무엇이 달라지나
- 리뷰가 진짜가 됩니다. 1,792줄은 코드 리뷰입니다. 30만 줄은 의식(儀式)입니다. 사람이 diff 전체를 읽을 수 있고, 검증 게이트와 런타임의 권한·감사 강제가 그 뒤를 받칩니다.
- 유지보수가 썩지 않습니다. 시스템 전체가 컨텍스트에 들어가면 에이전트는 보이는 부분만 땜질하는 대신 전체를 리팩터링합니다. 변경할 때마다 조금씩 더 위험해지는 엔터프라이즈 소프트웨어 특유의 엔트로피 곡선이 평평해집니다.
- 온톨로지는 당신 것입니다. 정의는 Apache-2.0 오픈 포맷이며 저장소 안의 평범한 파일입니다 — 사람이 읽을 수 있고, 어떤 에이전트든 쓸 수 있고, 런타임 간에 이식됩니다.
루프를 돌려 보세요
코딩 에이전트를 ObjectStack으로 향하게 하세요. 스캐폴드에 AGENTS.md와 스킬 번들이 들어 있어, 에이전트는 처음부터 이 포맷의 규칙을 읽은 상태로 시작합니다:
npm create objectstack@latest my-app && cd my-app
npx os dev --ui # 앱은 이미 실행 중 — 다음 변경을 에이전트에게 말하기만 하면 됩니다
저장소보다 브라우저가 좋다면, ObjectOS가 같은 아이디어의 운영형입니다 — 온라인으로 만들고 질문하기, AI Builder·권한·감사 내장.