📋 정보

← 홈
자주 헷갈리는 것들 모음. 개념 정리, 차이 비교, 짧은 팁.
에이전트 / 회색지대 자동화
BrowserMCP — 본인 Chrome 에 붙어 회색지대 사이트 자동화

공식 API 가 막히거나 토큰·rate limit 으로 자주 끊기는 회색지대 사이트(네이버·인스타·당근·부동산 등) 를 사람처럼 클릭해 자동화하기 위한 MCP 서버. 본인이 평소 켜둔 Chrome 창에 붙어서 그 탭의 DOM 을 읽고 명령을 흘려넣는다. 본인 로그인 세션·쿠키·브라우저 핑거프린트를 그대로 들고 가서, 깨끗한 chromium 으로 띄우는 Playwright 보다 Cloudflare·네이버 봇 탐지를 훨씬 잘 통과한다.

방식 비용·속도 봇 탐지
Computer Use (시각) 스크린샷 + LLM 1만 토큰/클릭, 5~15초 강함 (사람처럼 보임)
Playwright clean chromium 무료·빠름 약함 (Cloudflare 차단)
BrowserMCP / Playwright persistent 무료·빠름 강함 (본인 세션 그대로)
실전 팁: 본진 맥은 이미 Playwright MCP + persistent context 로 같은 효과를 운영 중 — 네이버 블로그 자동 발행, 유튜브 스튜디오 업로드, Play Console "앱 만들기" 폼, ASC 심사 클릭이 전부 이 방식으로 돈다. BrowserMCP 의 차이는 attach 지점 — 평소 쓰는 Chrome 창에 직접 끼어드는 쪽이라 인터랙티브 디버깅("이 탭 한 번 봐봐") 에 살짝 편하고, Playwright persistent 는 별도 프로필 창이라 자동화 본진과 형님 평상시 브라우저가 깔끔하게 분리된다. 본질은 동일, 새로 깔 필요는 아직 X.
2026-05-24
에이전트 / 신기술 catch-up
acpx — 에이전트끼리 대화하는 표준 프로토콜의 CLI

Agent Client Protocol (ACP) 의 헤드리스 CLI 클라이언트. 한 AI 에이전트나 오케스트레이터가 다른 코딩 에이전트(Claude Code, Codex, Pi, Gemini 등) 와 PTY 스크래핑 대신 구조화된 프로토콜로 대화하게 해준다. npm install -g acpx, Node 22+. github.com/openclaw/acpx (alpha).

방식 통신 한계
PTY 스크래핑 터미널 출력 글자 긁기 포맷 바뀌면 깨짐, 세션 상태 추적 어려움
ACP (acpx) JSON 메시지 + 세션 ID 아직 alpha, 지원 에이전트 한정
실전 팁: "우회"라는 표현이 붙는 건 두 갈래 — (a) Cursor / Antigravity / Zed 같은 에디터에서 자기네 API 빌링 대신 Claude Pro · ChatGPT Plus 구독을 CLI(Claude Code / Codex) 경유로 끌어쓰는 트릭, (b) 멀티 에이전트 mesh 를 ACP 표준으로 묶는 용도. 본진 5노드 mesh + tmux METHOD A 운반체로 같은 일이 이미 돌고 있어서 형님 입장에선 catch-up 정도면 충분.
2026-05-24
영어 / 자연어
prefix / suffix — 앞·뒤에 붙는 것
용어 위치 예시
prefix 텔레그램 답신 첫 줄의 🏭 이모지, "pre-" 접두사
suffix 파일명 .md, .yaml 같은 확장자, "-ing" 접미사
실전 팁: 챗봇 답신 첫 줄에 🏭 같은 기기 이모지를 박는 게 기기 prefix. CLAUDE.md 도 같은 단어 씀. 잘못 박힌 prefix 한 글자가 어느 기기에서 답하는지 잘못 알려주는 사고로 이어진다 (2026-05-14 / 2026-05-18 이슈).
2026-05-18
영어 / 의사결정
priori — 미리 정해진 디폴트
상태 단서 LLM 행동
단서 있음 env / hostname / 봇 username 단서대로 정확히 식별
단서 없음 0개 학습된 priori 로 디폴트 (보통 가장 흔한 케이스)
실전 팁: 챗봇이 자기 정체성도 priori 로 결정함. CLAUDE.md 매핑 표 첫 행이 🍎 Mac 본진이라 LLM 가 단서 없으면 자동으로 본진 행세. 그래서 forcing function 으로 단서를 첫 turn 에 강제 surface 해야 함. "선험적 / 사전적" 으로도 번역.
2026-05-18
자동화 / 안전
forcing function — 강제로 작동하게 만드는 장치

사람 의지·기억에만 의존하면 잊거나 미루기 마련이라, 코드·훅·룰 레벨에서 자동으로 작동하게 박아두는 장치. 이슈 포스트모템 "예방" 섹션이 사실상 forcing function 모음.

종류 예시 강도
메모리 "다음부턴 X 하지 말기" 메모리 약함 — LLM 가 잊을 수 있음
룰 문서 CLAUDE.md "첫 줄에 이모지 prefix" 중간 — 본인 의지에 의존
Stop hook 이 reply 0회면 차단 강함 — 시스템이 막음
자동화 cron launchd 가 매일 03:00 자동 실행 가장 강함 — 사람 손 0
실전 팁: 이슈 재발은 거의 항상 forcing function 강도 부족이 원인. 2026-05-14 → 5-18 이모지 prefix 재발도 (a) env 명시만 박고 (b) SessionStart 훅이라는 더 센 forcing function 은 안 박았기 때문.
2026-05-18
데이터 / 동기화
SoT vs mirror — Source of Truth 와 그 사본
항목 SoT mirror
정의 원본, 단일 진실의 출처 SoT 를 복제한 사본
권위 충돌 시 이쪽 우선 충돌 시 양보
예시 ~/claude-skills/issues/ ~/daejong-page/issues/
수정 권한 직접 수정 OK 자동/스크립트 동기화로만
실전 팁: SoT 만 수정하고 mirror 는 동기화 스크립트로 자동 갱신해야 drift 0. mirror 를 사람이 손대면 양쪽 어긋남 (SoT vs mirror drift) → 다음 sync 때 어느 쪽이 맞는지 분기 필요. 마스킹(민감정보 가림) 같은 mirror 변형이 있으면 그 룰을 명시.
2026-05-18
Anthropic / 비용 모델
headless / interactive / SDK / API billing — Claude 호출 4가지 방식
모드 호출 예시 billing
interactive 챗봇 텔레그램·터미널 CLI 챗봇 정액 (Claude Pro/Max)
headless claude -p "프롬프트" 한 방 정액 (CLI 안에 묶임)
Agent SDK 코드에서 sdk.Claude(...).run() 별도 종량 (API 토큰당 과금)
직접 API curl api.anthropic.com/... 종량 (가장 비쌈)
실전 팁: 인터랙티브 챗봇이 가장 싸고 안전. Python 으로 직접 API 부르면 우회되는 것 같지만 종량제 billing 으로 더 비싸짐. tmux paste 패턴 = 챗봇이 받은 메시지를 다른 챗봇 tmux 세션에 paste 해서 5노드 fan-out 하는 것 → API 호출 0, 정액 안에서 처리.
2026-05-18
git / 자주 헷갈리는 것
stash / rebase / cherry-pick — git 3대 자주 헷갈리는 명령
명령 하는 일 언제 씀
git stash 현재 변경을 임시 보관소에 넣고 작업 디렉터리 비움 다른 브랜치 잠깐 갔다 와야 할 때
git rebase 내 커밋들을 다른 베이스 위로 옮겨 다시 쌓기 브랜치 시작점이 낡았을 때
git cherry-pick 다른 브랜치의 특정 커밋 하나만 가져와 붙이기 한 커밋만 골라 가져올 때
실전 팁: stash 는 "임시 주머니", rebase 는 "기차 차량을 다른 선로로 옮기기", cherry-pick 은 "체리 한 알만 따오기" 비유. rebase 는 commit hash 가 바뀌므로 이미 push 한 브랜치엔 위험 (force push 필요).
2026-05-18
분산 / 자동화
fan-out — 한 명령을 여러 곳에 동시 발사

명령 1 개를 여러 워커(기기·프로세스·에이전트)에게 한 번에 뿌리는 패턴. 5노드 (🍎/🪟/🏭/🖥/💻) 에 같은 directive 를 동시 전달하는 게 대표 예.

패턴 동작 걸리는 시간
순차 (serial) 1 → 2 → 3 → 4 → 5 5배
fan-out (병렬) 1 동시에 5곳 발사 1배
실전 팁: 본진이 directive 1 통 만들고 mac-mini-directive.sh / wsl-directive.sh / desktop3060ti-directive.sh 동시 호출하면 fan-out. 결과는 mac-report.sh 로 다시 본진 1 곳에 모아옴 — 이건 반대 방향이라 fan-in.
2026-05-18
시스템 / 안전 디자인
idempotent — 여러 번 실행해도 결과 같은

같은 명령을 1번 실행하든 100번 실행하든 시스템 상태가 같은 성질. 자동화 스크립트가 idempotent 하지 않으면 cron 이 두 번 fire 됐을 때 사고로 이어짐.

동작 idempotent? 이유
mkdir -p ~/foo O 디렉터리 이미 있어도 같음
echo X >> ~/log X 실행 횟수만큼 누적됨
git pull --rebase 대체로 O 이미 최신이면 no-op
gh pr create X 중복 생성 시도하면 에러
실전 팁: 자동화 스크립트는 가능한 idempotent 하게 짤 것. PR·배포·메일 발사 같이 본질적으로 non-idempotent 한 동작은 별도 "이미 했는지 확인" 한 줄 (preflight check) 을 앞에 박아두면 안전.
2026-05-18
GitHub Pages / Cloudflare Pages
GH Pages vs CF Pages — custom domain SSL 발급 차이
항목 GH Pages CF Pages
Git auto-deploy main push → 자동 빌드+배포 Git Provider 연결 여부 선택 (No 시 wrangler 명시 호출)
Custom cert Let's Encrypt 자동 (가끔 stuck) Cloudflare 자체 cert (즉시 발급)
발급 진단 gh api repos/<o>/<r>/pages/health wrangler pages project list
HTTPS 강제 cert 발급 후 https_enforced=true 기본 활성
실전 팁: GH Pages cert provisioning 이 멈췄을 때 (서버가 *.github.io wildcard cert 만 서빙) — CNAME 을 잠시 비웠다 다시 박는 토글 트릭으로 재트리거. gh api -X PUT repos/<o>/<r>/pages -F 'cname=' → sleep 8s → -F 'cname=<domain>'. 30초 안에 authorization_pendingapproved 전환.
2026-05-17
launchd / macOS
launchd 에서 tmux 호출 — socket path 명시 필수
항목 인터랙티브 셸 launchd plist
TMUX env var 셸 환경에서 상속 inherit 안 됨
tmux 단독 호출 기존 세션 attach OK 새 서버 spawn, 기존 세션 못 봄
해결 자동 tmux -S /private/tmp/tmux-501/default 처럼 socket 명시
실전 팁: bash array TX=( tmux -S /private/tmp/tmux-501/default ) 정의 후 "${TX[@]}" 로 호출하면 plist ProgramArguments / 셸 스크립트 양쪽에서 동일하게 작동. UID 가 501 이 아니면 /private/tmp/tmux-$(id -u)/default 식으로 동적 결정.
2026-05-17
Gmail / 도구 선택
gog CLI vs Gmail MCP create_draft — 메일 발사 도구
항목 Gmail MCP create_draft gog CLI send
발사 초안만 (수동 send 별도) 즉시 발송
호출 MCP 도구 (Claude 안) gog send --to ... --subject ... --body ... 한 줄
SMTP credential 불필요 (OAuth) 불필요 (OAuth)
적합 초안 검토 후 사람이 클릭 발송 자동 메일 zero-touch 발사
실전 팁: 자동화 사이클 안에서 메일 한 통 발사가 목적이라면 gog 가 우월. Gmail MCP create_draft 는 Claude 가 draft 만 만들고 강대종이 Gmail UI 들어가 send 버튼 눌러야 해서 사람 손 1번 들어감 — zero-touch 안 됨. 반대로 "발송 전 본인 확인 필수" 케이스면 create_draft 가 안전.
2026-05-17
Claude Code / 세션
/loop fixed-interval vs dynamic — 두 모드의 차이
항목 fixed-interval dynamic
호출 /loop 5m /foo /loop /foo (interval 생략)
메커니즘 CronCreate (cron 표현식) ScheduleWakeup (매 turn 자체 픽)
자동 cap 7일 없음 (모델이 끊을 때까지)
끄는 법 CronDelete / 세션 종료 "loop stop" → 모델이 wakeup 생략
적합 케이스 고정 주기 폴링 (5분~수시간) 모델이 페이스 조정 (지능형 loop)
실전 팁: dynamic 모드는 모델이 다음 iter 를 자체 픽해서 즉시 진행. iter 사이 후보를 surface 하고 ack 받는 건 dynamic 의 의도 위반 — 매 iter ack 요구하면 그냥 수동 chain 이 됨.
2026-05-13
Claude Code / 세션
/loop dynamic 의 delaySeconds — 5분 prompt cache TTL 분기점
구간 비용 특성 적합
60s ~ 270s cache hit 유지 활성 폴링 (빌드 끝났나, PR 코멘트 왔나)
300s ~ 1000s ❌ worst-of-both 금지 — cache miss + 잦은 fire 둘 다 페이
1200s ~ 3600s miss 1회를 길게 amortize idle 사이클·휴리스틱 점검
실전 팁: Anthropic prompt cache TTL 이 5분(300s) 이라 그 근처 구간이 최악. dynamic 진입 시 즉시 fallback delay 결정 — 활성 폴링이면 250s, 아니면 1500s. ScheduleWakeup 의 reason 필드에 "cache TTL 안" 또는 "miss 1회 amortize" 명시하면 다음 self-review 때 검증 가능.
2026-05-13
Shell / macOS
.zprofile vs .zshrc — 뭐가 다른가
파일 언제 실행 주로 쓰는 것
.zprofile 로그인 셸 시작 시 (터미널 앱 새 창) PATH, 환경변수
.zshrc 인터랙티브 셸마다 (탭 새로 열 때마다) alias, 함수, 프롬프트
실전 팁: Ghostty·iTerm2 같은 터미널이 로그인 셸로 시작하면 .zprofile만 읽고 .zshrc를 안 읽음. alias가 없으면 .zprofile[[ -f ~/.zshrc ]] && source ~/.zshrc 한 줄 추가.
2026-05-08