Memos 是一款轻量级开源备忘录应用,支持标签、置顶、关联等特性。但它的 Web 界面在搜索和批量操作上有些局限,特别是当你想把笔记内容和 AI 结合使用时,通过 Web API 调用的方式既消耗 token 又依赖网络。
本文介绍 memos-cli —— 一个 Go 实现的 Memos 命令行工具,将远程备忘录同步到本地 SQLite 数据库,提供 CLI 命令行、TUI 终端界面和 AI 对话三种交互方式,支持关键词搜索和向量语义搜索。
- 操作系统:Windows / Linux / macOS
- Go 版本:1.24+(仅源码编译需要,下载预编译二进制无需 Go)
- Memos Server:需要已部署的 Memos 服务端
- AI 功能(可选):Ollama(本地)或 OpenAI 兼容 API
# 方式一:从 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 服务器地址和认证信息:
# 使用用户名和 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>
查看认证状态:
memos-cli auth status
2. 同步笔记
将远程备忘录同步到本地 SQLite 数据库:
# 增量同步(首次会全量拉取) memos-cli sync # 全量同步(清空本地数据重新拉取) memos-cli sync --full
同步完成后,所有笔记存储在本地 SQLite 数据库(~/.cicbyte/memos-cli/db/app.db)中,后续操作直接查本地,无需网络。
3. 命令行操作
# 列出笔记(从本地 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 浏览模式:
memos-cli
TUI 界面支持:浏览笔记列表、查看笔记详情、创建新笔记、搜索、设置。所有数据从本地 SQLite 加载,响应即时。
5. AI 对话
内置 AI 对话功能,自动检索本地笔记作为上下文:
# 单轮对话 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。
三种交互模式
memos-cli memo list 脚本调用、自动化 TUI 界面
memos-cli(无参数) 日常浏览、快速查看 AI 对话
memos-cli chat
语义搜索、内容总结
增量同步机制
同步服务采用分页拉取 + MD5 去重策略:
- 分页拉取远程 memo(每页 100 条,通过 nextPageToken 翻页)
- 对比
ContentHash(内容 MD5):相同则跳过,不同则插入或更新 - 检测远程已删除的 memo(
RowStatus=ARCHIVED),标记本地IsDeleted=true - 下次同步时,远程也消失的 memo 从本地 DB 彻底删除
- 同步完成后自动对新增/更新的 memo 建立 Embedding 向量索引
# 查看同步状态 memos-cli sync status # 带详细输出 memos-cli sync --verbose
搜索模式
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):
# 查看当前配置 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
同步时自动对新增笔记建立向量索引,无需手动操作。
流式输出
# 流式输出(默认) memos-cli chat "总结最近的笔记趋势" # 保存到文件 memos-cli chat "帮我整理 Go 相关的笔记" --output go-notes.md
memos-cli 内置 MCP Server,可以让 Claude Code、Cursor 等 AI 工具直接操作本地笔记:
memos-cli mcp server
注册了 5 个工具:memo_search(关键词搜索)、memo_semantic_search(语义搜索)、memo_get(获取单条)、memo_create(创建笔记)、memo_stats(统计概览)。在 Claude Code 的 MCP 配置中添加 stdio 类型的服务器即可使用。
除了 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:
- 在 Cherry Studio 中新建一个知识库,将
skills/memos-cli/目录下的 SKILL.md 和 references/ 文件导入 - 对话时,AI 会根据这些 Skill 文件的指引,直接生成并执行
memos-cli命令
这种方式的好处:
- 零协议依赖:不需要 MCP 协议支持,任何能读文件的 AI 都能用
- 可自定义:Skill 文件是纯 Markdown,可以按需修改命令模板和说明
- 完全离线:Skill 文件随 memos-cli 一起分发,不需要额外的网络请求
MCP vs Skills 如何选择
如果你的 AI 工具支持 MCP,优先使用 MCP Server;如果不支持,用 Skills 同样可以实现完整的 CLI 操作。
支持配置多个 Memos 服务器并快速切换:
# 添加服务器 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:
# 列出所有配置项 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.*(级别、大小、保留天数等)。
编译后为单文件二进制,零外部运行时依赖。
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 友好、零额外成本。
- 项目地址:github.com/cicbyte/memos-cli
- 安装方式:从 Release 下载预编译二进制,或
go build编译
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/279470.html