memos-cli 安装与使用教程:将 Memos 笔记同步到本地并支持 AI 语义搜索

前言

Memos 是一款轻量级开源备忘录应用,支持标签、置顶、关联等特性。但它的 Web 界面在搜索和批量操作上有些局限,特别是当你想把笔记内容和 AI 结合使用时,通过 Web API 调用的方式既消耗 token 又依赖网络。

本文介绍 memos-cli ------ 一个 Go 实现的 Memos 命令行工具,将远程备忘录同步到本地 SQLite 数据库,提供 CLI 命令行、TUI 终端界面和 AI 对话三种交互方式,支持关键词搜索和向量语义搜索。

项目地址:github.com/cicbyte/memos-cli

开源协议:MIT

环境说明

  • 操作系统:Windows / Linux / macOS
  • Go 版本:1.24+(仅源码编译需要,下载预编译二进制无需 Go)
  • Memos Server:需要已部署的 Memos 服务端
  • AI 功能(可选):Ollama(本地)或 OpenAI 兼容 API

安装

bash 复制代码
# 方式一:从 Release 下载预编译二进制(推荐)
# https://github.com/cicbyte/memos-cli/releases

# 方式二:从源码编译
git clone https://github.com/cicbyte/memos-cli.git
cd memos-cli
go build -o memos-cli .

快速开始

1. 添加服务器

首次使用需要添加 Memos 服务器地址和认证信息:

bash 复制代码
# 使用用户名和 Token 登录
memos-cli auth login --name my-server --token <your-access-token>

# 或指定服务器 URL(默认为 https://demo.usememos.com)
memos-cli auth login --name my-server --url https://memos.example.com --token <token>

查看认证状态:

bash 复制代码
memos-cli auth status

2. 同步笔记

将远程备忘录同步到本地 SQLite 数据库:

bash 复制代码
# 增量同步(首次会全量拉取)
memos-cli sync

# 全量同步(清空本地数据重新拉取)
memos-cli sync --full

同步完成后,所有笔记存储在本地 SQLite 数据库(~/.cicbyte/memos-cli/db/app.db)中,后续操作直接查本地,无需网络。

3. 命令行操作

bash 复制代码
# 列出笔记(从本地 DB,支持过滤)
memos-cli memo list --limit 20 --tag Go --visibility PRIVATE

# 查看单条笔记
memos-cli memo get <uid>

# 创建笔记
memos-cli memo create --content "这是一条新笔记" --tag work

# 更新笔记
memos-cli memo update <uid> --content "更新后的内容"

# 删除笔记
memos-cli memo delete <uid>

# 统计概览
memos-cli memo stats

4. TUI 终端界面

无参数启动进入 Bubbletea TUI 浏览模式:

bash 复制代码
memos-cli

TUI 界面支持:浏览笔记列表、查看笔记详情、创建新笔记、搜索、设置。所有数据从本地 SQLite 加载,响应即时。

5. AI 对话

内置 AI 对话功能,自动检索本地笔记作为上下文:

bash 复制代码
# 单轮对话
memos-cli chat "我上周写了什么关于 Go 的内容?"

# 多轮交互式对话
memos-cli chat -i "帮我总结上个月的笔记趋势"

# 指定搜索模式
memos-cli chat "有哪些未完成的任务?" --mode db
memos-cli chat "关于系统架构设计的相关笔记" --mode vector

核心架构

数据流

复制代码
Memos Server (远程)
    ↓ REST API
memos-cli sync (增量同步 + MD5 去重)
    ↓
本地 SQLite (~/.cicbyte/memos-cli/db/app.db)
    ├── local_memos     # 笔记内容
    ├── memo_vectors    # 向量索引(语义搜索)
    ├── sync_states     # 同步状态
    └── ai_conversations # AI 对话历史

所有命令行操作(list/stats/search)直接查本地 SQLite,不依赖网络。只有 create/update/delete 和 sync 才调用远程 API。

三种交互模式

模式 启动方式 适用场景
CLI 命令 memos-cli memo list 脚本调用、自动化
TUI 界面 memos-cli(无参数) 日常浏览、快速查看
AI 对话 memos-cli chat <question> 语义搜索、内容总结

增量同步机制

同步服务采用分页拉取 + MD5 去重策略:

  1. 分页拉取远程 memo(每页 100 条,通过 nextPageToken 翻页)
  2. 对比 ContentHash(内容 MD5):相同则跳过,不同则插入或更新
  3. 检测远程已删除的 memo(RowStatus=ARCHIVED),标记本地 IsDeleted=true
  4. 下次同步时,远程也消失的 memo 从本地 DB 彻底删除
  5. 同步完成后自动对新增/更新的 memo 建立 Embedding 向量索引
bash 复制代码
# 查看同步状态
memos-cli sync status

# 带详细输出
memos-cli sync --verbose

AI 功能详解

搜索模式

memos-cli 提供三种搜索模式,通过 --mode 指定:

模式 说明 原理
auto(默认) AI 自动选择 优先语义搜索,失败则回退关键词
db 关键词搜索 SQLite LIKE 匹配 + 标签 JSON 匹配 + 时间范围
vector 语义搜索 Embedding 向量化 + 余弦相似度

AI Agent 工具

AI 对话采用 Tool Calling 机制,LLM 自动选择合适的工具检索笔记:

工具 功能 数据源
memo_stats 统计概览(总数、标签分布、最近笔记) 本地 SQLite
search_memos 关键词 + 标签 + 时间范围搜索 本地 SQLite
semantic_search 向量语义搜索 Embedding + SQLite
get_memo 按 UID 精确查询单条笔记 本地 SQLite

Agent 最多 5 轮工具调用迭代,每轮检测 LLM 返回的 ToolCalls 并执行,结果格式化为 Markdown 追加到上下文,最终返回带有引用来源的回答。

时间表达式

搜索支持中英文时间表达式:今天昨天上周本月3天前2025-01-15 等。

向量搜索

需要配置 Embedding 服务(默认使用 Ollama 本地模型 nomic-embed-text):

bash 复制代码
# 查看当前配置
memos-cli config list

# 设置 Embedding 模型(如使用其他提供商)
memos-cli config set embedding.model text-embedding-3-small
memos-cli config set embedding.base_url https://api.openai.com/v1
memos-cli config set embedding.api_key sk-xxx

同步时自动对新增笔记建立向量索引,无需手动操作。

流式输出

bash 复制代码
# 流式输出(默认)
memos-cli chat "总结最近的笔记趋势"

# 保存到文件
memos-cli chat "帮我整理 Go 相关的笔记" --output go-notes.md

MCP Server 集成

memos-cli 内置 MCP Server,可以让 Claude Code、Cursor 等 AI 工具直接操作本地笔记:

bash 复制代码
memos-cli mcp server

注册了 5 个工具:memo_search(关键词搜索)、memo_semantic_search(语义搜索)、memo_get(获取单条)、memo_create(创建笔记)、memo_stats(统计概览)。在 Claude Code 的 MCP 配置中添加 stdio 类型的服务器即可使用。

Skills 集成

除了 MCP Server,memos-cli 还提供了一种更轻量的 AI 集成方式------Skills 系统

MCP Server 通过 stdio 协议传输工具定义,需要 AI 工具原生支持 MCP 协议。而 Skills 系统不依赖任何协议,它的原理很简单:把命令用法写成 Markdown 文件,让 AI 直接读后执行 CLI 命令。

复制代码
skills/memos-cli/
├── SKILL.md                  # 技能总入口,描述工具定位和可用命令
└── references/
    ├── memo.md               # memo CRUD 命令参考
    ├── sync-auth.md          # 同步和认证命令参考
    ├── chat.md               # AI 对话命令参考
    ├── config.md             # 配置管理命令参考
    └── mcp.md                # MCP Server 配置参考

这意味着任何支持读取本地文件的 AI 工具都能集成 memos-cli,比如 Cherry Studio

  1. 在 Cherry Studio 中新建一个知识库,将 skills/memos-cli/ 目录下的 SKILL.md 和 references/ 文件导入
  2. 对话时,AI 会根据这些 Skill 文件的指引,直接生成并执行 memos-cli 命令

这种方式的好处:

  • 零协议依赖:不需要 MCP 协议支持,任何能读文件的 AI 都能用
  • 可自定义:Skill 文件是纯 Markdown,可以按需修改命令模板和说明
  • 完全离线:Skill 文件随 memos-cli 一起分发,不需要额外的网络请求

MCP vs Skills 如何选择

维度 MCP Server Skills
集成方式 stdio 协议,需工具原生支持 Markdown 文件,任何 AI 可用
适用工具 Claude Code、Cursor 等 Cherry Studio、ChatGPT 等
配置复杂度 需配置 MCP Server 地址 导入 Markdown 文件即可
功能 自动注册工具,AI 自动调用 AI 根据文档指引执行命令

如果你的 AI 工具支持 MCP,优先使用 MCP Server;如果不支持,用 Skills 同样可以实现完整的 CLI 操作。

多服务器管理

支持配置多个 Memos 服务器并快速切换:

bash 复制代码
# 添加服务器
memos-cli server add work https://memos.example.com --token <token>
memos-cli server add personal https://my-memos.com --token <token>

# 列出所有服务器
memos-cli server list

# 设置默认服务器
memos-cli server default work

# 切换服务器(通过 LastServer 记忆上次使用)
memos-cli auth login --name personal

配置管理

所有配置存储在 ~/.cicbyte/memos-cli/config/config.yaml

bash 复制代码
# 列出所有配置项
memos-cli config list

# 查询单项
memos-cli config get ai.model

# 修改配置
memos-cli config set ai.model gemma4:e4b
memos-cli config set ai.temperature 0.7

支持配置的类别:ai.*(模型、温度、最大 token 等)、embedding.*(模型、API 地址等)、log.*(级别、大小、保留天数等)。

技术选型

组件 选型 说明
CLI 框架 spf13/cobra 子命令组织清晰
TUI 框架 charmbracelet/bubbletea 终端交互界面
HTTP 客户端 go-resty/resty Memos API 通信 + Embedding 请求
数据库 GORM + glebarez/sqlite 纯 Go SQLite,无 CGO 依赖
AI 客户端 sashabaranov/go-openai OpenAI 兼容 API,支持 Ollama/OpenAI/智谱等
MCP Server mark3labs/mcp-go stdio 传输,与 Claude Code 等工具集成
Markdown 渲染 charmbracelet/glamour 终端流式输出渲染

编译后为单文件二进制,零外部运行时依赖。

与 Web 端的对比

维度 Memos Web memos-cli
搜索 仅关键词 关键词 + 向量语义搜索
批量操作 不支持 CLI 支持过滤/分页/导出
AI 集成 内置 AI 对话 + MCP Server
离线使用 不支持 完全离线(同步后)
数据安全 全在服务器 本地 SQLite 缓存
响应速度 依赖网络 本地 SQLite 即时响应

常见问题

Q: 支持哪些 AI 提供商?

A: 任何 OpenAI 兼容 API,包括 Ollama(本地免费)、OpenAI、智谱 GLM、DeepSeek 等。通过 config set 配置。

Q: 语义搜索需要联网吗?

A: Embedding 向量化时需要联网(调用 API),但搜索匹配完全在本地 SQLite 中完成,不需要实时联网。

Q: 同步会丢失数据吗?

A: 不会。同步只操作本地 SQLite,不会删除远程数据。sync --full 会清空本地数据重新拉取,但不影响远程。

Q: TUI 在 Windows Terminal 中显示异常怎么办?

A: memos-cli 的 TUI 不使用 Alt Screen 模式,兼容大多数终端。如果遇到显示问题,建议使用 Windows Terminal。

Q: 如何更新到最新版本?

A: 从 Release 下载新二进制替换即可,本地数据库和配置自动兼容。

总结

memos-cli 通过本地 SQLite 缓存 + 增量同步 + 向量搜索三层架构,将 Memos 笔记从"只能通过 Web 查看"变为"本地即查即用、AI 可直接检索"。核心价值:同步一次、永久离线、AI 友好、零额外成本。

相关推荐
财经资讯数据_灵砚智能1 小时前
基于全球经济类多源新闻的NLP情感分析与数据可视化(夜间-次晨)2026年4月22日
大数据·人工智能·python·信息可视化·自然语言处理
JAVA学习通1 小时前
AI Agent 工具调用机制与 Spring Boot 工程集成(2026 实战指南)
人工智能·spring boot·后端
叹一曲当时只道是寻常1 小时前
Reference 工具安装与使用教程:一条命令管理 Git 仓库引用与知识沉淀
人工智能·git·ai·开源·github
程序员威哥1 小时前
Java调用YOLO模型性能优化实战:CPU/GPU加速与内存优化全指南
java·人工智能·后端
用户223586218201 小时前
Skills 不是 markdown - claude_0x05
人工智能
一个大蜗牛2 小时前
Hermes Agent 保姆级安装流程
人工智能
speop2 小时前
TASK09 | Reasoning Kingdom | Transformer : 动态拓扑的注意力革命
人工智能·深度学习·transformer
ting94520002 小时前
WanVideo_Cofy:AI 驱动的开源专业级视频生成平台全解析
人工智能
Black蜡笔小新2 小时前
企业私有化AI部署方案DLTM企业级AI模型工作站:零代码私有化,企业AI训练服务器新选择
运维·服务器·人工智能