LearningCollector: AI 챗 대화 제목 추출 방식 개선
기존의 마크다운 헤더에서 AI 챗 대화 제목을 추출하던 방식에서 파일명으로 대체하도록 변경했습니다. 이를 통해 챗 기록을 더욱 간결하고 일관성 있게 관리할 수 있게 되었습니다.
LearningCollector: AI 챗 대화 제목 추출 방식 개선
기존의 마크다운 헤더에서 AI 챗 대화 제목을 추출하던 방식에서 파일명으로 대체하도록 변경했습니다. 이를 통해 챗 기록을 더욱 간결하고 일관성 있게 관리할 수 있게 되었습니다.
요약
이번 커밋에서는 core/ai_chat_collector.py 파일의 AI 챗 데이터 처리 방식을 개선했습니다. 이전에는 마크다운 파일의 첫 번째 # 제목을 대화 제목으로 사용했지만, 이제는 파일명을 대화 제목으로 사용하도록 변경되었습니다. 또한, policies/storage/json_saver.py 파일에서는 커밋 메시지의 첫 줄만 요약하여 표시하도록 수정했습니다.
작업은 2026년 2월 3일에 이루어졌으며, 총 5라인이 추가되고 14라인이 삭제되었습니다.
배경 및 목적
AI 챗 기록을 수집하고 관리하는 과정에서 대화 제목을 추출하는 방식에 대한 개선 필요성이 있었습니다. 기존 방식은 마크다운 파일의 구조에 의존적이어서, 제목이 명확하지 않거나 복잡한 경우 일관성 없는 제목이 생성될 수 있었습니다. 파일명으로 제목을 통일하면 어떤 챗 기록인지 직관적으로 파악하기 쉬워지고, 데이터 관리의 효율성을 높일 수 있습니다. 또한, Git 커밋 기록을 요약할 때 전체 메시지보다는 핵심 내용을 담고 있는 첫 줄을 사용하는 것이 정보 파악에 더 용이하다고 판단했습니다.
구현 내용
이번 변경의 핵심은 core/ai_chat_collector.py 파일 내 _process_md_file 메서드와 _extract_title 메서드의 수정입니다.
core/ai_chat_collector.py:- 기존에
_extract_title메서드를 호출하여 마크다운 파일에서 첫 번째#제목을 추출하던 부분을 제거했습니다. ai_chat_data딕셔너리에서대화_제목키의 값을 기존의title대신file_title(즉, 파일명)으로 설정하도록 변경했습니다._extract_title메서드 자체도 삭제되어, 더 이상 마크다운 헤더를 파싱하지 않습니다.- 총 13라인이 삭제되고 1라인이 추가되었습니다.
- 기존에
policies/storage/json_saver.py:get_json_summary메서드 내에서 커밋 데이터의title을 생성할 때, 기존에는data.get("커밋_메시지", "Unknown")[:50]와 같이 전체 커밋 메시지를 50자만 잘라 사용했습니다.- 변경 후에는
commit_msg.split('\n')[0]를 사용하여 커밋 메시지의 첫 줄만 추출한 뒤, 이를 50자로 잘라title로 사용하도록 수정했습니다. - 총 4라인이 추가되었습니다.
주요 변경 파일:
core/ai_chat_collector.pypolicies/storage/json_saver.py
기술적 의사결정
AI 챗 대화 제목 추출 방식 변경
- 선택: 마크다운 헤더 대신 파일명을 대화 제목으로 사용
- 이유:
- 일관성: 파일명은 항상 존재하며 고유하므로, 일관된 제목을 보장합니다.
- 단순성: 마크다운 파싱 로직을 제거하여 코드가 간결해집니다.
- 직관성: 파일명 자체가 해당 챗 기록의 내용을 잘 나타내는 경우가 많습니다.
- 대안:
- 첫 번째 H2(
##) 제목 사용: H1보다 덜 일반적이지만, H1이 없을 경우 대안이 될 수 있습니다. 하지만 여전히 마크다운 구조 의존적입니다. - 특정 키워드나 패턴으로 제목 자동 생성: 복잡한 로직이 필요하며, 정확도 보장이 어렵습니다.
- 첫 번째 H2(
- 장단점:
- 장점: 코드 단순화, 제목의 일관성 및 예측 가능성 증대, 관리 용이성 향상.
- 단점: 파일명이 직관적이지 않은 경우, 챗 기록의 실제 내용을 제목이 잘 반영하지 못할 수 있습니다. (이 경우 파일명 규칙 개선 필요)
커밋 메시지 요약 방식 변경
- 선택: 커밋 메시지의 첫 줄만 추출하여 요약
- 이유:
- 핵심 정보: 일반적으로 커밋 메시지의 첫 줄은 해당 커밋의 목적을 간결하게 설명합니다.
- 가독성: 전체 메시지보다 짧은 요약이 리스트 형태로 표시될 때 가독성이 좋습니다.
- 대안:
- 처음 N개 단어 추출: 메시지의 의미를 제대로 반영하지 못할 수 있습니다.
- 특정 키워드 포함 줄 추출: 복잡하고 정확도 보장이 어렵습니다.
- 장단점:
- 장점: 간결하고 핵심적인 정보를 보여주어 커밋 히스토리 파악이 용이해집니다.
- 단점: 메시지가 한 줄로 길거나, 첫 줄만으로는 의미 전달이 부족한 경우 내용 파악이 어려울 수 있습니다.
배운 점 및 개선점
이번 작업을 통해 AI 챗 기록의 제목 추출 방식을 파일명 기반으로 변경하면서, 데이터의 일관성과 관리 용이성을 크게 높일 수 있었습니다. 또한, Git 커밋 메시지를 요약하는 방식을 개선하여 정보 전달 효율성을 높였습니다.
배운 점:
- 외부 파일 형식(마크다운)의 구조에 의존하는 로직은 잠재적인 오류 발생 가능성을 높이며, 유지보수가 어렵다는 것을 다시 한번 느꼈습니다.
- 데이터의 일관성을 확보하기 위해 단순하고 예측 가능한 규칙을 적용하는 것이 중요합니다.
개선점 및 다음 단계:
- 파일명 규칙 표준화: AI 챗 기록의 파일명 규칙을 명확하게 정의하여, 파일명만으로도 대화의 맥락을 파악할 수 있도록 개선할 필요가 있습니다. 예를 들어,
[YYYY-MM-DD]-[AI_종류]-[주요_내용]과 같은 형식을 고려해볼 수 있습니다. - 커밋 메시지 가이드라인: Git 커밋 메시지 작성 시 첫 줄에 핵심 내용을 명확히 작성하는 문화를 장려하고, 필요하다면 자동화된 커밋 메시지 검증 도구를 도입하는 것을 고려할 수 있습니다.
참고 자료
- (이번 커밋에서는 별도의 외부 참고 자료 없이 기존 코드와 필요에 의한 자체 판단으로 변경이 이루어졌습니다.)