본문으로 건너뛰기

작동 방식 ​

iRoof.top의 작동 방식

모든 내보내기는 같은 정규화된 메시지가 됩니다. 그다음 페르소나의 모든 행동이 도구 호출로 모델에 다시 재생되어, 모델은 무엇을 쓰는지뿐 아니라 어떻게 그 사람이 상호작용하는지를 배우고, 같은 방식으로 답합니다.

행동을 도구 호출로 ​

페르소나가 한 일기록과 실시간 응답의 도구 호출
텍스트 말풍선, 답장이나 부분 인용일 수도 있음send_message {text, reply_to?, quote?}
스티커send_sticker {sticker_id, reply_to?}
라이브러리의 GIF, 또는 MCP 도구의 URLsend_gif {gif_id | url, caption?}
사진, 동영상, 음성, 오디오, 파일send_media {media_id, caption?}
전달된 게시물forward_message {message_id}
반응react {message_id, emoji}
(오래된 기록 떠올리기)search_history {query}

한 턴에 여러 호출을 하면 여러 말풍선이 됩니다. 상대방의 메시지는 ID가 가리키는 간결한 줄이 됩니다.

text
#52108 19:08 ↩ #52107에 답장 (당신: "할머니의 라자냐 🍝"): 당신은 라자냐를 한 번도 만들어 본 적이 없잖아요.
<sticker stk_156dbb381a>: 요리사 모자를 쓴 고양이가 냄비를 젓고 있음
#52107("할머니의 라자냐 🍝")에 😂 반응

시스템 프롬프트 ​

부분
어떤 사람이어야 하는지페르소나의 지식과 말투를 추정하고, 그 사람이 알 수 있는 것 이상을 절대 알지 않기
말투 프로필전체 내보내기에서: 메시지 길이, 대문자, 문장부호, 이모지와 스티커 사용, 답장과 반응 습관, 턴당 말풍선 수, 원문 그대로의 예시
라이브러리스티커, GIF, 미디어와 그것이 어떻게 사용되었는지
메모사용자가 그 사람에 대해 쓴 내용

프롬프트는 채팅마다 정적입니다. 시계도, 카운터도 없습니다. 모델은 — 날짜 — 구분선과 HH:MM 타임스탬프에서 시간을 읽으며, 각 요청은 다음 요청의 바이트 단위로 동일한 접두사이므로, 공급자의 프롬프트 캐시가 계속 적중합니다.

긴 채팅 ​

 기록 예산 ────────────────────────────────────────────────▶
 ┌──────────────────────┬────────────────────────────────────────┐
 │ 메모리 (350단어 이하)│ 최근 턴, 예산의 60 %로 잘림            │
 └──────────────────────┴────────────────────────────────────────┘
   관계, 사실,            자르는 지점이 오래 고정되므로
   주제, 농담             캐시된 접두사도 그대로 유지됨

재생되는 기록이 예산을 넘으면, 다음 응답은 먼저 가장 오래된 턴(과 이전 메모리)을 짧은 요약으로 압축합니다. 가져오기나 채팅을 열 때는 아무것도 소비되지 않습니다. 말투 프로필은 여전히 전체 내보내기에서 만들어지며, search_history는 모든 오래된 메시지에 닿습니다. 토큰 usage(프롬프트, 캐시, 완성)는 { }에 표시됩니다.

미디어 라이브러리 ​

채팅 모델은 텍스트를 읽으므로, 스티커는 설명되기 전까지는 <sticker stk_…>일 뿐입니다. AI로 설명은 설명이 없는 항목의 이미지를 미디어 모델로 보내며, 미디어 모델은 이미지 인식을 지원해야 합니다.

  • GIF, 비디오 스티커, 동영상은 순서대로 4개의 프레임으로 보내져서, 모델이 움직임을 볼 수 있습니다. 이를 위해서는 ffmpeg(brew install ffmpeg, apt install ffmpeg, winget install ffmpeg)이 필요하며, 없으면 썸네일이 사용됩니다.
  • 다시 하기는 항목 하나를 다시 설명합니다. 모든 설명은 직접 편집할 수 있습니다.
  • 설명은 내보내기에 속하며, 그 안의 모든 채팅에서 쓰입니다.

CLI로 직접 확인해 보세요: rooftop convert <내보내기> --persona "Jonas Weber".

MIT 라이선스로 배포됩니다.