한 번의 요청에 답하는 어시스턴트에서 대규모 데이터셋을 읽고, 파일을 수정하고, 앱을 작성하는 등 실제 지식 업무를 처리하는 장기 실행 에이전트로 전환하고 있습니다.
OpenAI는 개발자 피드백과 Codex 및 사내 에이전트를 구축한 경험을 바탕으로, 에이전트가 장시간에 걸친 작업을 더 수월하게 수행할 수 있도록 새로운 기본 기능을 공개합니다.
- 스킬은 Agent Skills 개방형 표준에 부합하며, 재사용과 버전 관리가 가능한 지침 묶음입니다. 컨테이너에 마운트하면 에이전트가 작업을 더 안정적으로 수행할 수 있습니다.
- 개선된 셸 도구는 OpenAI가 호스팅하고 인터넷 접근을 통제하는 컨테이너를 제공합니다. 에이전트는 이 안에서 종속성을 설치하고 스크립트를 실행하며 보고서 등의 결과물을 파일로 작성할 수 있습니다.
- 서버 측 컨텍스트 압축을 사용하면 장기 실행 중 컨텍스트가 자동으로 압축되어 에이전트가 컨텍스트 한도에 도달하지 않습니다.
각 기능은 가이드와 API 레퍼런스에서 개별적으로 다룹니다. 이 글에서는 쉽게 떠올리기 어렵지만 OpenAI의 자체 업무와 스킬을 초기에 도입한 Glean의 프로덕션 환경에서 특히 효과적이었던 팁과 패턴을 살펴봅니다.
기본 개념
스킬: 모델이 필요할 때 불러오는 ‘절차’
스킬은 여러 파일과 SKILL.md 매니페스트로 구성되며, 매니페스트에는 프런트매터와 지침이 들어 있습니다. 모델이 실제 업무에 착수할 때 참고하는, 버전 관리가 가능한 업무 지침서라고 생각하면 됩니다.
사용할 수 있는 스킬이 있으면 플랫폼이 각 스킬의 name, description, path를 모델에 제공합니다. 모델은 이 메타데이터를 보고 스킬을 호출할지 결정합니다. 호출하기로 하면 SKILL.md를 읽어 전체 워크플로우를 확인합니다.
셸 도구: 에이전트가 작업을 ‘실행’하는 환경
셸 도구를 사용하면 모델이 다음 두 가지 실제 터미널 환경 중 하나에서 작업할 수 있습니다.
- OpenAI가 관리하는 호스팅 컨테이너
- 개발자가 직접 실행하는 로컬 셸 런타임(도구의 동작 방식은 같고, 머신은 개발자가 제어합니다.)
호스팅 셸은 Responses API를 통해 실행됩니다. 요청 간에 작업 상태를 유지하고, 도구를 호출하고, 여러 턴에 걸쳐 작업을 이어가며 결과물을 생성할 수 있습니다.
컨텍스트 압축: 장기 실행을 이어가는 방법
워크플로우가 길어지면 컨텍스트 윈도우 한도에 도달합니다. 서버 측 컨텍스트 압축은 컨텍스트 윈도우를 관리하고 대화 기록을 자동으로 압축해 장시간 작업을 이어갈 수 있게 합니다.
Responses API에서는 두 가지 방식으로 컨텍스트 압축을 사용할 수 있습니다.
- 서버 측 컨텍스트 압축(신규): 컨텍스트가 임계값을 넘으면 스트림 내에서 자동으로 압축되므로 별도로 압축을 호출할 필요가 없습니다.
- 독립형 컨텍스트 압축 엔드포인트: 압축 시점을 직접 제어하려면
/responses/compact를 사용하세요.
세 기능을 함께 쓰면 좋은 이유
- 스킬을 사용하면 자주 바뀌지 않는 절차와 예시를 재사용 가능한 묶음으로 분리해 프롬프트가 복잡하게 얽히는 일을 줄일 수 있습니다.
- 셸은 코드 설치, 스크립트 실행, 결과물 작성에 필요한 실행 환경을 제공합니다.
- 컨텍스트 압축은 장기 실행 중에도 작업의 맥락을 유지합니다. 컨텍스트를 수동으로 손보지 않고도 같은 워크플로우를 계속 실행할 수 있습니다.
- 세 기능을 함께 쓰면 시스템 프롬프트가 수정하기 어려운 거대한 문서로 커지지 않으면서도, 실제 작업을 수행하는 워크플로우를 반복해서 실행할 수 있습니다.
실전 팁
1) 스킬 설명에는 홍보 문구 대신 라우팅 기준을 작성하세요
스킬 설명은 사실상 모델이 해당 스킬을 선택하는 기준입니다. 다음 질문에 답할 수 있어야 합니다.
- 언제 이 스킬을 사용해야 하나요?
- 언제 이 스킬을 사용하지 말아야 하나요?
- 어떤 결과물을 만들어야 하며, 성공 기준은 무엇인가요?
설명에 ‘사용해야 할 때’와 ‘사용하지 말아야 할 때’를 짧게 구분해 적어 보세요. 입력, 사용할 도구, 예상 결과물을 구체적으로 명시하면 좋습니다.
2) 잘못된 호출을 줄이려면 반례와 경계 사례를 추가하세요
의외로 스킬을 처음 도입하면 적절한 상황에서 스킬이 호출되는 비율이 오히려 낮아질 수 있습니다. 반례와 경계 사례를 함께 제시하면 이 문제를 줄일 수 있었습니다.
구체적으로는 ‘다음과 같은 경우에는 이 스킬을 호출하지 마세요’에 해당하는 사례를 몇 가지 적고, 대신 무엇을 해야 하는지 알려 주세요. 특히 얼핏 보면 비슷한 스킬이 여러 개 있을 때 모델이 더 정확히 선택할 수 있습니다.
Glean도 이를 직접 경험했습니다. 특정 상황을 대상으로 한 평가에서 스킬 기반 라우팅을 도입한 직후에는 호출률이 약 20% 떨어졌지만, 설명에 반례와 경계 사례를 추가하자 호출률이 회복되었습니다.
3) 템플릿과 예시는 스킬 안에 넣으세요(쓰지 않을 때는 비용이 거의 들지 않습니다)
템플릿을 시스템 프롬프트에 몰아넣고 있다면 이제 그만두세요.
템플릿과 작업 과정을 보여 주는 예시를 스킬 안에 두면 두 가지 이점이 있습니다.
- 필요한 시점, 즉 스킬이 호출될 때 바로 사용할 수 있습니다.
- 관련 없는 요청을 처리할 때는 토큰 사용량이 늘지 않습니다.
특히 다음과 같은 지식 업무 결과물을 작성할 때 효과적입니다.
- 정형화된 보고서
- 상위 지원 단계로 이관된 건의 분류 및 우선순위 요약
- 고객사별 영업 계획
- 데이터 분석 결과 보고서
Glean에 따르면 이 패턴은 프로덕션에서 품질을 높이고 지연 시간을 줄이는 데 가장 크게 기여한 방법 중 하나였습니다. 스킬을 호출할 때만 예시를 불러오기 때문입니다.
4) 처음부터 컨테이너 재사용과 컨텍스트 압축을 고려해 장기 실행을 설계하세요
장시간 작업하는 에이전트가 원샷 프롬프트만으로 성공하는 경우는 드뭅니다. 처음부터 작업을 이어갈 방법을 계획하세요.
- 단계가 바뀌어도 같은 종속성, 캐시된 파일, 중간 결과물을 유지하려면 동일한 컨테이너를 재사용하세요.
- 모델이 같은 스레드에서 작업을 계속할 수 있도록
previous_response_id를 전달하세요. - 컨텍스트 압축을 비상시에만 쓰지 말고 장기 실행의 기본 기능으로 활용하세요.
이렇게 하면 스레드가 길어져도 작업을 처음부터 다시 시작하는 일이 줄고, 여러 단계가 일관되게 이어집니다.
5) 동작이 일정해야 한다면 사용할 스킬을 명시하세요
기본적으로는 모델이 언제 스킬을 사용할지 결정합니다. 대부분은 이 방식으로 충분합니다.
하지만 프로덕션 워크플로우에서 따라야 할 규칙이 명확하고 모델의 재량보다 예측 가능한 동작이 중요하다면, 다음과 같이 지시하세요.
“<skill name> 스킬을 사용하세요.”
신뢰성을 높이는 가장 간단한 방법입니다. 스킬 선택을 모델의 판단에 맡기던 부분이 명시적인 실행 규칙으로 바뀝니다.
6) 스킬과 네트워크를 함께 쓰면 위험이 크므로 접근 범위를 제한하세요
처음에는 지나치기 쉽지만 나중에 바로잡기는 어려운 보안 문제입니다.
스킬에 제한 없는 네트워크 접근을 허용하면 데이터가 외부로 유출될 위험이 큽니다. 네트워크를 사용한다면 허용 목록을 엄격하게 관리하고, 도구 출력을 신뢰할 수 없는 데이터로 취급하세요. 사용자가 중요한 작업을 직접 확인하고 승인할 수 있기를 기대하는 소비자용 플로우에서는 인터넷 접근을 제한 없이 열어 둔 채 강력한 작업 절차를 실행하지 마세요.
권장하는 기본 설정은 다음과 같습니다.
- 스킬: 허용
- 셸: 허용
- 네트워크: 범위가 명확히 제한된 작업에 한해 요청별로 최소한의 허용 목록을 적용할 때만 활성화
7) /mnt/data를 결과물 전달 경로로 사용하세요
호스팅 셸 워크플로우에서는 나중에 가져오거나 검토하거나 후속 단계에 전달할 결과물을 기본적으로 /mnt/data에 작성하세요. 보고서, 정제된 데이터셋, 완성된 스프레드시트 등이 여기에 해당합니다.
도구는 디스크에 파일을 쓰고, 모델은 그 내용을 바탕으로 추론하며, 개발자는 디스크에서 결과물을 가져온다고 생각하면 됩니다.
8) 조직과 요청, 두 수준에서 허용 목록을 관리하세요
네트워크 접근은 두 곳에서 제어합니다.
- 관리자가 설정하는 조직 수준 허용 목록은 접근을 허용할 대상의 최대 범위를 정합니다.
- 요청 수준의
network_policy에는 조직 허용 목록에 포함된 대상만 지정할 수 있습니다.
운영할 때는 다음 두 가지를 기억하세요.
- 조직 허용 목록에는 ‘신뢰할 수 있어 승인한 대상’만 포함하고, 목록을 작고 안정적으로 유지하세요.
- 요청 허용 목록에는 ‘이번 작업에 필요한 대상’만 포함해 범위를 더 좁히세요.
요청에 조직 허용 목록에 없는 도메인이 포함되면 오류가 발생합니다.
9) 인증이 필요한 호출에는 domain_secrets를 사용해 자격 증명 유출을 방지하세요
허용된 도메인에 인증 헤더가 필요하다면 domain_secrets를 사용하세요. 그러면 모델에 실제 자격 증명이 노출되지 않습니다.
실행 중 모델에는 자리표시자(예: $API_KEY)만 보이며, 사이드카가 승인된 대상으로 보내는 요청에만 실제 값을 삽입합니다. 에이전트가 컨테이너 안에서 보호된 API를 호출해야 한다면 이 방식을 기본으로 사용하세요.
10) 클라우드와 로컬에서 같은 API를 사용하세요
모든 것을 호스팅 환경으로 옮기지 않아도 스킬과 셸을 모두 사용할 수 있습니다.
- 스킬은 호스팅 셸과 로컬 셸 모드에서 모두 작동합니다.
- 셸의 로컬 실행 모드에서는 개발자가 직접
shell_call을 실행한 뒤shell_call_output을 모델에 반환합니다. - Agents SDK를 사용한다면 자체 셸 실행기를 연결할 수도 있습니다.
실제 개발은 다음과 같이 진행할 수 있습니다.
- 로컬에서 시작하세요. 빠르게 수정하고 테스트할 수 있고, 내부 도구에 접근하기 쉬우며 디버깅도 간편합니다.
- 재현성, 격리, 일관된 배포가 필요해지면 호스팅 컨테이너로 옮기세요.
- 두 모드에서 동일한 스킬을 사용하세요. 실행 환경이 바뀌어도 워크플로우를 그대로 유지할 수 있습니다.
세 가지 구현 패턴
새로운 에이전트 기능은 자유롭게 조합해 볼 수 있습니다. 다음은 이 기능들을 함께 사용해 실용적인 애플리케이션을 만드는 세 가지 예입니다.
패턴 A: 설치 -> 데이터 가져오기 -> 결과물 작성
호스팅 셸을 활용하는 가장 간단한 방법입니다. 에이전트가 종속성을 설치하고 외부 데이터를 가져와 구체적인 결과물을 만듭니다.
예를 들면 다음과 같습니다.
- 라이브러리를 두어 개 설치합니다.
- 데이터를 스크레이핑하거나 API를 호출합니다.
- 보고서를
/mnt/data/report.md에 작성합니다.
이 패턴은 실제 업무를 수행하는 에이전트의 기반입니다. 검토할 결과물이 명확하게 분리되므로 앱에서 이를 사용자에게 보여 주거나, 로그에 기록하거나, 변경 사항을 비교하거나, 후속 단계의 입력으로 전달할 수 있습니다.
패턴 B: 스킬과 셸로 반복 가능한 워크플로우 구성
셸 워크플로우를 한두 개 만들어 성공적으로 실행하고 나면 다음 문제가 드러납니다. 처음에는 잘 작동하지만 프롬프트가 조금씩 달라지면 실행의 신뢰성이 떨어집니다.
이때 스킬이 도움이 됩니다. 다음과 같이 구성하면 안정적으로 운영할 수 있습니다.
- 워크플로우의 단계, 가드레일, 템플릿을 스킬에 정의하세요.
- 스킬을 셸 환경에 마운트하세요.
- 에이전트가 스킬을 따라 정해진 방식으로 결과물을 생성하도록 하세요.
특히 다음과 같은 워크플로우에서 효과적입니다.
- 스프레드시트 분석 또는 편집
- 데이터셋 정제 및 요약 생성
- 반복되는 업무 프로세스를 위한 표준 보고서 생성
패턴 C(고급): 기업 워크플로우를 스킬로 정의하기
초기에 관찰한 현상 중 하나는 단일 도구를 호출할 때보다 여러 도구를 조율해 사용할 때 정확도가 떨어진다는 점입니다. 스킬에 도구 선택과 사용에 필요한 판단 절차를 명시하면 시스템 프롬프트를 늘리지 않고도 이 격차를 줄일 수 있습니다.
Glean의 구체적인 사례를 살펴보겠습니다.
- Salesforce 업무용 스킬을 도입하자 평가 정확도가 73%에서 85%로 높아지고 첫 토큰이 나오기까지 걸리는 시간은 18.1% 줄었습니다.
- Glean은 라우팅 기준을 세심하게 설계하고 반례를 제시했으며, 템플릿과 예시를 스킬 안에 넣었습니다.
- 또한 고객사별 영업 계획 수립, 상위 지원 단계로 이관된 건의 분류 및 우선순위 결정, 브랜드에 맞는 콘텐츠 생성 등 기업 워크플로우에서 반복되는 작업을 스킬로 정의합니다.
이렇게 활용하면 스킬은 조직의 변화에 맞춰 갱신되고 에이전트가 일관되게 실행하는 표준 운영 절차(SOP)가 됩니다.
한 번 만들어 어디서나 실행하기
장기 실행 에이전트가 절차를 따르는 동시에 컴퓨터에서 실제 작업까지 수행할 수 있으면 활용도가 크게 높아집니다. 스킬, 호스팅 셸, 컨텍스트 압축이 그 기반을 제공합니다. 핵심 내용을 정리하면 다음과 같습니다.
- 스킬에 작업 방법을 정의하세요. 절차, 템플릿, 가드레일을 여기에 담습니다.
- 셸에서 실제 작업을 수행하세요. 종속성을 설치하고 스크립트를 실행하며 결과물을 작성합니다.
- 컨텍스트 압축으로 장기 실행 중에도 작업의 맥락을 유지하세요. 컨텍스트를 일일이 관리할 필요가 없습니다.
- 빠르게 수정하고 테스트할 때는 로컬에서 시작하세요.
- 격리된 환경에서 작업을 재현할 수 있어야 한다면 호스팅 컨테이너로 옮기세요.
- 조직 수준과 요청 수준의 허용 목록으로 네트워크 접근을 엄격히 제한하고, 인증이 필요한 호출에는 도메인 시크릿을 사용하세요.
직접 개발하는 애플리케이션에 적용해 보세요. 구체적인 사용법은 스킬 가이드, 셸 가이드, 컨텍스트 압축 가이드에서 확인할 수 있습니다.