Skip to content

Releases: JinHo-von-Choi/anchormind

v5.3.0

Choose a tag to compare

@JinHo-von-Choi JinHo-von-Choi released this 26 Jul 08:17

Added

  • text 없는 keywords-only recall에 L3 시맨틱 보조 경로. keywords(+contextText) 합성 텍스트 임베딩이 L2와 병렬 수행되어 저장 keywords 배열에 없는 용어도 content 기반으로 회수된다. searchPath에 L3kw:N 세그먼트가 남으며 semanticSearch.keywordFallback(env MEMENTO_KEYWORD_SEMANTIC_FALLBACK=false)로 비활성화할 수 있다.
  • reflectworkspace 파라미터 노출. 생성되는 모든 reflect 파편에 적용되며, 미지정 시 API 키의 default_workspace → 전역(NULL) 순으로 폴백한다.

Fixed

  • 서버 재기동 후 Redis에서 복원된 세션이 이전 협상값(negotiatedVersion)을 그대로 되살려 이후 모든 요청이 400으로 거부되던 문제 수정. 협상값과 헤더가 달라도 지원 목록에 있는 값이면 헤더 값으로 재앵커링해 통과시키며(mcp_protocol_version_reanchored_total 카운터로 관측), 미지원 버전에 대한 400 거부는 유지된다. initialize 시 협상값을 Redis에 즉시 영속한다. (#26)

Changed

  • batch_remember의 fragments가 JSON 인코딩 문자열로 전달된 경우 원인을 명시하는 별도 오류 메시지를 반환한다.
  • JSON body 파싱 실패(-32700) 응답 message에 파서 위치 정보를 보존한다. 대량 배열 요청에서 손상 지점을 특정할 수 있다.
  • search_events의 l3_count가 keywords 폴백 보조 세그먼트(L3kw:N)도 집계한다.

v5.2.3

Choose a tag to compare

@JinHo-von-Choi JinHo-von-Choi released this 16 Jul 07:58

Changed

  • semanticSearch.minSimilarity 기본값 0.5→0.4. 12쿼리 골드셋 실측에서 상위5 유용 결과 수가 최대인 지점으로, 어휘 중첩이 낮은 회상형 질의의 무응답을 줄인다(0.35는 노이즈 유입이 이득을 상쇄해 기각). SearchParamAdaptor 기존 학습 행도 0.4 상한으로 동기화됐다.

v5.2.2

Choose a tag to compare

@JinHo-von-Choi JinHo-von-Choi released this 16 Jul 06:10

Fixed

  • text/mixed recall의 RRF importance 컷오프가 기준값 미지정 시 모든 후보를 탈락시키던 문제 수정. 기준 미지정 시 no-op으로 동작하며, rrfSearch.candidateMinImportance(기본 0.1)를 정책값으로 명시한다.
  • extractKeywords가 한글 토큰의 조사 접미를 제거하고, 카멜/스네이크 케이스 코드 식별자를 소문자화 없이 원형 보존한다.

Added

  • morpheme_indexed 백필 잡: 5분 주기로 미인덱싱 파편을 배치(기본 500) 처리해 형태소 L3 커버리지를 회복한다. embedding-consistency 경고에 백필 잡 상태가 병기된다.
  • 마이그레이션 스크립트 3종(dryRun 기본): reflect 파편 keywords 재추출(scripts/reextract-reflect-keywords.js), reflect permanent TTL 강등, SearchParamAdaptor min_similarity 리셋.
  • recall 품질 검증 지표 SQL과 스모크 절차 문서(docs/operations/recall-quality-verification.md, scripts/recall-quality-metrics.sql).

Changed

  • reflect decision 파편 importance 0.8→0.7, reflectionPolicy.maxImportance 0.3→0.55 — reflect 파편의 permanent 승격을 차단하고 정리 주기가 실제로 동작하게 한다.

v5.2.1

Choose a tag to compare

@JinHo-von-Choi JinHo-von-Choi released this 15 Jul 22:12

Fixed

  • recallfields sparse 목록이 응답에 적용되지 않던 문제 수정. 필드 선택이 응답 프로젝션에서 최종 적용되며, 파생 키(confidence, age_days)와 keywords(이 경우 includeKeywords 없이도 포함)·valid_to·affect·ema_activation도 요청 시 반환된다.
  • key_idincludeKeyName 미지정 시에도 recall 응답에 포함되던 문제 수정. key_id·key_name 모두 includeKeyName=true일 때만 포함된다.

v5.2.0

Choose a tag to compare

@JinHo-von-Choi JinHo-von-Choi released this 15 Jul 22:12

Added

  • recall·contextincludeKeyName 파라미터: true 시 각 파편에 key_id·key_name(액세스 키 라벨)을 포함한다. 같은 키 그룹 스코프의 정보만 노출되며 기본 false. recallfields sparse 목록에도 key_id/key_name을 지정할 수 있다.
  • 임베딩 API 호출에 per-call 절대 타임아웃(EMBEDDING_TIMEOUT_MS, 기본 8000ms)과 프로세스 전역 동시성 세마포어(EMBEDDING_CONCURRENCY/EMBEDDING_SEM_WAIT_MS)를 적용해 임베딩 서비스 지연이 전체 요청 큐로 전파되는 것을 차단. 세마포어 대기 초과는 mcp_embedding_semaphore_wait_exceeded_total로 관측 가능.
  • initialize(무세션) 요청에 인증·DB 조회 이전 IP rate limit 선차단 추가. 차단 시 429 응답과 함께 mcp_initialize_ip_rate_limited_total 카운터가 증가한다.
  • batch_remember에 배열 전체 content 총 문자수 게이트(BATCH_REMEMBER_MAX_TOTAL_CHARS, 기본 200,000자) 추가. 항목별 4000자 상한과 별개로 요청 전체를 사전에 거부한다.
  • QuotaChecker.check()에 캐시 우선 판정 경로 추가: 잔여 할당량이 QUOTA_NEAR_LIMIT_MARGIN(기본 10)보다 크면 FOR UPDATE 트랜잭션 없이 통과하며, 이 경로는 mcp_quota_cache_pass_total로 관측된다. 한도 임박 시에만 기존 정밀 검사로 전환된다.
  • EmbeddingWorker가 remember() 동기 경로에서 이미 생성된 임베딩 벡터를 캐시로 재사용하여 동일 파편에 대한 중복 임베딩 API 호출을 제거.
  • 관리자 REST에 키 스코프 파편 조회·검색·통계·내보내기 엔드포인트 추가(key_id/group_id 스코프 적용).

Changed

  • 외부 reranker 3연속 실패 시 기본 정책을 in-process 전환에서 쿨다운 스킵으로 변경(RERANKER_EXTERNAL_FALLBACK=skip, 기본값). 쿨다운(RERANKER_EXTERNAL_COOLDOWN_MS, 기본 60초) 동안 external 호출을 생략하고 원점수(RRF 순서)를 유지하며, 만료 후 1건 재시도한다. RERANKER_EXTERNAL_FALLBACK=inprocess로 이전 동작(ONNX in-process 전환) 유지 가능.
  • 관리 콘솔 메모리 뷰: 1024px 미만 화면에서 Fragment Detail이 하단 고정 시트로 표시된다. 닫기 버튼과 ESC로 닫을 수 있으며 데스크톱 레이아웃은 동일하다.
  • admin API의 CORS 허용 origin을 화이트리스트 반사 방식으로 처리하고 인증 실패를 로깅한다(ADMIN_ALLOWED_ORIGINS).

Fixed

  • 외부 reranker의 TEI(text-embeddings-inference) 호환: 요청에 texts 필드를 documents와 함께 전송하고, [{ index, score }] 배열 응답을 매핑하며, 빈 바디 /health를 허용한다 (#22, @itismyfield 기여).
  • 외부 rerank 배열 응답 처리: 빈 배열은 실패로 간주해 폴백 경로를 타고, index 범위와 score 타입이 유효한 항목만 반영한다.

v5.0.1

Choose a tag to compare

@JinHo-von-Choi JinHo-von-Choi released this 14 Jul 16:47

[5.0.1] - 2026-07-15

Added

  • 프로세스 전역 에러 가드(lib/process-guards.js): unhandledRejection은 로깅 후 프로세스를 유지하고, uncaughtException은 로깅 후 graceful shutdown을 exit code 1로 수행한다(onFatal 1회 보장, 35초 강제 종료 타이머). SIGTERM/SIGINT 경로는 기존과 동일하게 exit 0으로 종료한다.

Changed

  • 전이 의존성 lockfile 갱신 (hono 4.12.30, protobufjs 7.6.5, tar 7.5.20).

v5.0.0

Choose a tag to compare

@JinHo-von-Choi JinHo-von-Choi released this 14 Jul 08:01

Changed

  • 프로젝트명을 AnchorMind로 변경 (패키지명 anchormind-mcp). memento-mcp라는 이름이 다수의 동명·유사 프로젝트와 겹쳐 개명했으며, 도구명·환경 변수(MEMENTO_*)·DB 스키마·API 경로·키 형식(mmcp_) 등 런타임 계약은 모두 그대로다 (Breaking 없음).
  • CLI bin에 anchormind 명령 추가. 기존 memento-mcp 명령은 별칭으로 유지.
  • MCP initialize 응답의 serverInfo.name을 anchormind-server로 변경 (표시 메타데이터).
  • admin 콘솔·로그인 화면 브랜딩과 README 로고를 AnchorMind로 교체.
  • README·SKILL.md·docs 전반의 표기를 현행 코드 기준으로 정비.

v4.8.0

Choose a tag to compare

@JinHo-von-Choi JinHo-von-Choi released this 04 Jul 14:05

Added

  • content 입력 길이 상한 4000자 도입: remember·batch_remember 항목·amendcontent가 이를 초과하면 JSON-RPC -32602 에러로 거부한다. 파편 유형별 저장 절삭(episode 1000자, 그 외 300자)은 그 이전 단계로 그대로 유지되며, batch_remember는 초과 항목만 실패 처리하고 나머지 배치는 계속 진행한다.

Changed

  • 패턴 기반 캐시 무효화(invalidateCacheByPattern)를 KEYS 대신 Redis SCAN 커서 순회(COUNT 500, 순회 상한)로 전환.
  • 로컬 임베딩(transformers provider) 초기화를 모델별 싱글톤으로 단일화해 동시 중복 로딩을 방지하고, 추론을 FIFO 큐로 직렬화. 배치 임베딩(embedBatch)은 청크 단위 텍스트 배열을 파이프라인에 1회 추론으로 전달한다.
  • 마이그레이션 SQL 파일을 lib/memory/migrations/ 디렉토리로 이동. npm run migrate 동작은 변경 없음.
  • lib/memory/ 하위를 read/·write/·consolidate/·link/·signals/·processors/·embedding/ 서브디렉토리 체계로 재배치.

v4.7.0

Choose a tag to compare

@JinHo-von-Choi JinHo-von-Choi released this 19 Jun 16:30

[4.7.0] - 2026-06-20

Added

  • batch_remember 비동기 신뢰성 처리: 백그라운드 워커가 ack·재시도(최대 3회)·dead-letter·기동 복구(RPOPLPUSH reliable queue)로 at-least-once 배치 처리를 보장한다.
  • batch_status(jobId) 도구 추가: batch_remember(async: true) 결과 jobId로 처리 상태(queued/processing/completed/dead)를 조회하는 읽기 전용 도구.
  • Deferred tool discovery 클라이언트 가이드: Codex Desktop 등 lazy 로딩 클라이언트를 위한 instructions 초기화 지침·SKILL.md 섹션·README 가이드를 일관되게 정비.
  • 코어 도구에 MCP title + annotations(readOnlyHint/idempotentHint/openWorldHint) 메타데이터 추가. tools/list 응답에서 recallremember 바로 다음에 노출된다.

Changed

  • batch_remember·memory_consolidate가 표준 단일 JSON-RPC 응답으로 반환된다. stream 파라미터는 deprecated(하위 호환 유지, 동작 없음).
  • 총 도구 수 17 → 20(batch_status, session_rotate, check_update/apply_update 반영).

v4.6.0

Choose a tag to compare

@JinHo-von-Choi JinHo-von-Choi released this 15 Jun 16:31

[4.6.0] - 2026-06-16

Added

  • 벡터 검색 HNSW 인덱스 강제 옵션·토글: ORDER BY embedding <=> v LIMIT 트랜잭션에 enable_seqscan=off·enable_bitmapscan=off·hnsw.iterative_scan 힌트를 적용해 HNSW 인덱스 경로를 강제.
  • batch_remember 비동기(파이어앤포겟) 모드 opt-in: async: true 지정 시 선검증 후 Redis 큐 적재, {async, accepted, rejected, jobId} 즉시 반환. BatchRememberWorker가 본처리. 기본 async: false로 기존 동기 동작 불변. Redis 비활성 환경에서는 동기 폴백.
  • 배치 작업 전용 연결 풀(getBatchPool, application_name='memento-mcp:batch') 및 배치 풀 통계 메트릭 수집.

Changed

  • HNSW 인덱스 정의의 ef_construction 정합화, L3 형태소 보강 검색 병렬 실행, RRF 병합 후보에 importance 하한 컷오프 적용.
  • reflect 항목 자기완결성 게이트 및 한글 하한 강화.
  • 키 스코프 조회를 keyScopeClause 공용 헬퍼로 통일: getById·findCaseIdBySessionTopic·findErrorFragmentsBySessionTopic·GraphLinker 공유. GraphLinker 키 필터를 파라미터 바인딩·text 타입 정합으로 정리.
  • 피드백 importance 보정 계수를 feedbackFactor 순수 함수로 단일화(라이브 계수 0.85/1.1/0.95 유지).
  • tools/call 메트릭 중복 집계 제거.
  • 내부 중복 정리: 요청 컨텍스트 추출·키워드 정규화·도구 감사 래퍼·검색 SELECT 상수·affect 조건·Bearer 추출·환경변수 리스트 파싱·공통 파라미터 스키마 각각 단일 위치로 통합.
  • 대형 메서드 분해: remember·handleMcpPost·buildAdminPaths·dispatchJsonRpc·ContextBuilder.build·검색 RRF·컨솔리데이션/분해/압축.

Fixed

  • getUnreflectedSessions의 Redis SCAN 순회에 상한(최대 20라운드)을 두어 대용량 keyspace에서 context 응답이 지연되던 문제 해결.