AI

133 posts
FSearch: 맥 디스크 전체를 미리 색인해 두는 검색 도구

FSearch: 맥 디스크 전체를 미리 색인해 두는 검색 도구

ripgrep과 fd를 쓰기 시작하면 grep이나 find로는 돌아가기 어려운데요. 그래도 검색 범위를 홈 디렉터리 전체로 넓히면 이 둘도 몇 초씩 걸립니다. 매번 디스크를 처음부터 다시 훑기 때문이죠. 사람이야 1초쯤 기다려도 되지만, 코딩 에이전트는 작업 하나에 검색을 수십 번 돌리니 이 시간이 그대로 쌓입니다 😅 FSearch는 이 문제를 "미리 색인해 두기"로 풉니다. 상주하는 데몬(daemon)이 디스크 전체의 파일 이름과 텍스트 파일 내용을 색인해 두고, 파일이 바뀌면 그 부분만 바로 갱신합니다. 그래서 수백만 개 파일

Codex 코드 리뷰: GitHub PR을 AI에게 리뷰받기

Codex 코드 리뷰: GitHub PR을 AI에게 리뷰받기

동료가 올린 풀 리퀘스트(pull request, 이하 PR)를 꼼꼼히 리뷰하고 싶어도 하루에 몇 개씩 쌓이면 대충 훑고 승인하게 되는데요. 그러다 놓친 실수가 배포 후에 터지면 "그때 좀 더 볼걸" 하는 후회가 남습니다. 😅 OpenAI의 Codex에는 GitHub PR을 대신 리뷰해 주는 기능이 있습니다. PR에 @codex review라고 댓글을 달면 Codex가 변경 사항을 읽고 일반 GitHub 리뷰처럼 줄 단위로 의견을 남겨 주죠. 저도 이번에 운영하는 오픈소스 저장소 몇 곳에 이 기능을 연결했는데요. 이 글에서는 실제

Stack Overflow 2026 개발자 설문: AI 시대 개발자의 현주소

Stack Overflow 2026 개발자 설문: AI 시대 개발자의 현주소

State of JS가 자바스크립트 개발자들의 연례 행사라면, 언어와 분야를 가리지 않고 전 세계 개발자들이 함께 챙겨보는 설문이 있는데요. 바로 Stack Overflow 개발자 설문(Developer Survey)입니다. 올해로 16번째인 이번 설문은 2026년 6월 23일부터 8월 5일까지 진행됐고, 169개 나라에서 30,903명의 응답을 모았습니다. Stack Overflow는 올해 설문을 한 문장으로 요약했는데요. "How are you doing?", 우리말로 하면 "요즘 어떻게 지내세요?"입니다. 기술 순위표만 나열하

클로드 코드 Mods: TypeScript로 화면과 동작 바꾸기

클로드 코드 Mods: TypeScript로 화면과 동작 바꾸기

클로드 코드를 오래 쓰다 보면 화면에 뭔가 하나 더 있었으면 좋겠다는 생각이 들 때가 있습니다. 지금 브랜치에 바뀐 파일이 몇 개인지 프롬프트 바로 위에서 보고 싶고, Claude가 고치고 있는 README를 옆에 띄워 놓고 싶고, .env 파일만큼은 절대 건드리지 못하게 막고 싶죠. 지금까지는 상태줄에 셸 스크립트를 걸거나 Hooks로 도구 호출을 막는 정도가 전부였습니다. 둘 다 클로드 코드 바깥에서 스크립트를 돌리는 방식이라, 화면에 버튼이나 패널(pane)을 그리는 건 불가능했어요. 클로드 코드 v2.1.287부터 기본으로

1Password MCP 서버: 클로드 코드로 .env 안전하게 관리하기

1Password MCP 서버: 클로드 코드로 .env 안전하게 관리하기

얼마 전 1Password 서비스 계정 글을 손보다가 1Password 설정 화면에서 낯선 체크박스를 하나 발견했습니다. Settings > Developer에 Integrate with MCP clients라는 항목이 생겨 있더라고요. 1Password가 직접 MCP 서버를 내놓은 건데요. 비밀번호 관리자가 AI 에이전트에게 문을 열어 준다니, 반갑기보다 먼저 걱정이 앞섰습니다. 🤔 에이전트가 내 API 키를 마음대로 꺼내 가면 어떡하죠? 직접 켜 보니 생각과는 다른 물건이었습니다. 이 서버는 시크릿 값을 에이전트에게 돌려주지

Cloudflare Clef: 질문에 확률로 답하는 오픈소스 결정 모델

Cloudflare Clef: 질문에 확률로 답하는 오픈소스 결정 모델

에이전트 워크플로를 만들다 보면 중간중간 작은 판단이 필요한 순간이 계속 나옵니다. "이 문의는 긴급한가?", "어느 팀으로 보내야 하지?", "이 도메인은 피싱 사이트일까?" 같은 질문이요. 보통은 이런 판단도 대규모 언어 모델(Large Language Model, 이하 LLM)에게 맡기는데요. 프롬프트에 "JSON으로만 답해"라고 신신당부해도 가끔 형식이 어긋나고, 같은 입력에 매번 다른 답이 나오고, 무엇보다 한 번 물어볼 때마다 몇 초씩 기다려야 합니다 😅 예/아니요 하나 정하자고 수천 개의 토큰을 생성하는 건 아무래도

ACP: 에디터와 코딩 에이전트를 잇는 표준 프로토콜

ACP: 에디터와 코딩 에이전트를 잇는 표준 프로토콜

요즘 goose의 모델 제공자(provider) 설정 화면을 열면 낯선 항목이 하나 보이는데요. "Claude Code ACP"를 골라 보면 "ACP adapter not found"라는 경고와 함께 @agentclientprotocol/claude-agent-acp를 설치하라는 안내가 뜹니다. Zed의 AI 기능을 쓰다 보면 에이전트 패널에서 클로드 코드를 띄울 때도 같은 이름을 만나게 되고요. ACP는 이렇게 에디터나 앱이 외부 코딩 에이전트(coding agent)를 불러다 쓸 때 오가는 대화를 표준으로 정해 둔 프로토콜입니다

Jev: 텍스트 대신 확률을 돌려주는 TypeSafe AI의 결정 모델

Jev: 텍스트 대신 확률을 돌려주는 TypeSafe AI의 결정 모델

LLM을 코드 안의 if 문처럼 써보신 적 있나요? 고객 문의를 담당 부서로 나누는 것처럼 답이 몇 가지로 정해진 판단을 맡기는 일인데요. 프롬프트에 "반드시 JSON으로만 답해"라고 적고 돌아온 문자열을 Zod로 검증하다가 스키마가 어긋나면 다시 요청하는 코드를 한 번쯤 짜보셨을 겁니다. 그렇게 해도 판단 하나에 몇 초씩 걸리고, 가끔은 목록에 없는 부서 이름을 지어내기도 하죠. 😅 9월 15일 TypeSafe AI가 이 문제를 정면으로 겨눈 모델 Jev를 공개했습니다. ChatGPT의 바탕이 된 인간 피드백 강화학습(Reinf

Claude Projects: 일감을 던져두면 스레드로 나눠 일하는 클로드 코드

Claude Projects: 일감을 던져두면 스레드로 나눠 일하는 클로드 코드

클로드 코드로 일하다 보면 세션 하나로는 부족한 순간이 옵니다. 서비스 다섯 개에 같은 린트 설정을 적용해야 한다거나, 스펙 문서 하나를 놓고 며칠짜리 빌드를 굴려야 한다거나, 버그 리포트가 들어오는 족족 누군가 조사를 시작해줬으면 하는 상황이요. agent view나 git worktree로 세션을 여러 개 띄울 수는 있는데요. 문제는 그 세션을 지휘하는 사람이 여전히 나라는 겁니다. 어떤 세션에 뭘 시킬지 정하고, 세션마다 똑같은 배경 설명을 반복하고, 어느 게 끝났고 어느 게 내 대답을 기다리는지 탭을 돌아다니며 확인해야 하죠

Superlogical: Ghostty 개발자가 만드는 모든 작업을 위한 멀티플렉서

Superlogical: Ghostty 개발자가 만드는 모든 작업을 위한 멀티플렉서

tmux나 Zellij를 쓰다 보면 한 번쯤 아쉬운 순간이 옵니다. 노트북을 덮고 나왔는데 서버에서 돌려둔 작업이 어떻게 됐는지 폰으로 슬쩍 보고 싶을 때가 있죠. 동료에게 지금 내 터미널 화면을 그대로 보여주고 싶을 때도 있고요. 요즘 부쩍 늘어난 상황도 하나 있는데, 코딩 에이전트가 세션을 열 개씩 열어놓고 돌아가는 걸 지켜봐야 할 때입니다. 어느 쪽이든 결국 SSH로 다시 붙거나 화면을 캡처해서 보내는 우회로를 타게 됩니다. Superlogical은 이 지점을 정면으로 겨냥한 회사입니다. GPU 가속 터미널 Ghostty를 만

Cloudflare 봇 트래픽 제어 설정 총정리

Cloudflare 봇 트래픽 제어 설정 총정리

Cloudflare 대시보드의 Security 메뉴를 몇 달 만에 열어보면 꼭 뭔가가 바뀌어 있습니다. 이번에는 "Block AI Bots"가 있던 자리에 "Configure AI bot policies"가 생겼고 그 안의 Training 항목에는 못 보던 "Disallow"라는 선택지가 추가되어 있었습니다. 켜두었던 Managed robots.txt는 어느새 Bot Preference Sync라는 이름으로 바뀌어 있었고요. 😅 AI 크롤러 문제를 두고 이 블로그에서 여러 편을 썼는데요. robots.txt로 시작해 Pay Per

Aside: 내 계정으로 로그인해서 대신 일해주는 AI 브라우저

Aside: 내 계정으로 로그인해서 대신 일해주는 AI 브라우저

AI 에이전트에게 웹에서 뭔가를 시켜본 적이 있으신가요? browser-use나 Playwright MCP, Chrome DevTools MCP, Vercel의 agent-browser 같은 도구로 브라우저를 열어주거나 Claude in Chrome 같은 확장을 붙이면 검색하고 클릭하고 데이터를 뽑아오는 것까지는 곧잘 해냅니다. 그런데 정작 우리가 매일 하는 일은 대부분 로그인 뒤에 있습니다. 급여 시스템에서 급여 명세서를 내려받거나, 클라우드 콘솔에서 지난달 청구 내역을 확인하거나, 새로 쓸 서비스에 가입해 API 키를 발급받는

Meat Proxy가 되지 마세요

Meat Proxy가 되지 마세요

동료의 질문을 AI에 그대로 넣고 나온 답변을 복붙해서 답장하신 적이 있으신가요? 아니면 에이전트가 짜준 코드를 읽어 보지도 않고 PR 설명까지 써달라고 한 후 동료에게 코드 리뷰를 요청하신 적이 있으신가요? 반대로 동료에게 이런 답변이나 리뷰 요청을 받아본 적은요? 이렇게 AI가 뱉은 결과물을 읽지도, 이해하지도, 검증하지도 않고 그대로 타인에게 넘기는 사람을 요즘 Meat Proxy라고 많이 부릅니다. 🥩 굳이 한국어로 옮기자면 "살로 된 중계기" 정도가 될 것 같네요. AI 시대에 우리가 경계해야 할 행태를 뼈아프게 꼬집는

GitHub Agentic Workflows: 마크다운으로 쓰는 AI 저장소 자동화

GitHub Agentic Workflows: 마크다운으로 쓰는 AI 저장소 자동화

GitHub Actions로 저장소를 자동화하다 보면 어느 순간 벽에 부딪힙니다. 새 이슈가 열릴 때 알맞은 라벨을 붙여주고 싶은데, 그 규칙을 조건문으로 적으려니 답이 안 나오는 거죠. 제목에 "버그"가 들어가면 bug 라벨을 붙이자고 시작하지만, 정작 사용자가 올리는 이슈는 "로그인하면 화면이 하얘져요" 같은 문장이거든요. 😅 이런 일은 규칙이 아니라 판단이 필요한 작업입니다. 이슈를 읽고, 무슨 말인지 이해하고, 빠진 정보가 무엇인지 알아채야 하니까요. 사람이 하기엔 지루하고 기계가 하기엔 애매한, 딱 그 사이에 있는 일이죠

AI가 쓴 글에 남는 워터마크는 어떻게 동작할까요?

AI가 쓴 글에 남는 워터마크는 어떻게 동작할까요?

이 글은 사람이 쓴 걸까요, AI가 쓴 걸까요? 요즘 리뷰 하나, 과제 하나, 기사 하나를 두고도 이 질문이 따라붙는데요. 답을 내려주겠다는 탐지 서비스는 많지만 대부분 문체를 보고 짐작하는 수준이라, 억울하게 걸리는 사람과 유유히 빠져나가는 글이 함께 생깁니다. 😅 그래서 모델을 만드는 쪽이 아예 표시를 남기는 방향으로 움직이고 있습니다. Google은 Gemini가 쓴 글에 워터마크를 심어 왔고, Anthropic도 2026년 8월 14일 Claude에 같은 방식을 적용한다고 발표했습니다. 짐작이 아니라 확인을 하겠다는 이야기

클로드 코드 Artifacts: 세션 결과물을 링크 하나로 공유하기

클로드 코드 Artifacts: 세션 결과물을 링크 하나로 공유하기

터미널에서 클로드 코드로 장애 원인을 한참 파헤쳤는데, 결과를 팀에 공유하려니 막막했던 적 있으신가요? 표를 마크다운으로 옮기고 스크린샷을 찍어 슬랙에 긴 글을 올렸는데 정작 동료는 "그래서 어느 서비스가 문제라는 거야?"라고 되묻습니다 😅 터미널 텍스트는 만든 사람에게는 충분해도 받는 사람에게는 읽기 힘든 매체거든요. Anthropic이 2026년 6월 클로드 코드에 추가한 Artifacts는 이 간극을 메우는 기능입니다. 세션에서 만든 결과물을 claude.ai에 웹 페이지로 게시해 링크 하나로 공유하고 세션이 이어지는 동안

AI 크롤러를 막으면 돈이 될까?

AI 크롤러를 막으면 돈이 될까?

1년 전 Cloudflare가 꽤 과감한 일을 벌였습니다. 2025년 7월 1일을 "콘텐츠 독립기념일"이라 부르면서, 신규 도메인에서는 AI 크롤러를 기본으로 차단하도록 정책을 뒤집었거든요. 그동안 웹의 기본값은 "일단 열려 있음"이었는데, 그걸 "먼저 허락을 구하라"로 바꾼 겁니다. 여기에 크롤링 한 건마다 요금을 매기는 Pay Per Crawl까지 얹었습니다. 30년 가까이 예약석으로만 남아 있던 402 Payment Required 상태 코드를 꺼내 쓴 것도 이때였고요. 저처럼 개인 블로그를 운영하는 사람 입장에서 궁금한 건

AI 에이전트가 스스로 결제하는 웹: x402 프로토콜

AI 에이전트가 스스로 결제하는 웹: x402 프로토콜

AI 에이전트에게 일을 시키다가 이런 벽에 부딪혀 보신 적 있나요? 필요한 데이터를 가져오라고 시켰더니 "해당 API는 인증이 필요합니다"라며 멈춰 서는 상황 말이죠. 그 API를 쓰려면 사람인 제가 직접 회원가입을 하고, 신용카드를 등록하고, 요금제를 고르고, 발급받은 키를 환경 변수에 꽂아줘야 합니다. 에이전트가 자율적으로 일한다더니 결제 앞에서는 매번 저를 부르는 셈입니다. 😅 생각해보면 당연합니다. 웹의 결제는 처음부터 끝까지 사람을 전제로 설계됐거든요. 결제 양식을 채우고 약관에 동의하고 인증 문자를 받는 과정은 전부 사

C2PA: 이미지가 어디서 왔는지 서명으로 증명하기

C2PA: 이미지가 어디서 왔는지 서명으로 증명하기

LinkedIn을 넘기다가 이미지 모서리에 붙은 작은 Cr 배지를 보신 적 있으신가요? 눌러 보면 이 이미지를 어떤 도구로 언제 만들었는지, 생성형 AI가 관여했는지가 주르륵 나옵니다. 😮 궁금해서 뜯어봤더니 LinkedIn이 이미지를 분석해 알아낸 게 아니었습니다. 이미지 파일 안에 그 기록이 서명된 채로 들어 있고, LinkedIn은 그걸 읽어서 보여줄 뿐이었는데요. 그 기록의 표준이 C2PA(Coalition for Content Provenance and Authenticity)입니다. 생각해 보면 필요한 물건입니다. 사진

Web Bot Auth: IP 대신 서명으로 봇의 신원을 증명하기

Web Bot Auth: IP 대신 서명으로 봇의 신원을 증명하기

서버 로그에 GPTBot이 찍혀 있다고 해봅시다. 이게 정말 OpenAI가 보낸 요청일까요? 🤔 User-Agent 헤더는 그냥 문자열입니다. curl -A "GPTBot" 한 줄이면 누구나 GPTBot 행세를 할 수 있죠. 그래서 지금까지는 IP 주소로 한 번 더 확인했습니다. 봇 운영자가 자기 IP 대역을 공개하면 사이트는 요청이 그 대역에서 왔는지 대조하는 방식이었는데요. 그런데 이 방식이 요즘 급격히 무너지고 있습니다. AI 에이전트가 사용자를 대신해 웹을 돌아다니기 시작하면서부터입니다. 이런 에이전트는 서버리스 환경이나

Discord