CDECLOG

✔ Write down what comes to mind :: Bright size life

Async/Await의 본질: 우리는 왜 '기다림'을 '멈춤'으로 착각하는가?

Async/Await의 본질: 우리는 왜 ‘기다림’을 ‘멈춤’으로 착각하는가? 많은 개발자가 await를 보면 “코드가 여기서 멈춘다"라고 직관적으로 이해합니다. 하지만 이는 논리적 흐름의 멈춤일 뿐, 물리적인 스레드가 멈추는 블로킹은 아닙니다. async/await는 동기 코드처럼 보이게 만들면서, 실제로는 실행 흐름을 나눠 코루틴처럼 동작합니다. 이 글은 JavaScript, Python, C#을 비교해 async/await가 어떻게 “동기처럼 보이는 비동기"를 만드는지 설명합니다. 1. 가장 큰 오해: 멈춤이 아니라 양보 await는 실행 흐름을 잠시 중단시키지만, 스레드 전체를 멈추지는 않습니다. 핵심은 다음입니다. await는 현재 함수의 실행 컨텍스트를 일시 중단한다. 제어권은 즉시 호출자나 이벤트 루프로 돌아간다. 작업이 끝나면 중단 지점부터 다시 이어서 실행된다. 비유로 말하면, 식당에서 진동벨을 받고 자리에 앉는 것과 같습니다. 나는 기다리지만, 카운터 앞을 막고 서 있지는 않습니다. ...

February 6, 2026 · Byung Kyu KIM

Lazygit 가이드: 설치부터 패널별 치트시트

Git은 강력하지만 명령어 입력 방식은 때로 직관성이 떨어집니다. 특히 수많은 파일을 개별적으로 스테이징하거나 복잡한 인터랙티브 리베이스를 수행할 때 터미널 UI(TUI) 도구의 진가가 드러납니다. 그중에서도 가장 완성도 높은 도구인 Lazygit을 파헤쳐 봅니다. 1. Lazygit 설치 (Installation) 환경에 맞는 패키지 매니저를 사용하여 간단히 설치할 수 있습니다. macOS brew install lazygit Windows # Scoop 사용 시 scoop bucket add extras scoop install lazygit # Winget 사용 시 winget install jesseduffield.lazygit Linux (Ubuntu/Debian 등) # 바이너리 직접 설치 예시 LAZYGIT_VERSION=$(curl -s "https://api.github.com/repos/jesseduffield/lazygit/releases/latest" | grep -Po '"tag_name": "v\K[^"]*') curl -Lo lazygit.tar.gz "https://github.com/jesseduffield/lazygit/releases/latest/download/lazygit_${LAZYGIT_VERSION}_Linux_x86_64.tar.gz" tar xf lazygit.tar.gz lazygit sudo install lazygit /usr/local/bin 2. TUI 구성 및 레이아웃 (Layout) Lazygit는 한 화면에서 Git의 모든 상태를 조망할 수 있는 대시보드형 레이아웃을 가지고 있습니다. ...

February 4, 2026 · Byung Kyu KIM

[AI 엔지니어링] 에이전트의 'Skills' 환상과 56%의 실패율: 왜 우리는 다시 시스템 프롬프트로 돌아가는가?

최근 AI 개발자 커뮤니티, 특히 Vercel AI SDK와 Cursor 사용자들 사이에서 매우 흥미로운 화두가 던져졌습니다. Vercel의 소프트웨어 엔지니어 Jude Gao가 발표한 **"AGENTS.md outperforms skills in our agent evals"**라는 벤치마크 결과입니다. 많은 개발자가 프로젝트를 진행하며 직감적으로 느끼던 현상—“도구(Skills)를 쥐여주는 것보다, 그냥 문서를 통째로 읽게 시키는 게 훨씬 낫다”—가 실제 데이터로 증명되었습니다. 오늘은 이 벤치마크 데이터와 이를 둘러싼 ‘Skills vs Context vs Subagents’ 아키텍처의 변화를 심도 있게 분석해 봅니다. 1. 충격적인 데이터: 56%의 무시율 (Ignore Rate) 우리는 흔히 “LLM에게 도구(Tool/Skill/Function Calling)를 주면, 필요할 때마다 똑똑하게 꺼내 쓸 것"이라고 기대합니다. 하지만 Next.js 16 API(당시 미학습 데이터)를 대상으로 한 벤치마크 결과는 이 믿음을 배신했습니다. ...

January 30, 2026 · Byung Kyu KIM

macOS 시스템 최적화의 종결자: Mole 유틸리티와 Agent Skills 활용기

서론 유료 앱들의 핵심 기능을 단 하나의 바이너리로 통합한 강력한 오픈소스 CLI 도구, Mole을 소개. 특히 최근 유행하는 AI Agent와 연계하여 시스템 관리를 자동화하는 방법까지 함께 살펴보겠습니다. 1. Mole 유틸리티란? Mole(tw93/Mole)은 tw93이 개발한 macOS용 올인원 시스템 유틸리티다. Go 언어와 셸 스크립트로 작성되어 매우 가볍고 빠르며, 터미널 환경에서 모든 시스템 최적화 작업을 통합 관리할 수 있다. 주요 특징 All-in-One: 청소, 앱 삭제, 최적화, 분석, 실시간 모니터링 기능을 단일 바이너리로 통합. 오픈소스: MIT 라이선스 기반의 무료 도구로, 상업용 앱의 광고나 구독 모델 없이 모든 기능 제공. 초경량: CLI 기반으로 동작하여 시스템 리소스 점유율이 매우 낮음. 2. 설치 방법 Homebrew를 통해 간단히 설치 가능하다. ...

January 29, 2026 · Byung Kyu KIM

OpenClaw (구 Clawdbot): 로컬 중심의 개인용 AI 런타임 심층 분석

공지: Clawdbot은 OpenClaw로 리브랜딩되었습니다. 이 문서는 기존 Clawdbot의 개념과 함께 새로운 OpenClaw의 관점에서 내용을 보강하고 있습니다. **OpenClaw (구 Clawdbot)**은 본격적으로 로컬에서 실행되는 AI 런타임이다. 클라우드 기반 서비스와 달리, 사용자의 컴퓨터(Mac/Linux)에서 백그라운드 데몬으로 동작하며 로컬 데이터만을 활용한다. 사용자에게는 터미널, 파일시스템, 브라우저 컨트롤 같은 OS 리소스가 직관적으로 노출된다. 1. OpenClaw (구 Clawdbot)란? OpenClaw은 Node.js 기반으로 구현된 로컬 AI 런타임이다. 클라우드에 의존하지 않고, 사용자의 개인 환경에서 실행되므로 데이터 유출 위험이 최소화된다. 주요 특징은 다음과 같다. ...

January 29, 2026 · Byung Kyu KIM

Gemini CLI와 Antigravity에서 antigravity-awesome-skills로 Agent Skills 강화하기

서론 AI 에이전트의 능력을 한 단계 더 끌어올릴 수 있는 “Agent Skills"를 활용 이 글에서는 antigravity-awesome-skills라는 훌륭한 오픈소스 스킬셋을 Gemini CLI 및 Antigravity 환경에 설치하고, 적용하며, 테스트하는 방법과 유용한 스킬 예제 13가지를 소개합니다. 1. Antigravity Awesome Skills란 무엇인가? “Agent Skills"는 AI 에이전트에게 특정 작업을 수행하는 방법을 알려주는 작은 마크다운 파일 형식의 지침서입니다. 예를 들어, “API 문서를 작성해줘"라는 막연한 요청 대신, @api-documentation 스킬을 사용하여 정형화되고 일관된 형식의 문서를 생성하도록 지시할 수 있습니다. ...

January 25, 2026 · Byung Kyu KIM

Agent Skill 가이드: AI 에이전트의 전문성을 위한 모듈식 아키텍처

Claude Code나 Gemini CLI를 사용해본 개발자라면 이런 경험을 했을 겁니다: 특정 도메인의 작업을 할 때 에이전트가 너무 일반적으로만 접근한다는 것입니다. 이것이 바로 Agent Skill이 필요한 이유입니다. 1. Agent Skill이란? Agent Skill은 특정 도메인의 전문 지식을 패키징한 재사용 가능한 모듈입니다. 2025년 Anthropic이 정식으로 도입한 이 기술은 에이전트에게 단순한 명령이 아닌 진정한 전문성을 제공합니다. 더 정확히는: 구조: SKILL.md 파일과 지침, 스크립트, 참고 자료를 포함하는 폴더 작동: 에이전트가 관련성을 감지하면 자동으로 해당 Skill을 활성화하여 그 분야의 전문가처럼 행동 핵심 원리: 필요한 정보만 필요한 시점에 로드하는 Progressive Disclosure 일반 LLM은 비결정성 특성으로 같은 작업을 반복해도 결과가 달라질 수 있습니다. Agent Skill은 구조화된 절차와 리소스를 제공하여 이를 개선합니다. ...

January 20, 2026 · Byung Kyu KIM

OpenCode: AI 코딩 에이전트 가이드

OpenCode는 터미널 기반의 오픈소스 AI 코딩 에이전트로, 개발 생산성 향상을 목표로 합니다. LSP(Language Server Pro OpenCode 핵심 기능 LSP (Language Server Protocol) LSP 서버란? LSP 자동 로드 OpenCode는 프로젝트를 열 때 .lsproj 파일이나 언어별 설정 파일을 자동으로 스캔하여 해당 프로젝트에 적합한 LSP 서버를 감지하고 설치 및 실행합니다. 예를 들어, TypeScript 프로젝트에서는 자동으로 TypeScript Language Server를 활성화합니다. 이 기능 덕분에 개발자는 별도의 수동 설정 없이 즉시 언어 서비스를 활용할 수 있으며, 에이전트는 LSP 서버와 통신하며 코드 분석, 편집, 리팩토링 등을 지원합니다. ...

January 12, 2026 · Byung Kyu KIM

Git Worktree: 하나의 저장소, 여러 작업 공간

Git Worktree란 무엇이며 왜 필요한가? Stash와의 차이점부터 주요 명령어까지, 효율적인 브랜치 관리 개요 개발을 하다 보면 현재 작업 중인 브랜치에서 아직 커밋하지 못한 변경 사항이 있는데, 긴급하게 다른 브랜치(예: 배포를 위한 핫픽스)로 전환해야 하는 상황을 자주 마주하게 됩니다. 보통은 git stash를 사용하거나 아직 완료되지 않은 코드를 임시 커밋(WIP)하고 브랜치를 전환하지만, 이러한 방식은 번거롭고 컨텍스트 전환에 비용이 듭니다. Git Worktree는 이런 문제를 우아하게 해결해주는 Git의 강력한 기능입니다. 이 글에서는 Git Worktree의 개념과 필요성, 그리고 git stash와의 차이점과 사용법에 대해 알아봅니다. ...

January 7, 2026 · Byung Kyu KIM

tmux 시작하기: 기본 개념, 필수 명령어

tmux는 터미널 멀티플렉서로, 하나의 터미널 창에서 여러 세션, 윈도우, 패널을 관리하여 생산성을 극대화하는 강력한 도구입니다. 이 글에서는 tmux의 기본 개념, 설치 방법, 주요 용어 및 필수 명령어에 대해 알아봅니다. 개요 tmux는 ‘Terminal Multiplexer’의 약자로, 하나의 터미널 창(또는 원격 접속 세션) 내에서 여러 개의 독립적인 터미널 세션을 생성하고 관리할 수 있게 해주는 도구입니다. tmux를 사용하면 터미널 세션을 영구적으로 유지할 수 있어, 네트워크 연결이 끊어지더라도 실행 중이던 작업을 안전하게 보존하고 나중에 다시 접속하여 이어갈 수 있습니다. ...

January 7, 2026 · Byung Kyu KIM