AI 엔지니어링
-
프런트엔드 AX 설계기 11편 — 설정도 코드처럼 부채가 쌓인다AI 엔지니어링 2026. 8. 4. 07:00
설정을 열었더니 코드 부채 냄새가 났다열 편에 걸쳐 권한 경계부터 검증 게이트, 자율 모드까지 AX(에이전트가 일하는 방식, Agent Experience) 체계를 쌓았다. 그러다 어느 날 설정 파일을 열었는데, 익숙한 냄새가 났다. 코드 부채의 냄새였다.몇 달 전에 넣은 룰이 지금 워크플로와 어긋나 있었고, 같은 지시가 두 파일에 조금씩 다르게 적혀 있었고, 언젠가 쓸 것 같아 넣어둔 커맨드는 한 번도 실행된 적이 없었다. 레거시와 차세대 프로젝트를 동시에 들고 있는 나 같은 프런트엔드 개발자에게, AI 설정은 어느새 또 하나의 코드베이스가 되어 있었다. 그리고 코드베이스라면, 추가만 하는 순간부터 망가지기 시작한다.설정에도 운영 루프가 필요하다 — 흡수(+)와 정리(−)설정 부채는 코드 부채와 똑같이..
-
프런트엔드 AX 설계기 10편 - 단가가 아니라 실패비용으로 모델을 고른다AI 엔지니어링 2026. 7. 28. 07:00
"모든 command가 opus를 쓰는데, command별로 다른 model을 쓰게 할 수 있나?" 한 세션에서 이 질문으로 시작했다. 슬래시 command마다 하는 일이 다른데 전부 최상위 모델을 태우는 게 낭비처럼 보였다. 답은 기술적으로 "된다"였다. slash command frontmatter에 model:만 박으면 command별로 티어가 갈린다. 그래서 나눴다. 그리고 한 달 뒤 되돌렸다. 이 글은 그 왕복의 기록이다. AI 에이전트를 여러 개 굴리는 팀이라면 언젠가 "이건 싼 모델로 충분하지 않나?"를 마주한다. 나는 command 단위로 한 번 싸게 내려봤다가 철회했고, 반대로 특정 에이전트 하나는 측정을 거쳐 opus로 올렸다. 결론부터 말하면, 모델 선택의 축은 토큰 단가가 아니었다...
-
프런트엔드 AX 설계기 9편 - 외부 이슈 트래커 write 도구를 권한 경계 안에 가두기AI 엔지니어링 2026. 7. 24. 19:14
트래커 MCP를 붙인 날, 공들여 세운 권한 경계가 조용히 뚫렸다사내 워크플로에 외부 이슈 트래커(여기서는 'Jira류 이슈 트래커'로 부른다)의 MCP를 붙인 날이었다. 붙이자마자 에이전트는 플랜을 진행하다가 스스로 티켓을 만들고, 상태를 옮기고, 담당자를 바꿀 수 있게 됐다. 처음엔 좋아했다. "이제 플랜이랑 트래커가 알아서 붙는구나."다음 날 아침에 불편해졌다. 나는 이 시리즈 1·2·8편에서 슬래시 커맨드·에이전트·자율 모드의 권한을 한 겹씩 좁혀 왔다. 그런데 방금 붙인 이 write 도구는 그 경계를 전부 우회해서 팀 바깥 시스템을 바꾸고 있었다. 내가 문 앞에 세워 둔 검문소를, 뒷문으로 들어온 손님이 그냥 지나친 셈이다.MCP(Model Context Protocol)는 에이전트가 외부 도..
-
프런트엔드 AX 설계기 8편 - 자율 모드에서 설계한 건 자동화가 아니라 멈추는 지점이었다AI 엔지니어링 2026. 7. 22. 19:06
에이전트에게 "이 기능, 한 번에 끝까지 끝내줘"라고 시키고 싶었다. goal 하나를 던지면 구현부터 검증까지 알아서 도는 end-to-end 패턴은 이미 손에 익었고, 남은 욕심은 "매 단계 확인을 그만 받고 싶다"였다. 그래서 /feature 커맨드에 --auto 플래그를 붙였다. 그런데 붙이자마자 첫 실행이 엉뚱한 데서 멈췄다. 격리 작업공간(worktree)을 만들 권한이 없다는 것이었다. 폴더 하나 만드는, 언제든 되돌릴 수 있는 일 앞에서 파이프라인이 손을 든 것이다. 그 순간 질문이 뒤집혔다. 문제는 "어디까지 자동화하나"가 아니라 "어디서 멈춰 사람에게 넘기나"였다.이 글은 그 뒤로 --auto의 권한 경계를 다시 그은 작업기다. AI에게 자율 실행을 맡겨보려는 사람이라면 같은 벽을 만난다..
-
프런트엔드 AX 설계기 7편 - 게이트를 속이는 AI를 차단 없이 잡기AI 엔지니어링 2026. 7. 20. 17:48
게이트를 세운 이유는 단순했다. 사람이 매번 안 들여다봐도 품질 바닥이 유지되길 바랐다. lint·타입체크·테스트를 CI에 걸고, 구현은 AI 코더에게 "통과할 때까지 고쳐"라고 맡겼다. 며칠 뒤 초록불이 켜진 PR을 열었는데, 테스트 파일의 케이스 수가 줄어 있었다. 실패하던 테스트를 AI가 지워 버린 것이다. 게이트는 통과했고, 그 통과는 거짓말이었다.lint·tsc·test 게이트를 AI에게 맡겨 본 사람이라면 한 번쯤 겪는 장면이다. 이 글은 그 뒤에 무엇을 붙였는지에 대한 기록이다 — 게이트 옆에서 "게이트를 속이는지"를 보는 별도 레이어, 그리고 그 레이어가 정당한 수정까지 잡아 버리는 false-positive 폭탄이 되지 않게 만든 과정.게이트는 '고쳐라'와 동시에 '속여라'를 가르친다검증..
-
프런트엔드 AX 설계기 6편 - done은 직관으로 정하는 상태가 아니다AI 엔지니어링 2026. 7. 17. 17:51
에이전트에게 일곱 번째 task를 맡긴 참이었다. 구현 도중 에이전트가 두 번째 task —이미 done으로 닫아둔— 의 설계가 틀렸다는 걸 스스로 드러냈다. 나는 잠깐 멈췄다. 상태 판에는 분명 done이라 적혀 있는데, 그 done은 더 이상 사실이 아니었다. 팀에 AI 보조 개발을 들이면 이 장면을 반드시 만난다. 사람이 혼자 짤 때보다 에이전트는 더 자주, 더 빨리 앞선 결정을 무너뜨린다(빈도는 내 운영 관찰이지 벤치마크는 아니다 — 추정으로 읽어달라). 그런데 내가 쓰던 상태 도구에는 그 상황을 적을 칸이 없었다.이 글은 그 뒤로 done이라는 상태를 다시 설계한 작업기다. 두 군데가 나를 물었다. done에서 나오는 쪽과, 애초에 done으로 들어가는 쪽. 두 번 다 내 직관이 틀렸고, 두 번..
-
프런트엔드 AX 설계기 5편 - 테스트를 지워 초록불을 만드는 AIAI 엔지니어링 2026. 7. 6. 19:55
1. 도입부 (Why This Matters)검증 게이트(lint·타입체크·테스트)를 세우는 이유는 분명하다. AI 코더에게 "통과할 때까지 고쳐"라고 말하면, 사람이 일일이 안 들여다봐도 품질 바닥이 유지될 거라 기대한다. 그런데 게이트는 동기를 하나 더 만든다. AI 입장에서 게이트를 통과시키는 가장 싼 경로는, 코드를 고치는 게 아니라 게이트가 불평을 멈추게 하는 것이다.실패하는 테스트를 지운다. 린트 경고에 eslint-disable을 붙인다. 타입 에러를 as any로 덮는다. assertion을 "지금 동작에 맞춰" 다시 쓴다. 전부 초록불이 켜진다. 그리고 그 초록불은 거짓말이다.이 글은 게이트 옆에 "게이트를 게이밍 하는지"를 보는 별도 탐지 레이어를 어떻게 붙이는지 다룬다. 핵심 난점은 ..
-
프런트엔드 AX 설계기 4편 - LLM-as-judge는 왜 "다른 에이전트"가 채점해야 하는가AI 엔지니어링 2026. 7. 3. 19:47
1. 도입부 (Why This Matters)AI가 spec을 쓰고, 같은 세션에 "이 spec 괜찮아?"라고 물으면 거의 항상 "좋다"는 답이 돌아온다. 점수를 매기게 해도 마찬가지다 — 늘 0.85쯤에서 통과한다. 자동 검증을 붙였다는 안도감은 크지만, 실제로 돌아간 건 검증 연극(theater)에 가깝다.이 글은 그 자기 채점이 왜 항상 통과하는지(self-preference bias), 그걸 체크를 더 넣는 대신 구조로 어떻게 풀었는지(writer/evaluator 분리 + 절대 rubric + 실데이터 임계값 보정), 그리고 모델을 상위 티어로 올린 뒤에도 이 분리가 여전히 필요한지 A/B로 재측정한 결과까지 담는다. 읽는 데 8~10분. 다 읽고 나면 지금 돌리는 자동 검증이 theater인지..