01
개발 현황
8월 31일부터 9월 3일까지 GitHub main에 45개 커밋이 쌓였고, 전주 마무리분인 1.35.0·1.35.1을 월요일 새벽에 자른 뒤 1.36.0부터 1.40.0까지 일곱 개 릴리스가 나왔습니다. 세 갈래가 겹친 주간입니다. 받아만 두고 본문을 읽지 못하던 HWP·HWPX·HML 공문서를 읽게 만들었고, 그 과정에서 컨텍스트 초과를 일시 오류로 안내하던 문제와 토큰 과소추정이 드러나 함께 고쳤습니다. 로컬 기본 모델을 qwen3.8-27b로 바꾸면서 정적 카탈로그 대신 게이트웨이에서 모델을 자동 발견하게 했고, 새 모델 점검에서 나온 샘플링 기본값·추론 보존·이미지 총량 문제를 이어서 손봤습니다. 외부 모델 쪽에는 hasa와 B.AI를 BYOK provider로 붙이고, 무료 키의 분당 한도에 토론·딥리서치가 무너지지 않도록 provider별 동시성과 429 백오프를 두었으며, 추론 강도 3단이 외부 모델에도 실제로 전달되게 했습니다. 그 사이 apps/api 보안 리뷰에서 나온 high 3건·medium 1건·low 다수를 이틀에 걸쳐 닫았고, 라우팅 골든셋을 150건으로 늘려 라우팅 정확도를 77.5%에서 100%로 끌어올린 뒤 nightly 실모델 평가를 운영 Mac에 걸었습니다.
- 한국 공문서를 읽습니다. .hwp·.hwpx는 업로드 허용 목록에 오래 있었지만 어느 추출기 목록에도 없어 받아만 두고 본문을 읽지 못하는 상태였습니다. 순수 JS 파서 kordoc으로 HWP 3.x/5.x·HWPX·HWPML을 추출하고, .hml 업로드를 열고, 에이전트 작업 샌드박스 이미지에 kordoc을 빌드타임에 넣어 공문서 생성·서식 채우기까지 가능하게 했습니다(1.36.0). 배포 직후 두 겹의 결함이 드러났습니다. 프론트 composer의 원본 전송 목록에 hwp 계열이 빠져 363KB 문서가 깨진 텍스트로 올라가 컨텍스트를 넘겼고, 그 실패가 "외부 LLM 제공자 일시 오류"로 안내돼 재시도해도 같은 결과였습니다. 전송 목록을 백엔드 추출 목록과 한 쌍으로 맞추고, 컨텍스트 초과는 CONTEXT_TOO_LARGE로 분리해 7개 로케일에서 첨부를 줄이라고 안내하며 재시도를 권하지 않게 했습니다.
- 토큰 추정의 맹점을 실측으로 확인하고 좁혔습니다. 문자 기반 추정은 한국어 산문과 코드에는 보수적이지만 JSON 로그는 61%, base64는 36%, hex는 30%까지 과소추정해 context-fit 안전망을 그대로 통과시켰습니다. 가중치 조정으로는 덮이지 않는다는 것을 확인한 뒤, 추정치가 유효 컨텍스트의 절반을 넘는 요청에만 vLLM /tokenize로 정확히 재계산하고 보정 계수를 절단에도 같이 적용하게 했습니다. 평상시 대화는 임계에 닿지 않아 추가 호출이 없습니다. 턴 예산 판정에서 HWP 확장자가 빠져 있던 잠복 결함도 같은 점검에서 걷혔습니다.
- 로컬 기본 모델이 qwen3.6-35b-a3b에서 qwen3.8-27b로 바뀌었습니다(1.38.0). DGX가 모델을 교체한 뒤에도 앱은 옛 이름에 묶여 UI·카탈로그·capability가 실체와 어긋났는데, 정적 카탈로그 한 줄이 목록의 유일한 출처였기 때문입니다. 이제 부팅과 주기 프로브가 LiteLLM /model/info를 읽어 로컬 모델을 발견하고, 정적 목록은 게이트웨이 불달 시 폴백으로만 남습니다. 새 모델 점검 후속으로 샘플링을 지정하지 않은 로컬 호출에 thinking ON/OFF별 공식 권장값을 채우고, 딥리서치 하위 호출·토론 참가자·구조화 답변 같은 메타 호출 10곳에 think:false를 명시했으며, 추론 레벨 미지정 폴백을 최대 추론에서 medium으로 낮췄습니다. 도구 루프에서는 assistant의 reasoning_content를 다음 턴에 보존해 도구 호출 5턴 동안 매 라운드 직전 추론을 잃고 다시 생각하던 낭비를 없앴고, vLLM이 발급한 tool_call id를 합성값으로 덮지 않으며, 요청당 프롬프트 이미지 총량을 vLLM 상한 8장에 맞춰 9장째에 400이 나던 경로를 막았습니다.
- 외부 모델을 실제로 쓸 수 있게 했습니다. Open AI Service Hub(hasa)와 B.AI를 BYOK provider로 붙였고, B.AI는 45개 모델을 잔액 0인 키로 전부 호출해 무료 5종만 카탈로그에 실었습니다(1.38.0·1.39.0). 토론과 딥리서치에서 명시 선택한 외부 모델이 실행 불가일 때 조용히 로컬로 폴백하던 것을 오류로 드러내고, 외부 모델을 무시한다던 잘못된 프론트 안내를 정정했습니다. 그런데 전문가 5명 병렬 호출이 B.AI 무료 키에서 5/5, hasa 개발키에서 3/5 429로 끝났습니다. 외부 실행 클라이언트를 Proxy로 감싸 provider별 세마포어와 Retry-After를 존중하는 429 지수 백오프를 두고, 딥리서치 fan-out 동시성과 타임아웃을 provider 힌트에 맞추며, SDK의 맹목 재시도를 0으로 내리고 타임아웃에 배수를 적용했습니다(1.40.0). 입력창의 추론 강도 3단은 그동안 로컬과 ChatGPT OAuth에서만 유효했는데, OpenAI 호환 외부 provider에도 reasoning_effort로 전달되어 추론 토큰이 실측 264에서 61로 줄었습니다. 휴리스틱으로 추정한 capability 캐시가 config 실측값을 가려 vision·thinking을 거절하던 문제와 medium을 400으로 거절하는 glm-5.3의 강도 맵도 정정했습니다.
- 9월 2일 apps/api 보안 리뷰의 결과를 이틀에 걸쳐 닫았습니다(1.39.0·1.40.0). high 3건은 시스템 스킬을 아무 인증 사용자가 덮어쓸 수 있던 저장형 프롬프트 인젝션, 자기 스킬을 공유 산업 에이전트에 배정할 수 있던 경로, 타인 userId로 push 구독을 등록해 알림 사본을 받을 수 있던 문제였습니다. push 소유자를 req.user로 고정하면서 웹 push가 사실은 한 번도 전달된 적 없던 결함도 함께 닫혔습니다. 이어서 번들 id만 알면 타인의 private 번들을 설치할 수 있던 IDOR, 노출 시점에만 걸리던 고위험 MCP 도구의 역할 게이트를 실행 경로에도 강제, CSV 수식 인젝션, 타인 MCP 서버 상태 조회 오라클, 소유권 검사 빈값 통과, 첫 실행 셋업의 관리자 경합을 처리했습니다. 심층방어로 {{env.KEY}} 위치 인자 비밀을 argv에 박는 대신 sh 변수 참조로 전달해 같은 호스트의 다른 계정이 ps로 읽을 수 없게 했고, REST 이미지 상한, push 엔드포인트 호스트 허용목록, 사용자 샌드박스의 realpath 기반 심링크 탈출 차단을 더했습니다.
- 샌드박스와 MCP의 운영 자세를 다졌습니다. 외부 아키텍처 리뷰가 지적한 secure-by-default는 코드 기본값을 바꾸지 않고 부팅 자세 점검과 첫 실행 셋업 자동 활성화로 달성했습니다. docker 없는 배포에서 외부 MCP가 원인 표시 없이 전멸하지 않게 하기 위해서입니다. readonly rootfs 전환 라이브에서 uvx 기반 서버 2종만 전멸한 원인을 도구 venv 경로에서 찾아 캐시 볼륨으로 옮겼고, 앱 재시작 3회를 살아남은 고아 컨테이너에는 role·pid·serverId 라벨을 붙여 부팅 때 소유 프로세스가 죽은 것만 정리합니다(1.37.0). 재개용으로 살아 있어야 하는 작업 샌드박스는 라벨 스코프로 건드리지 않습니다. v2 이전을 마친 MCP v1 SDK는 배포 dist에 참조가 없음을 확인하고 제거했습니다.
- 평가가 게이트가 됐습니다. 골든셋을 50건에서 150건으로 늘리고 운영 60일의 분포를 익명화해 반영하자 라우팅 정확도가 93.3%에서 77.5%로 내려갔는데, 이것이 라우터 개선 백로그였습니다. 실패 27건을 어휘 부재 17건과 토픽 부스트 오발동 10건으로 진단해 24개 에이전트에 키워드 70개를 보강하고 "짜줘"가 프로그래밍으로 새던 패턴을 좁혀 100%로 올렸고, 임계를 0.5에서 0.9까지 ratchet했습니다(1.37.1). nightly 실모델 평가를 운영 Mac에 걸자 정상 거절문이 금지어에 걸리고 한국어 거절이 영어 표지를 빗나가던 라벨 결함이 드러나 고쳤으며, 가짜 클링온으로 응하는 모델의 실패는 품질 신호로 남겼습니다(1.37.2). 라우팅·TTFT 일일 집계는 로그 경로 이전 뒤 매일 빈 리포트만 쌓던 것을 OMK_LOG_DIR로 되살렸고, CI 게이트 16단계가 전부 성공하고도 25분에 취소되던 job 상한을 35분으로 올렸으며, 릴리스 노트에서 빠진 항목을 수동 보정하고 그 교훈을 CLAUDE.md에 남겼습니다. 1.40.0 이후 도구 루프 추론 보존과 로컬 provider responseFormat 전달은 아직 릴리스 전입니다.
02
주간 기록을 재구성한 방법
이 기간과 일치하는 로컬 Claude Code 프로젝트 세션을 찾지 못했습니다. 따라서 Git 이력이 증명하는 개발 내용만 기록했습니다.
확인 가능한 Claude Code 메인 세션과 명시적으로 연결된 하위 세션, 저장소 Git 이력을 전수 점검했습니다. 세션은 의도와 조사 과정을 설명하고, 실제 반영된 코드는 Git을 최종 근거로 판단했습니다.
이번 주간은 아직 진행 중입니다. 커밋 수와 개발 내용은 전수조사 기준일인 2026년 9월 4일 05:25(KST)까지입니다.
03
팀 정체성과 프로젝트 역할
OpenMake Team은 커뮤니티 팀, openmake_llm은 소프트웨어 프로젝트, OpenMake는 제품명입니다. 비개발자 메이커 riskpw가 바이브코딩으로 openmake_llm 프로젝트를 이끌고 있으며, 전문 개발자 rocky가 개발을 지원합니다.
근거 자료
OpenMake