ai-companion-persona-kit
장기 운영하는 AI 컴패니언 캐릭터의 뼈대입니다. 설정은 파일로, 하루 상황 엔진, 결정적 선톡, 웰빙 가드를 갖췄습니다.
어떤 문제를 푸나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-companionchatbotpersonacharacterllmpythontelegram-botwellbeing
2026-10-18 기준: 저장소의 테스트를 로컬에서 실행해 통과했고, 예제 출력은 저장소의 examples 폴더를 실제로 실행한 결과입니다.