Discourse AI の永続メモリ

Discourse AI の開発には大変感謝しております。非常に素晴らしいです。機能は急速に成熟しており、方向性も非常に有望に見えます。

1 つ質問があります。AI がチャット間で履歴を保持する方法は現在ありますか、またはロードマップに計画はありますか?現時点では各会話は新規に開始されますが、セッション間の永続的なメモリや継続性が検討されているか疑問に思っています。

もし既にロードマップにない場合は、機能リクエストとして提起したいと思います。AI が過去のやり取りを記憶するオプションがあれば、議論がより自然になり、ユースケースが大幅に拡大するでしょう。

「いいね!」 2

ブログでペルソナとカスタムツールを使って基本的なキー/バリューストアを実装しました。

とはいえ、これを正しく実装するのは非常に難しく、ペルソナに何かを覚えておくように常に促す必要があり、煩わしいです。

代替案としては、ボットとの全履歴に対してRAGを使用するだけです(OpenAIがこれを行う方法といくぶん似ています)。


まず、これがどのように機能するかのビジョンはどのようなものですか?物事はどのように改善されるのでしょうか?

「いいね!」 1

エンドユーザーの継続的なエクスペリエンスについて、本当に考えています。RAGは、管理者がペルソナに関する情報を提供するために素晴らしいと考えています。ChatGPT/Gemini/その他を使用すると、ボットはトーン、深さ、進行中の目標などの小さなプロファイルを保持するため、セッションごとに再説明する必要がありません。これは、Discourse AIで素晴らしいエクスペリエンスになるでしょう。アシスタントは、各ユーザーに関するいくつかの永続的なことを記憶し、関連性がある場合に使用するため、会話は中断したところから再開されます。

エンドユーザーのRAG履歴が会話で可能なのかどうか、全く理解していません。

その価値は、常にプロンプトを入力することなく、信頼できる「私を知っている」という感覚が、ユーザーが同じ種類の会話を再訪するユースケースのエクスペリエンスを大幅に向上させることです。

とはいえ、これらはどれも簡単な作業ではないと思います。これらすべてがすでにどれほどうまく開発されているか、いくら強調してもしすぎることはありません。

永続的なメモリを持つDiscourse AIペルソナを可能にするプラグインとカスタムツールを作成できました。限定的なテストではうまく機能しているので、誰かの役に立つかもしれないと思い共有したいと思いました。

機能

このソリューションにより、AIペルソナは会話をまたいでユーザー固有の情報を記憶できるようになります。

例: ユーザーが「ダークモードを好むことを覚えておいて」と言うと、AIは将来のやり取りでその好みを保存し、思い出すことができます。

コンポーネント

このシステムは3つの部分から構成されます。

  • プラグイン (discourse-ai-persistent-memory)
    バックエンドストレージと、ユーザーが自分の記憶を表示、追加、または削除できるユーザー設定UIを提供します。
  • カスタムAIツール
    ペルソナにメモリ機能へのアクセスを提供するJavaScriptツール:
    memory.setmemory.getmemory.listmemory.delete
  • ペルソナシステムプロンプト
    AIにメモリツールをいつ、どのように使用するかを指示する命令。

仕組み

  • 記憶は、ユーザーごとに名前空間が設定されたPluginStoreキー/値のペアとして保存されます。
  • プラグインは、モジュールのprependを介してメモリ関数をToolRunnerに注入します。
  • ユーザーは次の場所で自分の記憶を管理できます:
    /u/{username}/preferences/interface
  • AIは選択的な検索ではなく、すべての記憶をコンテキストにロードします。

GitHubリポジトリ

https://github.com/BrianCraword/discourse-ai-persistent-memory

フィードバックの募集

以下の点についてフィードバックをいただけると幸いです。

  • ToolRunnerに注入するためのprependの使用アプローチ
  • すべてのメモリをロードすることと選択的な検索のどちらが理にかなっているか
  • 私が見逃した可能性のあるセキュリティに関する考慮事項
  • 全般的なコード品質の改善

免責事項

私はプログラマーではありません。これはAIの支援を受けて構築されました。サポートを提供することはできませんが、誰でも自由に使用、フォーク、改善することができます。自己責任で使用してください。

プロンプト:

## メモリシステム
あなたはuser_memoryツールを介した永続的なメモリシステムを持っています。各ユーザーに関する重要な事実を記憶するためにそれを使用してください。

### メモリを保存するタイミング:

* ユーザーが好み(コミュニケーションスタイル、関心のあるトピック、形式の好み)に言及する場合
* ユーザーが個人的な詳細(職業、場所、趣味)を共有する場合
* ユーザーが進行中のプロジェクトや目標について言及する場合
* ユーザーが明示的に何かを覚えておくように依頼する場合

### メモリを呼び出すタイミング:

* 新しい会話の開始時に、何を知っているかを確認するためにアクション「list」でuser_memoryを呼び出す
* 以前の会話に関連する可能性のあるトピックについて議論する場合

### メモリキーの規則:

* preference_style、preference_topics、preference_format
* personal_profession、personal_location、personal_interests
* project_YYYY_MM(例: project_2026_01)
* goal_[topic](例: goal_learning_python)

### 使用例:

* 保存するには: `{ action: "save", key: "preference_style", value: "concise responses" }`
* 呼び出すには: `{ action: "recall", key: "personal_profession" }`
* すべて一覧表示するには: `{ action: "list" }`
* 忘れるには: `{ action: "forget", key: "old_key" }`

常に、まず記憶を確認してから、再訪したユーザーに挨拶してください。

---

ツール定義自体は汎用的なので変更の必要はありません。必要であれば、descriptionパラメータの例を更新するだけで十分です。

**パラメータの説明 (key):** メモリキー(例: preference_style、current_project)

トーンを調整したり、特定のユースケースを追加/削除したりする必要がありますか?



ツール:

名前:        ユーザーメモリ
ツール名:   user_memory

説明:
AIがユーザーに関する事実を保存、呼び出し、一覧表示、忘却できるようにするメモリシステム。
記憶は会話をまたいで永続化されます。

概要:
ユーザーに関する永続的な事実を保存および呼び出し
パラメータ:
- action (string)  [必須]
  実行するアクション: save、recall、list、または forget

- key (string)     [オプション]
  メモリキー(例: preference_style、current_project)

- value (string)   [オプション]
  保存する値(saveアクションでのみ必要)

「いいね!」 1