이루오 — 기록
AI 엔지니어의 설계 기록. 무엇을 만들었는지가 아니라, 왜 그렇게 정했는지.
- 지도 인터페이스
지도 인셋 규칙을 실측으로 정하기
인셋 지도를 언제 띄울지 정거장 155개를 전부 돌려서 정했다. 예외는 브뤼셀 하나였고, 104px이라는 크기는 끝까지 눈대중으로 남았다.
- 인앱 결제
R8 최적화가 결제 플러그인을 지웠다
Play Console 요구대로 R8 을 켰더니 Cordova 결제 플러그인 등록부가 지워졌다. 앱 결제가 열흘 동안 0건이었고, keep 규칙 한 줄로 고쳤다.
- 브라우저 녹음
moof 로 시작하는 파일
녹음 시작 함수의 await 구간에 재진입이 생겨 초기화 세그먼트가 버려졌다. iOS 탓이라고 두 번 고쳤다가 틀렸고, 업로드 파일의 첫 바이트를 찍고서야 원인이 나왔다.
- 시간대 경계
UTC 서버에서 생긴 KST 경계 버그 여섯 개
서버는 UTC 로 돌고 사용자의 하루는 KST 로 시작한다. 증상이 전혀 안 닮은 버그 여섯 개가 같은 뿌리였고, 진짜 결함은 두 기준을 한 함수 안에서 섞은 것이었다.
- 어뷰징 대응
다계정 파밍 피해액을 쟀더니 $0.27
대책을 고르기 전에 규모부터 쟀다. 피해액이 $0.27 이라 아무것도 하지 않기로 했고, 대신 오히려 문제를 만들던 기존 방어 하나를 걷어냈다.
- 에이전트 메모리
오픈소스 13,000줄을 벤더링하기로 한 이유
의존성으로도 포크로도 안 돼서 벤더링을 골랐다. 대가로 포매터를 대지 않고 커밋을 나누는 규율이 생겼고, 못 고치는 것은 문서에 적어 뒀다.
- 동적 실행 엔진
Mount 접두어 매칭이 라우트를 가릴 때
배포도 성공했고 라우트도 등록됐는데 호출은 404 였다. FastAPI 의 Mount 가 접두어로 첫 매치를 쓰기 때문이고, 별칭에 슬래시를 허용한 것이 원인이었다.
- 에이전트 메모리
예외를 던지지 않는 실패들
에러 로그를 남기지 않는 결함 여섯 개를 찾았다. 빈 배열 하나로 "없음"과 "못 가져옴"을 함께 표현한 게 공통점이었고, 넷은 배포 전에 잡았다.
- 에이전트 메모리
유사도 임계값 0.85를 재서 정한 과정
0.9로 시작했다가 문장 쌍을 모아 실제 임베딩 모델로 재서 0.85로 정했다. 두 방향의 실패 비용이 달라 여유는 한쪽으로 몰았고, 검색 경로에서는 임계를 아예 버렸다.
- 에이전트 메모리
한국어 대화에서 영어 기억이 추출되던 이유
추출 프롬프트에 영어 few-shot 예시가 14개 있었다. 지시문을 어디에 넣어도 안 바뀌었고, 예시를 3개로 줄이고 하나를 한국어 쌍으로 바꾸자 해결됐다.