Skip to main content
Glama

ESEKL — Empirical Software Engineering Knowledge Layer

ESEKL은 프로덕션급 오픈소스 시스템 연구를 구조화된 에이전트 적합 도구 모음으로 전환합니다. 이는 MCP(Model Context Protocol) 서버 형태로 제공되며, 이것이 유일하게 지원되는 전달 방식입니다.

분산 시스템(큐 프로세서, 브로커, 스트리밍 파이프라인)을 다루는 에이전트는 행동 불변식을 환각(hallucinate)해 내거나, 프로덕션 실패 모드를 잘못 인용하거나, 실증적 근거가 없는 검증 계획을 생성하는 일이 빈번합니다. ESEKL은 이 격차를 제거합니다. 성숙한 오픈소스 시스템에 대한 기계적 검사로 얻은, 출처가 추적되고 증거가 레이블링된 지식을 제공하며, 원시 컨텍스트 덤프 대신 점진적 공개(progressive disclosure)를 강제하는 작업 형태(task-shaped) MCP 도구를 통해 전달합니다.

현재 코퍼스는 큐, 브로커, 스트리밍 시스템을 다룹니다: asynq, bullmq, pgmq, river, goqite, litequeue, nats-server, nsq, redpanda, rabbitmq, artemis, rocketmq.


에이전트에 도움이 되는 방식

ESEKL이 없으면 job queue를 다루는 코딩 또는 계획 에이전트는 동작 계약을 환각해서 만들거나, 패턴을 추출하려고 수천 줄의 원시 소스를 탐색해야 합니다. 두 경로 모두 한계가 있습니다. 환각은 잘못된 불변식을 낳고, 원시 파일 탐색은 에이전트가 관련 증거에 도달도 전에 컨텍스트 윈도우를 포화시킵니다.

ESEKL은 다음을 제공합니다:

  • 동작 불변식(Behavioral invariants) — 전체 코퍼스에 걸친 직접 소스 검사에서 추출되며, 각각 도출 방식(SOURCE_OBSERVED, TEST_OBSERVED, HISTORY_SUPPORTED)이 레이블로 붙어 있습니다.

  • 장애 모드 체인(Failure mode chains) — 실제 프로덕션 버그와 회귀 커밋 증거와 함께 이들을 추적할 수 있으며, 이를 종결한 정확한 커밋 해시와 테스트 함수까지 추적 가능합니다.

  • 구현 패킷(Implementation packets) — 프로덕션 파일에서 추출한 구체적 SQL 쿼리, Lua 스크립트, Go/TypeScript 스니펫 — substrate(기반) 및 mechanism 필터와 함께 제공되어, 에이전트가 목표하는 구현 클래스를 정확히 얻을 수 있습니다.

  • 설계 비평(Design critique) — 코퍼스 간부변식과 대비하여, 제안하는 아키텍처에서 누락된 fencing 보장, clock drift 위험, poison-job 격리 결괴를 표면화합니다.

  • 적대적 검증 계획(Adversarial verification plans) — 실증적 장애 증거로부터 생성되며, 즉시 테스트 스위트를 구동할 수 있습니다.

모든 결과물에는 인식적(epistemic) 레이블이 포함됩니다. 에이전트가 저장소 간추상화를 모델 추론으로 혼용하는 일이 없습니다.


Related MCP server: PactAI MCP

아키텍처: EKU가 만들어지는 방식

flowchart TD
    A["Tier 0: Raw Codebase\n(factory/<repo>)"]
    B["Tier 1: Atomic Observations\n(eku_middleware/eku_store/evidence/observations.json)\nExact file path, line range, verbatim snippet,\nlanguage, substrate"]
    C["Tier 2: Repo-Local EKUs\n(eku_middleware/eku_store/repo_ekus/<repo>.json)\nConcrete mechanism, source snippet,\ntest provenance, failure provenance\nEpistemic: REPO_LOCAL"]
    D["Tier 3: Domain EKUs\n(eku_middleware/eku_store/synthesized_queue_ekus.json)\nCross-repository behavioral invariants,\ndesign contracts, falsification audits\nEpistemic: DOMAIN_ABSTRACTION"]
    E["MCP Server\n(esekl mcp)\nProgressively discloses\nTier 1-3 via 20 tools"]
    F["Agent\n(Claude, Codex, AGY, etc.)"]

    A -->|"Mechanical inspection\nAST + grep + test suite link"| B
    B -->|"RepoEKU authoring\nvalidate_evidence_ledger.py"| C
    C -->|"Cross-corpus synthesis\nClaim matrix + keyword groups"| D
    D --> E
    C --> E
    B --> E
    E -->|"JSON-RPC 2.0 / stdio"| F

factory 디렉터리에는 커밋 고정(commit-pinned)된 소스 저장소 체크아웃이 보관되어 있습니다. 검사는 기계적으로 수행됩니다: 소스 파일 경로, 라인 범위, 원문 그대로의 코드 스니펫, 테스트 함수 이름이 Atomic Observation으로 캡처됩니다. 이러한 관찰은 Repo-Local EKU(단일 저장소에 귀속된 구체적이고 증거를 담은 레코드)로 그룹화된 다음, 명시적 반증(falsification) 감사와 함께 코퍼스 간 동작 불변식을 담은 Domain EKU로 종합됩니다. MCP 서버는 정적 스토어를 읽어 점진적 공개 도구를 통해 서빙합니다. 에이전트는 이 도구를 통해서만 상호작용하며, 원시 스토어를 직접 다루지 않습니다.

지식 스토어(eku_store/)는 npm 패키지 안에 번들로 포함되어 있습니다. 별도의 초기화 단계는 필요하지 않습니다. MCP 구성을 한 번 추가하면 npx를 실행할 수 있는 모든 시스템이 즉시 전체 코퍼스를 사용할 수 있습니다.


설치

설치 단계가 필요하지 않습니다.

eku_store/ 디렉터리와 마찬가지로 esekl npm 패키지 내부에 직접 번들됩니다. npx esekl mcp가 실행되면 서버는 패키지 디렉터리에서 스토어를 확인합니다 — 로컬 복사본, init, 프로젝트별 설정이 필요 없습니다.

아래 구성 중 하나를 사용하여 MCP 서버를 에이전트 호스트에 연결하세요.


MCP 구성

이 하나의 JSON 블록은 모든 시스템과 모든 프로젝트에서, 경로 설정이나 사전 준비 없이 동작합니다:

{
  "mcpServers": {
    "esekl": {
      "command": "npx",
      "args": ["-y", "esekl", "mcp"]
    }
  }
}

스토어 결정 순서 (첫 번째 일치 우선):

  1. --store-root=<path> — 명시적 오버라이드, 고급 사용을 위한 옵션.

  2. ~/.esekl/store — 완전 오프라인 또는 커스텀 코퍼스를 위해 esekl init을 실행한 경우.

  3. <package_dir>/eku_store — 패키지에 번들, 항상 사용 가능, 설정 불필요.

Claude Desktop

~/.config/claude/claude_desktop_config.json(macOS: ~/Library/Application Support/Claude/claude_desktop_config.json)을 편집하고 위 파이프 블록을 추가합니다. Claude Desktop을 다시 시작합니다.

AGY (Antigravity)

AGY MCP 구성 파일에 위 파이프 블록을 추가합니다. 대부분의 AGY 구성에서는 추가할 필요는 없습니다.

Codex CLI

~/.codex/config.toml에 추가합니다:

[mcp_servers.esekl]
command = "npx"
args = ["-y", "esekl", "mcp"]

JSON mcpServers 구성을 accept하는 Codex 환경에서는 위 JSON 블록을 사용하면 됩니다.


도구 구성

MCP 서버는 3개 계층에 걸쳐 20개 도구를 제공합니다.

발견 및 탐색(6개 도구)

도구

필수 인자

용도

get_capabilities

없음

코퍼스 메타데이터: 도메인, 총 EKU 수, 저장소, 커버리지 비율.

list_dossiers

없음

언어 및 스토리지 엔진 필터와 함께 페이지네이션된 저장소 dossier 목록.

get_dossier_summary

repo

한 저장소의 핵심 메커니즘과 특수 조건을 요약한 요약 정보.

list_research_threads

없음

연결된 Domain EKU ID가 있는 저장소 간 장애 테마 목록.

get_dossier_slice

repo, sliceType

dossier의 구조적 슬라이스: architecture, state_machine, lease_management, failure_recovery, concurrency_control.

compare_engines

repoA, repoB

두 엔진을 메커니즘, 불변식, 스토리지 기반(substrate) 측면에서 나란히 비교.

증거 및 계층적 검색(12개 도구)

도구

필수 인자

용도

search_evidence

query

EKU, 클레임, 관찰, 장애에 걸친 다요인 검색. layer 필터를 지원.

get_eku

ekuId

전체 Domain EKU: 동작 불변식, designed 계약, 검증 계약, 코퍼스 통계.

list_repo_ekus

없음

메커니즘 및 개체 유형 필터를 통해 페이지네 이션된 Repo-Local EKU 목록.

get_repo_eku

repoEkuId

정확한 소스 라인, SQL/Lua 스니펫, 테스트 스위트 출처까지 포함한 전체 Repo-Local EKU.

list_keyword_groups

없음

Repo-Local EKU를 묶어 집계하는 횡단(cross-cutting) 키워드 및 하부 구조 facet 그룹.

get_keyword_group

groupId

참여하는 Repo-Local EKU와 연관된 Domain EKU가 포함된 전체 키워드 그룹.

trace_domain_eku

ekuId

Domain EKU를 지원하는 Repo-Local EKU, 키워드 그룹, 원시 관찰까지 추적.

get_failure_patterns

problemStatement

문제 설명에 관련된 2차 장애 패턴과 취약점 시그니처.

get_failure_chains

없음

인과적 장애 체인: 트리거, 불변식 붕괴, 최종 장애, 회귀 테스트 상태.

get_implementation_evidence

없음

Repo-Local EKU에서 파생되며 substrate와 mechanism으로 필터링된 동적 구현 패킷.

explain_provenance

evidenceId

어떤 ID든 정확한 파일 경로, 범위 범위, 컴밋 해시, 스니펫 SHA-256, 테스트 함수까지 추적.

get_data_quality_report

없음

Repo-Local 및 Domain EKU에 걸친 누락된 필드와 깨진 참조를 표면화하는 진단 감사.

설계 비평 및 검증(2개 도구)

도구

필수 인자

용도

compare_design_against_evidence

proposedDesign

제안된 아키텍처를 실증적 불변식과 대조하고, 일치하는 EKU, 누락된 보장, 그리고 "약속하지 말아야 할 것" 계약을 반환.

generate_verification_plan

requirementOrDesign

실증적 증거와 과거 장애에 직접 매핑된 적대적 테스트 스위트를 생성.


결과 형태

get_eku

{
  "id": "EKU-QUEUE-015",
  "title": "Fenced Domain Result Promotion & Outbox Emission",
  "objectType": "BEHAVIORAL_INVARIANT",
  "claimId": "CLM-015",
  "problem": "A queue can fence stale completion of the job row while still allowing a superseded worker to write authoritative domain results or emit an outbox event.",
  "behavioralInvariant": "Ownership fencing must guard every authoritative side-effecting state mutation, including domain result promotion or outbox emission, not only queue-row completion.",
  "designContract": "Before committing a result row, payment ledger projection, or sendable outbox record, the storage transaction must prove current job ownership by token/generation.",
  "verificationContract": [
    "Worker A owns generation 1 and pauses.",
    "Worker B owns generation 2 and completes.",
    "Worker A attempts domain result promotion and queue completion.",
    "Both stale writes affect zero authoritative rows and emit stale-owner telemetry."
  ],
  "supportingEvidence": ["OBS-BULLMQ-002", "OBS-LITEQUEUE-002"],
  "historicalEvidence": ["HIST-RIVER-003"],
  "corpusStats": {
    "corpusSize": 13,
    "applicable": 7,
    "supports": 2,
    "counterexamples": 3
  }
}

get_repo_eku

{
  "repoEku": {
    "id": "REKU-RIVER-001",
    "repository": "river",
    "mechanism": "Relational Lock-Free Dequeue (FOR UPDATE SKIP LOCKED)",
    "claim": "PostgreSQL FOR UPDATE SKIP LOCKED allows concurrent worker pools to acquire non-overlapping available jobs without table-level locking.",
    "localContext": "River implements its primary job queue inside PostgreSQL. It relies on FOR UPDATE SKIP LOCKED in its sqlc query to scale Go worker goroutines.",
    "sourceProvenance": {
      "filePath": "riverdriver/riverpgxv5/internal/dbsqlc/river_job.sql",
      "lineRange": [45, 55],
      "queryOrCodeSnippet": "SELECT id, args, attempt, state FROM river_job WHERE state = 'available' ORDER BY priority ASC, scheduled_at ASC LIMIT $1 FOR UPDATE SKIP LOCKED;"
    },
    "testProvenance": {
      "filePath": "internal/jobexecutor/job_executor_test.go",
      "testName": "TestJobExecutor"
    },
    "epistemicStatus": "REPO_LOCAL"
  }
}

explain_provenance

{
  "evidenceId": "OBS-BULLMQ-002",
  "type": "OBSERVATION",
  "repository": "taskforcesh/bullmq",
  "commitHash": "c06b51cd3aacd0d9ee65e2544220c89f24d2479c",
  "filePath": "src/commands/moveToFinished-12.lua",
  "lineRange": { "start": 40, "end": 44 },
  "sourceUrl": "https://github.com/taskforcesh/bullmq/blob/c06b51cd3aacd0d9ee65e2544220c89f24d2479c/src/commands/moveToFinished-12.lua#L40-L44",
  "snippetSha256": "4b68e98da6984e1b00ad99e74d1c448bb5bbcb110cb16246473133604f32616f",
  "epistemicStatus": "SOURCE_OBSERVED"
}

compare_design_against_evidence

{
  "matchingEkus": ["EKU-QUEUE-015", "EKU-QUEUE-016", "EKU-QUEUE-017"],
  "missingInvariants": [
    {
      "invariant": "Storage-Time Lease Evaluation",
      "severity": "CRITICAL",
      "risk": "Caller-supplied VM timestamps allow clock drift across container hosts to cause premature lease expiration or duplicate execution.",
      "recommendedFix": "Use database server time (e.g. clock_timestamp()) exclusively in lease recovery queries."
    }
  ],
  "whatNotToPromise": [
    "Never promise true exactly-once delivery over external network boundaries without partner idempotency keys.",
    "Never promise constant latency during unmetered enterprise batch spikes; enforce admission semaphores and HTTP 429/503."
  ],
  "epistemicClassification": {
    "empiricalEvidenceCount": 8,
    "modelInferredPoints": 2
  }
}

저장소 레이아웃

eku_middleware/          npm package root (published as esekl)
  bin/                   CLI and MCP server entry points
  src/                   MCP server implementation
  eku_store/             Static knowledge store — ships bundled inside the package
    evidence/            Atomic observations and historical failure records
    repo_ekus/           Repo-Local EKUs per repository
    synthesized_queue_ekus.json   Cross-corpus Domain EKUs
    claim_matrix.json             Claim-to-corpus coverage matrix
    schema/              JSON schema and specification for RepoEKUs
    release/             factory_repo_lock.json — commit-pinned source provenance
  mcp_contract.md        Full JSON-RPC contract with input/output schemas

analyzer/                Validation scripts (not shipped in npm package)
factory/                 Local raw repository cache for research rounds (git-ignored)

인식적 레이블(Epistemic Labels)

모든 도구 결과에는 명시적 레이블이 포함됩니다. 에이전트는 이를 제거하거나 무시해서는 안 됩니다.

레이블

의미

SOURCE_OBSERVED

프로덕션 소스 파일과 AST 구조에 대한 직접 기계적 검사.

TEST_OBSERVED

대상 저장소 내 회귀 테스트 스위트의 직접 검사.

HISTORY_SUPPORTED

검증된 실제 프로덕션 사고, 버그 수정 또는 문제 커밋.

DOCUMENTED

아키텍처 문서 또는 공식 사양의 진술.

MODEL_INFERRED

기재된 관찰을 바탕으로 계층적 합성을 수행한 추론.

CROSS_REPO_ABSTRACTION

두 개 이상의 코드베이스에 걸쳐 검증된 일반적인 행동 속성.

SYNTHESIZED_ADVICE

실증적 불변식에서 파생된 실행 가능한 아키텍처 지침.


전체 MCP 계약

20개 도구의 완전한 입력 및 출력 스키마는 다음에 있습니다: eku_middleware/mcp_contract.md

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to search code by meaning, explore codebase structure, store and query knowledge with temporal facts, and read source code through a set of MCP tools.
    310 npm
    7
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Serves coding agents with project-specific knowledge (decisions, conventions, constraints) over MCP and provides verification verdicts on whether code still complies.
    365 npm
    AGPL 3.0
  • A
    license
    Not graded
    quality
    A
    maintenance
    An MCP server that enables verified agents to retrieve from, propose changes to, and share capabilities around a human-owned Markdown/Git knowledge base, ensuring curation, exact-byte approval, and Git-based promotion.
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables MCP agents to maintain durable, evidence-aware project knowledge, retrieve precise excerpts on demand, and track decisions, conflicts, and revisions across sessions.
    1
    Apache 2.0