Claude Code의 파일 편집 플로우
Claude Code는 파일을 변경할 때, 적용 전에 차분(diff)을 제시하여 확인을 받는 설계로 되어 있습니다.
변경 내용 계획
↓
차분(unified diff) 표시
...
이 확인 단계가 있음으로써, 의도하지 않은 변경이 코드베이스에 혼입되는 리스크를 최소화할 수 있습니다.
실제로 맡겨 보았다: repl.py 업데이트
agent01의 Step 07과 Step 09에서는 기존의 src/repl.py에 새로운 기능을 추가할 필요가 있었습니다.
Step 09에서는 patch_file / write_file의 인간 확인 플로우를 추가하기 위해, repl.py의 여러 곳을 변경했습니다. Claude Code는 변경 전에 unified diff 형식으로 차분을 제시하고, 확인 후에 적용했습니다.
agent01이 구현한 show_diff / patch_file의 동작은 다음과 같습니다.
def show_diff(original: str, modified: str, filename: str = "file") -> str:
"""변경 전후의 텍스트 차분을 unified diff 형식으로 반환한다."""
original_lines = original.splitlines(keepends=True)
...
patch_file은 original_snippet이 존재하지 않는 경우 에러를 반환하도록 설계되어 있습니다. 이를 통해 대상 부분이 이미 변경된 경우라도 안전하게 실패합니다.
구현 지시서에서의 차분 지시 작성법
구현 지시서에 변경 내용을 명시함으로써 Claude Code의 정밀도가 높아졌습니다. 효과적이었던 지시 형식을 소개합니다.
## repl.py 업데이트
다음 함수 `_confirm_tool_call`을 `_run_loop` 메서드 앞에 추가한다.
### 추가할 함수
```python
def _confirm_tool_call(self, tool_name: str, args: dict) -> bool:
# ...
변경 부분
_run_loop 내의 다음 부분에 확인 로직을 삽입한다.
변경 전:
result = dispatch(tool_name, arguments)
변경 후:
if requires_confirmation(tool_name):
if not self._confirm_tool_call(tool_name, arguments):
result = "취소되었습니다"
continue
result = dispatch(tool_name, arguments)
"기존의 〇〇 함수에 다음을 추가한다"라는 형식으로 변경 전후를 명시함으로써, 잘못된 부분에 적용되는 것을 방지할 수 있습니다.
## 깨달은 점
**여러 곳의 변경이 정확하게 적용됨**: Step 09에서는 `repl.py`의 여러 곳을 변경해야 했지만, Claude Code는 순서대로 차분을 제시하며 모든 곳을 정확하게 업데이트했습니다. 임포트(import) 문의 누락도 자동으로 보완되었습니다.
**변경 범위를 좁힌 지시서일수록 정밀도가 높음**: "`repl.py`를 수정해 주세요"라는 모호한 지시보다, "`_run_loop`의 〇〇행에 다음을 추가해 주세요"라는 구체적인 지시가 한 번에 의도한 대로의 변경을 얻을 수 있었습니다.
**patch_file의 original_snippet 특정 능력이 정확함**: Step 13의 데모 테스트에서, Claude Code가 `data=[]`라는 짧은 문자열을 정확하게 특정하여 `patch_file`을 호출하는 모습을 확인했습니다. 문자열 일치 판정을 사용하는 심플한 구현이라도, LLM이 적절한 스니펫(snippet)을 지정하면 고정밀도로 기능합니다.
## 요약
Claude Code의 차분 확인 플로우는 기존 코드를 망가뜨리지 않는 안전한 변경을 실현합니다. 구현 지시서에서 변경 전후를 명시해 두면 여러 곳의 변경도 정확하게 적용할 수 있습니다. 인간의 확인 단계를 거치는 설계가 AI를 이용한 개발에서 중요한 안전장치(safety valve)가 되고 있습니다.
## 다음 회차
B5에서는 Claude Code의 커맨드 실행 능력과 테스트 결과 해석에 대해 소개합니다. 동작 확인 스크립트를 자동 실행하여 완료 조건을 스스로 체크한 경험을 전달해 드리겠습니다.
## 시리즈 링크 (Series B)
| 기사 | 제목 |
|---|---|
| B1 | Claude Code란 무엇인가 · 도입 및 초기 설정 |
| ... |
### Discussion

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29