1. 구글 서비스 연결
아기사자봇에 Gmail을 연결해보기로 했다. gws CLI 설치하는 공동세션에서 Google API 활성화를 전부 해뒀다고 생각(=착각)해서, 아래 명령어로 Gmail 스킬 설치 시도함
텍스트 상자가 있는 웹페이지의 스크린샷
오류가 났고, 아기사자봇도 원인을 찾느라 꽤나 헤맸다.
Gmail 연결부터 다시 시작
오류의 원인은 아래 중 2,3번을 하지 않은 채 1번만 진행했던 것. 스터디장님이 공유해 주신 유트브 영상 보면서 Gmail API 활성하고 읽기 권한도 승인했다.
헤르메스에 Gmail 스킬 설치
Google Cloud 프로젝트에서 Gmail API 활성화
Google 로그인 화면에서 Gmail 읽기 권한 승인
이번에는 Calendar가 안된다..
Gmail은 연결이 잘 됬는데 문제는 이때부터 아기사자봇이 내 구글캘린더를 못 읽기 시작했다.
한국 달력에 이 단어가 있다
GWS는 서비스마다 완전히 별개의 토큰을 추가하는 구조가 아니라, 선택한 서비스 권한을 하나의 인증 묶음으로 저장한다고 한다. 그래서 Gmail만 선택해 재인증하면 기존 Calendar나 Drive 권한이 그대로 유지되지 않고, Gmail만 들어 있는 새로운 권한 묶음으로 교체될 수 있는 것.
Gmail을 연결했을 뿐인데 Calendar를 더이상 못읽는 이유가 여기에 있었다.
권한 복구 & 스킬 추가
무작정 로그아웃하거나 인증 정보를 전부 삭제하지 않고 아래 순서로 복구했다.
현재 단기 Access token 캐시를 삭제하지 않고 백업 파일로 이동
GWS가 Refresh token을 이용해 새로운 Access token을 발급하도록 함
Calendar API를 실제로 호출해 일정 조회가 되는지 확인
지금은 Google Sheets나 Docs는 연결해두지 않았지만 앞으로 연결할 가능성이 있기 때문에, 그때마다 새 서비스만 단독으로 재인증하여 기존 권한이 빠지지 않도록 아래 내용을 GWS 공통 Skill에 추가함+++
인증 전에 현재 연결된 서비스와 권한부터 확인
새 서비스만 선택하지 않고 기존에 사용하던 서비스를 모두 포함한 누적 목록으로 재승인
auth status에서 필요한 권한이 전부 들어 있는지 확인
한국어가 적힌 페이지
새롭게 배운것들
스킬 설치, API 활성화, OAuth 권한 승인은 서로 다른 단계라는 것
OAuth 토큰 개념 (출입증에 비유하니 이해하기 쉬워짐)
Access token: 오늘 사용할 수 있는 단기 출입증
Refresh token: 만료된 출입증을 새로 발급받을 수 있는 증명서
토큰 캐시: 발급받은 출입증을 보관해두는 컴퓨터 속 서랍
2. 두번째 텔레그램 봇 개설
Hermes Desktop으로 두번째 텔레그램 봇을 만들었다. (다음 사례글에서 소개 예정~ 많관부) 이미 한 번 해봤기 때문에 새로 봇 개설하는건 어렵지 않았다. 근데 봇 개설하고 나서부터 난관들 시작..
새 봇이 첫 번째 봇처럼 말함..
두 번째 봇이 첫 번째 봇의 soul.md랑 user.md 를 기반으로 나와 대화함 (처음에 무서웠음..) 새로 만든 봇에게 직접 문제를 확인하고 해결해달라고 요청했고, 잘 해결됨. 이제 soul.md나 메모리가 섞이는건 없었음
동기화를 끊어냈는데도 세션 목록이 똑같았다
봇의 성격과 메모리는 정상적으로 분리되었지만, 두 프로필의 텔레그램 세션 목록이 똑같이 보였다. Desktop 앱에서 각 프로필 하단 봇 세션 목록에 두 봇의 대화가 모두 표시되어 있었음
처음에는 각 프로필에서 자기 봇의 세션이 아닌 것만 지우면 되지 않을까 생각했다. 그래서 봇에게 삭제를 요청했는데 아래처럼 답변옴.. 멘붕
"이 세션을 삭제하면 기본 프로필에서도 영구 삭제됩니다"
각 봇과 대화하는 것 자체에는 큰 문제가 없었다. soul.md와 메모리는 이미 분리 됐기 때문에 텔레그램에서는 각 봇이 자신의 역할대로 대화하고 있었음. 하지만 Desktop에서 두 프로필의 세션이 똑같이 보이면 아래와 같은 문제가 생길수도 있기에 그대로 둘 수 없었음
(더위먹고 정신 없으면) 순간 잘못된 프로필을 선택한 채 대화를 시작할 수 있음
다른 봇의 과거 세션을 실수로 이어갈 수 있음..
스터디장님이 보내주신 내용을 봇에게 전달하고 다시 원인 분석을 시작. (이때부터 꽤나 긴 여정이었는데.. 너무 길어질 것 같아 생략하고 결론으로 가보자면)
UI의 문제로 코드 수정·재빌드가 필요했다. 긴 작업이었지만 해결되었고 ‘정확히 어떤게 문제였으며 어떻게 해결했는지 10줄 이내로 정리해줘.’라고 요청했을때 아래와 같은 답변을 받았다.
원인은 대화 DB나 Telegram 봇 연결 문제가 아니었다.
두 프로필의 세션·메모리·봇 설정은 원래 정상적으로 분리돼 있었다.
Hermes Desktop 코드가 Telegram 세션만 모든 프로필에서 통합 조회하고 있었다.
그래서 첫번째 프로필과 두번째 프로필 어디서든 두 봇의 세션이 똑같이 보였다.
Desktop이 현재 프로필을
messaging_profile로 backend에 전달하도록 수정했다.기본 새로고침, 별도 새로고침, ‘더 보기’ 경로도 프로필별로 제한했다.
backend 역시 요청받은 프로필의 Telegram 세션만 반환하도록 수정했다.
테스트와 typecheck를 통과한 뒤 Desktop을 다시 빌드해 설치했다.
실제 검증 결과, 각 프로필에는 자신의 Telegram 세션만 표시됐다.
기존 대화·메모리·봇 설정은 삭제하거나 변경하지 않았다.
(그렇단다.. 우리가 다 이해할 필요 없다고 스터디장님께서 그러셨다^_^)
30분 넘게 이어진 봇의 작업
문제는 해결됐지만 작업 시간이 생각보다 훨씬 길었다. 봇이 혼자 30분 넘게 진행 상황을 계속 보고하고 있었는데도 해결되지 않고 있었다. 그래서 10분 규칙을 만듬. 작업 시간이 길어지면 지금까지 무엇을 했는지, 앞으로 얼마나 더 걸리는지, 그만큼의 시간과 토큰을 사용할 가치가 있는지 중간에 판단할 필요가 있었다.
앞으로는 하나의 작업이 10분을 넘기면 봇이 계속 혼자 진행하지 않도록 규칙을 정했다. 10분이 지나면 작업을 일시적으로 멈추고 아래 내용을 알려주기로함 (일단 10분으로 했는데 앞으로 내가 복잡한 작업들을 많이 하게된다면 늘려야할듯)
지금까지 완료한 작업
아직 해결되지 않은 부분
앞으로 해야 할 작업
추가로 예상되는 시간
그 작업이 꼭 필요한 이유
계속 진행할지 중단할지에 대해서 의견 묻기
새롭게 배운것들
Desktop 코드 수정과 재빌드까지 갈수도 있구나..를 배웠다!
to be continued...