[{"data":1,"prerenderedAt":273},["ShallowReactive",2],{"\u002Fblog\u002Fmodel-harness-decoupling\u002F:ko":3,"\u002Fblog\u002Fmodel-harness-decoupling\u002F-surround:ko":169,"blog-all-posts:ko":170},{"id":4,"title":5,"author":6,"body":10,"date":151,"description":152,"extension":153,"image":154,"locale":155,"meta":156,"minRead":157,"navigation":158,"original":159,"path":160,"pinned":159,"seo":161,"source":162,"sourceUrl":23,"stem":163,"tags":164,"updated":154,"__hash__":168},"blog\u002Fblog\u002Fmodel-harness-decoupling.ko.md","순정 Harness가 곧 버전 정답은 아니다: 오픈 모델 시대에는 모델과 Harness를 따로 골라라",{"name":7,"avatar":8},"Chen Dahuang",{"src":9,"alt":7},"\u002Favatar.jpg",{"type":11,"value":12,"toc":142},"minimark",[13,28,31,34,39,42,45,49,52,55,71,74,78,81,84,92,96,99,105,111,117,123,129,133,136],[14,15,16],"blockquote",{},[17,18,19,20,27],"p",{},"핵심 주장은 먼저 ",[21,22,26],"a",{"href":23,"rel":24},"https:\u002F\u002Fx.com\u002Frealchendahuang\u002Fstatus\u002F2093890559874388141",[25],"nofollow","X","에 게시했다. 이 글은 완전판 논의에 다섯 가지 Harness의 포지셔닝 맵을 덧붙인 것이다.",[17,29,30],{},"Coding Agent를 고를 때 많은 사람의 첫 반응은 아주 자연스럽다: Claude 쓰면 Claude Code, GPT 쓰면 Codex, GLM 쓰면 ZCode, DeepSeek 쓰면 당연히 DeepSeek 순정 Harness부터 고려한다.",[17,32,33],{},"이 사고방식은 사실 전적으로 합리적이다. 순정의 최대 강점은 자기 모델을 가장 잘 안다는 것이다.",[35,36,38],"h2",{"id":37},"순정의-강점은-진짜다","순정의 강점은 진짜다",[17,40,41],{},"모델이 어떤 Prompt를 좋아하는지, Tool Schema를 어떻게 설계해야 가장 안정적인지, 긴 Context를 어떻게 구성할지, 새 버전에 어떤 능력이 추가됐는지, 어디서 가장 쉽게 넘어지는지 — 순정은 보통 서드파티보다 먼저 안다.",[17,43,44],{},"그래서 Claude Code나 Codex처럼 모델과 Harness가 오래 함께 발전해 온 제품은, 순정 조합이 흔히 가장 강한 버전 정답이 된다. 이 점은 반박하지 않는다.",[35,46,48],{"id":47},"하지만-모델-학습과-harness-개발은-완전히-다른-공학이다","하지만 모델 학습과 Harness 개발은 완전히 다른 공학이다",[17,50,51],{},"DeepSeek, GLM 같은 오픈 모델로 오면 이야기가 재미있어지기 시작한다. 좋은 모델을 만드는 일과 좋은 Harness를 만드는 일은 사실 완전히 다른 공학이기 때문이다.",[17,53,54],{},"Coding Agent가 실제로 돌아가기 시작하면, 모델 밖의 문제가 잔뜩 나타난다:",[56,57,58,62,65,68],"ul",{},[59,60,61],"li",{},"파일을 어떻게 읽고, 코드를 어떻게 고칠 것인가",[59,63,64],{},"Agent Loop를 어떻게 제어하고, Context를 어떻게 압축할 것인가",[59,66,67],{},"Cache를 어떻게 활용하고, Tool Call이 실패한 뒤 어떻게 복구할 것인가",[59,69,70],{},"Subagent를 어떻게 스케줄링하고, 권한을 어떻게 관리할 것인가",[17,72,73],{},"이 부분들의 완성도가 같은 모델의 최종 사용감을 직접 좌우한다. 같은 모델도 Harness를 바꾸면 천지차이가 될 수 있다.",[35,75,77],{"id":76},"더-큰-문제-모델-갱신-속도가-너무-빠르다","더 큰 문제: 모델 갱신 속도가 너무 빠르다",[17,79,80],{},"오늘은 GLM이 강하고, 다음 달엔 DeepSeek이 더 강한 Flash를 또 내놓을지 모르고, 그 뒤로 또 새 모델이 따라잡는다.",[17,82,83],{},"Coding 워크플로 전체가 한 회사의 순정 제품에 묶여 있으면, 모델을 바꿀 때 도구와 습관까지 갈아엎어야 하는 경우가 많다. 몇 달에 걸쳐 길러낸 설정, 기억, 워크플로가 전부 무너진다.",[17,85,86,87,91],{},"서드파티 Harness의 가치가 바로 여기 있다: ",[88,89,90],"strong",{},"자기가 익숙한 도구, Skills, MCP, 권한, 워크플로는 고정해 두고, 아래의 모델만 교체할 수 있다."," 오늘은 DeepSeek, 내일은 GLM, 모레는 다른 모델 — 작업 환경은 처음부터 다시 만들 필요가 없다.",[35,93,95],{"id":94},"다섯-가지-harness-포지셔닝-맵","다섯 가지 Harness 포지셔닝 맵",[17,97,98],{},"주요 다섯 곳의 포지셔닝을 정리한다(2026년 8월 말 기준 내 사용 경험):",[17,100,101,104],{},[88,102,103],{},"Pi",": 철학이 극도로 미니멀하다. Harness가 모델에 최대한 개입하지 않는다. 가볍고, 빠르고, Token 소모가 적고, 가소성이 극히 높다. 자기만의 장기 Agent 기반으로 삼기에 알맞다. 단순하고, 깔끔하고, 마음대로 개조할 수 있다.",[17,106,107,110],{},[88,108,109],{},"OMP",": Pi 위에 LSP, Debugger, Browser, AST 같은 무거운 Coding 능력을 계속 쌓는다. Agent에 IDE 한 벌을 통째로 장착시키는 셈이다. 진짜 헤비하게 코딩하고, 복잡한 Repo 탐색이 필요한 상황에 알맞다.",[17,112,113,116],{},[88,114,115],{},"DeepSeek Harness",": 가장 멀리 갔다. Everything is Plugin — Agent Loop, 도구, 권한, Preset, UI를 모두 분해해 재조립할 수 있다. Agent 아키텍처, Preset, 멀티 Agent, 차세대 Runtime를 만지작거리고 싶은 사람에게 알맞다. PTC 모드를 더 써보라. 더 빠르고 token도 아낀다.",[17,118,119,122],{},[88,120,121],{},"OpenCode",": 현재 가장 균형 잡힌 부류. 오픈소스이고, Provider가 많고, 생태계가 크고, Client\u002FServer, 데스크톱, Subagent가 모두 성숙했다. 성숙한 범용 멀티모델 Coding Agent를 통째로 원하는 사람에게 알맞다.",[17,124,125,128],{},[88,126,127],{},"Command Code",": 노선이 완전히 다르다 — 모델의 빈틈을 대신 메워주는 걸 특히 좋아한다. Tool Call 인자를 잘못 쓰면 로컬에서 고쳐주고, 중복 파일 읽기는 중복을 걸러주고, 긴 Session에서는 Stable Prefix를 유지해 Cache Hit를 높이고, Context가 터질 위기면 Compaction을 한다. 이 사고방식을 DeepSeek V4 Flash, GLM-5.3 Flash 같은 노동력 모델에 얹으면 가치가 최대가 된다: 모델이 조금 부족해도 Harness가 메워준다.",[35,130,132],{"id":131},"나의-선택-기준","나의 선택 기준",[17,134,135],{},"장기 가소성만 보면 나는 여전히 Pi를 선호한다. 하지만 오늘 당장 DeepSeek V4 Flash나 GLM-5.3으로 빡세게 일시켜야 한다면 Command Code의 맛을 제대로 보겠다 — 모델과 Harness의 조합은 과제별로 맞추는 것이지, 진영별로 서는 것이 아니다.",[17,137,138,139],{},"오픈 모델 시대에 이르러 모델과 Harness는 이제 완전히 따로 고를 수 있다. ",[88,140,141],{},"\"어느 회사 모델에는 어느 회사 도구\"라는 질문은 그만두고, \"이 모델을 어느 Harness에 넣어야 가장 잘 일하는가\"를 물어라.",{"title":143,"searchDepth":144,"depth":144,"links":145},"",2,[146,147,148,149,150],{"id":37,"depth":144,"text":38},{"id":47,"depth":144,"text":48},{"id":76,"depth":144,"text":77},{"id":94,"depth":144,"text":95},{"id":131,"depth":144,"text":132},"2026-09-09","Claude 쓰면 Claude Code? 오픈 모델 시대에는 이 직관을 업그레이드할 때다. 순정의 강점은 진짜지만, 좋은 모델을 만드는 일과 좋은 Harness를 만드는 일은 별개의 공학이다 — 이 글은 모델과 Harness를 분리해서 선택할 수 있게 된 이유와 다섯 가지 Harness의 포지셔닝 맵을 정리한다.","md",null,"ko",{},8,true,false,"\u002Fblog\u002Fmodel-harness-decoupling",{"title":5,"description":152},"x","blog\u002Fmodel-harness-decoupling.ko",[165,166,167],"AI Agent","Harness","도구 선택","NUu6jWGKeThUrsJTy2q59u0Kuuo0VUCcjL2VuOKk2n0",[154,154],[171,178,187,196,203,210,212,219,227,233,240,249,256,264],{"path":172,"title":173,"description":174,"date":175,"minRead":176,"tags":177},"\u002Fblog\u002Fagent-harness-selection","Pi Agent, OMP, Codex, ZCode를 이리저리 만져본 끝에, 내가 마지막으로 OpenCode + OpenChamber를 고른 이유","Agent Harness 선택 회고: GUI 경험, 벤더 종속, 2차 개발 자유도라는 세 가지 기준으로 Pi Agent, OMP, Codex, ZCode를 탈락시키고, 마지막으로 OpenCode 코어 + OpenChamber 인터페이스를 선택했다.","2026-08-06",6,[165,167],{"path":179,"title":180,"description":181,"date":182,"minRead":176,"tags":183},"\u002Fblog\u002Fcloudflare-broke-stack","2026 인디 개발 베스트 프랙티스: Cloudflare 가난뱅이 올인원 스택","인디 개발자를 위한 무료 기술 스택: 코드는 Codex, 버전 관리는 GitHub, 결제는 Stripe, 프런트엔드는 TanStack Start, 백엔드는 Hono + Workers, 데이터베이스는 D1, 스토리지는 R2, 캐시는 KV — 전부 Cloudflare 위에서 돌아간다.","2026-06-15",[184,185,186],"Cloudflare","인디 개발","기술 스택",{"path":188,"title":189,"description":190,"date":191,"minRead":176,"tags":192},"\u002Fblog\u002Fdeepseek-api-web-search","DeepSeek API에 내장된 웹 검색 — Responses API로 공식 검색을 공짜로 쓰자","DeepSeek가 API 안에 웹 검색을 내장했다: Responses 인터페이스로 deepseek-v4-flash를 호출하고 web_search 도구만 선언하면 된다. 타사 검색 엔진 연동도, 검색 API 키도 필요 없다.","2026-08-05",[193,194,195],"DeepSeek","API","AI 도구",{"path":197,"title":198,"description":199,"date":191,"minRead":200,"tags":201},"\u002Fblog\u002Fdeepseek-v4-flash-review","DeepSeek V4 Flash 정식 버전 핸즈온: 싸고, 빠르고, 1M 컨텍스트, 내장 검색","DeepSeek V4 Flash 정식 버전을 며칠간 깊게 써본 결과: 공격적으로 싸고, 번개처럼 빠르고, 1M 컨텍스트, 공식 내장 웹 검색, 완전 오픈소스. 유일한 약점은 멀티모달 — 하지만 다른 모델을 조합하면 메울 수 있다.",7,[193,202,195],"모델 리뷰",{"path":204,"title":205,"description":206,"date":182,"minRead":157,"tags":207},"\u002Fblog\u002Ffree-cloudflare","무료 사용자가 Cloudflare를 끝까지 짜먹는 법 — 무료 플랜이 실제로 어디까지 되나?","Cloudflare 무료 플랜이 개인 인터넷 인프라 전체를 지탱할 수 있다: DNS, CDN, Pages, Workers, KV, D1, R2, 이메일, Tunnel, AI Gateway 등.",[184,208,209],"무료 플랜","배포",{"path":160,"title":5,"description":152,"date":151,"minRead":157,"tags":211},[165,166,167],{"path":213,"title":214,"description":215,"date":151,"minRead":157,"tags":216},"\u002Fblog\u002Fopencode-productive-stack","안정, 빠름, 고생산성, 저렴함: 내 AI Coding 스택 완전 기록","OpenCode + OpenChamber + DeepSeek V4 Flash 구독 두 장으로 15개 프로젝트를 동시에 돌려도 쿼터는 거의 안 줄었다. 이 글은 Context 프루닝, 계층 메모리, 데스크톱 자동화, 그리고 '역시 원래 조합'이라는 선택의 교훈까지, 내 전체 설정을 모두 까보는 글이다.",[121,217,218],"AI 코딩","설정",{"path":220,"title":221,"description":222,"date":223,"minRead":224,"tags":225},"\u002Fblog\u002Fproduct-faxin-principle","발심의 원리: 인디 개발자는 왜 버리는 법을 배워야 하나","왜 출발하는가? 누구를 위해 출발하는가? 도대체 어떤 문제를 풀고 싶은가? 제품의 날카로움은 감히 버리는 것에서 나온다.","2026-06-20",10,[226,185],"제품 사고",{"path":228,"title":229,"description":230,"date":223,"minRead":157,"tags":231},"\u002Fblog\u002Fproduct-pain-vs-itch","사용자가 '대박'이라 해도 들뜨지 마라: 통증 포인트와 가려움 포인트","입으로 하는 좋아함은 한 푼 가치도 없다. 수요를 판단하는 기준은 딱 하나다: 사용자가 무엇을 지불할 의향이 있는가.",[226,232],"수요 판단",{"path":234,"title":235,"description":236,"date":175,"minRead":237,"tags":238},"\u002Fblog\u002Fqwen-vision-for-deepseek","DeepSeek에 멀티모달 더하기: Qwen-3.7-Flash 비전 접근법","DeepSeek V4 Flash에는 멀티모달이 없다 — 이미지 이해는 어떻게 할까? 시장을 조사해 보니 현재 가장 가성비 좋은 방법은 Qwen-3.7-Flash다: 이미지 한 장을 인식하는 비용이 거의 들지 않고, V4 Flash와 조합하면 빈틈이 메워진다.",5,[193,239,202],"멀티모달",{"path":241,"title":242,"description":243,"date":244,"minRead":245,"tags":246},"\u002Fblog\u002Fsub-store-cloudflare","프록시 구독 통합을 Cloudflare로 옮겼다","여러 프록시 서비스와 자체 노드를 하나의 구독으로 합치고, 라우팅 규칙을 서버 쪽에서 설정 — 클라이언트는 그냥 구독만 하면 된다.","2026-06-28",4,[184,247,248],"우회","오픈소스 프로젝트",{"path":250,"title":251,"description":252,"date":151,"minRead":200,"tags":253},"\u002Fblog\u002Ftui-cognitive-bandwidth","TUI는 당신의 인지 대역폭을 죽이고 있다: AI Coding의 '긱 필터'는 깨질 때가 됐다","AI Coding Agent가 앞다투어 TUI를 올리면서 인터랙션을 80년대 터미널 패러다임으로 되밀어 놓고는 '몰입형', '프로그래머 존중'이라고 미화한다. 이 글은 TUI가 인지 대역폭을 체계적으로 떨어뜨리는 세 가지 메커니즘과, Web UI가 왜 정답인지를 해부한다.",[217,254,255],"인터랙션 디자인","에세이",{"path":257,"title":258,"description":259,"date":260,"minRead":176,"tags":261},"\u002Fblog\u002Fvalue-not-external","가치가 있는지 논하는 것 자체가 가치가 없다","우리의 가치는 누구도 정의하지 않는다. AI 시대에 인간은 도대체 어떻게 자신을 이해해야 하는가?","2026-06-18",[262,263],"AI 사고","인문 에세이",{"path":265,"title":266,"description":267,"date":268,"minRead":269,"tags":270},"\u002Fblog\u002Fx-growth-1000-followers","하루 조금 넘게 팔로워 1000+ 달성 — 내가 한 일","6월에 X 계정을 진지하게 운영해 하루 조금 넘게 팔로워 1000+를 달성했다. 이 글은 내가 한 일과 받은 피드백을 기록한다.","2026-06-16",12,[271,272],"X 운영","콘텐츠 성장",1789752317536]