Page Assist 与 Ollama 深度集成指南:模型管理、免终端拉取与下载进度追踪全攻略
2026/9/16 17:13:32 网站建设 项目流程

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.tsisOllamaRunning实现)。整个 Web UI 的模型列表、聊天请求、拉取模型都会经由这一层服务封装访问 Ollama 的 REST API(/api/tags/api/delete/api/pull等),这也是后面所有功能的地基。

提示:如果你在连接 Ollama 时遇到问题,请参考仓库内的 docs/connection-issue.md 连接问题排查指南。

管理已拉取的 Ollama 模型

原文档提供了最基础的管理入口操作步骤,实际页面中还隐藏着更丰富的管理能力,下面逐一展开。

入口与操作步骤

  1. 点击浏览器工具栏上的 Page Assist 图标进入 Web UI;
  2. 进入Settings(设置);
  3. 进入Manage Models(管理模型);
  4. 页面会列出你当前已经 pull 到本地的所有 Ollama 模型;
  5. 你可以直接在此处删除模型,也可以执行重新拉取、启用/禁用、编辑设置、设置昵称等操作。

模型表格包含哪些信息

管理页面由 src/components/Option/Models/OllamaModelsTable.tsx 实现,模型数据通过getAllModels()(内部调用 Ollama 的GET /api/tags)获取(src/services/ollama.ts)。表格中每一行展示:

含义
Nickname模型的显示昵称,默认与模型名一致,可点击铅笔图标修改(通过ModelNicknameModal
Model ID模型标识符,例如qwen2.5:3bllama3.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 拉取

这是最直接的方式,操作路径与原文档一致:

  1. 进入Settings
  2. 进入Manage Models
  3. 点击Add New Model按钮;
  4. 在输入框中填入模型名(输入框占位符默认为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 会注入一个专属的下载按钮:

  1. 打开 Ollama.com,进入任意模型页面;
  2. 在模型使用方式区域,复制按钮旁边会出现一个下载(Pull)图标按钮;
  3. 点击后浏览器会弹出确认框,询问是否确实要在本地拉取该模型;
  4. 确认后,下载进度会实时显示在浏览器工具栏的 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 也提供了直接拉取能力:

  1. 打开 huggingface.co,进入任意模型页面;
  2. 在页面右侧点击Use this model,并在弹层中选择Ollama选项;
  3. 在 Hugging Face 的弹窗中会出现一个Pull from Page Assist按钮,点击它;
  4. 后续流程与方式二完全一致(确认 → 下载 → 扩展图标显示进度)。

其实现位于 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」通道来管理多个自定义后端:

  1. 点击浏览器工具栏上的 Page Assist 图标;
  2. 点击Settings图标进入设置;
  3. 切换到OpenAI Compatible API选项卡;
  4. 点击Add Provider(添加提供方)按钮;
  5. 在下拉列表中选择Ollama
  6. 填入该实例的Ollama URL
  7. 点击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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询