로그인하지 않은 방문자의 화면을 볼 때, Aside는 브라우저 대신 명령줄을 썼다.
13장과 14장, 에필로그를 발행한 뒤였다. 로그인하지 않은 방문자에게 글이 어떻게 보이는지 확인해야 했다. 브라우저에서 부르는 요청에는 내 로그인 쿠키가 실려서 관리자 화면이 섞여 나온다. 1권 9장에서 다룬 차이다. 그래서 Aside는 명령줄 요청을 썼다. 나는 명령을 한 줄도 치지 않았다. 말로 부탁했고, Aside가 명령을 쓰고 실행하고 결과를 읽어 한국어로 알려 줬다. 이 글은 그 방식을 다룬다. 명령어를 외우지 않고도 명령줄의 장점을 가져다 쓰는 법이다. 1권 『Aside 브라우저 사용설명서』에 이어 여는 고급편의 첫 글이다.
1.1 CLI는 무엇이고, 왜 신경 쓸 만한가?
CLI는 글자로 명령을 입력해 컴퓨터를 움직이는 방식이다. 세기, 대량 처리, 반복에 강해 비개발자에게도 쓸모가 있다.
CLI는 command line interface의 줄임말이고, 우리말로는 명령줄이라고 부른다. 마우스로 버튼을 누르는 대신 터미널이라는 창에 한 줄짜리 명령을 입력하면, 컴퓨터가 그대로 실행하고 결과를 글자로 돌려준다. 버튼이 없으니 무엇을 쳐야 하는지 알아야 하고, 철자 하나만 틀려도 오류가 난다. 비개발자가 명령줄을 어렵게 느끼는 이유가 여기에 있다. 대신 명령은 글자라서 모호함이 없다. 파일 여러 개를 한 번에 다룰 수 있고, 같은 명령을 다시 치면 같은 일이 같은 방식으로 일어난다. 결과는 화면에 머물지 않고 파일로 남으며, 한 명령의 결과를 다른 명령으로 넘길 수도 있다. 원고 글자 수를 세거나, 발행한 글 여러 편을 한꺼번에 점검하는 일은 1인 출판에도 자주 있다. 그래서 명령줄의 장점은 개발자에게만 필요한 것이 아니다.
어려운 부분은 명령어를 아는 일이고, Aside는 바로 그 부분을 맡는다. Aside에는 브라우저 조작 외에 명령줄에서 명령을 실행하는 도구가 있다. 나는 개발자가 아니고 명령어를 외우지 않는다. 이 방식에서 사람이 하는 일은 세 가지로 줄어든다. 무엇을 알고 싶은지 말하기, 가끔 내 터미널에 한 줄 붙여 넣기, 돌아온 결과가 맞는지 판정하기다. 명령을 고르고, 쓰고, 실행하고, 길게 쏟아지는 출력을 읽어 요점만 추리는 일은 Aside가 한다. 그림 1-1은 이 두 갈래를 그린 것이다. 하나는 Aside가 자기 작업 공간에서 명령을 직접 실행하는 길이다. 다른 하나는 로그인이 필요한 도구를 Aside가 준비해 두고, 내가 내 터미널에서 한 줄만 실행하는 길이다.

1.2 Aside가 대신 명령을 친 날
앞의 발행 점검으로 돌아가 보자. Aside가 쓴 명령은 curl이었다. curl은 웹 주소에 요청을 보내고 돌아온 응답을 그대로 받아 오는 명령이다. 브라우저와 달리 내 로그인 쿠키를 싣지 않으니, 로그인하지 않은 방문자가 받는 것과 같은 응답을 볼 수 있다. Aside는 이 요청으로 여러 항목을 한 번에 셌다. 페이지 응답 코드가 정상인지, 구조화 데이터(검색 엔진에 글의 제목과 날짜 같은 정보를 알려 주는 표시)가 몇 개이고 주소가 맞는지, 이미지 파일이 제대로 응답하는지, 표가 몇 개인지, 앞뒤 글 링크가 이어졌는지를 확인했다. 같은 확인을 브라우저로 했다면 관리자 화면이 섞인 결과를 보게 됐을 것이다. 나는 무엇을 확인하고 싶은지만 말했다.
같은 날 Aside는 명령줄에서 파이썬도 돌렸다. 파이썬은 계산이나 파일 처리를 글로 적어 시키는 프로그래밍 언어다. 원고 글자 수를 세고, 소제목 가운데 질문형이 몇 퍼센트인지 계산했다. 이미지 파일을 잘라 증거 화면을 만들었고, 완성 원고와 이미지를 작업 폴더로 복사했다. 연재 전반(1~9장)과 후반(10~14장)에서 특정 낱말이 몇 번 나왔는지, 질문형 소제목 비율이 어떻게 달라졌는지도 셌다. 명령 한 번으로 14개 파일을 한꺼번에 셌고, 그 결과가 에필로그의 표 E-1이 됐다. 파일을 하나씩 열어 눈으로 셌다면 14번을 되풀이해야 했을 일이다.
명령줄 도구가 늘 되는 것은 아니었다. 9월 하순, 여러 세션에서 Aside의 명령줄 도구가 실행 자체가 안 되는 장애를 겪었다. 앱을 다시 시작해도 풀리지 않은 세션이 있었고, 새 세션을 열자 정상으로 돌아온 적도 있다. 그 기간에는 브라우저와 다른 도구로 우회해서 일을 이어 갔다. 명령줄은 편하지만 유일한 길은 아니었다.
1.3 명령줄은 무엇을 잘하나?
명령줄이 잘하는 일은 다섯 가지로 묶을 수 있다. 첫째, 정확하게 센다. 눈으로 세면 놓치기 쉬운 글자 수나 표 개수를 명령은 빠짐없이 센다. 둘째, 한 번에 많이 처리한다. 파일이 14개든 조각이 85개든 같은 명령으로 돈다. 셋째, 같은 일을 똑같이 반복한다. 스크립트로 적어 두면 다음에도 같은 순서로 실행된다. 스크립트는 명령 여러 줄을 파일 하나에 적어 둔 실행 순서표다. 넷째, 기록과 파일이 남는다. 결과가 파일로 떨어지니 나중에 다시 열어 보고 비교할 수 있다. 다섯째, 다른 도구와 이어진다. 한 프로그램이 만든 결과를 다른 프로그램이 읽어 다음 일을 한다. 표 1-1은 이 다섯 가지를 이 글의 사례와 나란히 놓고, 그때 사람이 한 일을 함께 적은 것이다.
| CLI의 좋은 점 | 이 글의 사례 | 사람이 한 일 |
|---|---|---|
| 정확하게 센다 | 로그인하지 않은 응답에서 응답 코드, 구조화 데이터, 이미지, 표, 앞뒤 글 링크 점검. 원고 글자 수와 질문형 소제목 비율 계산 | 무엇을 셀지 말하고 결과를 판정 |
| 한 번에 많이 처리한다 | 원고 14개 파일 한꺼번에 집계. 번역 85개 조각을 3단계로 처리 | 스크립트 한 줄 실행 |
| 같은 일을 똑같이 반복한다 | 조각마다 같은 스크립트로 번역·교정·해설. 등록 뒤 같은 검사 프로그램 실행 | 결과 판정 |
| 기록과 파일이 남는다 | 진행 기록 파일, 덧붙이기만 되는 대화 기록, 책마다 상태를 적은 파일 | 실행 화면을 찍어 보내기, 새 창에서 한 줄로 이어 가기 요청 |
| 다른 도구와 이어진다 | 코딩용 CLI 도구의 결과를 Aside가 읽고 검사. 두 에이전트가 파일로 대화 | 도구 설치, 로그인, 구독 연결, 과금 차단 설정 |
표에서 사람 칸은 짧다. 짧다고 가벼운 일은 아니다. 무엇을 셀지 정하는 일과 결과가 맞는지 판정하는 일은 명령이 대신하지 못한다. 명령은 시킨 것을 정확히 세지만, 무엇을 세야 하는지는 스스로 정하지 않는다. 반대로 사람이 약한 부분, 곧 빠짐없이 세고 똑같이 되풀이하는 일은 명령에게 넘기는 편이 낫다. 이 나눔은 명령어를 몰라도 할 수 있다. 명령어를 아는 쪽은 Aside이고, 목표와 기준을 아는 쪽은 나이기 때문이다.
1.4 로그인이 필요한 도구는 누가 실행하나?
9월 21일과 22일에는 다른 CLI 도구를 썼다. 공개 저작물인 고전을 현대 한국어로 옮기는 여러 권짜리 번역 작업이었고, 번역 엔진으로 한 AI 회사의 코딩용 CLI 도구를 썼다. 명령줄에서 돌아가는 AI 에이전트다. 설치, 로그인(키체인 인증), 구독 연결, 과금이 넘치지 않게 막는 설정은 내가 직접 했다. 걸림돌은 로그인이었다. Aside의 작업 공간, 곧 샌드박스(바깥과 격리된 실행 공간)에서는 그 도구의 로그인 정보가 격리돼 있어서 Aside가 직접 부를 수 없었다. 그래서 역할을 나눴다. Aside는 입력 파일을 나누고 실행 스크립트를 쓴다. 나는 내 터미널에서 그 스크립트를 한 줄로 실행한다. 결과 파일은 Aside가 직접 읽고 검사한다.
규모는 이랬다. 전체를 85개 조각으로 나눠 번역, 문체 교정, 해설의 3단계를 돌렸고, 산출물은 약 280만 자였다. 뒤쪽 8권분인 73개 조각은 내가 스크립트 한 줄로 실행해 두었다. 진행 상황은 진행 기록 파일로 확인했다. 중간에 내가 실행 화면을 찍어 보낸 적이 있는데, 둘째 권 100%, 셋째 권 55.6%, 73개 중 15개 조각 완료, 절 번호 검사 전부 통과가 보였다. 내가 입력한 것은 한 줄이었고, 나머지 순서는 스크립트가 처리했다.
결과를 읽는 쪽은 Aside였다. 조각마다 원문의 절 번호와 결과의 절 번호를 비교했고, 전체를 합쳐 고유명사 표기가 흔들린 곳을 찾았다. 그렇게 중복된 절 하나와 고유명사 표기 흔들림을 찾아 고쳤다. 입력 원본이 바뀌지 않았다는 것은 해시로 확인했다. 해시(SHA-256)는 파일 내용에서 계산한 고정 길이의 값으로, 글자 하나만 바뀌어도 값이 달라진다. 280만 자를 사람이 한 줄씩 대조할 수는 없지만, 명령으로는 절 번호와 해시를 빠짐없이 맞춰 볼 수 있다.
첫 시험 실행에서 일이 하나 있었다. 그 CLI 도구 안의 에이전트가 권한 벽에 막히자, 스스로 스크립트를 고쳐 권한 확인을 모두 건너뛰는 위험한 옵션을 붙이고 다시 실행해 버렸다. 안전장치를 통째로 끄고 일을 계속한 셈이다. Aside는 그 옵션을 표준으로 쓰지 말고, 도구에 들어 있는 운영체제 수준의 격리 모드, 곧 샌드박스 모드로 바꾸자고 권했다. 나는 내 터미널에서 설정을 바꿨고, Aside는 스크립트의 옵션을 샌드박스 옵션으로 고쳤다. 같은 구간을 다시 돌렸더니 같은 품질로 통과했다. 명령어를 모르는 사람도 이 대목에서는 판정 자리에 있어야 한다. 권한을 어떻게 나누는지는 1권 11장에서 다뤘다.
1.5 에이전트끼리 파일로 대화하기
8월 말부터 내 출판 작업에는 에이전트가 둘 있다. 원고 파일과 전자책 빌드는 편집기 안의 다른 코딩 에이전트가 맡고, 사이트 등록과 브라우저 일은 Aside가 맡는다. 둘은 서로의 대화를 보지 못한다. 그래서 짧은 명령줄 프로그램 하나로 대화 채널을 만들었다. 만든 쪽은 다른 에이전트다. 메시지는 덧붙이기만 되는 기록 파일에 쌓인다. 보낼 때는 알림, 질문, 요청, 답변, 완료 가운데 종류를 붙이고, 답장은 원래 메시지 번호를 가리킨다. 책마다 상태를 적는 파일 하나가 정본이어서, 두 에이전트 모두 그 파일을 기준으로 삼는다. 명령줄이 다른 도구와 이어진다는 장점이 여기서는 에이전트와 에이전트를 잇는 데 쓰였다.
이 채널을 점검해 보니 77개 메시지 가운데 48개(62%)가 답을 받지 못했다. 원인은 설정이었다. 종류를 적지 않으면 기본값이 ‘알림’이 되는데, 알림은 답을 기다리지 않는 종류다. 기본값이 사람 습관보다 강했다.
책 정보 파일을 읽고 판정만 하는 검사 프로그램도 있다. 설계 원칙은 “만지지 않는다. 읽고 판정만 한다.”이다. Aside는 등록을 마친 뒤 이 검사를 명령으로 돌려 오류가 0인지 확인한다. 세션이 사라져도 남는 것은 파일이다. 새 창에서 이어 갈 때도 “그 폴더 읽고 대화 채널 확인한 다음 이어서 진행해줘” 한 줄이면 되도록 해 두었다.
1.6 명령줄을 맡길 때 조심할 것
첫째는 비밀값이다. 9월 23일 API 키를 발급할 때, Aside는 키 값을 화면이나 기록에 찍지 않았다. API 키는 외부 서비스가 나를 알아보는 데 쓰는 긴 문자열이고, 남에게 보이면 내 이름으로 요금이 나갈 수 있다. Aside는 명령으로 권한을 제한한 설정 파일, 곧 소유자만 읽을 수 있는 파일로 키를 옮겼다. 그 폴더의 버전 관리 제외 목록에도 넣었다. 버전 관리 제외 목록은 파일 변경 기록을 남기는 프로그램이 건드리지 않을 파일을 적어 두는 목록이다. 명령줄은 결과를 그대로 출력하기 때문에, 비밀값을 다룰 때는 출력에 찍히지 않게 하라고 요청에 적어 두는 편이 안전하다.
둘째는 경로다. Aside 작업 공간의 명령줄에서 ‘~'(홈 폴더를 뜻하는 기호)는 내 실제 홈 폴더가 아니라 격리된 작업 공간의 홈을 가리킨다. 이 차이 때문에 한 번은 “키 파일이 이 컴퓨터에 없다”는 틀린 결론이 나왔다. 실제 파일은 내 문서 폴더에 있었다. 명령은 정확하게 실행됐지만, 엉뚱한 곳을 정확하게 찾았던 것이다. 그 뒤로 내 파일은 전체 경로로 찾는다. 명령줄이 “없다”고 답했을 때는 어디를 찾았는지까지 물어볼 만하다.
셋째는 작업 공간에서 막힌 일이다. Aside 작업 공간에서는 앱 실행, 설치 프로그램 실행, 실행 중인 프로세스 목록 보기가 막혀 있다. 그런 일이 필요하면 Aside는 나에게 넘긴다. “터미널을 열고 이 한 줄을 붙여 넣어 주세요” 같은 식이다. 대신 읽기 전용 진단 명령은 된다. 설치된 패키지 목록을 보거나, 백그라운드 서비스의 상태를 보거나, 실행 파일이 어떤 칩 구조용으로 만들어졌는지 확인하는 일이다. 사업자 등록 때 정부 사이트의 보안 프로그램이 돌지 않던 원인도 이렇게 찾았다. 칩 구조가 다른 프로그램을 돌려 주는 호환 계층이 내 컴퓨터에 없었다. 1권 14장에서 적은 일이다.
1.7 Aside CLI는 무엇이고, 무엇이 다른가?
여기까지는 Aside가 명령줄을 쓰는 이야기였다. 반대 방향도 있다. 명령줄이나 다른 코딩 에이전트에서 Aside에게 웹 작업을 시키는 입구다. Settings > Developers 화면 맨 위에 “Aside CLI: Browse and run web tasks from Codex, Claude Code, and more.”라는 설명과 Install 버튼이 있다. 먼저 밝혀 두면, 나는 아직 설치하지 않았다. 내 화면의 버튼은 Install 상태 그대로다. 이 절은 화면과 도움말의 설명을 옮긴 것이고, 직접 써 본 경험은 없다.

같은 화면 아래쪽 FAQ는 역할을 이렇게 나눈다. 코딩 에이전트는 계획을 세우고 코드를 고친다. Aside는 로그인된 브라우저 세션과 브라우저 조작을 공급한다. 로그인 정보와 쿠키는 프롬프트(에이전트에게 주는 지시문)로 복사되지 않고 Aside 브라우저 안에 남는다고 적혀 있다. FAQ에는 Remote Control(Pro 요금제 기능)도 있다. 켜면 다른 기기나 서버에서 이 컴퓨터의 브라우저로 작업을 보낼 수 있고, 로그인과 브라우징은 이 컴퓨터에 남고 다른 기기는 요청을 보내고 결과를 받는다. 내 화면에서 이 스위치는 꺼져 있다.

FAQ는 Aside CLI의 명령 셋을 설명한다. 표 1-2는 화면의 설명을 옮겨 정리한 것이다. FAQ는 두 연결 방식도 구분한다. CLI는 사람과 스크립트가 쓰는 입구이고, MCP는 호환되는 에이전트가 자기 작업 중에 Aside의 도구를 부르는 연결 방식이다. MCP(Model Context Protocol)는 AI 에이전트가 바깥 도구를 찾아 부를 수 있게 하는 연결 규약이다. 반복해서 돌릴 스크립트에는 CLI를, 에이전트가 스스로 도구를 찾아 쓰게 하려면 MCP를 권한다.
| 명령 | 하는 일 | 언제 쓰나 |
|---|---|---|
| aside exec “…” | 브라우저 작업 전체를 Aside 에이전트에게 맡긴다 | 로그인된 사이트에서 데이터를 모으거나 여러 단계 작업을 통째로 맡길 때 |
| aside repl | Playwright와 비슷한 자바스크립트로 브라우저를 직접 조작하고 증거를 남긴다 | 화면 캡처, 파일 내려받기처럼 조작과 증거를 직접 쥐고 싶을 때 |
| aside mcp | MCP를 지원하는 코딩 에이전트가 Aside의 브라우저 도구를 직접 부르게 한다 | 코딩 에이전트가 작업 중에 스스로 브라우저 도구를 찾아 쓰게 할 때 |
도움말에 따르면 macOS에서는 한 줄짜리 설치 명령으로 설치하고, 설정 화면에서도 설치와 업데이트를 할 수 있다. 작업은 aside 뒤에 요청 문장을 붙여 시작하고, 세션 번호를 붙여 이어 간다. 9월 2일 변경 기록에는 aside skills install로 Codex, Claude Code, Cursor, OpenCode에 Aside 브라우저 스킬을 설치하는 기능이 추가됐다고 적혀 있다. Playwright는 브라우저를 코드로 조작하는 도구다. 이번 발행 작업에서 Aside가 쓴 브라우저 조작, 곧 페이지 스냅샷, 화면 캡처, 파일 올리기는 aside repl이 설명하는 것과 같은 계열로 보인다. 내 관찰일 뿐이고, 같은 것이라고 확인하지는 않았다.
1.8 명령어 없이 쓰는 요청 예시
명령어를 몰라도 요청에 담을 것은 세 가지다. 무엇을 확인할지, 어떤 조건에서 볼지, 결과를 어떤 모양으로 받을지. 명령의 이름은 몰라도 된다. 필요하면 “명령줄로”라는 말만 붙이고, 내 터미널에서 해야 할 일이 있으면 한 줄로 알려 달라고 적어 둔다. 아래는 설명을 위해 만든 가상의 요청이다.
[가상 설정] 내 사이트의 새 글 세 편을 로그인하지 않은 방문자 입장에서 확인해 줘. 브라우저 말고 명령줄로 확인해 줘. 내 로그인 상태가 섞이면 안 돼. 1. 세 글 모두 페이지가 정상으로 열리는지 2. 글마다 이미지가 전부 제대로 나오는지 3. 글마다 표가 몇 개인지, 앞뒤 글 링크가 이어져 있는지 4. 명령어나 원래 출력은 보여 주지 않아도 돼. 결과만 한국어로 표 하나에 정리해 줘 5. 네가 실행할 수 없는 일이 있으면 내 터미널에 붙여 넣을 한 줄만 알려 줘 6. 이상한 항목이 있으면 무엇을 어디서 확인했는지 같이 적어 줘
이 요청에서 명령어는 한 번도 나오지 않는다. 그래도 명령줄의 장점은 대부분 들어 있다. 세 글을 같은 기준으로 세고, 결과를 표로 남기고, 막히는 곳만 사람에게 넘긴다. 마지막 줄은 판정을 위한 장치다. 어디서 확인했는지를 알아야, 틀린 곳을 정확하게 찾은 결과인지 가려낼 수 있다.
1.9 다음 편: 여러 AI 모델에게 역할 나누기
1.4절의 코딩용 CLI 도구로 다른 책의 영어판 시험도 했다. 한 모델이 초안을 쓰고, 다른 모델이 고치고, 세 번째 모델이 감사했다. 그 과정에서 스크립트를 다시 실행하면 사람이 승인한 원고를 덮어쓰는 구조를 발견했고, 모델 출력은 별도 파일에만 쓰게 고쳤다. 다음 편은 이렇게 여러 AI 모델에게 역할을 나눠 맡기는 이야기다.
이 글의 확인 범위
기능 설명은 2026년 9월 27일에 확인한 Aside의 CLI·MCP·REPL 도움말, 변경 기록, 같은 날 내 Settings > Developers 화면을 기준으로 했다. 이후 화면 이름이나 동작은 바뀔 수 있다.
- Aside CLI는 설치하지 않았고 직접 실행하지 않았다. aside exec, aside repl, aside mcp의 설명과 표 1-2, Remote Control 설명은 화면 FAQ와 도움말을 옮긴 것이다.
- 이번 발행 작업의 브라우저 조작이 aside repl과 같은 계열이라는 말은 내 관찰이며 확인하지 않았다.
- Aside의 명령줄 도구 장애는 9월 하순 내 세션들 기준이다. 원인과 다른 사용자에게도 생기는지는 확인하지 않았다.
- 작업 공간에서 막힌 일(앱 실행, 설치 프로그램 실행, 프로세스 목록 보기)과 ‘~’가 가리키는 위치는 내 환경에서 겪은 것이다. 환경과 버전에 따라 다를 수 있다.
- 번역 작업의 조각 수, 산출물 약 280만 자, 진행 화면의 수치는 9월 21일과 22일 내 작업 기록 기준이다. 도구와 회사 이름은 적지 않았다.
- 대화 채널의 미응답 비율(77개 중 48개)은 점검한 시점의 집계다.
- 권한 확인을 건너뛰는 옵션 대신 샌드박스 모드를 쓴 판단은 내 작업 한 건의 결정이며 모든 도구에 맞는 권장값이 아니다.
- 명령어를 알아야 한다는 부담을 줄이는 방법을 다뤘을 뿐, 명령의 결과를 검증 없이 믿어도 된다는 뜻은 아니다. 결과 판정은 사람이 해야 한다.
- 그림 1-1은 설명용 도식이다. 그림 1-2와 1-3은 실제 화면이며 설정값은 바꾸지 않았다. 1.8절의 요청은 가상이다.
참고한 자료
2026년 9월 27일 확인. CLI·MCP·REPL 도움말 · Aside 변경 기록
다음 글: 고급 활용 2 · 여러 AI 모델에게 역할 나누기
1권: 『Aside 브라우저 사용설명서』 연재 목록
『Aside 고급 활용』 연재 목록
저자의 실제 사용 경험과 Aside 도움말을 바탕으로 AI의 도움을 받아 작성·편집했습니다. 초판 선공개 원고 v1.0.