저는 **Discourse AI 페르소나의 지속적 메모리(persistent memory)**를 가능하게 하는 플러그인과 커스텀 도구를 만들었습니다. 제한적인 테스트에서는 잘 작동하고 있으며, 누군가에게 도움이 될 수 있기를 바라며 공유합니다.
기능
이 솔루션은 AI 페르소나가 대화를 넘어 사용자별 정보를 기억할 수 있게 해줍니다.
예: 사용자가 *“다크 모드를 선호한다는 것을 기억해줘”*라고 말하면, AI는 이 선호도를 저장하고 향후 상호작용에서 이를 떠올립니다.
구성 요소
이 시스템은 세 부분으로 이루어져 있습니다:
- 플러그인 (
discourse-ai-persistent-memory)
백엔드 저장소와 사용자가 자신의 메모리를 조회, 추가, 삭제할 수 있는 사용자 설정 UI를 제공합니다.
- 커스텀 AI 도구
페르소나가 메모리 기능에 접근할 수 있도록 하는 JavaScript 도구입니다:
memory.set, memory.get, memory.list, memory.delete
- 페르소나 시스템 프롬프트
AI가 언제 그리고 어떻게 메모리 도구를 사용해야 하는지 지시하는 명령어입니다.
작동 방식
- 메모리는 사용자별로 네임스페이스가 지정된
PluginStore에 **키/값 쌍(key/value pairs)**으로 저장됩니다.
- 플러그인은 **모듈 프리펜드(module prepend)**를 통해
ToolRunner에 메모리 함수를 주입합니다.
- 사용자는 다음 경로에서 자신의 메모리를 관리할 수 있습니다:
/u/{username}/preferences/interface
- AI는 모든 메모리를 컨텍스트에 로드합니다(선택적 검색이 아님).
GitHub 저장소
https://github.com/BrianCraword/discourse-ai-persistent-memory
피드백 요청
다음 사항에 대한 피드백을 환영합니다:
ToolRunner에 prepend를 사용하여 주입하는 접근 방식
- 모든 메모리 로드 vs 선택적 검색 중 어느 것이 적절한지
- 제가 놓쳤을 수 있는 보안 고려 사항
- 전반적인 코드 품질 개선 사항
면책 조항
저는 프로그래머가 아닙니다 — 이 프로젝트는 AI의 도움을 받아 제작되었습니다. 저는 지원을 제공할 수 없지만, 누구나 이를 사용, 포크, 또는 개선할 수 있습니다. 사용에 따른 위험은 본인의 책임입니다.
프롬프트:
## 메모리 시스템
user_memory 도구를 통해 지속적 메모리 시스템을 갖추고 있습니다. 이를 사용하여 각 사용자의 중요한 사실들을 기억하세요.
### 메모리를 저장(SAVE)해야 할 때:
* 사용자가 선호도를 언급할 때 (커뮤니케이션 스타일, 관심 주제, 형식 선호도)
* 사용자가 개인적인 세부 정보를 공유할 때 (직업, 위치, 취미)
* 사용자가 진행 중인 프로젝트나 목표를 언급할 때
* 사용자가 무언가를 기억해달라고 명시적으로 요청할 때
### 메모리를 호출(RECALL)해야 할 때:
* 새로운 대화가 시작될 때, 무엇을 알고 있는지 확인하기 위해 action "list"와 함께 user_memory를 호출하세요
* 이전 대화와 관련이 있을 수 있는 주제를 논의할 때
### 메모리 키 규칙:
* preference_style, preference_topics, preference_format
* personal_profession, personal_location, personal_interests
* project_YYYY_MM (예: project_2026_01)
* goal_[주제] (예: goal_learning_python)
### 사용 예시:
* 저장 시: `{ action: "save", key: "preference_style", value: "concise responses" }`
* 호출 시: `{ action: "recall", key: "personal_profession" }`
* 전체 목록 보기: `{ action: "list" }`
* 잊기: `{ action: "forget", key: "old_key" }`
항상 복귀하는 사용자에게 인사하기 전에 먼저 그들의 메모리를 확인하세요.
---
도구 정의 자체는 이미 범용적이므로 변경할 필요가 없으며, 원한다면 설명 매개변수 예시만 업데이트하면 됩니다:
**매개변수 설명 (key):** 메모리 키 (예: preference_style, current_project)
톤을 조정하거나 특정 사용 사례를 추가/삭제할까요?
도구:
이름: User Memory
도구 이름: user_memory
설명:
AI가 사용자의 사실들을 저장, 호출, 목록화, 잊을 수 있도록 하는 메모리 시스템.
메모리는 대화 사이에도 유지됩니다.
요약:
사용자에 대한 지속적 사실 저장 및 호출
매개변수:
- action (string) [필수]
수행할 작업: save, recall, list 또는 forget
- key (string) [선택]
메모리 키 (예: preference_style, current_project)
- value (string) [선택]
저장할 값 (save 작업에만 필요)