openclaw使用llama.cpp 本地大模型部署教程

openclaw使用llama.cpp 本地大模型部署教程

openclaw使用llama.cpp 本地大模型部署教程

本教程基于实际操作整理,适用于 Windows WSL2 环境

全程使用 openclaw 帮我搭建大模型

在这里插入图片描述

一、环境准备

1. 硬件要求

显卡推荐模型显存占用
GTX 1050 Ti (4GB)Qwen2.5-3B Q4~2.5GB
RTX 4060 (8GB)Qwen2.5-7B Q4~5GB
RTX 4090 (24GB)Qwen2.5-32B Q4~20GB

2. 安装编译工具(WSL Ubuntu)

sudoapt update sudoaptinstall -y cmake build-essential 

二、下载和编译 llama.cpp

1. 克隆源码

mkdir -p ~/llama.cpp cd ~/llama.cpp git clone --depth 1 https://github.com/ggerganov/llama.cpp.git src 

2. 编译

cd ~/llama.cpp/src mkdir build &&cd build cmake .. -DCMAKE_BUILD_TYPE=Release make -j$(nproc) llama-cli llama-server 

编译完成后,可执行文件在 ~/llama.cpp/src/build/bin/ 目录下。


三、下载模型

1. 创建模型目录

mkdir -p ~/llama.cpp/models 

2. 下载 GGUF 模型(使用国内镜像加速)

Qwen2.5-3B(适合 4GB 显存):

curl -L -o ~/llama.cpp/models/qwen2.5-3b-instruct-q4_k_m.gguf \"https://hf-mirror.com/Qwen/Qwen2.5-3B-Instruct-GGUF/resolve/main/qwen2.5-3b-instruct-q4_k_m.gguf"

Qwen2.5-7B(适合 8GB 显存):

curl -L -o ~/llama.cpp/models/qwen2.5-7b-instruct-q4_k_m.gguf \"https://hf-mirror.com/Qwen/Qwen2.5-7B-Instruct-GGUF/resolve/main/qwen2.5-7b-instruct-q4_k_m.gguf"

四、运行模型

方式一:命令行交互模式

cd ~/llama.cpp/src/build/bin ./llama-cli -m ~/llama.cpp/models/qwen2.5-3b-instruct-q4_k_m.gguf \ -c 4096\ --no-display-prompt 

参数说明:

  • -m 模型路径
  • -c 上下文长度(默认 512,建议 4096)
  • -ngl GPU 层数(纯 CPU 可不加)

方式二:启动 API 服务

cd ~/llama.cpp/src/build/bin ./llama-server \ -m ~/llama.cpp/models/qwen2.5-3b-instruct-q4_k_m.gguf \ --host 0.0.0.0 \ --port 8080\ -c 4096

服务启动后访问:http://localhost:8080


五、API 调用方法

API 信息

项目
地址http://localhost:8080
API Key不需要(或随意填写)
兼容格式OpenAI API

端点列表

端点说明
POST /v1/chat/completions聊天补全
POST /v1/completions文本补全
GET /health健康检查
GET /Web 聊天界面

调用示例

curl
curl http://localhost:8080/v1/chat/completions \ -H "Content-Type: application/json"\ -d '{ "model": "qwen2.5-3b", "messages": [ {"role": "system", "content": "你是一个有帮助的助手。"}, {"role": "user", "content": "你好,介绍一下你自己"} ], "temperature": 0.7, "max_tokens": 512 }'
Python(OpenAI SDK)
from openai import OpenAI client = OpenAI( base_url="http://localhost:8080/v1", api_key="not-needed") response = client.chat.completions.create( model="qwen2.5-3b", messages=[{"role":"system","content":"你是一个有帮助的助手。"},{"role":"user","content":"你好"}], temperature=0.7, max_tokens=512)print(response.choices[0].message.content)
Node.js
const response =awaitfetch('http://localhost:8080/v1/chat/completions',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({model:'qwen2.5-3b',messages:[{role:'user',content:'你好'}]})});const data =await response.json(); console.log(data.choices[0].message.content);

六、常用参数说明

服务端参数(llama-server)

参数说明示例
-m模型路径-m model.gguf
--host监听地址--host 0.0.0.0
--port端口--port 8080
-c上下文长度-c 4096
-nglGPU 层数-ngl 99(全部放 GPU)
-np并行请求数-np 4
--api-key设置 API Key--api-key your-key

API 请求参数

参数说明默认值
temperature随机性(0-2)0.7
max_tokens最大生成长度模型上限
top_p核采样1.0
stream流式输出false
stop停止词[]

七、常见问题

Q1: 报错 “CUDA out of memory”

减少 -ngl 数值,让部分层用 CPU 计算:

./llama-server -m model.gguf -ngl 20# 只放 20 层到 GPU

Q2: 中文乱码

PowerShell 执行:

chcp 65001 

Q3: 如何后台运行服务?

nohup ./llama-server -m model.gguf --host 0.0.0.0 --port 8080> server.log 2>&1&

Q4: 如何设置 API Key 认证?

./llama-server -m model.gguf --api-key "your-secret-key"

调用时需要带上:

curl -H "Authorization: Bearer your-secret-key"... 

Q5: 从其他设备访问

  1. 查看 WSL IP:hostname -I
  2. 使用该 IP 访问,如 http://172.x.x.x:8080

八、推荐模型

模型大小适合场景
Qwen2.5-3B-Instruct Q4~2GB轻量对话、低配设备
Qwen2.5-7B-Instruct Q4~4.5GB通用对话、代码
Qwen2.5-14B-Instruct Q4~9GB复杂推理
DeepSeek-R1-Distill-Qwen-7B Q4~4.5GB数学、逻辑推理
Mistral-7B-v0.3 Q5~5GB英文、代码

下载地址: https://hf-mirror.com(国内镜像)


九、文件结构

~/llama.cpp/ ├── src/ # llama.cpp 源码 │ └── build/ │ └── bin/ │ ├── llama-cli # 命令行工具 │ └── llama-server # API 服务 └── models/ # 模型存放目录 └── qwen2.5-3b-instruct-q4_k_m.gguf 

十、快速启动脚本

创建 start-server.sh

#!/bin/bashcd ~/llama.cpp/src/build/bin ./llama-server \ -m ~/llama.cpp/models/qwen2.5-3b-instruct-q4_k_m.gguf \ --host 0.0.0.0 \ --port 8080\ -c 4096\ -np 4

赋予执行权限:

chmod +x start-server.sh ./start-server.sh 

教程整理于 2026-02-03
基于 llama.cpp b7917 + Qwen2.5-3B-Instruct

Read more

ctfhub——文件上传(无验证,前端验证,.htaccess,MIME绕过,00截断,双写后缀,文件头检测)

ctfhub 文件上传 无验证 上传一句话木马 访问成功显示666 连接蚁剑 得到flag ctfhub{149641ca197038f11067df1a} 前端验证 不能直接上传 js前端验证,过滤在前端 所以我们可以通过直接修改前端js文件或BP改包的方式绕过 这里我们用BP 打开BP上传图片文件 改包并上穿 尝试访问成功 连接蚁剑 得到flag ctfhub{1856388f624ce5d680835d50} .htaccess 1.知识点 (1)先简单介绍一下.htaccess文件: .htaccess文件 (或者"分布式配置文件"),全称是Hypertext Access(超文本入口)。 它提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。 作为用户,所能使用的命令受到限制。 管理员可以通过Apache的AllowOverride指令来设置。 .htaccess文件是用于apache服务器下的控制文件访问的配置文件,因此Ng

By Ne0inhk
Android 蓝牙 BLE 扫描 Native 层架构与扫描流程剖析

Android 蓝牙 BLE 扫描 Native 层架构与扫描流程剖析

博主简介 byte轻骑兵,现就职于国内知名科技企业,专注于嵌入式系统研发,深耕 Android、Linux、RTOS、通信协议、AIoT、物联网及 C/C++ 等领域。乐于技术分享与交流,欢迎关注互动! 📌 主页与联系方式ZEEKLOG:https://blog.ZEEKLOG.net/weixin_37800531知乎:https://www.zhihu.com/people/38-72-36-20-51微信公众号:嵌入式硬核研究所邮箱:[email protected](技术咨询或合作请备注需求) ⚠️ 版权声明 本文为原创内容,未经授权禁止转载。商业合作或内容授权请联系邮箱并备注来意。 本文基于 Android 蓝牙源码中 BLE 扫描相关的 Native 层代码,以scanInitializeNative为入口,系统梳理 BLE 扫描从 JNI

By Ne0inhk
Flutter 组件 spinify 适配鸿蒙 HarmonyOS 实战:实时消息管道,构建全场景高性能 WebSocket 长连接架构

Flutter 组件 spinify 适配鸿蒙 HarmonyOS 实战:实时消息管道,构建全场景高性能 WebSocket 长连接架构

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 spinify 适配鸿蒙 HarmonyOS 实战:实时消息管道,构建全场景高性能 WebSocket 长连接架构 前言 在鸿蒙(OpenHarmony)生态迈向万物互联、涉及高频实时交互、流式数据同步或多人协同编辑的场景下,如何建立一套稳定、高效且具备自动愈合能力的长连接通道,已成为提升应用实时性体验的“关键枢轴”。在鸿蒙设备这类强调分布式协同与严苛能效管理的移动终端上,如果直接使用原生的 WebSocket 进行裸奔(Bare Metal)开发,由于由于缺乏完善的心跳机制、重连策略与频道管理,极易由于由于网络波动导致连接频繁断档,进而引发业务状态的不一致。 我们需要一种能够深度封装协议细节、支持大规模并发频道订阅且具备毫秒级重连恢复能力的实时通讯引擎。 spinify 为 Flutter 开发者提供了与 Centrifugo(高性能实时消息服务器)交互的高级客户端。它支持全双工通信、自动重连计数与消息序列确认(ACK)。在适配到鸿

By Ne0inhk
Rust异步编程高级模式:并发控制、超时机制与实战架构

Rust异步编程高级模式:并发控制、超时机制与实战架构

Rust异步编程高级模式:并发控制、超时机制与实战架构 一、异步并发控制:Semaphore、Mutex、RwLock的异步版本 1.1 为什么需要异步同步原语? 💡在同步编程中,我们使用std::sync::Mutex、std::sync::RwLock、std::sync::Semaphore等同步原语来控制并发访问。这些原语在多线程场景下非常有效,但在异步编程中,它们会导致任务阻塞,影响性能。 异步同步原语通过await关键字暂停任务,而不是阻塞线程,从而提高了CPU利用率。Tokio提供了一系列异步同步原语,如tokio::sync::Mutex、tokio::sync::RwLock、tokio::sync::Semaphore。 1.2 异步Mutex(互斥锁) 异步Mutex的使用方式与标准库的类似,但需要使用await来获取锁。 usetokio::sync::Mutex;usestd::sync::Arc;

By Ne0inhk