3. 고쳐도 안 깨지는 코드

남의 코드를 빨리 파악하는 순서

이 차시를 마치면

처음 보는 프로젝트를 여덟 단계 순서로 빠르게 파악합니다.

남이 만든 LangGraph 프로젝트를 열었을 때 어디부터 봐야 할까요. 읽는 순서가 따로 있습니다.

파일 순서대로 읽으면 어렵습니다

알파벳 순이나 폴더 순으로 읽으면 세부 구현부터 만나게 됩니다. 그러면 이 코드가 전체에서 어느 자리에 있는지 모른 채 읽게 됩니다.

비유

낯선 건물에서 길을 찾을 때 각 방을 하나씩 열어 보는 것먼저 층별 안내도를 보는 것의 차이입니다. 안내도를 보면 방 세 개만 열어 봐도 됩니다.

권장 순서 여덟 단계

순서파일여기서 확인할 것
1graph.py어떤 Node 가 있는가 · START 가 어디로 가는가 · 조건부 분기는 어디에 있는가 · END 는 언제 발생하는가
2state.pyGraph 가 무엇을 기억하는가
3routing.py어떤 조건으로 갈림길이 생기는가
4nodes.py각 단계가 실제로 무엇을 하는가
5tools.py외부 세계와 어떤 접점이 있는가
6schemas.pyLLM 과 코드 사이의 데이터 형식이 무엇인가
7prompts.pyLLM 판단 기준이 무엇인가
8tests/의도된 동작이 무엇인가

이 순서는 전체 구조 → 상태 → 분기 → 세부 구현 으로 내려갑니다.

보안 점검을 할 때는 순서를 바꿉니다

"이 Agent 가 밖으로 무엇을 할 수 있는가"를 먼저 알고 싶다면 5번 tools.py 부터 읽습니다. 외부와 닿는 지점이 거기 모여 있기 때문입니다. 분석

그다음 graph.py 로 가서 그 도구를 부르는 Node 앞에 승인 단계가 있는지 확인합니다. 두 파일만 봐도 위험한 구조인지 판단할 수 있습니다.

1번에서 무엇을 볼 것인가

builder = StateGraph(AppState)

builder.add_node("retrieve", retrieve)
builder.add_node("generate", generate)

builder.add_edge(START, "retrieve")
builder.add_edge("retrieve", "generate")
builder.add_edge("generate", END)

graph = builder.compile()

여기서 세 가지를 확인합니다.

  1. 등록된 Node 이름과 Edge 가 가리키는 이름이 일치하는가
  2. START 에서 END 로 가는 경로가 실제로 있는가
  3. compile()Checkpointer 가 있는가 — 없으면 이 그래프는 멈췄다가 이어서 실행할 수 없습니다

3번은 특히 중요합니다. 승인 절차를 넣으려면 Checkpointer 가 반드시 있어야 하기 때문입니다.

이 차시의 파이썬 코드는 개념을 보이려고 떼어 놓은 예시 조각입니다. 문법 검사는 통과하지만 그대로 돌려서 결과를 확인한 코드는 아닙니다. 실행까지 검증한 코드는 4번과 6번 트랙에 있으며, 그 차시에는 무엇을 어떻게 확인했는지 따로 적어 두었습니다.

이해도 확인

문항을 불러오는 중입니다.