「本地模型」是 a4agent 自 0.3.0 起内置的推理控制台:把 llama.cpp 的 llama-server 封装为一键启动的 OpenAI 兼容 API 服务——装哪个引擎、选哪个模型、给什么参数,全程可视化操作。它与「配置方案与一键切换」组合,即可得到 Claude Code 完全离线方案:本地模型生成 OpenAI 兼容接口,切换工具把各端流量指到本机,全程不依赖任何云上 API。本文章介绍首次配置向导、模型库、服务运行、推理参数、局域网开放与一键接入配置方案的完整使用方式。

1. 功能概述

维度 说明
定位 本地大模型推理服务管理:引擎获取、模型库、服务启停、参数调优
引擎 llama.cpp 官方预编译 llama-server(Vulkan / CUDA 12.4 / CUDA 13.3 / CPU 四种包,钉定固定版本、二进制可复现)
模型 任意 .gguf 格式模型,多目录扫描与元数据解析
服务形态 OpenAI 兼容 API(/v1/chat/completions),本机或局域网开放
与切换的关系 「接入配置方案」一键创建指向本地服务的配置方案,四端即插即用
引入版本 0.3.0(原独立 a4agent 项目能力完整合并)
graph LR A[本地模型页签] --> B[配置向导
引擎/硬件/模型] B --> C[模型库
扫描 gguf] C --> D[启动服务
llama-server] D --> E[OpenAI 兼容 API
127.0.0.1 或局域网] E --> F[接入配置方案] F --> G[四端切换使用
Claude Code/Codex/dsh/ZCode] style A fill:#e8f4f8,stroke:#1a6b8a,stroke-width:2px style B fill:#d6eaf8,stroke:#1a6b8a,stroke-width:2px style C fill:#ebdef0,stroke:#8e44ad,stroke-width:2px style D fill:#ffecd6,stroke:#e67e22,stroke-width:2px style E fill:#d5f5e3,stroke:#27ae60,stroke-width:2px style F fill:#fdebd0,stroke:#b7950b,stroke-width:2px style G fill:#d5f5e3,stroke:#27ae60,stroke-width:2px

2. 首次配置向导

首次进入「本地模型」页签会进入五步配置向导:获取引擎 → 检测硬件 → 选择模型目录 → 选择默认模型 → 服务端口,走完即可启动服务。

2.1 硬件检测与预设推荐

向导通过 nvidia-smi 与注册表双路枚举显卡,列出厂商、显存与驱动版本;再按显存档位推荐一套开箱即用的推理预设(上下文长度、KV 缓存量化、MTP 投机解码)。预设依据混合架构推理模型的显存特征调校——此类模型仅约四分之一层携带 KV 缓存,q4_0 量化下每千 token 约 5.6KB,上下文的显存代价远小于权重本身:

显存档位 上下文长度 KV 缓存 说明
CPU 兜底(无独显或 <2GB) 8192 q4_0 走 CPU 推理速度受限,建议搭配 9B 级模型
入门档(<6GB) 8192 q4_0 瓶颈是权重本身,仅够 9B 全量 offload,35B 勿尝试
主流档(6–12GB) 32768 q4_0 9B 全量 offload + 32k 绰绰有余;35B 需换 Q3 量化并降回 16k
进阶档(12–16GB) 32768 q4_0 27B / 35B 小量化可跑 32k,9B 可手动上探 64k
高端档(16–24GB) 65536 q4_0 35B 小量化全量 offload + 64k 有余量
旗舰档(24GB 以上) 131072 q8_0 128k 长上下文且 KV 可升 q8_0,上限可试原生 256k

选择模型时页面还会给出显存溢出风险预警(见第 3 节)。

2.2 引擎自动获取

按显卡型号自动下载对应的 llama.cpp 官方预编译引擎包,无需手动编译:

引擎包 适用场景
Vulkan 各家显卡通用(NVIDIA / AMD / Intel),免装 CUDA 运行库
CUDA 12.4 / CUDA 13.3 NVIDIA 显卡专用,性能优于 Vulkan
CPU 无独显或仅核显的兜底选择

引擎获取的三种方式:

  • 自动下载:CUDA 引擎由主包与 cudart 运行库两个包组成,下载后自动解压合并、原子换入,下载中断可取消重试;
  • 离线安装:网络不便时,指定一个含 llama-server.exe 的目录即可完成安装;
  • 接管旧版:检测到旧版安装已下载过引擎时自动接管其引擎目录,无需重复下载。

引擎版本钉定固定提交,保证二进制可复现;引擎默认存放在数据目录的 engine\ 子目录下,位置详见数据目录与日志说明。

2.3 模型目录与默认模型

选择一个或多个模型目录后,向导扫描其中的 .gguf 文件并解析元数据,选定一个作为默认模型并确认服务端口(默认 8080)后完成配置。向导配置随时可在「推理设置」中调整。

3. 模型库

「本地模型」页的模型库负责把散落各处的 .gguf 模型纳入统一管理:

  • 多目录扫描:可添加多个模型目录(桌面端调用系统原生文件夹选择对话框,浏览器调试模式退化为手动输入路径),自动扫描其中全部 .gguf 文件;
  • 元数据解析:直接读取 GGUF 文件头,展示文件大小、量化级别、原生上下文长度、是否含 MTP 层(含 MTP 层的模型支持投机解码加速);
  • 设为默认模型:一键把某个模型设为服务启动时加载的默认模型;
  • 多模态投影:可选指定 mmproj 投影模型(浏览文件选择),用于多模态模型;
  • 显存风险预警:结合当前显卡显存与所选上下文 / KV 缓存参数估算占用,超过约 88% 给出提示、超过约 97% 给出强预警,避免启动后因显存溢出崩溃。

4. 服务运行

graph LR A[点击启动服务] --> B[启动中
拉起 llama-server] B --> C{健康检查
最长 4 分钟} C -->|就绪| D[运行中
OpenAI 兼容 API 可用] C -->|失败| E[失败
日志明确报错] D --> F[手动停止] D -.->|进程崩溃| G[记录崩溃日志] E --> F style A fill:#e8f4f8,stroke:#1a6b8a,stroke-width:2px style B fill:#d6eaf8,stroke:#1a6b8a,stroke-width:2px style C fill:#ebdef0,stroke:#8e44ad,stroke-width:2px style D fill:#d5f5e3,stroke:#27ae60,stroke-width:2px style E fill:#fadbd8,stroke:#c0392b,stroke-width:2px style F fill:#fdebd0,stroke:#b7950b,stroke-width:2px style G fill:#fadbd8,stroke:#c0392b,stroke-width:2px
  • 运行状态机:页面实时显示启动中 / 运行中 / 失败 / 已停止四种状态,并滚动展示引擎日志;
  • 健康检查:启动后轮询服务就绪状态,最长等待 4 分钟,就绪即通知可用;
  • 明确报错:端口被占用、引擎缺失、进程崩溃等情况均在日志中给出明确原因,不静默失败;
  • 内存裁剪:运行就绪后按设定延迟(默认 90 秒)执行定时内存裁剪,回收闲置内存;
  • API 鉴权:可为服务一键生成 sk- 随机密钥开启鉴权,局域网开放时建议开启。

5. 推理参数

全部推理参数可视化调整,改完即存、下次启动生效:

参数 默认值 说明
上下文长度 32768 模型可处理的最大 token 数,受显存约束
KV 缓存量化 q4_0 f16 / q8_0 / q4_0 三档,量化越低显存占用越小、精度略降
Flash Attention 开启 注意力计算加速,减少显存占用
GPU 层数 99(全部) 模型层数卸载到 GPU 的数量,99 表示全量 offload
线程数 0(自动) CPU 推理线程数
批处理大小 512 单批 token 数
并行数 1 同时处理的并发请求数
MTP 投机解码步数 0(关闭) 模型含 MTP 层时可开启,按步数加速生成;自动探测引擎新 spec 与旧 --mtp 两种写法
API Key 空 非空时启用 sk- 鉴权
附加参数 空 高级逃生舱:原样追加到 llama-server 命令行,应对未覆盖的参数

6. 局域网开放与接入

服务默认监听 127.0.0.1,仅本机可用;在推理设置中把监听地址切换为 0.0.0.0 即可对局域网开放,接入页会同步显示实际的局域网调用地址。

「接入」卡片把调用所需的信息一次性给全:

  • Base URL:如 http://192.168.1.10:8080/v1;
  • Chat Completions 地址:/v1/chat/completions 完整地址;
  • 模型名:请求体 model 字段应填的值;
  • 可复制示例:curl 命令与 openai Python SDK 代码各一份,复制即用。

对局域网开放时建议开启 API Key 鉴权,避免局域网内其他设备无限制调用。

7. 接入配置方案

「接入配置方案」按钮把本地服务与 a4agent 的核心切换能力打通:

  1. 点击「接入配置方案」,自动创建一条指向本地推理服务的配置方案(服务商指向本机地址、OpenAI 兼容类型);
  2. 到「配置方案」页把该方案切换到目标工具(Claude Code / Codex / dsh / ZCode);
  3. 四端即用上本地模型;想换回云上 API,切回其他配置方案即可,本地与云端无缝互切。

搭配与限制同普通 OpenAI 兼容服务商一致(如 Codex / dsh 目标只能搭配 OpenAI 兼容类型),见配置方案与一键切换第 3 节。

8. 接口一览

「本地模型」页签背后是 /api/v1/llama 接口簇,主要接口如下:

接口 方法 用途
/api/v1/llama/status GET 服务运行状态
/api/v1/llama/start / stop POST 启动 / 停止推理服务
/api/v1/llama/logs GET 增量拉取引擎日志
/api/v1/llama/hardware GET 硬件检测(显卡厂商 / 显存 / 驱动)
/api/v1/llama/engine/packs GET 可用引擎包清单
/api/v1/llama/engine/download / offline / cancel POST 引擎自动下载 / 离线安装 / 取消
/api/v1/llama/engine/progress GET 引擎下载进度
/api/v1/llama/models / models/scan GET / POST 模型列表与重新扫描
/api/v1/llama/models/dirs / models/dirs/remove POST 添加 / 移除模型目录
/api/v1/llama/models/default POST 设为默认模型
/api/v1/llama/models/risk POST 显存占用风险评估
/api/v1/llama/wizard/finish POST 完成首次配置向导
/api/v1/llama/settings GET / POST 读取 / 保存推理设置
/api/v1/llama/connect GET 接入信息(Base URL / 模型名 / 示例)
/api/v1/llama/integrate POST 一键创建接入配置方案

9. 常见问题

问:没有 NVIDIA 显卡能用吗?

答:可以。向导会推荐 Vulkan 引擎包(NVIDIA / AMD / Intel 通用)或 CPU 兜底包;CPU 推理速度受限,建议搭配小参数量模型与 8k 上下文档位。

问:启动服务时报端口被占用怎么办?

答:日志会明确提示端口冲突。换一个服务端口(推理设置中修改,默认 8080)或结束占用该端口的进程后重新启动;修改端口后接入卡片中的 Base URL 会同步更新,已创建的接入配置方案需重新生成。

问:下载引擎太慢或网络受限怎么办?

答:支持离线安装——在能联网的机器上从 llama.cpp 发行版页下载对应预编译包,解压后在本机指定含 llama-server.exe 的目录即可;引擎版本与自动下载的保持一致即可。

问:模型启动就崩溃或报显存不足?

答:看模型库的风险预警列与引擎日志。常见处理:降低上下文长度、把 KV 缓存降到 q4_0、更换更小量化级别的模型文件;显存实在不足时减少 GPU 层数改为部分 offload(CPU 承担剩余层)。

问:MTP 投机解码是什么,怎么开?

答:MTP 是模型自带的投机解码加速层——模型库扫描时会标注模型是否含 MTP 层;含 MTP 层的模型在推理设置中把 MTP 步数调为大于 0 即可开启,a4agent 会自动适配引擎的新旧参数写法。

问:本地模型的数据放在哪里?

答:推理配置(llama_config.json)与引擎目录(engine\)都在运行时数据目录内(安装版为 %APPDATA%\a4agent\),与配置方案、备份数据同目录管理,详见数据目录与日志说明。

问:本地服务和云上 API 能同时给不同工具用吗?

答:可以。为本地服务与云上服务商各建一条配置方案,切换到哪个方案,对应工具就用哪个上游;多个工具也可以通过目标多选同时指向同一条方案。