요즘IT
위시켓
AIDP - AX
Rise ERP
콘텐츠프로덕트 밸리
요즘 작가들컬렉션물어봐
놀이터
콘텐츠
프로덕트 밸리
요즘 작가들
컬렉션
물어봐
놀이터
새로 나온
인기
개발
AI
IT서비스
기획
디자인
비즈니스
프로덕트
커리어
트렌드
스타트업
서비스 전체보기
위시켓요즘ITAIDP - AXRise ERP
고객 문의
02-6925-4867
10:00-18:00주말·공휴일 제외
yozm_help@wishket.com
요즘IT
요즘IT 소개작가 지원
기타 문의
콘텐츠 제안하기광고 상품 보기
요즘IT 슬랙봇크롬 확장 프로그램
이용약관
개인정보 처리방침
청소년보호정책
㈜위시켓
대표이사 : 박우범
서울특별시 강남구 테헤란로 211 3층 ㈜위시켓
사업자등록번호 : 209-81-57303
통신판매업신고 : 제2018-서울강남-02337 호
직업정보제공사업 신고번호 : J1200020180019
제호 : 요즘IT
발행인 : 박우범
편집인 : 노희선
청소년보호책임자 : 박우범
인터넷신문등록번호 : 서울,아54129
등록일 : 2022년 01월 23일
발행일 : 2021년 01월 10일
© 2013 Wishket Corp.
로그인
요즘IT 소개
콘텐츠 제안하기
광고 상품 보기
AI

gws CLI와 클로드 코드를 같이 쓰면 어떨까?

월요일 오후 9시
11분
1시간 전
135
에디터가 직접 고른 실무 인사이트 매주 목요일에 만나요.
newsletter_profile0명 뉴스레터 구독 중

GeekNews나 Medium, 혹은 LinkedIn 같은 커뮤니티에서 LLM이 아닌 주제를 보기 힘든 요즘입니다. 그래서 최근 들어서는 최신 유행하는 LLM 기술 등을 소개하기에 약간의 반골 기질이 들더라고요. 아마 그 반골 기질의 기원은 “글쓰기만큼은 Claude에게 빼앗길 수 없다”라거나 “수많은 LLM 주제가 쏟아지는 요즘 시대에 나는 다른 걸 써도 되지 않을까?”라는 등의 마음과 생각이었던 것 같습니다.

 

이제는 거의 클로드 코드(Claude Code) 없이 개발을 못 하는 처지에 이런 마음이 드는 것도 웃깁니다. 하지만 이번만큼은 그 반골 기질을 꺾을 정도로 좋았던 경험이었고, 이 글을 혹시나 보실 분들에게 적극적으로 추천하고자 제 고집을 잠시 접고 gws CLI + Claude Code의 사용 경험을 공유해 드리고자 합니다.

 

<출처: gws CLI>
 

gws CLI 가 뭐죠?

gws CLI의 풀 네임은 Google Workspace CLI입니다. 말 그대로 Google Workspace를 CLI로 다룰 수 있는 프로그램이죠. Google Workspace에 포함되는 Gmail(메일), Sheets(스프레드시트), Slides(프레젠테이션), GDrive(드라이브), Docs(문서), Calendar(캘린더) 등을 CLI로 사용할 수 있는 간단한 도구입니다. 물론 전부 무료로 사용할 수 있고요.

 

gws CLI가 만약 5년 전에 나왔다면, 모두가 "이딴 제품을 왜 내놓은 거야?"라며 욕하기 바빴을지도 모릅니다.적어도 사람에게는, 앞서 말한 작업들을 당연히 GUI로 처리하는 게 훨씬 편하기 때문입니다.

 

 

LLM 모델과 gws CLI가 만나다

gws CLI는 사람이 쓰기에 굉장히 불편하고 힘든 도구입니다. 왜냐고요? 아래 명령어를 보시면 바로 이해가 가실 겁니다.

 

 

과연 이 명령어를 사람이 직접 쓸 수 있어 보이나요? 심지어 이 명령어는 단순 서식에 불과합니다. 스프레드시트(Sheets)에서 마우스로 드래그하고 색상을 고른 뒤 굵게(Bold) 버튼을 누르면 끝날 일을, CLI로 처리하려면 이 JSON 괴물을 직접 써야 합니다. 인간에게는 굉장히 비효율적인 방식이죠. 하지만 Claude Code 같은 LLM에게는 식은 죽 먹기입니다. 네, 여러분이 짐작하신 것처럼 gws CLI는 사람이 아니라 AI 에이전트(AI Agent)가 쓰라고 만든 도구입니다.

 

gws CLI의 리포지토리(Repository)에 들어가 보면, AI 에이전트를 위해 만든 흔적이 곳곳에 보입니다. README.md 첫 문단부터 'built for humans and AI agents'라고 명시되어 있으며, gws generate-skills 명령어를 통해 모든 워크스페이스 API의 에이전트용 스킬을 곧바로 만들어낼 수 있습니다.

 

이런 걸 보면 gws CLI는 사람을 위한 UX가 아니라, AI 에이전트를 위한 경험을 설계한 것처럼 보이죠. 요즘 업계에서는 이를 AX(Agent Experience)라고 부르더군요.

 

gws CLI의 전반적인 설명이나 설치 방법, 간단한 사용법 등은 제가 즐겨 보는 코딩애플님의 gws CLI 영상을 보시는 걸 추천합니다. 이번 아티클에서는 제가 직접 사용하며 겪은 후기와, 무엇이 가능했고 어떤 작업을 처리했는지 경험담을 푸는 편이 더 유용할 것 같네요.

 

 

Google Sheets 사용

저는 타입캐스트(Typecast)에서 최적화 엔지니어로 일하고 있습니다. 제가 최적화 엔지니어로서 자주 하는 작업 중 하나가 바로 '측정'인데요. 이 측정 결과를 내부 팀이나, 의사 결정권자분들에게 투명하게 공유하는 게 매우 중요합니다.

 

그 측정 결과에 따라 “어떤 것을 최적화해야 하는가?”, “최적화의 우선순위가 무엇인가?”, “모델 품질 저하가 일어났다면 어디서 발생했는가?” 등을 파악할 수 있기 때문이죠. 그래서 팀원들에게 측정 결과를 공유하기 위해 구글 스프레드시트를 정말 자주 사용합니다.

 

그동안은 스크립트로 도출된 측정 결과를 정리해 CSV 파일로 만들고, 이를 시트에 임포트(Import)한 뒤, 서식을 적용하는 일련의 과정들이 꽤 큰 병목 지점이었습니다. 시트 작업에만 한 시간이 넘는 시간을 허비하는 게 예사였죠. 게다가 중간에 수정할 일이라도 생기면 무척 귀찮아지곤 했습니다. 시트 다루는 솜씨가 그리 훌륭하지 못하다 보니, 매번 서식이나 수식, 조건부 서식을 다루는 건 쉽지 않은 일이었습니다.

 

하지만 이 gws CLI를 도입하고 나서 이러한 병목이 완전히 사라졌습니다. 병목이 사라진 덕분에, 측정한 뒤 반복적으로 개선하는 과정에서 시트를 보며 훨씬 더 정확하고 빠르게 반복 개선을 이어갈 수 있었죠.

 

아래는 제가 클로드 코드(Claude Code)로 gws CLI를 활용한 대략적인 예시입니다.

 

❯ 시트 생성 및 평가 데이터를 업로드 해주세요.
⏺ 새 스프레드시트를 생성하고 평가 데이터를 업로드하겠습니다.\
⏺ Bash(gws sheets spreadsheets create --json "{\"properties\":{\"title\":\"모델 평가 결과\"}}")
  ⎿  {
     … +67 lines (ctrl+o to expand)
⏺ 스프레드시트가 생성되었습니다. 이제 헤더와 평가 데이터를 업로드합니다.
⏺ Bash(SHEET_ID="1sWjCgCbRjHq2QS7vsLvZ0lWe-I9n2WXBIHmeFot2IOw"…)
  ⎿  {
     … +4 lines (ctrl+o to expand)
⏺ 스프레드시트 생성 및 데이터 업로드가 완료되었습니다.

 

깔끔하게 추가된 모습

 

사실 이 정도는 그리 놀랍지 않습니다. 시트를 생성한 뒤 데이터를 집어넣은 것이니까요. 하지만 이 시트를 수정하고 추가하는 부분에서 놀라움을 느꼈습니다.

 

앞서 생성한 시트만으로는 어떤 데이터가 좋고 나쁜지 한눈에 안 보여서, 가장 좋은 결과에 서식을 입혀달라고 요청했습니다.

 

❯ 이 시트에서 조건부 서식을 적용해 봅시다. 각 Vocie 별 가장 수치가 높은 평가를 연한 빨간색으로 조건부 서식을 해주세요.
⏺ 각 Voice(행)별로 가장 높은 수치에 연한 빨간색 조건부 서식을 적용하겠습니다.
⏺ Bash(SHEET_ID="1sWjCgCbRjHq2QS7vsLvZ0lWe-I9n2WXBIHmeFot2IOw"…)
  ⎿  {
     … +3 lines (ctrl+o to expand)
⏺ 조건부 서식이 적용되었습니다. 각 Voice 행에서 C~F열(MOS, WER, PESQ, STOI) 중 가장 높은 수치를 가진 셀이 연한 빨간색으로 표시됩니다.
  - 수식: =C2=MAX($C2:$F2)
  - 범위: C2:F6 (전체 메트릭 영역)
  - 서식: 연한 빨간색 배경
❯ 음 각 메트릭 별로 높으면 좋은게 있고, 낮으면 좋을게 있을텐데, 이걸 고려해서 조건부 서식도 가능할까요?
⏺ 네, 가능합니다. 메트릭 특성에 맞게 적용하겠습니다.
  - 높을수록 좋음 (MAX 강조): MOS, PESQ, STOI
  - 낮을수록 좋음 (MIN 강조): WER
⏺ Bash(SHEET_ID="1sWjCgCbRjHq2QS7vsLvZ0lWe-I9n2WXBIHmeFot2IOw"…)
  ⎿  {
     … +42 lines (ctrl+o to expand)
⏺ 적용 완료했습니다.
  - MOS, PESQ, STOI: 각 열에서 가장 높은 값이 연한 빨간색 (MAX)
  - WER: 가장 낮은 값이 연한 빨간색 (MIN) — 에러율이므로 낮을수록 좋음
❯ 이제 이 시트에서 7행에 각 열에 평균을 넣어줄 수 있나요?
⏺ Bash(SHEET_ID="1sWjCgCbRjHq2QS7vsLvZ0lWe-I9n2WXBIHmeFot2IOw"…)
  ⎿  {
     … +4 lines (ctrl+o to expand)
⏺ 7행에 각 메트릭의 평균을 AVERAGE 수식으로 추가했습니다. 시트에서 값이 자동 계산됩니다.

 

조건부 서식까지 완료

 

처음에는 WER(Word Error Rate)이라는 수치가 낮을수록 좋은 것임에도, 높은 수치에 빨간색을 칠하는 실수를 하기도 했습니다. 그래서 각 메트릭의 특성에 맞춰 조건부 서식을 다시 적용해달라고 요청하니 제대로 수정해 주었습니다.

 

또한 표 하단에 평균 수치가 없어서 평균값을 구하는 수식을 추가해달라고 요청했는데요. 직접 계산해서 넣는 게 아닌 진짜 수식을 넣어서 해결한 모습도 인상적이었죠.

 

그 다음은 이렇게 완성된 시트를 JSON 파일로 가져오는 것도 가능했습니다. gws CLI는 시트의 내용을 긁어와 JSON 파일로 내보내는(Export) 기능도 함께 제공하기 때문입니다.

 

❯ 시트에 있는 데이터를 JSON으로 뽑아주세요.
⏺ Bash(gws sheets spreadsheets values get \
        --params "{\"spreadsheetId\":\"1sWjCgCbRjHq2QS7vsLvZ0lWe-I9n2WXBIHmeFot2IOw\",\"range\":\"Sheet1!A1:F6\"}")
  ⎿  {
     … +51 lines (ctrl+o to expand)
⏺ 데이터를 JSON 파일로 저장하겠습니다.
⏺ Write(evaluation_results.json)
[
  {"Voice": "Aria", "Language": "ko", "MOS": 4.21, "WER": 0.032, "PESQ": 3.85, "STOI": 0.96},
  ...
  {"Voice": "Ella", "Language": "ja", "MOS": 4.19, "WER": 0.038, "PESQ": 3.78, "STOI": 0.95}
]

 

이게 된다는 건 시트에 있는 내용을 내 코드로 가져오거나, 과거의 시트를 가져와 데이터를 분석할 때도 용이하다는 뜻입니다. 내용이 너무 길어져 예시를 더 가져오진 못했지만, 핵심은“시트의 세부적인 내용을 반복해서 수정할 수 있고, 조건부 서식과 수식을 손쉽게 적용할 수 있을 뿐 아니라, 시트 데이터를 JSON 형식으로 언제든 추출할 수 있다”라는 점입니다.

 

지금 보여드린 기능은 그야말로 새발의 피에 불과합니다. 현재 제 실무에서는 이보다 훨씬 더 많은 데이터와 복잡한 수식, 그리고 차트까지 한꺼번에 다루고 있습니다. 이 도구가 어디까지 해낼 수 있을지 저도 감이 오지 않는 상태입니다.

 

다음으로 스프레드시트만큼이나 자주 쓰는 도구가 구글 캘린더(Calendar)인데요. 이 캘린더 역시 gws CLI로 사용할 수 있습니다.

 

 

Google Calendar 사용

저희 회사에서는 Google Calender를 통해 회의를 잡고, 회의실을 추가하는 용도로 사용합니다. 또 개인적인 용무, 바쁨 상태를 Calendar에 추가하여 방해 금지 모드로 사용하는 경우도 있습니다. Calendar에 회의를 초대하는 부분이 가장 어려운 지점인데요. 회의에 참여하시는 분들의 빈 일정을 각각 확인하고, 그 시간에 비어 있는 회의실까지 찾아야 합니다. 인원이 적으면 괜찮지만, 회의 참석 인원이 많아지면 더 어려워지죠.

 

그리고 도저히 위 조건들이 안 맞을 때도 충분히 있습니다. 그러면 특정 분께 기존 일정을 좀 옮겨주실 수 있냐고 부탁드리면서 겨우 회의를 잡습니다. 하지만 gws CLI와 AI 에이전트가 함께하면 이 복잡한 과정도 전혀 두렵지 않습니다. 예시를 보시죠.

 

❯ 내일 성현님과 현승님이랑 스트리밍 관련해서 sync 업을 해야합니다. 
빈 회의실을 찾고, 빈 시간을 찾아서 후보지를 알려주세요.
⏺ 내일 일정과 회의실 정보를 확인하겠습니다.
⏺ 내일(3/11) 세 분의 일정과 회의실 예약 현황을 분석했습니다.
  참석자 일정 요약
  추천 후보
  후보 1: 13:00 - 14:00 (1시간)
She
  - 성현님 사무실 도착 직후, 세 분 모두 비는 시간
  - 빈 회의실:
    - HQ-5-Turing (5인)
    - HQ-5-Moon (4인)
    - HQ-5-Venus (6인)
  후보 2: 16:00 이후 (오후 늦은 시간)
  - 현승님 MADI 미팅 이후, 세 분 모두 비는 시간
  - 빈 회의실:
    - HQ-5-Turing (5인)
    - HQ-5-Earth (4인)
    - HQ-5-Sun (6인)
  ---
  참고: 성현님이 오전엔 재택이라 오후에만 오프라인 미팅이 가능합니다. 
  13:00-14:00 + Turing/Moon 조합이 가장 깔끔해 보입니다. 
  원하시는
 후보를 선택해주시면 캘린더에 일정을 잡아드리겠습니다.

 

이렇게 바로 에이전트가 어느 회의실을 잡아야 할지, 어떤 후보가 좋을지 빠르게 파악했습니다. 이 회의는 30분이면 충분한 안건이었는데, 오후 4시에 진행하면 모든 분들의 업무 흐름이 끊길 것 같더군요. 그래서 오후 1시 30분부터 2시까지, 3인 기준으로 'Moon 회의실'을 잡아달라고 에이전트에게 요청했고, 손쉽게 회의를 예약할 수 있었습니다.
 

 

Gmail 사용기

저는 주로 스프레드시트와 캘린더를 많이 쓰고 다른 기능은 크게 사용하지 않는 편인데요. 이번에는 실험 삼아, '오랫동안 나를 괴롭히던 문제로부터 해방될 수 있을까?' 하는 생각으로 Gmail도 한번 테스트해 보았습니다.

 

제 오랜 고민은 바로 '자주 보지는 않지만 꾸준히 날아오는 메일'을 필터링하는 것이었습니다. 이 메일들이 받은 편지함에 쌓이지 않게 걸러내어 불필요한 알림을 차단하고 싶었죠. (예를 들면, 타입캐스트 정기 업데이트나 데이터독(Datadog)의 시스템 이메일 알림 같은 것들입니다.) 그런데 놀랍게도 이 역시 에이전트를 통해 처리할 수 있었습니다. 어떻게 해결했는지 예시를 한번 보시죠.

 

❯ 'Datadog' via dev도 필터링되면 좋겠습니다.
⏺ Bash(# Create filter for Datadog via dev
      gws gmail users settings filters create --params '{"userId":"me"}' --json '{…)
  ⎿  {
       "action": {
         "addLabelIds": [
     … +12 lines (ctrl+o to expand)
⏺ Bash(# Find and batch process existing Datadog via dev emails
      gws gmail users messages list --params '{"userId":"me","q":"from:dev@neosapience.com subject:Datadog","…)
  ⎿  Done
  ⎿  (timeout 1m)
⏺ 완료했습니다.
  - 필터 추가: from:dev@neosapience.com + subject:Datadog → Datadog 라벨 + 아카이브
  - 기존 메일 정리: 기존에 쌓여있던 Datadog via dev 메일도 전부 라벨링 + 아카이브 처리
  이제 직접 오는 Datadog(dtdg.co)과 dev 그룹 경유 Datadog 둘 다 자동으로 필터링됩니다.

 

빈번하게 오는 잘 보지 않는 메일의 라벨을 붙여 알람이 안 오게 하기

 

메일함이 늘 데이터독(Datadog) 알림과 정기 업데이트 소식에 파묻혀 있어, 중요한 메일을 놓칠 때가 많았습니다. 이상하게 알림 설정을 꺼두어도 계속 메일이 날아오더라고요. 나름 오랜 숙원 사업이었는데, 덕분에 1년 반 동안 고통받던 것에서 해방될 수 있었습니다.

 

 

구글 프레젠테이션(Google Slides) 활용기

여기서 순전히 호기심이 발동해, gws CLI와 AI 에이전트의 조합이 과연 어디까지 해낼 수 있는지 추가로 실험해 보았습니다. Opus 4.6의 성능이 어느 정도인지도 궁금했거든요. (이 글이 쓰여진 26년 4월 기준, 현재는 Opus 4.8까지 나옴)

 

구글 슬라이드도 잘 만들고 수정할 수 있는지 테스트해 보았습니다. 당장 필요한 PPT는 없었기에, Opus 4.6에게 이렇게 주문했습니다. “혹시 아무 주제나 좋으니, 슬라이드를 구성해서 발표가 가능할 정도로 PPT 내용을 채워줄 수 있나요? 창의성을 마음껏 뽐내봅시다.”라고 했더니, 뭔가 뚝딱 만들어줬습니다. 그리고 결과물을 보고 꽤나 놀랐죠.

 

디자인 감각이 저보다 낫네요.

 

딱히 오류라고 볼 만한 게 없을 정도로 너무 깔끔하게 프레젠테이션을 만들어냈습니다. 디자인마저 제가 직접 만든 것보다 나았고요. 심지어 "두 번째 페이지에 있는 올림푸스산 관련 내용을 좀 더 재미있게 바꿔달라"고 요청해 보았는데요. 전체 틀을 깨지 않고, 그 부분만 정확하게 수정하는 것 역시 가능했습니다.

 

문득 'Sonnet 4.6에서도 이만큼 잘 해낼 수 있을까? 아니면 Gemini나 GPT 5.4 같은 다른 모델들은 얼마나 더 잘할까?' 하는 호기심이 생겼습니다. 마침 Sonnet 4.6은 당장 테스트해 볼 수 있는 환경이었기에, 똑같은 프롬프트로 시켜보았습니다.

 

이 발표 자료로 발표하면 망해버릴지도 모르겠네요.

 

Sonnet 4.6은 프레젠테이션 서식의 전반적인 통일성은 잘 유지했으나, 다양성이 다소 부족하고 단순히 글자를 나열하는 수준에 그쳤습니다. 확실히 모델 간의 성능 차이가 드러나는 부분이었습니다.

 

 

마무리하며

위 실험들은 모두 Claude 4.6 Opus에서 진행되었습니다. 앞으로 Gemini Pro나 GPT 같은 타사 모델에서는 또 어느 정도의 퍼포먼스를 보여줄지 무척 기대됩니다.

 

아마 Sonnet 4.6과 Opus 4.6을 간단하게 비교했을 때, 퀄리티 차이가 드러난 걸 보면 꽤 재밌는 비교가 될 것 같습니다.

 

 

최근 LLM들은 에이전트로서 얼마나 자율적이고 정밀하게 동작하는지 평가하는 '에이전틱(Agentic) 벤치마크'를 앞다투어 추가하고 있습니다. 실제로 Sonnet 4.6 출시 당시에도 이러한 에이전틱 벤치마크 성과를 주요 지표로 내세우기도 했죠.

 

터미널에서 작업을 수행하거나, 스프레드시트를 조작하고, 프레젠테이션을 생성·편집하는 등 컴퓨터를 직접 제어하는 능력을 평가하는 것입니다. 실제로 구글 스프레드시트 API 호출 능력을 측정하는 ToolBench, 스프레드시트 조작 능력을 평가하는 SpreadsheetBench, 슬라이드 편집 능력을 평가하는 TSBench 같은 벤치마크가 이미 존재합니다. 이러한 벤치마크가 존재하면 모델을 개선할 때 이를 반영하게 되므로, 성능은 더 좋아질 수밖에 없습니다. 앞으로의 발전이 더욱 기대되는 이유입니다.

 

에이전트 통합업체 AI 벤처 스튜디오 조사에 따르면, 전 세계 인구의 84%는 아직 AI를 한 번도 써본 적이 없으며, 유료 사용자는 0.3%, AI로 실제 시스템을 구축하는 사람은 0.04%에 불과하다고 합니다. 지금 AI가 주는 생산성을 제대로 누리고 있는 사람은 사실상 일부 개발자뿐인 셈입니다.

 

앞으로 gws CLI 같은 도구가 더 많아지고 AX가 자리 잡아서, 개발자가 아닌 일반 사용자도 자연어 한 줄만으로 이러한 생산성을 체감할 수 있는 날이 하루빨리 오기를 기대해 봅니다.


<원문>

gws CLI + Claude Code 사용기
 

©️요즘IT의 모든 콘텐츠는 저작권법의 보호를 받는 바, 무단 전재와 복사, 배포 등을 금합니다.