在 Windows 上安装和编译 llama.cpp

在 Windows 上安装和编译 llama.cpp

1.1 环境准备

1.1.1 安装mingw

下载地址:mingw-builds-binaries

在这里插入图片描述

解压后,将 bin 目录加入环境变量,例如:E:\dev\mingw64\bin

验证安装是否成功:

g++ -v

1.1.2 安装w64devkit

下载地址:w64devkit Releases

在这里插入图片描述

解压后,将 bin 目录添加到系统环境变量,例如:E:\dev\w64devkit\bin

1.1.3 安装 CMake

访问 CMake 官网,下载 Windows x64 ZIP(注意:不是安装包)。

在这里插入图片描述

解压后,将 bin 目录添加到环境变量,例如:E:\dev\cmake-4.0.3-windows-x86_64\bin

验证是否成功:

cmake --version

2.2 克隆 llama.cpp

git clone https://github.com/ggerganov/llama.cpp 

3.3 编译

3.3.1 使用 CMake 构建(新版)

说明:llama.cpp 官方已废弃原来的 Makefile 构建方式,推荐改用 CMake 构建方式 来编译模型工具和推理引擎。

编译 llama.cpp:

如果本地有安装Visual Studio,推荐使用 Visual Studio + CMake 进行构建(适用于 Windows 用户,兼容性最佳):
cd path/llama.cpp mkdir build cd build # 使用 Visual Studio 生成项目 cmake ..-G "Visual Studio 17 2022"-A x64 -DLLAMA_CURL=OFF # 或 使用 w64devkit和mingw 生成项目 cmake ..-G "MinGW Makefiles"-DLLAMA_CURL=OFF # 编译 Release 模式 cmake --build .--config Release 

如果一切正常,你会在 build/bin/Release 目录下看到生成的程序。

Read more

FileVibe全攻略(四):前端模块化与事件通信实战

FileVibe全攻略(四):前端模块化与事件通信实战

各位开发者,今天我们来聊聊FileVibe前端架构中最巧妙的设计——用CustomEvent实现跨模块通信。当你打开一张图片,AI聊天模块自动知道该分析这张图;当你在文件列表点击,预览模块自动响应——这些看似“魔法”的联动,背后就是事件通信在起作用。 下图是FileVibe的界面布局,左侧文件列表、中间预览区、右侧聊天区,三个模块各自独立却又默契配合: 这三个区域分别由三个独立的模块管理: * 左侧:list.js - 只负责显示文件和文件夹 * 中间:preview.js - 只负责预览文件内容 * 右侧:chat.js - 只负责AI对话和图片解读 它们各司其职,但需要协同工作——比如点击左侧的图片,中间要显示,右侧要准备分析。怎么让它们配合得既紧密又松耦合?这就是今天要讲的事件通信。 获取源代码:Gitee FileVibe(已获得Gitee推荐) 一、先想清楚:我们面临的需求是什么? 在开始写代码之前,我们先停下来想一想:我们到底要解决什么问题? 1.

前端vue3解析上传的视频编码格式,同时判断是否可以在当前浏览器播放

前端vue3解析上传的视频编码格式,同时判断是否可以在当前浏览器播放

技术栈:vue3、JavaScript、vite 依赖库:mediainfo.js: "^0.2.2"、 file-type: "^21.1.1"; 前言         这段时间有接触一个在线聊天的前端项目,其中可以发送图片视频之类的。随后,便发现了一些问题:其中与本文章有关的,就是上传的视频,在当前浏览器有可能无法播放(直接无法播放、或者点击播放,有声音,但无画面)。         经过排查,最后发现,是视频编码问题,部分浏览器不支持H265编码(HEVC)格式的视频播放,导致原生video组件播放异常。         怎么处理呢?一开始想让后台帮忙处理,检测视频格式,并将其转换为H264的编码格式(AVC)。嗯,虽然从结果来说,完全可行,但对服务器资源的消耗还是挺大的,因此不太建议这么做。         那么直接让前端来处理呢?有没有什么豪的方法?有的,

别再用 Electron 了!教你用 WebView2 实现 3MB 极致轻量化 Web 打包方案(附神器)

别再用 Electron 了!教你用 WebView2 实现 3MB 极致轻量化 Web 打包方案(附神器)

文章摘要:         你还在忍受 Electron 打包后动辄 100MB+ 的体积吗?你还在为本地 HTML 跨域(CORS)、源码保护、机器码授权而头秃吗?本文将带你体验微软新一代 WebView2 技术,并分享一款支持实时预览、全全局拖拽交互的打包神器。3MB 体积,1.5GB 大文件秒开,彻底解放前端生产力! 😱 为什么 2026 年了,我们还要逃离 Electron? 做前端桌面化开发,Electron 确实是老大哥,但它的缺点和优点一样明显: * 太胖了: 一个最简单的 Hello World,打包出来都要 150MB 起步。 * 太吃内存: 每个窗口都是一个 Chrome 进程,老爷机直接卡死。 * 开发繁琐: 想要实现“老板键”、“机器码授权”、“关机重启”,需要写大量的

Gemini cli 源码分析之工具篇-WebFetch工具

Gemini cli 源码分析之工具篇-WebFetch工具

查看完整的Gemini cli 源码分析系列课程 Gemini CLI源码启示录:AI工程师必须掌握的终端开发范式 WebFetch工具深度分析 概述 WebFetch工具 (packages/core/src/tools/web-fetch.ts) 是Gemini CLI项目中的一个核心工具,用于从URL获取和处理网页内容。该工具结合了AI能力和传统网页抓取技术,提供了智能的内容获取和处理功能。 核心架构 主要组件 WebFetchTool(主工具类) ├── WebFetchToolInvocation(工具调用实现) ├── parsePrompt(URL解析函数) └── GroundingMetadata(引用和元数据接口) 继承关系 * WebFetchTool 继承自 BaseDeclarativeTool<WebFetchToolParams, ToolResult> * WebFetchToolInvocation 继承自 BaseToolInvocation<WebFetchToolParams, ToolResult> 核心功能分析