최종 업데이트 07:57
소개 검색
SEOUL AI PRESS

AI와 기술을, 사실부터

강좌 강좌

이벤트 핸들러 입문: 사건에 연결된 함수

앤트로픽이 클로드 코드에 공개한 확장 기능 '모드'는 사용자 입력이나 도구 호출 같은 사건에 정해진 처리 코드를 연결한다. 이 사례를 길잡이로 이벤트 핸들러의 뜻과 작동 순서, 적용 조건과 한계를 정리한다.

한 문장으로 이해하기

이벤트 핸들러(event handler)는 우리말로 ‘사건 처리기’다. 특정 사건에 연결되어 그 사건이 발생했을 때 정해진 처리를 수행하는 함수를 말한다. 함수는 정해진 처리를 담아 둔 코드 묶음이다.

이 강좌에서는 세 가지를 익힌다. 첫째 이벤트 핸들러의 뜻을 스스로 설명하기, 둘째 개념적인 작동 순서를 말하기, 셋째 클로드 코드 모드의 적용 조건과 한계를 구분하기다. 사전지식은 프로그램이 코드로 동작한다는 점, 자바스크립트와 타입스크립트가 프로그래밍 언어 이름이라는 점 정도면 충분하다.

강좌 전체를 관통할 하나의 예시를 먼저 소개한다. 도구 호출은 프로그램이 특정 작업을 수행할 도구를 실행하도록 요청하는 것이다. 가상 예시로, 이 도구 호출에 함수를 연결해 명령을 실행하기 전에 확인 단계를 두는 모드를 생각해 보자. 이후 모든 설명은 이 예시로 이어 간다.

왜 필요한가

실제 사례부터 보자. 모드(Mods)는 클로드 코드의 화면과 동작 방식을 바꾸는 플러그인 구조의 확장 기능이다. 플러그인은 설치해서 기능을 더하는 묶음을 뜻한다. 모드는 자바스크립트나 타입스크립트 함수로 작성되며, 사용자 입력인 프롬프트, 도구 호출, 화면을 그리는 과정인 화면 렌더링 같은 특정 사건에 연결된다.

여기서 필요성이 드러난다. 도구 호출처럼 특정한 시점에 기존 동작을 바꾸고 싶을 때, 그 사건에 함수를 연결해 두는 방식을 쓴다. 앞의 가상 예시가 그 모습이다. 도구 호출이라는 사건에 확인 단계를 수행하는 함수를 연결해 두는 것이다.

어떻게 이루어지는가

아래는 이해를 돕기 위한 개념적 순서다.

  1. 반응할 사건을 고른다. 가상 예시에서는 도구 호출이다.
  2. 그 사건에서 수행할 처리를 함수로 작성한다. 가상 예시에서는 실행 전 확인 단계를 보여 주는 처리다.
  3. 작성한 함수를 그 사건에 연결한다.
  4. 사건이 발생하면 연결된 함수의 처리가 수행된다.

위 네 단계는 개념 설명이며, 입력 출처에는 실제로 함수를 사건에 연결하는 구체적인 절차가 제시돼 있지 않다. 참고로 클로드 코드의 모드는 플러그인 형태로 배포된다.

하나의 예시로 따라가기

가상 예시를 처음부터 따라가자. 목표는 명령을 실행하기 전에 사람이 한 번 확인하게 만드는 것이다. 1단계로 도구 호출을 반응할 사건으로 정한다. 2단계로 확인 화면을 띄우는 함수를 작성한다. 3단계로 그 함수를 도구 호출 사건에 연결한다. 4단계로 도구 호출이 일어나면 확인 함수가 수행된다.

이런 방향이 실제로 가능한지는 출처로 확인된다. 모드를 이용하면 위험한 셸 명령어 실행 전에 승인 단계를 추가할 수 있다. 셸 명령은 컴퓨터에 직접 지시를 내리는 명령문이다. 또 공개된 샘플 모드 blast-radius는 위험한 셸 명령의 영향을 미리 확인하게 해 준다. 다만 이 샘플의 내부 구현 순서는 공개된 범위를 넘어서므로, 위 네 단계는 어디까지나 가상 예시다.

언제 쓰고 언제 쓰지 않는가

먼저 일반 개념과 제품 조건을 구분하자. ‘사건에 함수를 연결한다’는 생각은 일반 개념이다. 아래 조건은 클로드 코드 모드에만 해당한다.

모드는 클로드 코드 2.1.287 이상에서 사용할 수 있다. 사용자 지정 화면 출력은 명령어를 글자로 입력하는 화면과 클로드 데스크톱 앱의 ‘코드’ 탭으로 한정된다. 또 모드는 별도 샌드박스 없이 사용자 권한으로 실행된다. 샌드박스는 프로그램을 격리된 공간에 묶어 두는 장치다. 모드는 컴퓨터의 파일과 폴더, 프로그램 실행, 네트워크 연결, 그리고 프롬프트와 도구 호출 정보까지 접근할 수 있다. 그래서 앤트로픽은 신뢰할 수 있는 출처의 모드만 설치하도록 권고한다.

적용 판단은 단순하다. 가상 예시의 확인 모드가 아무리 유용해 보여도, 출처를 믿을 수 없다면 설치하지 않는 편이 맞다. 한계도 분명하다. 실행 전 확인 단계를 둔다고 해서 위험한 명령의 안전이 보장되지는 않는다. 확인을 사람이 그냥 넘길 수도 있다. 참고로 권한 승인 프롬프트는 임의 수정이 제한된다.

핵심 정리와 확인문제

이벤트 핸들러는 특정 사건에 연결되어 그 사건이 발생했을 때 정해진 처리를 수행하는 함수다. 클로드 코드의 모드가 그런 방식으로 화면과 동작을 바꾼다. 가상 예시의 확인 모드처럼 쓸모가 있어도, 설치 출처와 한계를 함께 봐야 한다.

  1. 이벤트 핸들러를 가장 정확하게 설명한 것은? (가) 사건을 감지만 하고 아무 처리도 하지 않는 코드 (나) 특정 사건에 연결되어 그 사건이 발생했을 때 정해진 처리를 수행하는 함수 (다) 사건에 연결할 함수가 아니라 화면의 색상 설정값

정답: (나). 해설: 핵심은 ‘감지’가 아니라 사건에 연결된 ‘처리의 수행’이다. (가)는 처리를 빼놓았고, (다)는 설정값이다. 이벤트 핸들러는 설정값이 아니라 사건에 연결된 처리 함수다.

  1. 다음을 개념적 작동 순서대로 배열하면? (ㄱ) 함수를 사건에 연결한다 (ㄴ) 반응할 사건을 고른다 (ㄷ) 사건 발생 시 처리가 수행된다 (ㄹ) 수행할 처리를 함수로 작성한다

정답: ㄴ → ㄹ → ㄱ → ㄷ. 해설: 어떤 사건에 반응할지 정한 뒤 처리를 작성하고, 그 둘을 연결해야 사건 발생 시 처리가 이뤄진다.

  1. 클로드 코드 모드의 적용 조건과 한계로 옳은 것은? (가) 모드는 샌드박스 안에서만 실행되어 권한 위험이 없다 (나) 모드는 클로드 코드 2.1.287 이상에서 쓸 수 있고, 사용자 권한으로 실행되므로 신뢰할 수 있는 출처에서만 설치해야 한다 (다) 사용자 지정 화면 출력은 모든 환경에서 동일하게 보인다

정답: (나). 해설: 모드는 별도 샌드박스 없이 사용자 권한으로 실행된다. 화면 출력은 명령어를 글자로 입력하는 화면과 데스크톱 앱 ‘코드’ 탭으로 한정된다.

참고자료