对话
捕获、浏览、搜索和提炼来自任何 AI 工具的对话。
对话是你的会话层。它保留了 AI 会话原本发生的过程:你问了什么、工具回答了什么、任务是怎样一步步推进的。
它的价值不只是把聊天存下来,而是让你之后还能重新搜索过去的讨论、回到当时的上下文,并把其中真正值得长期保留的部分提炼成记忆。
第一条有用的对话
如果你是新用户,先做下面任意一件事:
- 导入一条你本来就在意的对话
- 让一个受支持的工具保存一条真实会话线程
- 通过浏览器扩展捕获一段 Web 对话
然后打开这条对话,从里面提炼出一条真正有价值的记忆。这也是多数人第一次真正感受到对话为什么值得保存的时刻。
| 我想要... | 跳转到 |
|---|---|
| 浏览和搜索对话 | 浏览对话 |
| 将对话提炼为记忆 | 对话提炼 |
| 从编程工具自动导入 | 自动同步 |
| 从 Web AI 聊天中捕获 | 浏览器扩展 |
| 导入我的 ChatGPT 或 DeepSeek 对话 | 批量导入 |
导入对话文件(含 ## User/## Assistant 标题的 .md) | 单个对话 |
| 了解 .md 对话格式 | 对话 Markdown 格式 |
| 通过 API 导入 | Import API |
| 通过命令行导入 | CLI |
浏览对话
对话视图集中展示所有已导入的会话。
- 搜索对话内容或标题
- 筛选来源(Claude Code、ChatGPT、Cursor 等)
- 收藏重要对话,方便随时查看
- 查看对话中的每条消息
从侧边栏打开对话,或按 Cmd + 3(macOS)。
对话提炼
这里是对话和记忆真正连起来的地方。打开任意一条对话并触发提炼,系统会从会话中提取独立记忆。每条记忆都有自己的标题、标签和重要性评分,之后会进入知识图谱,并和其他内容一起参与搜索。
这也是把几小时的 AI 对话,慢慢变成可连接知识的方式。
也可从浏览器中
浏览器扩展支持直接从 Web 对话中智能提炼,无需先导入完整对话即可捕获记忆。
自动同步
应用内发现
扫描本机编程工具的对话并自动导入,无需手动导出。
仅适用于本机发现
这条路径会扫描运行 Nowledge Mem 的那台机器上的对话文件,很适合做本地同步。但它和 nmem t save --from ... 不是一回事。后者会在客户端本机读取会话文件,再把规范化后的会话线程上传到远程 Mem。
| 客户端 | 同步方式 | 入口 |
|---|---|---|
| Claude Code | 自动发现 + 增量同步 | 对话 → 导入 → 查找 AI 对话 |
| Cursor | 自动发现 + 增量同步 | 对话 → 导入 → 查找 AI 对话 |
| Codex | 自动发现 + 增量同步 | 对话 → 导入 → 查找 AI 对话 |
| OpenCode | 自动发现 + 增量同步 | 对话 → 导入 → 查找 AI 对话 |
原生集成中的保存路径
不同集成提供的对话保存能力并不相同。有些会导入真实会话记录,有些会在生命周期事件里自动捕获,而 Cursor 当前仍然把插件内的交接摘要与真实会话线程导入分开。
| 集成 | 保存的是什么 | 工作方式 | 配置 |
|---|---|---|---|
| Claude Code | 真实会话线程 | 退出时通过 Stop 钩子自动保存当前会话,也支持显式 /save。nmem 会先在客户端本机读取会话文件,再上传。 | Claude Code 指南 |
| Gemini CLI | 真实会话线程 + 单独的交接摘要 | save-thread 通过 nmem t save --from gemini-cli 导入真实 Gemini 会话;save-handoff 继续单独保存可恢复的交接摘要。 | Gemini CLI 指南 |
| Cursor | 插件内的交接摘要 | Cursor 插件刻意只暴露 save-handoff,不暴露 save-thread。如果你要导入真实 Cursor 对话,请使用应用内发现。等未来有真正的实时会话导入器后,再提供对应的会话线程保存能力。 | Cursor 指南 |
| Alma | 真实会话线程 | 可选的自动捕获会在退出应用时保存会话。 | Alma 指南 |
| OpenClaw | 真实会话线程 | 每次智能体运行结束时自动捕获会话,并支持可选的 LLM 提炼。 | OpenClaw 指南 |
| Codex CLI | 真实会话线程 | 通过显式 /save 导入真实 Codex 会话。 | Codex CLI 指南 |
真实会话保存 与 交接摘要
如果你需要的是准确的历史对话,请优先使用真实会话保存或导入能力。交接摘要适合中断后继续,不等于无损保存整段会话。
文件导入
批量导入
一次性导入导出文件中的全部对话。
| 来源 | 文件格式 | 如何导出 |
|---|---|---|
| ChatGPT | chat.html | ChatGPT 设置 → 数据控制 → 导出数据 |
| DeepSeek | deepseek_conversations.json | chat.deepseek.com → 设置 → 数据 → 导出数据 |
| ChatWise | .zip(含 JSON 文件) | 从 ChatWise 导出全部聊天 |
单个对话
从文件导入一条对话。
| 格式 | 文件类型 | 备注 |
|---|---|---|
| 对话 Markdown | .md | ## User / ## Assistant / ## System 标题,可选 YAML 前置信息 |
| Cursor | .md | Cursor 原生导出格式(自动识别) |
| 通用 Markdown | .md | 任意 Markdown 文件,作为文档导入 |
文档还是对话?
如果你的 .md 文件是普通文档(没有 ## User / ## Assistant 标题),它属于资料库,而非对话。拖入时间线或从资料库视图导入。
对话 Markdown 格式
通用的对话导入格式。任何输出 ## User / ## Assistant 标题的工具,生成的文件都能被 Nowledge Mem 识别。
最简示例
最简单的格式,两轮对话,无前置信息:
## User
Python 的 GIL 是什么?
## Assistant
全局解释器锁(GIL)是 CPython 中的互斥锁,同一时刻只允许一个线程执行 Python 字节码。这意味着 CPU 密集型的多线程程序不会因多线程而加速——可以改用多进程或异步 I/O。完整示例
包含可选的 YAML 前置信息和系统消息:
---
title: Python 异步编程
source: chatgpt
date: 2025-06-15
---
## System
你是一位资深 Python 开发者,擅长清晰地解释技术概念。
## User
Python 的 async/await 是怎么工作的?
## Assistant
Python 的 `async`/`await` 让你编写在等待 I/O 时不阻塞的并发代码。`async def` 函数返回一个协程,`await` 会暂停它直到结果就绪——同时其他协程可以继续执行。
## User
什么时候该用 asyncio,什么时候该用线程?
## Assistant
**asyncio** 适用于 I/O 密集型任务(HTTP 请求、数据库查询、文件读写)——比线程更轻量,扩展性更好。**threading** 适用于调用不支持异步的阻塞库。**multiprocessing** 适用于 CPU 密集型任务。格式规则
- 标题:
## User、## Assistant或## System,二级标题,每条消息一个 - 内容:标题之间的所有内容为一条消息,Markdown 格式、代码块和列表会原样保留
- 前置信息:文件开头可选的 YAML 块,支持
title、source、date字段,均为可选 - 识别:包含至少一个
## User或## Assistant标题的文件会被自动识别为对话 - 兜底:不含上述标题的文件作为单条文档消息导入
- 大小写:角色名不区分大小写(
## user和## User均可)
Import API
POST /threads/import 接受 JSON 消息或对话 Markdown,支持单条和批量模式。
单条对话(JSON 消息)
curl -X POST http://127.0.0.1:14242/threads/import \
-H "Content-Type: application/json" \
-d '{
"title": "我的对话",
"source": "chatgpt",
"messages": [
{"role": "user", "content": "你好!"},
{"role": "assistant", "content": "你好!有什么可以帮你的?"}
]
}'单条对话(Markdown)
curl -X POST http://127.0.0.1:14242/threads/import \
-H "Content-Type: application/json" \
-d '{
"markdown_content": "## User\n\n你好!\n\n## Assistant\n\n你好!有什么可以帮你的?"
}'批量导入
curl -X POST http://127.0.0.1:14242/threads/import \
-H "Content-Type: application/json" \
-d '{
"threads": [
{
"title": "对话 1",
"messages": [
{"role": "user", "content": "你好"},
{"role": "assistant", "content": "嗨"}
]
},
{
"title": "对话 2",
"markdown_content": "## User\n\n再见\n\n## Assistant\n\n下次见!"
}
]
}'未指定对话线程 ID 时会自动生成。标题可从 Markdown 前置信息中推断。
CLI
nmem 命令行支持从文件、JSON 或标准输入导入对话。
# 导入对话 Markdown 文件
nmem t import --file conversation.md
# 指定标题和来源
nmem t import --file chat.md --title "Python 异步" --source chatgpt
# 从 JSON 消息导入
nmem t import --messages '[{"role":"user","content":"你好"},{"role":"assistant","content":"嗨"}]'
# 从标准输入导入 Markdown
cat conversation.md | nmem t import --stdin --title "管道导入"运行 nmem t import --help 查看所有选项。完整命令列表见 CLI 参考。
浏览器扩展
Nowledge Mem Exchange 浏览器扩展可直接从受支持的 Web AI 聊天平台捕获对话,无需导出文件。支持自动捕获、手动蒸馏和完整对话备份(增量同步)。详见浏览器扩展指南。
MCP 工具
| 工具 | 功能 |
|---|---|
thread_persist | 将编程会话保存为对话线程 |
thread_search | 按关键词搜索对话或列出最近的对话 |
thread_fetch_messages | 获取特定对话的完整消息 |