NEW코딩일지 · 11.05코퍼스 메인에 주장 연구실을 세웠다: 사유고2 주장 29만 개를 자동 등록하고 스파크 두 대가 반증 조건까지 검토한다
← 개발로그
·3분

사유고 개발로그 · 4화

저자 인터뷰와 대목 연결 기능을 붙였다: 결함 5개를 먼저 고쳤다

결함 다섯 개를 먼저 고친 뒤, 저자가 나에게 묻는 인터뷰와 한 대목을 끌어 서재 전체에서 맞닿는 곳을 찾는 연결 기능을 붙였다.

▸ 사유고#code-review#interview#vector-search

7월 말에는 새 기능 두 개를 붙이기로 했다. 그런데 그 전에 먼저 멈췄다. 기능이 계속 늘어나는 동안 한 번도 전체를 뜯어본 적이 없었기 때문이다. 테스트 235개가 통과하는 상태를 기록해 두고, 코드 리뷰에서 나온 결함 가운데 무거운 것 다섯 개부터 고쳤다.

새 기능 전에 결함 다섯 개

첫째는 화면에 글자를 넣을 때 따옴표를 이스케이프하지 않은 곳이었다. 책 제목에 따옴표가 들어가면 화면 코드가 깨지고, 악의적인 문자열이라면 코드가 실행될 수도 있었다. 이스케이프를 고치고 외부 링크는 http와 https만 열리게 막았다.

둘째는 같은 와이파이의 휴대폰에서도 열리게 만든 탓에 생긴 구멍이었다. 자료 삭제, 폴더 경로로 책 넣기, 페르소나 설치는 이 맥에서만 되게 하고, 다른 기기에서는 거절했다. 책을 읽어 올 수 있는 폴더도 홈 전체에서 몇 곳으로 좁혔다.

셋째와 넷째는 데이터가 조용히 사라질 수 있는 곳이었다. 자료 목록 파일을 두 곳에서 동시에 쓰면 한쪽 기록이 덮일 수 있어서, 잠금을 걸고 한 번에 통째로 바꿔 쓰게 했다. 같은 제목을 다시 등록하면 경고 없이 덮어쓰던 것도 거절하게 바꿨다. 진도 같은 상태 파일이 깨지면 조용히 빈 파일로 초기화하던 것은, 깨진 파일을 따로 떼어 보관하고 알리는 쪽으로 바꿨다. 조용한 초기화는 고친 것처럼 보이지만 사실은 기록을 버리는 일이다.

다섯째는 게이트였다. 완독 코스에는 이해 점검을 통과해야 다음 장이 열리는 규칙이 있는데, 옛날에 쓰던 퀴즈 경로가 남아 있어서 그 규칙을 옆으로 돌아갈 수 있었다. 3화에서 겪은 것과 같은 종류의 구멍이었다. 옛 경로를 지웠다.

작가가 나에게 묻는다

첫 번째 새 기능은 인터뷰다. 원문을 바탕으로 저자의 관점을 재구성한 인터뷰어가, 설명이나 정답을 알려 주지 않고 한 번에 하나씩 질문을 던진다. 산파술이다. 답이 충분하면 다음 핵심으로 넘어간다.

여기에 반대 방향 모드를 하나 더 붙였다. 이번에는 내가 저자가 되고, 호기심 많은 독자가 질문한다. 독자는 책의 근거를 바탕으로 설명해 달라고, 예를 들어 달라고, 반례는 없느냐고 묻는다. 내 답이 흐릿하면 그 지점을 더 파고, 청중이 알아들을 만큼 분명하면 다음 주제로 넘어간다. 가르쳐 보면서 배우는 파인만식 공부다. 시작 화면에 두 모드를 카드로 나란히 두고 고르게 했다.

오늘의 문구

이틀 뒤에는 홈 화면 맨 위에 오늘의 문구를 올렸다. 각 장을 상징하는, 스레드나 유튜브 도입부처럼 강렬한 한두 줄을 장마다 미리 만들어 두고, 서재 전체에서 무작위로 세 개를 보여 준다. 누르면 그 책의 그 장이 바로 펼쳐진다. 잊고 있던 책으로 돌아갈 핑계를 만드는 장치다. 같은 문구는 완독 코스 각 강의 소제목 아래에도 에피그래프로 붙였다.

한 대목을 끌면 서재가 답한다

두 번째 새 기능은 연결이다. 책을 읽다가 한 대목을 드래그해 연결을 누르면, 새 창에서 서재 전체를 벡터로 검색해 그 대목과 맞닿는 곳을 찾아 준다. 지금 읽는 자료는 빼고, 한 자료에서 최대 두 곳까지만 가져온다. 모델이 한 번 더 읽고 관계를 붙인다. 같은 주장인지, 반박인지, 확장인지, 사례인지. 읽던 창은 그 자리에 그대로 둔다.

첫 버전을 써 보니 카드가 읽히지 않았다. OCR 원문 덩어리가 그대로 들어가 있어서 왜 연결됐는지 한눈에 보이지 않았다. 카드마다 “왜 연결되는지”를 한 줄로 쓰고 그 대목의 요지를 보여 주게 바꿨다. 원문은 근거로 접어 뒀다.

이 연결은 나중에 연결·콘텐츠 엔진으로 커졌다. 모든 자료를 개념·주장·근거·사례·반론·질문이라는 같은 틀로 정리해 두고, 자료 사이의 지지·충돌·확장 관계를 원문 위치와 함께 제안한다.

배운 것

기능이 늘수록 틈도 같이 는다. 새 기능을 붙이기 전에 한 번씩 멈춰 결함을 치우는 편이, 나중에 한꺼번에 치우는 것보다 훨씬 쌌다. 그리고 연결처럼 결과가 많은 기능은 “왜”가 한 줄로 먼저 보이지 않으면 쓰이지 않는다. 원문은 근거로 남기되 앞에 내세우지 않는다.

사유고 개발로그 · 전 11화

  1. 1화종이책 사진에 물어보는 서재: 글자·그림 검색 두 갈래로 세웠다
  2. 2화저자 토론 기능을 붙였다: GPT가 저자 연기를 거부했다
  3. 3화학습 루프를 만들었다: 증거 없이 완료되는 구멍이 나왔다
  4. 4화저자 인터뷰와 대목 연결 기능을 붙였다: 결함 5개를 먼저 고쳤다
  5. 5화책 587권 자동 등록: 파일은 왔는데 페이지가 빠져 있었다
  6. 6화AI 강의 품질을 쟀다: 모델이 쓴 인용은 문구가 바뀌고 쪽수가 틀렸다
  7. 7화600권 완독 코스·마인드맵을 배치로 미리 만들기 시작했다
  8. 8화배치 사용량 문지기: 5시간 한도 80%에서 쉬고 주간 90%에서 멈춘다
  9. 9화사유고2는 책 795권을 원문 10분의 1 크기 지도로 바꿨다: 답하는 서재에서 늘어놓는 서재로
  10. 10화투자 책 50권만으로 노트 2,094개짜리 지식 연결망이 나왔다: 795권으로 키우기 전에 고민할 것
  11. 11화사유고 촬영 자동화를 맥북 프로에서 맥북 에어로 옮겨 같은 작업을 이어 갔다: 바꾼 코드는 두 줄이었다