온디바이스 LLM을 이용(GPT-OSS) 셀프개발한 메모리기능이 있는 ASKBOT 테스트

주요 테스트 :


바이브 코딩 플로우를 mermaid 차트로 시각화해 그려죠

Decision reasoning: Result 1은 “Mermaid Flowchart for Vibe Coding Workflow”라는 제목과 함께 바이브 코딩 플로우를 mermaid 차트로 시각화한 내용을 제공하고 있어, 사용자의 요청과 정확히 부합합니다.

아래에 Mermaid 문법으로 작성한 “바이브 코딩 플로우” 차트입니다.
(전 단계‑후 단계 순서, PDCA 루프, KPI·CI 자동화까지 포함)

차트 해설

단계주요 활동
Specification요구사항 수집 → 명세서 작성 → 아키텍처 설계 → 코딩 가이드라인 정의
Rules정적 분석 도구 설정 → 코드 리뷰 체크리스트 작성 → CI/CD 파이프라인 구성
Oversight코드 리뷰 진행 → 통과/불통과 판정 → 병합 또는 개선 요청
PDCA배포 → 성능·버그 보고 → 문제 없으면 종료, 있으면 반복
KPI커버리지, 배포 주기, 버그 발생률, 리뷰 통과율 측정
CI 자동화푸시 → 빌드 → 정적 분석 → 단위/통합 테스트 → 배포 준비

이 차트를 그대로 mermaid.live 같은 온라인 편집기에 붙여넣으면 시각화된 플로우를 바로 확인할 수 있습니다. 필요에 따라 노드·링크 색상, 레이아웃 등을 조정해 보세요!
 참고 문서:  

방금작성한 바이브 flow를~ MCP플로우를 고려 업데이트

Decision reasoning: Result 1은 “Mermaid Flowchart for Vibe Coding Workflow”라는 제목과 함께 바이브 코딩 플로우를 mermaid 차트로 시각화한 내용을 제공하고 있어, 사용자의 요청과 정확히 부합합니다.

  • 확률적으로 깨짐현상 발생하며 다음 두가지 방식으로 개선가능
    • 생성용 프롬프트를 자체를 안깨트리게 개선 - 모델이 저성능인 원인일수도 있음
    • 깨짐 발생을 수정하는 세이프변환 로직 - 비LLM


아래는 MCP(모델 컨텍스트 프로토콜) 로직을 기존 “바이브 코딩 플로우”에 통합한 Mermaid 차트입니다.

  • 클라이언트 → LLM 추론 엔진 → MCP 서버 라는 흐름이 “Specification” 단계에 삽입됩니다.
  • 이후 기존 “Rules → Oversight → PDCA” 순서가 그대로 유지되며, MCP와 관련된 노드를 MCP 서브그래프로 묶었습니다.
  • KPI CI 자동화도 별도 서브그래프로 두어 가시성을 높였습니다.

주요 변경 포인트

단계기존MCP 통합 후
Specification요구사항 → 명세서 → 아키텍처 → 가이드라인위 단계 뒤에 클라이언트 → LLM 추론 엔진 → MCP 서버 흐름 추가
Rules정적 분석, 체크리스트, CI/CD 구성MCP 서버가 완료된 뒤 바로 Rules 단계로 이동
Oversight코드 리뷰 → 병합/개선동일
PDCA배포 → 피드백 루프동일
KPI / CI 자동화별도 서브그래프동일, MCP와 연계된 지표가 필요하면 추가 가능

사용 팁

  1. MCP 서브그래프는 필요에 따라 색상이나 레이아웃을 조정해 시각적으로 구분합니다.
  2. MCP 서버가 실제 서비스되는 엔드포인트라면, API 호출·JSON‑RPC 같은 세부 메커니즘을 별도 노드로 추가해 보세요.
  3. KPI에서 “MCP 호출 성공률” 같은 지표를 추가하면, 프로토콜 자체의 품질을 모니터링할 수 있습니다.

위 Mermaid 코드를 mermaid.live 또는 VS Code의 Mermaid 플러그인에 붙여넣으면, MCP가 포함된 전체 바이브 코딩 플로우를 한눈에 확인할 수 있습니다. 필요 시 노드 연결이나 레이아웃을 자유롭게 조정해 주세요!
 참고 문서:



공유메모리 검토


MCP이용시


ASK BOT 을 만들기위한프롬프트

이 프로젝트는 dotnet 9.0을 사용하며 풀스택(API,UI) 으로 구성되어 있습니다.
PostgreSQL를 이용한 검색및 벡터검색이 가능하고 Neo4j를 활용 그래프 탐색도 가능합니다.

ASKBot 기능을 개선하기위해 다음 ASIS의 문제를 개선지침을 참고해 개선수행해주세요
개선에 필요한 부가정보도 포함되었으니 필요한 부분을 참고해 충분히 이해한후 수행

## ASIS
- Postgres를 이용 장기기억 메모리는 가지고 있어 이것을 검색하는 기능은 있습니다.
- 현재 ASKBot은 이전대화와 다음대화를 고려하지 않고 단발성 응답만 가능합니다.
- 동일세션에서 대화를 이어가는 기능이 없어~ 세션내 대화의 맥락을 이해하지 못합니다.

## 개선지침
- ChatBotActor는 사용자 세션별로 생성되어, 세션당 대화를 임시저장할수 있습니다.
- 세션당 유저의 대화는 최대 10개까지 저장할수 있으며, 10개가 넘으면 가장 오래된 대화를 삭제합니다. 
  - 삭제하기전 대화내용중 중요하다고 판단되는것은 , 단기메모리를 분석해 가지고 있습니다.
  - 단기메모리의 최대크기는 500자 이내로 유지하며, 새로운 유저의 대화의 정보와 비교해 업데이트합니다.
  - 응답이 완료되면 가장 최근 1개의 응답결과는 별도로 저장합니다.
    - 이것을 저장하는 이유는, 응답한 결과의 내용중 중요한 내용이 있을수 있으며, 다음대화에서 이 내용을 활용할수 있기 때문입니다. 
    - 대화때마다 마지막 응답을 항상 참고하지는 않습니다.
- ChatBotActor는 대화요청에 대해, 단기메모리와 장기메모리를 모두 활용해 응답을 생성합니다.
  - 단기메모리는 대화의 맥락을 이해하는데 활용합니다.
    - 안녕, 너는 누구야? -> 나는 ASKBot이야. 너는 누구니? -> 나는 개발자야 -> 아 개발자구나 반가워
      - 이런식으로 대화의 맥락을 이해하는데 활용합니다.  
    - 궁금한게 있어 -> 뭐가 궁금한데? -> AI 개발방법론이 궁금해 -> 나의 메모리에서 찾아볼게
      - 이런식으로 대화의 맥락을 이해하면서 메모리 검색을 합니다.
  - 장기메모리는 사용자의 요청에대해 관련된 메모리를 검색하는데 활용합니다. 이것은 이미 구현되어 활용하면 됩니다.
- 현재 추론과정을 보여줍니다. 메모리검색이 필요없을때 단순응답시에는 추론과정을 UI에 표시하지 않습니다.
  - 추론과정의 기능은 잘작동함으로 UI에서만 제어합니다. 검색이 필요한경우 검색결과가 있습니다. 이벤트가 오기때문에 이때 추론과정을 표시해도됩니다. 

## 프로젝트 위치및 설명
- src/Memorizer/ 하위디렉토리에 있습니다.
- src/Memorizer/Controllers - API컨트롤러가 있습니다.
- src/Memorizer/Services - 검색로직을 포함 서비스로직이 있습니다.
- src/Memorizer/Services/ILlmService.cs - LLM및 임베딩을 이용할수 있습니다.  
- src/Memorizer/Views - UI관련 뷰파일이 있습니다.
- src/Memorizer/Actors - 액터모델이 있으며, 액터모델이 필요시 참고합니다. 
  - ChatBotActor.cs - SSE를 엣지로 사용자와 연결해 대화요청을 처리하는 액터모델입니다. 검색,판단 액터를 이용해 응답을 생성합니다.
  - SearchMemoryActor.cs - 메모리 검색을 담당하는 액터모델입니다.
  - DecisionActor.cs - 검색된 메모리와 요청내용이 관련성이 있는지 판단하는 액터모델입니다.
  - MetadataEmbeddingActor.cs - 메타데이터 임베딩을 담당하는 액터모델입니다. 메모리 등록시 메타데이터 임베딩을 비동기로 처리합니다. 이 과정에서 임베딩을 이용 벡터화합니다.
  - GraphsyncActor.cs - Neo4j를 이용해 ,Postgres데이터를 그래프로 모델로 싱크하는 액터모델입니다.
- src/Memorizer.IntegrationTests - 통합테스트 프로젝트가 있습니다.
- PageUrl : 다음과 같은 페이지 url을 가지고 있습니다.
    - ui/blog
        - ViewMore : 팝업버튼을 통해 컨텐츠보기
    - ui/view/2b61629b-d5b4-41c2-8163-6670893df238 : id별로 컨텐츠보기
    - ui/askbot - 챗봇 페이지

  
## 로컬 테스트방법
- docker-compose.local-psmon.yml 를 통해 로컬에서 테스트 가능합니다. 도커구동 문제시 이파일을 사용할것..
- 기본구성이 구동되어 있을수 있으며~ down 명령으로 전체를 내리지말고 memorizer-app 만 재빌드후 재구동할것
- 이 어플리케이션은 memorizer-app 를 통해 빌드및 작동됩니다. 재빌드/재구동이 필요할시, dotnet cli없이 도커로만 이용해주세요
- 테스트가 개선되는동안 db스키마 변경은 허용하지 않으며, READ만 허용하며 postgres,neo4j는 도커기반 잘작동하며 이것을 중단하거나 내리지 않습니다.
- 액터모델 유닛테스트 방법은 다음을 참고, 액터모델을 생성하면 해당액터에대한 유닛테스트를 작성또는 업데이트합니다. 
  - src/Memorizer.IntegrationTests/Actors 위치에 액터모델 테스트를 작성합니다.
- API 테스트가 필요할시 닷넷에서 이용할수 있는 Client를 이용해 테스트합니다. SSE가 필요하거나 웹소켓이 필요한경우 적절한 클라이언트 모듈을 이용합니다.  

## 테스트시 API인증방법
- src/Memorizer/Controllers/AuthController.cs 코드확인후.. api인증을 통과한후 등록 API를 통해 진행..
- 참고로 뷰는 미인증, 메모리등록은 인증된 API로만 가능 로긴시  admin/admin123 로 성공한후 반환된  쿠키값을 사용
- src/Memorizer/Controllers/MemoryController.cs 메모리 등록은 CreateMemory 사용 ... db를 조작하지 말고 제공되는 API를 파악해 활용할것

## 추가지침 - Mock 테스트가 아닌 실제장치를 이용한 통합테스트
-  src/Memorizer.IntegrationTests/appsettings.json  설정을 이용해... Mock 테스트가 아닌 실제장치를 이용한 테스트... 
  - LLM의 응답은 예측할수 없음으로 Assert보다 응답 포맺이 올바른지만 조사... 테스트수행을 위한 probe 를 tell을 한후 셋팅가능 ..
  - probe는 있을때만 테스트검증을 위해 수신여부 검사때 이용할수 있습니다. 
  - ChatBotActor에 다양한 요청시나리오를 시도해 응답결과가 품질이 좋은지 실제 확인하기 위한 용도이며 
    - 최적결과에대한 평가는 assert가 아닌 유닛테스트 결과 콘솔을 통해 확인할수 있으면 됩니다. 
      - 시도되는 프롬프트 는 "안녕 너는누구야" , "Reactive Steam 에대해 알려줘" , "AI 개발방법론은 뭐가 일을까?" 등임
      - 테스트 시나리오를 위해 데이터가 필요할시, Mock이 아닌 API를 이용해 메모리 데이터를 추가할수 있습니다.
        - 메모리 추가는 인증이 필요하므로, 인증 API를 이용해 쿠키를 얻은후 메모리 등록 API를 이용해 데이터를 추가합니다. store 엔드포인트를 이용해 저장할수 있습니다.


참고 링크 :