Page Assist 与 Ollama 深度集成指南:模型管理、免终端拉取与下载进度追踪全攻略
【免费下载链接】page-assistUse your locally running AI models to assist you in your web browsing项目地址: https://gitcode.com/GitHub_Trending/pa/page-assist
Page Assist 是一套以本地 AI 模型为核心、运行在浏览器中的 AI 助手(Web UI 与侧边栏面板),而 Ollama 正是它的默认推理后端——你可以在浏览器里完成 Ollama 模型的查看、删除、重新拉取与取消下载,甚至无需打开终端,直接从 Ollama.com 或 Hugging Face 页面一键拉取模型到本地。本文将以docs/features/ollama.md为骨架,结合仓库源码,完整讲解 Page Assist 与 Ollama 的集成方式、三种免终端拉取模型的路径、下载进度的底层实现,以及多实例连接的配置细节,帮助你把这套本地 AI 工作流真正用起来。
Ollama 在 Page Assist 中的定位:开箱即用的默认后端
Page Assist 被设计为与 Ollama 深度协作。其官方文档 docs/providers/ollama.md 明确指出:只要你的 Ollama 运行在localhost:11434,Page Assist 会自动检测到它,无需任何配置。
这一点在源码中有直接印证。src/services/ollama.ts中定义了默认地址常量:
const DEFAULT_OLLAMA_URL = "http://127.0.0.1:11434"getOllamaURL()会在用户尚未自定义地址时自动回落到该默认值,并在isOllamaRunning()中通过对该地址发起一次 HTTP 请求来探测 Ollama 服务是否存活(src/services/ollama.ts的isOllamaRunning实现)。整个 Web UI 的模型列表、聊天请求、拉取模型都会经由这一层服务封装访问 Ollama 的 REST API(/api/tags、/api/delete、/api/pull等),这也是后面所有功能的地基。
提示:如果你在连接 Ollama 时遇到问题,请参考仓库内的 docs/connection-issue.md 连接问题排查指南。
管理已拉取的 Ollama 模型
原文档提供了最基础的管理入口操作步骤,实际页面中还隐藏着更丰富的管理能力,下面逐一展开。
入口与操作步骤
- 点击浏览器工具栏上的 Page Assist 图标进入 Web UI;
- 进入
Settings(设置); - 进入
Manage Models(管理模型); - 页面会列出你当前已经 pull 到本地的所有 Ollama 模型;
- 你可以直接在此处删除模型,也可以执行重新拉取、启用/禁用、编辑设置、设置昵称等操作。
模型表格包含哪些信息
管理页面由 src/components/Option/Models/OllamaModelsTable.tsx 实现,模型数据通过getAllModels()(内部调用 Ollama 的GET /api/tags)获取(src/services/ollama.ts)。表格中每一行展示:
| 列 | 含义 |
|---|---|
| Nickname | 模型的显示昵称,默认与模型名一致,可点击铅笔图标修改(通过ModelNicknameModal) |
| Model ID | 模型标识符,例如qwen2.5:3b、llama3.1:8b |
| Digest | 模型镜像摘要,表格中做了截断显示(前 5 位 +...+ 后 4 位),鼠标悬停可查看完整值 |
| Modified At | 模型最近修改时间,以相对时间展示(如 "2 days ago",由 dayjs 计算) |
| Size | 模型占用磁盘大小,经bytePerSecondFormatter格式化为人性化的容量文本 |
点击任意一行的展开箭头,还能看到该模型的底层细节(来自/api/tags返回的details字段),包括:父模型(parent_model)、格式(format,如gguf)、模型家族(family)、参数量(parameter_size)以及量化级别(quantization_level)——这对于判断一个 GGUF 模型的量化和架构非常直观。
可执行的操作
每行末尾的操作区提供 4 个按钮(源码见OllamaModelsTable.tsx的 actions 列):
- 启用/禁用开关:通过
setModelState(modelId, isEnabled)写入本地 IndexedDB(src/db/dexie/modelState.ts)。被禁用的模型默认不会出现在聊天模型列表中(除非显式设置includeDisabled: true)。 - 设置:打开
AddUpdateModelSettings,可针对单个模型做细粒度参数调整。 - 删除:调用
deleteModel(),底层即DELETE /api/delete(见 src/services/ollama.ts)。删除成功后自动刷新模型列表;如果删除的恰好是当前选中的模型,还会把selectedModel置空,避免后续引用一个不存在的模型。 - 重新拉取(Repull):一键重新触发
pull_model消息,相当于在终端重新执行ollama pull <模型名>。
在原文档的基础操作之上,这些表格信息与管理动作都来自真实源码实现,你可以放心按上文操作。
三种免终端拉取 Ollama 模型的方式
原文档给出了三种完全不需要打开终端就能ollama pull的途径,全部围绕同一个消息通道pull_model展开——UI 只要向扩展的 background 发送{ type: "pull_model", modelName },后台服务就会代为完成下载(见 src/entries/background.ts 的消息监听分支)。
方式一:从 Page Assist Web UI 拉取
这是最直接的方式,操作路径与原文档一致:
- 进入
Settings; - 进入
Manage Models; - 点击
Add New Model按钮; - 在输入框中填入模型名(输入框占位符默认为
qwen2.5:3b,可作为命名规范参考),点击Pull Model开始下载。
该弹窗由 src/components/Option/Models/AddOllamaModelModal.tsx 实现。源码中有一个体贴的细节:提交前会自动清洗输入,把误粘贴的ollama pull/ollama run命令前缀剥离,只保留纯模型名再发给后台。例如你从别处复制了ollama run qwen2.5:3b,粘贴进去也能正确识别为qwen2.5:3b。
下载进行时,弹窗内会显示CancelPullingModel组件(src/components/Option/Models/CancelPullingModel.tsx),展示当前正在下载的模型名与一个红色Cancel按钮,点击后向后台发送cancel_download消息即可中止下载。
方式二:从 Ollama.com 一键拉取
当你在浏览器中浏览 Ollama.com 的模型详情页时,Page Assist 会注入一个专属的下载按钮:
- 打开 Ollama.com,进入任意模型页面;
- 在模型使用方式区域,复制按钮旁边会出现一个下载(Pull)图标按钮;
- 点击后浏览器会弹出确认框,询问是否确实要在本地拉取该模型;
- 确认后,下载进度会实时显示在浏览器工具栏的 Page Assist 扩展图标上(badge)。
这一能力由内容脚本 src/entries/ollama-pull.content.ts 提供,它声明只在*://ollama.com/*域名下生效(allFrames: true)。按钮注入逻辑在 src/utils/ollama-pull-inject.ts 中实现:
- 在模型页的
section[data-usage-section]的 CLI 使用面板中,紧挨复制按钮插入下载按钮; - 同时遍历页面中所有
input.command命令输入框,为每个模型命令追加下载按钮; - 点击按钮后先
confirm()二次确认,再通过browser.runtime.sendMessage({ type: "pull_model", modelName })触发后台下载; - 按钮注入前会检查
document.getElementById("pa-download-cli")之类的标记,避免重复插入。
方式三:从 Hugging Face 拉取 GGUF 模型
对于在 Hugging Face 上以 GGUF 格式发布的模型,Page Assist 也提供了直接拉取能力:
- 打开 huggingface.co,进入任意模型页面;
- 在页面右侧点击
Use this model,并在弹层中选择Ollama选项; - 在 Hugging Face 的弹窗中会出现一个
Pull from Page Assist按钮,点击它; - 后续流程与方式二完全一致(确认 → 下载 → 扩展图标显示进度)。
其实现位于 src/entries/hf-pull.content.ts,内容脚本同样只在*://huggingface.co/*下运行。它的注入策略更激进:通过MutationObserver监听 DOM 变化,凡是新增节点中出现包含ollama run/ollama pull命令的<pre>代码块,就在其附近注入下载按钮;按钮点击后会从代码块文本中解析出ollama run/ollama pull之后的模型名(兼容带<select>下拉选择的多行命令片段),再发起pull_model消息。按钮文案 "Pull from Page Assist" 会明确提示:该操作与 Hugging Face 网站本身无关,模型将被拉取到你的本地 Ollama。
下载进度的底层实现:扩展图标上的实时状态机
三种方式殊途同归,最终都会汇聚到后台脚本的streamDownload()(src/utils/pull-ollama.ts),它直接向 Ollama 的/api/pull接口发送{ model, stream: true }的流式请求,然后逐行解析 NDJSON 响应,并把进度实时绘制在扩展图标上。这就是原文档所说"下载进度可以在 Page Assist 图标上看到"的完整原理:
| 场景 | 图标显示 | 底色 |
|---|---|---|
| 下载中(有 total/completed) | 百分比,如42% | 蓝色#0000FF |
| 下载中(尚未进入传输阶段) | 🏋️ | 白色#FFFFFF |
| 拉取成功 | ✅ | 绿色#00FF00 |
| 拉取失败 | ❌ | 红色#FF0000 |
| 用户取消 | ⭕ | 橙色#FFA500 |
| Ollama 未运行 | E | 红色#FF0000 |
其中"Ollama 未运行"的E标识来自 src/entries/background.ts 的pull_model处理分支:收到拉取请求后先调用isOllamaRunning()探测服务,若未运行则直接显示红色E徽标并提示 "Ollama is not running",5 秒后自动清除。进度徽标会在任务结束后 5 秒自动消失(clearBadge()),不会一直霸占工具栏。
取消下载的实现同样值得注意:streamDownload内部用AbortController管理请求,每读取一块数据都会检查cancelDownload标志位,一旦发现用户点击取消(cancel_download消息 →cancelDownload()),立即abortController.abort()中断流式请求并切换图标为 ⭕。
连接配置:默认地址、URL 规范化与多 Ollama 实例
默认地址与自动替换
如开篇所述,未配置时 Page Assist 使用http://127.0.0.1:11434作为 Ollama 地址(src/services/ollama.ts中的DEFAULT_OLLAMA_URL)。当你通过设置页保存自定义地址时,setOllamaURL()还会做一个实用转换:把http://localhost:前缀自动改写为http://127.0.0.1:,规避部分环境下localhost解析(如 IPv6)导致连接失败的问题。
配置多个 Ollama 实例
原文档 docs/providers/ollama.md 补充了多实例接入方式——Page Assist 通过「OpenAI 兼容 API」通道来管理多个自定义后端:
- 点击浏览器工具栏上的 Page Assist 图标;
- 点击
Settings图标进入设置; - 切换到
OpenAI Compatible API选项卡; - 点击
Add Provider(添加提供方)按钮; - 在下拉列表中选择
Ollama; - 填入该实例的
Ollama URL; - 点击
Save保存。
关键点:你不需要手动添加模型——Page Assist 会自动从该 Ollama 实例拉取全部模型列表(即走getAllModels()的/api/tags逻辑),并合并展示到模型选择器中。这也解释了为什么Manage Models页面底部分页还带有跳转 Ollama 模型搜索页的链接("Get more models from Ollama"),方便你发现新模型后直接回来拉取。
常见问题速查
- 扩展图标显示红色
E:Ollama 服务未启动或地址不可达,请先在本机启动 Ollama(ollama serve或启动桌面应用),确认http://127.0.0.1:11434可访问。 - 列表为空:检查
Manage Models页的模型开关是否全部被禁用(getAllModels默认只返回启用模型),或参考 docs/connection-issue.md 排查。 - 下载一直停在 🏋️:模型较大或网络较慢时,Ollama 需要先解析 manifest 并分配存储,属于正常状态;若长时间无进展可点击取消后重试。
相关源码与文档索引
如果你想进一步深入这套集成的实现细节,仓库内可直接查阅:
- 功能文档:docs/features/ollama.md、提供方接入说明 docs/providers/ollama.md、连接排障 docs/connection-issue.md
- 模型管理 UI:src/components/Option/Models/OllamaModelsTable.tsx、src/components/Option/Models/AddOllamaModelModal.tsx、src/components/Option/Models/index.tsx
- Ollama 服务封装:src/services/ollama.ts(
/api/tags、/api/delete、URL 管理、默认地址) - 下载与进度:src/utils/pull-ollama.ts(
streamDownload、badge 状态机、取消)、src/entries/background.ts(pull_model/cancel_download消息处理) - 网页注入脚本:src/entries/ollama-pull.content.ts + src/utils/ollama-pull-inject.ts(Ollama.com 按钮)、src/entries/hf-pull.content.ts(Hugging Face 按钮)
至此,你已经掌握了 Page Assist 管理本地 Ollama 模型、通过三种免终端途径拉取模型、实时追踪下载进度以及接入多个 Ollama 实例的完整方案。从 Web UI 到模型详情页,所有操作都围绕本地推理展开,既保留了 Ollama 的隐私与离线优势,又把模型生命周期管理收敛到了浏览器里。
【免费下载链接】page-assistUse your locally running AI models to assist you in your web browsing项目地址: https://gitcode.com/GitHub_Trending/pa/page-assist
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考