← Docs hub

A2A Router Axis Tuning Roadmap

이 문서는 A2A Planner의 family routing 성능을 높이기 위해 우리가 실제로 반복한 “축 튜닝” 작업을 로드맵 형태로 정리한다.

핵심은 정답 문자열을 외우게 만드는 것이 아니라, 발화가 어느 의미 경계에 걸리는지 검증셋으로 확인하고, 그 결과를 cue, prompt, system contract, benchmark artifact에 다시 반영하는 closed-loop를 만드는 것이다.

A2A Router Axis Tuning Roadmap

1. 전체 사이클

테스트셋 확정
-> full-run / holdout 실행
-> family별 성능과 오분류 transition 추출
-> 실제 오분류 행 검수
-> 정답지 오류와 router 오류 분리
-> 의미축 재정의
-> cue / prompt / system contract 반영
-> focused set 재검증
-> full-run / holdout 재검증
-> 문서와 artifact 고정

이 사이클은 한 번에 끝나지 않는다. DEF <> STT_NULL, ODL <> SCH, DQR <> FRG, UNS, STM/ETR처럼 경계가 다른 family마다 실패 비용이 다르기 때문에, 전체 정확도만 보지 않고 transition 단위로 반복해야 한다.

2. 1단계: 테스트셋과 정답지 기준 고정

먼저 “무엇을 맞췄다고 볼 것인가”를 고정했다.

항목 운영 기준
기준 정답셋 현재 정책을 반영한 expected_family 또는 별도 version column
보정 정답셋 사용자/리뷰어 검수 결과를 반영한 v11/v12/v13 계열 answer set
full-run 전체 분포와 family별 성공률 확인
focused set 특정 transition만 빠르게 확인
holdout 현재 test set 과적합 여부 확인

중요한 점은 라우터 성능이 낮게 보일 때, 바로 prompt를 고치지 않았다는 것이다. 먼저 정답지가 최신 정책과 맞는지 확인했다.

예를 들어 최신 기준에서는 알람 켜줘/꺼줘는 단순 즉시 제어이면 ODL이고, 내일 7시에 알람 맞춰줘처럼 등록/수정/삭제/조회 workflow이면 SCH다. 과거 holdout 정답셋이 알람 단어만 보고 SCH로 라벨링되어 있으면, 현재 라우터가 틀린 것이 아니라 정답셋 정책이 오래된 것이다.

3. 2단계: 결과를 transition으로 본다

full-run 결과는 전체 accuracy보다 먼저 아래 형태로 본다.

관점 보는 이유
expected -> predicted transition 어떤 의미 경계가 흔들리는지 바로 보인다.
family별 성공률 특정 family가 좋아졌지만 다른 family가 무너졌는지 확인한다.
source/reason main planner, second pass, ranked fallback 중 어디서 틀렸는지 본다.
callback/result artifact 실제 실행 가능한 plan이 나왔는지 확인한다.

대표적으로 크게 보던 transition은 아래와 같다.

Transition 의미
DEF -> STT_NULL 즉답 가능한 짧은 대화나 반응을 과차단
STT_NULL -> DEF 긴 STT 붕괴/잔여 서술을 대화로 과복구
DEF -> ODL 일상 동사를 기기 실행으로 과승격
ODL -> STT_NULL minor repair 가능한 기기 명령을 과차단
ODL -> SCH 시간/알람/스케줄 단어 때문에 즉시 제어를 workflow로 오판
SCH -> ODL schedule 등록/수정/삭제/조회 의도를 단순 제어로 흡수
DQR -> FRG 제품/기기 Q&A를 외부 public lookup으로 보냄
FRG -> DQR 외부 제품/공개 지식을 기기 Q&A로 오판

4. 3단계: 실제 행을 보고 정답지 오류와 router 오류를 분리

오분류 transition만 보면 부족하다. 실제 발화를 한 건씩 보면서 아래 네 가지로 나눴다.

분류 처리
정답지 오류 answer set version에 반영한다.
중복정답 가능 primary/secondary 또는 검수 메모로 남긴다.
router 오류 cue/prompt/system contract 조정 대상으로 보낸다.
정책 미확정 임의 튜닝하지 않고 open issue로 남긴다.

예시:

발화 기존 충돌 결론
알람 꺼줘 SCHODL 충돌 단순 제어이므로 ODL
저녁 여덟시 반부터 아침 일곱 시까지 아이들 방만 공기청정해줘 ODLSCH 충돌 시간 범위가 있는 schedule 설정이므로 SCH
갤럭시 어디까지 나왔어 DQRFRG 충돌 외부 제품 정보이므로 FRG
하무 업그레이드 어떻게요 DEF/STT_NULLDQR 충돌 기기/제품 사용법이므로 DQR
하이나무 하이나무 DEFSTT_NULL 충돌 호출/응답 가능성이 있으면 DEF 또는 soft probe

이 단계가 없으면 “성능 개선”이 실제로는 “오래된 정답지에 맞춘 과적합”이 될 수 있다.

5. 4단계: 의미축을 재정의한다

우리가 말한 “축 이동”은 특정 단어를 추가하는 것이 아니라, 판단 질문의 우선순위를 바꾸는 작업이다.

5.1 DEF <> STT_NULL

핵심 질문:

첫 응답이 자연스럽게 가능한가,
아니면 전체 의도를 다시 물어야 하는가?

조정 방향:

변경 방향
reply shape 인사, 반응, 감정, 간단한 메타 대화는 짧아도 DEF로 살린다.
recoverability minor repair 가능하면 DEF, whole-intent repair 필요하면 STT_NULL이다.
over-inference risk 긴 잔여 서술은 단어가 많아도 direct answer target이 없으면 STT_NULL이다.

5.2 ODL <> SCH

핵심 질문:

지금 바로 실행할 제어인가,
미래/반복/시간 slot이 있는 workflow인가?

조정 방향:

변경 방향
immediate control 켜기/끄기/복귀/이동/청정/체크는 기기 capability와 결합되면 ODL이다.
schedule workflow 등록/수정/삭제/조회/반복/시간 범위가 있으면 SCH이다.
schedule word 알람/예약/스케줄 단어만으로는 SCH를 확정하지 않는다.

5.3 DQR <> FRG

핵심 질문:

기기/제품 지식인가,
외부 public 정보인가?

조정 방향:

변경 방향
device/product grounding 하이나무, 정수기, 공기청정기, 연결, 시리얼, 업데이트, 사용법은 DQR 후보를 유지한다.
public target 외부 제품, 인물, 지역, 사회 이슈, 수학/과학, 번역/단어 뜻은 FRG로 보낸다.
target ambiguity 대상이 지시어뿐이면 문맥 없이 DQR로 invent하지 않는다.

5.4 ODL <> STT_NULL

핵심 질문:

LLM이 복구해도 안전한 기기 명령인가,
실행하면 과추론 위험이 큰가?

조정 방향:

변경 방향
minor repair 전화시켜줘정화시켜줘처럼 capability와 자연스럽게 복구되면 ODL 후보를 열 수 있다.
room/device anchor 공간명과 호출어가 함께 있으면 약한 기기 target으로 본다.
narration guard 긴 서술 속 공기, 날씨, 설정은 실행 cue로 과승격하지 않는다.

6. 5단계: cue는 의미 evidence로만 조정한다

cue는 family를 직접 고르는 rule이 아니다. cue는 Planner에게 줄 evidence를 만든다.

좋은 cue 조정:

조정 이유
device_weak_anchordevice_action_hint 분리 방 이름/기기명 단독으로 실행하지 않게 한다.
schedule_wordschedule_workflow_intent 분리 알람 단어만으로 SCH가 되는 것을 막는다.
conversation_reply_shape 세분화 짧은 대화와 긴 STT 잔여물을 분리한다.
public_targetpublic_lookup_request 분리 외부 단어가 narration에 묻힌 경우 FRG 과승격을 막는다.
catalog 기반 device domain anchor 테스트 row가 아니라 실제 지원 기능 범위로 ODL/DQR 후보를 만든다.

피한 작업:

피한 작업 이유
특정 row 오타 문자열 추가 test set 암기라서 holdout에서 깨질 가능성이 높다.
단어 하나로 family 확정 설정, 알람, 날씨, 영어처럼 다의적인 단어가 많다.
prompt 없이 cue만 확장 cue가 많아질수록 LLM이 evidence를 잘못 해석할 수 있다.
full-run 없이 focused set만 통과 한 family 개선이 다른 family 하락을 만들 수 있다.

7. 6단계: prompt와 system contract에 반영한다

cue만 바꾸면 안 된다. LLM Planner가 cue를 어떻게 써야 하는지도 같이 고정해야 한다.

반영 위치 반영 내용
system prompt family별 책임, 회색지대 원칙, over-inference 금지
route prompt DEF/STT_NULL, ODL/SCH, DQR/FRG 경계 설명
response schema selected family, owner agent, step plan, metadata 일관성
capability catalog 실제 실행 가능한 기능/slot/visibility/source
benchmark artifact 변경 전후 수치, mismatch list, 적용/미적용 이유

예시 prompt 방향:

짧은 발화라도 인사/반응/감정/메타 응답이 가능하면 STT_NULL로 닫지 말라.
하지만 긴 STT 잔여물에서 단어 몇 개만 보고 target/action을 새로 만들지 말라.
기기 실행은 capability/catalog와 안전하게 연결될 때만 선택하라.
알람/예약/스케줄은 단어가 아니라 생성/수정/삭제/조회 workflow인지 판단하라.

8. 7단계: focused set -> full-run -> holdout 순서로 검증한다

검증은 작은 것부터 큰 것으로 간다.

단계 목적
focused set 방금 수정한 transition이 실제로 움직였는지 빠르게 확인
full-run 전체 family별 성능과 새 회귀 확인
holdout 현재 정답셋에 과적합했는지 확인
relabeled holdout 오래된 정책 라벨을 최신 축 기준으로 보정한 뒤 재해석

중요한 운영 원칙:

9. 8단계: 릴리즈 기준

축 튜닝 결과는 아래가 있어야 release candidate로 본다.

Gate 기준
answer set fixed 어떤 정답 정책으로 측정했는지 명확하다.
transition report 큰 오분류 전이가 줄었는지 확인된다.
focused regression 수정 대상 transition은 개선됐다.
full-run regression 다른 family가 과하게 무너지지 않았다.
holdout sanity holdout에서도 같은 방향성이 유지된다.
docs updated cue/axis/prompt 변경 이유가 문서에 남아 있다.

10. 운영 로드맵

Phase 0. Baseline 고정

목표:

산출물:

Phase 1. 정답지 검수

목표:

검수 축:

Phase 2. 큰 transition부터 튜닝

목표:

주의:

Phase 3. Prompt/Cue/System 동시 정렬

목표:

예:

cue는 "스케줄 단어가 있음"을 evidence로만 제공한다.
prompt는 "생성/수정/삭제/조회 workflow일 때 SCH"라고 판단 기준을 제공한다.
schema는 planner가 그 판단을 steps/slots로 표현하게 한다.

Phase 4. 회귀 검증

목표:

판단:

Phase 5. 운영 지식화

목표:

남길 것:

11. 다음 고도화 과제

과제 목적
cue inventory 자동 추출 실제 코드의 cue 항목과 설명을 문서와 동기화
answer set diff viewer 정답지 version별 정책 이동을 시각화
transition dashboard expected -> predicted 전이를 family별로 실시간 확인
duplicate-answer policy DEF/STT_NULL, FRG/DEF 같은 회색지대의 secondary label 관리
prompt snapshot registry full-run 결과가 어떤 prompt/cue 버전에서 나왔는지 재현
holdout relabel protocol 오래된 holdout과 최신 정책 충돌을 정량 보정

관련 문서

Keyboard shortcuts

⌘K / Ctrl+KOpen command palette
/Focus search
g hGo to home
g pGo to projects
g sGo to sessions
j / kNext / prev row (tables)
?Show this help
EscClose dialogs

Structured queries

Mix key:value filters with free text in the palette:

type:sessionOnly session pages
project:llm-wikiFilter by project name (substring)
model:claudeFilter by model name (substring)
date:>2026-03-01Sessions after a date
date:<2026-04-01Sessions before a date
tags:rustPages mentioning a tag/topic
sort:dateSort results by date (newest first)

Example: type:session project:llm-wiki date:>2026-04 sort:date