[강의록] 로컬 AI 에이전트와 스킬로 학교 업무 자동화하기: 울산시교육청 시각장애 교원 역량 강화 연수 실황

김헌용 · 신명중학교 영어 교사, 함께하는장애인교원노동조합 위원장

이 글은 2026년 11월 2일(월) 울산광역시교육청이 주최하고 울산혜인학교에서 진행한 '2026학년도 시각장애 교원 역량 강화 연수'의 실습 강의와 질의응답을 현장 전사 기록을 바탕으로 정리한 것입니다. 웹 연수자료 보기



들어가며

2026년 11월 2일 월요일 오후, 울산혜인학교에서 울산 관내 시각장애 교원을 대상으로 한 역량 강화 연수가 열렸다. 원래 여섯 분의 선생님이 신청하셨으나 당일 개인 사정과 병가로 세 분이 불참하셔서 시각장애 교원 세 분과 장학사님, 지원 선생님 그리고 나까지 여섯 명이서 조촐하게 진행됐다. 인원이 단출해진 덕분에 참석하신 선생님들의 노트북 환경과 스크린 리더 소리를 하나씩 직접 확인하며 소규모 밀착 실습으로 진행할 수 있었다.

이번 연수는 철저히 실습 중심으로 진행했다. 참석한 선생님들이 각자 노트북에서 코딩 에이전트를 켜고 학교 행정 업무 자동화 스킬(school-work-automation)과 시각장애인용 스킬(skills-for-the-blind)을 직접 설치해 실제 업무 환경까지 연결해 보는 것이 핵심이었다. 현장에서 함께 부딪히며 나눈 설명과 실습 과정, 그리고 예상치 못한 네트워크 난관을 넘으며 오간 문답을 시간순으로 정리해 둔다.


1. 왜 웹 브라우저나 Work 모드가 아니라 로컬 모드인가

참석하신 선생님들은 이미 챗GPT, 클로드, 제미나이 같은 AI 서비스를 일상적으로 쓰고 계셨다. 어떤 도구를 쓰시는지 여쭈어 보았다. 세 분 모두 Windows용 챗GPT 데스크톱 앱의 Work 모드를 사용하고 계셨고, 한 분은 연수 전날 클로드에도 새로 가입해 두신 상태였다. 스크린 리더로 다루기에는 클로드 데스크톱 앱이나 챗GPT 데스크톱 앱이나 대동소의하다. 이날 실습은 참석하신 선생님들께 익숙한 챗GPT 데스크톱 앱으로 통일해 진행했다.

실습에 앞서 먼저 챗GPT 데스크톱 앱 안의 '워크(Work) 모드'와 '코덱스(Codex) 모드'의 차이를 설명해 드렸다. 일반적으로 코덱스 모드는 개발자 전용 기능이라고 생각하기 쉽고, 그래서 워크 모드로만 쓰는 경우가 많다. 그런데 두 모드의 핵심적인 차이는 클라우드 연동 여부에 있다. 작업 과정에 클라우드 환경이 섞이면 워크 모드이고, 내 컴퓨터(로컬) 중심으로 돌아가면 코덱스 모드라고 보면 된다.

AI 에이전트를 클라우드 환경에서 사용하는 것과 로컬 환경에서 사용하는 것은 각각의 장단점이 있다. 클라우드에 대화가 저장되면 모바일 앱에서도 이전 대화를 확인하고 이어 갈 수 있다. 하지만 클라우드에 연동되는 순간 특정 플랫폼에 종속되고, 스킬과 같이 에이전트가 작업에 활용하는 주요 도구/문서들을 인식하는 방식도 달라진다. 반대로 로컬에서 작업하면 스마트폰 앱에서 대화 내역을 볼 수는 없지만 모든 작업 맥락과 결과물이 내 컴퓨터의 폴더와 파일로 남는다. 덕분에 챗GPT 코덱스 모드에서 작업하다가 클로드의 코드 모드나 제미나이로 옮겨 가도 흐름이 끊기지 않는다.

여러 AI 서비스를 번갈아 쓰며 업무 연속성을 유지하려면 로컬 환경을 중심으로 작업하는 편이 훨씬 유리하다. 특히 토큰 제약을 우회하기에도 좋다. 특정 플랫폼 하나에만 묶여 있으면 사용 한도에 걸렸을 때 다른 플랫폼에서 작업을 이어 가는 것이 사실상 불가능하다. 하지만 로컬에 작업하던 파일들이 다 남아 있으면 사용량 한도에 걸렸을 때 다른 플랫폼에서 같은 폴더를 열어 작업을 이어가면 그만이다. 더구나 학교 행정 업무는 스마트폰으로 처리할 일이 거의 없고 결국 컴퓨터 앞에서 마무리해야 하므로, 처음부터 로컬 환경으로 일원화해 두면 훨씬 덜 헷갈린다.


2. 로컬 에이전트의 출발점: 홈 디렉터리 지정과 탐색기·메모장 기본기

로컬 모드로 전환한 뒤 가장 먼저 해야 할 일은 에이전트가 일할 작업 폴더를 지정하는 것이다. 연수에서는 컴퓨터 어디서나 쓸 수 있는 전역 스킬을 먼저 설치하기 위해 기본 홈 디렉터리를 작업 폴더로 잡았다. 윈도우의 홈 디렉터리는 C:\Users\<사용자계정>(탐색기 표시 기준 로컬 디스크(C:) > 사용자 > 유저)이다.

참고로 나중에 수업 자료를 만들거나 공문을 처리할 때는 해당 업무 폴더를 작업 위치로 잡으면 된다. 작업 위치를 잡기 애매할 때는 문서(Documents) 폴더 아래에 별도 하위 폴더를 만들어 지정하는 것도 괜찮다. 하지만 전역 설정과 관련된 작업이나 에이전트가 참조할 파일이 많은 코딩 작업 등에서는 경로가 짧은 홈 디렉터리로 바로 잡는 편이 깔끔하다.

코덱스 모드에서 작업 폴더는 단축키로 쉽게 지정할 수 있다. Ctrl+O를 눌러 폴더 선택 창을 열고, 주소창에 %USERPROFILE%을 입력하거나 C 드라이브 > 사용자 > 유저를 찾아 선택한 뒤 '폴더 신뢰'를 한 번 승인해 주면 된다. 이때 프롬프트 입력창 아래의 권한 설정이 '낮은 승인'으로 되어 있으면 에이전트가 명령을 실행할 때마다 일일이 승인을 물어보므로, '전체 액세스(전체 권한)' 항목이 있다면 이를 선택해 두는 것이 편리하다.

이 단계에서 잠시 코덱스 창을 내려놓고 윈도우 파일 탐색기와 메모장을 다루는 기본기를 함께 연습해 보았다. 로컬 에이전트는 내 컴퓨터의 폴더와 텍스트 파일을 직접 읽고 고치기 때문에, 사용자가 파일 탐색기와 메모장을 편하게 다룰 수 있어야 에이전트의 작업 결과를 확인하고 통제하기가 수월하다.

1) 자주 쓰는 폴더를 탐색기 '즐겨찾기에 고정'하기

자주 쓰는 작업 폴더는 파일 탐색기의 '즐겨찾기'에 고정해 두면 매번 경로를 찾아 들어가는 수고를 덜 수 있다. Windows+E로 파일 탐색기를 열고 목록 상자에서 Shift+Tab을 한 번 누르면 좌측 트리뷰로 이동한다. 여기서 내 PC > 로컬 디스크(C:) > 사용자로 들어가 본인의 홈 디렉터리(유저) 위에 포커스를 두고 팝업 메뉴 키(Shift+F10 또는 애플리케이션 키)를 누른 뒤, '즐겨찾기에 고정(단축키 Alt+Q)'을 실행하면 트리뷰 상단에 해당 폴더가 고정된다.

이렇게 한 번 고정해 두면 탐색기에서뿐 아니라 코덱스 앱에서 작업 폴더를 고를 때도 큰 이점이 있다. 탐색기 트리뷰에서 첫 글자(유)만 눌러도 홈 디렉터리로 바로 이동할 수 있고, 코덱스에서 Ctrl+O로 작업 폴더를 고를 때도 즐겨찾기 목록이 똑같이 나타나 원하는 폴더를 즉시 선택할 수 있다.

참고로 평소 수업용, 행정 업무용, 개인 자료용 폴더 등을 세분화해서 관리하면 에이전트가 탐색할 범위도 좁혀져 토큰을 아낄 수 있다. 만약 아직 정리가 안 된 복잡한 폴더가 있다면 그 폴더에서 코덱스를 열어 "이 폴더 좀 정리해 줘"라고 지시하는 것부터 시작해도 좋다.

2) 탐색기에서 포커스를 놓쳤을 때는 F6 키 활용하기

파일 탐색기를 쓰다 보면 현재 포커스가 어느 영역에 가 있는지 길을 잃을 때가 있다. 탐색기 창 안에는 트리뷰, 목록 상자, 정렬 기준 헤더, 세부 정보 창, 페이지 탭까지 다섯 영역이 나뉘어 있는데, 포커스 위치를 놓쳤을 때는 당황하지 말고 F6 키를 눌러 영역 사이를 순환하면 원하는 목록 상자나 트리뷰로 쉽게 돌아올 수 있다.

3) 윈도우 11 메모장의 '마크다운 구문' 보기 모드와 포커스 복구 요령

에이전트가 다루는 지침과 스킬 파일은 모두 마크다운(.md) 형식의 텍스트 문서다. 윈도우 11 메모장으로 이 파일을 열 때는 보기 설정을 미리 맞춰 두는 것이 좋다. 메모장은 마크다운 파일을 열 때 서식이 적용된 '포맷' 보기와 원문 기호를 그대로 보여 주는 '구문' 보기를 지원하는데, 스크린 리더 사용자는 기호와 문서 구조를 정확히 파악할 수 있는 구문 보기를 쓰는 편이 편리하다. .md 파일을 메모장으로 연 뒤 Alt 키로 메뉴 표시줄을 열고 보기 > 마크다운 > 구문을 선택하면 된다(일반 .txt 파일에서는 마크다운 메뉴가 나타나지 않는다).

여기서 현장에서 자주 겪는 시행착오가 하나 있다. 구문 보기로 전환한 직후 간혹 메모장 본문 영역의 포커스가 증발해 스크린 리더가 아무 내용도 읽어 주지 않는 현상이 생긴다. 이날 실습에서도 같은 현상이 나타났는데, 이럴 때는 Ctrl+T를 눌러 새 메모장 탭을 하나 열었다가 Ctrl+F4(창 전체를 닫는 Alt+F4가 아님)로 방금 연 탭만 닫아 주면 본문 포커스가 다시 살아난다. 여기에 더해 센스리더에서 Alt+Shift+Z를 눌러 문장부호 읽기 단계를 '모두 읽기'로 맞추면 마크다운 기호까지 빠짐없이 확인할 수 있다.


3. 실습 1: 학교 업무 자동화 스킬 번들 설치와 폴더 구조 살펴보기

본격적인 첫 실습으로 학교 현장에서 자주 쓰는 행정 업무 자동화 스킬 번들(school-work-automation)을 설치했다. 코덱스 프롬프트 입력창에 다음과 같이 자연어로 지시문을 입력하면 된다.

깃허브에서 engccer의 school-work-automation 스킬 저장소를 확인하고 이 컴퓨터에 설치해 줘.

한 분은 연수 전 금요일에 미리 설치해 써 보고 계셨고, 다른 선생님들의 컴퓨터에서도 에이전트가 저장소를 찾아 나이스와 K-에듀파인부터 쿨메신저까지 다섯 가지 스킬을 차례로 설치했다.

스킬 이름 자동화 대상 업무
neis-automation 나이스 복무(근무상황·출장 신청), 외부강의 신고, 정기고사 채점·통계, 학생부 입력, 급여명세서 조회 등
k-edufine-automation K-에듀파인 결재대기 공문 처리, 공문 본문·첨부 저장, 기안문 작성 등
kyodetong-submit 교육디지털원패스·교데통 데이터취합 접수, 파일 첨부, 제출
coolmessenger-automation 쿨메신저 메시지·첨부 일괄 수집, 회신 수합, 회신 창 채우기
alimjang-automation 교직원 알림장 전달사항 정리, 첨부 수집·요약, 지난 전달사항 검색

설치를 마친 뒤에는 스킬이 실제로 어떻게 생겼는지 확인하기 위해 파일 탐색기로 스킬 폴더를 직접 열어 보았다. 홈 디렉터리 아래에는 에이전트가 사용하는 설정 폴더(.codex 또는 .agents, 클로드는 .claude)가 만들어지는데, 그 안의 skills 폴더에 방금 설치한 스킬들이 모여 있다. 에이전트에게 스킬이 무엇인지 말로만 설명을 들으면 실체가 막연하게 느껴지지만, 폴더 안에 직접 들어가 보면 구조가 한눈에 들어온다. 각 스킬 폴더 안에는 작업 절차와 판단 기준을 적은 마크다운 문서(SKILL.md)와 세부 참고 문서(references/), 그리고 보조 스크립트(scripts/)가 들어 있다.

선생님들과 함께 neis-automation 폴더 안의 SKILL.md를 메모장 구문 보기로 열어 내용을 읽어 보았다. 문서 맨 위에는 스킬 이름(name: neis-automation)과 언제 이 스킬을 호출할지 정의한 설명(description)이 적혀 있고, 그 아래로 나이스 복무 신청, 외부강의 신고, 급여명세서 조회 절차가 단계별로 상세히 정리되어 있다. 에이전트가 처음부터 나이스 화면 구조를 알고 있는 것이 아니라, 사람이 먼저 시행착오를 겪으며 정리해 둔 이 절차 문서를 읽고 브라우저와 로컬 도구를 순서대로 움직이는 원리다.

이처럼 로컬 에이전트가 참조하는 규칙과 절차가 내 컴퓨터 폴더 안의 텍스트 파일로 저장된다는 점을 이해하면 에이전트를 훨씬 정확하게 통제할 수 있다. 에이전트가 뒤에서 어떤 기준으로 움직이는지 사용자가 직접 열어 볼 수 있고, 수정을 지시할 때도 막연하게 말로만 설명할 필요가 없다. 예를 들어 복무 신청 절차를 내 업무 방식에 맞게 조금 바꾸고 싶다면 neis-automation 폴더 안의 SKILL.md 파일을 열어 해당 부분만 고치라고 지시하면 된다.

스킬 문서를 함께 읽는 과정에서 실무적으로 중요한 질문 두 가지가 나왔다.

첫 번째는 문서 상단에 적힌 서울시교육청 기준 주소를 울산교육청 주소로 직접 수정해도 되는지 묻는 질문이었다. 스킬 본문에는 시도별 교육청 환경에 맞춰 주소를 판단하도록 이미 안내가 들어 있지만, 본인의 소속 교육청이나 세부 업무에 맞게 스킬 내용을 직접 고쳐 쓰고 싶을 수도 있다. 다만 이때 원본 스킬 폴더와 이름을 그대로 둔 채 내용만 고치면, 나중에 배포본이 업데이트되어 스킬을 다시 내려받았을 때 내가 수정한 내용이 덮어써지는 문제가 생긴다. 따라서 직접 고쳐 쓸 때는 에이전트에게 "이 스킬을 복제해서 이름을 살짝 바꿔 만들어 줘"라고 지시한 뒤 복제본을 수정하는 편이 안전하다.

참고로 담임 교사의 출결 관리처럼 아직 번들에 없는 업무도 같은 방식으로 자동화할 수 있다. 처음 한 번만 에이전트와 대화하며 작업을 끝까지 완수한 뒤, "방금 한 작업을 스킬에 반영해 줘" 또는 "새 스킬로 만들어 줘"라고 지시하면 그때부터 나만의 자동화 절차로 남길 수 있다.

두 번째는 금요일에 미리 스킬을 설치해 써 보신 선생님이 겪으신 시행착오에 관한 질문이었다. 혼자 해 볼 때는 업무포털에서 내 문서함을 찾는 것까지는 잘되는데 K-에듀파인 기안창만 열리면 에이전트가 창을 찾지 못해 막혔다가, 스킬을 설치해 돌리니 기안창까지 바로 이어졌다며 어떻게 해결한 것인지 궁금해하셨다. K-에듀파인 기안창은 일반 웹페이지와 다른 웹스퀘어(WebSquare) 기반의 별도 프레임 구조로 열리기 때문에, 에이전트가 사전 지식 없이 접근하면 포커스를 놓치고 길을 잃기 쉽다. 내가 먼저 수없이 부딪히고 실패하면서 어디서 엔터를 치고 어떤 순서로 창을 잡아야 하는지 찾아낸 우회 경로를 스킬 문서에 그대로 적어 두었기 때문에, 스킬을 읽은 에이전트는 같은 시행착오를 거치지 않고 기안창을 바로 제어할 수 있었던 것이다.


4. 실습 2: 나이스 조퇴 신청과 외부 연수장의 EVPN 환경 대처

두 번째 실습으로는 방금 설치한 스킬을 활용해 실제 나이스 복무 신청을 진행해 보았다. 전역에 설치된 스킬은 어느 폴더에서든 에이전트가 인식하므로 작업 폴더를 바꾸지 않고 바로 다음과 같이 지시했다.

나이스에 들어가서 이번 주 금요일 3시 반에 조퇴 복무를 올려 보자. EVPN을 먼저 접속해서 처리해 줘. 필요한 경우 내가 개입할게.

이날 실습에서는 근무 학교가 아닌 외부 연수장에서 원격업무지원서비스(EVPN)를 거쳐 접속해야 했기 때문에, 집이나 외부에서 작업할 때 흔히 겪게 되는 여러 시행착오를 현장에서 그대로 마주하고 해결해 볼 수 있었다.

첫 번째로 짚고 넘어간 시행착오는 로그인할 브라우저 창을 에이전트와 따로 여는 실수다. 에이전트의 토큰을 아끼거나 평소 습관대로 사용자가 바탕화면에서 별도로 크롬 창을 열어 EVPN과 나이스에 로그인해 두면, 정작 에이전트는 그 브라우저 창을 인식하거나 제어하지 못한다. 반드시 코덱스나 클로드가 브라우저 자동화 도구인 플레이라이트(Playwright)나 크롬 확장 프로그램으로 직접 띄운 브라우저 창 안에서 인증서 비밀번호와 EVPN 비밀번호를 입력해 주어야 다음 화면부터 에이전트가 제어권을 이어받아 움직일 수 있다.

두 번째 시행착오는 울산교육청 EVPN(evpn.use.go.kr) 보안 프로그램과 연수장 무선 네트워크가 맞물리며 발생한 접속 장애였다. 에이전트가 울산 EVPN 주소를 바로 찾지 못할 때는 "울산교육청 EVPN(evpn.use.go.kr)에 접속해 줘"라고 주소를 직접 알려 주어 진입했는데, 노트북에 보안 모듈을 설치하는 과정에서 진행률이 86퍼센트에서 멈추는 현상이 나타났다. 또한 EVPN 로그인이 완료되는 순간 보안 정책에 따라 외부 네트워크 포트가 차단되면서, 크롬 확장 프로그램이 응답을 멈추고 코덱스가 'Waiting for network' 상태로 길게 멈추어 버리기도 했다.

이처럼 화면이 중간에 멈추거나 막혔는데 스크린 리더 음성만으로는 무슨 상황인지 파악하기 어려울 때 쓸 수 있는 실전 대처법도 함께 안내해 드렸다. 화면에 어떤 경고창이나 보안 안내가 떠 있는지 알기 어려울 때는 Alt+PrintScreen 키(F12 오른쪽 옆의 프린트스크린 키)를 눌러 현재 창을 캡처한 뒤, 코덱스 프롬프트 입력창에 Ctrl+V로 바로 붙여넣고 "지금 이 상태에서 어떻게 해야 하는지 알려 줘"라고 물으면 된다. 그러면 에이전트가 캡처된 화면 이미지를 읽고 멈춘 원인과 다음 조치를 정확히 짚어 준다.

와이파이 연결을 정비하고 EVPN 로그인을 마친 한 선생님의 노트북에서는 나이스 복무 신청 자동 조작이 끝까지 이어졌다. EVPN 보안 환경 때문에 에이전트가 새로 열린 나이스 창을 자동으로 잡지 못할 때는, 사용자가 나이스 화면까지만 열어 준 뒤 "나이스 화면 열렸어, 이제 조퇴 신청해 줘"라고 다시 지시해 제어권을 넘겨주었다. 그러자 에이전트가 곧바로 개인근무상황관리 메뉴를 찾아 들어가 신청부터 조퇴 시각까지 차례대로 채워 넣었다.

일부 입력칸을 채운 후 에이전트가 스스로 멈춰 서며 안전 경계를 보여 주었다. 에이전트가 "사유를 입력하지 않으셨는데 사유를 무엇으로 입력할까요?"라고 물으며 상신 직전에 대기 상태로 들어간 것이다. school-work-automation 스킬 안에는 비밀번호 입력과 최종 승인요청·상신 같은 확정 조작은 절대 에이전트가 임의로 누르지 않고 반드시 사용자에게 확인을 받도록 인간 개입(Human-in-the-Loop) 안전 경계가 설계되어 있어 안심하고 실습할 수 있었다.

한편 한 번 실행된 EVPN 보안 프로그램은 외부 AI 에이전트의 통신을 계속 차단하거나 노트북 속도를 현저히 떨어뜨렸다. 다음 실습을 진행하려면 노트북을 재부팅하고 VPN 자동 실행을 종료해야 할 정도였다. 이날 외부 연수장에서 겪은 일련의 시행착오를 통해, 집에서 EVPN으로 접속할 때 생기는 제약을 확인하는 동시에 실제 나이스·K-에듀파인·쿨메신저 자동화는 EVPN을 거치지 않는 학교 교무실의 본인 업무용 컴퓨터에서 실행하는 것이 가장 안정적이라는 점을 분명히 확인할 수 있었다.


5. 실습 3: 시각장애인용 스킬 번들 설치와 프로젝트 지침(AGENTS.md) 설계

세 번째 실습으로는 시각장애인용 오픈소스 스킬 번들인 skills-for-the-blind를 설치하고 실제 한글 문서를 다루는 환경을 살펴보았다. 코덱스에서 Ctrl+N(또는 Ctrl+Shift+O)으로 새 채팅을 열고, Ctrl+O를 눌러 각자 컴퓨터에서 한글(.hwp, .hwpx) 문서가 들어 있는 실제 업무 폴더를 작업 위치로 지정한 뒤 다음과 같이 입력했다.

깃허브에서 engccer의 skills-for-the-blind 스킬을 설치해 줘.

이 번들에 포함된 다섯 가지 스킬 가운데 현장에서 가장 관심이 모인 것은 한글 문서 처리 스킬인 hwpx-automation이었다. 한 선생님이 기존에 공개된 한글 MCP(Model Context Protocol) 도구를 쓰고 있는데 이 스킬은 어떤 차이가 있고 내부적으로 어떤 도구를 쓰는지 질문하셨다. 내가 초기에 공개된 한글 MCP 도구를 써 보았을 때는 복잡한 표가 들어간 공문에서 표 구조가 일그러지는 시행착오가 있었다. 또한 스킬에는 지침 문서 한 장으로 끝나는 가벼운 스킬이 있는가 하면, 여러 스크립트와 외부 실행 도구가 함께 맞물려 돌아가는 두꺼운 스킬도 있는데 hwpx-automation은 후자에 해당한다. 에이전트에게 필요한 도구를 설치해 달라고 지시하면 rhwp, 윈도우 COM 자동화를 위한 pywin32, 직접 제작한 hwpx-to-md CLI 같은 도구들을 로컬에 알아서 준비한다. 그 위에서 한글 문서 파싱(마크다운 변환)부터 양식 채우기, 새 문서 생성, 동의서·계약서 서명란에 자필 서명 이미지 삽입, 최종 결과물 검증까지 한글 문서 작업을 일괄 처리하며 별도의 유료 API 키도 필요하지 않다.

이어서 스킬 못지않게 중요한 폴더 중심 작업과 프로젝트 지침 문서(AGENTS.md / CLAUDE.md) 설계 원리를 설명해 드렸다. AI 에이전트를 잘 활용하는 일은 결국 내 컴퓨터의 폴더와 파일을 체계적으로 정리하는 습관과 맞닿아 있다. 예를 들어 나는 수업 폴더 아래에 학년별 폴더를 두고, 그 아래에 1. ~, 2. ~, 3. ~처럼 번호순으로 단원과 활동을 정리해 둔다. 행정 업무 폴더도 마찬가지로 번호순으로 가지런히 정리한다.

그렇게 정리된 수업 폴더나 업무 폴더에서 코덱스를 실행한 뒤, 맨 처음 한 번만 다음과 같이 지시해 폴더 전용 안내 문서를 만든다.

이 폴더에 있는 내용을 확인해서 AGENTS.md 파일을 만들어 줘.

그러면 에이전트가 폴더 구조와 하위 파일들을 훑어본 뒤 그 폴더의 상세 안내서인 AGENTS.md(클로드에서는 CLAUDE.md) 파일을 생성해 준다. 사용자는 앞서 SKILL.md를 열어 보았듯 메모장으로 그 파일을 열어 에이전트가 폴더의 맥락을 제대로 파악했는지 한 번만 확인해 두면 된다.

이 안내 문서를 한 번 만들어 두면 이후 같은 폴더에서 작업할 때 매번 배경을 길게 설명하는 수고가 사라진다. 그 폴더에서 코덱스를 실행할 때마다 에이전트가 대화 시작 전에 AGENTS.md를 자동으로 먼저 읽고 작업을 시작하기 때문이다. 다음부터는 "이 폴더는 무슨 업무 폴더이고 어떤 규칙으로 문서를 만드는데..."라고 일일이 적을 필요 없이, "6번 폴더 들어가서 이번 달 자료 만들어 줘"처럼 짧게만 지시해도 에이전트가 전체 파일 구조와 작성 규칙을 이미 파악한 상태에서 일관되게 일을 처리한다.

결국 로컬 에이전트를 잘 쓰는 핵심은 프롬프트를 그때그때 길게 적는 데보다 에이전트가 읽을 컨텍스트(맥락 환경)를 미리 갖춰 두는 데 있다. 반복 절차를 담은 스킬(SKILL.md)과 폴더별 맥락을 담은 프로젝트 지침 문서(AGENTS.md) 두 가지를 잘 설계해 두면 프롬프트는 점점 짧아지고 토큰 소모도 크게 줄어든다.

끝으로 로컬 에이전트를 처음 쓸 때 흔히 겪는 조급함에 대해서도 한 가지 당부를 덧붙였다. 로컬 에이전트는 일반 챗봇처럼 질문하자마자 1~2초 만에 답을 내놓지 않고, 실행 환경과 브라우저, 로컬 파일을 하나씩 대조하며 움직이기 때문에 작업 하나에 2~3분, 길게는 5분 이상 작업 상태가 이어지는 것이 자연스럽다. 네트워크가 끊긴 경우가 아니라면 반응이 느리다고 성급하게 취소하지 말고, 작업을 시켜 놓은 채 수업을 다녀오거나 다른 용무를 보고 오는 리듬에 익숙해지는 편이 좋다.


참가자 Q&A

실습 중간중간 에이전트가 작업을 수행하는 대기 시간과 마무리 시간에 오간 질문과 답변을 간추려 정리한다.

  • Q. 학교 업무 자동화를 제대로 쓰려면 월 100달러짜리 클로드 맥스(Max) 요금제를 써야 할까요? 월 20달러 프로(Pro)나 챗GPT 플러스 요금제로는 한도가 부족하지 않은지 궁금해요.
    • A. 대규모 앱을 개발할 게 아니라면 월 20달러 요금제로도 충분합니다. 학교 행정 업무나 공문 작성, 수업용 간단한 웹앱 제작, 오늘 실습한 스킬 실행 정도는 모두 소화할 수 있어요. 저도 학교 업무용 노트북에는 월 20달러 계정만 로그인해 두고 쓰는데, 가장 성능이 높은 오퍼스(Opus) 모델로 수업과 업무 시간 내내 돌려 보아도 5시간 한도에 걸리지 않았습니다.
  • Q. 수업용 게임을 만들려고 코덱스에서 플랜(Plan) 모드로 계획서를 세우고 실행했더니, 금방 5시간 한도가 다 소진되던데 왜 그럴까요?
    • A. 게임 안에 이미지나 애니메이션 생성이 많이 들어가서 그렇습니다. 에이전트 구독 환경 안에서 이미지를 직접 생성하면 구독 토큰이 빠르게 깎이거든요. 코딩은 에이전트에게 맡기고, 이미지·음성·영상 생성은 구글 제미나이 API 키를 따로 발급받아 연결해 쓰시길 권해요. API로 이미지를 백 장 만들어도 몇백 원 수준이라 부담이 없고, 에이전트 구독 한도도 전혀 쓰지 않습니다.
  • Q. 매일 아침 업무 브리핑을 받으려고 챗GPT에 예약 작업을 걸어 두었는데, 하나밖에 등록이 안 되더라고요. 여러 작업을 예약하려면 어떻게 해야 하나요?
    • A. 앱 안의 예약 기능 대신 윈도우 자체의 '작업 스케줄러'에 로컬 스크립트를 등록해 두면 개수 제한 없이 돌릴 수 있어요. 별도 유료 API 키 없이도 내가 가진 코덱스나 클로드 구독 계정을 호출하도록 스크립트를 짜 두면 구독 범위 안에서 그대로 작동합니다. 저도 이 방식으로 매일 정해진 시간에 학교 컴퓨터가 교직원 알림장을 확인해 날짜별 파일로 자동 저장하도록 해 두고 있어요.
  • Q. 회의 녹음을 텍스트로 바꾸는 전사(STT) 작업을 자주 하는데요. 일레븐랩스(ElevenLabs)는 비용이 부담스럽고 제미나이는 가끔 정확도가 아쉬운데, 추천할 만한 도구가 있을까요?
    • A. 전사 전용 API로는 딥그램(Deepgram)을 가장 추천합니다. 정확도도 일레븐랩스에 버금갈 만큼 높은데, 무료 가입만 해도 180시간 분량의 크레딧을 줘서 개인 업무용으로는 꽤 오래 무료로 쓸 수 있거든요.
    • 다만 전사 도구를 MCP(Model Context Protocol) 형태로 상시 연결해 두는 건 피하시는 게 좋아요. 가끔 쓰는 도구를 MCP로 걸어 두면 에이전트를 켤 때마다 기본으로 로드되어 토큰을 계속 차지합니다. 대신 오늘 설치한 skills-for-the-blind 안의 speech-toolkit 스킬처럼 필요할 때만 호출되는 스킬 형태로 쓰시길 권합니다.
  • Q. 와이파이가 잠깐 끊긴 상태에서 챗GPT 데스크톱 앱을 켰더니 메뉴가 전부 영어로 바뀌었어요. 어떻게 다시 한국어로 되돌리나요?
    • A. 인터넷이 안 된 상태에서 앱이 먼저 켜지면 언어 설정이 기본 영문으로 풀리곤 합니다. 이때 Alt+F4를 누르면 창만 닫히고 앱은 백그라운드에 그대로 살아 있어서 다시 켜도 영어로 나와요. 와이파이 연결을 확인한 뒤 Ctrl+Q를 눌러 앱을 완전히 종료했다가 다시 실행하시면 한국어 화면으로 돌아옵니다. (참가자 선생님이 주신 팁)

마치며

연수를 마무리할 무렵, 참석하신 선생님들과 장학사님이 실습 소감을 나누어 주셨다.

한 선생님은 강사가 앞에서 말로만 설명하는 연수보다 내 컴퓨터에서 직접 부딪쳐 보는 실습형 연수가 훨씬 좋다고 하셨다. 혼자 집에서 해 보려고 하면 곳곳에 지뢰가 숨어 있어 막혔을 텐데, 현장에서 하나라도 직접 뚫어 보고 가니 속이 시원하다고 말씀해 주셨다. 또 다른 선생님은 연수 주제를 처음 보았을 때와 직접 해 본 뒤의 인상이 달랐다는 점을 짚어 주셨다.

"겉으로 드러나는 제목만 보면 스크린 리더를 아주 능숙하게 다루는 사람만 할 수 있는 어려운 기술처럼 보여서 신청을 망설였을 수 있어요. 그런데 막상 속을 파 보니까 이건 스크린 리더 숙련도와 상관없이 누구에게나 필요한 거네요. 솔직히 나이스 복무를 자동으로 채워 주고, 접근성이 나빠서 매번 애먹는 교데통 서류를 대신 제출해 준다는데 얼마나 좋아요. 못 오신 선생님들도 이걸 직접 봤으면 다들 '우와' 하셨을 겁니다."

시각장애 교원에게 행정 시스템의 복잡한 화면 구조와 낮은 접근성은 매일의 에너지를 소모시키는 벽이다. 누군가 먼저 부딪히며 찾아낸 우회로를 스킬(SKILL.md)이라는 텍스트 문서로 정리해 나누면, 동료 교사들은 같은 시행착오를 되풀이하지 않고 자연어 지시 한 줄로 그 과정을 건너뛸 수 있다. 이날 함께 설치한 스킬들과 탐색기 즐겨찾기, 그리고 폴더 안의 마크다운 지침 문서들이 선생님들의 학교 업무를 조금이나마 가볍게 해 주기를 바란다.


관련 글 보기

스크린 리더 사용자를 위한 길 찾기 앱 '길동무'가 2.0으로 업데이트되었습니다

길동무 2.0을 앱 스토어에 배포했습니다. 이번 업데이트의 가장 큰 변화는 대중교통과 자동차 실시간 안내가 추가되었다는 점입니다. 7월 말에 길동무 앱을 출시한 후, 8월 중순에 도보 실시간 안내를 추가했는데요. 이번에 대중교통 안내와 자동차 안내를 추가함으로써 이제 길동무는 명실공히 주요 이동 수단을 모두 커버하는 온전한 길 찾기 앱으로 거듭났습니다.


직접 다니며 다듬은 대중교통 안내

특히 대중교통 안내를 그동안 실험판으로 사용하면서 하루빨리 이 기능을 선보이고 싶었습니다. 업데이트가 늦어진 건 대중교통을 자주 타지 않는 탓도 있지만, 기본적으로 대중교통 수단이 포함됐을 때 경로 측면에서 도보보다 훨씬 변수가 많아지더라고요. 예를 들어, 대중교통이라고 해도 그 사이사이에는 도보 이동 경로가 포함될 수밖에 없는데 각각의 구간을 끊김 없이 매끄럽게 연결하는 것, GPS가 터지지 않는 지하철 구간에서 최대한 사용자의 경로를 잃지 않는 것, 지하철 역사 내 각종 편의 시설과 역사 전화번호를 안내하는 것 등. 제가 실제 상황에서 쓰면서 불편한 걸 다 고치다 보니 테스트하고 구현할 게 정말 한두 가지가 아니었습니다.

멀리 외출할 때마다 써 보면서 밖에서는 카카오톡에 메모하고 스크린숏을 찍고, 집에 와서는 로그 기록을 회수해서 분석하고 고쳤는데요. 제아무리 Fable이 분석과 구현을 다 해 준다 하더라도 실제 앱 편의성은 실사용하면서 점검할 수밖에 없기 때문에 발품을 팔지 않으면 안 되는 부분이 많았습니다.

하지만 제가 원했던 것, 때로는 그 이상의 결과물이 나왔을 때 그 희열은 말로 다 설명할 수 없었습니다. 저는 길동무 앱 덕분에 처음으로 한 번도 안 가 본 곳까지 혼자서 버스를 타고 이동할 수 있었습니다. 더 이상 누군가에게 지하철역 출구까지 마중 나오라고 하지 않아도 되고, 더 이상 택시를 타고 가면서 기사님에게 여기가 어디인지, 도착지까지 얼마나 남았는지 묻지 않아도 됩니다. 무엇보다도 이젠 장애인 콜택시가 잡히지 않을 때도 자신 있게 길을 나설 수 있게 되었습니다.

이제 화면이 잠겨도 음성 안내를 들으실 수 있습니다

이에 더해 사용자님들의 피드백 중 화면이 잠겼을 때도 음성으로 안내가 나왔으면 좋겠다는 것이 있었는데요. 길동무 2.0에서 '백그라운드 음성'이라는 이름으로 구현했습니다. 저는 이게 굳이 필요할까 생각했었는데, 막상 써 보니 정말 편하더라고요. 백그라운드 음성은 설정에서 토글로 끌 수 있습니다.

이 외에 도보 경로 결과에서 큰길 경로가 최단 거리 경로보다 상위에 표시되던 문제, 가끔 대중교통 경로가 조회 결과에서 빠지던 문제 등은 이미 지난 버전에서 수정되었습니다. 혹시나 이 문제로 앱을 안 쓰셨던 분들이 계신다면 길동무 2.0부터 다시 다운로드해 사용해 보시길 권합니다!

유의하실 점은 길 찾기가 GPS 기반으로 작동하기 때문에 인터넷이 잘 터지지 않는 곳에서 부정확할 수 있고, 원 데이터의 한계로 일부 지역에서는 기대하는 대로 작동하지 않을 수 있다는 것입니다. 늘 그렇듯 익숙한 경로에서 먼저 사용해 보시기를 추천드립니다.

요즘 개발하고 있는 기능

요즘 제가 테스트해 보고 있는 기능은 '나들이 모드'입니다. 시각장애인의 보행에 있어 가장 큰 제약은 목적지까지 가기 어렵다는 것이 아닙니다. 목적지가 없는 보행을 하기가 어렵다는 것이죠.

가끔은 혼자 산책을 하고 싶을 때도 있고, 가끔은 큰 목적지만 정해 놓고 세부 경로는 다니면서 정하고 싶을 때가 있지요. 이럴 때 시각장애인은 지나가는 사람에게 길을 묻거나 동행자가 가자는 곳으로 따라가는 수동적 보행자로 남게 마련인데요. 정확한 목적지나 경로 없이 걷다가도 현재 위치를 빠르게 파악하고 주변 정보를 파악할 수 있다면 독립 보행이 훨씬 편해질 것입니다.

나들이 모드는 그런 의도로 개발하고 테스트해 보고 있습니다. 안정화되는 대로 정식판에 추가하겠습니다.

꾸준히 업데이트하겠습니다

길동무는 기존의 지도, 지하철, 버스, 보행자용 내비게이션 앱들이 나누어서 제공하던 서비스를 하나로 통합한 앱입니다. 그러면서도 크기는 5MB 정도밖에 안 되는 매우 가벼운 앱이죠. 광고도 요금도 없습니다. 발생하고 있는 API 비용은 모두 제가 부담하고 있습니다. 그래도 많은 분들이 이 앱을 통해 보행의 자유도가 올라간다면 그것으로 충분히 보람을 느낄 것 같습니다.

제가 혼자서 감당할 수 있는 선에서 꾸준히 업데이트해 보겠습니다. 사용해 보시면서 후기와 업데이트 피드백 부탁드립니다.

사용자가 전해 준 길동무 사용 팁

마지막으로, 한 지인이 공유해 주신 길동무 사용 팁입니다. 길을 가기 전에 먼저 채팅으로 갈 곳에 관해 자세히 확인하고, 그다음 실시간 안내 기능을 켜 놓고 가면서, 필요한 경우에 행인들에게 질문을 한다고 합니다. 이미 어느 정도 정보를 가지고 있는 상태여서 도움을 요청할 때도 더 편하다고 하네요. 팁 공유 감사드립니다!

길동무 이용 방법과 소스 코드

터미널에서 사용할 수 있는 명령줄 도구(CLI)도 있습니다. Node.js와 npm이 설치된 환경에서 아래 명령을 실행하면 됩니다.

npm install -g gildongmu

설치 후에는 gil 또는 gildongmu 명령으로 사용할 수 있습니다. 자세한 사용법은 CLI 안내 문서를 참고해 주세요.

길동무로 오픈AI의 WebMCP 챌린지에 참가했습니다

길동무의 주력 제품은 iOS 앱이지만, 웹앱도 있습니다. 저는 출장을 가기 전 경로와 소요 시간을 확인하거나 모임 장소를 찾아볼 때 종종 사용하는데 꽤나 유용합니다. 일단 화면 구성이 iOS 앱보다도 단순하고 원하는 정보를 빠르게 확인할 수가 있지요~

아직 아이폰에 길동무를 다운로드하지 않았거나 아이폰을 사용하지 않는 경우에도 이 웹앱으로 길동무를 이용할 수 있습니다. 특히 해외에서 국내 여행을 계획할 때 유용할 거라고 생각하는데요. 상세한 장소 및 길찾기 정보와 더불어 지하철 역사 편의시설, 횡단보도 음향신호기 같은 장애인 접근성 정보를 1급 정보로 제공하는 건 길동무만의 가장 큰 강점이라고 생각합니다.

웹을 에이전트에게 맡길 때

한편 이제는 많은 사람들이 웹 브라우징 작업을 에이전트에 맡기고 있는데요. 웹 탐색에 어려움을 겪는 스크린 리더 사용자뿐 아니라, 업무 자동화에 진심인 AI 에이전트 사용자들에겐 에이전트를 시켜서 웹에서 할 일을 대신하게 하는 일이 점점 흔해지고 있습니다.

단, 웹에서의 작업을 에이전트에게 위임할 때의 단점은 시간과 토큰이 많이 소모된다는 점인데요. 에이전트가 웹 구성 요소를 일일이 탐색하고 클릭하고, 시행착오가 있을 때는 스크린샷을 찍고, 그걸 다시 보고 작업을 이어가는 등의 과정이 사람이 웹 작업을 직접 처리할 때보다 느리기 때문에 답답함을 느낄 때가 많습니다. 이건 웹 자체가 인간이 보고 사용하도록 설계되어 있기 때문에 어쩔 수 없는 구조적 한계죠.

그런데 사실 AI 에이전트 입장에서는 굳이 그렇게 작업할 필요가 없습니다. 특정 웹 사이트가 제공하는 기능이 그 사이트에 접속하자마자 설명과 함께 도구로 제시된다면 에이전트는 굳이 사람이 보기 위해 만들어진 다양한 컴포넌트들을 일일이 훑을 필요가 없을 것입니다. 바로 이 발상에서 나온 것이 WebMCP입니다.

WebMCP란

WebMCP는 구글과 마이크로소프트의 엔지니어들이 2025년 8월부터 함께 발전시켜 오고 있는 기술인데요. 기존 방식에서 에이전트는 웹 사이트를 탐색할 때 브라우저가 그려주는 DOM이나 접근성 트리를 하나하나 읽으며 탐색합니다. 참고로 용어를 설명하자면, DOM은 웹 문서의 구조를, 접근성 트리는 버튼의 이름과 역할처럼 스크린 리더 등에 필요한 정보를 담고 있는 웹의 내부 구조라고 보시면 됩니다.

그런데 WebMCP를 쓰면 특정 기능을 에이전트가 직접 실행할 수 있는 도구로 명시적으로 등록할 수 있습니다. 이때 그 기능이 무슨 일을 하는지, 실행하려면 어떤 값을 입력해야 하는지도 함께 알려 줄 수 있고요. 그러면 에이전트는 WebMCP를 지원하는 브라우저에서 잡다한 구조를 탐색하지 않고도 그 설명을 읽고 기능을 바로 실행할 수 있습니다. 아직 완성된 웹 표준은 아니고, 웹을 에이전트가 사용하기 쉬운 방향으로 만들기 위한 과정에서 개발과 실험이 진행 중인 기술이라고 이해하시면 될 것 같습니다.

길동무 웹앱에 WebMCP를 붙이다

지난 8월 말 구글 앱에서 AI 관련 기사를 읽던 중 마침 오픈AI에서 이 WebMCP 챌린지를 연다는 소식을 보았습니다. 저는 마침 따끈따끈한 프로젝트인 길동무 웹앱에 WebMCP를 구현하여 응모하기로 했죠. 길동무 앱을 iOS에 출시한 후에는 웹앱을 조금 방치하고 있었는데 이 챌린지 덕분에 웹앱도 많이 다듬고, 무엇보다도 영어 지원을 더욱 촘촘하게 다듬었습니다. (오픈AI 심사자가 사용해 볼 수 있어야 하니까요 ㅎ) 그 덕에 길동무 웹앱은 이제 WebMCP를 지원하게 되었습니다.

챗GPT의 내장 브라우저처럼 WebMCP를 지원하는 환경에서 “길동무 사이트에 가서 강동구에서 저녁때 놀 수 있는 곳들을 찾아보고 동선을 짜 줘.” 같은 프롬프트를 주면 에이전트는 브라우저에서 길동무를 열고 효율적으로 지시한 작업을 수행합니다. 이때 에이전트는 길동무 사이트를 탐색하는 대신 제가 WebMCP로 노출한 도구를 확인해서 바로 작업할 수 있습니다. 물론 그 도구들은 화면에 별도의 버튼으로 보이지는 않습니다. 이젠 길동무는 사람뿐 아니라 에이전트도 손쉽게 사용할 수 있는 친에이전트형 대한민국 길찾기 서비스입니다!

금요일 오후 5시 마감

이 챌린지에 참가하면서 재미있는 에피소드가 하나 있었는데요. 챌린지 응모 데드라인이 9월 4일 금요일이었습니다. 저는 당연히 미국 시간이라고 생각하고 퇴근 후 도도 재우고 금요일 밤 코딩 나이트를 불태우면 마무리되겠거니 생각하고 있었는데요, 확인해 보니 한국 시각 오후 5시더라고요. 아니, 무슨 금요일 5시에 데드라인을 ㅋㅋㅋ 설마 이 챌린지를 기획한 오픈AI 직원들이 한국 근무 시간을 고려해서 타임테이블을 짠 건 아니었겠죠! ;;;

그 바람에 수업 사이사이 공강에 영상 찍고, 집에 있는 맥 미니에 다다다다 영상 편집 지시 내리고, 다시 구글 드라이브로 받아서 영상 확인하고, 유튜브에 영상 업로드하고, 챌린지를 운영하는 Devpost에 게시물 업로드하고... 이 많은 일을 Fable 시켜서 동시다발적으로 엄청난 속도로 처리하고 마감 30분쯤 전인 4시 33분에 제출을 완료했더랍니다. 제 인생에서 아마 가장 짜릿한 금요일 퇴근 중 하나가 아니었나 싶습니다. ㅎ

결과는 다음 주에

한편 챌린지 결과는 다음 주에 나옵니다. 어제 Devpost 갤러리가 열렸는데 2천 건 넘게 접수됐더라고요. 수상 기대는 솔직히 말하면 아주 쬐금 하고 있긴 한데... 떨어지더라도 이미 저한텐 좋은 경험이 되었습니다! 난생처음 참여해 본 온라인 해커톤이었는데 과정 자체도 스릴 있었고 웹앱의 완성도도 높였으니까요.

아직도 길동무 업그레이드 아이디어가 많습니다! 진짜 원하는 기능 구현을 위해선 지자체들도 도와줘야 하고요. ㅎ 정책 관련 얘기는 나중에 따로 한번 해 보겠습니다. 아무튼 이 프로젝트가 계속 발전할 수 있도록 많은 앱 다운로드와 관심 부탁드립니다!

시연 영상

링크

[박위 KTX 낙상 논란과 사라진 관용]

박위 KTX 낙상 논란을 보며 생각나는 에피소드가 두 가지 있다. 둘 다 유럽에서 겪은 일이다.

첫 번째는 2023년 초, 아내 유정과 암스테르담에서 쾰른으로 기차를 타고 이동할 때 일이다. 우리는 승차하면서 하차 도우미를 신청했다. 국경을 지난 후 다가온 독일인 직원은 빡빡이 머리에 '독일 사람이 이렇게 밝을 수 있나' 싶을 정도로 쾌활했다.
내릴 때 보자며 활짝 웃고 떠난 그는 정차할 때까지 끝내 나타나지 않았다. 나와 유정이 직접 짐을 끌고 플랫폼에 내렸을 때, 그는 이미 다른 직원들과 수다를 떨며 지나가고 있었다. 우리를 발견한 직원은 해맑게 웃으며 자기 아들이 K팝을 무척 좋아한다는 쓸데없는 개인사만 한참 늘어놓고 사라졌다.
발걸음을 옮기며 생각했다.
‘한국 같으면 상상할 수도 없는 일인데.’

두 번째는 올해 초 마드리드에서 발렌시아로 이동할 때다. 스페인은 놀랍게도 역마다 이동 지원 센터가 별도 사무실로 있었다. 정직원으로 보이는 인력들이 수하물을 체크하고 탑승 정보를 꼼꼼히 확인했다.
출발 시각이 다 되자 직원이 그제서야 이상하다며 우리가 타야 할 기차가 출발 목록에 없다고 했다. 확인해 보니 열차는 우리가 있던 아토차역이 아니라 20분 떨어져 있는 차마르틴역 열차였다. 청량리에서 타야 할 열차를 서울역에서 기다린 셈이었다.
두 돌 채 안 된 아기 도도와 캐리어 4개, 유모차를 끌고 다른 역으로 낑낑 이동하며 속으로 생각했다.
‘한국 같으면 상상할 수도 없는 일인데.’

그런데 여행을 마치고 돌아온 얼마 뒤 진짜 상상할 수 없는 일이 벌어졌다. 스페인에서 시속 200km로 달리던 고속열차가 탈선해 다른 열차와 충돌하면서 40명 이상이 숨지는 참사가 난 것이다. 불과 사흘 전 타고 다닌 열차들이었다. 간담이 서늘했다. 이동지원센터가 아무리 번듯해도 가장 중요한 승객의 안전을 지켜주지 못한다면 무슨 소용인가.

실수와 불안, 그리고 관용

이런 일련의 경험 때문에 나는 기본적으로 우리나라 철도 서비스에 깊은 신뢰를 갖고 있다. 안전뿐 아니라 장애인 승객 지원 측면에서도 그렇다.
그런 점에서 유튜버 박위 씨의 문제 제기는 개인적으로 다소 투박하게 느껴졌다. 사회복무요원의 개인적 실수가 담긴 CCTV 영상을 공개하며 공론화에 나선 것은 다소 톤 앤 매너 면에서 섬세하지 못했다고 생각한다.

하지만 그 뒤에 이어진 거대한 백래시 역시 납득할 수 없다. 전신마비 휠체어 사용자가 낙상할 때 얼마나 큰 부상으로 이어질 수 있는지 사람들은 정녕 모르는 것 같다. 몸이 넘어질 때 자신을 보호할 반사신경조차 없기 때문이다.
무엇보다 ‘도와주려고 하다가 나온 실수를 가지고 그러느냐’는 반론은 대꾸할 가치를 못 느낀다. 사회복무요원은 지나가는 행인이 아니라 KTX가 배정한 공식 인력이다. 설령 발단이 개인의 실수였다 해도 관리와 안전의 최종 책임은 KTX가 져야 마땅하다.

한편, 유럽과 한국의 문화 차이도 짚고 넘어가고 싶다. 유럽에서 느낀 것이 시스템의 부실함과 인적 실수의 황당함이었다면, 박위 사건에서 느껴지는 가장 큰 감정은 사람에 대한 여유와 관용의 완전한 상실이다. 유럽의 직원들은 황당할 만큼 어설펐지만 적어도 그 어설픔으로 인해 모종의 불이익을 받게 될 것이라는 불안감은 찾아볼 수 없었다.
반면 한국은 세계 최고 수준의 정교한 서비스와 안전망을 자랑하지만, 단 한 번의 실수도 용납되지 않으며, 이는 박위의 문제 제기에도 똑같은 기준으로 적용되었다. 어느 한쪽이라도 빈틈을 보이면 온 사회가 덤벼들어 서로를 물어뜯는 각박한 칼날 위에 서 있다.

3년째 반복되는 '을들의 전쟁'

나는 이 사건을 곰곰이 생각하다가 3년 전 주호민 사건을 떠올렸다. 특수교사를 신고한 유명 웹툰 작가 부모와, 열악한 환경에서 헌신을 요구받는 특수교사 진영과의 첨예한 대립 말이다.

주호민 사건은 3년이 지난 지금까지도 최종 결론을 내리지 못한 채 대법원에 계류 중이다. 2심에서 무죄가 선고되었지만 법적 공방이 길어지는 동안 현장은 피폐해졌다.
한 설문조사 결과에 따르면 특수교사의 90% 이상이 아동학대 피의자가 될지 모른다는 두려움을 호소하고 있다. 학부모와 교사 사이의 신뢰는 붕괴되었다. 국회에서 통합교육 결의안이 통과되고 여러 정책 선언이 이어졌지만, 현장의 깊은 불신과 흉터를 치유하는 데는 아무런 도움이 되지 못했다.

두 사건은 시차를 두고 불행할 정도로 닮아 있다. 학교 당국이 학폭 사안을 특수교사 1인에게 덮어씌우고 뒤로 빠졌듯, KTX 역시 사회복무요원의 보조에 장애인 이동 지원을 전적으로 일임한 채 조직적 안전 책임을 뒤로 숨겼다. 시스템은 비겁하게 빠지고, 현장의 취약한 지원 인력과 장애 당사자만이 맞붙는 ‘을들의 전쟁’이 다시 한번 펼쳐지고 있는 것이다. 그리고 그 끝은 언제나 장애인 집단 전체를 향한 징벌적 백래시와 혐오의 폭발이다.

개인의 마녀사냥 대신 시스템의 책임을

지금 필요한 것은 개인에 대한 인신공격이나 유튜브를 통한 마녀사냥이 아니다. 실수를 저지른 사회복무요원 개인을 징계하느냐 마느냐의 소모전도 아니다. 사회복무요원에게 전가된 이동 지원 체계를 철도공사 차원의 전문 전담 인력과 안전 설비 확충으로 전환하는 실질적 대책 마련에 머리를 맞대면 어떨까?

사건 발생 3년이 지나도록 상처만 남긴 주호민 사건의 전례를 이번 KTX 사건에서도 똑같이 되풀이할 수는 없다. 흠집 내기와 집단적 매도는 조기에 싹을 자르고, 구조적 대안 마련을 위한 성숙한 대화가 조속히 시작되길 바란다. 그러기 위해서는 KTX와 국토교통부 같은 기관에서 빠르게 입장을 내 주어야 한다. 그리고 그 과정에서 사람이 하는 일에 대한 최소한의 관용과, 그 필연적인 허점을 메우는 단단한 시스템의 책임이 함께 성숙하기를 꿈꿔 본다.

길동무를 오픈소스로 공개했습니다

길찾기 앱 '길동무'를 출시하면서 소스 코드도 공개하겠다고 말씀드렸었는데요. 지난 17일에 저장소를 public으로 전환하고 MIT 라이선스로 공개했습니다.

저장소에서 확인할 수 있는 것은 이런 것들입니다.

  • 웹앱, iOS 앱, CLI, MCP, 테스트 코드 (약 11만 줄)
  • 실시간 도보 안내 판정 로직
  • 서울시 음향신호기, 서울 지하철역 음성유도기, 전국 도시철도역 등 공공데이터와 오픈스트리트맵에서 뽑은 전국 횡단보도·점자블록 (각각 라이선스가 다름)
  • 개발 과정에서 Claude가 작성한 설계, 조사 등 각종 문서 200여 개

길동무를 개발하면서 공공데이터와 오픈소스의 힘을 엄청나게 많이 느끼고 있는 중입니다.

공공데이터와 공공 API

먼저, 공공 API인데요. 길동무 앱에서는 버튼 하나만 눌러도 현재 도착하고 있는 마을버스 정보까지 정확히 확인할 수 있는데요. 마을버스와 시내버스 도착 정보는 물론이고 지하철 열차 위치, 따릉이 잔여 대수, 역 엘리베이터와 장애인 화장실, 여행지 무장애 편의시설, 날씨와 미세먼지 같은 정보들은 모두 공공데이터포털, 서울열린데이터광장 등에 공개되어 있는 API를 통해 실시간으로 가져 옵니다.

그리고 음향신호기, 음성유도기, 도시철도역 목록은 각각 서울시, 서울교통공사, 국가철도공단이 공개한 공공데이터에서, 횡단보도와 점자블록 데이터는 영국의 비영리 재단이 운영하는 오픈스트리트맵에서 가져왔습니다.

오픈소스 코드

코드야 말할 것도 없습니다. 특히 웹 쪽이 그런데요. 웹앱은 Vercel의 Next.js와 메타의 React로 만들고, 코드는 마이크로소프트의 TypeScript로 쓰고, 자동 테스트는 개발자 커뮤니티가 만든 Vitest로 돌리는데요. 모두 오픈소스로 공개된 것이라 비용도 승인 요청도 필요하지 않았습니다.

그동안 수많은 사람들이 이 많은 API, 데이터, 코드베이스를 구축하기 위해 한땀 한땀 정보를 모으고 코드를 짰을 텐데요. 그 결과를 모두 무료로 공개해 준 덕분에 저는 이것들을 길동무 앱이라는 하나의 그릇에 모으고 접근성 기반 앱이라는 정체성을 만들 수 있었던 것입니다.

민간 기업의 몫

물론 민간 기업의 몫도 큽니다. 핵심 기능에 해당하는 장소 검색과 길찾기는 카카오, 네이버, 티맵, ODsay의 API를 쓰고 있고, iOS 앱은 애플이 만든 프레임워크로 개발했습니다. 채팅은 구글의 Gemini, 웹 검색은 Perplexity, 웹앱의 음성 받아쓰기는 Deepgram 기반이고요. 이 API들은 비록 상용이긴 하지만 특히 지도 쪽은 무료 한도가 넉넉하고, AI 쪽도 비용이 저렴한 편이어서 앱을 무료로 배포할 수 있었습니다. (제가 부담하는 비용이 0이란 것은 아닙니다 :) ㅎ)

AI와 공공재

한편, 여기서 다시 발견하게 되는 사실은 AI가 이 모든 걸 다 혼자 만들어 주는 게 아니라, 이 데이터와 도구들을 발견하는 것을 도와주고, 그것들을 조립하고 검증해 주는 역할을 한다는 점인데요. 사실 그 AI란 것도 기존에 웹에 공개되어 있던 수많은 공공재가 가장 기초적인 학습 데이터였을 테니 본질적으로 공공이 공공을 낳고 있는 셈이긴 합니다.

공공의 것은 공공에게

바이브코딩으로 길동무 앱을 만들면서 이렇게 공공의 가치를 또 배웠습니다.

앞으로

앞으로 이 앱에 붙이고 싶은 기능들이 많은데요. 혼자의 힘으로 어디까지 갈 수 있을지는 모르겠지만 더 많은 분들이 이런 프로젝트를 열어 주신다면 서로 건설적인 피드백을 주고받으며 개발할 수 있지 않을까 싶습니다. 그리고 이 앱은 스크린리더 사용자에 초점을 맞추었지만, 휠체어장애인, 청각장애인, 지적장애인 등에 대한 맞춤형 앱들이 더 많이 나와주었으면 하는 바람이고요. 아무쪼록 접근성 내비게이션이라는 분야가 길동무 하나가 아니라 생태계로 커지는 데 이 코드가 밑거름이 되면 좋겠습니다.

링크