문서·데이터 라이브러리Document & data libraries

llm-text-edit-revision-guard

AI가 제안한 텍스트 수정을 제안한 그 리비전에만 적용합니다. 기대 텍스트를 확인하고 겹치는 수정은 거부합니다.

GitHub에서 보기View on GitHub

어떤 문제를 푸나The problem

LLM은 스냅샷을 기준으로 수정을 제안하고, 사람은 몇 분 뒤에 승인합니다. 그사이 문서가 바뀌었다면 오프셋을 그대로 적용하는 것은 문서를 망가뜨립니다. 각 수정에는 바꿀 것으로 기대하는 텍스트를, 제안 전체에는 기준 리비전을 붙입니다.

이런 분께 맞습니다Who it is for

AI 편집 제안을 사람이 승인하는 문서 편집기를 만드는 개발자.

무엇을 하나What it does

  • applyEdits(text, {baseRevision, edits}, currentRevision)가 오프셋(UTF-16, 끝 제외)을 원본 기준으로 뒤에서부터 적용합니다.
  • 오류에는 STALE_REVISION, CONTEXT_MISMATCH, OVERLAPPING_EDITS 코드가 붙고 형식 오류는 TypeError입니다.
  • 이모지의 서로게이트 쌍 한가운데를 가리키는 오프셋은 거부합니다. 수정은 최대 1000개입니다.

직접 돌려 본 출력Real output

저장소의 examples 폴더를 실행한 결과입니다.

$ node examples/quickstart.mjs
The slow brown fox jumps over the sleepy dog.
refused: document moved on (rev-8) -> STALE_REVISION
refused: text under the range changed -> CONTEXT_MISMATCH
refused: two edits overlap -> OVERLAPPING_EDITS

알아둘 한계Limits

  • 순수 함수라서 파일에 쓰거나 검증과 저장 사이의 경합을 막지 못합니다. 마지막 쓰기는 원자적 비교 후 교체로 하십시오.

받아서 쓰기Get it

# 저장소를 받습니다
git clone https://github.com/Kein-chronicle/llm-text-edit-revision-guard.git

# Claude Code 스킬로 쓰려면 이 폴더 이름으로 받습니다
git clone https://github.com/Kein-chronicle/llm-text-edit-revision-guard.git ~/.claude/skills/revision-bound-edit

정보Info

분류Category
문서·데이터 라이브러리Document & data libraries
형태Type
라이브러리Library
라이선스License
MIT
필요한 것Requires
Node.js 22 이상
저장소Repository
llm-text-edit-revision-guard
토픽Topics
ai-agents text-editing patch optimistic-concurrency javascript esm llm zero-dependencies

2026-10-18 기준: 저장소의 테스트를 로컬에서 실행해 통과했고, 예제 출력은 저장소의 examples 폴더를 실제로 실행한 결과입니다.

공유하기Share

문자Message 네이버 블로그Naver Blog X Facebook