Releases
AnchorMind MCP 서버의 버전별 변경 내역. GitHub 릴리즈와 동일한 내용이다.
v5.6.1
GITHUB상세
v5.6.1
[5.6.1] - 2026-08-12
운영 인스턴스 주간 텔레메트리(recall 무관 피드백 27건 중 topic_mismatch 17건)와 열린 이슈 2건(#51, #52)을 반영한 검색 정합 패치.
Fixed
- recall 명시 topic/type 필터가 L1 유래 후보에서 소실되던 경로 2곳을 차단한다 (#51). topic/type 인덱스가 0건이면 L1이 공집합을 반환하고(0건 집합이 교집합에서 누락되어 keyword 집합 단독이 교집합 행세하던 결함), L1 미스분 ID 보충 조회 결과에 SearchScope(topic/type/caseId/phase/affect)와 timeRange를 정합 적용한다. 오기 topic은 이제 0건과 함께
topic_mismatch후보 힌트로 응답한다. - RRF 병합에서 L1의 ID-only 항목이 이후 도착한 완전 파편 객체로 승격되지 않아 content 부재 필터에서 정당한 L1 hit가 탈락하던 결함을 수정한다.
morpheme_dict의 embedding NULL 행이 캐시 히트로 오인되어 재계산 없이 영구 잔존하던 결함을 수정한다 (#52). NULL 행을 miss로 취급해 재계산하고, 등록 쿼리를 NULL 행 한정 조건부 UPDATE로 교체해 접근 시 치유한다. 유효 임베딩은 덮어쓰지 않아 프로바이더·차원 혼합을 방지한다.
Added
scripts/backfill-morpheme-dict.js— morpheme_dict NULL 행 일괄 재임베딩. 커서 기반 배치,--dry-run, 실패 형태소 격리(무한 재선택 방지), 배치 전멸 시 중단. 기존backfill-embeddings.js는 fragments 전용이라 이 테이블을 다루지 않는다.- 형태소 임베딩 등록에 프로바이더 오류 분류(인증·한도·서버·네트워크)와 지수 백오프 쿨다운(30초~10분), 동시 중복 요청 방지(inFlight)를 도입한다. 배치 1회 실패가 단건 최대 200회 호출로 증폭되던 경로를 차단한다.
Changed
- L1 폴백 계약: 명시 조건(keywords/topic/type/text)이 있는 검색은 인덱스 0건 시 최근 접근 파편 폴백을 발동하지 않는다. 폴백은 조건 전무 조회 전용이다.
v5.6.0
GITHUB상세
v5.6.0
운영 인스턴스의 최근 7일 검색 텔레메트리(무결과 mixed 검색 60건 중 51건이 topic 필터 조합)와 열린 이슈 2건(#48, #33)을 반영한다.
Added
- recall이 topic 지정 검색에서 0건일 때 키 스코프의 유사 토픽 후보를
_meta.hints의topic_mismatch신호로 반환한다. 후보는 topic별 파편 수 집계를 형태소 벡터 코사인으로 랭킹해 상위 3개까지 제시하며, topic 필터 자체는 정확일치 그대로다. 후보가 없으면 기존no_results로 떨어진다. task_feedback에outcome(completed/partial/blocked/abandoned/unknown),evaluator(agent/automatic/human),evidence,unmet_requirements필드 추가 (#48, migration-039).overall_success만으로는 "완수했으나 도구가 방해했다"를 표현할 수 없어 성공률 지표가 변별하지 못했다.overall_success는 호환을 위해 유지하고, 기존 행은 NULL(미보고)로 남겨 신규 표본과 분리한다.tool_feedback에irrelevance_reason(not_stored/search_miss/scope_leak/topic_mismatch/other) 추가 (#48). 저장된 적 없는 내용을 찾은 호출과 검색이 실패한 호출을 분리 집계한다. ConsolidatorGC 피드백 리포트에 원인 분포·outcome 분포 블록이 추가되고,memory_stats의 evaluation에completed_rate·irrelevance키가 늘어난다(기존 키 불변).- 쓰기 도구(remember/amend/forget) 성공 응답의
_meta.hints에 확률적 피드백 유도(feedback_sampled) 추가 (#48). 표본이 recall에 편중되는 문제의 완화책으로, 세션당 최대 2건·쿨다운 15분·도구별 확률(remember 0.10, amend/forget 0.25)로 제한하며MEMENTO_FEEDBACK_SAMPLING=false로 끌 수 있다. 유도된 피드백은trigger_type='sampled'로 저장되어 자발 표본과 분리 관측된다. - 분할 자식 품질 게이트 2종 (#33). 부모 원문의 주어 앵커(고유명사·코드 식별자·라틴+한글 혼합 토큰)가 자식 본문에 하나도 남지 않으면 reject(
subject_loss), 부모에 없는 시제·서법 표지(예정/의도/추정/당위 4패밀리)를 자식이 새로 도입하면 reject(modality_drift). 완료 사실이 미래 계획으로 바뀌거나 주어를 잃은 조각이 독립 파편이 되는 경로를 차단한다.MEMENTO_SPLIT_SUBJECT_GATE/MEMENTO_SPLIT_MODALITY_GATE(기본 활성)로 토글하며, 앵커 미추출 시 게이트를 적용하지 않는다.memento_consolidate_split_skipped_total에 두 reason 라벨이 추가된다(자식 단위 집계).
Changed
- topic 정확일치 필터가 0건을 반환한 검색을 SearchParamAdaptor의 minSimilarity 학습 표본에서 제외한다. topic 오기가 반복되면 원인과 무관한 시맨틱 임계값이 하향 학습되던 경로를 차단한다.
- remember·recall의 topic 값에 trim을 적용한다. 소문자화는 기존 저장 topic과의 불일치를 만들므로 도입하지 않는다.
배포 주의
- migration-039를 적용하지 않은 DB에서
tool_feedback저장이 실패한다. 서비스 재시작 전 마이그레이션을 선행한다.
v5.5.0
GITHUB상세
v5.5.0
운영 인스턴스의 최근 15일 피드백을 분석해 도출한 결함 4건을 수정한다. 모두 격리 DB에서 실제 코드 경로로 재현을 확인한 뒤 조치했다.
Fixed
amend가resolutionStatus/outcome/phase를 받아도 반영하지 않고updated: true를 반환하던 문제 수정 (#43). 세 필드가 도구 스키마와FragmentWriter의 갱신 허용 필드에 모두 없어 조용히 버려졌고,SKILL.md와lib/jsonrpc.js가 안내하는 케이스 종결 절차가 수행되지 않았다. 변경 전 상태는fragment_versions에 UPDATE와 동일 트랜잭션으로 기록하며(migration-038),resolved전환 시case_closed이벤트를 남긴다.- 반영 가능한 필드가 하나도 없는
amend호출이 성공으로 보고되던 문제 수정 (#43).updated: false와unsupportedFields를 반환한다. - 만료(
valid_to설정) 파편amend가 미존재 id와 동일한 오류를 반환하던 문제 수정 (#43). 만료 파편은 이력이므로 수정 불가 정책을 유지하되validTo와 함께 구분되는 오류를 반환한다. type/topic필터가 L1/L2에만 적용되어,timeRange지정 시 시간창 레이어가 타입 무관 파편을 수집하고 RRF에서 2배 가중을 받아 상위를 점령하던 문제 수정 (#44).SearchScope에 두 필드를 추가하고searchByTimeRange·searchBySemantic에 전달한다. 격리 DB 실측 기준type=decision지정 시 반환 8건(불일치 6건)에서 2건(불일치 0건)으로 변경.- 사용자가
keywords를 지정하면 본문 추출이 수행되지 않아 본문에만 등장하는 코드 식별자가 색인되지 않던 문제 수정 (#45). 지정 키워드를 앞에 두고 중복 제거 후 최대 10개까지 추출 결과를 병합한다. 운영 데이터 기준 본문에 식별자가 있는 파편 3,032건 중 1,265건이 대상이었다. morphemeIndex의minSimilarity·fallbackThreshold·fallbackLimit이 검색 경로에서 소비되지 않던 문제 수정 (#46). 형태소 프로브가semanticSearch.minSimilarity(0.4)를 재사용해, 문장 임베딩보다 코사인이 낮은 형태소 평균 벡터가 사실상 전량 탈락했다. 전용 임계값 0.15를 적용하고 기본 결과가fallbackThreshold이하일 때만fallbackLimit까지 채택한다.
Changed
FragmentReader.searchBySemantic이 위치 인자 대신 옵션 객체를 받는다 (#44). 필터가 12종을 넘어 순서 오류 위험이 커졌다.scripts/backfill-split-keywords.js,scripts/backfill-body-keywords.js로 기존 파편을 소급 처리할 수 있다. 둘 다 dryRun 기본.
v5.4.1
GITHUB상세
v5.4.1
Security
- 의존성 취약점 9건 해소.
npm audit기준 잔여 0건.fast-uri3.1.2 → 3.1.5 (host confusion 2건: GHSA-v2hh-gcrm-f6hx, GHSA-4c8g-83qw-93j6).@modelcontextprotocol/sdk→ajv경유 전이 의존성이다.sharp0.34.5 → 0.35.3 (libvips 상속 취약점 4건: GHSA-f88m-g3jw-g9cj).@huggingface/transformers의 선언 범위(^0.34.1) 밖이라 override로 강제하며, 로컬 임베딩 통합 테스트로 호환을 확인했다.brace-expansion1.1.14 → 1.1.18 (DoS 2건: GHSA-3jxr-9vmj-r5cp, GHSA-mh99-v99m-4gvg).@hono/node-server1.19.14 → 2.0.12 (Windows 경로 순회: GHSA-frvp-7c67-39w9).mongoose9.6.2 → 9.9.1 (프로토타입 오염: GHSA-664h-wqgq-64gw).tar7.5.20 → 7.5.22 (스택 오버플로 DoS: GHSA-r292-9mhp-454m).body-parser2.2.2 → 2.3.0 (limit 무력화 DoS: GHSA-v422-hmwv-36x6).
Changed
@modelcontextprotocol/sdk^1.27.1→^1.30.0. 1.30.0이@hono/node-server2.x를 지원 범위에 포함한다.docs/INSTALL.md의CONSOLIDATE_INTERVAL_MS기본값 표기를 실제 값(21600000 = 6시간)으로 정정.
v5.4.0
GITHUB상세
v5.4.0
Fixed
splitLongFragments가 생성한 자식 파편이keywords를 빈 배열로 저장해 키워드 배열 교집합(keywords && $1)을 사용하는 검색 경로에서 조회되지 않던 문제 수정 (#32). 자식 본문에서FragmentFactory.extractKeywords결과를 추출해 저장한다. 기존 파편은scripts/backfill-split-keywords.js로 소급 처리한다(dryRun 기본,--execute로 반영).- 분할된 원본 파편이 물리 삭제될 수 있던 문제 수정 (#33).
deleteExpired의 utility 분기에는valid_to조건도 링크 보호도 없는데 분할은 원본을valid_to설정과 함께 importance 하향·cold강등 처리하므로 anchor/permanent 보호가 적용되지 않았다. 자식이 남아 있는 원본을 삭제 후보에서 제외한다. - E2E
group-key-isolation스위트가api_keys에 없는 key_id로 파편을 저장해 외래키 위반으로 실패하던 문제 수정. 시드 키를 선삽입하고 teardown에서 시드 파편을 물리 삭제해 재실행 가능성을 확보했다. lib/memory/memory-schema.sql이content_hash전역 UNIQUE 인덱스를 생성해, migration-031이 도입한 키별 partial unique index(uq_frag_hash_master,uq_frag_hash_per_key)와 상충하던 문제 수정. 스키마 파일을 재적용할 때 키별 유일성이 전역 유일성으로 되돌아갔다.
Added
- 분할 앵커 커버리지 게이트. 분할은 원문을 자르지 않고 LLM이 다시 쓰므로 명제 하나가 통째로 누락될 수 있는데, 기존에는 자식 수가
minItems만 넘으면 원본을 대체했다. 자식 저장 직전에 원문의 수치 앵커(날짜·금액·비율·측정값)가 자식 합집합에 남아 있는지 대조하고, 빠진 것이 있으면 원본을 유지한 채 중단한다. 날짜2026-07-15는2026/07/15로, 범위75~85는75/85로 분해 비교하므로 표기 변형은 통과한다. memento_consolidate_split_skipped_total에anchor_lossreason 라벨 추가.scripts/backfill-split-keywords.js.
Changed
- Antigravity CLI provider(
agy-cli) 추가.LLM_PRIMARY/LLM_FALLBACKS에서 선택 가능하며--print --mode plan --sandbox로 실행되어 파일 수정과 도구 승인을 하지 않는다.