Agent AI

Building Stateful AI: Integrating Aura Agent Lifecycle with MCP and Persistent Memory

hsystems 2026. 4. 30. 09:25
728x90
반응형

에이전트가 작업을 실행하는 것뿐만 아니라 전용 메모리 계층을 통해 학습하고 발전하는 폐쇄 루프 시스템을 만드는 방법에 대한 탐구입니다.

Gemini가 상상한 에이전트 수명 주기

휴가에서 돌아온 후 지난 2주 동안 나는 에이전트 메모리에 큰 초점을 맞추는 것을 보았습니다. 모든 것이 중요합니다사용자와 사용자의 선호도에 대해 파악하는 동시에 과거 반복을 사용하여 실제로 작업 해결 능력을 향상시킵니다.

이를 바탕으로 에이전트가 시스템 간 복사 붙여넣기 없이 자동으로 학습하고 자체 개선할 수 있는 폐쇄 루프가 필요합니다. 여기서 우리의 접근 방식을 테스트해 볼 수 있습니다. Neo4j Aura 에이전트는 API를 통해 관리하고 호출할 수 있으므로 주 에이전트는 Neo4j Aura에 하위 에이전트를 구축하고 이를 평가하며 지속성을 위해 학습한 내용을 메모리에 저장할 수 있습니다.

면책조항: 저는 현재 Neo4j에서 일하고 있기 때문에 Neo4j를 예로 사용하고 있습니다.

사용 가능한 하위 에이전트를 개선하고 최적화할 수 있는 자체 학습 에이전트를 구축하는 이면의 아이디어입니다.

위의 다이어그램은 이러한 자가 학습 루프의 실제 동작을 보여줍니다.

주 에이전트는 목표 결정 및 전략으로 시작한 후 다음과 같은 4가지 주요 단계를 거칩니다.

  1. 작업에 맞는 하위 에이전트 구축,
  2. 이를 호출하고 실행하며,
  3. 성과를 평가하고, 마지막으로
  4. 효과가 있었던 것과 그렇지 않은 것을 기반으로 하위 에이전트를 업데이트합니다.

각 반복은 전략에 다시 피드백되는 동시에 모든 학습과 경험은 메모리에 유지되므로 에이전트는 시간이 지남에 따라 늘어나는 지식 기반을 읽고 쓸 수 있습니다.

이렇게 하면 루프가 닫힙니다. 에이전트는 작업을 한 번만 해결하는 것이 아니라 향후 유사한 작업을 더 잘 해결하게 됩니다.

아키텍처가 명확해지면 다음 결정은 실제로 메모리 계층을 구현하는 방법입니다. 원시 추적, 정제된 교훈 또는 상호 연결된 통찰력의 그래프 등 경험과 학습이 구조화, 저장 및 검색되는 방식과 에이전트가 전략을 결정할 때 이 메모리를 쿼리하는 방식을 선택해야 합니다.

올바른 메모리 구현은 일회성 실행 파이프라인을 시간이 지남에 따라 진정으로 지식을 합성하는 시스템으로 바꾸는 것입니다.

저는 단순하게 유지하는 것을 좋아하는데, 최근에는 Andrej Karpathy가에 대한 그의 생각LLM 기술 자료.

X(이전 Twitter)의 Andrej Karpathy: "LLM 지식 베이스최근에 매우 유용하다고 생각하는 것: LLM을 사용하여 연구 관심 주제에 대한 개인 지식 기반을 구축하는 것입니다. 이런 식으로 최근 토큰 처리량의 상당 부분이 코드 조작이 아닌 조작에 더 많이 사용됩니다... / X"

LLM 지식 베이스최근 제가 매우 유용하다고 생각하는 것: LLM을 사용하여 다양한 연구 관심 주제에 대한 개인 지식 기반을 구축하는 것입니다. 이런 식으로 최근 토큰 처리량의 상당 부분이 코드 조작보다는 코드 조작에 더 많이 사용됩니다.

Karpathy의 아이디어는 마크다운 파일 저장소를 저장소로 사용하여 Wiki 스타일 지식 기반을 구축하도록 LLM에 지시하는 것입니다. 원시 문서를 저장하고 색인화하는 대신 LLM은 문서를 처리하고 흥미로운 정보만 Wiki에 저장합니다. 에이전트 메모리를 저장하는 데에도 이 접근 방식을 재사용할 수 있습니다. 유일한 차이점은 문서의 정보 대신 학습을 저장한다는 것입니다.

또한 마크다운 파일은 LLM이 작업할 수 있는 자연스러운 추상화이지만 프로덕션에서 직접 관리하면 빠르게 지저분해질 수 있습니다. 그 외에도 LLM에게 터미널 및 파일 시스템에 대한 액세스 권한을 부여하는 것은 실제 보안 문제입니다. 나는 LangChain이 마크다운 콘텐츠를 데이터베이스에 저장하는 동시에 LLM에 파일로 제공할 것을 권장한다는 것을 본 기억이 납니다. 이는 문제를 완전히 분리하는 것입니다. 여기서는 Karpathy의 Knowledge Base에서 영감을 받아 Neo4j를 사용하여 에이전트 메모리를 저장하는 유사한 접근 방식을 취할 것입니다.

이 블로그 게시물 전반에 걸쳐 데이터베이스를 검사하고, 에이전트를 관리하고, 학습 내용을 메모리에 저장할 수 있는 MCP 서버를 구축하겠습니다.

Aura Agents Management MCP 서버의 도구 목록입니다.

The 에이전트가 작업 중인 데이터를 알 수 있도록 스키마를 가져오겠습니다.

The 전체 CRUD 수명 주기와 호출을 포괄하므로 프로그래밍 방식으로 하위 에이전트를 생성, 업데이트, 삭제 및 실제로 실행할 수 있습니다.

The 메모리/위키 그룹사용할 수 있는 터미널 명령이 없기 때문에 메모리 페이지 쓰기, 읽기, 추가, 검색, 연결을 위한 전용 도구가 필요합니다.

MCP는 다음에서 사용할 수 있습니다..

GitHub – tomasonjo/aura-agents-management-mcp: Neo4j Aura Agents API용 MCP 서버와 Neo4j가 지원하는 Karpathy 스타일 LLM 작성 위키 메모리

환경을 준비하는 것부터 시작하겠습니다.

Neo4j Aura 및 Aura 에이전트

아이디어는 간단합니다. 지식 그래프 생성이든 검색이든 에이전트가 작업을 수행하고 이에 대해 학습하고 접근 방식을 업데이트할 수 있으면 자연스럽게 자체 개선 루프가 됩니다. 이 게시물에서는 에이전트가 생성하고 업데이트할 수 있도록 허용하여 해당 루프를 구현하겠습니다.Aura 에이전트.

계속하려면 데이터가 이미 로드된 Neo4j Aura 인스턴스가 필요합니다. 아직 인스턴스가 없다면 지금 인스턴스를 생성하세요. 상담사가 액세스할 수 있도록 플러그인으로 선택하세요.

데이터베이스가 이미 채워져 있다면 좋습니다. 그렇지 않으면 복원할 수 있습니다.회사 덤프다음 중 하나를 사용하거나 로드하고 있습니다.샘플 데이터 세트.

Neo4j Aura에서 일부 데이터 세트를 사용할 수 있습니다.

인스턴스가 작동되고 채워지면 조직의 설정으로 이동하여 기본 설정에서 활성화되어 있는지 확인하세요.

조직 설정에서 Aura 에이전트를 활성화합니다.

마지막으로 다음이 필요합니다.Aura API 자격 증명프로그래밍 방식으로 에이전트와 상호 작용합니다. 계정 설정으로 이동하여 API 키 탭을 열고 새 키를 생성하세요. 이러한 자격 증명을 편리하게 보관하십시오. MCP 서버 구현 전반에 걸쳐 사용할 것입니다.

다음으로 MCP 서버를 구현하겠습니다.

Aura 에이전트 관리 MCP 서버

MCP 서버의 구현은 매우 간단합니다. 두 가지 유형의 도구가 있습니다. 하나는 에이전트 수명 주기 및 실행을 처리하는 도구이고 다른 하나는 에이전트가 학습한 내용을 영구 메모리에 저장할 수 있는 도구입니다.

Aura Agent 수명주기 도구

먼저, 다음을 사용하여 Aura 에이전트 수명 주기 도구를 구현하겠습니다.Aura 에이전트 API 사양. 에이전트 인터페이스에 사용 가능한 엔드포인트는 다음과 같습니다.

여기서는 변환이 필요 없이 엔드포인트를 에이전트 도구에 일대일로 간단히 매핑할 수 있습니다.

또한 기존 데이터베이스를 나열하고 해당 스키마를 검사하는 도구가 필요합니다. 데이터베이스 조회의 경우 흐름을 단순화했습니다. 조직, 프로젝트, 인스턴스 및 최종 데이터베이스를 나열하기 위한 별도의 도구 대신 단일 도구가 모든 조직, 프로젝트 및 인스턴스를 반복하고 사용 가능한 모든 데이터베이스를 표시합니다.

스키마 조회를 위해 API가 직접 Cypher 액세스를 노출하지 않기 때문에 사전 정의된 스키마 도구가 장착된 사용자 지정 에이전트를 만들어야 했습니다. 데이터베이스를 쿼리하는 유일한 방법은 에이전트를 호출하는 것입니다. 다음은 스키마를 가져올 수 있도록 구현한 맞춤 도구가 포함된 스키마 에이전트의 정의입니다.

agent = await _request(
    "POST",
    base,
    json={
        "name": "_schema_probe",
        "description": "Temporary agent for schema retrieval",
        "dbid": dbid,
        "is_private": False,
        "system_prompt": system_prompt,
        "tools": [
            {
                "type": "cypherTemplate",
                "name": "get_schema",
                "description": "Fetch the node/relationship schema via apoc.meta.schema().",
                "enabled": True,
                "config": {
                    "template": "CALL apoc.meta.schema() YIELD value RETURN value",
                    "parameters": [],
                },
            },
            {
                "type": "cypherTemplate",
                "name": "get_indexes",
                "description": "Fetch fulltext and vector indexes.",
                "enabled": True,
                "config": {
                    "template": (
                        "SHOW INDEXES YIELD name, type, labelsOrTypes, properties, options "
                        "WHERE type IN ['FULLTEXT', 'VECTOR'] "
                        "RETURN name, type, labelsOrTypes, properties, options"
                    ),
                    "parameters": [],
                },
            },
        ],
    },
)

에이전트는 요청 시 가동되고, 스키마에 대해 쿼리되고, 정보가 검색되면 제거됩니다. 이는 에이전트 계층을 우리가 직접 호출하는 Cypher 액세스를 위한 씬 프록시로 효과적으로 사용하여 스키마 내부 검사를 독립적으로 유지하고 데이터베이스에 연결된 장기 프로브 에이전트를 방지합니다.

내 예시 데이터베이스에서 그래프의 스키마를 검사하면 다음과 같은 답을 얻을 수 있습니다.

데이터베이스 스키마 정보.

Karpathy의 메모리 모듈

두 번째 부분은 메모리 모듈입니다. 메모리가 없으면 에이전트는 모든 세션을 처음부터 시작하므로 이전에 구축한 컨텍스트나 통찰력이 손실됩니다. 메모리 모듈은 상담원에게 기억할 가치가 있는 내용을 기록할 수 있는 공간을 제공하여 이 문제를 해결하므로 유용한 정보가 세션 전반에 걸쳐 전달됩니다.

MCP 서버에서 메모리는 선택 사항입니다. 에이전트는 그것 없이도 잘 실행되지만 메모리 데이터베이스에 대한 자격 증명을 제공하면 모듈이 자동으로 연결됩니다.

이는 메모리를 저장하기 위해 기본 데이터베이스와 별도로 두 번째 Neo4j 데이터베이스가 필요하다는 것을 의미합니다. 이를 위해 로컬 인스턴스를 실행하고 있지만 두 번째 Neo4j Aura 인스턴스, Docker 컨테이너 또는 편리한 다른 Neo4j 배포 등 무엇이든 작동합니다.

Karpathy의 아이디어에 따라 우리는 친숙한 추상화를 통해 메모리를 노출합니다.마크다운 파일의 파일 시스템. 이것이 바로 상담원이 보고 상호작용하는 것입니다. 그 이면에는 아래 표시된 그래프 모델로 구성된 Neo4j에 모든 것이 있습니다.

모델은 의도적으로 최소화되었습니다. 하나의 마크다운 파일을 나타내는 단일 노드 유형인 페이지가 있습니다. 각 페이지에는 경로(에이전트가 읽고 쓰는 데 사용하는 파일 시스템 스타일 식별자), 콘텐츠(마크다운 본문 자체) 및 일부 기록 필드(created_at, update_at, 크기, 일시 삭제를 위한 삭제 플래그, 페이지를 별도의 네임스페이스로 그룹화하기 위한 wiki 필드)가 포함됩니다.

유일한 관계는 페이지 간 자체 참조인 LINKS_TO입니다. 하나의 마크다운 파일이 다른 마크다운 파일을 참조할 때마다(위키 스타일 [[링크]] 생각) 이를 그래프의 가장자리로 구체화합니다. 이는 납작한 메모 더미를 에이전트가 탐색할 수 있는 것으로 바꾸어 메모리를 따로 읽는 것이 아니라 메모리 간의 연결을 따라갈 수 있도록 하는 것입니다.

메모리는 파일 시스템일 뿐이므로 에이전트는 페이지 이름을 원하는 대로 자유롭게 지정할 수 있으며 자체 장치에 그대로 둡니다. 한 세션은 Notes_about_db.md를 작성하고, 다음 세션은 db-info.md를 작성하고, 세 번째 세션은 동일한 사실을 log.md 내부에 묻습니다. 페이지가 존재하지만 상담원이 페이지를 다시 찾을 수 없으므로 메모리가 전혀 존재하지 않습니다.

약간의 지침으로 이 문제가 해결됩니다. 시스템 프롬프트에서 레이아웃을 제안함으로써 에이전트가 일관된 경로와 일관된 감각을 갖도록 유도합니다.무엇이 어디에 속하는지.

Recommended page layout — organise memories by topic, not by
conversation, so they can be recalled independently of when they
were learned. Group facts and learnings about each *database* and
each *agent* under their own page so they can be retrieved
individually rather than scanning a single mixed log:

    user/profile.md          # who they are, role, responsibilities
    user/preferences.md      # tooling, style, do / don't

    databases/<dbid>.md      # one page per Aura database. Capture:
                             #   - purpose / dataset description
                             #   - schema quirks, label & rel naming
                             #   - known-good Cypher patterns
                             #   - gotchas, slow queries, indexes
                             #   - links to related agents/concepts
    databases/<dbid>/<topic>.md  # optional sub-pages for deep dives
                             #   (e.g. databases/abc123/schema.md)

    agents/<agent_id>.md     # one page per agent. Capture:
                             #   - what it's for, who uses it
                             #   - tool list and why each was chosen
                             #   - prompt-engineering lessons
                             #   - failure modes, fixes, retries
                             #   - link to its `databases/<dbid>.md`
    agents/<agent_id>/<topic>.md # optional sub-pages

    entities/<name>.md       # people, orgs, services, repos
    concepts/<name>.md       # domain ideas worth knowing
    learnings/<topic>.md     # cross-cutting lessons not tied to one
                             # database or agent
    log.md                   # scratch / chronological notes

실제 구현된 메모리 도구는 다음과 같습니다.

  • 쓰기_메모리— 에이전트 메모리에 메모리를 저장하거나 덮어씁니다.
  • 읽기_메모리— 저장된 메모리 페이지 읽기
  • — 다시 쓰지 않고 기존 메모리에 추가
  • 이름 바꾸기_메모리— 메모리의 이름을 원자적으로 변경합니다. 또한 [[old_path]] 참조를 다시 작성합니다.
  • 삭제_메모리— 메모리 일시 삭제
  • 목록_추억— 페이지 매김, 정렬, 메타데이터를 사용하여 메모리 페이지 나열
  • 검색_메모리— 에이전트 메모리 전반에 걸친 전체 텍스트 검색
  • find_memory_backlinks— 특정 추억에 연결되는 모든 추억을 반환합니다.

아마도 메모리 도구를 더 유연하게 만들 수 있으므로 8개가 필요하지 않을 것입니다. 그렇지 않으면 테스트해 볼 준비가 되어 있습니다.

메모리 사용량의 예.

MCP 서버 실행

모든 MCP 클라이언트에서 MCP 서버를 실행할 수 있습니다. 저는 Claude Desktop을 사용하지만 어느 것을 사용하든 상관없습니다. 리포지토리 복제를 방지하려면 아래 코드 조각을 사용하여 GitHub에서 직접 MCP를 가져올 수 있습니다. 실행하기 전에 환경을 설정하고 유효한 사용자 인증 정보를 연결하기만 하면 됩니다.

{
  "mcpServers": {
    "aura_agents": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/tomasonjo/aura-agents-management-mcp",
        "aura-agents-management-mcp"
      ],
      "env": {
        "AURA_CLIENT_ID": "",
        "AURA_CLIENT_SECRET": "",
        "NEO4J_MEMORY_URI": "bolt://localhost:7687",
        "NEO4J_MEMORY_USERNAME": "neo4j",
        "NEO4J_MEMORY_PASSWORD": "password"
      }
    }
  }
}

에이전트적 자가 학습 루프

에이전트가 특정 작업에 대해 어떻게 솔루션을 학습하고, 기억하고, 적용하는지 테스트해 보겠습니다. 테스트 사례: 시장 정보 시나리오를 위해 Neo4j에서 정보를 효율적으로 검색하는 에이전트 인터페이스를 구축합니다.

시작하기 전에 두 가지 중요한 사항을 알려드립니다.

  1. 토큰 소비:이 프로세스에서는 상당한 LLM 토큰을 사용합니다. 최첨단 실험에 대한 투자라고 생각하세요(그리고 토큰 소각에 대한 자랑도 할 수 있습니다).
  2. Aura 에이전트 비용:Aura 에이전트를 실행하려면 비용을 지불해야 합니다.

먼저 당면한 작업을 정의해 보겠습니다.

우리는 다음을 포함하는 하나의 데이터베이스를 사용할 수 있습니다.회사 데이터세트시장 정보 정보와 함께. 에이전트가 Aura 하위 에이전트 구축에 대한 아이디어를 제안했으므로 시작해 보겠습니다.

이것이 우리가 토큰을 소각하는 부분입니다🔥🔥🔥. 상담사는 Aura 하위 에이전트를 생성하여 테스트하고 업데이트하며 프로세스에 대해서도 학습하고 있습니다.

따라서 기본적으로 에이전트는 벽에 부딪혀 매번 배운 내용을 기록해 왔습니다. 매우 간단한 개념이지만 빠르게 추가됩니다.

  • 🏙️ 도시의 것— 조직은 어디에나 사무실이 있다는 사실이 밝혀졌습니다. 따라서 첫 번째로 찾은 도시를 선택하면 쓰레기 결과가 나올 것입니다. 먼저 모두 수집한 다음 선택하세요.
  • 🔍 — 전체 동향 분석에 도움이 되는 기사가 하나 있는 'Tesla Consulting LLC'가 있다는 사실을 깨닫기 전까지는 이름으로 검색해도 괜찮을 것 같습니다.
  • 📅 — 일부 필드는 문자열이고 일부는 날짜/시간이며 다르게 필터링됩니다. 놓치기 쉽고, 그렇게 하면 짜증스럽습니다.

지속되는 부분은 다음에 에이전트가 가동될 때 이미 이 모든 것을 알고 있음을 의미합니다. 앰퍼샌드가 사물을 깨뜨린다거나 Tesla가 일반적인 이름이라는 것을 다시 배울 필요가 없습니다.

메모리 그래프에서 정보는 마크다운 콘텐츠와 파일 경로가 포함된 페이지로 구성됩니다. 페이지는 서로 참조할 수도 있습니다.

마크다운 파일을 페이지 노드로 추상화하는 에이전트 메모리입니다.

첫 번째 하위 에이전트 반복이 구현되고 테스트됩니다. 다음 단계를 구축할 시간입니다.

이 스크린샷에는 전체 그림이 표시되지 않습니다.Claude는 실제로 눈에 보이는 것 이상으로 확장된 출력으로 수많은 도구 호출을 수행하고 토큰을 통해 연소하고 있습니다.

그 아래에서 일어나는 일은 모델이 자체 환경을 관찰하고, 작동하는 것과 작동하지 않는 것을 알아차리고, 그에 따라 접근 방식을 조정한다는 것입니다.반복할 때마다 더 나은 에이전트를 얻을 수 있을 뿐만 아니라 똑같이 가치 있는 것도 얻을 수 있습니다. 즉, 에이전트가 실패하고 회복하고 다른 경로를 찾는 것을 지켜보며 얻은 교훈입니다.

언어 모델에 그것이 작동하는 환경을 관찰하고 재구성할 수 있는 능력을 부여하는 것에는 정말 강력한 것이 있습니다. 그것은 질문에 대답하는 것이 아니라 문제를 파악하는 것이 되기 시작합니다. 실수는 그것의 일부입니다. 각 실행은 자신이 만들고 있는지 몰랐던 가정, 고려하지 않은 가장자리, 실제로 무언가가 밀어붙이려고 할 때만 표시되는 제약 조건을 표면화합니다.

모델이 작동하고, 결과를 관찰하고, 다시 시도하는 피드백 루프에서 실제 진행이 대부분 발생합니다.

예를 들어, text2cypher 에이전트 구축에 대한 생각과 같이 에이전트의 학습 내용을 제품 관리자에게 제시할 수 있습니다. 여기서는 새로운 채팅을 사용하므로 정보는 메모리에서 가져와야 합니다.

기억을 통한 학습

또 다른 옵션은 생성된 상담사를 위한 기본 제공 채팅 인터페이스를 동료에게 제공하는 것입니다.

Aura 에이전트 채팅 인터페이스.

요약

행위자 기억에 대한 사고 실험으로 시작된 것이 보다 구체적인 것으로 바뀌었습니다.에이전트가 하위 에이전트를 구축하고, 테스트하고, 실패하고, 학습한 내용을 기록하는 작업 루프따라서 다음 시도는 마지막 시도보다 더 빨리 시작됩니다.

작품 자체는 이국적이지 않습니다.

  • Aura Agents API를 래핑하는 MCP 서버는 수명주기 제어를 제공합니다.
  • LINKS_TO 에지로 연결된 페이지로 모델링된 두 번째 Neo4j 인스턴스는 에이전트가 파일 시스템처럼 읽고 쓸 수 있는 Karpathy 스타일 위키를 제공합니다.
  • 페이지 레이아웃에 대한 시스템 프롬프트의 작은 힌트로 인해 메모리가 일관되지 않은 이름의 메모 더미로 쌓이는 것을 방지할 수 있습니다.

그 어느 것도 중장비가 아니며 그게 요점입니다.

이것을 흥미롭게 만드는 것은 인프라가 아니라 세 가지 요소가 모두 연결되면 발생하는 일입니다.

에이전트는 각 작업을 새로운 시작으로 처리하지 않습니다. 조직 이름이 지저분하고, 날짜 필드가 해당 유형에 관한 것이며, 특정 암호 패턴이 특정 스키마에서 다른 암호 패턴보다 더 잘 작동한다는 점을 기억합니다.

이는 우리가 하드코딩한 통계가 아니라 상담원이 벽에 부딪혀 벽에 기록할 가치가 있다고 판단하여 얻은 교훈입니다.

MCP는 다음에서 사용할 수 있습니다..

GitHub – tomasonjo/aura-agents-management-mcp: Neo4j Aura Agents API용 MCP 서버와 Neo4j가 지원하는 Karpathy 스타일 LLM 작성 위키 메모리


  • 채팅GPT
  • 지식 그래프
  • mcp

에이치시스템즈LogTree는 Neo4j 기반 GraphRAG 플랫폼으로, 데이터를 자동으로 지식그래프화하고 자연어 질의로 즉시 답을 제공합니다.

👉 에이치시스템즈 홈페이지

728x90
반응형