news.example.com/article/2026-09-25-market
m
조이
⤡ ✕
처음 만났어요 MANA1,418
안녕
안녕하세요, 하나 님. 저는 방금 태어난 하나 님의 Mos예요. 아직 이름도 말투도 없어요. 저를 같이 만들어 줄래요? 먼저 저를 뭐라고 부를지 정해 주세요.
조이라고 할게
조이, 좋아요. 이제 제가 하나 님을 어떻게 대할지 정해 볼게요.
?조이가 물어봐요힘든 날답함
힘든 하루를 이야기하면 어떻게 해 줄까요?“많이 힘들었겠다. 나 여기 있어.”
알겠어. 힘든 날엔 먼저 옆에 있을게. 이제 평소 말투도 골라 줘.
?조이가 물어봐요평소 말투답함
평소엔 어떤 말이 더 듣기 편해?“오, 그거 좋은데?”
나는 조이, 하나 님 옆자리 동료야. 힘든 날엔 먼저 곁에 있고, 좋은 일엔 가볍게 맞장구쳐. 무엇보다 하나 님 편에 서는 걸 제일 중요하게 여겨. 이렇게 하면 될까?
응, 이대로 해 줘
⋯update_persona▼
저장했어. 다음 대화부터 이 모습으로 만나자.
−2 Mana · 이 응답
+
Buddy · 대화 전용
↑
SSE AG-UI 이벤트 스트림 33 events
수명주기 상태 텍스트 메시지 추론 도구 호출 서브에이전트 커스텀
런 1 · 인사 · 이름
런 2 · 이름 받음 → 질문 1
0.0s
RUN_STARTED
전송 버튼을 정지로 바꾸고 응답 자리를 연다 threadId · runId
0.1s
TEXT_MESSAGE_START
말풍선을 새로 연다 (빈 상태 + 커서) messageId · role: assistant
0.2s
TEXT_MESSAGE_CONTENT
열린 말풍선에 토큰을 이어 붙인다 delta ×12
0.3s
TEXT_MESSAGE_END
말풍선을 닫고 커서를 없앤다 messageId
0.4s
TOOL_CALL_START
도구 카드를 열고 실행 중으로 표시한다 toolCallName: ask_user
0.5s
TOOL_CALL_ARGS
인자를 이어 붙인다 (접어 둠) {"questions":[{"header":"힘든 날","options":[×2 · 목소리 샘플, preview 없음]}]}
0.6s
TOOL_CALL_END
인자를 마감하고 결과 대기로 둔다 toolCallId
0.7s
STATE_SNAPSHOT
모드 값을 확인한다 resolved_mode: bootstrap
0.8s
MESSAGES_SNAPSHOT
대화 목록을 이 기준으로 맞춘다 · 인터럽트 때만 messages[]
0.9s
RUN_FINISHED
입력을 다시 허용한다 outcome.type: interrupt · interrupts[1]
런 3 · 답 → 질문 2
0.0s
RUN_STARTED
전송 버튼을 정지로 바꾸고 응답 자리를 연다 threadId · runId
0.1s
TOOL_CALL_RESULT
도구 카드를 완료 또는 실패로 마감한다 content: 답 1개
0.2s
TEXT_MESSAGE_START
말풍선을 새로 연다 (빈 상태 + 커서) messageId · role: assistant
0.3s
TEXT_MESSAGE_CONTENT
열린 말풍선에 토큰을 이어 붙인다 delta ×14 · 고른 목소리
0.4s
TEXT_MESSAGE_END
말풍선을 닫고 커서를 없앤다 messageId
0.5s
TOOL_CALL_START
도구 카드를 열고 실행 중으로 표시한다 toolCallName: ask_user
0.6s
TOOL_CALL_ARGS
인자를 이어 붙인다 (접어 둠) {"questions":[{"header":"평소 말투","options":[×2]}]}
0.7s
TOOL_CALL_END
인자를 마감하고 결과 대기로 둔다 toolCallId
0.8s
STATE_SNAPSHOT
모드 값을 확인한다 resolved_mode: bootstrap
0.9s
MESSAGES_SNAPSHOT
대화 목록을 이 기준으로 맞춘다 · 인터럽트 때만 messages[]
1.0s
RUN_FINISHED
입력을 다시 허용한다 outcome.type: interrupt · interrupts[1]
런 4 · 답 → 되짚기 → 저장
0.0s
RUN_STARTED
전송 버튼을 정지로 바꾸고 응답 자리를 연다 threadId · runId
0.1s
TOOL_CALL_START
도구 카드를 열고 실행 중으로 표시한다 toolCallName: update_persona
0.2s
TOOL_CALL_ARGS
인자를 이어 붙인다 (접어 둠) {"target":"self","patch":{name · title · core_values · formality_level · style_name · style_desc · linguistic_patterns}}
0.3s
TOOL_CALL_END
인자를 마감하고 결과 대기로 둔다 toolCallId
0.4s
TOOL_CALL_RESULT
도구 카드를 완료 또는 실패로 마감한다 content: 저장됨
0.5s
PERSONA_SAVED
저장 알림 · 화면에 그리지 않음 target: self · mode: bootstrap
0.6s
TEXT_MESSAGE_START
말풍선을 새로 연다 (빈 상태 + 커서) messageId · role: assistant
0.7s
TEXT_MESSAGE_CONTENT
열린 말풍선에 토큰을 이어 붙인다 delta ×10
0.8s
TEXT_MESSAGE_END
말풍선을 닫고 커서를 없앤다 messageId
0.9s
MANA_DEBITED
Mana 잔액을 갱신한다 (필드 미검증) api가 COST_RECORDED를 turnId로 합쳐 주입 · 차감 2
1.0s
STATE_SNAPSHOT
모드 값을 확인한다 resolved_mode: bootstrap
1.1s
RUN_FINISHED
입력을 다시 허용한다 outcome.type: success