Microsoft는 Microsoft Agent Framework를 사용해 C#으로 AI 에이전트를 구축하는 네 개의 실무 세션 경로를 제공한다. IChatClient 인터페이스를 감싸는 간단한 호출에서 시작해, Microsoft Foundry에서 모니터링·평가·거버넌스·배포할 수 있는 에이전트로 발전한다. 예제에서는 개인 금융 교육 도우미를 사용해 데이터 읽기, 파일 수정, 가상 거래와 같은 영향이 있는 작업 실행의 차이를 보여 준다.
Agent Harness란 무엇인가?
언어 모델은 텍스트를 생성할 수 있지만, 에이전트에 필요한 운영 루프 자체를 제공하지는 않는다. 이 루프는 도구를 호출하고, 그 결과를 검사하며, 계획을 업데이트하고, 메모리를 유지하고, 컨텍스트 창을 관리하고, 민감한 작업에 대해 사용자의 승인을 요청한 뒤, 작업이 완료될 때까지 계속 실행한다. 소스에서는 이 주변 계층을 harness라고 부르며, “claw”라는 개념은 이 계층 위에 구축된 명령줄 도구 방식의 에이전트를 가리킨다.
예제에서는 지침과 도구를 포함한 초기화만으로도 함수를 자동으로 호출하고, 모델 호출 후 기록을 저장하고, 작업 목록을 만들고, 컨텍스트를 압축하고, 파일 메모리를 사용하며, 모델 서비스가 지원할 경우 웹 검색을 실행할 수 있는 에이전트를 시작할 수 있다. 여기에 도구 승인 요청과 OpenTelemetry를 통한 측정 데이터 전송도 포함된다. 이러한 기능은 사용자 지정 공급자를 통해 교체·비활성화·확장할 수 있다.
에이전트 구축의 네 단계
첫 번째 세션에서는 Microsoft Foundry의 모델에 연결된 대화형 클라이언트를, 설명용 주가를 가져오는 사용자 지정 C# 도구를 갖춘 에이전트로 전환한다. 에이전트에 MSFT 가격을 묻으면 모델이 도구를 선택하고, harness가 이를 호출한 다음 결과를 모델에 다시 전달해 답변을 생성한다. 감시 목록을 검토하고 다음에 무엇을 조사해야 할지 제안하는 것처럼 더 광범위한 작업을 제시하면, 개발자가 데모를 위해 별도의 계획 엔진을 구축하지 않아도 에이전트가 계획과 작업 목록을 만들 수 있다.
두 번째 세션은 사용자 데이터를 안전하게 다루는 데 초점을 맞춘다. 에이전트는 승인된 작업 디렉터리에서만 CSV 형식의 포트폴리오 파일을 읽으며, 정의된 경계로 인해 파일 시스템의 임의 경로에 접근할 수 없다. 또한 가상 거래를 실행하는 도구에는 승인이 필요하도록 구성되어 있어 모델이 작업을 요청할 수는 있지만 직접 실행할 수는 없다. 반면 읽기 전용 작업은 불필요한 확인 요청으로 사용자를 방해하지 않도록 자동으로 전달할 수 있다.
소스에서는 시간 제한이 있는 승인 정책도 제시한다. 각 시도에는 5초가 주어지고 최대 5번 시도할 수 있으며, 입력이 없거나 유효하지 않으면 다시 시도한다. y를 입력하면 즉시 승인하고 n을 입력하면 거부하며, 마지막 시도 후에는 자동으로 거부한다. 또한 application이 소유하는 로컬 JSON 메모리와 Microsoft Foundry Memory의 차이도 논의하면서, 모델이 “저장했습니다”라고 말하는 것만으로는 데이터가 실제로 기록되었거나 올바른 범위에 저장되었다는 증거가 되지 않는다고 강조한다.
세 번째 세션에서는 필요할 때만 기본 지침에 로드되는 파일에 전문 지식을 패키징하는 스킬과, shell에 대한 제한된 접근, 통제된 환경에서 코드를 실행하는 CodeAct, 독립적인 조사 작업을 병렬로 수행할 수 있는 백그라운드 에이전트를 추가한다. 소스는 명시적으로 승인과 정책만으로는 명령이나 코드를 실행할 때의 격리를 대신할 수 없다고 지적한다.
프로덕션 환경에서는 실제로 무엇이 달라지는가?
네 번째 세션은 모니터링, 거버넌스, 평가, 배포를 다룬다. 모니터링에는 OpenTelemetry 추적과 도구 및 모델 호출, 토큰 사용량이 포함되며, 거버넌스는 Microsoft Purview 정책과 연결된다. 또한 반복적인 평가를 통해 데모 품질에 대한 인상을 측정 가능한 신호로 전환한다. Foundry에 호스팅된 에이전트를 배포하는 선택지도 제시하며, 콘솔 애플리케이션과 호스팅 엔드포인트, 평가 환경이 하나의 정의를 공유하도록 할 수 있다.
여기서 가장 중요한 메시지는 기능을 조합할 수 있다고 해서 그 기능을 모두 프로덕션으로 옮겨야 하는 것은 아니라는 점이다. 개발 에이전트에는 파일이나 shell이 필요할 수 있지만, 공유 호스팅 컨테이너는 구축 중 유용했다는 이유만으로 광범위한 로컬 접근 권한을 물려받아서는 안 된다. 무엇을 읽고, 쓰고, 실행하고, 기억하고, 추적하도록 허용할지는 여전히 개발 조직이 소유하는 설계 결정이다.
이 접근 방식이 중요한 이유
harness 계층은 프로젝트마다 도구·계획·메모리·승인 루프를 다시 구축해야 할 필요를 줄이지만, 경계를 정의할 책임까지 없애지는 않는다. 이 시리즈의 실질적인 가치는 고급 기능과 그에 대응하는 제어 기능을 연결한다는 데 있다. 파일은 승인된 디렉터리와 연결하고, 민감한 작업은 승인과 연결하며, 메모리는 검증 가능한 저장 결과와 연결하고, 코드 실행은 격리 및 정책과 연결하며, 배포는 모니터링과 평가와 연결한다. 금융 예제는 교육용이며, 사용된 가격과 거래는 mock 및 설명용일 뿐 금융 조언이 아니다.