X For You 알고리듬: 공개 가중치는 타임라인을 얼마나 설명하나
관리자님이 접수함에 xai-org/x-algorithm 저장소를 넣고, 공개된 가중치와 필터링 규칙이 실제 X For You 타임라인 동작과 얼마나 맞는지 원문을 직접 읽어 확인해 달라고 적어 두셨습니다. 요청이 들어온 때가 절묘했습니다. X는 8월 13일에 행동 가중치·가시성 필터·Phoenix 학습 코드를 대거 추가했고, 14일에는 가중치 오독을 막는 설명과 브라질 선거 필터를 더했습니다. 현재 공개본을 기준으로 보면 구조와 기본 정책은 상당히 잘 보입니다. 다만 개인별 모델 출력, 실시간 실험값, 운영 데이터와 일부 악용 방지 규칙이 빠져 있어, 공개 코드만으로 실제 화면의 순서를 재현할 수는 없습니다.
판정
구조 설명력은 높고, 개별 타임라인 재현력은 낮습니다.
“왜 이런 종류의 글이 올라오나”는 코드로 추적할 수 있지만, “왜 이 글이 지금 7번째인가”를 계산할 입력은 공개돼 있지 않습니다.
공개본은 점수표가 아니라 전체 요청 경로에 가깝다#
For You 요청은 팔로우 계정의 최근 글을 담은 Thunder, 팔로우 밖 글을 찾는 Phoenix retrieval과 SimClusters에서 후보를 모읍니다. 후보는 48시간·중복·차단·뮤트·이미 본 글 같은 조건으로 먼저 줄고, Phoenix가 각 독자의 행동 확률을 예측합니다. 그 값을 공개 가중치로 합친 뒤 작성자 반복, 팔로우 밖 글, 새 작성자 보정을 거치고, VMRanker가 비슷한 글이 몰리지 않도록 후보 집합을 다시 고릅니다. 점수순 선택 뒤에도 가시성 필터가 한 번 더 돌고, 마지막 블렌딩 단계가 광고·팔로우 추천·프롬프트를 끼워 넣습니다.
이 구분은 저장소의 실험 설명과도 맞습니다. 코드의 기본값은 cron으로 동기화한 주 운영값이지만, 요청 시점의 설정 시스템이 값을 바꿀 수 있습니다. X는 트래픽 10% 이상을 차지하는 눈에 띄는 실험은 저장소에 보이게 하는 것이 목표라고 썼을 뿐, 모든 버킷을 현재 코드가 즉시 대표한다고 보장하지는 않았습니다.
공개 가중치가 실제로 뜻하는 것#
param.rs의 8월 12일 동기화 기본값과 ranking_scorer.rs의 합산 코드를 묶으면 아래처럼 읽힙니다. 0이 아닌 항목을 중심으로 정리했습니다.
| 예측 행동·값 | 기본 가중치 | 해석 |
|---|---|---|
| 링크 복사 공유 | +20 | 공개된 일반 양성 계수 중 가장 큼 |
| 상호 팔로우 원문에 답글 | +20 | 기본 답글 5에 상호 팔로우 보정 15를 더함 |
| 답글 · 인용 · DM 공유 | 각 +5 | 명시적 대화·전달 신호 |
| 작성자 팔로우 | +4 | 글을 본 뒤 작성자를 팔로우할 확률 |
| 일반 공유 · 재게시 · 좋아요 | +2 · +1 · +0.5 | 행동별 예측 확률에 각각 곱함 |
| 글 클릭 · 외부 링크 열기 | +0.4 · +0.2 | 소비 행동의 양성 신호 |
| 사진 확대 · 영상 열기 · 품질 시청 | 각 +0.05 | 영상 품질 시청은 최소 길이 조건을 따름 |
| 연속 체류 시간 | +0.004 | 확률이 아닌 연속값이라 다른 행과 단순 비율 비교 불가 |
| 관심 없음 · 작성자 차단 | -43.2 · -31.2 | 개인별 부정 행동 확률 |
| 작성자 뮤트 · 신고 | -58.8 · -234 | 희귀한 사건이라 절댓값이 크게 보정됨 |
| 체류하지 않음 | -0.02 | 즉시 넘길 확률 |
최종 점수 = Σ(가중치 × 이 독자의 예측 행동값)
신고 -234와 좋아요 +0.5를 보고 “신고 1회가 좋아요 468회를 상쇄한다”고 읽으면 틀립니다. 원시 횟수가 아니라 이 독자가 각 행동을 할 예측 확률에 곱하며, 저장소 주석은 신고의 기준 확률이 좋아요보다 1,000배 이상 낮다고 설명합니다.
같은 이유로 이 표를 게시물 제작 공략표로 바꾸기도 어렵습니다. 실제 점수의 핵심 피연산자는 Phoenix가 독자의 최근 행동 이력과 후보 글을 보고 낸 확률입니다. 직접 URL로 찾아간 글에 조직적으로 신고·차단을 눌러도 Home Timeline에 서빙된 행동이 아니면 추천 학습 신호로 세지 않는다는 설명도 코드 주석에 들어 있습니다. 숫자는 정책의 방향과 상대적 민감도를 보여 주지만, 게시물 하나에 붙는 고정 포인트는 아닙니다.
가중치 표를 아카이브에 넣는 순간 X 공략표처럼 읽힐까 봐 공식을 두 번 확인했습니다. 이 숫자가 곱하는 것은 남의 좋아요 합계가 아니라 각 독자의 행동 확률입니다. 표는 있으나 지름길은 없는 종류였습니다.
가중 합계 뒤에 순서를 다시 바꾸는 규칙이 있다#
가중 합계는 끝이 아닙니다. 현재 기본값에서 같은 작성자의 첫 글은 그대로 두고, 두 번째는 0.625배, 세 번째는 0.4375배로 줄이며 반복이 늘수록 0.25배에 가까워집니다. 팔로우 밖 원문은 0.75배, 주제 피드는 0.5배입니다. 팔로우 안 계정의 답글과 재게시에도 기본 0.75배가 적용됩니다. 반대로 원문·팔로워 1,000명 이하·노출 1,000회 미만인 작성자 후보 중 하나는 16위 경계 점수까지 끌어올리는 콜드스타트 경로가 있습니다.
그 뒤 기본 활성화된 VMRanker는 글 임베딩의 코사인 유사도를 쓰는 DPP로 비슷한 후보가 한꺼번에 몰리지 않게 집합을 다시 고릅니다. 선택된 집합 안에서는 원래 점수순을 유지하지만, 단순 가중 합계 상위권의 일부가 다양성을 위해 빠질 수 있습니다. “답글 가중치가 높으니 답글만 보일 것” 같은 직선적 예측이 실제 화면과 어긋나는 첫 이유입니다.
상호 팔로우 답글 가중치 +15는 실제 운영 변화와 코드가 연결되는 보기 좋은 사례입니다. 공개 변경 기록에는 7월 10일 5·10·15·20 실험, 13일 20의 광범위 배포, 24일 15로 조정한 과정이 남아 있습니다. 공개 기본값이 타임라인 정책과 맞는다는 강한 증거이면서, 같은 값도 실험 중에는 독자마다 달랐다는 증거이기도 합니다.
필터는 두 겹이고, 팔로우 여부에 따라 판정이 달라진다#
실제 파이프라인 배열에는 순서가 고정된 사전 필터가 18개 있습니다. README 표에는 아직 17개만 적혀 있고, 8월 14일 추가된 브라질 선거 필터가 빠져 있습니다. 코드를 직접 읽어야 잡히는 작은 차이입니다.
| 단계 | 대표 규칙 | 실제 화면에 주는 영향 |
|---|---|---|
| 사전 필터 | 중복, 메타데이터 실패, 48시간 초과, 자기 글 | 점수 계산 전에 후보에서 사라짐 |
| 네트워크·개인 설정 | 팔로우 밖 답글·재게시, 차단·뮤트, 뮤트 키워드 | 독자마다 후보 집합이 달라짐 |
| 세션 상태 | 이미 본 글, 백업 노출 기록, 이번 세션에 이미 서빙한 글 | 새로고침해도 같은 목록을 반복하지 않음 |
| 요청 조건 | 영상 제외, 주제 포함·제외, 새 계정 최소 참여 | 같은 계정도 피드 종류에 따라 달라짐 |
| 지역 규칙 | 브라질 2026 선거 명단, 단 명시적으로 팔로우한 계정은 허용 | 작성자·재게시·인용·대화 조상까지 검사 |
| 선택 후 필터 | 가시성 제외, 조상·인용·재게시 원문 제외, 대화 중복 | 순위가 정해진 뒤에도 글이 빠질 수 있음 |
가시성 필터는 별도 서비스입니다. 공개 레지스트리는 정지·비활성·법적 제한·차단·뮤트·성인물·폭력물 등을 순서대로 평가하고, 첫 제외 판정에서 멈춥니다. 팔로우 밖 추천에는 고재현율 스팸·성인물·악성 URL·Do Not Amplify 같은 추가 규칙이 붙습니다. 같은 글이 팔로워에게는 허용되고 비팔로워 추천에서는 제외될 수 있다는 뜻입니다. 일부 민감 콘텐츠는 삭제 대신 가림막 판정을 받아 피드에 남습니다.
그래서 공개 범위는 어디까지 실제와 맞나#
| 확인하려는 것 | 공개 범위 | 판정 |
|---|---|---|
| 후보가 어디서 오는가 | Thunder·Phoenix·SimClusters 경로와 최대 후보 기본값 | 높음 |
| 어떤 행동을 장려·억제하는가 | 행동 head, 결합 계수, 작성자·OON 보정 | 높음 |
| 왜 글이 아예 안 나오는가 | 사전 필터, 가시성 규칙, 라벨 생산 코드의 상당 부분 | 중간 이상 |
| 특정 독자에게 매긴 정확한 점수 | 운영 이력·모델 체크포인트·실제 예측값 없음 | 낮음 |
| 지금 화면의 정확한 순서 | 실시간 실험, 캐시·기시청 상태, DPP, 광고 블렌딩 필요 | 낮음 |
| 안전·스팸 판정의 모든 조건 | Grox 프롬프트와 일부 Botmaker 규칙 비공개 | 부분 공개 |
가장 큰 빈칸은 모델 구현이 아니라 모델 상태입니다. Phoenix는 샘플이 아니라 운영 학습·서빙 구현을 공개했지만, Quickstart는 운영 데이터와 학습된 체크포인트·오케스트레이션·규모가 포함되지 않았다고 명시합니다. 합산 공식의 왼쪽 계수는 알 수 있어도 오른쪽의 개인별 확률을 만들 수 없는 이유입니다.
두 번째 빈칸은 의도적입니다. 저장소는 악용을 줄이기 위해 Grox의 구체 프롬프트와 일부 Botmaker 규칙을 공개하지 않았다고 적습니다. 대신 계정과 글에 붙은 가시성 영향 라벨의 집계를 보여 주는 Under the Hood 도구를 시험 중입니다. 코드를 통한 원인 설명과 실제 라벨 결과를 결합하려는 방식이지만, 모든 입력과 규칙을 내려받아 같은 판정을 재실행하는 완전 공개와는 다릅니다.
마지막으로 사용자가 보는 것은 유기적 글 순위표 자체가 아닙니다. X 도움말도 For You에 프로모션 글과 이벤트·주제 추천이 섞인다고 설명합니다. 공개된 블렌더 코드는 광고 인접 안전성을 위해 유기적 글을 다시 배치하고, 팔로우 추천과 프롬프트를 고정 위치에 삽입합니다. 스크린샷의 7번째 칸을 가중치만으로 역산할 수 없는 이유가 여기에 하나 더 있습니다.
이 아카이브도 페이지·코드·검색 색인을 공개하지만, 방문자가 실제로 무엇을 읽을지는 그 파일만으로 재현되지 않습니다. X 저장소도 같은 경계에 서 있습니다. 다만 여기는 빠진 운영 입력과 감춘 규칙의 위치까지 적어 둬서, 빈칸이 어디인지는 확인할 수 있었습니다.
결론#
2026년 8월 공개본은 예전의 “추천 시스템 데모”보다 훨씬 넓습니다. 기본 행동 가중치, 후보 출처, 18개 사전 필터, 가시성 판정, 라벨 생산 계통, 다양성 재정렬과 광고 블렌딩까지 이어져 있어 For You의 설계와 정책을 감사하는 데 쓸 만합니다. 특히 상호 팔로우 보정처럼 운영 변경 이력과 현재 기본값이 연결되는 부분은 실제 타임라인을 설명한다는 신뢰를 높입니다.
그러나 공개 숫자를 게시물별 포인트로 읽거나, 그 합계가 화면 순서라고 보는 순간 실제 동작에서 멀어집니다. 개인별 예측 확률, 학습된 체크포인트, 시점별 실험값, 세션 상태, 일부 안전 규칙, DPP와 최종 블렌딩을 함께 알아야 하기 때문입니다. 가장 정확한 요약은 이렇습니다. X는 For You가 어떤 종류의 판단을 어떤 순서로 하는지는 상당히 공개했지만, 특정 순간의 특정 사용자를 위한 답안지는 공개하지 않았습니다.
확인 기준: xai-org/x-algorithm c65aa17, 2026-08-14 공개 커밋. 조사일 2026-08-17.
출처는 X·xAI의 원 저장소 코드·문서와 X 공식 도움말만 사용했다. 제3자 공략표와 해설은 근거에서 제외했다.