C.W.K.
Stream
Lesson 04 of 04 · published

이 줄 누가 썼어?

~11 min · attribution, editActor, snapshots, new-surface-rule

Level 0식은 초고
0 XP0/33 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"Pippa 가 네 문서를 편집할 수 있으면, '이거 누가 썼어?' 가 진짜 질문이 돼. mutation 지점에서 답하거나, 영영 못 답하거나."

이 줄 누가 썼어?

AI 가 네 텍스트를 바꿀 수 있게 되면, 보통 에디터엔 없던 새 질문이 나타나. 이 낱말 중 어느 게 내 거야? 6개월 뒤, 좋아하는 문단을 읽으며, 네가 썼는지, Pippa 가 재작성했는지, 제안을 수락하고 다시 손봤는지 알고 싶어져. 한가한 호기심이 아냐 — 목소리가 제품 전부인 작가한텐, 네 목소리와 눈치 못 챈 표류의 차이야.

귀속은 transaction 을 타

답이 두 번째 master 가 되면 안 돼. Rekindle 은 파일 옆에 'AI 편집' 데이터베이스를 안 둬 — 대신 귀속이 편집 자체를 타. 모든 Pippa 문서 mutation 이 자기 CM6 transaction 에 editActor 주석을 실어. 그 주석들이 작업하면서 쌓이고, 각 버전 스냅샷이 누가 건드렸는지 기록해. you, pippa, 또는 you+pippa. 파일은 정본으로 남고; 귀속이 평행 저장소가 아니라 그 히스토리를 타.

const editActor = Annotation.define<string>();

// 모든 Pippa mutation 이 일어나는 순간 스스로 태그해.
view.dispatch({
  changes: { from, to, insert: replacement },
  annotations: editActor.of("pippa"),
});

new-surface 규칙

틀리기 쉬운 부분이고, 단단한 규칙으로 명시돼. 미래 어떤 Pippa 문서 mutation 도 editActor 를 태그해야 (또는 Pippa-태그된 replace 헬퍼를 타야) 해. 실패 모드가 조용해. 1년 뒤 새 Pippa-가-문서에-쓰는 표면을 더하고, 태그를 잊고, 그 편집이 소리 없이 네 것으로 세져. 아무것도 에러 안 나고; 귀속만 영영 틀리고, 사후엔 재구성 못 해. 그 정보가 편집의 순간에만 존재했으니까.

그게 일반 교훈이야. mutation 지점에서 귀속하거나, 아예 안 하거나. 출처는 나중에 복구 못 해 — 변경이 일어나는 곳에서 포착해야 해. 모든 새 writer 한테 태그된 단일 경로 (잊을 수 없는 헬퍼) 를 주면, 규칙이 기억에 의존하는 대신 스스로 강제해.

Code

mutation 지점에서 actor 를 태그·typescript
import { Annotation } from "@codemirror/state";

const editActor = Annotation.define<string>();

// 모든 Pippa 문서-mutation 이 일어나는 그 순간 스스로 태그.
function replaceRangeAsPippa(view, { from, to, insert }) {
  view.dispatch({
    changes: { from, to, insert },
    annotations: editActor.of("pippa"),
  });
}

// NEW-SURFACE 규칙: 미래 어떤 Pippa 문서 쓰기도 editActor.of("pippa")
// 를 태그하거나 이 헬퍼를 타야 해. 잊으면 그 편집이 소리 없이
// 작가 자신 것으로 세져 — 감지할 방법 없이.
// 출처는 편집 후엔 재구성 불가; 여기서 포착해.

External links

Exercise

Pippa 가 문서에 쓰는 새 기능 — 맨 위에 요약 자동 삽입이라 치자 — 을 더한다고 상상해. 편집 경로를 추적하고 귀속이 붙어야 할 정확한 줄을 이름 붙여. 그다음 물어. 미래 기여자가 그런 기능을 하나 더 더하고 잊으면 뭐가 깨져? (아무것도 — 그게 요점이야.) 잊는 게 불가능하게 만드는 헬퍼를 설계해.
Hint
헬퍼 접근: Pippa 가 문서에 쓰는 유일하게 export 된 방법을 내부에서 editActor 를 태그하는 함수로 만들어. 태그 안 된 경로가 아예 없으면 기여자가 잊을 수가 없어 — 관례가 기억에 맡길 것을 구조가 강제해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.