"Pippa 가 네 문서를 고칠 수 있게 되면 '이거 누가 썼지?' 가 진짜 질문이 돼. 바뀌는 그 순간에 답하지 않으면 영영 답 못 하고."
이 줄 누가 썼어?
AI 가 네 텍스트를 고칠 수 있게 되면 보통 에디터에는 없던 질문이 하나 생겨. 이 중에 어디까지가 내 말이지? 반년쯤 지나서 마음에 드는 문단을 다시 읽다가, 이걸 내가 썼는지 Pippa 가 다시 쓴 건지 제안을 받아들이고 손을 본 건지 궁금해지거든. 한가한 호기심이 아니야. 목소리가 곧 제품인 작가한테는 내 목소리냐, 나도 모르게 흘러간 거냐를 가르는 문제니까.
귀속은 transaction 을 타
그 답이 두 번째 master 가 되면 안 돼. 그래서 Rekindle 은 파일 옆에 'AI 편집' 데이터베이스를 따로 두지 않고, 귀속이 편집 자체를 타고 가게 했어. Pippa 가 문서를 바꿀 때마다 그 CM6 transaction 에 editActor 주석이 실려. 작업하는 동안 그 주석들이 쌓이고, 버전 스냅샷마다 누가 손댔는지가 기록되지. you, pippa, 아니면 you+pippa. 파일은 그대로 정본으로 남고, 귀속은 별도 저장소가 아니라 그 히스토리를 타고 가.
const editActor = Annotation.define<string>();
// Pippa 가 문서를 바꾸는 순간 스스로 표시를 남겨.
view.dispatch({
changes: { from, to, insert: replacement },
annotations: editActor.of("pippa"),
});
새 표면을 만들 때의 규칙
여기가 틀리기 제일 쉬운 지점이라 규칙으로 못 박아 뒀어. 앞으로 Pippa 가 문서를 바꾸는 모든 경로는 editActor 를 붙이거나 Pippa 표시가 이미 붙은 replace 헬퍼를 타야 해. 이걸 어겼을 때의 실패가 조용하거든. 1년 뒤에 Pippa 가 문서에 쓰는 표면을 하나 더 만들면서 태그를 깜빡하면, 그 편집이 소리 없이 네 것으로 세어져. 에러는 안 나. 귀속만 영영 틀린 채로 남고 나중에는 복원도 못 해. 그 정보는 편집이 일어나는 순간에만 존재했으니까.
여기서 나오는 일반 교훈은 이거야. 바뀌는 그 자리에서 귀속하든가, 아예 하지 말든가. 출처는 나중에 복구가 안 돼. 변경이 일어나는 곳에서 붙잡아야 하지. 문서에 쓰는 모든 경로한테 태그가 이미 붙은 길 하나만 주면, 그러니까 잊을 수가 없는 헬퍼를 주면, 규칙이 기억에 기대는 대신 스스로 지켜져.