从 LLM 到 Agent:Function Calling、MCP、Skills 与上下文工程学习笔记
从 LLM 到 Agent:Function Calling、MCP、Skills 与上下文工程学习笔记前言LLM 本身只是一个预测下一个 token 的模型,那么我们如何让它变成一个可以读文件、查网页、运行命令、调用 API、修改代码的 Agent?
换句话说:
LLM 是大脑,但它本身没有手脚;Agent 是围绕 LLM 构建的一整套工程系统,让模型能够看见外部信息、选择工具、执行动作、接收反馈,并继续完成任务。
本文就按照这个思路,从 LLM 的基础机制开始,逐步整理:
LLM 为什么是“下一个 token 预测器”;
Base Model 和 Instruct Model 有什么区别;
System Prompt 为什么像 Agent 的隐藏操作手册;
Function Calling 如何让模型学会调用工具;
RAG是如何让llm知道外部知识;
MCP 为什么像 Agent 工具生态的统一插座;
Agent Loop 如何让一次回答变成多步执行;
Skills 为什么是一种按需加载的任务知识;
Auto memory有什么作用;
为什么说 Agent 工程的核心其实是上下文 ...
服务器使用 tmux 保持 vLLM 后台运行笔记
服务器使用 tmux 保持 vLLM 后台运行笔记前言在服务器上部署大模型时,经常会遇到一个很实际的问题:
我用 Termius / SSH 连接服务器
然后在终端里启动vLLM
模型服务正常运行
但是本地电脑休眠、网络断开、Termius 关闭后
vLLM 服务可能也停止了
比如直接在普通 SSH 终端里运行:
123456789CUDA_VISIBLE_DEVICES=0,1 vllm serve /data2/like/models/Qwen2.5-Coder-7B-CL \ --tensor-parallel-size 2 \ --host 0.0.0.0 \ --port 8002 \ --served-model-name qwen-7B \ --dtype auto \ --gpu-memory-utilization 0.92 \ --max-model-len 131072 \ --max-num-seqs 1
这种方式看起来可以运行,但它和当前 SSH 会话绑定得很紧。
一旦 Termius 断开、网络波动、本地电脑休眠,普通 SSH 前台进程 ...
tar 打包压缩与解压命令详解
tar 打包压缩与解压命令详解前言在服务器、WSL 或 Linux 环境中,经常需要把一个项目目录打包成压缩包,方便备份、迁移或传输。
例如我们有一个 LocAgent 项目,里面既有源码,也可能有测试文件、缓存文件、大型数据集仓库等内容。如果直接全部打包,压缩包可能会非常大,而且会包含很多没必要迁移的缓存目录。
这时就可以使用 tar 命令配合 --exclude 参数,在打包时排除不需要的目录。
本文主要讲解下面两类命令:
1234567tar \ --exclude="LocAgent/playground" \ --exclude="LocAgent/repo_swebenchlite" \ --exclude="LocAgent/repo_locbench" \ --exclude="LocAgent/**/__pycache__" \ --exclude="LocAgent/.pytest_cache" \ -czf /mnt/d/LocAgent_with_te ...
Hexo 博客接入 Giscus 评论系统
Hexo 博客接入 Giscus 评论系统前言在搭建个人博客时,评论系统是一个很常见的需求。
以前常见的评论方案有 Valine、Twikoo、Waline、Utterances 等。本文记录的是另一种基于 GitHub Discussions 的评论系统:Giscus。
Giscus 可以把 GitHub Discussions 集成到网站中作为评论区。它的主要好处是:
123评论数据存储在 GitHub 上不需要自己维护数据库适合 GitHub Pages、Hexo、Hugo 等静态博客
官方地址:https://giscus.app/
可以把 Giscus 理解成:
博客文章页面
嵌入 Giscus 评论组件
评论内容自动保存到 GitHub Discussions
也就是说,博客本身只负责展示评论区,真正的评论数据由 GitHub 仓库管理。
一、准备 GitHub 评论仓库1.1 新建评论仓库Giscus 的评论数据需要存放在 GitHub Discussions 中,因此需要准备一个 GitHub 仓库。
这个仓库可以和博客源码仓库分开,也可以使用已有仓库。为了方便 ...
服务器使用 vLLM 部署 Qwen2.5-Coder-7B-CL 笔记
服务器使用 vLLM 部署 Qwen2.5-Coder-7B-CL 笔记前言这篇笔记记录一次在实验室服务器上使用 vLLM 部署本地 Qwen2.5-Coder-7B-CL 模型的完整过程。
这次部署并不是简单执行一条命令就完成,中间遇到了很多真实问题:
服务器磁盘很多,不知道模型和环境应该放哪里
服务器没有 conda,需要手动安装 Miniconda
conda 默认源慢,需要配置国内镜像
vLLM 最新版和服务器 NVIDIA 驱动不兼容
torch / vLLM / transformers 版本不匹配
SSH 断开后服务可能停止,需要 tmux 保活
最终我们成功在服务器上用两张 RTX A6000 部署了 Qwen2.5-Coder-7B-CL,并提供 OpenAI 兼容 API 接口。
本文将从服务器环境检查开始,逐步整理模型下载、环境配置、vLLM 安装、模型启动、接口测试和常见问题处理。
一、部署目标与服务器基本情况1.1 部署目标本次要部署的模型是:
1czlll/Qwen2.5-Coder-7B-CL
服务器本地模型路径是:
1/data ...
Word 两列文档中插入横跨两列的表格
Word 两列文档中插入横跨两列的表格前言在写论文、报告或课程作业时,Word 文档经常会设置成“两栏排版”。这种排版适合正文阅读,但如果表格内容较宽,就会出现一个问题:
1表格被限制在单栏宽度内,显示很挤,甚至排版错乱。
这时我们希望正文仍然保持两栏,但中间某一张表格可以横跨左右两栏,铺满整页宽度。
本文记录一种常用做法:通过“连续分节符”把表格单独隔离出来,再把表格所在区域设置为“一栏”。
参考博客:Word–两列(两栏、多栏、多列)文档中间插入横跨两列(多列)的表格_如何在两栏中加入一栏的表格-CSDN博客
一、最终效果与原本问题1.1 最终效果最终希望实现的效果是:正文仍然是两栏排版,但中间的表格横跨两栏,铺满页面宽度。
1.2 原本样式原本情况下,表格会被压缩在某一栏中,宽度不够,显示效果不好。
可以把两栏文档理解成一条路被分成了左右两条车道,而表格太宽,单独放在一条车道里会很拥挤。我们要做的事情,就是在表格这一段临时把两条车道合并成一条大车道。
二、核心思路2.1 为什么需要分节符Word 中的“分栏”设置通常是针对某一段文档区域生效的。
如果直接把整篇文档设置为 ...
服务器下载 Hugging Face 模型笔记:以 Qwen2.5-Coder-7B-CL 为例
服务器下载 Hugging Face 模型笔记:以 Qwen2.5-Coder-7B-CL 为例前言在服务器上部署大模型时,第一步通常是把 Hugging Face 上的模型下载到服务器本地。
这件事看起来只是一个下载命令:
1hf download xxx/xxx
但实际操作中经常会遇到几个问题:
服务器磁盘很多,不知道模型该放哪里
huggingface-cli / hf 命令找不到
服务器访问 Hugging Face 慢,需要镜像源
目录权限不够,下载时 Permission denied
下载完成后不知道如何检查文件是否完整
本文以下载模型:
1czlll/Qwen2.5-Coder-7B-CL
到服务器目录:
1/data2/like/models/Qwen2.5-Coder-7B-CL
为例,完整整理一次服务器下载 Hugging Face 模型的过程。
一、先选择正确的磁盘目录1.1 为什么不能随便下载到 /home/user服务器上通常有多个磁盘目录,比如:
不能看到一个目录就直接用,必须先看它所在磁盘还有多少空间,,通常一个数据集或者模型占据的空 ...
Linux 服务器基础资源查看:CPU、GPU、内存、磁盘与一键配置检测脚本
Linux 服务器基础资源查看:CPU、GPU、内存、磁盘与一键配置检测脚本前言在服务器上跑大模型、深度学习实验、代码仓库分析任务时,第一步不是马上运行代码,而是先确认服务器资源是否够用。
常见需要查看的资源包括:
1234567GPU 型号和显存CPU 型号和核心数内存 RAM 和 Swap磁盘空间系统版本CUDA 驱动Python / PyTorch 是否能使用 GPU
这些信息决定了服务器能不能跑模型、能不能加载数据集、能不能支撑并发任务。
可以把服务器理解成一台“实验机器”:
GPU:主要负责大模型推理和训练
CPU:负责数据处理、代码解析、进程调度
内存:负责临时存放数据
磁盘:负责存模型、数据集、代码仓库和实验结果
一、查看 GPU:显卡型号、显存和进程占用1.1 使用 nvidia-smi 查看 GPU最常用命令是:
1nvidia-smi
它可以查看:
123456显卡型号显存总量显存占用GPU 使用率CUDA 驱动版本正在占用 GPU 的进程
例如输出中看到:
123NVIDIA RTX A6000Memory-Usage: 22826MiB / 4914 ...
WSL 下安装 Miniconda 笔记
WSL 下安装 Miniconda 笔记前言在 WSL 中运行 GitHub 项目时,经常需要创建独立的 Python 环境。如果直接执行:
1conda create -n locagent python=3.12 -y
出现:
1conda: command not found
说明当前 WSL 里还没有安装 Conda。Windows 中安装过 Anaconda 或 Miniconda,并不代表 WSL 里也能直接使用,因为 WSL 是一套独立的 Linux 环境。
一、为什么要在 WSL 里安装 Miniconda1.1 Windows 和 WSL 是两套环境Windows 里的 Python、Conda、pip 包,和 WSL 里的 Python、Conda、pip 包不是同一套。
所以要在 WSL 中运行 Linux 项目,就需要在 WSL 中单独安装一套 Miniconda。
1.2 为什么选择 MinicondaMiniconda 比 Anaconda 更轻量,只提供 Conda、Python 和少量基础工具。后续项目需要什么包,再通过 conda install ...
WSL2 运行调式项目的详细配置
WSL2 运行调式项目的详细配置前言很多 GitHub 项目默认就是按 Linux 环境 写的,里面会用到 Windows 没有或不兼容的东西,比如:
12345sudo apt install xxxbash install.shchmod +x run.sh./run.shmake
这些命令在 Windows 的 CMD / PowerShell 里可能会报错,但在 WSL 的 Ubuntu里就能正常执行。
同时ubuntu系统配置环境比较简单方便。
如果你在 Windows 直接跑,可能会因为 bash、路径、权限、依赖不兼容报错;进入 WSL 后,相当于用 Linux 环境跑这个项目,更符合作者原本的运行环境。
最终选择是:保留 Windows 作为日常系统,把 WSL2 的 Ubuntu 环境迁移到 D 盘,并在 WSL 内部运行 Python、Git、HuggingFace等实验流程。这样 Windows 像办公桌,WSL 像实验台,数据和依赖尽量放在实验台里,减少 Windows 环境污染。
一、什么是WSLWSL 全称是 Windows Subsystem for ...








