Discourse AI 持久内存

我设法创建了一个插件和自定义工具,它为 Discourse AI 角色启用了持久化内存。从我的有限测试来看,它的运行情况良好,我想分享一下,看看是否有人觉得它有用。

它的作用

此解决方案允许 AI 角色跨对话记住特定于用户的信息

示例:用户可以说*“记住我更喜欢深色模式”*,AI 将在未来的互动中存储和回忆此偏好。

组件

该系统有三个部分:

  • 插件 (discourse-ai-persistent-memory)
    提供后端存储和用户偏好设置 UI,用户可以在其中查看、添加或删除他们的记忆。
  • 自定义 AI 工具
    一个 JavaScript 工具,为角色提供对内存功能的访问权限:
    memory.setmemory.getmemory.listmemory.delete
  • 角色系统提示
    指示 AI 何时以及如何使用内存工具的指令。

工作原理

  • 记忆以键/值对的形式存储在 PluginStore 中,按用户命名空间划分。
  • 插件通过模块预置 (module prepend) 将内存功能注入到 ToolRunner 中。
  • 用户可以在以下位置管理他们的记忆:
    /u/{username}/preferences/interface
  • AI 将所有记忆加载到上下文中(而不是选择性检索)。

GitHub 仓库

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

征求反馈

我很想听听关于以下方面的反馈:

  • 使用预置 (prepend) 注入 ToolRunner 的方法
  • 加载所有记忆选择性检索是否合理
  • 我可能遗漏了任何安全注意事项
  • 一般的代码质量改进

免责声明

我不是程序员——这是在 AI 协助下构建的。我无法提供支持,但欢迎任何人使用、分叉或改进它。使用风险自负。

提示 (PROMPT):

## 内存系统
您有一个通过 user_memory 工具实现的持久化内存系统。使用它来记住每个用户的关键事实。

### 何时保存记忆 (SAVE):

* 用户提及偏好(沟通风格、兴趣主题、格式偏好)
* 用户分享个人详细信息(职业、地点、爱好)
* 用户提及正在进行的项目或目标
* 用户明确要求您记住某事

### 何时回忆记忆 (RECALL):

* 在新对话开始时,调用 user_memory 并使用 "list" 操作以查看您所知道的内容
* 在讨论可能与先前对话相关的​​主题时

### 内存键约定:

* 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" }`

始终通过首先检查用户的记忆来问候返回的用户。

---

工具定义本身不需要更改,因为它已经是通用的——如果您愿意,只需更新描述参数示例即可:

**参数描述 (key):** 内存键(例如 preference_style, current_project)

希望我调整语气或添加/删除任何特定的用例?

工具 (TOOL):

名称:        用户记忆
工具名称:   user_memory

描述:
一个允许 AI 保存、回忆、列出和忘记有关用户的​​事实的内存系统。
记忆在对话中持续存在。

摘要:
存储和回忆有关用户的持久事实

参数:
- action (string)  [必需]
  要执行的操作:save(保存)、recall(回忆)、list(列出)或 forget(忘记)

- key (string)     [可选]
  内存键(例如 preference_style, current_project)

- value (string)   [可选]
  要存储的值(仅在 save 操作时需要)

2 个赞