Post

AI Coding Tool 동작 원리 이해하기

AI Coding Tool 동작 원리 이해하기

이 문서는 OpenCode 아키텍처 분석을 기반으로 작성되었으며, 모든 AI 코딩 도구에 공통적으로 적용되는 원리를 설명합니다.

Opencode 프로젝트 개요

OpenCode는 터미널에서 동작하는 오픈소스 AI 코딩 에이전트입니다. Claude Code, Cursor 같은 상용 도구들과 유사한 구조를 가지고 있어서, 이 프로젝트를 분석하면 AI 코딩 도구들이 내부적으로 어떻게 동작하는지 이해할 수 있습니다.

기술 스택

  • 언어: Go (Golang)
  • 라이선스: MIT (완전 오픈소스)
  • UI 프레임워크: Bubble Tea (터미널 UI)
  • 데이터베이스: SQLite (세션/메시지 저장)
  • 지원 LLM: Claude, GPT, Gemini, Bedrock, Azure OpenAI, Vertex AI, GitHub Copilot

프로젝트 상태

  • 현재 상태: 아카이브됨 (2025년 9월)
  • 후속 프로젝트: Crush로 계속 개발 중
  • 분석 가치: 코드가 공개되어 있어 AI 코딩 도구의 내부 구조를 학습하기에 적합

디렉토리 구조 요약

1
2
3
4
5
6
7
8
9
10
11
12
13
14
opencode/
├── main.go                # 진입점
├── cmd/                   # CLI 명령어 정의
├── internal/
│   ├── app/               # 애플리케이션 코어
│   ├── llm/
│   │   ├── agent/         # 에이전트 시스템 (핵심!)
│   │   ├── provider/      # LLM 프로바이더 (Claude, GPT 등)
│   │   ├── tools/         # 도구 시스템 (파일 읽기/쓰기, Bash 등)
│   │   └── prompt/        # 시스템 프롬프트
│   ├── session/           # 세션 관리
│   ├── permission/        # 권한 시스템
│   └── tui/               # 터미널 UI
└── ...

왜 이 프로젝트를 분석했나?

  1. 오픈소스: Claude Code 같은 상용 도구는 소스가 공개되지 않음
  2. 구조 유사성: 상용 도구들과 동일한 아키텍처 패턴 사용 (에이전트 루프, 도구 시스템 등)
  3. 학습 목적: Go 코드를 읽지 않아도, 구조와 흐름만 이해하면 됨

유사한 오픈소스 프로젝트

  • OpenCode (Go, MIT) - 이 문서의 분석 대상
  • Aider (Python, Apache 2.0) - Git 연동 강점
  • OpenAI Codex CLI (Rust, Apache 2.0) - OpenAI 공식 CLI
  • Cline (TypeScript, Apache 2.0) - VS Code 확장

목차

  1. 개요 및 목적
  2. AI 코딩 에이전트 = 일반 챗봇이 아니다
  3. 핵심: 에이전트 루프 (Agent Loop)
  4. 도구 시스템 (Tool System)
  5. LLM 프로바이더 추상화
  6. 권한 및 보안 모델
  7. 세션 및 컨텍스트 관리
  8. 시스템 프롬프트의 역할
  9. 전체 데이터 흐름 (End-to-End)
  10. 실전 활용 가이드

1. 개요 및 목적

이 문서의 목표

AI 코딩 도구(Claude Code, GitHub Copilot, Cursor, ChatGPT 등)를 사용하면서 “왜 이렇게 동작하지?”, “왜 내 요청을 제대로 못 알아듣지?” 같은 의문을 가진 적이 있다면, 이 문서가 도움이 될 것입니다.

이 문서는 AI 코딩 도구의 “블랙박스”를 열어봅니다.

오픈소스 AI 코딩 에이전트인 OpenCode의 아키텍처를 분석하여, 모든 AI 코딩 도구에 공통적으로 적용되는 구조와 동작 원리를 설명합니다. 구현 코드는 다루지 않으며, 다이어그램과 표 중심으로 설명합니다.

이 문서를 읽고 나면

  • AI 코딩 도구가 요청을 처리하는 전체 흐름을 이해할 수 있습니다
  • 도구의 제약사항을 알고 이를 활용할 수 있습니다
  • 효과적인 프롬프트를 작성할 수 있습니다
  • AI와 협업하는 방식을 최적화할 수 있습니다

2. AI 코딩 에이전트 = 일반 챗봇이 아니다

일반 챗봇 vs AI 코딩 에이전트 비교표

구분일반 챗봇 (ChatGPT 웹)AI 코딩 에이전트 (Claude Code, Cursor 등)
입력텍스트만텍스트 + 파일 시스템 + 프로젝트 컨텍스트
출력텍스트만텍스트 + 파일 수정 + 명령어 실행
동작 방식1회 질문-응답반복 루프 (질문 → 분석 → 도구 호출 → 결과 확인 → 반복)
파일 접근불가직접 읽기/쓰기/검색 가능
명령어 실행불가빌드, 테스트, Git 등 실행 가능
컨텍스트대화 내용만대화 + 파일 내용 + 프로젝트 구조 + LSP 진단
자율성없음 (매번 사용자 입력 필요)높음 (스스로 여러 단계를 순차 실행)
보안해당 없음권한 시스템으로 위험한 작업 통제

에이전트의 4대 구성요소

모든 AI 코딩 에이전트는 다음 4가지 핵심 요소로 구성됩니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
+----------------------------------------------------------+
|                     AI Coding Agent                       |
|                                                          |
|  +---------------+       +---------------------+         |
|  |    Agent      |<----->|   LLM Provider      |         |
|  | (Controller)  |       | (AI Model Connect)  |         |
|  |               |       |                     |         |
|  | - Agent Loop  |       | - Claude, GPT, etc. |         |
|  | - Decisions   |       | - Streaming         |         |
|  | - Tool Invoke |       | - Retry Handling    |         |
|  +-------+-------+       +---------------------+         |
|          |                                               |
|          v                                               |
|  +---------------+       +---------------------+         |
|  |  Tool System  |       |      Session        |         |
|  |  (Executors)  |       | (State Management)  |         |
|  |               |       |                     |         |
|  | - File Read   |       | - Message History   |         |
|  | - File Write  |       | - Context Mgmt      |         |
|  | - Run Command |       | - Auto-Summary      |         |
|  | - Code Search |       | - Token/Cost Track  |         |
|  +---------------+       +---------------------+         |
|                                                          |
+----------------------------------------------------------+
구성요소역할비유
Agent전체 작업 흐름을 제어하는 컨트롤러프로젝트 매니저
LLM ProviderAI 모델과의 통신을 담당외부 전문가 연결
Tool System파일 조작, 명령어 실행 등 실제 작업 수행도구 상자
Session대화 상태와 컨텍스트를 관리회의록/기록

3. 핵심: 에이전트 루프 (Agent Loop)

AI 코딩 에이전트의 가장 중요한 개념은 에이전트 루프입니다. 이것이 일반 챗봇과 코딩 에이전트를 구분하는 핵심입니다.

에이전트 루프 다이어그램

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
30
31
32
33
34
35
36
37
38
39
                    User Request
                         |
                         v
      +-------------------------------------------+
      |         1. Prepare Messages                |
      |  System Prompt + History + User Message    |
      +---------------------+---------------------+
                            |
                            v
      +-------------------------------------------+
      |      2. Send to LLM (Streaming)           |
      +---------------------+---------------------+
                            |
                            v
      +-------------------------------------------+
      |       3. Receive LLM Response             |
      |  - Text --> Display to User               |
      |  - ToolUse --> Execute Tool               |
      +---------------------+---------------------+
                            |
                            v
                  +--------+--------+
                  |  stop_reason?   |
                  +---+--------+---+
                      |        |
          end_turn    |        |   tool_use
                      v        v
               +---------+  +----------------------------+
               |   END   |  |      4. Execute Tool       |
               +---------+  | (Read, Edit, Search...)    |
                             +-------------+--------------+
                                           |
                                           v
                             +----------------------------+
                             |  5. Append Tool Result     |
                             |     to Messages            |
                             +-------------+--------------+
                                           |
                             +----> Back to Step 1

종료 조건

stop_reason의미다음 동작
end_turn / stopLLM이 할 일을 마쳤다고 판단루프 종료 → 사용자에게 최종 응답 전달
tool_useLLM이 도구를 호출하고 싶어함루프 계속 → 도구 실행 후 결과 전달

실제 예시: “main.cpp 버그 찾아서 수정해줘”

다음은 사용자가 “main.cpp 파일에서 버그 찾아서 수정해줘”라고 요청했을 때 에이전트가 실제로 수행하는 단계입니다.

루프AI의 판단수행 동작stop_reason
1회차“먼저 파일을 읽어야 해”view 도구로 main.cpp 읽기tool_use
2회차“관련 헤더 파일도 봐야 해”view 도구로 main.h 읽기tool_use
3회차“버그를 찾았다, 수정하자”edit 도구로 main.cpp 수정tool_use
4회차“빌드해서 확인하자”bash 도구로 make build 실행tool_use
5회차“빌드 성공, 작업 완료”사용자에게 결과 보고end_turn

핵심 인사이트: AI는 한 번의 응답으로 끝나는 게 아니라, 여러 번의 도구 호출을 반복하며 작업을 완료합니다. 복잡한 요청일수록 루프 횟수가 증가합니다.


4. 도구 시스템 (Tool System)

AI 코딩 에이전트가 실제로 작업을 수행하는 것은 도구(Tool)를 통해서입니다. AI 모델 자체는 텍스트만 생성할 수 있으며, 파일을 읽거나 수정하는 것은 모두 도구를 통해 이루어집니다.

도구 카테고리

카테고리도구설명권한 필요
파일 읽기View/Read파일 내용 읽기 (라인 번호 포함)No
파일 수정Edit기존 파일의 특정 부분 수정Yes
파일 생성Write새 파일 생성 또는 전체 덮어쓰기Yes
코드 검색Grep정규식으로 텍스트 검색No
파일 검색Glob파일 이름 패턴으로 검색 (예: **/*.cpp)No
디렉토리Ls디렉토리 내 파일 목록 조회No
명령 실행Bash쉘 명령어 실행 (빌드, 테스트, Git 등)일부
패치 적용Patchdiff 형식의 패치 적용Yes
웹 요청FetchHTTP 요청으로 외부 정보 조회No
코드 진단DiagnosticsLSP를 통한 문법 오류/경고 확인No
외부 검색Sourcegraph대규모 코드베이스 검색No

에이전트 유형별 도구 권한

AI 코딩 에이전트는 작업 목적에 따라 다른 수준의 도구 접근 권한을 가집니다.

구분CoderAgent (메인 에이전트)TaskAgent (서브 에이전트)
역할코드 작성/수정의 전체 작업 수행정보 수집/분석 (읽기 전용)
파일 읽기
파일 수정/생성
명령어 실행
코드 검색
외부 도구 (MCP)
서브 에이전트 생성

실무 팁: Claude Code의 “Task” 에이전트나 Cursor의 읽기 전용 모드는 TaskAgent 개념입니다. 복잡한 분석이 필요할 때 메인 에이전트가 서브 에이전트를 생성하여 병렬로 조사시킵니다.

Edit 도구의 핵심 제약사항

Edit 도구는 AI 코딩 에이전트에서 가장 많이 사용되는 도구이며, 정확한 문자열 매칭이라는 중요한 제약이 있습니다.

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
                    Edit Tool Input
      +-----------------------------------------+
      | file_path  = "main.cpp"                 |
      | old_string = "int result = a + b;"      |
      | new_string = "int result = a * b;"      |
      +-----------------------------------------+
                         |
                         v
              [old_string exists in file?]
                    |              |
                   No             Yes
                    |              |
                    v              v
                 ERROR:    [Appears exactly once?]
               "not found"      |              |
                               No             Yes
                                |              |
                                v              v
                             ERROR:    [Exact match? (whitespace, indent)]
                           "must be"       |              |
                           "unique"       No             Yes
                                          |              |
                                          v              v
                                       ERROR:        SUCCESS:
                                       "match        Replace
                                       failed"       and save
규칙설명실패 시
존재성old_string이 파일에 반드시 존재“old_string not found” 에러
유일성old_string이 파일에 정확히 1번만 존재“appears N times, must be unique” 에러
정확성공백, 들여쓰기, 줄바꿈 완벽 일치매칭 실패 에러

실무 팁: AI가 파일 수정에 실패하는 가장 흔한 원인은 들여쓰기 불일치입니다. AI가 파일을 먼저 읽지 않고 수정을 시도하면 실패할 확률이 높습니다. “먼저 파일을 읽고 나서 수정해줘”라고 명시하면 성공률이 올라갑니다.

MCP를 통한 외부 도구 확장

MCP(Model Context Protocol)는 AI 코딩 에이전트에 외부 도구를 플러그인처럼 추가할 수 있는 표준 프로토콜입니다.

1
2
3
4
5
6
7
8
9
10
11
+----------------+                  +------------------------+
|   AI Agent     |<--- MCP -------->|     MCP Server         |
|  (Built-in     |    Protocol      |   (External Tools)     |
|   Tools)       |                  |                        |
+----------------+                  |  - Jira                |
                                    |  - Confluence          |
                                    |  - Internal DB         |
                                    |  - CI/CD Pipeline      |
                                    |  - Custom Tools        |
                                    +------------------------+
Built-in Tools + MCP Tools = All Available Tools for Agent

5. LLM 프로바이더 추상화

Strategy Pattern으로 다중 모델 지원

AI 코딩 에이전트는 Strategy Pattern(전략 패턴)을 사용하여 다양한 AI 모델을 동일한 인터페이스로 지원합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
              +------------------------+
              |  Provider Interface    |
              |                        |
              |  - SendMessages()      |
              |  - StreamResponse()    |
              |  - Model()             |
              +----------+-------------+
                         |
     +------------+-------------+------------+
     |            |             |            |
     v            v             v            v
+----------+ +----------+ +----------+ +----------+
| Anthropic| |  OpenAI  | |  Gemini  | | Bedrock  |
| (Claude) | |  (GPT)   | | (Google) | | Azure ...|
+----------+ +----------+ +----------+ +----------+

Agent uses any model through the same interface
-> Swapping models does NOT affect agent logic

스트리밍 방식의 실시간 응답

AI 코딩 도구에서 텍스트가 한 글자씩 나타나는 것은 스트리밍 방식 덕분입니다.

1
2
3
4
5
6
7
8
9
10
11
12
Synchronous (traditional):
Request ---------- 3 sec wait ---------- Full response received

Streaming (real-time):
Request --> "Let" --> " me" --> " read" --> " the file" --> Done
             0.1s     0.2s      0.3s        0.4s

Event Types:
  ContentDelta : Text fragment (word ~ sentence)
  Thinking     : AI reasoning process (Extended Thinking)
  ToolUse      : Tool call request
  Finish       : Response complete (with stop_reason)

Rate Limit 및 재시도 자동 처리

AI API에는 요청 속도 제한(Rate Limit)이 있으며, 에이전트가 이를 자동으로 처리합니다.

HTTP 상태 코드의미에이전트의 대응
429Rate Limit 초과Retry-After 헤더만큼 대기 후 재시도
529서버 과부하10초 대기 후 재시도
500서버 에러지수 백오프(Exponential Backoff)로 재시도

실무 팁: 응답이 느려지거나 에러가 발생하면 대부분 Rate Limit 때문입니다. 에이전트가 자동으로 재시도하므로 기다리면 됩니다. 반복적으로 발생하면 요청 빈도를 줄이거나 API 사용량 계획을 확인하세요.


6. 권한 및 보안 모델

AI 코딩 에이전트는 파일 수정이나 명령어 실행 같은 위험한 작업을 수행하기 전에 반드시 사용자 승인을 받습니다.

3단계 권한 체크 흐름도

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
          Tool requests dangerous action
                       |
                       v
        [Step 1: Auto-approve mode?]
       (--dangerously-skip-checks / yolo)
                  |            |
                 Yes          No
                  |            |
                  v            v
              Execute    [Step 2: Persistent permission?]
            immediately   (Previously "Always Allow")
                              |            |
                             Yes          No
                              |            |
                              v            v
                          Execute    [Step 3: Ask user]
                        immediately        |
                                           v
                              +---------------------+
                              | "bash: rm -rf build"|
                              |                     |
                              | [Allow]             |
                              | [Always Allow]      |
                              | [Deny]              |
                              +---------------------+
                                |       |       |
                                v       v       v
                             Execute  Save+   Cancel
                              once   Execute  action

명령어 분류

분류예시권한
안전한 명령어 (자동 승인)ls, cat, git status, git log, git diff, make, cmake, grep승인 불필요
위험한 명령어 (승인 필요)rm, mv, git commit, git push, apt install사용자 승인 필요
금지된 명령어 (실행 불가)curl, wget, ssh, nc, telnet, 브라우저 실행실행 차단

실무 팁: 자주 승인 요청이 뜨는 것이 귀찮다면, 도구별로 “항상 허용”을 설정할 수 있습니다. 단, rm이나 git push 같은 명령어는 신중하게 판단하세요.


7. 세션 및 컨텍스트 관리

메시지 히스토리 구조

AI에게 전달되는 메시지는 다음과 같은 구조로 축적됩니다.

참고: 매 LLM 호출 시 이 전체 히스토리가 전달됩니다. 히스토리가 길어질수록 토큰 비용이 증가합니다.

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
30
31
32
33
34
+----------------------------------------------------------+
| [System] System Prompt                                    |
| "You are an AI coding assistant. Rules: ..."              |
+----------------------------------------------------------+
                            |
                            v
+----------------------------------------------------------+
| [User] User Message                                       |
| "Fix the bug in main.cpp"                                 |
+----------------------------------------------------------+
                            |
                            v
+----------------------------------------------------------+
| [Assistant] AI Response + Tool Call                       |
| "Let me read the file" + view("main.cpp")                |
+----------------------------------------------------------+
                            |
                            v
+----------------------------------------------------------+
| [Tool Result] Tool Output                                 |
| "1| #include <iostream>\n2| int main() { ..."            |
+----------------------------------------------------------+
                            |
                            v
+----------------------------------------------------------+
| [Assistant] AI Response + Tool Call                       |
| "Found the bug, fixing it" + edit("main.cpp", ...)       |
+----------------------------------------------------------+
                            |
                            v
                           ...

* Entire history is sent with every LLM call
* Longer history = higher token cost

컨텍스트 윈도우와 자동 요약

AI 모델은 한 번에 처리할 수 있는 텍스트 양에 제한이 있습니다. 이것을 컨텍스트 윈도우라고 합니다.

모델컨텍스트 윈도우대략적인 분량
Claude 3.5 Sonnet200K 토큰A4 약 300~400페이지
GPT-4o128K 토큰A4 약 200~250페이지
Gemini 1.5 Pro1M 토큰A4 약 1,500페이지
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Context window usage over time:

[##########################------]  ~70% used
                |
                v (continue conversation)
[#############################--]  ~95% used --> TRIGGER!
                |
                v (auto-summarize)
[########-----------------------]  ~20% used

Summary content example:
"Previous conversation: Found memory leak bug in main.cpp,
 fixed with smart pointers. Build test passed."

* Detail may be lost during summarization
* Key decisions and outcomes are preserved

계층적 세션 (서브 에이전트)

메인 에이전트가 복잡한 작업을 처리할 때, 서브 에이전트를 생성하여 독립적인 세션에서 작업을 수행시킵니다.

  • 서브 에이전트는 메인 에이전트의 컨텍스트 윈도우를 소비하지 않음
  • 서브 에이전트는 읽기 전용이므로 안전함
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
+------------------------------------------------------+
|            Main Session (CoderAgent)                  |
|            "Refactor entire project"                  |
|                                                      |
|  +-- Sub-Session 1 (TaskAgent, READ-ONLY)            |
|  |   "Analyze src/ directory structure"              |
|  |   -> Reports results to main                     |
|  |                                                   |
|  +-- Sub-Session 2 (TaskAgent, READ-ONLY)            |
|  |   "Survey test file coverage"                     |
|  |   -> Reports results to main                     |
|  |                                                   |
|  +-- Main agent combines results                     |
|      and performs modification work                   |
+------------------------------------------------------+

* Sub-agents do NOT consume main agent's context window
* Sub-agents are read-only (safe)

8. 시스템 프롬프트의 역할

AI의 “역할 설명서” 개념

시스템 프롬프트는 AI에게 전달되는 첫 번째 메시지로, AI의 행동 규칙을 정의합니다. 사용자의 메시지보다 먼저 전달되며, AI의 모든 응답에 영향을 줍니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
+------------------------------------------------------+
| [System Prompt]       <-- Defines AI role and rules   |
|                                                      |
| "You are an AI coding assistant.                     |
|  - Answer concisely (under 4 lines)                  |
|  - Use markdown                                      |
|  - Match code style when editing                     |
|  - Don't add unnecessary comments                    |
|  - Only commit when explicitly asked                 |
|  - Refer to project's CLAUDE.md file"                |
+------------------------------------------------------+
                         |
                         v
+------------------------------------------------------+
| [User] "Fix main.cpp"                                |
+------------------------------------------------------+
                         |
                         v
+------------------------------------------------------+
| [Assistant] (Responds following system prompt rules)  |
+------------------------------------------------------+

프로바이더별 프롬프트 차이

같은 AI 코딩 도구라도 사용하는 AI 모델에 따라 시스템 프롬프트가 다릅니다.

항목Anthropic (Claude) 계열OpenAI (GPT) 계열
기본 지시“간결하게 4줄 이내로 답변”“사용자의 쿼리가 완전히 해결될 때까지 계속해라”
도구 사용“수정 전 파일의 코드 컨벤션을 파악해라”“답변을 추측하지 말고 도구로 정보를 수집해라”
자율성“적극적이되 과하지 않게”“에이전트처럼 끝까지 진행해라”
안전성“사용자를 놀라게 하지 마라”“불확실하면 명확화 질문을 해라”

에이전트 유형별 프롬프트

에이전트 유형역할프롬프트 핵심 내용
Coder코드 작성/수정“코딩 어시스턴트로서 파일을 수정하고 명령을 실행해라”
Task정보 수집 전용“리서치 어시스턴트로서 파일 수정 없이 정보만 수집해라”
Summarizer대화 요약“핵심 결정사항과 미해결 이슈 중심으로 500단어 이내로 요약해라”
Title제목 생성“50자 이내의 구체적이고 설명적인 제목을 생성해라”

실무 팁: AI가 과하게 장황한 답변을 한다면, 시스템 프롬프트나 사용자 설정에서 간결하게 답변하도록 조절할 수 있습니다. Claude Code에서는 CLAUDE.md 파일로, Cursor에서는 .cursorrules 파일로 커스텀 지시를 추가할 수 있습니다.


9. 전체 데이터 흐름 (End-to-End)

시퀀스 다이어그램

사용자 요청이 처리되는 전체 과정입니다.

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
30
User     UI      Agent    Provider    LLM      Tools
 |        |        |         |         |         |
 | 1.req  |        |         |         |         |
 |------->|        |         |         |         |
 |        | 2.Run()|         |         |         |
 |        |------->|         |         |         |
 |        |        |3.prepare|         |         |
 |        |        |  msgs   |         |         |
 |        |        |         |         |         |
 |        |        |4.Stream |         |         |
 |        |        |-------->|         |         |
 |        |        |         | 5.API   |         |
 |        |        |         |-------->|         |
 |        |        |         |         |         |
 |        |        |         | 6.text  |         |
 | 7.show |<-------|<--------|<--------|         |
 |<-------|        |         |         |         |
 |        |        |         | 8.tool  |         |
 |        |        |<--------|<--------|         |
 |        |        | 9.exec  |         |         |
 |        |        |-------------------------------->|
 |        |        |         |         | 10.result|
 |        |        |<--------------------------------|
 |        |        |         |         |         |
 |        |        | 11.add result, loop back    |
 |        |        |-------->| ------->|         |
 |        |        |         |         |         |
 |        |        |         | 12.end  |         |
 | 13.done|<-------|<--------|<--------|         |
 |<-------|        |         |         |         |

실제 예제 추적: C++ 파일 수정 요청

요청: “Vector3D 클래스에 normalize() 함수를 추가해줘”

단계주체동작전달되는 데이터
1User → UI요청 입력“Vector3D 클래스에 normalize() 함수를 추가해줘”
2UI → AgentRun() 호출sessionID, 사용자 메시지
3Agent메시지 준비시스템 프롬프트 + 사용자 메시지
4Agent → LLM스트리밍 요청전체 메시지 + 사용 가능한 도구 목록
5LLM판단“먼저 파일 구조를 파악해야 해”
6LLM → Agent도구 호출glob("**/Vector3D*")
7Agent → ToolsGlob 실행패턴: **/Vector3D*
8Tools → Agent결과 반환["src/math/Vector3D.h", "src/math/Vector3D.cpp"]
9Agent → LLM결과 전달 (루프 2회차)도구 결과를 메시지에 추가
10LLM → Agent도구 호출view("src/math/Vector3D.h")
11Agent → ToolsView 실행파일 내용 읽기
12Tools → Agent결과 반환Vector3D.h 전체 내용 (라인 번호 포함)
13Agent → LLM결과 전달 (루프 3회차)파일 내용을 메시지에 추가
14LLM → Agent도구 호출edit("src/math/Vector3D.h", old_string, new_string)
15Agent권한 확인사용자에게 “Vector3D.h 수정 허용?” 표시
16User승인“허용” 클릭
17Agent → ToolsEdit 실행파일 수정 + diff 생성
18LLM → Agent도구 호출 (루프 4회차)view("src/math/Vector3D.cpp")edit("src/math/Vector3D.cpp", ...)
19LLM → Agentend_turn“normalize() 함수를 추가했습니다. 변경 내용은…”
20Agent → User최종 응답수정 결과 보고

10. 실전 활용 가이드

10.1 효과적인 프롬프트 작성법

구분나쁜 예좋은 예이유
구체성“코드 고쳐줘”“Vector3D.h의 normalize()에서 0벡터 처리 누락 버그를 수정해줘”AI가 정확한 위치와 문제를 바로 파악
범위“프로젝트 전체를 리팩토링해줘”“src/math/ 디렉토리의 Vector 클래스들을 템플릿으로 통합해줘”범위가 명확해야 한 세션에서 완료 가능
조건“테스트 추가해줘”“normalize()에 대한 단위 테스트를 Google Test로 작성해줘. 0벡터, 단위벡터, 일반 벡터 케이스를 포함해”구체적 조건이 있으면 재작업이 줄어듦
컨텍스트“빌드 에러 고쳐줘”“CMake 빌드 시 ‘undefined reference to normalize’ 에러가 발생해. Vector3D.cpp에 구현을 추가해줘”에러 메시지를 포함하면 분석 시간 절약
순서“파일 만들고 수정하고 테스트해줘”“1. Vector3D.h에 normalize() 선언 추가 2. Vector3D.cpp에 구현 추가 3. test_vector.cpp에 테스트 추가 4. cmake –build로 빌드 확인”단계가 명확하면 AI가 순서대로 진행

10.2 도구 제약사항 이해하고 활용하기

제약사항영향대응 전략
Edit 도구는 정확한 문자열 매칭 필요파일을 안 읽고 수정하면 실패“먼저 파일을 읽고 나서 수정해줘” 명시
파일 읽기 기본 2000줄 제한대규모 파일의 일부만 읽음필요한 라인 범위를 직접 지정
Bash 출력 30,000자 잘림긴 빌드 로그가 잘릴 수 있음“에러만 보여줘” 또는 필터링 명령 사용
이미지 파일 읽기 불가 (일부 도구)스크린샷 기반 디버깅 제한에러 메시지를 텍스트로 복사하여 전달
네트워크 명령 차단curl, wget 등 사용 불가전용 Fetch 도구 사용 또는 로컬 파일 기반

10.3 AI의 작업 순서 이해하기

AI 코딩 에이전트는 경험 많은 개발자와 유사한 패턴으로 작업합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
1. Explore
   |  glob, ls: Understand project structure
   |  "What files are there?"
   v
2. Read
   |  view: Read relevant file contents
   |  "How is the existing code structured?"
   v
3. Analyze
   |  grep: Search related code, find dependencies
   |  "Where is this function used?"
   v
4. Modify
   |  edit, write: Change code
   |  "Match code style and apply fix"
   v
5. Verify
   |  bash: Build, run tests
   |  "Does the change work correctly?"
   |
   +---> If failed, go back to Step 4
   v
6. Report
   Summarize changes for the user

10.4 컨텍스트 관리 전략

전략설명적용 상황
세션 분리주제가 다른 작업은 새 세션에서 시작버그 수정 후 새 기능 작업으로 전환할 때
요약 요청“지금까지의 작업을 요약해줘”긴 작업 중간에 컨텍스트 정리가 필요할 때
프로젝트 메모CLAUDE.md, .cursorrules 등에 프로젝트 규칙 기록매번 반복 설명하기 귀찮은 규칙이 있을 때
작은 단위로 작업한 번에 하나의 파일/기능에 집중대규모 리팩토링을 단계별로 나눌 때
명시적 컨텍스트“앞에서 수정한 Vector3D.h를 기반으로…”AI가 이전 작업을 참조해야 할 때

10.5 일반적인 실수 5가지와 해결책

#실수원인해결책
1한 세션에서 너무 많은 작업컨텍스트 윈도우 초과 → 자동 요약 → 이전 정보 손실작업 단위를 나눠서 새 세션에서 진행
2파일 경로를 불명확하게 지정AI가 잘못된 파일을 수정하거나 못 찾음전체 경로를 명시하거나 “먼저 파일 위치를 찾아줘”
3빌드 환경 정보 누락AI가 빌드 시스템을 모르고 잘못된 명령 실행“CMake 기반 프로젝트이고, build/ 디렉토리에서 빌드한다” 명시
4수정 후 검증 안 함구문 에러나 논리 에러 누락“수정 후 빌드해서 확인해줘” 항상 추가
5결과를 검토 없이 수락AI가 의도와 다른 수정을 할 수 있음diff를 항상 확인하고, 의문이 있으면 되묻기

10.6 도구별 활용 팁

Claude Code

항목
프로젝트 설정프로젝트 루트에 CLAUDE.md 파일을 두면 매 세션마다 자동으로 읽음. 빌드 명령어, 코딩 컨벤션, 프로젝트 구조 등을 기록해두면 효과적
서브 에이전트 활용복잡한 분석은 AI가 자동으로 Task 에이전트를 생성하여 처리. “이 프로젝트의 의존성 구조를 분석해줘” 같은 요청 시 활용됨
권한 관리자주 사용하는 안전한 명령어는 “항상 허용”으로 설정하여 작업 흐름 개선
비대화형 모드claude -p "파일 목록 보여줘" 식으로 일회성 요청 가능. 스크립트에 통합할 때 유용

GitHub Copilot

항목
인라인 완성코드 작성 중 자동 완성 제안. 주석으로 의도를 미리 적으면 더 정확한 제안
Chat 모드IDE 내에서 대화형으로 코드 질문/생성. @workspace 태그로 전체 프로젝트 컨텍스트 활용
컨텍스트 제한현재 파일 + 열린 탭 위주로 컨텍스트를 구성. 관련 파일을 미리 열어두면 더 좋은 제안
단축키Tab으로 수락, Esc로 거부. 부분 수락도 가능 (Ctrl+→)

Cursor

항목
Rules 파일.cursorrules 파일에 프로젝트 규칙을 정의하면 모든 응답에 반영
Composer 모드여러 파일을 동시에 수정하는 대규모 작업에 적합. 에이전트 모드에서 자동으로 관련 파일 탐색
컨텍스트 추가@file, @folder, @codebase 태그로 명시적 컨텍스트 제공
Apply vs AcceptAI 제안을 파일에 적용(Apply)하기 전에 diff를 반드시 확인

ChatGPT (웹/API)

항목
코드 붙여넣기파일 시스템 접근이 없으므로 관련 코드를 직접 붙여넣어야 함
컨텍스트 한계에이전트형 도구 대비 컨텍스트가 제한적. 한 번에 많은 정보를 전달할수록 효과적
코드 리뷰파일 수정 기능이 없으므로 코드 리뷰, 알고리즘 설계, 개념 설명에 적합
Custom GPT반복적인 작업 패턴이 있다면 Custom GPT를 만들어 시스템 프롬프트를 미리 설정

10.7 팀 협업 가이드라인

Do

항목설명
프로젝트 규칙 파일 공유CLAUDE.md, .cursorrules 등을 저장소에 커밋하여 팀 전체가 동일한 AI 설정 사용
AI 수정 코드 리뷰AI가 생성한 코드도 동일한 코드 리뷰 프로세스를 거치기
빌드/테스트 검증AI 수정 후 반드시 빌드 + 테스트 통과 확인
커밋 메시지에 AI 사용 표기AI 도움을 받은 커밋에는 co-authored-by 등으로 표기
작업 범위 공유AI에게 맡긴 작업 범위를 팀원에게 공유하여 충돌 방지
프롬프트 공유효과적이었던 프롬프트 패턴을 팀 내에서 공유

Don’t

항목설명
검토 없이 머지AI 생성 코드를 리뷰 없이 머지하지 않기
민감 정보 전달API 키, 비밀번호, 내부 서버 주소 등을 프롬프트에 포함하지 않기
맹목적 신뢰AI 제안이 항상 옳다고 가정하지 않기. 특히 아키텍처 결정은 사람이 판단
대규모 자동 수정AI에게 프로젝트 전체를 한 번에 수정하게 하지 않기. 단계별로 진행
보안 코드 AI 의존인증, 암호화, 권한 관련 코드는 AI 제안을 반드시 보안 전문가가 검토
컨텍스트 없는 요청“고쳐줘”만 말하지 않기. 충분한 배경 정보 제공

부록: 용어 정리

용어설명
Agent LoopAI가 요청을 처리하기 위해 “판단 → 도구 호출 → 결과 확인”을 반복하는 핵심 메커니즘
LLM (Large Language Model)대규모 언어 모델. Claude, GPT, Gemini 등
ToolAI가 실제 작업(파일 읽기/쓰기, 명령 실행 등)을 수행하는 인터페이스
ProviderLLM API와 통신하는 어댑터 계층
Session하나의 대화 상태를 관리하는 단위
Context WindowAI 모델이 한 번에 처리할 수 있는 최대 텍스트 양 (토큰 단위)
TokenAI가 텍스트를 처리하는 최소 단위. 한국어 1글자 ≈ 2~3 토큰
Streaming응답을 조각 단위로 실시간 전송하는 방식
System PromptAI의 행동 규칙을 정의하는 사전 지시문
MCP (Model Context Protocol)AI 에이전트에 외부 도구를 연결하는 표준 프로토콜
LSP (Language Server Protocol)코드 편집기에 언어별 기능(자동완성, 진단 등)을 제공하는 프로토콜
Extended ThinkingClaude의 “사고 과정”을 볼 수 있는 기능
Rate LimitAPI 호출 빈도 제한
stop_reasonLLM이 응답을 멈춘 이유 (end_turn, tool_use 등)

참고 자료

This post is licensed under CC BY 4.0 by the author.