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