Skip to main content
Glama
Kawai-Senpai

Infinite Code Next

by Kawai-Senpai

AI 코딩 에이전트에게 코드베이스에 대한 지속적이고 검증 가능한 기억을 제공하는 제로 구성 MCP 서버 — 그 뒤에 숨은 결정들, 이미 시도했고 기각된 것들, 절대 깨지면 안 되는 것들 — 코드에 고정되어 코드가 이동함에 따라 함께 전달됩니다.

tests python mcp no llm

빠른 시작 · 탐색기 · 공유 · 에이전트 가이드 · 작동 방식 · 브랜드


Git blame은 누가 그 줄을 바꿨는지 알려줍니다. 이것은 에이전트에게 코드가 왜 존재하는지, 무엇이 이미 시도되었고 기각되었는지, 무엇이 반드시 유지되어야 하는지를 알려줍니다 — 그리고 자신의 지식이 낡었을 때를 스스로 압니다.


문제

매 세션마다, AI 에이전트는 기억 없이 도착합니다. 파일을 읽어 이전 에이전트가 이미 알았던 것을 다시 유추합니다. 그런 다음 저장소에 그것이 시도되었다는 기록이 없기 때문에, 석 달 전에 기각된 수정안을 다시 제안합니다.

값비싼 지식은 결코 코드 안에 없습니다:

코드가 말하는 것

코드가 절대 말하지 않는 것

stdin=subprocess.DEVNULL

— git이 MCP 파이프를 상속받아 모든 호출을 20초 동안 지연시키는지

if touched:

여기서 or None이 "모든 것을 해결"을 의미하고 몇 분이 걸린다는 것

코디네이터 클래스

Redis 뮤텍스가 먼저 시도되었고 파티션에서 교착 상태가 된다는 것

이 서버는 그 계층을 저장하고, 코드에 붙어 있게 유지하며, 더 이상 보증할 수 없을 때 알려줍니다.


Related MCP server: lore

빠른 시작

pip install -e .

MCP 클라이언트에 한 번만 등록하면 됩니다 — 두 번째 단계는 없습니다. 관리 패널도, 포트도, 데몬도, 저장소별 설정도 없습니다.

claude mcp add icn -- infinite-code-next
[mcp_servers.icn]
command = 'infinite-code-next'
args = []
{ "mcpServers": { "icn": { "command": "infinite-code-next" } } }

서버는 작업 디렉토리에서 자신이 어느 저장소에 있는지 알아내고, 모든 응답은 해석된 루트를 반향하므로 잘못된 작업 공간이 즉시 명확해집니다.

루프

workspace(action="open")          →  a briefing: rules, prior failures, what is unverified
investigate("what you're doing")  →  code + rationale + blast radius, budgeted
        ... do the work ...
record(summary=..., warnings=[...], failed_attempts=[...])

생산적으로 작업하기 위한 두 번의 호출. 다음 에이전트를 더 똑똑하게 만들기 위한 한 번의 호출.


지식 탐색기

서버가 아는 모든 것 — 저장소, 파일, 심볼, 기억, 그리고 그 사이의 모든 가장자리 — 하나의 상호작용 그래프로.

./explore.sh          # macOS / Linux
explore.bat           # Windows
icn-explore           # if the package is on your PATH

위: 전체 그래프 위에 열린 내보내기 메뉴.

필터

노드 유형, 메모리 심각도, 앵커 상태 또는 가장자리 종류별 — 개수가 실시간으로 업데이트됨

검색

이름, 경로 또는 본문 텍스트로 모든 노드 검색

검사

노드를 클릭하면 전체 본문, 메타데이터, 모든 유형화된 연결 확인

이동

연결을 클릭하여 그곳으로 이동 — 경고에서 그것이 지키는 코드로, 그것을 덮는 테스트로

확대/축소 및 이동

스크롤과 드래그; 노드 크기는 호출 차수이므로, 하중을 견디는 코드는 하중을 견디는 것처럼 보임

내보내기

마크다운, 그래프 JSON, 페이지 자체, PNG, 또는 현재 화면에 있는 것만

자체 포함: 데이터가 인라인된 하나의 HTML 파일. CDN 없음, 빌드 단계 없음, npm 없음. 저장하고, 이메일로 보내고, 커밋해도 — 여전히 작동합니다.

icn-explore --no-serve -o graph.html    # just write the file
icn-explore --port 8080                 # pick the port
icn-explore --include-deleted           # include tombstoned code

지식 공유

다른 코드베이스의 힘들게 얻은 지식을 다른 사람에게 — 또는 다른 에이전트에게 — 전달하세요.

탐험기에서

내보내기 버튼은 페이지를 떠나지 않고 아래의 모든 것을 제공합니다. 모두 브라우저에서 임베디드 그래프에 대해 오프라인으로 실행됩니다 — 서버 호출이 없으므로, 저장된 페이지도 여전히 내보냅니다.

**

마크다운

어디서나 읽을 수 있고, 다시 가져올 수 있음

그래프 JSON

노드와 가장자리, 원시

이 페이지

자체 포함 탐험기, 누군가에게 보내기 위해

이미지

현재 보기의 PNG

보이는 것 복사

화면에 있는 것만 — 먼저 필터와 검색을 하고, 필터링된 보기가 공유 가능한 하위 집합이 됨

CLI에서

icn-explore export -o knowledge.md      # readable markdown, renders anywhere
icn-explore export -o knowledge.icn     # bundle: markdown + graph
icn-explore export -o graph.json        # raw graph

마크다운은 표준 공유 형식이며, 그 자체로 읽을 수 있습니다 — 편집기에서, diff에서, 위키에서, 풀 리퀘스트에서. 도구 없이는 아무도 읽을 수 없는 지식 베이스는 아무도 확인하지 않는 지식 베이스입니다. 끝의 JSON 블록은 가져오기를 무손실로 만듭니다.

icn-explore import knowledge.icn        # bring it in
icn-explore import ./team-knowledge/    # a whole directory of .md / .icn
icn-explore import shared.md --preview  # look first, import nothing

가져오기는 절대 덮어쓰지 않습니다. 외부의 모든 것은 authority='imported' 로 원본이 첨부되어 저장되며, 일치하는 심볼이 실제로 존재하는 곳에만 고정됩니다. 가지고 있지 않은 코드에 대한 메모는 여전히 보관할 가치가 있습니다 — 그러나 본 적 없는 범위를 설명한다고 주장해서는 안 됩니다.


AI 에이전트 가이드

첫 번째 호출 전에 이 섹션을 읽으세요.

1. 먼저 열기 — 방향을 잡기 위해 파일을 읽지 마세요

workspace(action="open")

브리핑을 반환합니다: 이 코드를 지배하는 규칙, 이미 시도되고 기각된 것, 현재 검증되지 않은 것, 지식이 집중된 곳. 헤드라인과 ID만 — 본문은 제외, investigate()는 한 번의 호출로 가능합니다.

이것은 측정된 실패 때문에 존재합니다. 이 서버를 구축하는 모든 세션은 이미 존재하는 지식을 다시 유추하기 위해 파일을 읽는 것으로 시작했습니다. open은 심볼 개수를 보고했는데, 그것은 당신이 무엇을 마주하고 있는지에 대해 아무것도 알려주지 않습니다. 선반에 무엇이 있는지 알기 전에는 올바른 질문을 할 수 없습니다.

2. grep이 아닌 평범한 언어로 조사하세요

investigate("I need to change refresh token rotation. What will I break?")

한 번의 호출로 어휘 검색, 심볼 조회, 코드 그래프 탐색, 메모리 그래프 탐색, 앵커 상태 및 git 기록을 융합하고, 토큰 예산 아래에서 컴팩트한 캡슐을 반환합니다. 코드와 지식을 함께 검색하므로, 경고가 있는 파일 이름을 지정하지 않아도 경고를 찾을 수 있습니다.

인자

용도

intent=

locate, understand, modify, debug, audit — 생략하면 추론됨

budget=

대략적인 토큰 상한 (기본 9000)

cross_repos=True

계약을 다른 저장소로 추적

find_problems=

좁혀진 하위 그래프에 대한 대상 진단

3. 하중을 견디는 것을 삭제하기 전에, 왜인지 물어보세요

investigate(action="why", symbol="RefreshCoordinator.acquire")
decision: Use refresh-token rotation
  --was followed by--> bug_history: Parallel refresh requests invalidate each other
  --was followed by--> failed_attempt: Redis mutex could deadlock during a partition
  --was followed by--> * invariant: All refreshes pass through RefreshCoordinator

may reintroduce: Parallel refresh requests invalidate each other
regression tests: test_parallel_refresh_regression

다섯 개의 메모리의 평평한 목록은 이야기를 재구성하게 만듭니다. 체인은 그것을 전달합니다.

4. 배운 것을 기록하세요 — 특히 실패를

record(
    kind="bug_fix",
    summary="Serialize refresh requests per session",
    reasoning="Parallel requests rotated the same token.",
    invariants=["All refreshes for one session pass through RefreshCoordinator"],
    warnings=["Do not bypass RefreshCoordinator for new refresh entry points"],
    failed_attempts=["Redis mutex deadlocks during a network partition"],
    symbols=["RefreshCoordinator.acquire"],
    tests=["test_parallel_refresh_regression"],
    caused_by=[previous_memory_id],
)

failed_attempts는 전체 시스템에서 가장 가치 있는 필드입니다. 도구 체인의 다른 어떤 것도 시도되고 기각된 것을 기록하지 않으며, 미래 에이전트가 재발견하는 데 가장 비용이 많이 드는 것입니다.

record()primary_memory를 반환합니다 — 이 이벤트를 나타내는 id. 다음 caused_by로 전달하세요.

필드

기록

invariants

반드시 유지되어야 하는 것

warnings

미래 에이전트가 하지 말아야 할 것

failed_attempts

시도되고 기각된 것, 그리고 그 이유

decisions

내린 선택, 그리고 기각된 대안

contracts

다른 코드가 의존하는 가정

security

보안 관련 사실

performance

측정된 성능 사실

bugs

이 코드가 이전에 일으킨 버그

migrations

마이그레이션 단계 또는 순서 제약

conventions

따를 가치가 있는 로컬 관례

rationale

코드가 이렇게 형성된 이유

tests

이것을 덮는 테스트 — GUARDED_BY 가장자리 생성

contracts_with

교차 저장소 의존성

caused_by

이 이벤트가 따르는 메모리 id

5. 라벨을 신뢰하세요

모든 메모리는 anchor_status를 가집니다. ACTIVE가 아닌 것은 현재 코드에 대해 검증되지 않았습니다 — 사실이 아닌 단서로 취급하세요.

memory(action="verify", memory_id=..., reason="confirmed it still applies")
memory(action="guard", memory_id=rule_id, body=test_memory_id)
memory(action="supersede", memory_id=..., body="what is true now")

작동 방식

낡아졌을 때 아는 앵커

메모리는 src/auth/oauth.ts:193에 저장되지 않습니다. 줄 번호는 렌더링 세부사항입니다. 각 메모리는 의미적 앵커에 연결됩니다: 심볼 경로, AST 경로, 콘텐츠 지문(구조 + 식별자), 스켈레톤 지문(구조만), 그리고 주변 컨텍스트.

코드가 변경되면, 캐스케이드가 앵커를 재배치합니다 — 가장 저렴한 테스트 먼저:

단계

테스트

결과

1

동일한 지문, 동일한 위치

ACTIVE · 1.0

2

동일한 지문이 다른 곳에 있음, git blame -C -M로 확인됨

ACTIVE · 0.9, 이동됨

3a

동일한 위치, 골격 동일 — 이름 변경

ACTIVE · 0.8

3b

동일한 위치, 구조 변경됨

NEEDS_REVIEW

4

심볼 사라짐, 강한 유사성 일치

DRIFTED, 재앵커됨

5

기준을 충족하는 것이 없음

ORPHANED — 유지됨, 삭제되지 않음

이를 신뢰할 수 있게 만드는 두 가지 규칙이 있습니다:

  • 검증은 드리프트를 일으킨 편집에서 실행됩니다. 타이머가 아닙니다.

  • 캐스케이드는 신뢰를 낮출 수만 있고, 높일 수는 없습니다. DRIFTED 또는 NEEDS_REVIEW가 되면, 명시적인 memory(action="verify")만이 앵커를 ACTIVE로 되돌립니다. 그렇지 않으면 다음 패스에서 새로 재앵커된 지문이 일치한다고 보고하고 "변경 없음"으로 보고하며, 아무도 확인하지 않은 메모리를 조용히 다시 신뢰하게 됩니다.

문제 감지

investigate()는 먼저 하위 그래프로 좁힌 다음, 그 그래프에 대해 목표 지향적인 질문을 합니다. 워크스페이스 전체 스캔이 아닙니다. 이들을 린터와 구분하는 점은 지식 인식이라는 것입니다. 린터는 함수에 테스트가 없다는 것을 보지만, 이 그래프만이 그 함수가 프로덕션 사고 이후 기록된 불변식에 의해 규제된다는 것을 압니다.

발견

답하는 질문

stale_knowledge

어떤 메모리가 설명하는 코드에서 드리프트되었는가

bypassed_wrapper

호출자가 코디네이터나 가드를 우회하여 도달하는가

untested_invariant

규제된 규칙이 어떤 테스트에도 도달 가능하지 않은가

deprecated_with_callers

더 이상 사용되지 않는 심볼에 여전히 활성 호출자가 있는가

unguarded_equivalent

구조적으로 동일한 형제가 규칙을 갖고 있지 않은가

implementation_drifted_from_decision

코드가 결정된 것과 다르게 변경되었는가

knowledge_conflict

두 메모리가 서로 모순되는가

historical_implementation

활성 지식이 삭제된 코드를 가리키는가

unverifiable_contract

교차 저장소 의존성이 현재 확인 불가능한가

unreviewed_caller

메모리가 검증된 후에 호출자가 나타났는가

migration_candidate

코드가 캐스케이드가 따르지 않을 곳으로 이동했을 가능성이 있는가

실패하는 감지기는 검색을 중단하지 않습니다. 진단은 답을 향상시킬 뿐, 답의 전제 조건이 아닙니다.

루프에 LLM 없음

record()는 완전히 결정적입니다. 엔터티 해석, 엣지 유도, 모순 감지는 그래프 연산이지 모델 호출이 아닙니다. API 키, 네트워크, 토큰 비용이 없습니다. 랭킹은 의도별 가중치가 있는 정적이고 검사 가능한 공식입니다. 새 로컬 설치에는 재랭커를 훈련시킬 레이블이 지정된 관련성 데이터가 없기 때문입니다.

사람들이 입력하는 방식에 관대한 검색

정확 및 접두사 매칭이 먼저 실행됩니다. 아무것도 찾지 못하면 근사 패스가 이어져 subproces가 여전히 subprocess 경고를 찾을 수 있습니다. 하이픈 연결은 양방향으로 연결됩니다. reanchorre-anchor라고 쓰인 텍스트를 찾고 그 반대도 마찬가지입니다. FTS5의 토크나이저가 하이픈에서 분할하기 때문에 어느 철자도 그렇지 않으면 서로 도달할 수 없기 때문입니다.

폴백은 의도적으로 폴백입니다. FTS 랭킹은 히트가 있을 때 로컬에서 계산된 어떤 것보다 우수하므로, 기본적으로 퍼지 매칭을 실행하면 느슨한 일치가 정확한 일치보다 위에 오를 수 있습니다.

랭킹은 사용에서 학습합니다

모든 메모리는 표시된 횟수와 에이전트가 전체를 연 횟수를 추적합니다. 열기는 훨씬 더 높은 가중치를 받습니다. 표시된다는 것은 쿼리가 일치했다는 뜻일 뿐이지만, 열린다는 것은 에이전트가 본 모든 것 중에서 그것을 선택했다는 뜻입니다.

부스트는 0.5로 제한되고 45일 반감기로 감쇠합니다. 빈도는 증거이지 권위가 아닙니다. 제한이 없으면 지난달의 인기 메모리가 어제 기록된 중요한 경고 위에 고정될 것입니다.

저장

%LOCALAPPDATA%\InfiniteCode\               (Windows)
$XDG_DATA_HOME/infinite-code/              (Linux)
~/Library/Application Support/InfiniteCode/ (macOS)

  catalog.db                repositories, aliases, checkouts, cross-repo edges
  data/repos/<id>/repo.db   DURABLE      code graph, memories, anchors, events
  cache/repos/<id>/         REBUILDABLE  safe to delete at any time

<repo>/.agit/               agent git, gitignored
<repo>/.icn.toml            optional, committed, tiny

INFINITE_CODE_HOME으로 루트를 재정의합니다.

정체성은 경로도 원격 URL도 아닙니다. 둘 다 변경 가능합니다. 루트 커밋, 선택적 커밋된 프로젝트 ID, 정규화된 원격에서 파생되므로 클론을 이동하거나 git remote set-url을 실행하면 기존 지식에 다시 연결됩니다. 포크는 업스트림의 루트 커밋을 공유하므로, 업스트림의 메모리를 조용히 상속하는 대신 명시적으로 분할됩니다.

아무것도 파괴되지 않습니다

  • 삭제된 심볼은 마지막으로 알려진 경로와 제거한 커밋과 함께 묘비가 됩니다.

  • 엣지는 valid_from_commit / valid_until_commit을 가지며 사라지는 대신 HISTORICAL이 됩니다.

  • 사라진 체크아웃은 MISSING이고, 마운트되지 않은 드라이브는 OFFLINE입니다. 둘 다 아무것도 삭제하지 않습니다.

  • 수정은 이전 텍스트를 버전화합니다. 대체는 두 메모리와 그 사이의 링크를 모두 유지합니다.

  • 에이전트는 인간이 작성한 메모리를 재작성할 수 없습니다. 대체해야 하며, 불일치를 보이게 둡니다.

  • purge는 유일한 파괴적 작업이며 confirm=True가 필요합니다.

조회는 절대 예외를 발생시키지 않는 리졸버를 통해 진행됩니다. "현재 해결할 수 없음"은 마지막으로 알려진 것과 함께 데이터로 반환됩니다.


브랜드

마크는 제품의 한 가지 아이디어입니다. 지식(보라색)이 코드(녹색)에 앵커되어, 그렇지 않으면 그에 대한 기억을 갖지 못할 것입니다. 링은 열려 있습니다. 지식은 검증이 끝나지 않습니다.

획 두께는 16px 파비콘에서도 형태가 유지되도록 설정되었습니다. 메모리 노드는 지배적이며, 링이 흐려져도 세 개의 앵커는 삼각형으로 읽힙니다.

Hex

의미

#8b5cf6

메모리, 앵커링 — 지식

#34d399

심볼, 테스트 — 검증된 코드

#4d7cfe

파일 — 구조

#fbbf24

저장소, 주의

#f4677c

중요, 인과 체인

#1c2340

카드 표면

#151a2e

바닥

UI 전체를 지배하는 한 가지 규칙: 구조는 조용하고, 지식은 시끄럽습니다. CALLSDEFINES는 배경으로 물러나 앵커와 인과 엣지 — 다른 도구가 보여줄 수 없는 것 — 가 색을 담당합니다.

에셋은 assets/에 있습니다. 탐색기의 소스는 src/icn/web/입니다:

src/icn/web/
  explorer.html    shell and markup
  explorer.css     the design system above, as custom properties
  explorer.js      force layout, canvas rendering, inspector
  mark.svg         logo
  banner.svg       header

실제 .html, .css, .js 파일이 문자열 리터럴 대신 사용되므로 편집기가 그들을 실제로 취급합니다. 렌더링 시 인라인됩니다. 게시된 페이지는 단일 자체 포함 파일로 유지되어야 하기 때문입니다.


도구

도구

작업

workspace

open · status · list · reindex · health · reconcile · archive · detach · forget_checkout · purge

investigate

검색 · why · expand · verify

record

하나의 이벤트 → 많은 앵커된 사실

memory

get · list · verify · guard · correct · supersede · resolve · reanchor

agit

status · diff · commit · log · branches · switch · restore · reset · show

agit은 에이전트 체크포인트를 .agit/에 유지하며, 사용자의 .git과 완전히 분리됩니다. 위험한 작업을 체크포인트하고, 복원하고, 그들의 히스토리를 건드리지 마십시오.


테스트

python -m pytest

172개의 테스트 — 실제 서버를 stdio로 실행하고 전체 에이전트 워크플로를 와이어 프로토콜로 구동하는 라이브 MCP 스위트와, 커밋되지 않은 편집(리포맷, 이름 변경, 본문 변경, 파일 간 이동, 삭제, 약한 마이그레이션)에 대한 캐스케이드 동작을 주장하는 더티 워크트리 하네스를 포함합니다.

이 체계는 게시된 문헌에 의해 검증되지 않았습니다. 문헌은 사후 커밋 히스토리 마이닝만 측정하기 때문에, 여기서 직접 측정됩니다.

라이브 테스트는 그 가치를 입증합니다. 프로세스 내 테스트가 볼 수 없는 버그를 발견했습니다. 서브프로세스 호출이 서버의 stdin을 상속했는데, 그것이 MCP 프로토콜 파이프입니다. Git은 모든 도구 호출에서 전체 20초 타임아웃 동안 차단되었고 프로토콜 바이트를 삼킬 수 있었습니다. 수정으로 도구 지연 시간이 20초에서 0.2초로 줄었습니다.

실제 4,621개 파일 저장소에서 측정

전체 인덱스

593초 → 34,747개 심볼, 58,857개 엣지, 43,038개 호출 엣지

웜 오픈

0.77초

쿼리

1.48초


설계

각 결정의 근거는 그 결정이 규제하는 코드 옆에 있습니다. 모든 모듈의 docstring은 무엇을 하는지, 그리고 더 중요하게 어떤 실패를 방지하기 위해 존재하는지를 명시합니다. anchors.py는 캐스케이드가 왜 신뢰를 낮출 수만 있는지 설명하고, briefing.pyopen이 왜 요약을 제공하는지, causal.py는 인과성이 왜 주장되고 추론되지 않는지 설명합니다.

계획 노트는 로컬에 보관되며 배송 아티팩트의 일부가 아닙니다.


제작: Ranit Bhowmick

에이전트가 코드베이스를 읽어야 이해했다면, 그 지식은 세션과 함께 사라졌을 것입니다. 이것이 해결책입니다.

F
license - not found
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • -
    license
    B
    quality
    Not graded
    maintenance
    A memory system for AI coding tools that stores and retrieves codebase context with project isolation. Enables coding assistants to maintain searchable memory of code snippets, comments, and runtime traces with full source traceability.
    27
    27
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to query project memory by linking code changes to the conversations that produced them, allowing retrieval of past decisions and constraints directly from the codebase.
    7
    Apache 2.0
  • A
    license
    A
    quality
    C
    maintenance
    Gives AI coding agents persistent, evolving knowledge about a codebase, enabling them to store and retrieve observations about architecture, conventions, gotchas, and recent work context.
    10
    29
    1
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Provides persistent, anchored memory for AI coding agents, binding every decision to specific lines of code and delivering relevant context just-in-time via the Model Context Protocol.
    1
    MIT

View all related MCP servers

Related MCP Connectors

  • Shared debugging memory for AI coding agents

  • Give your AI agent a persistent map of your project's structure, dependencies, and bugs.

  • Persistent memory and cross-session learning for AI coding assistants (hosted remote MCP).

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Kawai-Senpai/Infinite-code-next'

If you have feedback or need assistance with the MCP directory API, please join our Discord server