전체 글
-
OpenClaw를 250줄 게이트웨이로 교체한 이유IT 2026. 3. 22. 21:00
AI 도구가 늘어나면 생기는 문제 — 기능 중복AI 도구를 하나둘 도입하다 보면, 어느 순간 비슷한 기능이 여러 곳에 흩어져 있는 걸 발견합니다. 저도 그랬습니다.Telegram으로 명령을 내리면 AI가 처리해주는 챗봇을 운영하고 있었습니다. 집안 IoT 기기 제어, 캘린더 관리, 가족 앨범 정리 같은 작업을 외부 AI API를 통해 처리하는 구조였죠. 동시에 로컬 서버에서는 Claude Code(Anthropic의 CLI 에이전트)를 사용하고 있었는데, 이 에이전트에도 스킬(Skill), 메모리(Memory), 설정 파일(CLAUDE.md) 같은 체계가 이미 구축되어 있었습니다.문제는 두 시스템이 같은 일을 각각 다른 방식으로 하고 있었다는 겁니다.기능OpenClawCLI 에이전트도구 호출 (IoT, ..
-
GPU 하나로 AI 작업 두 개 돌리기 — 우선순위 스케줄러 만들기IT 2026. 3. 21. 21:00
GPU 하나, 할 일은 둘 — 무엇이 문제인가?로컬 AI 서버를 운영하다 보면 이런 상황이 생깁니다. 가족사진 수천 장을 VLM(Vision Language Model, 이미지를 이해하는 AI)으로 분석하는 작업이 몇 시간째 돌아가고 있는데, 갑자기 녹음 파일을 전사해야 할 일이 생긴 겁니다.GPU는 하나뿐입니다. 이미지 분석이 GPU 메모리를 꽉 잡고 있으니, 음성 전사 프로그램은 실행조차 안 됩니다. 그렇다고 이미지 분석을 매번 수동으로 죽이고, 음성 처리 끝나면 다시 켜는 건 너무 번거롭습니다.이 문제를 해결하기 위해 우선순위 기반 GPU 스케줄러를 만들었습니다. 운영체제가 CPU를 여러 프로세스에 나눠주는 것처럼, GPU를 여러 AI 작업에 효율적으로 배분하는 도구입니다.실생활 활용 사례사례 1:..
-
OAuth 2.0: 비밀번호를 넘기지 않고 권한만 빌려주는 방법IT 2026. 3. 20. 21:00
들어가며 — 비밀번호를 알려줘야만 했던 시절2007년쯤, 웹 서비스들이 서로 연동되기 시작했다. "이 앱에서 내 Google 연락처를 불러올게요"라는 기능이 등장한 것이다. 그런데 문제가 있었다. 연락처를 불러오려면 내 Google 비밀번호를 그 앱에 직접 입력해야 했다.잠깐 비유를 들어보자. 집 열쇠를 택배기사에게 맡기는 상황을 상상해보라. 택배기사는 현관에 물건만 놓으면 되는데, 내 집 마스터키를 통째로 넘겨야 한다. 기사가 나쁜 마음을 먹으면? 열쇠를 복사하면? 이게 바로 OAuth 이전 시대의 현실이었다.사용자 비밀번호가 제3자 앱 서버에 저장됨 → 해킹 시 비밀번호 유출앱에 모든 권한이 부여됨 → 연락처만 필요한데 메일, 드라이브까지 접근 가능권한 회수가 불가능 → 비밀번호를 바꾸는 수밖에 없음..
-
pyannote 화자 분리가 GPU에서 안 돌아갈 때 — Blackwell nvrtc 패치 1줄의 힘IT 2026. 3. 19. 23:00
33분짜리 녹음을 AI로 전사했다. 텍스트는 나왔는데, 누가 말한 건지 구분이 안 된다. 4명이 번갈아 발표한 녹음인데 전부 "Speaker 1"로 찍힌다. pyannote-audio라는 화자 분리(speaker diarization) 모델을 돌리면 해결된다. 문제는 GPU에서 돌리면 에러가 나고, CPU로 돌리면 40분이 걸린다는 것이었다. 이 글에서는 원인을 추적해서 코드 2줄을 고쳐 GPU 화자 분리를 되살린 과정을 정리한다. ---증상: GPU에서만 터지는 에러NVIDIA DGX Spark는 GB10이라는 Blackwell 아키텍처 GPU를 탑재하고 있다. CUDA compute capability(GPU 세대를 나타내는 숫자)가 12.1인데, 이게 너무 최신이라 문제가 생겼다.pyannote를 ..
-
녹음 파일을 넣으면 요약이 나온다 — 음성 자동 전사 & 요약 파이프라인 구축기IT 2026. 3. 19. 22:00
세미나를 듣고 왔다. 핵심 내용을 정리해야 하는데, 1시간짜리 녹음 파일을 다시 듣기가 귀찮다. 녹음은 성실하게 했는데 정리는 영원히 밀린다.이 문제를 해결하기 위해 "녹음 파일을 폴더에 넣으면 요약 문서가 자동으로 나오는" 파이프라인을 만들었다. 폰에서 녹음하면 서버로 자동 동기화되고, AI가 전사하고, 화자를 구분하고, 요약하고, 저장하고, 알림까지 보내준다.이 글에서는 전체 아키텍처와 각 단계의 설계 의도를 정리한다.전체 아키텍처스마트폰 (음성 녹음) ↓ SFTP 자동 동기화 (FolderSync)서버 ~/voice-inbox/ ↓ watchdog (파일 감지 즉시 트리거) ↓ Python 파이프라인 ├─ 1. 필터링 (통화 녹음 제외) ├─ 2. 포맷 변환 (m4a → ..
-
음성을 텍스트로, 목소리를 사람으로 — Whisper와 pyannote가 풀어낸 두 가지 문제IT 2026. 3. 19. 21:00
녹음을 다시 듣고 있다. 1시간짜리 음성 파일. 핵심 내용이 어디쯤이었는지 기억이 안 나서 처음부터 재생한다. 빨리감기. 되감기. 또 빨리감기.이 경험이 익숙하다면, "녹음은 했는데 다시 듣기가 귀찮다" 는 인류 공통의 문제에 공감할 것이다.이 문제를 해결하려면 두 가지가 필요하다.음성을 텍스트로 바꾸기 (Speech-to-Text)누가 말한 건지 구분하기 (Speaker Diarization)이 글에서는 이 두 문제를 각각 해결하는 오픈소스 모델 — OpenAI Whisper와 pyannote-audio — 을 다룬다. 어떤 문제를 풀기 위해 나왔고, 어떻게 작동하며, 실제로 어떻게 설치하고 사용하는지까지.문제 1: 음성을 텍스트로 — OpenAI Whisper왜 이 모델이 필요한가음성인식(STT)은 ..
-
수만 장 가족사진에 AI가 메타데이터를 입히는 과정 — Immich + VLM 파이프라인 해부IT 2026. 3. 18. 23:00
사진을 Immich에 올리면 끝일까? 26,841장의 가족사진을 Immich에 넣은 뒤, 진짜 작업이 시작되었다. 사진 한 장에 붙는 메타데이터가 어떤 종류가 있고, 각각 어떻게 만들어지며, 지금 어디까지 진행되었는지 정리한다.사진 한 장에 붙는 정보들Immich에 사진을 업로드하면 여러 겹의 정보가 사진 위에 쌓인다. 크게 네 가지 레이어로 나눌 수 있다.하나씩 살펴보자.Layer 1: EXIF — 카메라가 남기는 기본 정보사진 파일 안에 원래 들어 있는 정보다. Immich가 새로 만드는 게 아니라, 카메라(또는 스마트폰)가 촬영 시점에 기록한 것을 Immich가 읽어서 DB에 저장한다.항목예시활용촬영일시2023-08-15 14:32:07타임라인 정렬, "이 날의 추억"GPS 좌표37.5665°N, ..
-
gogcli에서 gws로: REST API → CLI → AI Agent, 도구의 진화를 따라가다IT 2026. 3. 17. 23:00
들어가며터미널을 열고 gog gmail send 한 줄이면 메일이 나가던 시절이 있었다. 브라우저를 열고 Gmail에 로그인할 필요가 없었다. 그런데 어느 날 Google이 직접 CLI를 내놓았다. 이름은 gws. "그냥 또 하나 나온 거 아냐?"라고 생각했는데, 써보니 결이 달랐다.이 글은 gogcli에서 gws로 갈아탄 과정을 기록하면서, 그 뒤에 깔린 더 큰 흐름 — REST API → CLI → AI Agent 통합 — 을 함께 짚어보려 한다.왜 CLI인가? — REST API의 불편함Google Workspace API를 직접 쓰려면 이런 과정을 거쳐야 했다:Google Cloud Console에서 프로젝트 생성OAuth 2.0 자격 증명 설정토큰 발급 및 갱신 코드 작성각 API 엔드포인트마다..