01
전체 이력 재점검과 보완
331개 커밋으로 1.94.4~1.105.1을 발행했습니다. Add-on 계약 패키지(@openmake/plugin-contracts) 분리, Fencing Token 기반 독립 Knowledge Worker 프로세스, 장기 실행 태스크 체인, 디스코드 /task 연동과 safeFetch 리다이렉트 보안 패치를 반영했습니다.
2026-10-17에 main f50ce73a의 전체 도달 가능한 이력을 다시 확인했습니다. 집계는 KST 월요일 00:00부터 일요일 23:59:59까지 커밋일 기준이며 병합·릴리스 커밋과 병렬 브랜치의 별도 커밋을 포함합니다. 커밋 수는 기능 수가 아닙니다. 아래 기록된 테스트·운영 실측은 당시 소스 기록이며 이번 수정에서 다시 실행한 결과가 아닙니다.
10월 17일 09:31 KST 확인 시점까지의 스냅샷입니다. 주간 종료 전이므로 이후 커밋은 포함하지 않습니다. 일반 태그는 1.94.4~1.105.1이며 Add-on 계약 패키지·독립 Knowledge Worker·장기 실행 체인·디스코드 /task 연동을 포함합니다.
02
개발 현황
- Add-on 경계를 계약 패키지로 명확히 분리했습니다. @openmake/plugin-contracts 패키지를 신설해 수명주기 계약(AddonRuntimeHandle, start/stop/drain/resume), 활성 상태, 매니페스트, 기여 DTO를 코어(apps/api)와 분리했습니다. 관리자가 토글하면 disabled는 즉시 drain 정지하고 enabled는 resume 처리하며, 부팅 실패 add-on은 ADDON_FAILED(503)로 구분해 라우트와 채팅 훅에서 통과시키지 않습니다. add-on에서 Base 내부로의 직접 import를 방지하는 lint ratchet과 경계 규칙도 CI 관문에 연결했습니다(50fb0654, 4e157fce, df8f035a, a34304e5, bbb2b50e, 4a6691a2).
- Knowledge 수집 워커를 API 서버에서 분리해 전용 프로세스로 띄웠습니다. workers/knowledge-worker 진입점과 PM2 openmake-knowledge-worker 설정을 마련하고 작업 큐 마이그레이션 004를 적용했습니다. 분산 환경과 작업 재선점에서 데이터 오염을 막기 위해 DB Fencing Token(JobLease, assertLeaseHeld)을 도입해 lease를 잃은 실행자의 청크 교체·임베딩 삽입·인덱스 전환 쓰기를 거절합니다. 수집 작업 취소 API(POST /api/knowledge/jobs/:id/cancel)와 하트비트 감시, 롤백 훈련 스크립트도 갖췄습니다(c67aa2ae, 3887b85c, d830a75f, 9336e503, c627340b, 7166d7b7).
- 에이전트 작업에 장기 실행 체인을 지원합니다. 턴·시간·컨텍스트 한도에 도달했을 때 실패로 끝내는 대신 인계 턴 프롬프트와 작업공간 스냅샷을 후속 세그먼트로 전달하는 연속 체인(마이그레이션 188/189)을 도입했습니다. 진행 없는 텍스트 응답은 세그먼트 진행으로 보지 않는 체인 폭주 가드를 두고, 세그먼트 시간 상한을 남은 총 체인 시간으로 제한했습니다. 웹 UI는 체인 세그먼트를 루트 카드로 접고 이어짐 배지와 누적 사용량을 표시합니다(a27523ac, 2d2132fc, 5f56a510, ba2d063e, 513fb88f, 334bb1ae).
- 모델 서버 장애와 기기 단절에 대한 회복력을 보강했습니다. 모델 서버의 장기 장애나 무응답 시 작업을 실패 처리하는 대신 주차(parking)하고, 모델 헬스가 복구되면 자동으로 이어서 실행합니다. 재시작으로 끊긴 로컬 기기 작업도 기기 대기로 주차해 재연결 후 이어가며, 되풀이되는 자동 복구는 횟수 상한에서 멈춥니다. 호스트·외부 도구 호출에 공통 시간 상한을 두고 중단 신호에 즉시 반응하도록 했습니다(fa304740, bb5c10fc, 1db9ff11, 9e55a388, 5632c44e).
- 디스코드 봇에서 에이전트 작업을 직접 다룰 수 있습니다. /task 슬래시 명령과 취소 버튼으로 채널에서 작업을 시작·승인·취소하고, 봇이 작업 진행을 실시간 추적합니다. 작업이 끝나면 생성된 마크다운 아티팩트와 작업공간 파일(file_ops)을 디스코드 파일 첨부로 채널에 전달합니다. 채널에 올린 이미지·문서 첨부를 백엔드로 전달해 분석할 수 있으며, 디스코드에서 깨지던 마크다운 표를 굵은 제목과 목록으로 자동 변환해 표시합니다(61b41ec4, e0359607, 8c6d6526, ce3d6663, b4897226, 5dd312fe).
- 의사결정 어댑터에 셰도우 게이트 2종을 도입했습니다. 검색 필요 여부를 판정하는 게이트와 답변이 실제 출처에 근거했는지를 문장 단위로 검증하는 답변 근거 게이트를 연결했습니다. 다단계 계획이 불필요한 검색 질의는 Planner를 건너뛰고 검색 판정과 함께 직행하도록 최적화했으며, 오케스트레이터의 내부 작업명이 답변에 새지 않도록 차단했습니다(eecf8263, e723e99e, 19c45eac, 6cfe4687, acf909ec).
- 운영 검증과 API 부하 측정 체계를 세웠습니다. scripts/bench/api-load.mjs 하네스와 기준선 비교(D6)를 구축하고, 부팅 피크 메모리가 기준선을 오염시키지 않도록 --settle 대기(기본 90초)를 적용했습니다. 통합 검증 매트릭스와 릴리스 후보 보고서 도구를 추가하고, runbook §11에 2026-10-16 스테이징·운영 배포 완료를 정식 기록했습니다(6416051e, 40838d74, 40b6a1a3, b72f6ecb, fcb59865).
- 보안 취약점과 인터페이스 결함을 수정했습니다. safeFetch가 redirect: 'manual'·'error'를 존중하도록 수정해 MCP SDK의 same-origin 리다이렉트 정책이 우회되지 않도록 차단했습니다. 업로드 파일 이름 길이를 200바이트로 잘라 ENAMETOOLONG 오류를 방지하고, 채팅 시작 화면의 빠른 시작 카드 안내 문구와 UI 선택성을 다듬었습니다(8fdf0322, df1165ae, 1af20e13, 2ac39b09).
근거 자료
근거
OPENMAKE · MIT OPEN SOURCE
OpenMake