TypeScript에서 Bash 명령어를? (이거 진짜 천재적인데요)

BBetter Stack
Computing/SoftwareSmall Business/StartupsInternet Technology

Transcript

00:00:00AI 에이전트의 성능을 높이는 가장 간단한 방법 중 하나는 에이전트에게
00:00:03bash 권한을 주는 것이지만, 그 과정이 조금 복잡할 수 있습니다. 실제 쉘과 파일 시스템,
00:00:09서버와 컨테이너 등 전반적으로 많은 인프라가 필요했기 때문이죠.
00:00:13하지만 더 간단한 방법이 있다면 어떨까요? 사실 Typescript로 구현된
00:00:18bash를 사용하면 됩니다. 조금 황당하게 들릴 수도 있겠지만, 정말 멋진 도구인 데다
00:00:22비용까지 절약할 수 있습니다. 어떻게 하는지 보여드릴게요.
00:00:30이것은 'justbash'라는 새로운 패키지입니다. 리드미(Readme)를 보면 “Typescript로 작성된
00:00:34인메모리 가상 파일 시스템을 갖춘 시뮬레이션 bash 환경”이라고 적혀 있죠. 또한
00:00:38보안이 보장된 샌드박스 bash 환경이 필요한 AI 에이전트를 위해 설계되었습니다.”
00:00:42이것을 AI 에이전트에 연결해 성능을 높이는 방법을 보여드리기 전에,
00:00:45어떤 원리로 작동하는지 이해를 돕기 위해 아주 간단한 코드를 먼저 보여드리겠습니다.
00:00:48여기 justbash 패키지에서 새로운 bash 환경을 시작하고,
00:00:53그 안에서 bash 명령어를 실행해 보겠습니다. 'env.exec'를 사용하는데,
00:00:57단순히 'echo hello' 명령어를 실행해 그 내용을 'greeting.txt'라는
00:01:01파일에 저장하라고 했습니다. 그다음 줄에서 동일한 환경에 다시 'exec'를 실행해
00:01:06방금 만든 'greeting.txt' 파일을 읽어보겠습니다. 그리고 그 결과값의
00:01:10표준 출력(stdout)과 종료 코드(exit code), 환경 변수 등을 로그로 확인할 수 있습니다.
00:01:14실행해 보면 성공적으로 파일을 쓰고 읽은 것을 볼 수 있죠.
00:01:18종료 코드는 0이 나오고, 시뮬레이션된 bash 쉘의 환경 변수들도 보입니다.
00:01:22여기서 기억해야 할 중요한 점은 이것이 '시뮬레이션된' bash 쉘이라는 것입니다.
00:01:26말 그대로 bash 명령어들을 Typescript 버전으로 다시 쓴 것이죠.
00:01:30따라서 실제 쉘에 연결된 것이 아니라, 우리가 입력한 명령어를
00:01:34Typescript로 변환해서 실행하는 방식입니다. 'greeting.txt' 파일 역시
00:01:39실제 파일 시스템에 존재하는 게 아니라 인메모리 가상 파일 시스템에 있습니다. (물론 실제 파일 시스템 연결 옵션도 있습니다.)
00:01:44간단히 정리하자면, 이 도구는 'exec' 함수 안에 우리가 작성한
00:01:47bash 명령어를 가져와서 자바스크립트 함수로 변환한 뒤 실행하는 것입니다.
00:01:51덕분에 실제 쉘이 필요 없죠. 여기 코드베이스에서 확인할 수 있듯이,
00:01:55제가 'exec' 안에 'echo'를 넣으면 실제로는 이 자바스크립트 함수가 실행됩니다.
00:01:59bash의 'echo' 명령어가 가진 플래그들을 파싱해서 자바스크립트로 바꾸고,
00:02:03입력한 내용을 그대로 출력해 주는 로직이 들어있죠.
00:02:08보시는 것처럼 자바스크립트 표준 출력값과 표준 에러,
00:02:11종료 코드를 포함한 객체를 반환합니다.
00:02:15bash의 기본 기능을 다 처리할 수 있을지 의구심이 들 수도 있겠지만,
00:02:19지원되는 명령어 목록을 보면 정말 방대합니다. cat, copy, awk는 물론이고
00:02:23base64 같은 것들도 있죠. jq, python 3, sqlite 같은 고급 데이터 처리 도구도 있고,
00:02:27curl을 사용해 네트워크 요청도 보낼 수 있습니다. 화이트리스트 설정이 가능해 보안성도 갖췄죠.
00:02:33또한 파이프, 리다이렉션, 커맨드 체이닝 같은 쉘의 핵심 기능들도 지원합니다.
00:02:36기본적인 bash 쉘이 제공하는 거의 모든 것을 갖추고 있는 셈이죠.
00:02:41이 패키지가 정말 훌륭하고 기능이 많다는 건 아시겠지만,
00:02:45여전히 '왜 굳이 Typescript로 된 bash가 필요한지', '에이전트에 어떤 도움이 되고
00:02:48어떻게 돈을 아껴주는지' 궁금하실 겁니다. 답변을 위해 아주 간단한 채팅 앱 예시를 보여드릴게요.
00:02:53자, 이 채팅 앱에서 특정 JSON 파일에 대해 대화한다고 가정해 봅시다.
00:02:57엄청나게 많은 레코드가 담긴 JSON 파일인데, AI에게 특정 정보를 찾거나
00:03:02데이터 분석을 요청하려 합니다. 보시다시피 파일 용량이 어마어마하죠.
00:03:06가장 간단하지만 확실히 '잘못된' 방식은 파일 전체 내용을
00:03:11프롬프트 안에 다 때려 넣는 것입니다. 여기서는 AI SDK와 GPT 5.2를 사용 중입니다.
00:03:15이 방식으로 에이전트를 실행해 특정 레코드를 찾아달라고 하면,
00:03:19답변을 잘 해주긴 합니다. 최신 대형 모델들은 긴 문맥(context) 속에서
00:03:24정보를 찾아내는 능력이 좋으니까요. 하지만 문제는 토큰을 무려 133,000개나 썼다는 겁니다.
00:03:28게다가 더 복잡한 데이터 조작이나 특정 범위의 데이터를 묻기 시작하면
00:03:33결과가 엉망이 되기 십상입니다.
00:03:39앞서 말씀드린 방식은 오답이고, 그나마 나은 방법으로 시도해 보셨을 법한 게
00:03:43RAG 방식이나 에이전트에게 샌드박스를 줘서 bash로 데이터를 만지게 하는 것이겠죠.
00:03:48하지만 그런 접근법은 인프라 구축에 많은 공수가 들어갑니다.
00:03:51대신 'justbash'로 이 환경을 시뮬레이션해 봅시다. AI SDK를 사용할 때
00:03:56justbash를 기반으로 만들어진 'bash tool' 패키지를 쓰면 됩니다.
00:04:00채팅 API 엔드포인트에서 새로운 bash 도구를 생성하고,
00:04:05시뮬레이션 bash 환경에 넣고 싶은 파일들을 전달하기만 하면 됩니다.
00:04:09제 경우에는 아까 그 거대한 JSON 파일을 넘겼고,
00:04:13파일이 저장될 위치를 시뮬레이션된 'workspace' 디렉토리로 설정했습니다.
00:04:17그다음 AI SDK 스트림에 이 bash 도구를 연결해 주면 끝입니다.
00:04:21패키지에서 기본 제공하는 에이전트 지침(instructions)도 함께 전달했는데,
00:04:26이는 AI 에이전트가 bash 도구를 어떻게 사용하는지 이해하도록 돕는 간단한 가이드입니다.
00:04:31이렇게 간단한 설정만 마치고, 아까와 똑같이 JSON 파일에서
00:04:34정보를 찾아달라고 물어보겠습니다. 이번에는 자신의 전체 문맥을 뒤지는 대신,
00:04:39에이전트가 직접 bash 명령어를 실행합니다. 물론 우리 Typescript 시뮬레이션 환경 내에서 말이죠.
00:04:42처음에는 jq 명령어를 실행하려다 에러가 난 것 같네요.
00:04:46그러자 바로 head 명령어를 써서 파일 형식을 파악하더니,
00:04:50정확한 jq 명령어를 다시 입력해 정답을 찾아냈습니다.
00:04:54결과 자체는 이전 방식과 같고 시간은 조금 더 걸렸을지 몰라도,
00:04:58핵심은 입력 토큰을 133,000개가 아닌 단 6,000개만 사용했다는 점입니다.
00:05:02긴 문맥을 처리하는 훨씬 더 효율적인 방법이죠.
00:05:06장점은 이뿐만이 아닙니다. 데이터에 대해 더 깊이 있는 질문을 할 때 진가가 드러나죠.
00:05:10예를 들어 “ID 1000에서 2500 사이 레코드 중 metadata.active가 true인 건 몇 개인가요?”라고 물으면
00:05:15에이전트가 알아서 bash 명령어를 돌려 즉시 답을 내놓습니다.
00:05:19이걸 이전 방식으로 하려 했다면 문맥을 엄청나게 잡아먹었을 뿐더러,
00:05:24대충 짐작해서 틀린 답을 내놓았을 확률이 높습니다. 하지만 이 방식은 훨씬 정확하죠.
00:05:28에이전트에게 마치 실제 bash 쉘에 대한 완전한 권한이 있는 것 같은 효과를 주니까요.
00:05:33추가 인프라 없이도 에이전트를 훨씬 강력하게 만들어주는 아주 훌륭한 무료 기능 보강 도구입니다.
00:05:37이게 제가 이 도구를 정말 좋아하는 이유입니다. 한 가지 활용 사례만 보여드렸지만,
00:05:41활용도는 무궁무진합니다. 아까 보셨듯이 기본적인 Python, SQL, curl 명령어도 작동하고,
00:05:45원한다면 실제 파일 시스템에 연결할 수도 있습니다.
00:05:49justbash에 대한 여러분의 생각을 댓글로 알려주세요. 구독 잊지 마시고,
00:05:53그럼 다음 영상에서 뵙겠습니다!
00:05:57to your agents to make them more powerful with no additional infrastructure needed and that's
00:06:01what i really love about it hopefully i've showcased just one of its use cases but trust
00:06:05me there is so many more as we actually saw earlier you can get basic python sql and curl
00:06:10commands working in here and if you wanted to you can actually attach this to a real file
00:06:14system let me know what you think of just bash in the comments below while you're there subscribe
00:06:18and as always see you in the next one

Key Takeaway

justbash는 추가 인프라 구축 없이도 AI 에이전트에게 강력한 bash 실행 능력을 부여하여 비용 절감과 성능 향상을 동시에 실현하는 혁신적인 TypeScript 도구입니다.

Highlights

TypeScript로 구현된 인메모리 가상 bash 환경인 'justbash' 패키지 소개

실제 서버나 컨테이너 인프라 없이도 AI 에이전트에게 샌드박스화된 bash 권한 부여 가능

cat, awk, jq, python, curl 등 방대한 양의 bash 명령어 및 도구 지원

거대 JSON 파일 처리 시 토큰 사용량을 133,000개에서 6,000개로 약 95% 절감

데이터 분석 및 조작 시 단순 프롬프트 입력보다 훨씬 높은 정확도와 성능 제공

인메모리 가상 시스템뿐만 아니라 필요시 실제 파일 시스템과의 연결 기능 지원

Timeline

AI 에이전트의 한계와 새로운 해결책 제시

AI 에이전트에게 bash 권한을 주는 것은 성능 향상에 매우 효과적이지만, 기존에는 복잡한 서버 및 컨테이너 인프라가 필요하다는 단점이 있었습니다. 발표자는 이러한 인프라 구축의 번거로움을 해결할 수 있는 혁신적인 도구로 TypeScript 기반의 bash 시뮬레이션을 제안합니다. 이 방법은 별도의 외부 쉘 연결 없이도 작동하며 인프라 비용을 획기적으로 절약할 수 있다는 장점이 있습니다. 영상의 도입부에서는 복잡한 과정 대신 'justbash'라는 패키지를 통해 훨씬 간단하게 에이전트의 능력을 극대화하는 방법을 예고합니다. 이는 개발자들이 샌드박스 환경을 구축할 때 겪는 고충을 정확히 관통하는 해결책입니다.

justbash의 작동 원리와 핵심 기능

justbash는 TypeScript로 작성된 인메모리 가상 파일 시스템을 갖춘 시뮬레이션 bash 환경으로, 보안이 중요한 AI 에이전트를 위해 설계되었습니다. 이 도구는 입력된 bash 명령어를 자바스크립트 함수로 변환하여 실행하며, 'greeting.txt'와 같은 파일들은 실제 하드 드라이브가 아닌 메모리상에 존재하게 됩니다. 단순한 흉내를 넘어 cat, awk, jq, python 3, sqlite, curl 등 실무에서 자주 쓰이는 방대한 명령어를 지원하며 화이트리스트를 통한 보안 설정도 가능합니다. 또한 파이프와 리다이렉션 같은 쉘의 핵심 기능까지 완벽하게 구현하여 실제 bash 쉘과 유사한 경험을 제공합니다. 이러한 구조 덕분에 사용자는 별도의 런타임 환경을 구축할 필요 없이 코드 몇 줄로 강력한 쉘 환경을 생성할 수 있습니다.

전통적인 방식의 문제점: 토큰 낭비와 정확도 저하

발표자는 거대한 JSON 파일에서 데이터를 찾는 채팅 앱 예시를 통해 기존 방식의 문제점을 신랄하게 비판합니다. 가장 흔하지만 잘못된 방식은 수많은 레코드가 담긴 파일 전체 내용을 AI 프롬프트의 컨텍스트에 직접 넣는 것입니다. GPT 모델은 긴 문맥 속에서 정보를 찾아낼 수는 있지만, 이 경우 한 번의 질문에 무려 133,000개의 토큰을 소모하게 됩니다. 이는 엄청난 비용 발생은 물론이고, 복잡한 데이터 조작이나 특정 범위의 수치 계산을 요청할 때 AI가 환각 현상을 일으키거나 엉뚱한 답을 내놓을 확률을 높입니다. 결과적으로 단순한 '문맥 때려넣기' 방식은 대규모 데이터 처리에서 효율성과 정확성 모두를 놓치는 비효율적인 접근임을 강조합니다.

실전 활용: justbash를 통한 효율적인 데이터 분석

복잡한 인프라가 필요한 RAG 방식 대신 justbash 기반의 'bash tool' 패키지를 AI SDK에 연결하여 문제를 해결하는 과정을 보여줍니다. 에이전트에게 거대한 JSON 파일을 시뮬레이션된 워크스페이스에 넣어 전달하면, 에이전트는 파일 전체를 읽는 대신 스스로 bash 명령어를 실행하여 데이터를 파악합니다. 예를 들어 처음에는 jq 명령어로 시도하다 에러가 나면 head 명령어로 파일 구조를 파악한 뒤 다시 정확한 명령어를 입력하는 유연한 대처 능력을 보여줍니다. 이 방식을 통해 토큰 사용량을 133,000개에서 단 6,000개로 줄이면서도 결과의 정확도는 훨씬 높일 수 있었습니다. 이는 AI 에이전트가 직접 도구를 사용하여 문제를 해결하는 '에이전틱(Agentic)' 접근법의 정수를 보여주는 사례입니다.

강력한 성능 확장성과 마무리

단순 정보 탐색을 넘어 특정 ID 범위 내의 활성 상태 레코드 개수를 묻는 등 복잡한 조건부 질문에도 에이전트는 bash 명령어를 활용해 즉각적이고 정확한 답을 내놓습니다. 이전 방식이었다면 AI가 대충 짐작해서 답변했겠지만, 시뮬레이션된 bash 권한을 가진 에이전트는 실제 연산을 수행하므로 신뢰도가 비약적으로 상승합니다. justbash는 추가적인 인프라 없이도 에이전트를 강력하게 만들어주는 무료 기능 보강 도구로서 그 가치가 매우 높습니다. Python, SQL, curl 등 다양한 도구와의 연동은 물론 실제 파일 시스템과의 연결도 가능하여 활용 범위가 무궁무진합니다. 발표자는 이 도구가 개발자들에게 선사할 비용 절감과 성능 향상의 혜택을 강조하며 영상을 마무리합니다.

Community Posts

View all posts