Tractatus de fragilitate omnium temporalium
                          seu
                  Illusiones diversae
quibus infortunati faciliter in mortem inanem adducuntur

                        Auctore
          Magistro Schiratorio Amano Mecenensi

           Private electrodigitaliter editus
                  Anno MMXXV Berolini

一个晴日的午前
魔鬼找到春光下的我
向我展示一百万种
世界终结的方式

我打开笔记本递给他
嘲笑
他的邪恶
甚至不及我

我就要去往□□的国外
那是许诺给静止的旅途
我愿见证数与形的坏灭
与阴影在我床前的盘旋

如果在那里留下来
是否可以用孤单
换取
不再悲伤

我等待魔鬼的回答
听不清,但我早已知道
那里阳光明媚,是魔鬼也
无法抵达的地方

那流转往复的,炎炎天光
竟然绚丽,始终,如最末日的群芳。
无情冷暖着,折磨旅人
自星海满溢出的,酒精形状。

在地上看见苍穹的裂痕,被灼伤。
远古遗恨,泣血却永久健忘。
存在中唯一的纰漏,解消愁滞否?
但有一室澄清,何妨是,雪中月亮。

logo

GitHub项目地址: https://github.com/fluviusmagnus/Seelenmaschine

Seelenmaschine是一个具有记忆和人格的LLM聊天机器人项目。它能够通过终端或WebUI进行纯文本对话,并具有持久化的记忆系统,可以记住与用户的对话历史,并形成对用户的理解。

⚠️ 高强度AI编程警告!

主要特性

  • 🤖 支持多种大语言模型(通过OpenAI兼容API)
  • 🧠 复杂的记忆系统,包含:

    • 人格记忆(自我认知和用户形象)
    • 对话和对话总结(长期记忆)
    • 当前对话(短期记忆)
  • 💾 本地数据持久化

    • 使用lancedb存储向量数据
    • 使用SQLite存储对话和会话信息
  • 🔍 智能记忆检索

    • 自动检索相关历史对话
    • 检索结果智能判定嵌入上下文
    • 动态生成对话总结
  • 🛠️ 完整的会话管理功能
  • 🖥 提供用户友好的WebUI

技术架构

  • 语言模型:支持OpenAI兼容API的任何模型
  • 向量数据库:lancedb
  • 关系数据库:SQLite
  • 开发语言:Python
  • WebUI: Gradio

快速开始

  1. 确保已安装好Python
  2. 克隆项目仓库

    git clone https://github.com/fluviusmagnus/Seelenmaschine.git
  3. 按下文说明配置好.env文件
  4. 运行

    • Windows: start.batstart-webui.bat
    • Linux:

      1. 赋予权限

        chmod +x start.sh start-webui.sh
      2. 执行 start.shstart-webui.sh

        ./start.sh

        或者

        ./start-webui.sh
  5. (WebUI的情况下)浏览器访问http://localhost:7860即可

手动安装说明

  1. 克隆项目仓库
  2. 建立虚拟环境(可选)
  3. 安装依赖包(需要Python 3.11+)

    pip install -r requirements.txt

配置说明

  1. 复制.env.example文件并重命名为.env
  2. .env文件中配置以下参数:
# Debug设置
DEBUG_MODE=false  # 调试模式开关 true/false

# 基本身份设定
AI_NAME=Seelenmachine
USER_NAME=User

# OpenAI API设置
OPENAI_API_KEY=your_api_key
OPENAI_API_BASE=your_api_base
CHAT_MODEL=your_preferred_model  # 例如:anthropic/claude-3.5-haiku
TOOL_MODEL=your_tool_model  # 用于记忆管理。建议使用推理模型,例如:deepdeek/deepseek-r1
EMBEDDING_MODEL=your_embedding_model  # 例如:text-embedding-3-small
EMBEDDING_DIMENSION=1536

# 记忆系统设置
MAX_CONV_NUM=20  # 最大对话轮数
REFRESH_EVERY_CONV_NUM=10  # 每次总结的对话轮数
RECALL_SESSION_NUM=2  # 检索相关会话数量
RECALL_CONV_NUM=4  # 从相关会话检索的对话数量
  1. (可选) 在data文件夹中创建persona_memory.txtuser_profile.txt,填入人格记忆和用户形象

更多配置建议和使用技巧请参考项目 Wiki.

使用说明

直接在终端中进入CLI模式:

python src/main.py

或者,启动WebUI提供的网页应用:

python src/main.py --webui [--host HOST] [--port PORT]

参数说明:

--webui: 启动Web界面
--host: 指定主机地址(默认: 127.0.0.1)
--port: 指定端口号(默认: 7860)

CLI模式可用命令

  • /reset, /r - 重置当前会话
  • /save, /s - 归档当前会话,开始新会话
  • /saveandexit, /sq - 归档当前会话,退出程序
  • /exit, /quit, /q - 暂存当前状态并退出程序
  • /help, /h - 显示此帮助信息

项目结构

src/
├── main.py          # 主程序入口,控制流程
├── chatbot.py       # 聊天逻辑实现
├── llm.py           # 大语言模型接口
├── memory.py        # 记忆系统实现
├── config.py        # 配置管理
├── prompts.py       # 提示词模板
└── utils.py         # 工具函数

data/               # 数据存储目录

记忆系统说明

人格记忆

  • 包含自我认知和用户形象
  • 在会话结束时更新
  • 永久保存在配置文件中

对话总结

  • 自动总结结束并归档的会话
  • 通过检索回顾历史对话,提供长期记忆
  • 二阶检索,通过对话总结进一步定位具体对话
  • 保存在数据库中

当前对话

  • 实时记录当前会话内容
  • 超出最大轮数时自动总结早期对话
  • 支持会话恢复功能

Debug模式

在debug模式下,程序会:

  • 记录所有提交给大模型的内容
  • 记录数据库的读写操作(未完成)
  • 将日志保存在外部文件中

这些日志对于开发调试和优化系统非常有帮助。