llm-text-edit-revision-guard
AI가 제안한 텍스트 수정을 제안한 그 리비전에만 적용합니다. 기대 텍스트를 확인하고 겹치는 수정은 거부합니다.
어떤 문제를 푸나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-agentstext-editingpatchoptimistic-concurrencyjavascriptesmllmzero-dependencies
2026-10-18 기준: 저장소의 테스트를 로컬에서 실행해 통과했고, 예제 출력은 저장소의 examples 폴더를 실제로 실행한 결과입니다.