0x00 EN

리서치 / 일일 리포트

  • 읽은 자료 1건
  • 정본 반영 1개 파일
  • 레이더 0건
한 줄 요약X가 추천 지면에서 DoNotAmplify와 악성 URL 라벨 포스트를 빼는 규칙을 작성자의 팔로워에게는 적용하지 않게 했다.

1팔로워는 라벨 포스트 제외 규칙에서 빠지게 됐다 — X

자료 xai-org/x-algorithm@cec6168 — xAI, 2026-11-12, 코드. 이 노트들이 붙인 번호로는 4세대+62다. 4세대+N은 이 노트들이 4세대 공개(2026-08-13) 뒤의 커밋에 차례로 붙인 번호다.

배경 X의 For You(알고리즘이 고르는 홈 피드)에는 팔로우하지 않는 계정의 포스트, 곧 OON(out-of-network) 후보가 섞인다. 이런 추천 후보에는 VF(visibility filtering, 안전 라벨과 관계를 보고 포스트를 빼거나 가리는 규칙 엔진)가 팔로잉 피드보다 엄격한 규칙 묶음을 적용한다. 그 묶음에는 DoNotAmplify(증폭하지 말라는 내부 안전 라벨)나 악성 URL 라벨이 붙은 포스트를 빼는 규칙이 있었고, 작성자 본인 말고는 모두에게 걸렸다. 이번 커밋은 이 두 규칙의 대상을 "작성자를 팔로우하지 않는 뷰어"로 좁히고, 홈 피드와 학습 코드의 실험 장치 몇 가지를 정리했다.

새로 알게 된 것A. DoNotAmplify와 악성 URL 제외 규칙이 팔로워에게는 걸리지 않는다

  • 두 규칙의 대상이 "작성자가 아닌 모든 뷰어"에서 "작성자를 팔로우하지 않는 뷰어"로 바뀌었다 확인 — visibility-filtering/rules/tweet_rules.rs:930-942.

    • 필드 변경은 audience: NonAuthors에서 audience: NonFollowers로의 교체다.
    • 같은 묶음의 기존 규칙 RISKY_HIGH_VIZ_REPLY_OON_DROP_UNSPECIFIED는 이미 NonFollowers였다.
  • 두 규칙은 추천 지면용 안전 레벨 두 곳의 OON 규칙 묶음에 들어 있다 확인 — rules/levels.rs:195-200.

    • 묶음 이름은 OON_POST_DROPS이고, TIMELINE_HOME_RECOMMENDATIONS와 IMMERSIVE_EXPANDED_RECOMMENDATIONS가 이 묶음을 쓴다.
    • 같은 묶음의 스팸 고재현율(SPAM_HIGH_RECALL) 규칙과 브라질 선거 규칙은 바뀌지 않았다.
  • 기대 판정을 고정한 골든 코퍼스(golden corpus, 입력별 기대 판정을 모은 테스트 표)도 함께 바뀌었다 확인 — rules/golden_corpus/oon_tweet_label.rs.

    Role::each([Role::NonFollower, Role::LoggedOut]) => dropped(PossiblyUndesirable, "malicious_url/drop/undesirable"),
    Role::each([Role::Follower, Role::Author])       => allow(),
    
  • 팔로우 관계 조회에 실패하면 팔로워에게도 규칙이 걸린다 확인 — rules/rule_spec/laws.rs.

    • 이 조회는 best-effort(실패해도 요청을 멈추지 않는 조회)로 등록됐다. 등록 주석은 실패 시 기본값이 실제 팔로워에게도 포스트를 뺀다고 적는다.
  • 홈 피드에서 실제로 영향받는 경우는 팔로우한 작성자의 포스트가 추천 레벨로 판정될 때다 추정.

    • 근거는 OON 후보가 정의상 팔로우하지 않는 작성자의 포스트라는 점이다. 정본은 조상·인용 포스트에 더 엄격한 레벨을 쓰는 규칙을 기록해 두었지만, 4세대에서 유지됐는지는 열린 질문이다.

새로 알게 된 것B. 하루 전에 생긴 셔플 이력 retrieval 소스가 삭제됐다

  • 유저 이력의 순서를 섞어 Phoenix(X의 트랜스포머 기반 retrieval·랭킹 모델) retrieval을 한 번 더 부르던 소스가 스위치와 함께 사라졌다 확인 — 커밋 diff.
    • 삭제된 것은 home-mixer/sources/shuffled_history_phoenix_source.rs, 파라미터 EnableShuffledHistoryRetrieval, served type별 통계 함수다.
    • 이 소스는 2026-11-10 커밋(660cd74, 4세대+60)에서 기본 off로 생겼고, 기본 on이 된 적이 없다.

새로 알게 된 것C. Grok 추천 작업 카드의 숨김 기록이 유저별 저장소로 옮겨졌다

  • 카드가 나가거나 유저가 닫으면 그 시각부터 기본 6시간 동안 카드를 다시 넣지 않는다 확인 — home-mixer/frames/catalog.rs:236-249.
    • 이전에는 응답 이력(served history)에서 마지막 노출 시각만 보았다. 이제는 Strato(X 내부 데이터 서비스)에 home.grokbot_suggested_tasks.served와 home.grokbot_suggested_tasks 두 키의 만료 시각을 저장하고 읽는다.
    • 노출 기록은 새 side effect FrameDismissalSideEffect가 프로덕션에서만 쓴다.
  • 숨김 기록을 읽지 못한 요청에는 카드를 넣지 않는다 확인 — 같은 파일.
    • frame_dismissals가 None이면 is_none_or로 숨김 판정이 난다. 테스트 이름은 grokbot_suggested_tasks_frame_is_hidden_when_its_dismissal_could_not_be_read다.
  • 카드 높이 상수가 0에서 433으로 바뀌었다 확인 — catalog.rs:87. 카드 스위치는 여전히 기본 off다 확인 — params/param.rs:1252-1257.

새로 알게 된 것D. Phoenix 학습에 요청 직전 이력을 지우는 옵션이 기본 off로 생겼다

  • 학습 배치마다 요청 직전 창 안의 이력 행을 정해진 비율로 지우는 옵션이 생겼다 확인 — phoenix/xrex/train/trainer_recsys.py.
    • 기본값은 recent_history_dropout_rate=0.0, recent_history_dropout_window_secs=900이다.
    • 신고, 관심 없음, 덜 보기, 언팔로우, 차단, 뮤트 같은 명시적 부정 행동 10종이 있는 행은 지우지 않는다. 목록은 constants.py의 EXPLICIT_NEGATIVE_ACTIONS다.
    • 15분·30분·1시간·2시간·1일 창마다 유저당 이력 행 수를 학습 메트릭으로 남긴다.
  • 서빙 쪽 공용 crate에도 같은 처리 함수가 생겼지만, 공개 코드에는 호출하는 곳이 없다 확인 — phoenix/crates/common/xai-recsys/src/util.rs.
    • 함수 이름은 InputBuffer::drop_recent_history다.
  • 서빙 시점에 이력의 최신 구간이 늦게 도착하는 상황을 학습에서 흉내 내려는 장치로 본다 추정. 근거는 지우는 대상이 요청 직전 행으로 한정되고, 부정 신호는 남긴다는 점이다.

새로 알게 된 것그 밖의 변경

  • 콘텐츠 이해 모델이 AI 생성이라고 주석한 몰입형 영상을 모으는 인덱스 이벤트 ai_video_model이 생겼다. 조회하는 서빙 요청은 없다 확인 — phoenixRankAllCandidateProcessor.strato:383-423.
  • Phoenix 요청의 클라이언트 맥락에 기기 방향(세로·가로) 필드가, 이력 집계 종류에 IMMERSIVE_LONG_DWELL_GALLERY_3S가 더해졌다 확인 — recsys.proto.
  • 섀도 트래픽(실험 클러스터에 채점만 보내고 결과는 로그로만 남기는 경로) 비율에 Experiment29Fou:0.3과 Experiment12Fou:0이 더해졌다 확인 — params/param.rs:93-108.
  • 영상 캐러셀(For You 안의 세로 영상 묶음, 기본 off)의 추가 후보 선정이 후보를 옮기지 않고 복사하도록 바뀌었다. 선정 결과는 같다 확인 — util/video_carousel.rs.
  • 디버그 요청에서만 retrieval 후보를 보존하는 플래그, 중복 제거 필터 공용화, 3,000개 후보 벤치마크 테스트가 더해졌다 확인 — 커밋 diff.
  • VF에는 알림 지면 규칙 변경이 함께 들어 있다. 미디어 태그 알림에 스팸 고재현율 OON 규칙이 생겼고, 인용·연락처 가입·리스트 추가 알림 종류가 더해졌다 확인 — rules/levels.rs.
  • VF hydration 계층과 안전 라벨 캐시 코드는 대부분 리팩터다. 미래 생성 시각을 가진 계정을 신규 계정으로 보는 변경 같은 작은 동작 차이가 섞여 있다 확인 — 커밋 diff.

정본 반영 services/x.md ## 한 줄 요약의 기준 커밋을 cec6168로 올렸다. ## 피드 지면의 Grok 추천 작업 카드 하위 불릿을 숨김 방식 기준으로 고쳤다. ## 후보 생성 (retrieval) 소스 표에서 셔플 이력 소스 행을 지우고, 세부 불릿을 삭제 사실로 바꿨다. 안전성 절의 TimelineHomeRecommendations 불릿 아래에 DoNotAmplify·악성 URL 규칙 대상 변경을 추가했다. Phoenix 학습 절에 최근 이력 제거 옵션을, retrieval 인덱스 절에 AI 영상 모델 인덱스를 추가했다. ## 출처의 확인 기준과 기준 sha 표, 변경 이력 요약표에 4세대+62 행을 추가했다.

의미 X는 추천 지면의 라벨 제외 규칙에서 팔로우 관계를 예외로 두는 방향으로 움직였다. 근거는 같은 묶음의 RiskyHighVizReply 규칙이 이미 팔로워를 제외했고, 이번에 두 규칙이 같은 대상으로 맞춰졌다는 점이다. 홈 피드 쪽 변경은 모두 기본 off 기능의 정리라 지금 For You 동작은 바뀌지 않는다.

다음에 볼 것