-
Kev: Qwen 3.5 기반 1-Pass 오픈 의사결정 모델과 에이전트 도구 호출 60% 절감 아키텍처
AI 2026. 10. 2. 22:01반응형Kev: Qwen 3.5 기반 1-Pass 오픈 의사결정 모델과 에이전트 도구 호출 60% 절감 아키텍처
참고 및 출처: Turborepo와 TSDX의 창립자이자 Vercel의 핵심 개발 리더였던 재러드 파머(Jared Palmer)가 오픈소스로 공개한 Kev(
jaredpalmer/kev) 프로젝트 및 관련 기술 분석 자료(Jev's Architecture Unmasked, GeekNews #34065, Hacker News #49783999)를 바탕으로, 비자기회귀 의사결정 모델의 수학적 원리와 프로덕션 에이전트 최적화 패턴을 심층 분석했습니다.
1. LLM 의사결정의 비효율: "못을 박는 데 착암기를 쓰고 있는가?"
현대 AI 에이전트 파이프라인을 살펴보면 기이한 불균형을 자주 발견하게 됩니다. 사용자의 복잡한 코드를 리팩터링하거나 장문의 기획서를 작성하는 작업에는 수십억~수천억 파라미터의 초거대 언어 모델(LLM)이 필요합니다.
하지만 에이전트가 실행 도중 마주치는 수많은 판단 노드는 매우 단순합니다:
- "이 고객 문의는 결제 팀으로 보내야 하는가, 기술 지원 팀으로 보내야 하는가?"
- "방금 실행하려는 Bash 명령어가 시스템을 파괴할 위험이 있는가?" (True / False)
- "사용자의 질문 의도에 비추어 볼 때 다음 50개의 도구 중 어떤 도구가 필요한가?"
- "생성된 결과물이 스타일 가이드를 준수했는가?" (1점~5점)
많은 엔지니어링 조직이 이러한 단순 분류, 가드레일, 라우팅 노드에조차 Claude 3.7 Sonnet이나 GPT-4o 같은 프런티어 모델을 호출하고 있습니다. JSON Schema를 주입하고, 구조화된 출력(Structured Outputs)을 강제하며 말입니다.
[전통적인 생성형 LLM 기반 의사결정의 병목] 공통 문맥 (수천 토큰) + 분류 질문 │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ 생성형 LLM (8B ~ 70B+ Auto-regressive Model) │ │ ├─ '{"', 'category', '":', '"', 'billing', '"}' │ │ ├─ 수십~수백 개의 텍스트 토큰을 한 글자씩 O(N) 순차 생성 │ │ └─ 지연 시간: 500ms ~ 2,000ms | 고가의 토큰 과금 │ └──────────────────────────────┬──────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ 문제점: │ │ 1. 극심한 지연 시간 (에이전트 인터랙션 루프 붕괴) │ │ 2. JSON 파싱 실패 및 스키마 환각(Hallucination) 리스크 │ │ 3. 무의미한 확신도 ("confidence": 0.95 텍스트의 불확실성) │ └─────────────────────────────────────────────────────────────┘텍스트를 생성할 필요가 전혀 없고 오직 어떤 선택지가 타당한지에 대한 확률(Probability)만 필요한 자리에서, 토큰을 한 글자씩 만들어내는 자기회귀(Autoregressive) 디코딩을 돌리는 것은 "작은 못 하나를 박기 위해 거대한 착암기를 가동하는 것"과 다름없습니다.
2026년 9월, OpenAI ChatGPT의 핵심 발명가인 디오고 알메이다(Diogo Almeida)의 TypeSafe AI가 바로 이 지점을 파고들며 Jev(System One)를 공개했습니다. 텍스트 생성 없이 단 1회의 순전파(1-Pass)로 확률을 직접 읽어내는 접근법은 센세이션을 일으켰으나, 모델 가중치와 구조를 철저히 비공개로 유지하며 종량제 API로만 서비스하여 많은 엔지니어의 아쉬움을 샀습니다.
그리고 이 독점적 장벽을 허물기 위해 개발자 도구의 거장 재러드 파머(Jared Palmer)가 최신 Qwen 3.5 백본을 기반으로 Jev의 구조를 온전히 오픈소스로 역공학하고 고도화한 모델 패밀리가 바로 Kev입니다.
2. Kev의 탄생과 3대 의사결정 프리미티브
Kev는 아파치 2.0(Apache-2.0) 라이선스로 코드, 체크포인트(0.8B, 4B, 9B), 학습 파이프라인, 평가 벤치마크를 전면 공개한 오픈소스 의사결정 모델입니다.
① 의사결정 모델 3파전 비교
구분 TypeSafe Jev Jevlike ( vinnylarouge)Kev ( jaredpalmer/kev)공개 형태 비공개 독점 상용 API 오픈소스 초기 구현체 완전 오픈소스 (코드·가중치·학습기 전면 공개) 기반 백본 비공개 전용 아키텍처 Qwen 2.5 (고정) Qwen 3.5 (하이브리드 어텐션 + Gated DeltaNet) 및 Qwen 3 복합 쿼리 noul,choice,score동시 지원단일 다지선다만 지원 3대 프리미티브 복합 병렬 평가 완전 지원 질문 격리 내부 격리 보장 미구현 (단일 질의) 블록 인과 마스크 / DeltaNet 독립 행 분할 (오차 $< 4 \times 10^{-6}$) API 호환성 원본 규격 독자 규격 TypeSafe System One 공식 API ( POST /v1/systemone) 드롭인 호환모델 라인업 미공개 티어 단일 소형 모델 0.8B, 4B, 9B (자체 호스팅 및 온프레미스 배포 가능) 자가 학습 불가능 (비공개) 단순 스크립트 수백 개 JSONL 예제로 누구나 파인튜닝 가능한 kev.train② 3대 의사결정 프리미티브
Kev는 모든 복잡한 소프트웨어 제어 흐름을 다음 세 가지 기본 타입으로 분해하여 처리합니다:
🔍 클릭하여 확대flowchart TD State["공통 평가 상태 (State)\n(고객 문의, 코드 변경분, 시스템 로그, 중간 산출물)"] State --> SinglePass["단 1회의 백본 순전파 (Single Forward Pass)\n지연 시간: 수십 ms"] SinglePass --> Choice["1. choice (다지선다)\n- 기준 사전(Criteria Dict)에서 최적 키 선택\n- 전체 선택지 확률 분포 반환"] SinglePass --> Noul["2. noul (불리언 확률)\n- P(true) ∈ [0.0, 1.0]\n- P(false) = 1.0 - P(true) 구조적 보장"] SinglePass --> Score["3. score (순서형 점수)\n- 순서형 루브릭(Ordinal Rubric) 기반 평가\n- 등급별 분포 및 기대 점수(Expected Level) 산출"]choice(다지선다 선택): 상호 배타적인 기준 사전 중 가장 적합한 항목을 선택하고 소프트맥스 확률 분포를 반환합니다.noul(불리언 참/거짓 판단): 어떤 명제의 참일 확률 $P(\text{true})$를 산출하며, 거짓일 확률 $P(\text{false}) = 1 - P(\text{true})$가 수학적으로 완벽히 보장됩니다.score(순서 척도 평가):["낮음", "보통", "높음", "치명적"]과 같은 순서형 루브릭 상에서 상태를 평가하여 기대 점수(Expected Level)를 실수형으로 반환합니다.
텍스트 생성을 배제하고 순수 수치와 확률 벡터만을 출력하므로, 환각이나 JSON 문법 파싱 오류가 물리적으로 일어날 수 없습니다.
3. 핵심 아키텍처 딥다이브: 단일 순전파와 포인터 헤드(PointerHead)
Kev의 가장 혁신적인 엔지니어링 성취는 사전 학습된 언어 모델의 가중치를 파괴하지 않으면서 텍스트 생성 헤드를 의사결정 전용 헤드로 교체한 방식에 있습니다.
① 어휘 사전 확장 없는 특수 구분자(Delimiter) 재활용
일반적으로 모델에 새로운 태스크 구조를 부여하려면 어휘 사전(Vocabulary)에 특수 토큰을 추가하고 임베딩 테이블을 늘립니다. 하지만 임베딩 테이블을 확장하면 추가 학습 파라미터가 급증하고 기존 언어 모델이 쌓아둔 사전 학습 의미 공간이 왜곡됩니다.
Kev는 영리하게도 Qwen의 FIM(Fill-in-the-Middle)용 미사용 특수 토큰들을 의사결정 구분자로 전용했습니다:
토큰 표기 매핑된 기존 Qwen 토큰 의사결정 파이프라인 내 역할 <state><|fim_prefix|>공통 평가 대상 문맥의 시작 <q><|fim_middle|>개별 질문(Instruction)의 시작 <opt><|box_start|>개별 선택지(Option) 텍스트의 시작 </opt><|box_end|>개별 선택지 종료 지점 (선택지 은닉 벡터 추출) <decide><|fim_suffix|>모든 선택지 입력 완료 후 최종 판정 지점 구분자 주입 공격 방어: 악의적인 사용자가 본문 텍스트 내에
<|fim_prefix|>같은 제어 토큰을 삽입하여 파싱을 교란하는 것을 막기 위해, 토크나이저 전처리 단계에서 정규식을 통해 모든<|...|>패턴을<¦...¦>로 강제 치환하여 선택지 경계를 위조할 수 없도록 격리합니다.② 포인터 헤드(PointerHead)의 스코어링 수식
언어 모델의 마지막 계층에서 기존 단어 생성 헤드(
lm_head)를 떼어내고, 가벼운 선형 투영 계층으로 구성된 PointerHead를 장착합니다:┌──────────────────────┐ │ h_<decide> 은닉 상태 │ └──────────┬───────────┘ │ Linear Projection (W_q) ▼ [ q ] (Query Vector) │ ├──────────────┐ (Scaled Dot-Product) ▼ ▼ [ k_1 ] ◀── Linear (W_k) [ k_2 ] ◀── Linear (W_k) ▲ ▲ │ │ ┌─────────┴────────┐ ┌─────────┴────────┐ │ h_</opt_1> 은닉 │ │ h_</opt_2> 은닉 │ └──────────────────┘ └──────────────────┘- 선형 사영(Linear Projection): 모델의 최종 은닉 차원 $d$를 소형 포인터 차원($d_p = 256$)으로 투영합니다:
$$q = W_q \cdot h_{\text{decide}}$$
$$k_i = W_k \cdot h_{\text{opt}_i} \quad (i = 1, \dots, K)$$ - 로짓 계산(Logits): 스케일링 인자 $\frac{1}{\sqrt{d_p}}$와 온도 파라미터 $T$를 적용한 내적을 구합니다:
$$z_i = \frac{k_i^\top \cdot q}{\sqrt{d_p} \cdot T}$$ - 소프트맥스 확률 분포:
$$P(\text{option}_i) = \frac{\exp(z_i)}{\sum_{j=1}^K \exp(z_j)}$$
<decide>토큰은 질문과 모든 선택지가 나열된 맨 마지막 위치에 존재하므로, 인과적 어텐션(Causal Attention)을 거쳐 전체 후보들의 맥락을 온전히 흡수한 상태에서 단 1회의 연산으로 모든 선택지의 적합도 로짓을 동시 계산합니다.
4. 엄격한 질문 격리: 어텐션 백본 vs 하이브리드 DeltaNet
하나의 공통 상태(State, 예: 긴 고객 상담 내역)에 대해 여러 개의 질문(담당 부서 선택, 고객의 분노 여부, 긴급도 점수)을 한 번에 평가할 때, 질문 A의 내용이 질문 B의 확률 계산에 간섭해서는 안 됩니다.
Kev는 백본 아키텍처에 따라 질문 간 간섭을 완벽히 차단하는 두 가지 격리 방식을 구현했습니다.
[시퀀스 배치 구조] <state> ...공통 입력 텍스트... ├─ [질문 1] <q> 담당 부서 <opt> 결제 </opt> <opt> 배송 </opt> <decide> ├─ [질문 2] <q> 분노 감지 <opt> 참 </opt> <opt> 거짓 </opt> <decide> └─ [질문 3] <q> 긴급도 점수 <opt> 1 </opt> <opt> 2 </opt> <opt> 3 </opt> <decide>1) 어텐션 전용 백본 (Qwen3): 2D 블록 인과 마스크 (Block-Causal Mask)
표준 어텐션 모델에서는 전체 문맥과 모든 질문을 단일 시퀀스로 묶은 뒤 커스텀 2차원 어텐션 마스크를 씌웁니다:
- 공통 상태 토큰들은 자기들끼리만 어텐션을 수행합니다.
- 각 질문 $k$에 속한 토큰들은 공통 상태 토큰들과 자기 질문 브랜치 내부의 토큰들만 볼 수 있습니다.
- 다른 질문 브랜치의 토큰들은 마스크 값이 $-\infty$로 처리되어 완벽히 차단됩니다.
- 각 질문 브랜치의 위치 ID(Position ID)는 공통 상태의 마지막 토큰 번호 다음 값으로 동일하게 리셋되어 순서 의존성을 제거합니다.2) 하이브리드 백본 (Qwen3.5): Gated DeltaNet 선형 순환 분리 연산
최신 Qwen 3.5는 표준 어텐션과 Gated DeltaNet(선형 순환 계층)을 번갈아 사용합니다. 순환 계층은 내부 상태(Hidden State)를 시간 순으로 전파하므로 정적 2D 어텐션 마스크가 통하지 않는 기술적 난제가 발생합니다.
Kev는 이를 다음과 같은 분리 아키텍처로 해결했습니다:
1. 공통 상태(State) 1회 계산 및 프리픽스 캐싱: 공통 입력 문맥에 대해 어텐션 KV 캐시 및 DeltaNet 순환 상태를 단 한 번만 계산하여 보관합니다.
2. 독립 행(Row) 병렬 분할 포워딩: 캐시된 공통 상태를 기반으로 각 질문을 독립된 배치 행(rows_of)으로 분기하여 병렬 연산합니다.
3. 수학적 무결성 검증: 어텐션 마스킹 방식과 DeltaNet 분리 연산 방식의 출력 확률을 비교 검증한 결과, 부동소수점 오차는 $4 \times 10^{-6}$ 이내로 완벽한 수학적 동등성을 입증했습니다.
5. 벤치마크 및 하드웨어 서빙 실측
① 도메인 외(OOD) 및 실무 벤치마크
벤치마크 / 평가셋 Kev-0.8B Kev-4B Kev-9B 상용 TypeSafe Jev 도메인 외 평가 ( transfer-v4)68.4% 83.7% 85.2% 85.7% (단 0.5%p 차이) SemIf 복합 의사결정 (144건) 74.2% 88.3% 91.7% 96.5% Scienthoon 고객지원 부서 라우팅 (900건) 82.1% 93.4% 95.2% 89.7% (Kev 우세) Scienthoon 고객 톤/감정 분석 79.5% 89.8% 91.1% 91.4% (동등 수준) Kev-9B는 도메인 외 일반화 평가에서 상용 독점 모델인 Jev와 불과 0.5%p의 미세한 차이를 보였으며, 복잡한 비즈니스 고객지원 티켓 라우팅 실측에서는 오히려 상용 Jev를 5.5%p 앞서는 놀라운 판단력을 기록했습니다.
② 서빙 인프라 및 하드웨어 가속 레이턴시
- NVIDIA CUDA / AMD ROCm (H100, MI300X):
flash-linear-attention커널을 바인딩하여 5개 복합 질문을 수십 밀리초(tens of milliseconds) 내에 처리합니다.- Apple Silicon (M-시리즈 Mac):
- DeltaNet의 Metal 가속 커널 부재로 순수 PyTorch 모드에서는 Kev-4B 기준 약 700ms가 소요되지만, 반복 유입되는 772토큰 상태에 대해 상태 프리픽스 캐싱(State Prefix Caching)을 적용하면 추론 시간이 861ms에서 242ms로 3.5배 단축됩니다.
- 초저지연 로컬 서빙이 필요한 경우 표준 SDPA 가속이 적용되는 Qwen3 기반 모델(
jaredpalmer/kev-4b@qwen3, 174ms)을 사용할 수 있습니다.
③ 엔지니어링 주의점과 한계
- 지식 용량의 백본 의존성: 의사결정 구조 자체는 뛰어나지만 MMLU(Kev 0.74 vs Jev 0.90) 같은 방대한 학술 상식 질의에서는 소형 백본 자체의 파라미터 한계가 작용합니다.
- 날짜 연산 침식(Date Arithmetic Erosion): 의사결정 포맷으로 파인튜닝 시 기저 모델의 날짜 계산 능력이 0.82에서 0.72로 떨어지는 현상이 관찰되었습니다. 이는 프롬프트 전처리 단계에서 일수 계산 팩트(
date_facts: "오늘부터 3일 뒤는 목요일")를 주입함으로써 0.90으로 복구할 수 있습니다. - 미지의 질문(Unknowable) 과신 오류: 본문에 답이 전혀 없는 상황에서도 높은 확신으로 오답을 내는 비율이 존재합니다. 이때 단일 온도 스케일링($T \approx 2.0$)을 적용하면 고확신 오답률이 7.5%에서 3.2%로 크게 개선됩니다.
6. 프로덕션 에이전틱 패턴: 도구 호출 가지치기 프록시 (Tool Pruning Proxy)
Kev를 자율 코딩 에이전트(Claude Code, Codex, OpenCode 등) 파이프라인에 적용할 때 가장 폭발적인 시너지를 내는 아키텍처가 바로 도구 호출 가지치기 프록시(Tool Pruning Proxy) 패턴입니다.
① 비대해진 도구 스키마(Tool Schema Bloat)의 비극
현대 에이전트는 파일 입출력, grep, 터미널 실행, 브라우저 조작, git 등 50~100개 이상의 도구를 탑재합니다. 매 턴마다 수만 토큰의 도구 JSON Schema를 주입하면:
1. 시스템 프롬프트가 거대해져 입력 토큰 비용이 폭증합니다.
2. TTFT(첫 토큰 시간)가 지연되어 사용자 경험이 둔화됩니다.
3. 도구가 너무 많아 프런티어 모델이 엉뚱한 도구를 호출하는 주의력 분산 및 도구 환각이 발생합니다.② Kev 기반 도구 가지치기 파이프라인
🔍 클릭하여 확대sequenceDiagram autonumber actor User as 사용자 / 오케스트레이터 participant Agent as 에이전트 런타임 participant Proxy as Kev 도구 가지치기 프록시 participant Frontier as 프런티어 LLM (Claude 3.7 / GPT-4o) User->>Agent: "src/auth/token.ts의 만료 로직 버그 수정해줘" Agent->>Proxy: 현재 대화 문맥 + 전체 도구 스키마 50개 전달 Note over Proxy: Kev-4B 1-Pass 도구 연관성 고속 평가 (~30ms)<br/>비핵심 도구 40개 스키마 가지치기 Proxy->>Frontier: 선별된 도구 스키마 10개 + 문맥 주입 Frontier-->>Agent: 정확한 도구 호출 반환 (view_file, edit_file) Agent-->>User: 결과 실행 및 보고③ 실측 효과
- 도구 호출 빈도 60% 절감: 모델이 불필요한 탐색성 호출(
list_dir중복 실행 등)을 남발하지 않고 목적에 직결된 도구만 정확히 실행합니다. - 컨텍스트 토큰 및 비용 절감: 매 턴 프런티어 모델로 전송되는 도구 스키마 토큰이 수천 개씩 제거되어 에이전트 운영 비용이 드라마틱하게 낮아집니다.
- 안전망(Always-On) 설계: 디버깅에 필수적인 범용 기초 도구(
view_file,exit등) 2~3개는 Kev의 가지치기 결과와 무관하게 항상 프롬프트에 남기는 상시 노출(Always-On) 화이트리스트를 구성하는 것이 프로덕션의 핵심 팁입니다.
7. 자체 데이터 파인튜닝 가이드
Kev의 독보적인 강점은 독점 API와 달리 사내 데이터셋을 이용해 누구나 자신만의 도메인 전용 의사결정 모델을 학습시킬 수 있다는 점입니다.
① JSONL 학습 데이터 포맷
수백 개의 라벨링 예제만으로도 고성능 어댑터를 구축할 수 있습니다:
{ "state": { "subject": "이중 결제 및 환불 요청", "body": "주문번호 #8841에 대해 카드가 2번 승인되었습니다. 확인 후 취소 부탁드립니다." }, "questions": { "team": { "type": "choice", "instructions": "이 문의를 처리해야 할 적절한 부서는 어디인가요?", "criteria": { "billing": "결제, 영수증, 환불, 카드 승인 오류", "shipping": "배송 지연, 택배 분실, 주소지 변경", "account": "비밀번호 분실, 2FA, 회원 탈퇴" }, "label": "billing" }, "is_urgent": { "type": "noul", "instructions": "긴급한 금전 피해 또는 서비스 중단 이슈인가요?", "label": true }, "customer_sentiment": { "type": "score", "instructions": "고객의 부정적 감정 수준을 평가하세요.", "criteria": ["차분함", "경미한 불만", "매우 화남", "소송/이탈 위협"], "label": 1 } } }② LoRA 어댑터 학습 전략
- 기저 모델의 가중치는 완전히 고정(Frozen)하고, Rank-16 LoRA 어댑터(
r=16, alpha=32)와PointerHead투영 행렬($W_q, W_k$)만 교차 엔트로피 손실로 최적화합니다. - Qwen 3.5 하이브리드 구조에서는 어텐션 투영뿐 아니라 Gated DeltaNet의 선형 순환 투영 계층(
in_proj_qkv,out_proj등)까지 LoRA 타겟을 확장해야 순환 계층의 지식 보존율이 극대화됩니다. - H100 1대 기준 Kev-0.8B는 약 20분, Kev-4B는 약 1시간이면 파인튜닝이 완료됩니다.
8. 요약 및 아키텍처 제언: "System 1과 System 2의 건강한 분업"
인지심리학자 대니얼 카너먼(Daniel Kahneman)은 인간의 사고 체계를 빠르고 직관적인 '시스템 1(System 1)'과 느리고 논리적인 '시스템 2(System 2)'로 분류했습니다.
그동안 생성형 AI 붐 속에서 소프트웨어 엔지니어링은 모든 문제를 시스템 2(거대 LLM 추론)로만 풀려고 했습니다. 단순한 예/아니요 판단, 카테고리 분류, 가드레일 검증까지 착암기를 들이댄 결과는 치명적인 지연 시간, 눈덩이 같은 API 청구서, 그리고 깨지기 쉬운 JSON 파싱 오류였습니다.
┌─────────────────────────────────────────────────────────────┐ │ 엔터프라이즈 에이전트 아키텍처 │ ├──────────────────────────────┬──────────────────────────────┤ │ System 1 (직관·초저지연) │ System 2 (심층 추론·생성) │ │ [Kev / 오픈 의사결정 모델] │ [Claude 3.7 / GPT-4o / Qwen] │ ├──────────────────────────────┼──────────────────────────────┤ │ - 단일 순전파 (1-Pass) │ - 다중 토큰 자동회귀 생성 │ │ - 지연 시간: 20~40ms │ - 지연 시간: 수초 ~ 수십초 │ │ - 비용: $0 (자체 호스팅) │ - 비용: 고가의 API 토큰 과금 │ │ - 역할: 도구 가지치기, │ - 역할: 코드 작성, 논리 전개 │ │ 가드레일, 라우팅, 검증 │ 심층 계획 수립, 종합 요약 │ └──────────────────────────────┴──────────────────────────────┘재러드 파머의 Kev가 던지는 메시지는 명확합니다:
"생성은 LLM에게 맡기고, 의사결정은 1-Pass 의사결정 모델에게 위임하라."
비자기회귀 1-Pass 모델을 프록시 및 가드레일 계층으로 도입하여 도구 호출을 사전 정제하고 상태를 검증하는 것, 그것이 바로 대규모 에이전트 시스템을 안정적이고 비용 효율적으로 프로덕션에 안착시키는 가장 현실적인 아키텍처입니다.
반응형'AI' 카테고리의 다른 글
로컬 LLM의 에이전틱 한계 극복: 30B 체급 기준선과 쿠버네티스 분산 병렬 서빙 아키텍처 (0) 2026.10.01 Computer Use를 활용한 바이브 코딩 앱 사용성 테스트: 정적 린터를 넘어 에이전트 동적 QA와 자율 PR 완결까지 (0) 2026.09.28 AI에게 검증 가능한 목표 제시하기: SQuaRE 국제표준 기반 품질 목표와 아키텍처 드라이버 (0) 2026.09.27 코딩 에이전트 하네스 설계 실증 연구: 176회 실험으로 밝혀진 컨텍스트·계획·도구의 진실 (0) 2026.09.26 프롬프트는 실재하지 않는다: 프로덕션 AI 에이전트와 자기 교정 하네스 아키텍처 (0) 2026.09.26