Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AI 요약 기능 도입을 위한 사이드바뷰 도입 및 엔진 호출방식 변경 #754

Merged
merged 8 commits into from
Oct 6, 2024

Conversation

mdgarden
Copy link
Contributor

@mdgarden mdgarden commented Oct 5, 2024

Related issue

#635 #733

Result

2024-10-05.194358.mp4
  • 좌측 사이드바에서 githru의 AI 커맨드 창을 호출할 수 있습니다.
    • 각 버튼을 클릭하면 해당 결과가 창에 표시됩니다. (AI는 미적용 상태)
  • analysis-engine의 인스턴스가 extension의 초기화 이후에도 외부에서 호출할 수 있고 단일한 인스턴스를 유지합니다.

Work list

  • AI요약 기능 도입을 위해 사이드바 뷰를 도입했습니다.
  • extension을 최초 실행한 이후, 동일한 인스턴스에서 git을 분석하기 위해 엔진을 싱글톤 패턴으로 수정하였습니다.
    • engine.ts를 새로 작성하여 기존 엔진의 내용을 해당 파일로 이동하였습니다.

Discussion

  • 사이드바 도입에 대해서

    • AI의 요약 기능은 기존의 엔진과는 분리된 내부 API로써 동작해야한다는 것이 AI팀의 결론이었습니다. 이유는 다음과 같습니다.
      • AI 기능의 사용은 githru 유저의 옵션 사양입니다.
      • 어떤 모델에 어떤 프롬프트와 내용을 보낼지도 역시 옵션 사양입니다. analysis-engine이 초기화될 때 가지고 있어야하는 내용이 아닙니다. 만약 이 내용들을 analysis-engine이 가지고 있다면, 초기화 될 때 모든 AI에 대해서 API 요청을 보내야합니다.
      • 또한 상기의 사양과 현재의 뷰를 고려할 때, 이 사양을 가장 편하고 쉽게 보여줄 수 있는 방식은 사이드 바라고 판단하였습니다.
  • 엔진의 싱글톤 변경에 대해서

    • 싱글톤으로 변경 자체는 그렇게 큰 요소가 아니나, 외부에서 사용할 수 있게 한다는 점에서 고민이 많이 되었습니다. 기존 사양은 analysis-engineextension의 최초 실행 함수 내부에 들어가있어서 최초로 한번 실행되고 있었고, 이후에 외부에서 엔진이 호출되는 일은 없었습니다.
    • 그러나 상술한 사양은 analysis-engine이 최초로 초기화 된 이후, 해당 엔진 (동일한 인스턴스)에 요청을 보내야합니다. 따라서, 초기화 이후 extension외부에서 호출하여 사용할 수 있어야합니다.
    • 상기의 모든 내용을 충족시키기 위해 싱글톤으로 변경하였습니다.

@mdgarden mdgarden self-assigned this Oct 5, 2024
@mdgarden mdgarden requested review from a team as code owners October 5, 2024 10:44
Copy link
Contributor

@choisohyun choisohyun left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수고하셨습니다! 👍👏

{
"id": "githruSidebarView",
"title": "Githru Sidebar",
"icon": "images/logo.png"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(질문) 요 로고 이미지는 vscode 패키지 안에 올려두지 않아도 동작이 되는 장치가 있는 걸까요?? diff에 이미지는 없는 것 같아서 여쭤봅니다!

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

기존에 vscode 패키지안에 있던 로고입니다!

private async callApi(apiNumber: number): Promise<string> {
const engine = AnalysisEngine.getInstance();
try {
const summary = await engine.geminiCommitSummary();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

epic에 머지되면 여기에 각각 함수 부르게 하면 되겠군요! 👍

Copy link
Contributor

@ytaek ytaek left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sidebar 좋습니다!! 여러 llm plugin 들도 많이 활용하고 있는 방식이죠!!

@mdgarden mdgarden merged commit d44b5aa into epic/ai-summary Oct 6, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants