Redmine AI Helper 플러그인 3.11.0까지의 주요 변경점 안내
요약
Redmine AI Helper 플러그인 3.11.0 버전이 출시되어 웹 검색 기능 지원, Chat Gateway 개선, 프롬프트 캐시 대응 기능 등이 주요 업데이트되었습니다. 특히 LLM의 외부 정보 조사 능력이 향상되었고, API 비용 절감 및 응답 속도 개선을 위한 기술적 진보가 이루어졌습니다.
핵심 포인트
- 웹 검색 기능 추가: Redmine 내부 정보를 넘어선 최신/외부 정보 조사가 가능해졌습니다.
- Chat Gateway 개선: Slack/Discord 연동 시 처리 과정 표시와 Markdown 형식 지원이 강화되었습니다.
- 프롬프트 캐시 대응: 시스템 프롬프트 구조를 개선하여 API 비용과 응답 시간을 절감했습니다.
- 다양한 LLM 지원: OpenAI, Anthropic, Gemini 등 주요 모델 제공업체를 지원합니다.
이 글은
Redmine AI Helper 플러그인의 3.11.0을 출시했습니다.
이전에는 3.6.0까지의 변경점을 정리했습니다.
그 이후로도 버전 업을 거듭했기 때문에, 이번에는 3.6.1부터 3.11.0까지의 주요 변경점을 모아서 소개합니다.
웹 검색 기능 지원 추가
3.11.0에서 추가되었습니다. 채팅 질문에 대해 LLM(대규모 언어 모델) 제공업체의 웹 검색 기능을 사용하여 조사한 후 답변할 수 있게 되었습니다.
Redmine 내부 정보만으로는 답할 수 없는 질문, 예를 들어 “이 에러 메시지의 원인을 조사해 줘” 또는 “이 라이브러리의 최신 버전을 알려줘”와 같은 내용에도 답변할 수 있습니다. 답변 하단에는 출처 URL이 표시되어 정보원을 확인할 수 있습니다. 이 출처는 Slack/Discord의 Chat Gateway를 통한 답변에도 표시됩니다.
관리 화면의 ‘AI Helper’ → ‘일반(全般)’ 탭에 있는 ‘웹 검색 활성화’를 ON으로 하면 유효합니다.
지원하는 것은 다음 제공업체의 모델 프로파일입니다.
- OpenAI (Responses API를 사용하는 모델)
- Anthropic
- Gemini
지원하지 않는 모델 프로파일을 사용하고 있는 경우, 설정 화면에 경고가 표시됩니다.
Chat Gateway 개선
3.6.0에서 추가된 Slack/Discord 연동(Chat Gateway)도 사용 편의성을 개선했습니다.
처리 중 표시 기능
이전에는 메시지를 보내고 답변을 받을 때까지 봇 측에서 무슨 일이 일어나고 있는지 알 수 없었습니다. 3.11.0부터는 다음과 같이 처리 상황이 표시됩니다.
- 메시지를 받으면 ⏳ 리액션이 추가되고, 처리가 완료되면 사라집니다.
- 여러 단계의 작업을 실행하는 동안에는 스레드에 진행 상황 메시지 1건을 게시하고, 계획이나 각 단계의 진행에 맞춰 현장에서 업데이트합니다.
- 최종 답변이 게시되면 진행 상황 메시지는 삭제됩니다.
진행 상황 메시지는 1건을 계속 업데이트하는 방식이기 때문에, 스레드가 중간 과정으로 채워지는 일은 없습니다.
Slack 답변을 Markdown 형식으로 표시
Slack으로의 답변을 Markdown 블록으로 게시하도록 했습니다. 제목이나 목록, 코드 블록 등이 깨지지 않고 표시됩니다.
프롬프트 캐시 대응 기능 추가
3.11.0에서 대응했습니다.
AI Helper는 에이전트마다 상당히 긴 시스템 프롬프트와 툴 정의를 매번 LLM에 전송합니다. 프롬프트 캐시를 사용함으로써, 이 변하지 않는 부분을 캐싱하여 API 비용과 응답 시간을 줄일 수 있습니다.
시스템 프롬프트 구성 개선
기존의 시스템 프롬프트에는 현재 시간이나 프로젝트/사용자 정보처럼 호출할 때마다 바뀌는 값이 중간에 포함되어 있었습니다. 그 때문에 프롬프트의 시작 부분이 매번 조금씩 달라져 캐시가 거의 작동하지 않는 상태였습니다.
그래서, 매번 변하는 값을 시스템 프롬프트 뒤쪽으로 옮기고, 앞부분이 변하지 않도록 구성을 개선했습니다.
OpenAI, Azure OpenAI, Gemini, OpenAI 호환 서버는 프롬프트의 시작 부분이 일치하면 제공업체 측에서 자동으로 캐시합니다. 이번 개선으로 인해 이러한 제공업체에서도 특별한 설정 없이 캐시가 작동하기 쉬워졌습니다.
Anthropic의 경우
Anthropic은 자동적으로 캐시되지 않으며, 요청 내에서 캐싱할 범위를 명시적으로 지정해야 합니다. 그래서 Anthropic 모델을 사용하는 경우에는 AI Helper가 시스템 프롬프트의 변하지 않는 부분, 툴 정의, 최근 대화에 캐싱 지정을 붙여 전송하도록 했습니다.
모델 정의 편집 화면에 ‘프롬프트 캐시’ 설정이 추가되었습니다. 이 설정 항목은 Anthropic 모델에만 표시되며, 기본값은 유효합니다.
캐시 효과 확인하기
Langfuse를 사용하는 경우, 캐시 로드/저장 토큰 수가 입력 토큰 수의 내역으로 기록됩니다. 캐시가 얼마나 작동하고 있는지 확인할 수 있습니다.
전체 프로젝트 대상 옵션 추가
3.7.0에서 추가되었습니다.
이전까지 AI Helper가 참조 및 업데이트할 수 있는 것은 AI Helper 모듈이 활성화된 프로젝트의 데이터뿐이었습니다. 이는 프로젝트에 따라 외부 AI에게 정보를 전송하고 싶지 않은 경우가 있기 때문입니다.
따라서 '특히 프로젝트별 제한은 없으니 모든 프로젝트에서 검색하고 싶다'는 경우에는, 모든 프로젝트에서 AI Helper를 명시적으로 활성화하는 것이 번거로웠습니다.
이에 관리 화면의 'AI Helper' → '일반' 탭에 '모든 프로젝트 대상' 설정을 추가했습니다. 이 기능을 활성화하면 AI Helper 모듈이 비활성화된 프로젝트의 데이터도 참조 및 업데이트 대상이 됩니다.
프로젝트별 티켓 요약 지시 설정
3.8.0에서 추가되었습니다.
티켓 화면에 표시되는 요약에 대해, 프로젝트별로 추가적인 지시를 설정할 수 있게 되었습니다. 프로젝트 설정의 'AI Helper' 탭에 있는 '티켓 요약을 생성할 때의 지시'에 입력합니다.
예를 들어, '고객 요구사항과 개발사 답변을 나누어 요약해 주세요', '결정 사항과 미해결 과제를 목록으로 보여주세요'와 같이 프로젝트 운영에 맞춘 요약을 만들 수 있습니다.
지시가 설정된 경우, 티켓의 작성자, 담당자, 댓글 작성자에 대한 프로젝트 내 역할(Role)도 LLM에게 전달됩니다. 이를 통해 '고객 역할 사용자의 발언'과 '개발자 역할 사용자의 발언'을 구분한 요약이 가능합니다.
지시를 설정하지 않은 프로젝트에서는 이전과 완전히 동일한 프롬프트로 요약이 생성됩니다.
건전성 보고서 편집 기능 추가
3.9.0에서 추가되었습니다.
프로젝트의 건전성 보고서는 AI가 생성한 내용을 그대로 저장하는 방식이었습니다. 하지만 실제로는 AI 분석을 기반으로 사람이 보충하거나 수정하여 보고에 사용하고 싶은 경우가 있습니다.
이에 저장된 건전성 보고서를 Markdown 에디터로 편집할 수 있게 되었습니다.
- 편집에는 역할 권한 '건전성 보고서 편집'이 필요합니다.
- 편집 후에도 원래 AI 생성 내용이 유지되며, '원본 보기'에서 확인할 수 있습니다.
- 누가 언제 편집했는지 표시됩니다.
- 보고서 비교, PDF 출력, 이력 표시에는 편집된 내용이 사용됩니다.
벡터 검색 연결 테스트 기능 추가
3.10.0에서 추가되었습니다. 벡터 검색 설정 화면에서 Qdrant 서버와 Embedding 모델에 대한 연결을 테스트할 수 있게 되었습니다.
벡터 검색은 Qdrant 서버와 Embedding 모델 모두가 올바르게 설정되어 있지 않으면 작동하지 않습니다. 이전에는 설정을 저장하고 벡터 DB에 등록해 보기 전까지는 설정이 정확한지 알기 어려웠습니다. 게다가 실패했을 경우, Qdrant와 Embedding 모델 중 어느 쪽에 문제가 있는지 분리하기가 매우 힘들었습니다.
관리 화면의 'AI Helper' → '벡터 검색' 탭에 다음 두 가지 '연결 테스트' 버튼을 추가했습니다.
| 대상 | 내용 |
|---|---|
| Qdrant 서버 | 입력한 URI와 API 키로 Qdrant 연결 가능 여부를 확인합니다. |
| Embedding 모델 | 고정된 텍스트를 실제로 임베딩(Embedding)하여, 성공 시 생성된 벡터의 차원 수를 표시합니다. |
두 기능 모두 저장 전 폼 값을 사용하여 테스트할 수 있습니다. 실패한 경우 오류 내용이 표시됩니다 (Embedding 모델의 경우 LLM 제공사에서 반환된 오류 메시지). Qdrant와 Embedding 모델을 개별적으로 테스트할 수 있어 어느 쪽에 문제가 있는지 즉시 알 수 있습니다.
참고로, 설정 화면 문구도 이해하기 쉽게 수정했습니다. 이전에는 '어떤 것이 LLM 설정이고 어떤 것이 Qdrant 설정인지 구분이 어려웠다'는 의견이 있었기 때문에, Qdrant 서버 설정 항목에 모아서 설명문을 추가했습니다.
관리자용 로그 참조 도구
3.8.0에서 추가되었습니다.
관리자가 채팅으로 '최근 오류 로그를 보여줘', '이 오류가 발생한 부분을 로그에서 찾아줘'라고 요청하면, AI Helper가 Redmine의 로그를 읽고 조사해 줍니다.
사용 가능한 작업은 다음과 같습니다.
- 로그 끝 부분 읽기 (기본 100줄, 최대 1000줄)
- 키워드로 검색하기 (대소문자 구분 없음, 앞뒤 줄도 가져올 수 있음)
- 로그 파일 정보 가져오기
참조할 수 있는 것은 Redmine 본체 애플리케이션 로그와 AI Helper 플러그인 로그뿐이며, 임의의 파일 경로는 지정할 수 없습니다. 또한, 서버상의 파일 경로가 LLM에게 전달되지도 않습니다.
이 기능은 기본적으로 비활성화되어 있습니다. 관리 화면의 'AI Helper' → '일반' 탭에 있는 '로그 참조 허용'을 ON으로 해야 관리자만 이용할 수 있게 됩니다.
기타 변경 사항
위 항목 외에도 다음과 같은 변경 사항이 있습니다.
- 버전 생성/업데이트/삭제 (3.10.0)
채팅이나 MCP Server에서 버전의 생성, 업데이트, 삭제가 가능해졌습니다.
- Wiki 부모 페이지 변경 (3.7.0)
Wiki 페이지를 업데이트할 때 부모 페이지를 변경할 수 있게 되었습니다.
- Temperature 생략 (3.8.0)
모델 정의에서 Temperature 필드를 공란으로 설정할 수 있게 되었습니다. 공란인 경우 LLM 요청에 Temperature를 포함하지 않습니다. Temperature 지정이 불가능한 모델을 사용할 때 유용합니다.
- 프로젝트 목록 아이콘 표시 (3.6.3)
프로젝트 목록에서 AI Helper 모듈이 활성화된 프로젝트에 아이콘이 표시되도록 변경되었습니다.
- MCP Server 응답 확장 (3.6.3)
검색 결과나 활동 조회 결과에 프로젝트 정보 및 작업 시간이 포함되게 되었습니다.
그 외에도 다수의 버그 수정 사항이 포함되어 있습니다. 자세한 내용은 릴리스 노트를 참조해 주십시오.
3.11.0으로 업데이트 시 주의사항
3.11.0에서는 내부적으로 사용하는 LLM 라이브러리인 RubyLLM을 2.1로 업데이트했습니다. 이와 함께 다음과 같은 변경 사항이 있습니다.
- Ruby 3.2 이상 필수 (Ruby 3.1은 지원 대상에서 제외)
- 외부 MCP 서버와의 연동이 RubyLLM 내장 MCP 클라이언트로 전환되었습니다. stdio 및 Streamable HTTP에 대응하며,
- SSE 방식의 MCP Server는 로드되지 않습니다
- 로컬 호스트 외의 평문 HTTP 연결이나, URL에 인증 정보가 포함된 MCP 서버 설정은 경고 메시지를 출력하고 건너뜁니다.
요약
이번에는 3.6.1부터 3.11.0까지의 주요 변경점을 소개했습니다. 웹 검색이나 Chat Gateway 개선처럼 사용 편의성을 높이는 기능 외에도, 모든 프로젝트를 대상으로 하는 옵션이나 로그 참조와 같이 운영 범위를 넓히는 기능도 추가되었습니다. 꼭 사용해 보시기 바랍니다.
이번에도 국내외 기여자분들로부터 풀 리퀘스트(pull request)를 받았습니다. 이 자리를 빌려 감사의 말씀을 전합니다.
Discussion

AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기