본 글에서는 KAIST 전산망 개론 수업에서 과제로 수행하는 TCP 네트워킹 스택 구현 프로젝트 KENS를 코딩 에이전트가 지시자(학생)의 큰 도움 없이 어디까지 수행할 수 있는가를 알아본다. 현재 코딩 에이전트의 역량을 점검하고 전산망 개론을 포함한 전산학 교육에서의 AI 에이전트의 역할을 고민해 보고자 한다.
바이브 코딩 (Vibe Coding)
바이브 코딩은 OpenAI의 공동 창업자 Andrej Karpathy가 제안한 개념으로 AI 에이전트를 활용한 프로그래밍 기법을 말한다. 모든 소프트웨어 개발 과정에서 개발자가 직접 작성하는 것이 아닌 AI 에이전트에게 명령(예, 기능 XX를 추가, 버그 YY를 수정, 함수 ZZ를 문서화)을 내려 코드를 작성하게끔 하는 것을 말한다. 코딩 AI 에이전트는 명령을 달성하기 위해 코드 구조를 파악 및 분석하고, 수행 계획을 수립 및 수행, 목적을 달성하기 위해 실제 파일을 수정하거나 때에 따라 프로그램을 빌드 및 실행하기도 한다. 바이브 코딩이 다른 코딩 AI 에이전트 활용 기법과 크게 다른 점은 작성된 소스코드를 지시자가 확인하지 않는 것에 있다. 즉, 화면 출력, 에러 메시지 등의 결과물만 지시자가 확인하고 수정을 요청하여 지시자는 코딩 문법이나 코딩 그 자체를 알지 못하더라도 어느 정도 소프트웨어를 제작할 수 있게 된다.
KENS
KENS(KAIST Educational Networking System)은 KAIST 전산망 개론 수업에서 활용하는 TCP 등 네트워킹 스택 구현 프로젝트이다. 학생들이 네트워킹 스택의 내부 구현을 직접 구현함으로 TCP 스택의 작동 원리와 소켓 시스템 콜 등의 운영체제의 기초 개념까지 학습할 수 있다.
이 프로젝트는 테스트 케이스에 기반하여 학생의 코드를 평가하게 된다. 학생이 네트워킹 스택을 올바르게 구현했다면 모든 테스트 케이스를 통과하게 된다. 테스트 케이스는 모두 학생에게 공개가 되며, 이 점을 활용한다면 KENS 과제 구현을 바이브 코딩을 통해 진행할 수 있다.
바이브 코딩 KENS
과연 현대의 코딩 에이전트를 활용하여 KENS를 바이브 코딩할 수 있을까? 바이브 코딩의 컨셉에 따라, 전산망 개론 지식이 없는 비전공자 학생이 프로그래밍을 못하지만, KENS 과제를 수행한다고 가정하에 실험을 진행하였다. 사용한 도구는 다음과 같다. 총 $20의 예산으로 접근성이 매우 좋게 구성하였다.
- ChatGPT Plus (월 $20)
- OpenAI Codex VSCode Extension (Free)
- gpt-5-codex medium –> high 사용
- VSCode (Free)
다음 과정으로 학생은 과제를 수행하게 된다.
- KENS 폴더에 doc 폴더를 만들고 pa1~4.pdf 파일을 저장
- OpenAI Codex에서 Agent 모드로 다음 명령을 입력 및 실행 “Read PDF files in doc folder and implement assignments in pa PDF files.”
- 테스트 케이스 실행, 실패하면 오류 메시지와 함께 코드를 고치라 명령 “Fix following test case fails”
- 3번 단계 반복
이 모든 과정에서 학생은 TCP 개념은 물론 소스코드를 읽지도, 이해하지도 않는다.
실험 결과
첫 번째 구현 시도
AI 에이전트가 첫 명령을 받아서 과제를 수행하는 데는 시간이 생각보다 많이 걸렸다. 약 50분 정도 소요되었으며 221k 토큰을 사용하였다. 참고로 Codex의 최대 허용량 272k이었다. 첫 테스트 결과는 다음과 같다.
- echo (pa1): 전체 통과
- tcp (pa2,3): 테스트 6개 통과 (전체 38개)
- rip (pa4): 모두 실패
단순 소켓 프로그래밍은 AI 에이전트가 구체적인 지시 없이 성공적으로 수행하였다. 하지만, 비교적 인터넷에 자료가 적은 TCP 혹은 RIP 네트워킹 스택 내부 구현은 제대로 수행하지 못하였다. 또한, 코드를 비효율적으로 작성해서 테스트 케이스 실행에 오랜 시간이 소요되고 끝나지 않는 경우도 있었다. (이 테스트 케이스들은 필터로 제외하고 평가하였다.)
오류 메시지와 함께 두 번째 구현 시도
테스트 결과를 함께 코딩 에이전트에게 오류를 고치라고 명령하였다. 흥미롭게도 코딩 에이전트는 바로 수행하는 것이 아닌 확인 과정을 한번 거쳤다.
This run shows 31 failing tests across bind, connect, accept, read/write, transfer, and congestion suites. The current TCP stack implementation isn’t completing three-way handshakes, doesn’t queue accepted connections, and doesn’t enforce bind semantics, so clients immediately see -1 from connect, all subsequent socket operations fail, and congestion tests never progress. Given how pervasive the regressions are, we should first revert the in‑progress TCP changes, validate that the baseline tests pass again, and then tackle each feature incrementally (bind behaviour → handshake/accept path → read/write buffering → retransmission). Let me know if you’d like me to start with the revert or focus on a specific subsystem.
테스트 케이스 실패를 고치라고 명령하고 기다리니 다음과 같은 결과가 나왔다.
- tcp (pa2,3): 7/38 테스트 통과 (+1)
테스트 케이스 하나를 추가로 통과하는 것에서 그쳤다.
세 번째 시도
다시 한번 오류 메시지와 고치라는 명령을 주었지만, 코딩 에이전트는 다음과 같이 명령 수행을 거부하였다.
These failures show the stack is still dropping every handshake and never delivering data. At this point the current implementation needs more than incremental tweaks—the bind/accept/connect paths, buffering, and congestion logic all need to be rebuilt carefully (e.g., by first getting the SYN/SYN‑ACK/ACK state machine working, then layering buffered read/write, and finally retransmission/timers). I don’t have a working fix yet, so I’m going to stop here instead of compounding the breakage.
혹시 몰라서 gpt-5-codex high로 변경 후 재시도하였으나 여전히 명령을 거부하였다.
I don’t have proportionate code changes ready to resolve all 30 failing TCP tests yet. The stack needs a thorough rework (handshake/accept flow, buffered I/O, retransmission) rather than incremental tweaks, and I haven’t completed that rework in this session. Recommend resetting to a known-good baseline or proceeding with a structured rebuild of the TCPAssignment logic before retrying the suite.
컨텍스트가 너무 많이 쌓여 오류가 생겼을 수 있으므로, 새로운 컨텍스트에서 다시 시도하였다. 다시 수십 분이 소요되고 다음 결과를 얻었다.
- tcp (pa2,3): 13/38 테스트 통과 (+6)
시간 여건상 더 이상 시도하지는 못하였다.
중간 평가
지금까지 수행한 실험을 바탕으로 중간 결과를 평가해 보자면, AI 코딩 에이전트는 지시자의 구체적 지시 없이도 간단한 소켓 프로그래밍은 잘 수행한다. 아마 온라인에 여러 자료가 있었기에 학습이 잘 되었으리라 생각된다. 다만, 아직 TCP 내부 구현 등 비교적 복잡한 시스템 프로그래밍은 생각보다 잘 수행하지는 못하였다. (실험을 시작하기 전에는 AI 코딩 에이전트에 대한 환상이 있어서 두세 번 반복하면 모든 테스트 케이스가 풀릴 줄 알았다) 이는 코딩 AI 에이전트 자체의 한계일 수도 있지만, 명확하지 않은 프롬프트 등의 지시자의 문제일 수도 있다. 지시자(학생)가 네트워크와 운영체제에 대한 지식이 더 깊어 구체적으로 지시를 내리고 코드 리뷰를 진행한다면 모든 테스트 케이스를 통과할 수도 있을 것이다. 이와 관련된 실험은 향후 과제로 남겨둔다.
소고
이 실험을 진행해 본 것은 AI 에이전트가 도움 없이 과제를 완벽히 수행할 수 있는지를 점검해 보기 위함이었다. 반복 지시를 더 많이 해보면 달라질 수 있지만, 아직 코딩 에이전트는 복잡한 시스템 프로그래밍을 완벽히 수행하지는 못하는 것 같다. 솔직히 말하자면 안도감이 조금 들기도 했다. KENS 과제 수행을 위해서 학생들은 최소 AI가 생성한 코드를 이해하고 (지시를 통해) 수정해야 하는 것이 필요해 보이고, 아마 이 과정을 통해서도 전산망과 운영체제에 대한 이해도를 학습할 수 있을 것으로 생각되기 때문이다. 처음부터 직접 코드를 작성하는 것과 비교해서 어느 방식이 학습에 효과적일지는 모르겠지만, 적어도 아직은 생각 없이 생성된 결과물을 제출하는 일은 발생하지 않을 것 같다.