Discourse AI의 영속적 메모리

저는 **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

피드백 요청

다음 사항에 대한 피드백을 환영합니다:

  • ToolRunnerprepend를 사용하여 주입하는 접근 방식
  • 모든 메모리 로드 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 작업에만 필요)