- 人工智能
- AI 应用
- 大模型
- 本地部署
- 移动开发
- 语音
【免费下载链接】pocketpal-ai
An app that brings language models directly to your phone.
本篇指南以 PocketPal AI 的 Getting Started 文档为主线,带你完成「安装 → 下载模型 → 加载模型 → 离线对话」的完整闭环,并结合 src/store/ModelStore.ts 等源码,验证文档中描述的「Auto Offload/Load 自动内存管理」和高级生成参数在仓库中的真实实现。读完后,你不仅能独立跑起一次纯端侧对话,还能理解模型上下后台时的内存回收机制与性能指标(tokens/sec、ms/token)的来源。
一、安装应用
PocketPal AI 是一款把语言模型直接装进手机的隐私优先应用:无需账号、无需云端,对话数据不出设备(项目定位与隐私说明见 README.md)。
- iOS / iPadOS 用户:从 App Store 获取 PocketPal AI。
- Android 用户:从 Google Play 获取(应用包名为
com.pocketpalai)。
原作者在 docs/getting_started.md 中特别说明:这是一个个人项目,作者在工作之余维护,可能还存在 bug,且无法覆盖所有设备。遇到问题时建议直接提 issue,或者直接参与贡献。
二、内置模型与任意 GGUF 模型支持
文档指出,PocketPal AI 出厂预置了几款主流小语言模型(SLM):
- Danube 2 和 Danube 3
- Phi
- Gemma 2
- Qwen
这些模型需要下载后才能使用;你也可以直接在应用内下载并使用它们,并加载任何你喜欢的其他 GGUF 模型。仓库源码印证了这些内置模型的深度支持——例如 src/utils/chat.ts 中为 Danube3 与 Danube2 分别内置了系统提示词模板(You are a helpful assistant named H2O Danube3.../...H2O Danube2...),说明它们不只是列表项,而是有专门针对的 chat template 配置。此外,设备规则文件 src/store/bundledDeviceRules/rules.android.json 与 rules.ios.json 中也包含 Qwen 等模型的匹配规则,用于按设备推荐合适的模型档位。
注意:原始文档自述「部分内容已过时,将会更新」。当前仓库的模型体系比文档发布时更丰富(例如支持 Hugging Face 在线搜索 GGUF、远程 OpenAI 兼容服务器等),下文会结合源码给出以当前仓库为准的说明。
三、下载模型
操作步骤与文档一致:
- 点按汉堡菜单(☰);
- 进入「Models」页面;
- 选择目标模型,点按下载。
下载逻辑由ModelStore统一管理:src/store/ModelStore.ts 中定义了addHFModel等方法,负责把 Hugging Face 上的模型与具体modelFile配对、写入本地模型列表;实际的文件下载则委托给 src/services/downloads/ 中的下载管理器。从源码结构看,应用还支持在 HF 搜索结果中挑选量化档位、下载投影模型(mmproj)等扩展能力,均围绕同一套模型数据模型展开。
四、加载模型
下载完成后,点按Load即可把模型载入内存——之后就可以开始聊天了。README 还补充了一个快捷入口:除了模型页,你也可以在聊天页输入框左侧的 chevron 图标直接从聊天界面加载模型。
加载与卸载由ModelStore的loadModel/releaseContext等上下文操作完成(基于 llama.rn 对 llama.cpp 的 GGUF 推理桥接,见 README.md 的技术栈说明)。
五、Auto Offload/Load:自动内存管理机制
为了让设备保持流畅,PocketPal AI 可以自动管理内存占用,这一点在仓库中有明确的源码实现,值得展开:
- 在模型页面启用「Auto Offload/Load」(默认开启);
- 应用切到后台时,自动 offload(释放)模型;
- 切回前台时自动 reload(较大模型需要等待几秒)。
对应实现位于 src/store/ModelStore.ts:handleAppStateChange监听 React Native 的AppState变化(监听器在构造函数中通过setupAppStateListener注册),并区分三种状态迁移:
| 状态迁移 | 行为 |
|---|---|
active/inactive → active(回到前台) | 调用checkAndReloadAutoReleasedModel()自动重新加载之前被释放的模型 |
active/inactive → background(进入后台) | 若isAutoReleaseEnabled为真且存在本地活动模型,则markAutoReleased(...)并releaseContext()释放推理上下文 |
active → inactive | 不做任何自动释放动作 |
源码注释还揭示了两个设计细节,体现了文档未提及的边界处理:
- 远程模型豁免:
origin === ModelOrigin.REMOTE的模型不执行自动释放——远程模型没有需要释放的原生上下文,且releaseContext()会把引擎清掉却没有重载路径; - 前台恢复后的能力重探测:回到前台时还会
reprobeRemoteCapsIfUnknown(),因为 iOS 可能在中断连接时拆掉能力探测请求,导致 caps 一直停留在未知状态。
这个开关的 UI 落在模型页的模型卡片上,参见 src/screens/ModelsScreen/ModelCard/ModelCard.tsx 及 src/locales/en.json 中的 offload 相关文案。
六、高级设置(Advanced Settings)
点按模型项上的 chevron 图标可以打开高级 LLM 设置,文档列举的典型参数包括:
- Temperature(温度)
- BOS token(起始符令牌)
- Chat template options(聊天模板选项)
- 等等
这些设置对应仓库中的 src/components/CompletionSettings/(通用完成参数组件)、src/components/ModelSettingsSheet/(按模型的设置面板)以及 src/components/ChatGenerationSettingsSheet/(会话级生成设置)等组件,参数最终汇聚为 src/utils/completionTypes.ts 中的CompletionParams,再经由 src/api/completionEngines.ts 分发给本地 llama.cpp 引擎或远程 OpenAI 兼容引擎。默认的上下文初始化参数则由 src/utils/contextInitParamsVersions.ts 管理版本化结构。
七、开始聊天与性能指标
模型加载后,进入「Chat」页面即可与模型对话。README 补充:推理期间屏幕会自动保持唤醒(keep awake),空闲时自动停止。
生成性能的实时指标也同步展示——关注聊天气泡即可查看:
- Tokens per second(每秒生成令牌数)
- Milliseconds per token(每令牌耗时,毫秒)
这些指标由 src/components/AssistantTurnFooter/ 的回合页脚呈现,是本地推理路径下 llama.rn 返回的采样计时数据。
八、复制文本:现状与限制
文档明确说明了一个现存限制:目前尚未找到在**保留文本格式(尤其 Markdown)**的前提下从生成回复中框选复制文本的简单方案。当前的可行途径有两条:
- 段落级复制:长按某个段落,复制该段内容;
- 整段复制:使用文字气泡底部的复制图标,复制整条 AI 回复。
这一能力的 UI 分别对应 src/components/TextMessage/(消息正文,支持长按交互)与气泡底部的复制按钮(AssistantTurnFooter)。文档还向开发者抛出了一个问题:PocketPal AI 基于 React Native 构建,在「文本可选」与「保留 Markdown 格式」之间取得平衡一直是个难题,有相关经验者欢迎交流。
九、反馈与贡献
如果你有对新模型或新功能建议,文档鼓励通过创建 issue 反馈;应用内也有内置通道(App Info → "Sharing your thoughts",见 README.md 的反馈说明)。
对于想深入源码的读者,建议按以下路径继续:
- 应用整体架构与四层层级(UI / Bridging / Engine / Hardware):README.md;
- 模型与内存管理的核心状态机:src/store/ModelStore.ts;
- 贡献流程:CONTRIBUTING.md。
Happy exploring! 📱
- 人工智能
- AI 应用
- 大模型
- 本地部署
- 移动开发
- 语音
【免费下载链接】pocketpal-ai
An app that brings language models directly to your phone.
相关推荐
PocketPal AI:手机离线运行语言模型的终极指南与完整教程
PocketPal AI:手机离线运行语言模型的终极指南与完整教程 PocketPal AI是一个革命性的开源应用,它让语言模型直接运行在你的手机上,无需联网即
人工智能AI 应用大模型本地部署移动开发语音PocketPal AI手机端本地模型部署终极指南:打造你的离线智能助手
PocketPal AI手机端本地模型部署终极指南:打造你的离线智能助手 想要在手机上运行强大的AI语言模型,无需网络连接就能享受智能对话体验吗?PocketP
人工智能AI 应用大模型本地部署移动开发语音【亲测免费】 pocketpal-ai:手机上的离线AI助手
pocketpal ai:手机上的离线AI助手 项目介绍 pocketpal ai 是一款口袋大小的 AI 助手,基于小型语言模型(SLMs)直接在您的手机上运
人工智能AI 应用大模型本地部署移动开发语音
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考