first commit
@@ -0,0 +1,68 @@
|
||||
---
|
||||
url: https://www.skyue.com/22040623.html
|
||||
title: Obsidian 和 Logseq 对比 - 拾月
|
||||
date: 2025-08-20 15:21:09
|
||||
tag:
|
||||
summary: 用了 2 年 Obsidian,Logseq 以前也知道并试用过,当时只有 web 版,稳定性差就没关注了。
|
||||
created: 2025-08-30T11:44
|
||||
updated: 2025-09-22T13:26
|
||||
---
|
||||
用了 2 年 Obsidian,Logseq 以前也知道并试用过,当时只有 web 版,稳定性差就没关注了。不久前看了 Randy Lu 关于 Logseq 的[视频分享](https://www.youtube.com/watch?v=DxoGJBb1mWQ),被吸引到了,于是试用了 2 周。这期间只用 Logseq,没用 Obsidian。
|
||||
|
||||
现在,想基于经验分析下二者的功能差异及未来的可能的迭代方向。需要说明的是,这不是一个教程,但如果你正在试用这两个软件,并在犹豫选择哪一个,本文或许能提供一些视角。
|
||||
|
||||
这两个软件共同主打的特点是:本地存储 + 文本文件。这对在意数据安全、数据可迁移性的用户(比如我)来讲,非常有吸引力。
|
||||
|
||||
它们的核心差异点有两个:
|
||||
|
||||
1. Logseq 强制使用大纲视图,Obsidian 是自由格式的 markdown 文档
|
||||
2. Logseq 没有文件夹结构,Obsidian 有文件夹结构。
|
||||
|
||||
**一、首先讲讲自由格式与强制大纲带来的影响**
|
||||
|
||||
Logseq 强制使用大纲视图,其实就是 block 优先,先有 block,然后 block 组成 page,并且 block 还有层级的关系。
|
||||
|
||||
Obsidian 自由格式,就是 page 优先,当它想去支持 block 的时候,只能从段落出发,每一段是个 block,段落间当然也没有层级关系。([官方文档介绍](https://publish.obsidian.md/help-zh/%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/%E5%9D%97%E9%93%BE%E6%8E%A5%E4%B8%8E%E5%9D%97%E5%BC%95%E7%94%A8):前后有空行包围的东西就是 block)。
|
||||
|
||||
从通用性来讲,Obsidian 的自由格式,其实兼容 Logseq 大纲视图。网上有很多人分享二者共用一个库的方案,无一例外的都是以 Logseq 库为准,然后让 Obsidian 去兼容 Logseq,充分佐证了这一点。
|
||||
|
||||
以 block 为例,前方讲 Obsidian 的 block 是基于段落的,但大纲带也是支持的,如下图所示。
|
||||
|
||||

|
||||
|
||||
Obsidian 大纲中的反向链接
|
||||
|
||||
相比 Logseq 的 block,Obsidian 的 block 有两个问题:
|
||||
|
||||
* Logseq 能直接在反向引用中编辑和操作(比如点击链接)内容,Obsidian 则必须跳转到原文档才能编辑和操作。
|
||||
* Logseq 的`#`标签和 `` 引用,都是作用于块的属性,通过 query 能直接查询到块,Obsidian 通用 dataview 的 query 只能查询到 page。
|
||||
|
||||
尤其是第 2 条,对 task 的管理非常重要。事实上,Obsidian 的 dataview 社区[已经在计划实现相关功能](https://github.com/blacksmithgu/obsidian-dataview/issues/874)了。
|
||||
|
||||
再看看 Logseq,因为是强制大纲,所以不适合写长文,有趣的是,Logseq 社区呼声第二高的 Feature Request 就是支持[长文写作](https://discuss.logseq.com/t/longform-writing-in-logseq/3527)。
|
||||
|
||||
这个帖子对 Logseq 应该如何处理长文 block 给出的建议,就是 Obsidian 基于段落的方案。
|
||||
|
||||
按照这个畅想,Logseq 支持定义 page 的类型,一类是大纲视图 page,一类是长文视图 page。
|
||||
|
||||
长远来看,Obsidian 在自由格式上支持更友好的 block 是顺理成章的事,但 Logseq 在现有强约束的情况下去支持自由格式的长文,需要打破框架。不清楚 Logseq 团队是否会考虑支持长文(目前 roadmap 中还看不到),但这确实是我无法放弃 Obsidian 唯一的原因。
|
||||
|
||||
我个人比较期待二者最后殊途同归,Obsidian 更好的支持 block,Logseq 打破框架支持长文写作。
|
||||
|
||||
**二、再谈谈文件夹支持**
|
||||
|
||||
这一点,同样体现了 Obsidian 对 Logseq 的兼容。
|
||||
|
||||
至于哪个更好,这个见仁见智,我倾向于 Logseq 简化文件夹的方式,减轻分类的压力。Logseq 的页面支持 [namespace 层级](https://www.skyue.com/22072311.html),可以实现类似文件夹的功能。但需要注意,这是非常定制化的能力,离开了 Logseq 这样的关系就丢失了,所以,如果考虑数据的可迁移性,这个功能应该慎重使用。
|
||||
|
||||
**三、我最终的选择**
|
||||
|
||||
我希望在笔记软件中写长文,Logseq 无法完全替代 Obsidian,虽然 Obsidian 的大纲能力比 Logseq 弱但也完全够用,所以本着少折腾的原则,继续使用 Obsidian。但在使用习惯上,会把 Obsidian 中的 daily note 大纲化。
|
||||
|
||||
哪天 Logseq 支持长文了,会考虑迁移。也许那一天,Obsidian 的 block 能力也能与 Logseq 并驾齐驱了。
|
||||
|
||||
最后,本文使用 Obsidian 写成。
|
||||
|
||||
## 相关阅读
|
||||
|
||||
* [Logseq 中 page、block 和 namespace 的用法](https://www.skyue.com/22072311.html)
|
||||
@@ -0,0 +1,471 @@
|
||||
---
|
||||
created: 2025-08-31T12:49
|
||||
updated: 2025-09-22T13:26
|
||||
---
|
||||
> 本文由 [简悦 SimpRead](http://ksria.com/simpread/) 转码, 原文地址 [www.cnblogs.com](https://www.cnblogs.com/obullxl/p/18295202/NTopic2024071001)
|
||||
|
||||
> Ollama 可以非常方便的管理和部署我们本地大语言模型,老牛同学希望通过本文对 Ollama 进行一次详细介绍,包括本地大模型管理和使用、WebUI 对话界面部署、通过 Python 和 Java 使用 Ollama 的......
|
||||
|
||||
老牛同学在前面有关大模型应用的文章中,多次使用了 **Ollama** 来管理和部署本地大模型(包括:**Qwen2**、**Llama3**、**Phi3**、**Gemma2** 等),但对 **Ollama** 这个非常方便管理本地大模型的软件的介绍却很少。
|
||||
|
||||
目前,清华和智谱 AI 联合发布开源的 **GLM4-9B** 大模型也能支持 **Ollama** 进行本地部署了([本地部署 GLM-4-9B 清华智谱开源大模型方法和对话效果体验](https://mp.weixin.qq.com/s/g7lDfnRRGdrHqN7WGMSkAg)),**Ollama** 支持的大模型越多越普及,对于的应用也就越多。为了降低大家查阅资料等学习时间,老牛同学今天尝试着对 Ollama 进行一次详细完整介绍。毕竟老牛同学也在不断学习中,若有疏漏或者错误之处,还请各位朋友多多指正,谢谢大家。
|
||||
|
||||
本文将分为以下章节对 Ollama 进行介绍:
|
||||
|
||||
1. Ollama 基本介绍,它的作用是什么
|
||||
2. Ollama 软件安装、一些常用的系统参数设置
|
||||
3. Ollama 管理本地已有大模型(包括终端对话界面)
|
||||
4. Ollama 导入模型到本地的三种方式:直接从 Ollama 远程仓库拉取、通过 GGUF 模型权重文件导入到本地、通过 safetensors 模型权限文件导入到本地
|
||||
5. 基于 WebUI 部署 Ollama 可视化对话界面
|
||||
6. Ollama 客户端 API 应用,包括 Python API 和 Java API 接口应用
|
||||
|
||||
Ollama 是什么,它与 Llama 有什么关系?
|
||||
--------------------------
|
||||
|
||||
**Ollama** 官网:[https://ollama.com/](https://ollama.com/),官方网站的介绍就一句话:**Get up and running with large language models.** (开始使用大语言模型。)
|
||||
|
||||
**Ollama** 是一个开源的 LLM(大型语言模型)服务工具,用于简化在本地运行大语言模型、降低使用大语言模型的门槛,使得大模型的开发者、研究人员和爱好者能够在本地环境快速实验、管理和部署最新大语言模型,包括如 **Qwen2**、**Llama3**、**Phi3**、**Gemma2** 等开源的大型语言模型。
|
||||
|
||||
**Ollama** 支持的大语言模型列表,可通过搜索模型名称查看:[https://ollama.com/library](https://ollama.com/library)
|
||||
|
||||
**Ollama** 官方 GitHub 源代码仓库:[https://github.com/ollama/ollama/](https://github.com/ollama/ollama)
|
||||
|
||||
**Llama** 是 Meta 公司开源的备受欢迎的一个通用大语言模型,和其他大模型一样,**Llama** 可以通过 **Ollama** 进行管理部署和推理等。
|
||||
|
||||
因此,`Ollama`与`Llama`的关系:`Llama`是大语言模型,而`Ollama`是大语言模型(不限于`Llama`模型)便捷的管理和运维工具,它们只是名字后面部分恰巧相同而已!
|
||||
|
||||

|
||||
|
||||
Ollama 安装和常用系统参数设置
|
||||
------------------
|
||||
|
||||
在官网首页,我们可以直接下载 **Ollama** 安装程序(支持 Windows/MacOS/Linux):[https://ollama.com/](https://ollama.com/)
|
||||
|
||||
**Ollama** 的安装过程,与安装其他普通软件并没有什么两样,安装完成之后,有几个常用的系统**环境变量**参数建议进行设置:
|
||||
|
||||
1. **OLLAMA_MODELS**:模型文件存放目录,默认目录为当前用户目录(Windows 目录:`C:\Users%username%.ollama\models`,MacOS 目录:`~/.ollama/models`,Linux 目录:`/usr/share/ollama/.ollama/models`),如果是 Windows 系统**建议修改**(如:D:\OllamaModels),避免 C 盘空间吃紧
|
||||
2. **OLLAMA_HOST**:Ollama 服务监听的网络地址,默认为 **127.0.0.1**,如果允许其他电脑访问 Ollama(如:局域网中的其他电脑),**建议设置**成 **0.0.0.0**,从而允许其他网络访问
|
||||
3. **OLLAMA_PORT**:Ollama 服务监听的默认端口,默认为 **11434**,如果端口有冲突,可以修改设置成其他端口(如:**8080** 等)
|
||||
4. **OLLAMA_ORIGINS**:HTTP 客户端请求来源,半角逗号分隔列表,若本地使用无严格要求,可以设置成星号,代表不受限制
|
||||
5. **OLLAMA_KEEP_ALIVE**:大模型加载到内存中后的存活时间,默认为 **5m** 即 5 分钟(如:纯数字如 300 代表 300 秒,0 代表处理请求响应后立即卸载模型,任何负数则表示一直存活);我们可设置成 **24h**,即模型在内存中保持 24 小时,提高访问速度
|
||||
6. **OLLAMA_NUM_PARALLEL**:请求处理并发数量,默认为 **1**,即单并发串行处理请求,可根据实际情况进行调整
|
||||
7. **OLLAMA_MAX_QUEUE**:请求队列长度,默认值为 **512**,可以根据情况设置,超过队列长度请求被抛弃
|
||||
8. **OLLAMA_DEBUG**:输出 Debug 日志标识,应用研发阶段可以设置成 **1**,即输出详细日志信息,便于排查问题
|
||||
9. **OLLAMA_MAX_LOADED_MODELS**:最多同时加载到内存中模型的数量,默认为 **1**,即只能有 1 个模型在内存中
|
||||
|
||||
Ollama 管理本地已有大模型
|
||||
----------------
|
||||
|
||||
【展示本地大模型列表:`ollama list`】
|
||||
|
||||
```
|
||||
>ollama list
|
||||
NAME ID SIZE MODIFIED
|
||||
gemma2:9b c19987e1e6e2 5.4 GB 7 days ago
|
||||
qwen2:7b e0d4e1163c58 4.4 GB 10 days ago
|
||||
|
||||
```
|
||||
|
||||
可以看到,老牛同学本地有 2 个大模型,它们的名称(**NAME**)分别为 **gemma2:9b** 和 **qwen2:7b**。
|
||||
|
||||
【删除单个本地大模型:`ollama rm 本地模型名称`】
|
||||
|
||||
```
|
||||
>ollama rm gemma2:9b
|
||||
deleted 'gemma2:9b'
|
||||
|
||||
>ollama list
|
||||
NAME ID SIZE MODIFIED
|
||||
qwen2:7b e0d4e1163c58 4.4 GB 10 days ago
|
||||
|
||||
```
|
||||
|
||||
老牛同学通过`rm`命令删除了 **gemma2:9b** 大模型之后,再次通过`list`命令查看,本地只有 **qwen2:7b** 一个大模型了。
|
||||
|
||||
【启动本地模型:`ollama run 本地模型名`】
|
||||
|
||||
```
|
||||
>ollama run qwen2:0.5b
|
||||
>>>
|
||||
|
||||
```
|
||||
|
||||
启动成功之后,就可以通过终端对话界面进行对话了(本命令下面也会讲到,其他详细暂且忽略)
|
||||
|
||||
【查看本地运行中模型列表:`ollama ps`】
|
||||
|
||||
```
|
||||
>ollama ps
|
||||
NAME ID SIZE PROCESSOR UNTIL
|
||||
qwen2:0.5b 6f48b936a09f 693 MB 100% CPU 4 minutes from now
|
||||
|
||||
```
|
||||
|
||||
通过`ps`命名可以看到,老牛同学本地 **qwen2:0.5b** 大模型正在运行中。
|
||||
|
||||
【复制本地大模型:`ollama cp 本地存在的模型名 新复制模型名`】
|
||||
|
||||
```
|
||||
>ollama cp qwen2:0.5b Qwen2-0.5B
|
||||
copied 'qwen2:0.5b' to 'Qwen2-0.5B'
|
||||
|
||||
>ollama list
|
||||
NAME ID SIZE MODIFIED
|
||||
Qwen2-0.5B:latest 6f48b936a09f 352 MB 4 seconds ago
|
||||
qwen2:0.5b 6f48b936a09f 352 MB 29 minutes ago
|
||||
qwen2:7b e0d4e1163c58 4.4 GB 10 days ago
|
||||
|
||||
```
|
||||
|
||||
上面`cp`命令,老牛同学把本地 **qwen2:0.5b** 复制了一份,新模型名为 **Qwen2-0.5B**
|
||||
|
||||
下面老牛同学介绍三种通过 Ollama 下载到本地大模型方式:
|
||||
|
||||
1. 方式一:直接通过 Ollama 远程仓库下载,这是最直接的方式,也是最推荐、最常用的方式
|
||||
2. 方式二:如果已经有 GGUF 模型权重文件了,不想重新下载,也可以通过 Ollama 把该文件直接导入到本地(不推荐、不常用)
|
||||
3. 方式三:如果已经有 safetensors 模型权重文件,也不想重新下载,也可以通过 Ollama 把该文件直接导入到本地(不推荐、不常用)
|
||||
|
||||
方式一:Ollama 从远程仓库下载大模型到本地
|
||||
------------------------
|
||||
|
||||
【下载或者更新本地大模型:`ollama pull 本地/远程仓库模型名称`】
|
||||
|
||||
本`pull`命令从 Ollama 远程仓库完整下载或增量更新模型文件,模型名称**格式**为:**模型名称: 参数规格**;如`ollama pull qwen2:0.5b` 则代表从 Ollama 仓库下载 **qwen2** 大模型的 **0.5b** 参数规格大模型文件到本地磁盘:
|
||||
|
||||

|
||||
|
||||
如果参数规格标记为`latest`则代表为默认参数规格,下载时**可以**不用指定,如 **Qwen2** 的 **7b** 被标记为`latest`,则`ollama pull qwen2`和`ollama pull qwen2:7b`这 2 个命令的意义是一样的,都下载的为 **7b** 参数规格模型。为了保证后续维护方便、避免误操作等,老牛同学**建议**不管是否为默认参数规格,我们下载命令中均明确参数规格。
|
||||
|
||||
值得一提的是,今天开始 **GLM4** 支持 Ollama 部署和推理,老牛同学特意列出它的下载命令:`ollama pull glm4:9b`(和其他模型相比,其实并没有特殊支出)。需要注意的是:Ollama 最低版本为 **0.2.0** 才能支持 **GLM4** 大模型!
|
||||
|
||||

|
||||
|
||||
```
|
||||
>ollama pull qwen2:0.5b
|
||||
pulling manifest
|
||||
pulling manifest
|
||||
pulling manifest
|
||||
pulling manifest
|
||||
pulling manifest
|
||||
pulling 8de95da68dc4... 100% ▕████████████████████████▏ 352 MB
|
||||
pulling 62fbfd9ed093... 100% ▕████████████████████████▏ 182 B
|
||||
pulling c156170b718e... 100% ▕████████████████████████▏ 11 KB
|
||||
pulling f02dd72bb242... 100% ▕████████████████████████▏ 59 B
|
||||
pulling 2184ab82477b... 100% ▕████████████████████████▏ 488 B
|
||||
verifying sha256 digest
|
||||
writing manifest
|
||||
removing any unused layers
|
||||
success
|
||||
|
||||
>ollama list
|
||||
NAME ID SIZE MODIFIED
|
||||
qwen2:0.5b 6f48b936a09f 352 MB 9 minutes ago
|
||||
qwen2:7b e0d4e1163c58 4.4 GB 10 days ago
|
||||
|
||||
```
|
||||
|
||||
若本地不存在大模型,则**下载**完整模型文件到本地磁盘;若本地磁盘存在该大模型,则**增量**下载大模型更新文件到本地磁盘。
|
||||
|
||||
从上面最后的`list`命令结果可以看到,老牛同学本地存在了 **qwen2:0.5b** 这个名称的大模型。
|
||||
|
||||
【下载且运行本地大模型:`ollama run 本地/远程仓库模型名称`】
|
||||
|
||||
```
|
||||
>ollama run qwen2:0.5b
|
||||
>>>
|
||||
|
||||
```
|
||||
|
||||
若本地不存在大模型,则**下载**完整模型文件到本地磁盘(类似于`pull`命令),然后**启动**大模型;若本地存在大模型,则直接启动(不进行更新)。
|
||||
|
||||
启动成功后,默认为终端对客界面:
|
||||
|
||||

|
||||
|
||||
1. 若需要输入多行文本,需要用**三引号**包裹,如:`"""这里是多行文本"""`
|
||||
2. `/clear`清除对话上下文信息
|
||||
3. `/bye`则退出对话窗口
|
||||
4. `/set parameter num_ctx 4096`可设置窗口大小为 4096 个 Token,也可以通过请求设置,如:`curl <http://localhost:11434/api/generate> -d '{ "model": "qwen2:7b", "prompt": "Why is the sky blue?", "options": { "num_ctx": 4096 }}'`
|
||||
5. `/show info`可以查看当前模型详情:
|
||||
,
|
||||
|
||||
```
|
||||
>>> /show info
|
||||
Model
|
||||
arch qwen2
|
||||
parameters 494.03M
|
||||
quantization Q4_0
|
||||
context length 32768
|
||||
embedding length 896
|
||||
|
||||
Parameters
|
||||
stop "<|im_start|>"
|
||||
stop "<|im_end|>"
|
||||
|
||||
License
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
|
||||
```
|
||||
|
||||
方式二:Ollama 导入 GGUF 模型文件到本地磁盘
|
||||
----------------------------
|
||||
|
||||
若我们已经从 HF 或者 ModeScope 下载了 GGUF 文件(文件名为:**Meta-Llama-3-8B-Instruct.Q4_K_M.gguf**),在我们存放`Llama3-8B`的 GGUF 模型文件目录中,创建一个文件名为`Modelfile`的文件,该文件的内容如下:
|
||||
|
||||
```
|
||||
FROM ./Meta-Llama-3-8B-Instruct.Q4_K_M.gguf
|
||||
|
||||
```
|
||||
|
||||
然后,打开终端,执行命令导入模型文件:`ollama create 模型名称 -f ./Modelfile`
|
||||
|
||||
```
|
||||
>ollama create Llama-3-8B -f ./Modelfile
|
||||
transferring model data
|
||||
using existing layer sha256:647a2b64cbcdbe670432d0502ebb2592b36dd364d51a9ef7a1387b7a4365781f
|
||||
creating new layer sha256:459d7c837b2bd7f895a15b0a5213846912693beedaf0257fbba2a508bc1c88d9
|
||||
writing manifest
|
||||
success
|
||||
|
||||
```
|
||||
|
||||
导入成功之后,我们就可以通过`list`命名,看到名为 **Llama-3-8B** 的本地模型了,后续可以和其他模型一样进行管理了。
|
||||
|
||||
方式三:Ollama 导入 safetensors 模型文件到到本地磁盘
|
||||
------------------------------------
|
||||
|
||||
官方操作文档:[https://ollama.fan/getting-started/import/#importing-pytorch-safetensors](https://ollama.fan/getting-started/import/#importing-pytorch-safetensors)
|
||||
|
||||
若我们已经从 HF 或者 ModeScope 下载了 safetensors 文件(文件目录为:**Mistral-7B**),
|
||||
|
||||
```
|
||||
git lfs install
|
||||
|
||||
git clone https://www.modelscope.cn/rubraAI/Mistral-7B-Instruct-v0.3.git Mistral-7B
|
||||
|
||||
```
|
||||
|
||||
然后,我们转换模型(结果:`Mistral-7B-v0.3.bin`):
|
||||
|
||||
```
|
||||
python llm/llama.cpp/convert.py ./Mistral-7B --outtype f16 --outfile Mistral-7B-v0.3.bin
|
||||
|
||||
```
|
||||
|
||||
接下来,进行量化量化:
|
||||
|
||||
```
|
||||
llm/llama.cpp/quantize Mistral-7B-v0.3.bin Mistral-7B-v0.3_Q4.bin q4_0
|
||||
|
||||
```
|
||||
|
||||
最后,通过 Ollama 导入到本地磁盘,创建`Modelfile`模型文件:
|
||||
|
||||
```
|
||||
FROM Mistral-7B-v0.3_Q4.bin
|
||||
|
||||
```
|
||||
|
||||
执行导入命令,导入模型文件:`ollama create 模型名称 -f ./Modelfile`
|
||||
|
||||
```
|
||||
>ollama create Mistral-7B-v0.3 -f ./Modelfile
|
||||
transferring model data
|
||||
using existing layer sha256:647a2b64cbcdbe670432d0502ebb2592b36dd364d51a9ef7a1387b7a4365781f
|
||||
creating new layer sha256:459d7c837b2bd7f895a15b0a5213846912693beedaf0257fbba2a508bc1c88d9
|
||||
writing manifest
|
||||
success
|
||||
|
||||
```
|
||||
|
||||
导入成功之后,我们就可以通过`list`命名,看到名为 **Mistral-7B-v0.3** 的本地模型了,后续可以和其他模型一样进行管理了。
|
||||
|
||||
基于 WebUI 部署 Ollama 可视化对话界面
|
||||
--------------------------
|
||||
|
||||
**Ollama** 自带控制台对话界面体验总归是不太好,接下来部署 Web 可视化聊天界面:
|
||||
|
||||
1. 下载并安装 Node.js 工具:[https://nodejs.org/zh-cn](https://nodejs.org/zh-cn)
|
||||
2. 下载`ollama-webui`工程代码:`git clone https://github.com/ollama-webui/ollama-webui-lite ollama-webui`
|
||||
3. 切换`ollama-webui`代码的目录:`cd ollama-webui`
|
||||
4. 设置 Node.js 工具包镜像源(下载提速):`npm config set registry http://mirrors.cloud.tencent.com/npm/`
|
||||
5. 安装 Node.js 依赖的工具包:`npm install`
|
||||
6. 最后,启动 Web 可视化界面:`npm run dev`
|
||||
|
||||

|
||||
|
||||
如果看到以上输出,代表 Web 可视化界面已经成功了!
|
||||
|
||||
浏览器打开 Web 可视化界面:[http://localhost:3000/](http://localhost:3000/)
|
||||
|
||||

|
||||
|
||||
Ollama 客户端:HTTP 访问服务
|
||||
--------------------
|
||||
|
||||
Ollama 默认提供了`generate`和`chat`这 2 个原始的 API 接口,使用方式如下:
|
||||
|
||||
1. `generate`接口的使用样例:
|
||||
|
||||
```
|
||||
curl http://localhost:11434/api/generate -d "{
|
||||
'model': 'qwen:0.5b',
|
||||
'prompt': '为什么天空是蓝色的?'
|
||||
}"
|
||||
|
||||
```
|
||||
|
||||
2. `chat`接口的使用样例:
|
||||
|
||||
```
|
||||
curl http://localhost:11434/api/chat -d '{
|
||||
"model": "qwen:7b",
|
||||
"messages": [
|
||||
{ "role": "user", "content": "为什么天空是蓝色的?" }
|
||||
]
|
||||
}'
|
||||
|
||||
```
|
||||
|
||||
接下来的 **Python** 和 **Java** 客户端应用,都是对这 2 个接口的封装。
|
||||
|
||||
Ollama 客户端:Python API 应用
|
||||
------------------------
|
||||
|
||||
我们把 Ollama 集成到 Python 应用中,只需要以下简单 2 步即可:
|
||||
|
||||
**第一步**,安装 Python 依赖包:
|
||||
|
||||
**第二步**,使用 Ollama 接口,`stream=True`代表按照流式输出:
|
||||
|
||||
```
|
||||
import ollama
|
||||
|
||||
# 流式输出
|
||||
def api_generate(text:str):
|
||||
print(f'提问:{text}')
|
||||
|
||||
stream = ollama.generate(
|
||||
stream=True,
|
||||
model='qwen:7b',
|
||||
prompt=text,
|
||||
)
|
||||
|
||||
print('-----------------------------------------')
|
||||
for chunk in stream:
|
||||
if not chunk['done']:
|
||||
print(chunk['response'], end='', flush=True)
|
||||
else:
|
||||
print('\n')
|
||||
print('-----------------------------------------')
|
||||
print(f'总耗时:{chunk['total_duration']}')
|
||||
print('-----------------------------------------')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
# 流式输出
|
||||
api_generate(text='天空为什么是蓝色的?')
|
||||
|
||||
# 非流式输出
|
||||
content = ollama.generate(model='qwen:0.5b', prompt='天空为什么是蓝色的?')
|
||||
print(content)
|
||||
|
||||
```
|
||||
|
||||
Ollama 客户端:Java API 应用(SpringBoot 应用)
|
||||
-------------------------------------
|
||||
|
||||
我们也可以把 Ollama 集成到 SpringBoot 应用中,只需要以下简单 3 步即可:
|
||||
|
||||
**第一步**,在总`pom.xml`中新增 SpringBoot Starter 依赖:
|
||||
|
||||
```
|
||||
<dependency>
|
||||
<groupId>io.springboot.ai</groupId>
|
||||
<artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
|
||||
<version>1.0.0</version>
|
||||
</dependency>
|
||||
|
||||
```
|
||||
|
||||
**第二步**,在 SpringBoot 配置文件`application.properties`中增加 Ollama 配置信息:
|
||||
|
||||
```
|
||||
server.port=8088
|
||||
spring.application.name=NTopicBootX
|
||||
spring.ai.ollama.base-url=http://localhost:11434
|
||||
spring.ai.ollama.chat.options.model=qwen:0.5b
|
||||
|
||||
```
|
||||
|
||||
配置文件指定了 Ollama API 地址和端口,同时指定了默认模型 **qwen:0.5b**(注意:模型需要在本地已经存在)
|
||||
|
||||
**第三步**,使用`OllamaChatClient`进行文字生成或者对话:
|
||||
|
||||
```
|
||||
import org.springframework.ai.chat.ChatResponse;
|
||||
import org.springframework.ai.chat.prompt.Prompt;
|
||||
import org.springframework.ai.ollama.OllamaChatClient;
|
||||
import org.springframework.ai.ollama.api.OllamaOptions;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
public class OllamaClientController {
|
||||
|
||||
@Autowired
|
||||
@Qualifier("ollamaChatClient")
|
||||
private OllamaChatClient ollamaChatClient;
|
||||
|
||||
|
||||
* http://localhost:8088/ollama/chat/v1?msg=天空为什么是蓝色的?
|
||||
*/
|
||||
@GetMapping("/ollama/chat/v1")
|
||||
public String ollamaChat(@RequestParam String msg) {
|
||||
return this.ollamaChatClient.call(msg);
|
||||
}
|
||||
|
||||
|
||||
* http://localhost:8088/ollama/chat/v2?msg=人为什么要不断的追求卓越?
|
||||
*/
|
||||
@GetMapping("/ollama/chat/v2")
|
||||
public Object ollamaChatV2(@RequestParam String msg) {
|
||||
Prompt prompt = new Prompt(msg);
|
||||
ChatResponse chatResponse = ollamaChatClient.call(prompt);
|
||||
return chatResponse;
|
||||
}
|
||||
|
||||
|
||||
* http://localhost:8088/ollama/chat/v3?msg=你认为老牛同学的文章如何?
|
||||
*/
|
||||
@GetMapping("/ollama/chat/v3")
|
||||
public Object ollamaChatV3(@RequestParam String msg) {
|
||||
Prompt prompt = new Prompt(
|
||||
msg,
|
||||
OllamaOptions.create()
|
||||
.withModel("qwen:0.5b")
|
||||
.withTemperature(0.4F));
|
||||
ChatResponse chatResponse = ollamaChatClient.call(prompt);
|
||||
return chatResponse.getResult().getOutput().getContent();
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
以上是 Java 客户端的简单样例,我们可以通过`OllamaChatClient`访问 Ollama 接口,既可以使用默认大模型,也可以在参数指定模型名称!
|
||||
|
||||
[基于 Qwen2/Lllama3 等大模型,部署团队私有化 RAG 知识库系统的详细教程(Docker+AnythingLLM)](https://mp.weixin.qq.com/s/PpY3k3kReKfQdeOJyrB6aw)
|
||||
|
||||
[使用 Llama3/Qwen2 等开源大模型,部署团队私有化 Code Copilot 和使用教程](https://mp.weixin.qq.com/s/vt1EXVWtwm6ltZVYtB4-Tg)
|
||||
|
||||
[本地部署 GLM-4-9B 清华智谱开源大模型方法和对话效果体验](https://mp.weixin.qq.com/s/g7lDfnRRGdrHqN7WGMSkAg)
|
||||
|
||||
[玩转 AI,笔记本电脑安装属于自己的 Llama 3 8B 大模型和对话客户端](https://mp.weixin.qq.com/s/MekCUJDhKzuUnoykkGoH2g)
|
||||
|
||||
[ChatTTS 开源文本转语音模型本地部署、API 使用和搭建 WebUI 界面](https://mp.weixin.qq.com/s/rL3vyJ_xEj7GGoKaxUh8_A)
|
||||
|
||||

|
||||
@@ -0,0 +1,462 @@
|
||||
---
|
||||
url: https://www.cnblogs.com/obullxl/p/18295202/NTopic2024071001
|
||||
title: Ollama 完整教程:本地 LLM 管理、WebUI 对话、Python/Java 客户端 API 应用 - 老牛啊 - 博客园
|
||||
date: 2025-08-31 12:39:45
|
||||
tag:
|
||||
summary: Ollama 可以非常方便的管理和部署我们本地大语言模型,老牛同学希望通过本文对 Ollama 进行一次详细介绍,包括本地大模型管理和使用、WebUI 对话界面部署、通过 Python 和 Java 使用 Ollama 的......
|
||||
created: 2025-08-31T12:49
|
||||
updated: 2025-09-22T13:26
|
||||
---
|
||||
老牛同学在前面有关大模型应用的文章中,多次使用了 **Ollama** 来管理和部署本地大模型(包括:**Qwen2**、**Llama3**、**Phi3**、**Gemma2** 等),但对 **Ollama** 这个非常方便管理本地大模型的软件的介绍却很少。
|
||||
|
||||
目前,清华和智谱 AI 联合发布开源的 **GLM4-9B** 大模型也能支持 **Ollama** 进行本地部署了([本地部署 GLM-4-9B 清华智谱开源大模型方法和对话效果体验](https://mp.weixin.qq.com/s/g7lDfnRRGdrHqN7WGMSkAg)),**Ollama** 支持的大模型越多越普及,对于的应用也就越多。为了降低大家查阅资料等学习时间,老牛同学今天尝试着对 Ollama 进行一次详细完整介绍。毕竟老牛同学也在不断学习中,若有疏漏或者错误之处,还请各位朋友多多指正,谢谢大家。
|
||||
|
||||
本文将分为以下章节对 Ollama 进行介绍:
|
||||
|
||||
1. Ollama 基本介绍,它的作用是什么
|
||||
2. Ollama 软件安装、一些常用的系统参数设置
|
||||
3. Ollama 管理本地已有大模型(包括终端对话界面)
|
||||
4. Ollama 导入模型到本地的三种方式:直接从 Ollama 远程仓库拉取、通过 GGUF 模型权重文件导入到本地、通过 safetensors 模型权限文件导入到本地
|
||||
5. 基于 WebUI 部署 Ollama 可视化对话界面
|
||||
6. Ollama 客户端 API 应用,包括 Python API 和 Java API 接口应用
|
||||
|
||||
## Ollama 是什么,它与 Llama 有什么关系?
|
||||
|
||||
**Ollama** 官网:[https://ollama.com/](https://ollama.com/),官方网站的介绍就一句话:**Get up and running with large language models.** (开始使用大语言模型。)
|
||||
|
||||
**Ollama** 是一个开源的 LLM(大型语言模型)服务工具,用于简化在本地运行大语言模型、降低使用大语言模型的门槛,使得大模型的开发者、研究人员和爱好者能够在本地环境快速实验、管理和部署最新大语言模型,包括如 **Qwen2**、**Llama3**、**Phi3**、**Gemma2** 等开源的大型语言模型。
|
||||
|
||||
**Ollama** 支持的大语言模型列表,可通过搜索模型名称查看:[https://ollama.com/library](https://ollama.com/library)
|
||||
|
||||
**Ollama** 官方 GitHub 源代码仓库:[https://github.com/ollama/ollama/](https://github.com/ollama/ollama)
|
||||
|
||||
**Llama** 是 Meta 公司开源的备受欢迎的一个通用大语言模型,和其他大模型一样,**Llama** 可以通过 **Ollama** 进行管理部署和推理等。
|
||||
|
||||
因此,`Ollama`与`Llama`的关系:`Llama`是大语言模型,而`Ollama`是大语言模型(不限于`Llama`模型)便捷的管理和运维工具,它们只是名字后面部分恰巧相同而已!
|
||||
|
||||

|
||||
|
||||
## Ollama 安装和常用系统参数设置
|
||||
|
||||
在官网首页,我们可以直接下载 **Ollama** 安装程序(支持 Windows/MacOS/Linux):[https://ollama.com/](https://ollama.com/)
|
||||
|
||||
**Ollama** 的安装过程,与安装其他普通软件并没有什么两样,安装完成之后,有几个常用的系统**环境变量**参数建议进行设置:
|
||||
|
||||
1. **OLLAMA_MODELS**:模型文件存放目录,默认目录为当前用户目录(Windows 目录:`C:\Users%username%.ollama\models`,MacOS 目录:`~/.ollama/models`,Linux 目录:`/usr/share/ollama/.ollama/models`),如果是 Windows 系统**建议修改**(如:D:\OllamaModels),避免 C 盘空间吃紧
|
||||
2. **OLLAMA_HOST**:Ollama 服务监听的网络地址,默认为 **127.0.0.1**,如果允许其他电脑访问 Ollama(如:局域网中的其他电脑),**建议设置**成 **0.0.0.0**,从而允许其他网络访问
|
||||
3. **OLLAMA_PORT**:Ollama 服务监听的默认端口,默认为 **11434**,如果端口有冲突,可以修改设置成其他端口(如:**8080** 等)
|
||||
4. **OLLAMA_ORIGINS**:HTTP 客户端请求来源,半角逗号分隔列表,若本地使用无严格要求,可以设置成星号,代表不受限制
|
||||
5. **OLLAMA_KEEP_ALIVE**:大模型加载到内存中后的存活时间,默认为 **5m** 即 5 分钟(如:纯数字如 300 代表 300 秒,0 代表处理请求响应后立即卸载模型,任何负数则表示一直存活);我们可设置成 **24h**,即模型在内存中保持 24 小时,提高访问速度
|
||||
6. **OLLAMA_NUM_PARALLEL**:请求处理并发数量,默认为 **1**,即单并发串行处理请求,可根据实际情况进行调整
|
||||
7. **OLLAMA_MAX_QUEUE**:请求队列长度,默认值为 **512**,可以根据情况设置,超过队列长度请求被抛弃
|
||||
8. **OLLAMA_DEBUG**:输出 Debug 日志标识,应用研发阶段可以设置成 **1**,即输出详细日志信息,便于排查问题
|
||||
9. **OLLAMA_MAX_LOADED_MODELS**:最多同时加载到内存中模型的数量,默认为 **1**,即只能有 1 个模型在内存中
|
||||
|
||||
## Ollama 管理本地已有大模型
|
||||
|
||||
【展示本地大模型列表:`ollama list`】
|
||||
|
||||
```
|
||||
>ollama list
|
||||
NAME ID SIZE MODIFIED
|
||||
gemma2:9b c19987e1e6e2 5.4 GB 7 days ago
|
||||
qwen2:7b e0d4e1163c58 4.4 GB 10 days ago
|
||||
|
||||
```
|
||||
|
||||
可以看到,老牛同学本地有 2 个大模型,它们的名称(**NAME**)分别为 **gemma2:9b** 和 **qwen2:7b**。
|
||||
|
||||
【删除单个本地大模型:`ollama rm 本地模型名称`】
|
||||
|
||||
```
|
||||
>ollama rm gemma2:9b
|
||||
deleted 'gemma2:9b'
|
||||
|
||||
>ollama list
|
||||
NAME ID SIZE MODIFIED
|
||||
qwen2:7b e0d4e1163c58 4.4 GB 10 days ago
|
||||
|
||||
```
|
||||
|
||||
老牛同学通过`rm`命令删除了 **gemma2:9b** 大模型之后,再次通过`list`命令查看,本地只有 **qwen2:7b** 一个大模型了。
|
||||
|
||||
【启动本地模型:`ollama run 本地模型名`】
|
||||
|
||||
```
|
||||
>ollama run qwen2:0.5b
|
||||
>>>
|
||||
|
||||
```
|
||||
|
||||
启动成功之后,就可以通过终端对话界面进行对话了(本命令下面也会讲到,其他详细暂且忽略)
|
||||
|
||||
【查看本地运行中模型列表:`ollama ps`】
|
||||
|
||||
```
|
||||
>ollama ps
|
||||
NAME ID SIZE PROCESSOR UNTIL
|
||||
qwen2:0.5b 6f48b936a09f 693 MB 100% CPU 4 minutes from now
|
||||
|
||||
```
|
||||
|
||||
通过`ps`命名可以看到,老牛同学本地 **qwen2:0.5b** 大模型正在运行中。
|
||||
|
||||
【复制本地大模型:`ollama cp 本地存在的模型名 新复制模型名`】
|
||||
|
||||
```
|
||||
>ollama cp qwen2:0.5b Qwen2-0.5B
|
||||
copied 'qwen2:0.5b' to 'Qwen2-0.5B'
|
||||
|
||||
>ollama list
|
||||
NAME ID SIZE MODIFIED
|
||||
Qwen2-0.5B:latest 6f48b936a09f 352 MB 4 seconds ago
|
||||
qwen2:0.5b 6f48b936a09f 352 MB 29 minutes ago
|
||||
qwen2:7b e0d4e1163c58 4.4 GB 10 days ago
|
||||
|
||||
```
|
||||
|
||||
上面`cp`命令,老牛同学把本地 **qwen2:0.5b** 复制了一份,新模型名为 **Qwen2-0.5B**
|
||||
|
||||
下面老牛同学介绍三种通过 Ollama 下载到本地大模型方式:
|
||||
|
||||
1. 方式一:直接通过 Ollama 远程仓库下载,这是最直接的方式,也是最推荐、最常用的方式
|
||||
2. 方式二:如果已经有 GGUF 模型权重文件了,不想重新下载,也可以通过 Ollama 把该文件直接导入到本地(不推荐、不常用)
|
||||
3. 方式三:如果已经有 safetensors 模型权重文件,也不想重新下载,也可以通过 Ollama 把该文件直接导入到本地(不推荐、不常用)
|
||||
|
||||
## 方式一:Ollama 从远程仓库下载大模型到本地
|
||||
|
||||
【下载或者更新本地大模型:`ollama pull 本地/远程仓库模型名称`】
|
||||
|
||||
本`pull`命令从 Ollama 远程仓库完整下载或增量更新模型文件,模型名称**格式**为:**模型名称: 参数规格**;如`ollama pull qwen2:0.5b` 则代表从 Ollama 仓库下载 **qwen2** 大模型的 **0.5b** 参数规格大模型文件到本地磁盘:
|
||||
|
||||

|
||||
|
||||
如果参数规格标记为`latest`则代表为默认参数规格,下载时**可以**不用指定,如 **Qwen2** 的 **7b** 被标记为`latest`,则`ollama pull qwen2`和`ollama pull qwen2:7b`这 2 个命令的意义是一样的,都下载的为 **7b** 参数规格模型。为了保证后续维护方便、避免误操作等,老牛同学**建议**不管是否为默认参数规格,我们下载命令中均明确参数规格。
|
||||
|
||||
值得一提的是,今天开始 **GLM4** 支持 Ollama 部署和推理,老牛同学特意列出它的下载命令:`ollama pull glm4:9b`(和其他模型相比,其实并没有特殊支出)。需要注意的是:Ollama 最低版本为 **0.2.0** 才能支持 **GLM4** 大模型!
|
||||
|
||||

|
||||
|
||||
```
|
||||
>ollama pull qwen2:0.5b
|
||||
pulling manifest
|
||||
pulling manifest
|
||||
pulling manifest
|
||||
pulling manifest
|
||||
pulling manifest
|
||||
pulling 8de95da68dc4... 100% ▕████████████████████████▏ 352 MB
|
||||
pulling 62fbfd9ed093... 100% ▕████████████████████████▏ 182 B
|
||||
pulling c156170b718e... 100% ▕████████████████████████▏ 11 KB
|
||||
pulling f02dd72bb242... 100% ▕████████████████████████▏ 59 B
|
||||
pulling 2184ab82477b... 100% ▕████████████████████████▏ 488 B
|
||||
verifying sha256 digest
|
||||
writing manifest
|
||||
removing any unused layers
|
||||
success
|
||||
|
||||
>ollama list
|
||||
NAME ID SIZE MODIFIED
|
||||
qwen2:0.5b 6f48b936a09f 352 MB 9 minutes ago
|
||||
qwen2:7b e0d4e1163c58 4.4 GB 10 days ago
|
||||
|
||||
```
|
||||
|
||||
若本地不存在大模型,则**下载**完整模型文件到本地磁盘;若本地磁盘存在该大模型,则**增量**下载大模型更新文件到本地磁盘。
|
||||
|
||||
从上面最后的`list`命令结果可以看到,老牛同学本地存在了 **qwen2:0.5b** 这个名称的大模型。
|
||||
|
||||
【下载且运行本地大模型:`ollama run 本地/远程仓库模型名称`】
|
||||
|
||||
```
|
||||
>ollama run qwen2:0.5b
|
||||
>>>
|
||||
|
||||
```
|
||||
|
||||
若本地不存在大模型,则**下载**完整模型文件到本地磁盘(类似于`pull`命令),然后**启动**大模型;若本地存在大模型,则直接启动(不进行更新)。
|
||||
|
||||
启动成功后,默认为终端对客界面:
|
||||
|
||||

|
||||
|
||||
1. 若需要输入多行文本,需要用**三引号**包裹,如:`"""这里是多行文本"""`
|
||||
2. `/clear`清除对话上下文信息
|
||||
3. `/bye`则退出对话窗口
|
||||
4. `/set parameter num_ctx 4096`可设置窗口大小为 4096 个 Token,也可以通过请求设置,如:`curl <http://localhost:11434/api/generate> -d '{ "model": "qwen2:7b", "prompt": "Why is the sky blue?", "options": { "num_ctx": 4096 }}'`
|
||||
5. `/show info`可以查看当前模型详情:
|
||||
,
|
||||
|
||||
```
|
||||
>>> /show info
|
||||
Model
|
||||
arch qwen2
|
||||
parameters 494.03M
|
||||
quantization Q4_0
|
||||
context length 32768
|
||||
embedding length 896
|
||||
|
||||
Parameters
|
||||
stop "<|im_start|>"
|
||||
stop "<|im_end|>"
|
||||
|
||||
License
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
|
||||
```
|
||||
|
||||
## 方式二:Ollama 导入 GGUF 模型文件到本地磁盘
|
||||
|
||||
若我们已经从 HF 或者 ModeScope 下载了 GGUF 文件(文件名为:**Meta-Llama-3-8B-Instruct.Q4_K_M.gguf**),在我们存放`Llama3-8B`的 GGUF 模型文件目录中,创建一个文件名为`Modelfile`的文件,该文件的内容如下:
|
||||
|
||||
```
|
||||
FROM ./Meta-Llama-3-8B-Instruct.Q4_K_M.gguf
|
||||
|
||||
```
|
||||
|
||||
然后,打开终端,执行命令导入模型文件:`ollama create 模型名称 -f ./Modelfile`
|
||||
|
||||
```
|
||||
>ollama create Llama-3-8B -f ./Modelfile
|
||||
transferring model data
|
||||
using existing layer sha256:647a2b64cbcdbe670432d0502ebb2592b36dd364d51a9ef7a1387b7a4365781f
|
||||
creating new layer sha256:459d7c837b2bd7f895a15b0a5213846912693beedaf0257fbba2a508bc1c88d9
|
||||
writing manifest
|
||||
success
|
||||
|
||||
```
|
||||
|
||||
导入成功之后,我们就可以通过`list`命名,看到名为 **Llama-3-8B** 的本地模型了,后续可以和其他模型一样进行管理了。
|
||||
|
||||
## 方式三:Ollama 导入 safetensors 模型文件到到本地磁盘
|
||||
|
||||
官方操作文档:[https://ollama.fan/getting-started/import/#importing-pytorch-safetensors](https://ollama.fan/getting-started/import/#importing-pytorch-safetensors)
|
||||
|
||||
若我们已经从 HF 或者 ModeScope 下载了 safetensors 文件(文件目录为:**Mistral-7B**),
|
||||
|
||||
```
|
||||
git lfs install
|
||||
|
||||
git clone https://www.modelscope.cn/rubraAI/Mistral-7B-Instruct-v0.3.git Mistral-7B
|
||||
|
||||
```
|
||||
|
||||
然后,我们转换模型(结果:`Mistral-7B-v0.3.bin`):
|
||||
|
||||
```
|
||||
python llm/llama.cpp/convert.py ./Mistral-7B --outtype f16 --outfile Mistral-7B-v0.3.bin
|
||||
|
||||
```
|
||||
|
||||
接下来,进行量化量化:
|
||||
|
||||
```
|
||||
llm/llama.cpp/quantize Mistral-7B-v0.3.bin Mistral-7B-v0.3_Q4.bin q4_0
|
||||
|
||||
```
|
||||
|
||||
最后,通过 Ollama 导入到本地磁盘,创建`Modelfile`模型文件:
|
||||
|
||||
```
|
||||
FROM Mistral-7B-v0.3_Q4.bin
|
||||
|
||||
```
|
||||
|
||||
执行导入命令,导入模型文件:`ollama create 模型名称 -f ./Modelfile`
|
||||
|
||||
```
|
||||
>ollama create Mistral-7B-v0.3 -f ./Modelfile
|
||||
transferring model data
|
||||
using existing layer sha256:647a2b64cbcdbe670432d0502ebb2592b36dd364d51a9ef7a1387b7a4365781f
|
||||
creating new layer sha256:459d7c837b2bd7f895a15b0a5213846912693beedaf0257fbba2a508bc1c88d9
|
||||
writing manifest
|
||||
success
|
||||
|
||||
```
|
||||
|
||||
导入成功之后,我们就可以通过`list`命名,看到名为 **Mistral-7B-v0.3** 的本地模型了,后续可以和其他模型一样进行管理了。
|
||||
|
||||
## 基于 WebUI 部署 Ollama 可视化对话界面
|
||||
|
||||
**Ollama** 自带控制台对话界面体验总归是不太好,接下来部署 Web 可视化聊天界面:
|
||||
|
||||
1. 下载并安装 Node.js 工具:[https://nodejs.org/zh-cn](https://nodejs.org/zh-cn)
|
||||
2. 下载`ollama-webui`工程代码:`git clone https://github.com/ollama-webui/ollama-webui-lite ollama-webui`
|
||||
3. 切换`ollama-webui`代码的目录:`cd ollama-webui`
|
||||
4. 设置 Node.js 工具包镜像源(下载提速):`npm config set registry http://mirrors.cloud.tencent.com/npm/`
|
||||
5. 安装 Node.js 依赖的工具包:`npm install`
|
||||
6. 最后,启动 Web 可视化界面:`npm run dev`
|
||||
|
||||

|
||||
|
||||
如果看到以上输出,代表 Web 可视化界面已经成功了!
|
||||
|
||||
浏览器打开 Web 可视化界面:[http://localhost:3000/](http://localhost:3000/)
|
||||
|
||||

|
||||
|
||||
## Ollama 客户端:HTTP 访问服务
|
||||
|
||||
Ollama 默认提供了`generate`和`chat`这 2 个原始的 API 接口,使用方式如下:
|
||||
|
||||
1. `generate`接口的使用样例:
|
||||
|
||||
```
|
||||
curl http://localhost:11434/api/generate -d "{
|
||||
'model': 'qwen:0.5b',
|
||||
'prompt': '为什么天空是蓝色的?'
|
||||
}"
|
||||
|
||||
```
|
||||
|
||||
2. `chat`接口的使用样例:
|
||||
|
||||
```
|
||||
curl http://localhost:11434/api/chat -d '{
|
||||
"model": "qwen:7b",
|
||||
"messages": [
|
||||
{ "role": "user", "content": "为什么天空是蓝色的?" }
|
||||
]
|
||||
}'
|
||||
|
||||
```
|
||||
|
||||
接下来的 **Python** 和 **Java** 客户端应用,都是对这 2 个接口的封装。
|
||||
|
||||
## Ollama 客户端:Python API 应用
|
||||
|
||||
我们把 Ollama 集成到 Python 应用中,只需要以下简单 2 步即可:
|
||||
|
||||
**第一步**,安装 Python 依赖包:
|
||||
|
||||
**第二步**,使用 Ollama 接口,`stream=True`代表按照流式输出:
|
||||
|
||||
```
|
||||
import ollama
|
||||
|
||||
# 流式输出
|
||||
def api_generate(text:str):
|
||||
print(f'提问:{text}')
|
||||
|
||||
stream = ollama.generate(
|
||||
stream=True,
|
||||
model='qwen:7b',
|
||||
prompt=text,
|
||||
)
|
||||
|
||||
print('-----------------------------------------')
|
||||
for chunk in stream:
|
||||
if not chunk['done']:
|
||||
print(chunk['response'], end='', flush=True)
|
||||
else:
|
||||
print('\n')
|
||||
print('-----------------------------------------')
|
||||
print(f'总耗时:{chunk['total_duration']}')
|
||||
print('-----------------------------------------')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
# 流式输出
|
||||
api_generate(text='天空为什么是蓝色的?')
|
||||
|
||||
# 非流式输出
|
||||
content = ollama.generate(model='qwen:0.5b', prompt='天空为什么是蓝色的?')
|
||||
print(content)
|
||||
|
||||
```
|
||||
|
||||
## Ollama 客户端:Java API 应用(SpringBoot 应用)
|
||||
|
||||
我们也可以把 Ollama 集成到 SpringBoot 应用中,只需要以下简单 3 步即可:
|
||||
|
||||
**第一步**,在总`pom.xml`中新增 SpringBoot Starter 依赖:
|
||||
|
||||
```
|
||||
<dependency>
|
||||
<groupId>io.springboot.ai</groupId>
|
||||
<artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
|
||||
<version>1.0.0</version>
|
||||
</dependency>
|
||||
|
||||
```
|
||||
|
||||
**第二步**,在 SpringBoot 配置文件`application.properties`中增加 Ollama 配置信息:
|
||||
|
||||
```
|
||||
server.port=8088
|
||||
spring.application.name=NTopicBootX
|
||||
spring.ai.ollama.base-url=http://localhost:11434
|
||||
spring.ai.ollama.chat.options.model=qwen:0.5b
|
||||
|
||||
```
|
||||
|
||||
配置文件指定了 Ollama API 地址和端口,同时指定了默认模型 **qwen:0.5b**(注意:模型需要在本地已经存在)
|
||||
|
||||
**第三步**,使用`OllamaChatClient`进行文字生成或者对话:
|
||||
|
||||
```
|
||||
import org.springframework.ai.chat.ChatResponse;
|
||||
import org.springframework.ai.chat.prompt.Prompt;
|
||||
import org.springframework.ai.ollama.OllamaChatClient;
|
||||
import org.springframework.ai.ollama.api.OllamaOptions;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
public class OllamaClientController {
|
||||
|
||||
@Autowired
|
||||
@Qualifier("ollamaChatClient")
|
||||
private OllamaChatClient ollamaChatClient;
|
||||
|
||||
|
||||
* http://localhost:8088/ollama/chat/v1?msg=天空为什么是蓝色的?
|
||||
*/
|
||||
@GetMapping("/ollama/chat/v1")
|
||||
public String ollamaChat(@RequestParam String msg) {
|
||||
return this.ollamaChatClient.call(msg);
|
||||
}
|
||||
|
||||
|
||||
* http://localhost:8088/ollama/chat/v2?msg=人为什么要不断的追求卓越?
|
||||
*/
|
||||
@GetMapping("/ollama/chat/v2")
|
||||
public Object ollamaChatV2(@RequestParam String msg) {
|
||||
Prompt prompt = new Prompt(msg);
|
||||
ChatResponse chatResponse = ollamaChatClient.call(prompt);
|
||||
return chatResponse;
|
||||
}
|
||||
|
||||
|
||||
* http://localhost:8088/ollama/chat/v3?msg=你认为老牛同学的文章如何?
|
||||
*/
|
||||
@GetMapping("/ollama/chat/v3")
|
||||
public Object ollamaChatV3(@RequestParam String msg) {
|
||||
Prompt prompt = new Prompt(
|
||||
msg,
|
||||
OllamaOptions.create()
|
||||
.withModel("qwen:0.5b")
|
||||
.withTemperature(0.4F));
|
||||
ChatResponse chatResponse = ollamaChatClient.call(prompt);
|
||||
return chatResponse.getResult().getOutput().getContent();
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
以上是 Java 客户端的简单样例,我们可以通过`OllamaChatClient`访问 Ollama 接口,既可以使用默认大模型,也可以在参数指定模型名称!
|
||||
|
||||
[基于 Qwen2/Lllama3 等大模型,部署团队私有化 RAG 知识库系统的详细教程(Docker+AnythingLLM)](https://mp.weixin.qq.com/s/PpY3k3kReKfQdeOJyrB6aw)
|
||||
|
||||
[使用 Llama3/Qwen2 等开源大模型,部署团队私有化 Code Copilot 和使用教程](https://mp.weixin.qq.com/s/vt1EXVWtwm6ltZVYtB4-Tg)
|
||||
|
||||
[本地部署 GLM-4-9B 清华智谱开源大模型方法和对话效果体验](https://mp.weixin.qq.com/s/g7lDfnRRGdrHqN7WGMSkAg)
|
||||
|
||||
[玩转 AI,笔记本电脑安装属于自己的 Llama 3 8B 大模型和对话客户端](https://mp.weixin.qq.com/s/MekCUJDhKzuUnoykkGoH2g)
|
||||
|
||||
[ChatTTS 开源文本转语音模型本地部署、API 使用和搭建 WebUI 界面](https://mp.weixin.qq.com/s/rL3vyJ_xEj7GGoKaxUh8_A)
|
||||
|
||||

|
||||
|
After Width: | Height: | Size: 62 KiB |
|
After Width: | Height: | Size: 73 KiB |
|
After Width: | Height: | Size: 32 KiB |
|
After Width: | Height: | Size: 49 KiB |
|
After Width: | Height: | Size: 41 KiB |
@@ -0,0 +1,705 @@
|
||||
---
|
||||
created: 2025-08-30T11:44
|
||||
updated: 2025-09-22T13:27
|
||||
---
|
||||
> 本文由 [简悦 SimpRead](http://ksria.com/simpread/) 转码, 原文地址 [simpread.pro](https://simpread.pro/docs/#/Sync?id=%e5%af%bc%e5%87%ba%e6%96%87%e4%bb%b6%e5%a4%b9)
|
||||
|
||||
> 文档中心 | 简悦 SimpRead - 如杂志般沉浸式阅读体验的扩展
|
||||
|
||||
> [简悦 · 同步助手](#/Sync) 是 **随着简悦 2.1.0 发布的一个全新的 Desktop App**,用于对简悦已知功能的补充,以及会 **持续提供更多** 的可玩性。
|
||||
|
||||

|
||||
|
||||
[目录](#/Sync?id=%e7%9b%ae%e5%bd%95)
|
||||
----------------------------------
|
||||
|
||||
* [描述](#/Sync?id=%e6%8f%8f%e8%bf%b0)
|
||||
|
||||
* [支持平台](#/Sync?id=%e6%94%af%e6%8c%81%e5%b9%b3%e5%8f%b0)
|
||||
|
||||
* [更新日志](#/Sync?id=%e6%9b%b4%e6%96%b0%e6%97%a5%e5%bf%97)
|
||||
|
||||
* [下载](#/Sync?id=%e4%b8%8b%e8%bd%bd)
|
||||
|
||||
* [教程](#/Sync?id=%e6%95%99%e7%a8%8b)
|
||||
|
||||
* [验证](#/Sync?id=%e9%aa%8c%e8%af%81)
|
||||
|
||||
* [同步](#/Sync?id=%e5%90%8c%e6%ad%a5)
|
||||
|
||||
* [如何配置](#/Sync?id=%e5%a6%82%e4%bd%95%e9%85%8d%e7%bd%ae)
|
||||
|
||||
* [自动同步](#/Sync?id=%e8%87%aa%e5%8a%a8%e5%90%8c%e6%ad%a5)
|
||||
|
||||
* [自动同步的注意事项](#/Sync?id=%e8%87%aa%e5%8a%a8%e5%90%8c%e6%ad%a5%3fid)
|
||||
|
||||
* [内置解析](#/Sync?id=%e5%86%85%e7%bd%ae%e8%a7%a3%e6%9e%90)
|
||||
|
||||
* [导出到本地](#/Sync?id=%e5%af%bc%e5%87%ba%e6%9c%8d%e5%8a%a1)
|
||||
|
||||
* [导出文件夹](#/Sync?id=%e5%af%bc%e5%87%ba%e6%96%87%e4%bb%b6%e5%a4%b9)
|
||||
|
||||
* [如何使用](#/Sync?id=%e5%a6%82%e4%bd%95%e4%bd%bf%e7%94%a8)
|
||||
|
||||
* [增强导出](#/Sync?id=%e5%a2%9e%e5%bc%ba%e5%af%bc%e5%87%ba)
|
||||
|
||||
* [读取外部文件](#/Sync?id=%e5%a4%96%e9%83%a8%e6%96%87%e4%bb%b6)
|
||||
|
||||
* [删除旧文件](#/Sync?id=%e5%88%a0%e9%99%a4%e6%97%a7%e6%96%87%e4%bb%b6)
|
||||
|
||||
* [导出类型](#/Sync?id=%e5%af%bc%e5%87%ba%e7%b1%bb%e5%9e%8b)
|
||||
|
||||
* [PDF](#/Sync?id=pdf)
|
||||
|
||||
* [pandoc](#/Sync?id=pandoc)
|
||||
|
||||
* [Epub](#/Sync?id=epub)
|
||||
|
||||
* [assets + md](#/Sync?id=assets-md)
|
||||
|
||||
* [Textbundle](#/Textbundle)
|
||||
|
||||
* [邮件服务](#/邮件服务)
|
||||
|
||||
* [发送到 Kindle](#/发送到-Kindle)
|
||||
|
||||
* [导出服务](#/Sync?id=%e8%87%aa%e5%8a%a8%e5%8c%96%e6%9c%8d%e5%8a%a1)
|
||||
|
||||
* [Hypothesis](#/自动化服务?id=hypothes)
|
||||
|
||||
* [Readwise.io](#/自动化服务?id=readwise)
|
||||
|
||||
* [数据中心](#/Sync?id=%e6%95%b0%e6%8d%ae%e4%b8%ad%e5%bf%83)
|
||||
|
||||
* [URL Scheme](#/Sync?id=urlscheme)
|
||||
|
||||
* [稍后读相关](#/Sync?id=%e7%a8%8d%e5%90%8e%e8%af%bb%e7%9b%b8%e5%85%b3)
|
||||
|
||||
* [打开稍后读](#/Sync?id=%e6%89%93%e5%bc%80%e7%a8%8d%e5%90%8e%e8%af%bb)
|
||||
|
||||
* [极速版](#/Sync?id=%e6%9e%81%e9%80%9f%e7%89%88)
|
||||
|
||||
* [标注嵌入模式](#/Sync?id=%e6%a0%87%e6%b3%a8%e5%b5%8c%e5%85%a5%e6%a8%a1%e5%bc%8f)
|
||||
|
||||
* [嵌入到 Obsidian](#/Sync?id=%e5%b5%8c%e5%85%a5%e5%88%b0obsidian)
|
||||
|
||||
* [嵌入到 Logseq](#/Sync?id=%e5%b5%8c%e5%85%a5%e5%88%b0logseq)
|
||||
|
||||
* [嵌入到 MenubarX](#/Sync?id=%e5%b5%8c%e5%85%a5%e5%88%b0menbarx)
|
||||
|
||||
* [Token](#/Sync?id=token)
|
||||
|
||||
* [主题](#/Sync?id=%e4%b8%bb%e9%a2%98)
|
||||
|
||||
* [暗色模式](#/Sync?id=%e6%9a%97%e8%89%b2%e6%a8%a1%e5%bc%8f)
|
||||
|
||||
* [文档地址源](#/Sync?id=%e6%96%87%e6%a1%a3%e5%9c%b0%e5%9d%80%e6%ba%90)
|
||||
|
||||
* [Bookmarklet](#/Sync?id=bookmarklet)
|
||||
|
||||
* [日志输出](#/Sync?id=%e6%97%a5%e5%bf%97)
|
||||
|
||||
|
||||
[描述](#/Sync?id=%e6%8f%8f%e8%bf%b0)
|
||||
----------------------------------
|
||||
|
||||
**简悦 · 同步助手** 为简悦 · 高级账户提供了增强型的功能,如:
|
||||
|
||||
1. **自动同步**
|
||||
|
||||
2. **小书签**
|
||||
|
||||
3. 导出到文件 **本地的任意位置**
|
||||
|
||||
4. **原生 PDF · Epub** 导出
|
||||
|
||||
5. **直接发送到你的 Kindle**
|
||||
|
||||
6. 内置解析
|
||||
|
||||
7. **邮件发送**
|
||||
|
||||
8. **自动化** 导出
|
||||
|
||||
|
||||
等诸多仅扩展端无法提供的功能,同时也为简悦 · 稍后读的客户端提供了一个未来可接入的入口。
|
||||
|
||||
[支持平台](#/Sync?id=%e6%94%af%e6%8c%81%e5%b9%b3%e5%8f%b0)
|
||||
------------------------------------------------------
|
||||
|
||||
> 基本上涵盖了全部平台,包括:`Windows` · `Mac` · `Linux` 与 [命令行版本](https://github.com/Kenshin/simpread/discussions/3704) · [Docker](https://github.com/Kenshin/simpread/discussions/4312)。
|
||||
|
||||
> 关于同步助手的更多玩法和介绍,[请看这里](https://github.com/Kenshin/simpread/discussions/categories/%E5%90%8C%E6%AD%A5%E5%8A%A9%E6%89%8B)。
|
||||
|
||||
[更新日志](#/Sync?id=%e6%9b%b4%e6%96%b0%e6%97%a5%e5%bf%97)
|
||||
------------------------------------------------------
|
||||
|
||||
> 详细说明 [请看这里](https://simpreadpublish.notion.site/simpreadpublish/2482effc334e4df8aa3aac7da8bb8059)
|
||||
|
||||
[下载](#/Sync?id=%e4%b8%8b%e8%bd%bd)
|
||||
----------------------------------
|
||||
|
||||
包含简悦同步助手的全部版本:
|
||||
|
||||
* [Onedrive@世纪互联](https://experience.sharepoint.cn/:f:/s/simpread/EooPpw5vqrpLoMInbTpV1rgB5hyvrqv-cdhPCGwiLxrDvw?e=NJ9ZPG) **国内用户首选**
|
||||
|
||||
* [FlowUs](https://flowus.cn/share/be3e616f-a047-40d4-94dc-e89f795a7a5e) **国内用户首选**
|
||||
|
||||
* [百度网盘](https://pan.baidu.com/s/1ARQZ-zcQroTzHDJWWRJUIQ?pwd=m4pt) 提取码: m4pt **偶尔会被无故取消分享 😂**
|
||||
|
||||
* [Box.net](https://app.box.com/s/q7hz86hkeqgoc7mkofxaxu5eiup88j32) **国外用户首选**
|
||||
|
||||
* [OneDrive](https://1drv.ms/u/s!Aua4SNl3dUARh0iLAigvKGbGEHMz?e=LJe6f3)
|
||||
|
||||
> 如无法访问请退出你的 OneDrive 账户,或在隐身模式下打开此链接。
|
||||
|
||||
* Telegram Channel
|
||||
|
||||
* 1.0.1 → [win 64 & 32](https://t.me/simpread/171) [mac](https://t.me/simpread/166)
|
||||
|
||||
* 1.0.2 → [Telegram Group](https://t.me/simpreadgroup/56764)(含全部系统)
|
||||
|
||||
* 1.1.0 → [Telegram Group](https://t.me/simpreadgroup/57763)(含全部系统)
|
||||
|
||||
|
||||
[无法使用](#/Sync?id=%e6%97%a0%e6%b3%95%e4%bd%bf%e7%94%a8)
|
||||
------------------------------------------------------
|
||||
|
||||
在 Windows 上运行可能会被 360 类的产品误报,因为同步助手使用了 Electron 技术,所以有可能存在此情况,如果是在上述官方提到的渠道下载,请放心使用。
|
||||
|
||||
如果你在运行同步助手是遇到了问题,[Mac 用户看这里](https://github.com/Kenshin/simpread/discussions/2283) [Windows 用户看这里](https://github.com/Kenshin/simpread/discussions/2129)。
|
||||
|
||||
[教程](#/Sync?id=%e6%95%99%e7%a8%8b)
|
||||
----------------------------------
|
||||
|
||||
> 包含同步助手验证、绑定、自动同步、增强导出等功能的 [一站式教程](https://www.yuque.com/kenshin/simpread/pwpnsx)。
|
||||
|
||||
[验证](#/Sync?id=%e9%aa%8c%e8%af%81)
|
||||
----------------------------------
|
||||
|
||||
**简悦 · 同步助手** 在安装后需要与你的 **简悦 · 高级账户** 绑定后才能使用,验证流程:
|
||||
|
||||
### [前提](#/Sync?id=%e5%89%8d%e6%8f%90)
|
||||
|
||||
1. 确保安装简悦扩展端为 2.1.0 版本以上。
|
||||
|
||||
2. 确保你已经是高级账户。
|
||||
|
||||
|
||||
### [验证](#/Sync?id=%e9%aa%8c%e8%af%81-1)
|
||||
|
||||
1. 运行 **简悦 · 同步助手**
|
||||
|
||||
2. **简悦 → 选项页 → 共通 → 简悦 · 同步助手 → 授权验证并开启简悦 · 同步助手**
|
||||
|
||||

|
||||
|
||||
3. 认证无误后会有提示,如下图:
|
||||
|
||||

|
||||
|
||||
|
||||
[注意事项](#/Sync?id=%e6%b3%a8%e6%84%8f%e4%ba%8b%e9%a1%b9)
|
||||
------------------------------------------------------
|
||||
|
||||
1. 端口号默认为 `7026`,建议不要随意更改。
|
||||
2. 简悦 · 同步助手 **仅可绑定一个** 简悦 · 高级帐号,即:授权验证后再无法再次绑定。(但可以通过重置的方式来解决)
|
||||
|
||||
[同步](#/Sync?id=%e5%90%8c%e6%ad%a5)
|
||||
----------------------------------
|
||||
|
||||
Tip
|
||||
|
||||
通过此功能,简悦可以将 **配置文件保存到本地的任意位置**。
|
||||
|
||||
### [如何配置](#/Sync?id=%e5%a6%82%e4%bd%95%e9%85%8d%e7%bd%ae)
|
||||
|
||||
配置起来很简单,只需要选择 **配置文件保存的本地文件夹位置** 后就可以了。
|
||||
|
||||

|
||||
|
||||
### [自动同步](#/Sync?id=%e8%87%aa%e5%8a%a8%e5%90%8c%e6%ad%a5)
|
||||
|
||||
Tip
|
||||
|
||||
当使用同步功能后,如果选择的文件夹恰好是某个网盘的同步文件夹,就可以实现自动同步的功能。详细配置 [请看这里](#/自动同步)。
|
||||
|
||||
### [自动同步的注意事项](#/Sync?id=%e8%87%aa%e5%8a%a8%e5%90%8c%e6%ad%a5%e7%9a%84%e6%b3%a8%e6%84%8f%e4%ba%8b%e9%a1%b9)
|
||||
|
||||
> 详细配置 [请看这里](#/自动同步?id=%e6%b3%a8%e6%84%8f%e4%ba%8b%e9%a1%b9)
|
||||
|
||||
[内置解析](#/Sync?id=%e5%86%85%e7%bd%ae%e8%a7%a3%e6%9e%90)
|
||||
------------------------------------------------------
|
||||
|
||||
> 得益于 **简悦 · 同步助手**,简悦 · 稍后读内置的阅读模式解析得到全面「飞跃」,可解析 **动态加载** **包含了 LateX 的页面**,同时也解决了 **简悦 2.0 的某些页面乱码问题**。
|
||||
|
||||
> 此功能需要在稍后读中使用,详细说明 [请看这里](#/稍后读?id=%e9%98%85%e8%af%bb%e6%a8%a1%e5%bc%8f%e8%a7%a3%e6%9e%90%e5%99%a8)。
|
||||
|
||||
[导出服务](#/Sync?id=%e5%af%bc%e5%87%ba%e6%9c%8d%e5%8a%a1)
|
||||
------------------------------------------------------
|
||||
|
||||
得益于 **简悦 · 同步助手** 的加持,在简悦原有导出的功能的基础上增加(强)了如下功能:
|
||||
|
||||
* 可导出到任意目录
|
||||
|
||||
* `原生 PDF` `原生 Epub`
|
||||
|
||||
* `TextBundle` `md + assets`
|
||||
|
||||
* `Markdeep`
|
||||
|
||||
* `发送到邮件` `直接发送到 Kindle`
|
||||
|
||||
* 支持任意格式导出 e.g. `.docs`
|
||||
|
||||
|
||||
### [导出文件夹](#/Sync?id=%e5%af%bc%e5%87%ba%e6%96%87%e4%bb%b6%e5%a4%b9)
|
||||
|
||||
Tip
|
||||
|
||||
通过设置导出文件夹,可以**将阅读模式的导出功能** 导出到此文件夹中。
|
||||
|
||||
1. 在 **同步配置文件夹目录** 建立 `output` 文件夹
|
||||
|
||||

|
||||
|
||||
> 也可选择与 **同步配置文件夹目录** 不一样的本地文件夹;也可保留为空,即使用 **同步配置文件夹目录** 下面的 `output` 文件夹。
|
||||
|
||||
2. **简悦 · 同步助手** 开启相关选项(默认为开启状态)
|
||||
|
||||

|
||||
|
||||
3. **简悦(扩展端) → 选项页 → 共通 → 简悦 · 同步助手** 也同样开启以下功能。
|
||||
|
||||

|
||||
|
||||
|
||||
### [如何使用](#/Sync?id=%e5%a6%82%e4%bd%95%e4%bd%bf%e7%94%a8)
|
||||
|
||||
与之前的导出功能所在的位置一样,即:进入 **阅读模式 | 聚焦模式 → 右下角 控制栏 → 动作 → 导出**
|
||||
|
||||

|
||||
|
||||
### [增强导出](#/Sync?id=%e5%a2%9e%e5%bc%ba%e5%af%bc%e5%87%ba)
|
||||
|
||||
Tip
|
||||
|
||||
1.0.2 版新增的功能,类似 Hazel 的自动化功能,可以将任意导出文件导出到指定目录。
|
||||
|
||||
Warning
|
||||
|
||||
下面的例子只是例子,目前 **暂时不支持同一个关键字执行多次方案**,比如: `md` 关键字只能执行一次,即第一次设置它的规则,即便后面有多个 `md` 规则都不会生效。
|
||||
|
||||
```
|
||||
{"extension":"external", "path":"/Users/xxxx/xxxx/simpublish-demo/api/_output"}
|
||||
{"extension":"pdf", "path":"/Users/xxxx/xxxx/Ebook"}
|
||||
{"extension":"epub", "path":""}
|
||||
{"extension":"docx", "path":""}
|
||||
{"extension":"assets", "path":"/Users/xxxx/xxxx/Obsidian/SimpRead"}
|
||||
{"extension":"textbundle", "path":""}
|
||||
{"extension":"md", "path":"/Users/xxxx/xxxx/Obsidian/SimpRead"}
|
||||
|
||||
```
|
||||
|
||||
当导出类型为 Markdown 且为标注时,保存到 `/Users/xxxx/xxxx/Obsidian@simpread/SimpRead`
|
||||
|
||||
```
|
||||
{"extension":"md", "path":"/Users/xxxx/xxxx/Obsidian@simpread/SimpRead", "type":"annote"}
|
||||
|
||||
```
|
||||
|
||||
当导出类型为 md + assets 且为全文时,保存到 `/Users/xxxx/xxxx/Obsidian@simpread/Inbox`
|
||||
|
||||
```
|
||||
{"extension":"assets", "path":"/Users/xxxx/xxxx/Obsidian@simpread/Inbox", "type":"page"}
|
||||
|
||||
```
|
||||
|
||||
当导出类型为 `tts` ,保存到 `/Users/xxxx/xxxx/tts`
|
||||
|
||||
```
|
||||
{"extension":"tts", "path":"/Users/xxxx/xxxx/tts"}
|
||||
|
||||
```
|
||||
|
||||
简单的解释
|
||||
|
||||
* `extension` → 任意文件的后缀 `epub` `docx` `md` `html` 等
|
||||
|
||||
有几个特殊的后缀:
|
||||
|
||||
* `external` → 导出 HTML 时,将当前 `xxx.html` 复制到 `path` 对应的目录,此功能注意针对 [简悦的外部资料库的自建方案](https://github.com/Kenshin/simpread/discussions?discussions_q=label%3A%22self+built%22)。
|
||||
|
||||
* `assets` → 可以辅助 [导出 md + assets 格式](https://github.com/Kenshin/simpread/discussions/4041) 实现 `md + assets` 结构。
|
||||
|
||||
* `tts` → 可以辅助 [朗读](#/TTS?id=%e4%b8%8b%e8%bd%bd%e4%bd%8d%e7%bd%ae) 功能将正文转换的语音保存到任意位置。
|
||||
|
||||
* `output` → 导出文件夹地址
|
||||
|
||||
* `""` → 空值,即当前导出目录的同 `extension` 文件夹,如
|
||||
|
||||
`{"extension":"epub", "path":""}` 则会在导出文件夹中新建 `epub` 文件夹。
|
||||
|
||||
* `"/xxxx"` → 有值,根据对应值的位置导出。
|
||||
|
||||
* type → 导出类型( 此功能为 [同步助手 1.1.3 版](#/Sync) 功能,如低于此版本 [请升级](#/Sync?id=%e4%b8%8b%e8%bd%bd) )。
|
||||
|
||||
* `annote` → 标注 e.g. `1234-xxx@annote`
|
||||
|
||||
* `page` → 全文 e.g. `1234-xxx`
|
||||
|
||||
|
||||
> type 参数可以省略,当省略后不区分 **全文 or 标注**。
|
||||
|
||||
> 通过区分全文 or 标注,可以实现以下方案:
|
||||
|
||||
> 将标注导入到 Obsidian SimpRead 文件夹,将 assets 形式的全文导入到 Inbox 文件夹,做到全文和标注分开管理。
|
||||
|
||||
|
||||
### [外部文件](#/Sync?id=%e5%a4%96%e9%83%a8%e6%96%87%e4%bb%b6)
|
||||
|
||||
> 此功能为 [同步助手 1.1.3 版](#/Sync) 功能,如低于此版本 [请升级](#/Sync?id=%e4%b8%8b%e8%bd%bd)。
|
||||
|
||||
> 将本地的任意快照( 包括: `.html` `.md` )生成阅读模式,同时也加入到简悦的稍后读系统,详细说明 [外部文件](#/外部文件)。
|
||||
|
||||
### [删除旧文件](#/Sync?id=%e5%88%a0%e9%99%a4%e6%97%a7%e6%96%87%e4%bb%b6)
|
||||
|
||||
> 当 **使用 [知识库](https://www.yuque.com/kenshin/simpread/lglfy2) 时,请启用此功能**。当删除稍后读时,无法自动同步删除本地快照,启用此功能后会避免出现重复的 `idx-xxx.html`。
|
||||
|
||||
[导出类型](#/Sync?id=%e5%af%bc%e5%87%ba%e7%b1%bb%e5%9e%8b)
|
||||
------------------------------------------------------
|
||||
|
||||
### [PDF](#/Sync?id=pdf)
|
||||
|
||||
#### [同步助手基础打印方案](#/Sync?id=%e5%90%8c%e6%ad%a5%e5%8a%a9%e6%89%8b%e5%9f%ba%e7%a1%80%e6%89%93%e5%8d%b0%e6%96%b9%e6%a1%88)
|
||||
|
||||
Tip
|
||||
|
||||
通过 **简悦 · 同步助手** 终于支持了原生的 PDF 输出功能,只要分别在:
|
||||
|
||||
1. 简悦 · 同步助手 → 导出 → **启用导出 PDF 功能**
|
||||
|
||||
2. 简悦(扩展端) → 选项页 → 共通 → 简悦 · 同步助手 →**启用导出 PDF 功能**
|
||||
|
||||
|
||||
即可,[导出例子](https://static.simp.red/export/simpread.pdf)。
|
||||
|
||||
#### [wkhtmltopdf](#/Sync?id=wkhtmltopdf)
|
||||
|
||||
Tip
|
||||
|
||||
同步助手高级打印方案
|
||||
|
||||
1.0.2 版的同步助手增加了更丰富的定制化 PDF 导出方案,详细 [请看这里](https://github.com/Kenshin/simpread/discussions/3887)。
|
||||
|
||||
**同步助手高级打印方案** 还提供了基础打印方案没有的定制化功能:
|
||||
|
||||
* [主题、字体样式、字体大小](https://github.com/Kenshin/simpread/discussions/3887#discussioncomment-2735661)
|
||||
|
||||
* [自定义字体](https://github.com/Kenshin/simpread/discussions/3887#discussioncomment-2735667)
|
||||
|
||||
* [自定义样式](https://github.com/Kenshin/simpread/discussions/3887#discussioncomment-2735664)
|
||||
|
||||
* [更细致的打印,如页边距、打印尺寸](https://github.com/Kenshin/simpread/discussions/3887#discussioncomment-2750058)
|
||||
|
||||
* 自带目录
|
||||
|
||||
* 完美解决因图片防盗链无法成功打印的问题。
|
||||
|
||||
|
||||
#### [与调用系统打印功能对比](#/Sync?id=%e4%b8%8e%e8%b0%83%e7%94%a8%e7%b3%bb%e7%bb%9f%e6%89%93%e5%8d%b0%e5%8a%9f%e8%83%bd%e5%af%b9%e6%af%94)
|
||||
|
||||
1. 一次点击,系统打印需要多次点击
|
||||
|
||||
2. 布局更合理,系统打印的白边太大
|
||||
|
||||
3. 跨页时图片无分割,系统打印的图片在跨页时会有分割
|
||||
|
||||
|
||||
### [Pandoc](#/Sync?id=pandoc)
|
||||
|
||||
Note
|
||||
|
||||
[Pandoc](https://pandoc.org/) 是一个免费基于命令行的多格式转换工具,**简悦 · 同步助手** 已集成 Pandoc 的大部分功能,所以借此支持导出任意格式 e.g. `.docs` `.epub` 等,细节 [请看这里](#/定制化导出?id=%e8%87%aa%e5%ae%9a%e4%b9%89%e5%af%bc%e5%87%ba)。
|
||||
|
||||
#### [下载地址](#/Sync?id=%e4%b8%8b%e8%bd%bd%e5%9c%b0%e5%9d%80)
|
||||
|
||||
建议请去 [官网](https://pandoc.org/installing.html) [下载](https://github.com/jgm/pandoc/releases/latest) 请找到适合自己的系统即可。
|
||||
|
||||
#### [安装](#/Sync?id=%e5%ae%89%e8%a3%85)
|
||||
|
||||
根据提示一路安装即可。
|
||||
|
||||
#### [验证(Windows)](#/Sync?id=%e9%aa%8c%e8%af%81%ef%bc%88windows%ef%bc%89)
|
||||
|
||||
> 只要 **确保全局可以调用 pandoc 命令**,安装完毕后在命令行下输入 `pandoc -v` 看到正常的输出即可。
|
||||
|
||||
#### [验证(Mac)](#/Sync?id=%e9%aa%8c%e8%af%81%ef%bc%88mac%ef%bc%89)
|
||||
|
||||
> 请确保 pandoc 在你的 `/usr/local/bin/` 目录下存在,同时也确保此目录在 `$PATH` 下。
|
||||
>
|
||||
> 一般情况下 `/usr/local/bin/` 都会存在于 `$PATH` 下。
|
||||
|
||||
可以使用如下命令检验:
|
||||
|
||||
`which pandoc` → 查看 pandoc 所在目录
|
||||
|
||||
PS:一般使用 `pandoc-xxx-macOS.pkg` 安装的话,自然是 `/usr/local/bin/` 目录。
|
||||
|
||||
> 下个版本会包含 `pandoc` 定制化目录功能
|
||||
|
||||
#### [使用](#/Sync?id=%e4%bd%bf%e7%94%a8)
|
||||
|
||||
**简悦 · 同步助手** 已内置了 pandoc 的使用,所以对于用户来说,无需手动设置。
|
||||
|
||||
### [Epub](#/Sync?id=epub)
|
||||
|
||||
借助 [pandoc](#/Sync?id=pandoc) 简悦也支持 **原生导出 Epub**,在操作上与上面保持一致,即:需要分别在 **扩展端** 与 **同步助手** 开启此选项。
|
||||
|
||||
#### [与调用第三方 Epub 对比](#/Sync?id=%e4%b8%8e%e8%b0%83%e7%94%a8%e7%ac%ac%e4%b8%89%e6%96%b9-epub-%e5%af%b9%e6%af%94)
|
||||
|
||||
1. 第三方 Epub 转换所需的时间较长。(取决于网络的通畅
|
||||
2. 标题为中文字体会显示乱码。
|
||||
|
||||
而 **原生 Epub 输出** 则没有上述问题。
|
||||
|
||||
但如果要启用此功能的话,需要在 * _本地安装 [Pandoc](#/Sync?id=pandoc) *_。
|
||||
|
||||
#### [扩展端开启方法](#/Sync?id=%e6%89%a9%e5%b1%95%e7%ab%af%e5%bc%80%e5%90%af%e6%96%b9%e6%b3%95)
|
||||
|
||||
> 选项页 → 共通 → 同步助手,下图所示:
|
||||
|
||||

|
||||
|
||||
#### [同步助手端开启方法](#/Sync?id=%e5%90%8c%e6%ad%a5%e5%8a%a9%e6%89%8b%e7%ab%af%e5%bc%80%e5%90%af%e6%96%b9%e6%b3%95)
|
||||
|
||||
> 同步助手默认开启此选项,下图所示
|
||||
|
||||

|
||||
|
||||
### [Textbundle](#/Sync?id=textbundle)
|
||||
|
||||
> 详细说明 [Textbundle](#/Textbundle)
|
||||
|
||||
### [assets + md](#/Sync?id=assets-md)
|
||||
|
||||
Tip
|
||||
|
||||
同步助手 1.0.2 版支持导出 md + assets,如何使用 [请看这里](https://github.com/Kenshin/simpread/discussions/4041)。
|
||||
|
||||
`md + assets` 是一个比 Textbundle 更加广泛的方案 Obsidian、Typora 等均支持此方式。
|
||||
|
||||
### [Markdeep](#/Sync?id=markdeep)
|
||||
|
||||
> 详细说明 [Markdeep](#/Markdeep)
|
||||
|
||||
### [邮件服务](#/Sync?id=%e9%82%ae%e4%bb%b6%e6%9c%8d%e5%8a%a1)
|
||||
|
||||
> 详细说明 [邮件服务](#/邮件服务)
|
||||
|
||||
### [发送到 Kindle](#/Sync?id=%e5%8f%91%e9%80%81%e5%88%b0kindle)
|
||||
|
||||
> 详细说明 [发送到 Kindle](#/发送到-Kindle)
|
||||
|
||||
[自动化服务](#/Sync?id=%e8%87%aa%e5%8a%a8%e5%8c%96%e6%9c%8d%e5%8a%a1)
|
||||
----------------------------------------------------------------
|
||||
|
||||
Tip
|
||||
|
||||
除了上面的增强导出功能外,同步助手还包含一类比较特殊的服务,详细说明 [自动化服务](#/自动化服务),目前接入了下面两个服务。
|
||||
|
||||
### [Hypothesis](#/Sync?id=hypothesis)
|
||||
|
||||
> 详细说明 [自动化服务](#/自动化服务?id=hypothes)
|
||||
|
||||
### [Readwise](#/Sync?id=readwise)
|
||||
|
||||
> 详细说明 [自动化服务](#/自动化服务?id=readwise)
|
||||
|
||||
[数据中心](#/Sync?id=%e6%95%b0%e6%8d%ae%e4%b8%ad%e5%bf%83)
|
||||
------------------------------------------------------
|
||||
|
||||
Tip
|
||||
|
||||
**1.2.0 版** 新增功能,内置了一组针对 `simpread_config.json` 的优化、修复、整理、统计工具,包括:
|
||||
|
||||
* [历史记录](#/数据中心?id=%e5%8e%86%e5%8f%b2%e8%ae%b0%e5%bd%95)
|
||||
|
||||
* [修复配置文件](#/数据中心?id=%e4%bf%ae%e5%a4%8d%e9%85%8d%e7%bd%ae%e6%96%87%e4%bb%b6)
|
||||
|
||||
* [清理配置文件](#/数据中心?id=%e6%b8%85%e7%90%86%e9%85%8d%e7%bd%ae%e6%96%87%e4%bb%b6)
|
||||
|
||||
* [查找重复数据](#/数据中心?id=%e6%9f%a5%e6%89%be%e9%87%8d%e5%a4%8d%e6%95%b0%e6%8d%ae)
|
||||
|
||||
* [数据统计](#/数据中心?id=%e6%95%b0%e6%8d%ae%e7%bb%9f%e8%ae%a1)
|
||||
|
||||
|
||||
> 详细说明 [数据中心](#/数据中心)
|
||||
|
||||

|
||||
|
||||
[URLScheme](#/Sync?id=urlscheme)
|
||||
--------------------------------
|
||||
|
||||
Tip
|
||||
|
||||
**1.1.0 版** 新增功能,目前支持三种 URL Scheme,未来还会陆续增加新方案。
|
||||
|
||||
* `type` 包括:`unread` `extension`
|
||||
|
||||
* `simpread://open?type=unread&idx=1234&id=abc`
|
||||
|
||||
> 以独立窗口打开 ID 为 `1234` 的本地快照并具有跳转到对应的标注 `abc` 此功能也叫[标注嵌入模式](#/标注嵌入模式)。
|
||||
|
||||
* `simpread://open?type=extension`
|
||||
|
||||
> 以独立窗口打开扩展端稍后读
|
||||
|
||||
* `simpread://open?type=unread`
|
||||
|
||||
> 以独立窗口打开 [稍后读极速版](#/Sync?id=%e6%9e%81%e9%80%9f%e7%89%88)
|
||||
|
||||
* `popup` 包括: `window` → 加上参数后,每个链接都会新打开一个窗口,默认(不加此参数)则无论打开什么链接只在当前窗口打开,例如:
|
||||
|
||||
* `simpread://open?type=unread&popup=window`
|
||||
|
||||
* `simpread://open?type=unread&idx=2530&id=1666433469343&popup=window`
|
||||
|
||||
* `embed`
|
||||
|
||||
* `logseq` → 显示 logseq 选项 e.g. `simpread://open?type=unread&embed=logseq`
|
||||
|
||||
* `rr` → 显示 roam research 选项 e.g. `simpread://open?type=unread&embed=rr`
|
||||
|
||||
|
||||
Warning
|
||||
|
||||
注意:Linux 用户暂时不支持 URL Scheme。
|
||||
|
||||
[稍后读相关](#/Sync?id=%e7%a8%8d%e5%90%8e%e8%af%bb%e7%9b%b8%e5%85%b3)
|
||||
----------------------------------------------------------------
|
||||
|
||||
Tip
|
||||
|
||||
同步助手内置了一些跟稍后读有关系的功能,包括:通过快捷键打开稍后读、稍后读极速版等。
|
||||
|
||||
> 1.1.3 版把同步助手稍后读的内容都整理到一起,位置:**同步助手 → 导出 → 稍后读**
|
||||
|
||||

|
||||
|
||||
### [快捷键](#/Sync?id=%e5%bf%ab%e6%8d%b7%e9%94%ae)
|
||||
|
||||
> 此功能为 [同步助手 1.1.3 版](#/Sync) 功能,如低于此版本 [请升级](#/Sync?id=%e4%b8%8b%e8%bd%bd)。
|
||||
|
||||
> 在 1.1.3 版中把稍后读的相关快捷键整理到 **同步助手 → 导出 → 稍后读** 里面,并增加了一些新的快捷键,详细说明 [请看这里](#/稍后读快捷键)。
|
||||
|
||||
### [打开稍后读](#/Sync?id=%e6%89%93%e5%bc%80%e7%a8%8d%e5%90%8e%e8%af%bb)
|
||||
|
||||
> 通过设置快捷键可将稍后读以独立窗口打开。
|
||||
|
||||

|
||||
|
||||
#### [设置稍后读](#/Sync?id=%e8%ae%be%e7%bd%ae%e7%a8%8d%e5%90%8e%e8%af%bb)
|
||||
|
||||
> 需要 **简悦(扩展端)· 稍后读** [创建快捷方式](#/稍后读?id=%e5%88%9b%e5%bb%ba%e5%bf%ab%e6%8d%b7%e6%96%b9%e5%bc%8f),然后将快捷键方式的路径填入到下面的地址。
|
||||
|
||||
> 1.1.2 版(及以下)位置:同步助手 → 共通
|
||||
|
||||

|
||||
|
||||
> 1.1.3 版(及以上)位置:同步助手 → 导出 → 稍后读
|
||||
|
||||

|
||||
|
||||
#### [设置快捷键](#/Sync?id=%e8%ae%be%e7%bd%ae%e5%bf%ab%e6%8d%b7%e9%94%ae)
|
||||
|
||||
> 此功能为 1.1.2 版(及以下)功能。
|
||||
|
||||

|
||||
|
||||
> **注意:** 此方式的设置与 **简悦 · 扩展端** 一致,依次设置按键。
|
||||
|
||||
> 1.1.3 版(及以上) [请看这里](#/Sync?id=%e7%a8%8d%e5%90%8e%e8%af%bb%e5%bf%ab%e6%8d%b7%e9%94%ae)。
|
||||
|
||||
### [极速版](#/Sync?id=%e6%9e%81%e9%80%9f%e7%89%88)
|
||||
|
||||
> 1.1.0 版新增功能,内置了一个极简版本的稍后读 [访问地址](http://localhost:7026/unread/)。
|
||||
|
||||
> 可以方便的将其嵌入到 Obsidian、MenubarX、以及新标签页等任意需要的地方,详细说明 [请看这里](#/稍后读极速版)。
|
||||
|
||||

|
||||
|
||||
### [标注嵌入模式](#/Sync?id=%e6%a0%87%e6%b3%a8%e5%b5%8c%e5%85%a5%e6%a8%a1%e5%bc%8f)
|
||||
|
||||
> 极速版稍后读还包含了 [标注嵌入模式](#/标注嵌入模式)。
|
||||
|
||||

|
||||
|
||||
Tip
|
||||
|
||||
基于极速版与标注嵌入模式,可以将简悦的标注系统嵌入到 Obsidian、Logseq、Roam Reasearch 等双链笔记中,彻底实现 **左侧笔记,右侧标注** 的完美方案,详细说明 [配置库](#/配置库)。
|
||||
|
||||
### [Token](#/Sync?id=token)
|
||||
|
||||
> 此功能为 [同步助手 1.1.3 版](#/Sync) 功能,如低于此版本 [请升级](#/Sync?id=%e4%b8%8b%e8%bd%bd)。
|
||||
|
||||
> 简悦的稍后读数据均存在 `simpread_config.json` 中,通过此方式可以让任意应用通过 `HTTP` 方式调用的话,相当于读取了稍后读的数据,可以产生很多联动效果,详细说明 [稍后读外部访问](#/稍后读外部访问)。
|
||||
|
||||
[文档地址源](#/Sync?id=%e6%96%87%e6%a1%a3%e5%9c%b0%e5%9d%80%e6%ba%90)
|
||||
----------------------------------------------------------------
|
||||
|
||||
> 此功能为 [同步助手 1.1.3 版](#/Sync) 功能,如低于此版本 [请升级](#/Sync?id=%e4%b8%8b%e8%bd%bd)。
|
||||
|
||||
> 同步助手每个功能都配有相应的说明文档,可以通过此功能来切换不同的地址源。
|
||||
|
||||

|
||||
|
||||
> 包括:
|
||||
|
||||
* [Github Page](http://ksria.com/simpread/docs)
|
||||
|
||||
> 默认地址源。
|
||||
|
||||
* [阿里云](https://simpread.pro/docs)
|
||||
|
||||
> 国内用户可选择此方案。
|
||||
|
||||
* [国外线路](http://ksria.com/simpread/docs2)
|
||||
|
||||
> 使用 `cdnjs.cloudflare.com` 作为 CDN。
|
||||
|
||||
|
||||
[主题](#/Sync?id=%e4%b8%bb%e9%a2%98)
|
||||
----------------------------------
|
||||
|
||||
> 此功能为 [同步助手 1.1.3 版](#/Sync) 功能,如低于此版本 [请升级](#/Sync?id=%e4%b8%8b%e8%bd%bd)。
|
||||
|
||||
> 在默认样式的基础上增加了一个 Light 样式。
|
||||
|
||||

|
||||
|
||||
[暗色模式](#/Sync?id=%e6%9a%97%e8%89%b2%e6%a8%a1%e5%bc%8f)
|
||||
------------------------------------------------------
|
||||
|
||||
> 此功能为 [同步助手 1.1.3 版](#/Sync) 功能,如低于此版本 [请升级](#/Sync?id=%e4%b8%8b%e8%bd%bd)。
|
||||
|
||||
> 增加了暗色模式,会跟随系统的改变而已改变。(暂时不支持手动更改为暗色模式)
|
||||
|
||||

|
||||
|
||||
[Bookmarklet](#/Sync?id=bookmarklet)
|
||||
------------------------------------
|
||||
|
||||
> 详细说明 [请看这里](#/Bookmarklet)。
|
||||
|
||||
[日志](#/Sync?id=%e6%97%a5%e5%bf%97)
|
||||
----------------------------------
|
||||
|
||||
1.0.2 版新增功能,可将同步助手的操作日志输出到任意目录。
|
||||
|
||||

|
||||
|
||||
[Logo 设计](#/Sync?id=logo-%e8%ae%be%e8%ae%a1)
|
||||
--------------------------------------------
|
||||
|
||||
同步助手的 Logo 自于社区用户 [Shawn](https://shawnan.design/) 的设计。
|
||||
@@ -0,0 +1,53 @@
|
||||
---
|
||||
created: 2025-08-30T11:45
|
||||
updated: 2025-09-22T13:27
|
||||
---
|
||||
> 本文由 [简悦 SimpRead](http://ksria.com/simpread/) 转码, 原文地址 [www.yuque.com](https://www.yuque.com/kenshin/simpread/xr9wb8b4ap5rrzba)
|
||||
|
||||
> 如果你只是轻量级使用简悦的阅读模式,无需安装同步助手;...
|
||||
|
||||
支持本地快照系统是简悦区别其它同类产品最大的一个特点,同时也是简悦优于其它同类产品的原因。
|
||||
前提
|
||||
在 [同步助手](https://simpread.pro/docs/#/Sync) 的加持下,可以将阅读模式的内容保存到本地任意位置,基于这个特性简悦拥有了本地快照系统。
|
||||
描述
|
||||
稍后读功能之一:Capture,永久收藏,防止 404,线上稍后读只是将图片从服务器(A)放到了自己的服务器(B)上,依就在网络上,并没有改变这个图片不会 404 的命运。
|
||||
而通过同步助手可以将阅读模式的全部资源(包括图片)保存到本地,用户可以使用任意网盘来同步这些快照,同时在简悦的稍后读中可以读取这个本地快照。不止如此,本地快照系统是简悦各种高级功能的基石,也是双链笔记玩法的基础。
|
||||
能做什么
|
||||
●通过阅读模式可将这篇文章(包括图片)保存到本地([同步助手导出](https://simpread.pro/docs/#/Sync?id=%e5%af%bc%e5%87%ba%e6%9c%8d%e5%8a%a1) 功能)。
|
||||
●这篇快照可支持任意网盘系统,包括:各种网盘(坚果云 / Onedrive / 百度 / 阿里云盘)、NAS、Git 系统等,是多设备的自动同步数据([自动同步](https://simpread.pro/docs/#/%E8%87%AA%E5%8A%A8%E5%90%8C%E6%AD%A5) 功能)。
|
||||
●在稍后读中读取本地快照,同时可以在本地快照上进行标注([知识库](https://www.yuque.com/kenshin/simpread/lglfy2) 功能)。
|
||||
●这篇稍后读会生成唯一的本地永久链接,方便在双链笔记中溯源([永久链接](https://www.yuque.com/kenshin/simpread/egvhm7) 功能)。
|
||||
●这篇稍后读还可以直接在网络访问,也就是永久外链([资料库](https://www.yuque.com/kenshin/simpread/vcmg4o) 功能)。
|
||||
●在本地标注时,也会自动同步标注(按照你设定的标注模板格式)到 Obsidian、Logseq 等本地双链笔记中([Markdown 定制化](https://simpread.pro/docs/#/%E5%AE%9A%E5%88%B6%E5%8C%96%E5%AF%BC%E5%87%BA?id=markdown) 功能)。
|
||||
●在 Obsidian、Logseq、Roam Research 中可以直接嵌入本地快照的标注模式([标注嵌入模式](https://simpread.pro/docs/#/Sync?id=%e6%a0%87%e6%b3%a8%e5%b5%8c%e5%85%a5%e6%a8%a1%e5%bc%8f) 功能)。
|
||||
分类
|
||||
|
||||
本地快照系统不是一个单一化的功能,通过上面的例子可以看到它是一个复合型功能,简悦的大部分高级功能都围绕着它设置的。
|
||||
|
||||
●知识库
|
||||
●资料库
|
||||
●永久链接
|
||||
●标注嵌入模式
|
||||
知识库
|
||||
|
||||
资料库
|
||||
|
||||
永久链接
|
||||
|
||||
标注嵌入模式
|
||||
|
||||
新手用户看过来
|
||||
|
||||
虽然本地快照系统的每个功能都有教程,对于简悦老用户来说还是非常方便的,但对于新用户或新手用户来说可能不是那么友好,所以简悦官方推出了免配置的解决方案。
|
||||
|
||||
|
||||
引申
|
||||
●[同步助手](https://simpread.pro/docs/#/Sync)
|
||||
●[同步助手导出](https://simpread.pro/docs/#/Sync?id=%e5%af%bc%e5%87%ba%e6%9c%8d%e5%8a%a1)
|
||||
●[自动同步](https://simpread.pro/docs/#/%E8%87%AA%E5%8A%A8%E5%90%8C%E6%AD%A5)
|
||||
●[稍后读本地化](https://simpread.pro/docs/#/%E7%A8%8D%E5%90%8E%E8%AF%BB?id=%e8%af%bb%e5%8f%96%e6%9c%ac%e5%9c%b0%e5%bf%ab%e7%85%a7)
|
||||
●[知识库](https://www.yuque.com/kenshin/simpread/lglfy2)
|
||||
●[资料库](https://www.yuque.com/kenshin/simpread/vcmg4o)
|
||||
●[永久链接](https://www.yuque.com/kenshin/simpread/egvhm7)
|
||||
●[Markdown 定制化](https://simpread.pro/docs/#/%E5%AE%9A%E5%88%B6%E5%8C%96%E5%AF%BC%E5%87%BA?id=markdown)
|
||||
●[标注嵌入模式](https://simpread.pro/docs/#/Sync?id=%e6%a0%87%e6%b3%a8%e5%b5%8c%e5%85%a5%e6%a8%a1%e5%bc%8f)
|
||||
|
After Width: | Height: | Size: 7.5 KiB |
|
After Width: | Height: | Size: 7.5 KiB |
@@ -0,0 +1,18 @@
|
||||
---
|
||||
url: https://super.sina.cn/shequn/post/detail_1111006286295965696.html
|
||||
title: 高人指点的 35 条社会潜规则:1、你不联系别人,别人也不联系你,这叫默默断交原则。2、找老婆,不用看她是什么名牌大学毕业,就看她的家教,看她的母亲是一个什么样的人。
|
||||
date: 2025-09-27 08:50:31
|
||||
tag:
|
||||
summary: 高人指点的 35 条社会潜规则:1、你不联系别人,别人也不联系你,这叫默默断交原则。2、找老婆,不用看她是什么名牌大学毕业,就看她的家教,看她的母亲是一个什么样的人。 - sina.cn
|
||||
created: 2025-09-27T08:50
|
||||
updated: 2025-09-27T08:50
|
||||
---
|
||||

|
||||
|
||||
高人指点的 35 条社会潜规则: 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、在与人交谈时,我发现只说 30% 的话能够让人保持一定的神秘感和吸引力;只说 50% 的话能够让人感受到真诚和亲近,只说 70% 的话能够让人感受到亲密和信任。
|
||||
|
||||
## **全部评论**
|
||||
|
||||

|
||||
|
||||
加载中...
|
||||