前言

本文将介绍如何将MemOS整合到Hexo中,实现通过后台随时记录内容,并实时渲染至Hexo中,实现“动静结合”。

本站示例:碎笔 | 花猪

关于MemOS:MemOS 是开源的 AI 记忆管理操作系统,能为智能体和 AI 应用提供长期记忆能力。MemOS通过统一的记忆抽象层,支持多种记忆类型(如文本记忆、激活记忆、参数记忆),具备动态知识图谱、记忆调度和生命周期管理等功能。MemOS 能让 AI 系统像人类一样记住用户过往信息,在后续交互中主动调用记忆,实现更连贯、个性化的对话体验。MemOS强大的记忆调度和存储能力,解决了传统 RAG 的局限性,适用个性化助手、团队知识库等多种场景。

MemOS官网链接:智能始于记忆


操作

  1. 首先需要在服务器安装docker,并拉取安装MemOS镜像。在终端执行如下代码:

    1
    2
    3
    4
    5
    docker run -d \
    --name memos \
    -p 5230:5230 \
    -v ~/.memos/:/var/opt/memos \
    neosmemo/memos:latest

    注:需要开启服务器的5230端口,并确保该端口处于“空闲”状态。

    可以通过docker images命令查看是否安装成功。

  2. 通过docker run neosmemo/memos命令启动MemOS服务。

  3. 接着访问服务器ip:5230进入MemOS后台,并创建账户。

    注意:这里是http,而非https!

  4. 后台提供多种设置,可以根据自己的喜好进行设置。

  5. 此时便可以发布帖子,可以设置该帖子的访问状态(私有/公开)。

    之后如果需要将笔记内容渲染至Hexo中,则需要选择“公开”。(发布帖子后也可以随时更改状态)

    至此,MemOS的搭建和使用操作就完成了,接下来就是如何将其整合至Hexo中。

  6. 在Hexo根目录中创建一个新的页面(命令:hexo n page suibi):

  7. 编辑其中的index.md文件(建议使用VS Code编辑器):

    并修改其中的const MEMOS_API字段为:https://服务器IP(或域名)/memosapi/api/v1/memos?pageSize=20

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    ---
    title: 碎笔
    date: 2026-03-10 13:40:08
    ---

    <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/font-awesome/6.4.0/css/all.min.css">

    <div id="memos-container"></div>

    <script>
    const MEMOS_API = "https://cnhuazhu.top/memosapi/api/v1/memos?pageSize=20";
    const container = document.getElementById("memos-container");

    // 加载中
    container.innerHTML = `<div style="text-align:center;padding:30px;color:var(--text-color);"><i class="fa-solid fa-spinner fa-spin"></i> 加载中...</div>`;

    // XSS 安全转义
    function escapeHtml(str) {
    if (!str) return "";
    return str
    .replace(/&/g, "&amp;")
    .replace(/</g, "&lt;")
    .replace(/>/g, "&gt;")
    .replace(/"/g, "&quot;")
    .replace(/'/g, "&#039;");
    }

    // 请求数据
    fetch(MEMOS_API)
    .then(res => {
    if (!res.ok) throw new Error("请求失败");
    return res.json();
    })
    .then(data => {
    const list = data.memos || data || [];
    if (list.length === 0) {
    container.innerHTML = `<div style="text-align:center;padding:50px;color:var(--sec-text);">暂无动态</div>`;
    return;
    }

    let html = "";
    list.forEach(item => {
    const time = new Date(item.createTime || item.createdTs * 1000).toLocaleString();
    const content = escapeHtml(item.content)
    .replace(/(#[^\s#]+)/g, `<span style="color:#49b1f5;font-weight:500;">$1</span>`);

    html += `
    <div style="background:var(--card-bg);border-radius:16px;padding:22px;margin-bottom:18px;box-shadow:var(--shadow);border:1px solid var(--border-color);">
    <div style="font-size:0.85rem;color:var(--sec-text);margin-bottom:12px;">
    <i class="fa-solid fa-clock"></i> ${time}
    </div>
    <div style="line-height:1.7;color:var(--text-color);">${content}</div>
    </div>`;
    });

    container.innerHTML = html;
    })
    .catch(err => {
    console.error(err);
    container.innerHTML = `<div style="text-align:center;padding:30px;color:red;">加载失败</div>`;
    });
    </script>
  8. 由于该网站添加了https,因此现在还无法正常访问,需要在conf文件中添加正确的代理。

    /etc/nginx/sites-enabled路径下修改conf配置文件:

    在server块下添加如下配置代码:

    1
    2
    3
    4
    5
    6
    7
    8
    location ^~ /memosapi/ {
    proxy_pass http://127.0.0.1:5230/;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    add_header Access-Control-Allow-Origin https://cnhuazhu.top always;
    }

    注意调整最后一行的域名。

  9. 重启Nginx服务。

    1
    2
    nginx -t
    systemctl restart nginx

    检查无误即配置完毕。

  10. 可以直接访问https://域名/memosapi/api/v1/memos?pageSize=20查看是否可以正确访问。


    后记

    鼓捣了好几天,中间一度把服务器给搞崩掉,好在终于搞定了!在此特别感谢1nuo的教程!