00:00:00에이전트에게 추가적인 컨텍스트를 제공할 때 '스킬(Skills)'은 최선의 방법이 아닐 수도 있습니다. 사실 agents.md 파일로 돌아가는 것이 더 효과적일 수 있다는 결과가 나왔거든요.
00:00:08이것은 Vercel이 코딩 에이전트에게 Next.js 문서를 제공하는 최적의 방법을 테스트하던 중 발견한 놀라운 결과입니다.
00:00:15그럼 바로 본론으로 들어가서, 어떤 일이 있었고 그 이유는 무엇인지, 그리고 코딩 에이전트를 효과적으로 사용하는 방법에 대해 무엇을 배울 수 있는지 분석해 보겠습니다.
00:00:26앞서 말씀드린 것처럼 Vercel의 목표는 코딩 에이전트에게 Next.js 문서와 같은 추가 컨텍스트를 제공하는 것이었습니다. 에이전트가 Next.js 코드를 작성할 때, 학습 데이터에 아직 포함되지 않았을 수도 있는 새로운 API들을 모두 알 수 있도록 말이죠.
00:00:41아니면 반대로 구버전 Next.js를 사용하는 상황에서 해당 버전에서 사용 가능한 메서드만 쓰도록 제한하고 싶을 수도 있습니다.
00:00:47즉, 에이전트가 활용할 수 있는 '버전 맞춤형 문서 시스템'이 필요했던 겁니다.
00:00:51이를 위해 그들은 흔히 쓰이는 두 가지 접근 방식을 테스트했습니다.
00:00:54첫 번째는 '스킬'입니다.
00:00:56최근 수많은 프레임워크와 도구들이 스킬을 출시하면서 꽤 인기를 끌고 있죠.
00:01:01아이러니하게도 Vercel은 '스킬 CLI'와 스킬 저장소를 통해 이러한 흐름을 주도하는 곳 중 하나이기도 합니다.
00:01:08관심 있으신 분들은 꼭 한번 확인해 보시길 추천합니다.
00:01:09스킬이 생소하신 분들을 위해 설명하자면, 이는 Anthropic에서 만든 개방형 표준입니다. 에이전트가 작업을 더 정확하게 수행하기 위해 필요할 때마다 불러올 수 있는 지침, 스크립트, 컨텍스트의 모듈화된 번들이라고 보시면 됩니다.
00:01:20하지만 여기서 핵심은 이 정보를 언제 불러올지는 전적으로 '에이전트의 판단'에 달려 있다는 점입니다.
00:01:26그리고 바로 이 점이 현재로서는 약점으로 작용하는 것 같습니다. Vercel이 성능 평가(Evals)를 진행했을 때, 스킬이 한 번도 호출되지 않은 경우가 56%에 달했다는 사실을 발견했습니다.
00:01:35에이전트가 그냥 스킬을 사용하지 않기로 결정해버린 것이죠.
00:01:37놀랍게도 에이전트에게 스킬을 제공했을 때, 스킬이 아예 없었던 에이전트와 비교해 평가 결과에서 아무런 개선이 없었습니다.
00:01:44더 놀라운 사실은 스킬이 오히려 부정적인 영향을 미칠 수도 있다는 점이었습니다.
00:01:48스킬을 사용하지 않았을 때 때때로 기준점(Baseline)보다 낮은 성능을 보였는데, 이는 사용되지 않은 스킬이 일종의 노이즈나 주의 분산 요소로 작용할 수 있음을 시사합니다.
00:01:57이를 해결하기 위해 프롬프트에 “반드시 이 스킬을 사용하세요”라고 명시해보기도 했습니다.
00:02:02확실히 효과는 있었습니다. 스킬 트리거 비율은 95%까지 올라갔고, 평가 통과율도 79%로 상승했죠.
00:02:09하지만 또 다른 문제가 생겼습니다. 문구의 미세한 차이에 따라 결과가 극명하게 달라진다는 사실을 발견한 겁니다.
00:02:15예를 들어, “이 스킬을 반드시 사용해야 한다”라고만 하면 스킬은 사용하지만 프로젝트의 기존 컨텍스트를 무시해버리는 식이었죠.
00:02:21그래서 “스킬과 프로젝트 컨텍스트를 둘 다 사용하라”고 일일이 지시해야 했습니다.
00:02:24Vercel은 시스템의 이러한 취약성을 우려하며, 단어 몇 개 바꿨다고 동작이 크게 요동친다면 실무용으로 쓰기에는 너무 불안정하다고 판단했습니다.
00:02:33결국 에이전트가 스스로 결정할 필요가 없는, 더 신뢰할 수 있는 솔루션이 필요했습니다.
00:02:40그때 시도한 것이 바로 agents.md 파일입니다.
00:02:42이것은 이미 많은 에이전트에서 채택한 개방형 형식입니다. Claude 사용자라면 'claude.md'와 똑같은 것이라고 생각하시면 됩니다.
00:02:49코딩 에이전트에게 전달할 지침을 항상 시스템 프롬프트에 포함해 두는 용도로 사용되죠.
00:02:53스킬과 달리 에이전트가 정보를 가져올지 말지 고민할 필요가 없습니다.
00:02:58시스템 프롬프트 안에 이미 정보가 들어있으니까요. 하지만 이 방식은 컨텍스트 용량이 너무 커지는 문제를 일으킬 수도 있습니다.
00:03:03컨텍스트가 늘어날수록 출력 품질이 저하되는 현상이 발생할 수 있기 때문입니다.
00:03:06Next.js 문서 전체를 agents.md 파일에 통째로 넣고 싶다면 어떻게 해야 할까요?
00:03:10이 문제를 해결하기 위해 Vercel은 agents.md에 '문서 인덱스'를 활용했습니다.
00:03:17그냥 파일 시스템 내에 있는 개별 문서 파일들의 경로 목록을 넣어준 것이죠.
00:03:22그리고 또 다른 핵심 요소로 “Next.js 작업 시 사전 학습된 지식보다 검색 기반의 추론을 우선시하라”는 지침을 추가했습니다.
00:03:31사실 저는 처음에 이 내용을 읽고, 결국 문서를 읽기 위해 파일을 찾아가야 한다면 스킬 방식과 결과가 비슷하지 않을까 생각했습니다.
00:03:38하지만 실제 테스트 결과, 에이전트는 모든 평가 항목에서 100%를 기록했고 빌드, 린트, 테스트 평가에서 완벽한 점수를 받았습니다.
00:03:47스킬보다 훨씬 더 안정적이고 정확한 거죠. 전형적인 소프트웨어 공학의 사례라고 할까요?
00:03:53때로는 더 단순하고 투박한 방식이 최선일 때가 있습니다. 굳이 과하게 설계할 필요가 없었던 거죠.
00:03:58그런데 왜 이런 결과가 나왔을까요? 왜 agents.md 파일이 스킬보다 나은 걸까요? 사실 정확한 이유는 알기 어렵습니다.
00:04:03AI는 블랙박스와 같으니까요. 하지만 Vercel은 이를 의사 결정과 관련된 세 가지 요인 때문으로 추측하고 있습니다.
00:04:10우선 에이전트 파일 방식을 쓰면 에이전트가 선택해야 할 '결정의 순간' 자체가 사라집니다.
00:04:14시작부터 시스템 프롬프트를 통해 문서를 사용하라고 명시하고 각 파일의 정확한 위치까지 알려주기 때문입니다.
00:04:20따라서 필요할 때마다 모델이 사용할지 말지 결정하게 두는 것이 아니라, 지식을 '지속적인 컨텍스트'로 만드는 것입니다.
00:04:27이미 시스템 프롬프트에 제공되었기 때문에 추론 과정에 늘 포함되어 있는 셈이죠.
00:04:31그렇다고 스킬이 완전히 무용지물이라는 뜻은 아닙니다. 실제로 Vercel은 두 방식이 서로 상호 보완적이라는 사실을 발견했습니다.
00:04:36“앱 라우터로 전환해 줘” 또는 “프레임워크 권장 사항을 적용해 줘” 같은 요청들 말이죠.
00:04:41migrate to the app router or apply some framework best practices.
00:04:45하지만 코딩 에이전트가 갖춰야 할 일반적인 프레임워크 지식에 관해서라면,
00:04:48현재의 모델 수준에서는 agents.md를 통한 수동적 컨텍스트 제공 방식이 스킬보다 뛰어난 성능을 보입니다.
00:04:54물론 미래에는 모델들이 스킬 기반의 검색 워크플로우에 최적화되겠지만, 아직은 그 단계가 아닙니다.
00:04:59현재 Vercel이 프레임워크 개발자나 스킬/agents.md를 직접 작성하려는 분들께 권장하는 사항은 다음과 같습니다.
00:05:06스킬 성능이 개선되길 기다리기보다는 컨텍스트를 최대한 압축하세요.
00:05:10기억이 아닌 '검색'을 위해 설계하시고, 무엇보다 항상 성능 평가(Evals)를 통해 검증하시기 바랍니다.
00:05:16일반 사용자분들을 위해 Vercel은 문서를 다운로드할 수 있는 도구와
00:05:21특정 Next.js 버전에 맞게 미리 구성된 agents.md 파일을 제공하고 있으니, 지금 바로 이 새로운 방식을 활용해 보실 수 있습니다.
00:05:29다른 도구들도 이런 방식을 따르게 될지 정말 궁금하네요. 여러분의 생각은 어떠신가요?
00:05:34에이전트 파일과 스킬에 대한 여러분의 의견을 아래 댓글로 남겨주세요.
00:05:37구독도 잊지 마시고요. 그럼 다음 영상에서 뵙겠습니다!