永続的なメモリを持つDiscourse AIペルソナを可能にするプラグインとカスタムツールを作成できました。限定的なテストではうまく機能しているので、誰かの役に立つかもしれないと思い共有したいと思いました。
機能
このソリューションにより、AIペルソナは会話をまたいでユーザー固有の情報を記憶できるようになります。
例: ユーザーが「ダークモードを好むことを覚えておいて」と言うと、AIは将来のやり取りでその好みを保存し、思い出すことができます。
コンポーネント
このシステムは3つの部分から構成されます。
- プラグイン (
discourse-ai-persistent-memory)
バックエンドストレージと、ユーザーが自分の記憶を表示、追加、または削除できるユーザー設定UIを提供します。 - カスタムAIツール
ペルソナにメモリ機能へのアクセスを提供するJavaScriptツール:
memory.set、memory.get、memory.list、memory.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アクションでのみ必要)
