소개
지난번에 만들었던 ChatTracker(chatLog, MCP) 를 지인들에게 배포하고 테스트해 보았습니다.
ChatTracker는 제가 LLM과 나눈 대화 기록을 추적하고, 나중에 다시 찾아볼 수 있도록 만든 도구입니다.
처음에는 OpenCode CLI 중심으로 만들었는데, 주변에 공유해보니 다들 “이런 기능은 필요하다”고 공감해주셨습니다.
그런데 테스트를 하다 보니 새로운 문제를 발견했습니다.
저는 주로 CLI를 사용하지만, 주변 분들은 CLI보다 VS Code 확장 프로그램인 Roo Code를 더 많이 사용하고 있었습니다.
회사에서도 OpenCode CLI 버전과 VS Code 확장 프로그램인 Roo Code가 함께 제공되고 있었고요.
문제는 VS Code 확장 프로그램으로 설치된 Roo Code는 .opencode 설정을 따르지 않는다는 점이었습니다.
그래서 기존 ChatTracker로는 OpenCode CLI 대화는 추적할 수 있었지만, Roo Code에서 나눈 대화는 추적할 수 없었습니다.
결국 ChatTracker가 제대로 쓰이려면 Roo Code 대화 기록도 함께 추적할 수 있어야 했습니다.
1. Roo Code 대화 기록 저장 위치 찾기
먼저 Roo Code의 대화 내용이 실제로 어디에 저장되는지 찾기 시작했습니다.
처음에는 Roo Code에게 직접 물어봤습니다.
너의 대화내역 저장 경로가 어디냐?
VS Code 확장 프로그램으로 실행한 Roo Code의 작업 기록과 채팅 기록이 저장되는 실제 파일 위치를 알려줘.
Windows 기준으로 가능한 경로들을 알려주고, 어떤 파일을 확인해야 하는지도 설명해줘.Roo Code는 여러 경로를 알려주었습니다.
%AppData%\Roaming\d\code
%AppData%\Roaming\log
Code\User\workspaceStorage\...\chatSessions하지만 실제로 확인해보니 제가 찾는 대화 기록은 없었습니다.
결국 C 드라이브를 거의 전체 스캔하듯이 확인했고, 마침내 아래 폴더를 찾았습니다.
codemate.roo-cline/tasks
그 안에는 작업별 폴더와 여러 JSON 파일이 있었습니다.
api_conversation_history.json
history_item.json
task_metadata.json
ui_message.json확인해보니 각 파일의 역할은 대략 다음과 같았습니다.
파일명
역할
api_conversation_history.json
API 기준 대화 기록
history_item.json
작업 기록 항목
task_metadata.json
작업 메타데이터
ui_message.json
UI에 표시되는 메시지 기록
이 중에서 ChatTracker에 필요한 핵심 파일은 ui_message.json 이었습니다.
사용자가 Roo Code 화면에서 실제로 주고받은 대화 흐름을 확인하려면 이 파일을 읽어야 했습니다.
2. ChatTracker에 Roo Code 기록 연결하기
이후에는 Roo Code에게 ChatTracker에 기능을 붙여달라고 요청했습니다.
ChatTracker에서 Roo Code의 대화 기록도 추적할 수 있도록 기능을 추가해줘.
Windows 환경에서 Roo Code 확장 프로그램의 작업 기록은 codemate.roo-cline/tasks 폴더 아래에 있고,
각 작업 폴더 안에는 ui_message.json 파일이 있어.
해야 할 일:
1. Roo Code tasks 폴더를 설정에서 지정할 수 있게 해줘.
2. 각 작업 폴더의 ui_message.json 파일을 읽어줘.
3. 파일 변경을 실시간 폴링해서 새 메시지를 감지해줘.
4. 메시지를 파싱해서 기존 ChatTracker SQLite DB에 저장해줘.
5. 기존 OpenCode 대화 기록과 구분되도록 source 값을 roo_code로 저장해줘.
6. ChatTracker UI에 Roo Code 대화내역 메뉴를 추가해줘.
7. 기존 기능은 깨지지 않게 유지해줘.작업은 다음 흐름으로 진행했습니다.
결과적으로 ChatTracker에서 Roo Code 대화 내역을 확인할 수 있게 되었습니다.
CLI에서 나눈 대화뿐 아니라 VS Code 확장 프로그램에서 나눈 대화도 한곳에서 볼 수 있게 된 것입니다.
다만 아직 해결하지 못한 부분도 있습니다.
Roo Code 대화 기록을 ChatTracker에서 확인하는 것은 가능해졌지만, Roo Code 확장 프로그램 안에서 ChatTracker MCP를 직접 활용하는 방법은 아직 찾지 못했습니다.
이 부분은 앞으로 더 확인해봐야 할 숙제로 남아 있습니다.
3. 업무 자료 DB를 MCP로 연결하기
Roo Code 기록을 붙이고 나니, ChatTracker에 더 살을 붙이고 싶어졌습니다.
저는 이번 스터디를 하면서 회사 PC에 옵시디언을 설치하고, 그동안 모아두었던 개인 업무 파일과 고객 대응 매뉴얼을 위키처럼 정리해보려고 하고 있었습니다.
그러다 이런 생각이 들었습니다.
내가 모아둔 업무 파일과 고객 대응 가이드도 DB화해 서 MCP로 연결하면, LLM이 내 업무 자료를 참고해서 답변할 수 있지 않을까?
바로 OpenCode와 대화를 나누며 만들기 시작했습니다.
내가 가지고 있는 고객 대응 매뉴얼과 업무 파일들을 SQLite DB로 정리하고,
MCP 서버에서 검색 도구로 제공하고 싶어.
현재 일부 자료는 Access DB 형태로 되어 있고,
최종적으로는 LLM이 MCP tool call을 통해 관련 내용을 검색한 뒤 답변에 참고하도록 만들고 싶어.
해야 할 일:
1. Access DB에 있는 고객 대응 데이터와 업무 자료를 SQLite로 변환해줘.
2. SQLite에 문서 제목, 본문, 카테고리, 키워드, 원본 경로를 저장할 수 있는 테이블을 설계해줘.
3. MCP 서버에 search_work_docs 같은 검색 도구를 추가해줘.
4. 사용자의 질문을 받아 관련 문서를 검색하고 결과를 요약해서 반환해줘.
5. ChatTracker의 기존 MCP 기능과 충돌하지 않도록 구성해줘.구조는 아래와 같습니다.
4. ChatTracker 안에 챗봇 붙이기
업무 자료 MCP가 생각보다 잘 동작했습니다.
LLM이 MCP를 호출해서 내용을 확인하고, 관련 자료를 이해한 뒤 요약해서 답변하는 흐름이 꽤 자연스러웠습니다.
그래서 다음으로는 ChatTracker 안에 직접 채팅창을 붙여보고 싶었습니다.
구상은 단순했습니다.
ChatTracker 안에 봇 채팅창을 만들고, 백엔드에서 OpenCode CLI 를 호출합니다.
사용자가 ChatTracker 채팅창에서 업무 관련 질문을 하면, OpenCode가 새 세션을 열고 MCP를 통해 업무 자료를 검색한 뒤 답변하는 방식입니다.
이렇게 하면서 ChatTracker는 단순한 대화 기록 추적 도구에서 조금씩 업무 보조 도구처럼 변해가기 시작했습니다.
결과와 배운 점
이번 작업을 통해 ChatTracker에는 몇 가지 기능이 더 붙었습니다.
기능
상태
OpenCode CLI 대화 기록 추적
가능
Roo Code 대화 기록 추적
가능
ChatTracker UI에서 Roo Code 기록 확인
가능
업무 자료 SQLite DB 검색
가능
MCP를 통한 업무 자료 검색
가능
ChatTracker Bot 채팅창
구현 시도
Roo Code에서 ChatTracker MCP 직접 사용
아직 미해결
가장 크게 배운 점은 LLM 도구마다 대화 기록을 저장하는 방식이 다르다는 것이었습니다.
OpenCode CLI와 Roo Code는 비슷한 LLM 개발 도구처럼 보이지만, 설정 파일과 대화 기록 저장 방식은 전혀 달랐습니다.
또 하나 배운 점은 MCP가 단순한 부가 기능이 아니라 LLM의 활용 범위를 넓혀주는 연결 방식이라는 점입니다.
내가 가진 업무 자료를 DB화하고 MCP로 연결하니, LLM이 일반적인 답변만 하는 것이 아니라 실제 업무 자료를 참고해서 답변할 수 있었습니다.
시행착오도 있었습니다.
처음에는 Roo Code가 알려준 저장 경로를 믿고 찾아봤지만, 실제 대화 기록은 없었습니다.
결국 직접 파일 시스템을 뒤지면서 codemate.roo-cline/tasks 폴더를 찾아야 했습니다.
또, 회사 LLM은 인터넷 접속이 막혀 있기 때문에 MCP를 이용해서 웹 검색이나 URL 패치를 대신 해주면 어떨까 하는 생각도 했습니다.
기술적으로는 가능해 보였습니다.
하지만 이 부분은 일단 멈췄습니다.
사내 보안 정책상 인터넷 접근을 우회하는 형태로 해석될 수 있다고 판단했기 때문입니다.
이번 작업을 하면서 느낀 나만의 팁은 이것입니다.
LLM에게 “만들어줘”라고 하기 전에, 먼저 “너의 데이터가 어디에 저장되는지”, “어떤 파일이 실제 화면과 연결되는지”를 끝까지 물어보는 것이 중요했습니다.
앞으로는 아직 남아 있는 숙제인 Roo Code 확장 프로그램에서 ChatTracker MCP를 직접 활용하는 방법을 더 찾아보고 싶습니다.
또 ChatTracker Bot 기능도 조금 더 안정화해서, 실제 업무 자료 검색 도구로 쓸 수 있을지 테스트해볼 계획입니다.
결국 제가 계속 고민하게 되는 지점은 이 질문입니다.
제한적인 회사 내부 환경에서, 보안 정책을 지키면서도 LLM을 더 효과적으로 활용할 수 있는 서비스는 무엇일까?
ChatTracker는 그 질문에 대한 작은 실험으로 계속 살이 붙고 있습니다.