스타터 킷Starter kits

ai-companion-persona-kit

장기 운영하는 AI 컴패니언 캐릭터의 뼈대입니다. 설정은 파일로, 하루 상황 엔진, 결정적 선톡, 웰빙 가드를 갖췄습니다.

GitHub에서 보기View on GitHub

어떤 문제를 푸나The problem

컴패니언 봇의 어려운 부분은 프롬프트가 아닙니다. 지금 무엇을 하고 있는가, 언제 먼저 말해도 되는가, 애착 기능이 의존의 지렛대가 되지 않게 하는 안전장치입니다. 이 킷은 가상의 캐릭터(Juno)로 그 뼈대를 보여 줍니다. 처음부터 AI임을 밝히는 캐릭터이며, 이미지 생성, 음성 복제, 성적 콘텐츠는 의도적으로 넣지 않았습니다.

이런 분께 맞습니다Who it is for

AI 컴패니언이나 캐릭터 챗봇을 만들면서 선톡 간격, 작별, 수신 거부 같은 안전 설계를 먼저 갖추고 싶은 개발자.

무엇을 하나What it does

  • situation은 일정에서 지금 활동을 계산하고 자정을 넘는 블록을 지원합니다.
  • proactive는 LLM 호출 없이 말을 걸지와 어떤 시나리오인지 정합니다. 수신 거부·음소거, 작별한 사용자, 휴식 중, 조용한 시간, 하루 상한, 쿨다운을 지킵니다.
  • wellbeing은 작별을 붙잡지 않는 규칙을 모든 안내 문장에 넣고, 사용자가 작별했거나 자리를 비운 경우 항상 정상 종료(clean_exit)로 보냅니다.
  • modes는 채팅 모드가 설정 파일을 몰래 고치지 못하게 막습니다(실수 방지용이며 보안 경계는 아닙니다).
  • routine은 안정 해시로 같은 날 같은 선택을 반복해도 같게 고릅니다.

직접 돌려 본 출력Real output

저장소의 examples 폴더를 실행한 결과입니다.

$ python3 examples/quickstart.py
03:00  activity='offline for the night' availability=sleeping  proactive -> None  (quiet hours)
08:30  activity='cataloguing'  availability=busy      proactive -> None  (character is busy)
12:30  activity='listening break' availability=free      proactive -> share_something_found  (window match)

two unanswered messages -> (None, "previous proactive message unanswered: don't pile on")

알아둘 한계Limits

  • 성인 사용자를 가정합니다. 위기 감지는 없으므로 필요하면 직접 추가하고 실제 도움을 안내하게 하십시오.
  • 작별을 알아채는 일은 애플리케이션의 몫이며 said_goodbye를 직접 설정해야 합니다.
  • 대화 기록을 저장하지 않으며, 저장한다면 보관 기간과 삭제 요청을 정해야 합니다.

받아서 쓰기Get it

# 저장소를 받습니다
git clone https://github.com/Kein-chronicle/ai-companion-persona-kit.git

정보Info

분류Category
스타터 킷Starter kits
형태Type
스타터 킷Starter kit
라이선스License
MIT
필요한 것Requires
Python 3.10 이상
저장소Repository
ai-companion-persona-kit
토픽Topics
ai-companion chatbot persona character llm python telegram-bot wellbeing

2026-10-18 기준: 저장소의 테스트를 로컬에서 실행해 통과했고, 예제 출력은 저장소의 examples 폴더를 실제로 실행한 결과입니다.

공유하기Share

문자Message 네이버 블로그Naver Blog X Facebook