soarli博客
type: channel
link: https://blog.soarli.top/
description: 欢迎来到soarli博客，是一个充满魔力的地方！
items: 修复 libcares.so.2: cannot open shared object file 错误
items: ubuntu怎么进入单用户模式
items: nano如何保存文件？
items: typecho 发表文章 遇到 Database Query Error报错的处理方法
items: GitLab Docker 版升级指南：从备份到离线更新，解决网络难题
items: 告别系统盘焦虑：将 Docker 数据目录迁移到大容量硬盘的终极指南
items: Docker “悬案”：一个 66G 的 GitLab 容器如何吃掉我的硬盘
items: 从宕机到扩容：ESXi中Ubuntu虚拟机“磁盘已满”实战救援全记录
items: 大模型Prompt技巧全解析
items: 科技最前沿

修复 libcares.so.2: cannot open shared object file 错误
type: item
date: 2025-10-30T15:54:00+08:00
description: 本文由AI辅助撰写，可能存在不准确之处，请读者注意甄别！🚀 引言：那个熟悉的错误如果你在 Linux 环境下编译或安装了自定义版本的软件（比如 curl），你可能满怀期待地运行它，结果却遇到了这个“老朋友”：/usr/local/curl/bin/curl: error while loading shared libraries: libcares.so.2: cannot open shared object file: No such file or directory这个错误信息非常明确：curl 程序在启动时，需要加载一个名为 libcares.so.2 的“共享库”文件，但操作系统的动态链接器（dynamic linker）找不到它。别担心，这个问题很常见，而且通常有几种清晰的解决路径。💡 为什么会发生这个错误？这几乎总是与动态链接有关。共享库 (.so 文件)： 在 Linux 中，.so 文件（Shared Object）是共享库，类似于 Windows 上的 .dll。它们包含可重用的代码，多个程序可以“共享”它们，以节省磁盘空间和内存。libcares.so.2 是什么？ 这是 c-ares 库，一个用于异步 DNS 解析的 C 库。你编译的 curl 依赖它来执行非阻塞的域名查找。“找不到”的真正含义： 这个错误不一定意味着文件不存在，而是意味着动态链接器（ld）没有在它“已知”的标准路径（如 /lib、/usr/lib）中找到它。自定义编译的“陷阱”： 当你手动从源码编译并安装软件到 /usr/local 目录下时（就像错误中的 /usr/local/curl/bin/curl），它所依赖的库（可能也安装在 /usr/local/lib）可能没有被系统的动态链接器所知晓。🛠️ 解决方案：从诊断到修复我们来一步步解决这个问题。第一步：诊断，看看文件在哪里首先，我们得知道 libcares.so.2 这个文件到底在不在你的系统上。sudo find / -name "libcares.so.2"这个命令会告诉你文件的确切位置。根据结果，你有两个主要的分支：A. 如果 find 找到了文件 (例如，在 /usr/local/lib 或 /opt/cares/lib 等路径下)，说明库已安装，只是系统“不知道”去那里找。请看 [解决方案 1] 或 [解决方案 2]。B. 如果 find 什么都没找到，说明这个库文件根本没被安装。请看 [解决方案 3]。解决方案 1：（推荐）更新动态链接器缓存 (ldconfig)这是最“正确”且一劳永逸的方法。我们要做的是告诉系统：“嘿，请你以后也去 /usr/local/lib 这个地方找找库文件。”假设 find 命令告诉你文件在 /usr/local/lib：创建配置文件：在 /etc/ld.so.conf.d/ 目录下创建一个新的 .conf 文件（名字随意，比如 local-libs.conf），内容是库文件所在的目录路径。echo "/usr/local/lib" | sudo tee /etc/ld.so.conf.d/local-libs.conf注意： 如果你的库在其他非标准路径（如 /opt/myapp/lib），请替换上面命令中的 /usr/local/lib。刷新缓存：运行 ldconfig 命令，它会读取所有配置文件（包括你刚创建的那个），并重建动态链接器的缓存。sudo ldconfig测试：现在再次运行你的 curl 命令，错误应该已经消失了。/usr/local/curl/bin/curl --version解决方案 2：（临时）使用 LD_LIBRARY_PATH这个方法非常适合临时测试或在没有 sudo 权限的环境下使用。它通过一个环境变量告诉当前 shell 在哪里查找库。设置环境变量：（同样，假设库在 /usr/local/lib）export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH这会将 /usr/local/lib 临时添加到库搜索路径的最前面。测试：必须在同一个终端会话中运行你的 curl 命令：/usr/local/curl/bin/curl --version注意： 这个设置只在当前终端有效，关闭终端后就会失效。你可以将其添加到 ~/.bashrc 或 ~/.zshrc 文件中使其（对当前用户）永久生效，但 ldconfig（方案 1）通常是更好的系统级解决方案。解决方案 3：（如果未安装）安装 c-ares 库如果 find 命令什么都没找到，那说明你根本没有安装这个依赖。使用系统的包管理器来安装它：在 RHEL / CentOS / Fedora 上：sudo yum …

ubuntu怎么进入单用户模式
type: item
date: 2025-10-19T16:18:00+08:00
description: 本文转载自互联网，已在文末注明来源。ubuntu下进入单用户模式可以使用命令sudo init 1由于虚拟机的sudoer配置文件出问题，没办法使用sudo命令，root的密码又不记得，所以研究了一下通过recover模式进入单用户模式中的方法。不多说了，上图：启动系统的时候长按 shift 键，进入grub菜单： 选择ubuntu高级选项，按 e 键 选择recovery模式，按 e 进入 修改里面的linux行 ctrl + x退出，进入单用户模式 注意：在修改完grub配置之后，下次进入recovery模式，显示的内容仍然是未修改前的。如要再次进入单用户模式，需要再次修改。修改完后若要重启，通过reboot, shutdown -r等等均不可行，需要通过vmware使用ctrl + alt + delete来实现。原文地址：ubuntu怎么进入单用户模式 - 迷阳 - 博客园

nano如何保存文件？
type: item
date: 2025-10-19T04:04:00+08:00
description: 在 nano 编辑器中保存文件的方法如下：保存文件（写入文件）：按下 Ctrl + O（即按住 Ctrl 键，再按字母 O）。此时底部会提示你输入文件名（如果当前文件已有名称，会自动显示）。直接按 Enter 键确认保存。退出 nano：按下 Ctrl + X。如果文件有未保存的更改，nano 会提示你是否要保存：按 Y 表示“是”，保存并退出；按 N 表示“否”，放弃更改并退出。小贴士：如果你是在新建一个文件，第一次保存时 Ctrl + O 会让你输入文件名。保存不会自动退出，需要单独按 Ctrl + X 退出。例如，编辑一个叫 example.txt 的文件：nano example.txt编辑完成后：Ctrl + O → Enter（保存）Ctrl + X（退出）

typecho 发表文章 遇到 Database Query Error报错的处理方法
type: item
date: 2025-10-19T04:00:00+08:00
description: 本文转载自互联网，已在文末注明来源。进行以下操作时最好备份当前数据库后再操作1、修改数据库配置文件的编码。打开网站根目录数据库配置文件 config.inc.php 将 charset 的值由 utf8改为 utf8mb4/** 定义数据库参数 */ $db = new Typecho_Db('Pdo_Mysql', 'echo_'); $db->addServer(array ( 'host' => 'localhost', 'user' => 'user', 'password' => 'password', 'charset' => 'utf8mb4', //修改这一参数 'port' => '3306', 'database' => 'echo', ), Typecho_Db::READ | Typecho_Db::WRITE); Typecho_Db::set($db);2、修改数据库编码。alter table typecho_comments convert to character set utf8mb4 collate utf8mb4_general_ci; alter table typecho_contents convert to character set utf8mb4 collate utf8mb4_general_ci; alter table typecho_fields convert to character set utf8mb4 collate utf8mb4_general_ci; alter table typecho_metas convert to character set utf8mb4 collate utf8mb4_general_ci; alter table typecho_options convert to character set utf8mb4 collate utf8mb4_general_ci; alter table typecho_relationships convert to character set utf8mb4 collate utf8mb4_general_ci; alter table typecho_users convert to character set utf8mb4 collate utf8mb4_general_ci;原文地址：typecho 发表文章 遇到 Database Query Error报错的处理方法 - LaoKey's Blog

GitLab Docker 版升级指南：从备份到离线更新，解决网络难题
type: item
date: 2025-10-19T03:35:00+08:00
description: 对于许多团队来说，使用 Docker 部署的 GitLab 是代码托管和 DevOps 的核心。保持 GitLab 的版本更新至关重要，这不仅能获取最新的功能，还能及时修复安全漏洞。然而，升级过程，尤其是当服务器网络环境不佳时，常常会遇到挑战。本文将为您提供一份详尽的 GitLab (Docker 版) 升级指南。我们将从标准的在线升级流程开始，然后重点讲解当您遇到 context deadline exceeded 等网络问题时，如何通过手动离线导入镜像的方式完成升级。场景示例：当前版本: gitlab/gitlab-ce:17.11.4-ce.0目标版本: gitlab/gitlab-ce:17.11.7-ce.0核心命令: sudo docker run -d -p 443:443 -p 80:80 -p 222:22 --name gitlab --restart always -v /home/gitlab/config:/etc/gitlab -v /home/gitlab/logs:/var/log/gitlab -v /home/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:TAGPart 1: 标准在线升级流程在网络通畅的情况下，升级 GitLab 非常直接。核心原理是：停止并删除旧容器，然后使用新版镜像和完全相同的挂载路径启动新容器。 您的所有数据都安全地保存在挂载到主机的卷 (/home/gitlab) 中，因此删除容器本身是无损的。第 1 步：备份（重中之重！）在进行任何操作前，永远要先创建一个完整备份。sudo docker exec -t gitlab gitlab-backup create此命令会在您的数据卷目录 (/home/gitlab/data/backups) 下生成一个 .tar 格式的备份文件。这是您最可靠的“后悔药”。第 2 步：停止并移除旧容器sudo docker stop gitlab sudo docker rm gitlab请放心，只要您的 -v 挂载路径是正确的，此操作不会删除您的任何配置、代码或数据库。第 3 步：拉取新版镜像sudo docker pull gitlab/gitlab-ce:17.11.7-ce.0第 4 步：启动新容器这是最关键的一步。使用您最初的 docker run 命令，只需将末尾的镜像标签更改为新的版本号。sudo docker run -d \ -p 443:443 -p 80:80 -p 222:22 \ --name gitlab \ --restart always \ -v /home/gitlab/config:/etc/gitlab \ -v /home/gitlab/logs:/var/log/gitlab \ -v /home/gitlab/data:/var/opt/gitlab \ gitlab/gitlab-ce:17.11.7-ce.0第 5 步：监控与验证新容器启动后，GitLab 会在后台自动执行升级脚本（如数据库迁移）。这个过程可能需要几分钟。您可以通过以下命令实时查看日志：sudo docker logs -f gitlab当日志输出稳定，并出现服务正常运行的提示时，尝试通过浏览器访问您的 GitLab 实例，确认一切功能正常。Part 2: 解决网络难题 - 离线升级流程如果您在执行 docker pull 时遇到以下错误，说明您的服务器无法顺畅连接到 Docker Hub。Error response from daemon: Get "https://registry-1.docker.io/v2/": context deadline exceeded别担心，我们可以“曲线救国”，手动将镜像文件传输到服务器。方案 A：手动导入镜像（一次性解决）这个方案分为三步：下载 -> 传输 -> 加载。1. 在网络好的机器上下载并打包镜像您需要一台可以正常访问网络的电脑（Windows, macOS, Linux 均可），并安装了 Docker。首先，启动 Docker Desktop (Windows/macOS 用户)。这是新手最容易忘记的一步，请确保 Docker 引擎正在后台运行。然后，打开终端 (PowerShell, CMD, Terminal) 执行：# 1. 拉取你需要的镜像 docker pull gitlab/gitlab-ce:17.11.7-ce.0 # 2. 将镜像保存为 tar 文件 docker save -o gitlab-ce-17.11.7.tar gitlab/gitlab-ce:17.11.7-ce.0命令执行完毕后，当前目录下…

告别系统盘焦虑：将 Docker 数据目录迁移到大容量硬盘的终极指南
type: item
date: 2025-10-19T03:30:00+08:00
description: 本篇暂未验证，理论应该可行的！在现代服务器运维中，Docker 已经成为不可或缺的工具。但随之而来的一个甜蜜烦恼是：Docker 实在是太“能吃”了！镜像（Images）、卷（Volumes）、容器的可写层（Writable Layers），尤其是我们常常忽略的日志（Logs），都会默认堆积在 /var/lib/docker 目录下。对于使用高速但容量有限的 SSD 作为系统盘的服务器而言，这无异于一颗定时炸弹。当系统盘被占满时，整个系统的性能都会受到影响，甚至可能导致服务中断。那么，如何从根源上解决这个问题呢？答案就是：将整个 Docker 的“家”——数据根目录（data-root）——迁移到一块容量更大的数据盘（如机械硬盘 HDD）上。这篇博客将为你提供一个安全、详细、分步式的操作指南。迁移前的准备工作 (Prerequisites)在开始操作前，请确保你已经准备好以下条件：一台安装了 Docker 的 Linux 服务器。一块已经挂载好的大容量硬盘。在本教程中，我们假设你已经将其挂载到某个路径，我们将使用 /home/docker-data 作为 Docker 的新家。你可以根据自己的情况替换为 /mnt/data/docker 等其他路径。Sudo 或 Root 权限。一个维护窗口。本次操作需要短暂地停止 Docker 服务，所有容器将会停止运行。请务必在一个业务低峰期进行。迁移五步法：安全、高效地为 Docker 搬家我们将严格遵循“停服 -> 迁移 -> 改配置 -> 验证 -> 清理”的流程，并加入安全备份步骤，确保万无一失。第 1 步：停止 Docker 服务这是整个流程中最关键的第一步。必须在迁移文件前完全停止 Docker，以防止任何数据读写导致文件损坏或数据不一致。# 停止 Docker 服务 sudo systemctl stop docker.service # 同时停止 Docker 的 socket 监听 sudo systemctl stop docker.socket执行后，可以通过 systemctl status docker 确认 Docker 已经处于 inactive (dead) 状态。第 2 步：配置 Docker 的新家接下来，我们需要告诉 Docker，下次启动时应该去哪里寻找它的文件。这通过修改 Docker 的守护进程配置文件 daemon.json 来实现。打开（或创建）配置文件：sudo nano /etc/docker/daemon.json添加 data-root 配置：在文件中输入以下内容。如果你之前有其他配置（比如我们之前设置的日志轮转），请确保将 "data-root" 作为一个新的键值对添加进去，并保证整个文件是合法的 JSON 格式。{ "data-root": "/home/docker-data" }提示：如果已有其他配置，它可能看起来像这样：{ "data-root": "/home/docker-data", "log-driver": "json-file", "log-opts": { "max-size": "1g", "max-file": "10" } }第 3 步：执行迁移现在，我们将 /var/lib/docker 目录下的所有内容原封不动地搬到新家 /home/docker-data。在这里，我们强烈推荐使用 rsync 命令，而不是 cp 或 mv。为什么是 rsync？因为它能完美地保留所有文件的权限、所有权、时间戳等元数据，这对于 Docker 的正常运行至关重要。# 使用 rsync 进行归档式、带进度的迁移 # -a: 归档模式，等于 -rlptgoD，能保留所有文件属性 # -P: 显示进度（progress）并支持断点续传（partial） sudo rsync -aP /var/lib/docker/ /home/docker-data/根据你的数据量大小，这个过程可能需要几分钟到数小时不等，请耐心等待。第 4 步：启动并验证数据迁移完成后，激动人心的时刻到了。我们先不急着删除旧数据，而是先启动 Docker，验证它能否在新家正常工作。为了安全起见，先将旧目录重命名作为备份：sudo mv /var/lib/docker /var/lib/docker.old这一步是我们的“后悔药”。如果 Docker 启动失败，我们只需删除新配置，并将这个目录改回原名即可恢复。启动 Docker 服务：sudo systemctl start docker进行验证：验证一：检查 Docker 根目录。这是决定性的证据。docker info | grep "Docker Root Dir" 你应该看到如下输出，确认路径已经更改…

Docker “悬案”：一个 66G 的 GitLab 容器如何吃掉我的硬盘
type: item
date: 2025-10-19T03:21:00+08:00
description: 今天我想分享一个前几天遇到的真实案例：一个平平无奇的 Docker 容器，在几天之内悄无声息地“吃”掉了我服务器 66GB 的硬盘空间。如果你也遇到了类似 /var/lib/docker 目录异常庞大的问题，希望这篇文章能帮你快速定位并解决问题。案发现场：一切的开始 🕵️‍♂️故事的开头很简单，我通过 docker run 命令在服务器上部署了一个 GitLab-CE 社区版容器。命令如下：sudo docker run -d \ -p 443:443 -p 80:80 -p 222:22 \ --name gitlab \ --restart always \ -v /home/gitlab/config:/etc/gitlab \ -v /home/gitlab/logs:/var/log/gitlab \ -v /home/gitlab/data:/var/opt/gitlab \ gitlab/gitlab-ce:17.11.4-ce.0我明明已经将 GitLab 的三个核心数据目录 config, logs, data 都通过 -v 参数挂载到了机械盘的 /home/gitlab 目录下。然而，几天后，我收到了磁盘空间告警。使用 du 命令检查后，结果令我震惊：root@gbfwq:~# du -h --max-depth=1 /var/lib/docker ... 66G /var/lib/docker/containers 7.6G /var/lib/docker/overlay2 73G /var/lib/docker/var/lib/docker/containers 目录竟然占用了 66GB！这不科学，我的数据不是应该都在机械盘上吗？一场“硬盘空间失踪案”的侦破就此展开。侦破之路：一波三折的排查第一条线索：容器内部文件？我的第一反应是：是不是 GitLab 在容器内部的其他未挂载目录中写入了大量文件？我立刻 exec 进入容器内部进行调查：# 进入容器 docker exec -it gitlab bash # 在容器内检查根目录大小 root@69784fa27abc:/# du -h --max-depth=1 / ... 3.6G /opt 4.4G /var ... 8.2G /奇怪的事情发生了，容器内部所有目录加起来的总大小也才 8.2G，与宿主机上显示的 66G 相差甚远。这条线索断了。第二条线索：“幽灵文件”？熟悉 Linux 的朋友可能知道，如果一个进程打开了一个文件，然后这个文件被删除了，但进程的句柄（handle）没有关闭，那么文件的磁盘空间是不会被释放的。这种文件 du 是统计不到的，我称之为“幽灵文件”。最简单的验证方法就是重启容器，因为重启会杀死并重建所有进程，自然会释放所有文件句柄。docker restart gitlab然而，重启后再次检查，66G 的空间纹丝不动。这条线索也断了。峰回路转：find 命令立大功！之前的排查都陷入了僵局。我决定回到宿主机，不再去猜测，而是直接寻找那个“大家伙”。我决定使用 find 命令，在 /var/lib/docker/containers 目录里找出所有大于 1GB 的文件。sudo find /var/lib/docker/containers -type f -size +1G -exec ls -lh {} \;几秒钟后，真相浮出水面：-rw-r----- 1 root root 66G Oct 18 18:37 /var/lib/docker/containers/697.../697...-json.log破案了！ 元凶就是这个藏在容器目录深处的 -json.log 文件。这是 Docker 默认的容器日志文件。真相大白与解决方案问题的根源Docker 默认会捕获容器主进程的所有标准输出（stdout）和标准错误（stderr），并以 JSON 格式存储在一个日志文件中。关键在于，Docker 默认对这个日志文件的大小和数量没有任何限制！GitLab 是一个复杂的应用，内部有 Nginx、PostgreSQL、Redis、Puma 等多个服务，它们会持续不断地输出运行日志。日积月累，这个日志文件就长成了一个 66GB 的庞然大物。解决方案（分两步走）第 1 步：紧急止血 - 立即释放空间首先，我们需要把这个巨大的日志文件清空，把被占用的空间立刻拿回来。使用 truncate 命令是最高效的方式。🚨 警告：此操作会清空该容器的所有历史日志，请确认没有影响后再执行。# 将下面的长路径替换为你自己 find 命令找到的路径 sudo truncate -s 0 /var/lib/docker/containers/697.../697…

从宕机到扩容：ESXi中Ubuntu虚拟机“磁盘已满”实战救援全记录
type: item
date: 2025-10-19T03:13:00+08:00
description: 前言：恐慌的开端“周末的早晨，告警邮件如期而至。” —— 这恐怕是每个运维工程师的噩梦。当我尝试启动一台重要的 GitLab 虚拟机（运行在 ESXi 上的 Ubuntu Server）时，屏幕上滚动着熟悉的启动日志，最后却无情地停在了一行红色的 [FAILED] 上：[FAILED] Failed to start Create Volatile Files and Directories. see 'systemctl status systemd-tmpfiles-setup.service' for details. ... [FAILED] Failed to start Network Name Resolution. ...系统无法正常启动，服务全面中断。这就是我们今天故事的开始：一次由磁盘空间耗尽引发的“血案”，以及一次从紧急救援到彻底根治的全过程记录。Part 1：紧急救援 - 在只读的世界里杀出一条血路systemd-tmpfiles-setup.service 失败通常指向一个根本原因：根分区 (/) 被 100% 占满了。系统连创建临时文件的空间都没有，后续所有服务自然接连崩溃。我们的首要目标是进入系统，清理出哪怕只有几百MB的空间，让系统能成功启动。进入恢复模式：重启虚拟机，在 GRUB 菜单选择 "Advanced options for Ubuntu"，然后进入 "Recovery mode"。获取读写权限的 Shell：在恢复菜单中，选择 root (Drop to root shell prompt)。此时你会进入一个命令行，但注意，文件系统默认是只读 (read-only) 的。必须执行以下命令，将其重新挂载为可读写，否则任何删除操作都会失败：mount -o remount,rw /定位并清理空间：现在，我们可以开始“瘦身”了。确认病因：df -h 果不其然，根分区 / 的 Use% 显示为 100%。分析元凶：通过 du -h --max-depth=1 /var | sort -rh 逐层分析，我们很快定位到 /var/lib/docker (47G) 和 /var/lib/snapd (3.9G) 是两大元凶。安全清理：清理 Docker：Docker 提供了安全清理的命令，它只会删除未被使用的资源，不会影响正在运行的服务。# 清理所有未使用的容器、网络、镜像和构建缓存 docker system prune - **清理 Snap**：Snap 会保留旧版本的包，非常占用空间。以下脚本可以安全地删除所有被禁用的旧版本： snap list --all | awk '/disabled/{print $1, $3}' | while read snapname revision; do snap remove "$snapname" --revision="$revision"; done经过这两步，我们成功释放了数GB的空间。此时，执行 reboot，虚拟机终于正常启动了！Part 2：防患未然 - 在扩容前备份一切系统虽然恢复了，但治标不治本。为了彻底解决问题，我们决定扩容磁盘。但在进行这种“高危操作”之前，备份是雷打不动的铁律。幸运的是，这台 GitLab 是通过 Docker 数据卷部署的，所有数据都映射在主机的 /mnt/gitlabdata 目录下。我们使用 tar 命令进行打包，但有一个技巧：必须将生成的备份包自身从打包范围中排除，否则会陷入无限循环。# -C 参数先切换到目标目录，避免打包时带有绝对路径 # --exclude 参数排除了备份文件自身 sudo tar --exclude='gitlab-backup-*.tar.gz' \ -czvf /mnt/gitlabdata/gitlab-backup-$(date +%F).tar.gz \ -C /mnt/gitlabdata .执行完毕后，一个以日期命名、包含所有数据的完整备份包静静地躺在了 /mnt/gitlabdata 目录中。我们心中大定。Part 3：核心操作 - 扩容硬盘并让系统识别扩容分为两步：在 ESXi 层面扩大虚拟磁盘，然后在 Ubuntu 系统内部让分区和文件系统识别到新空间。1. ESXi层面：搞定“快照”拦路虎关机并尝试扩容：我们先关闭虚拟机，在 ESXi 的“编辑设置”中尝试将硬盘从 60GB 改为 160GB。遭遇报错：“设备‘3’的操作无效”。这是一个经典错误，99% 的原因是虚拟机存在快照。ESXi 不允许在有快照的情况下修改虚拟磁盘的结构。解决：右键虚拟机 -> 快照 -> 快照管理器，点击 “全部删除”。注意，这里的“删除”实际上是将快照数据合并回主磁盘，会保留所有数…

大模型Prompt技巧全解析
type: item
date: 2025-10-13T03:42:00+08:00
description: 本文转载自互联网，已在文末注明来源。第一节：Prompt定义及基本框架一、 什么是Prompt大模型 prompt 指在大语言模型应用中，用于 “提示” 模型唤起特定能力以解决实际问题的提问方式。早期它被称作 “输入形式” 或 “输入模板”，后来 “prompt”（提示）这一叫法因契合大语言模型语境，能准确体现其在调用模型能力方面的关键作用，成为公认术语。大模型多数核心能力在预训练阶段形成，prompt 就像钥匙，引导模型从预训练积累的海量信息中，精准唤起如理解复杂文本、总结信息、生成内容、逻辑推理等能力，满足用户实际需求。它并非把模型当作单纯知识库，而是高效调用其能力，实现类似人类运用智能解决复杂问题的效果，是 prompt 工程的核心，对用好大语言模型意义重大。二、 撰写Prompt的基本框架1、Prompt包含的要素● 指令：想要模型执行的特定任务或指令。● 上下文：包含外部信息或额外的上下文信息，引导语言模型更好地响应。● 输入数据：用户输入的内容或问题。● 输出指示：指定输出的类型或格式。2、Prompt五大框架2.1 RTF框架RTF框架是一个非常简单通用的Prompt提示框架，我们和任意大模型对话场景下都可以使用该规范进行改进输出。● R-Role角色：指定大模型担当固定角色程序员、数据分析师、讲解员、记者等等● T-Task任务: 任务，告诉大模型需要为我们做的事情● F-Format格式：大模型最终结果的返回格式比如：表格、、英文等等主要优点：● 简单、方便。● 指定Role角色，可以让大模型在当前的角色范围内回答知识，这在一些特定的领域中非常有效。● 指定Role角色也能让工程上检索知识能够确定边界范围，配合元数据所发挥的威力会更强。● 如果结合RAG知识内容检索，那么上下文回答的内容会让用户感觉更加是顺畅。2.2 思考链模式通过这种模式来逐步改善大模型的推理能力，非常适合一些复杂的任务处理。例如：● 分析型或者逻辑推理型的任务● 决策● 解决问题比如程序员根据错误日志找而要使用这种模式，只需要在末尾添加”让我们逐步思考”即可。例如：# 数据源（与指令区分） user_datasource = """XXX……""" prompt1 = """分析一下在人工客服服务场景下，'''{user_datasource}'''中客户有哪些诉求。用一句话概括。""" prompt2 = """分析一下在人工客服服务场景下，'''{user_datasource}'''中客户有哪些诉求。用一句话概括。让我们逐步思考。""" # 模型输出结果 output1：在人工客服服务场景下，客户主要诉求为：微信账号存在安全风险导致无法添加好友、单点拦截、下载安装微信出现问题等，寻求客服协助解决问题。 output2：在人工客服服务场景下，客户主要诉求为：微信账号存在安全风险导致无法添加好友，以及因违规行为被限制登录，客户希望客服能够尽快处理这些问题。 # 分析结果 output1中的”单点拦截”并不是用户的诉求，而output2显然更加正确Python复制2.3 RISEN框架● R-Role:大模型扮演的角色● I-Instructions: 指示命令，和Task-任务差不多● S-Steps: 步骤● E-End Goal: 最终目标● N-Narrowing: 缩小范围约束条件，和RTF框架中的Format有异曲同工之妙，一个是格式的约束，而这里的约束可以是任意方面，比如回答的内容特定领域、字数限制等等方面该框架主要适合：● 撰写具有特定约束的任务例如博客文章● 有明确指导方针的任务（例如商业计划）2.4 RODES框架● R-Role: 角色● O - Objective: 目标● D - Details: 详细的细节● E - Examples: 示例● S - Sense Check: 感官检查2.5 密度链模式密度链模式Prompt是Salesforce、麻省理工学院和哥伦比亚大学的研究人员推出的一种新提示，它非常的高效，使用递归来创建越来越好的输出的提示，与普通提示生成的 GPT-4 摘要相比，它生成的摘要更加密集且更适合人们理解。适合：● 总结● 改进您最喜欢的提示● 通过递归生成可用的长格式内容感兴趣的同学可以自己检索一下第二节：打造高效Prompt的两大核心原则在Prompt工程领域，掌握精妙的撰写策略是释放语言模型强大潜力的关键。本节将深入探讨prompt撰写的两大核心策略，为您揭示如何通过优化指令，引导模型生成更贴合需求、更具质量的输出。一、原则一：编写明确和具体的指令为了让模型精准理解我们的意图，编写清晰、明确且具体的指令至关重要。这不仅能避免模型产生误解，还能显著提升输出结果的相关性和准确性。策略1：…

科技最前沿
type: item
date: 2025-10-13T03:09:00+08:00
description: 本文转载自互联网，已在文末注明来源。文档描述本文记录了一些技术教程及前沿科技相关信息建议在 PC 端打开博客文章，可显示目录（TOC）01. 大语言模型卷国产主流 LLM：DeepSeek、Kimi、腾讯元宝、豆包、通义千问、天工AI、智谱清言、文心一言国外主流 LLM：Microsoft Copilot、ChatGPT、Claude、Gemini、Grok、Llama [CN]免魔法使用 ChatGPT：RawChat、SharedChat、ChatK [G] [O]支持多个 AI 模型的平台：Poe、Vercel、Coze、在问耕读：收集免费使用 ChatGPT-4o、Gemini Pro 等 AI 服务的列表更多替代方案见：[1] [2] [3] [4]DeepSeek 免费 API：火山方舟、阿里云百炼、魔塔社区、SiliconFlow、Serverless APICursor：集成了 LLM 的类 vscode 的 AI 辅助编程助手 [免费续杯]，同类的 Trae 简洁易懂好上手AI 写作助手：帮助用户组织写作风格提示词，并通过 LLM 生成高质量内容02. 图像处理AI集Gemini 2.0 Flash：上传图片，输入指令，让 AI 帮你 PS2.1 开箱即用可以直接上手的在线 or 离线生成式 AI 工具Recraft：通过文本描述生成位图（Raster）与矢量图（Vector），可上传图像自定义风格；同时支持生成式填充、去除/改变背景、区域消除、图形拼接等IOPaint：擦除、修改/替换、添加新对象、图形补全（外画）等，可离线使用Clipdrop：Stable Diffusion 旗下工具，支持文字生成图像、生成式填充、图像补全、背景移除、对象消除、草图转真实图等Microsoft Designer：支持以文生图、去除背景、消除对象、改变图像风格等Adobe Firefly：文字生成图像、生成式填充、生成矢量图、重新着色等 [去水印]Image-fx：Google 的以文生图模型2.2 以文生图获取 AI 模型整合包：@秋葉aaaki、@万能君的软件库结合手绘内容以文生图：Dynamic、ImgPilot、Drawfast （基于LCM模型）Flux.1：Stable Diffusion 原始团队推出的文生图模型套件（效果远超 SD 3 及 MJ v6）[1] [2]Fooocus：AI 画图工具，结合了 Stable Diffusion 和 Midjourney 的优点，开箱即用Invoke AI：用于 Stable Diffusion 等模型的AI绘画可视化工具 [52]2.3 P图的 AIAI 抠图模型：U2-Net、飞桨、ReplaceAnything、Background Remover、PBRem Tool、Transparent BackgroundIOPaint：全能图像工具箱，支持图像消除、对象替换、文字绘制和图像扩展等 [52]AnyText：在图像中修改或生成高度融合的文本DeepMosaics：自动去除图像和视频中的马赛克，同时支持添加马赛克Edit Anything：编辑和生成图像中的任何内容LiYing：证件照后期自动处理程序，可以完成人体、人脸自动识别，角度自动纠正，自动更换任意背景色，任意尺寸证件照自动裁切，并自动排版HivisionIDPhotos：轻量级证件照AI，支持抠图、生成不同尺寸的标准证件照、六寸排版照、美颜、智能换正装Text Behind Image：在图像主体背后添加文本2.4 大厂专区腾讯ARC（Applied Research Center）GFPGAN：老照片人脸修复、着色PhotoMaker：基于上传的人像生成各种风格的逼真照片T2I-Adapter：基于手绘内容与文本描述生成图片03. 音视频模型区3.1 直接上手国内团队自研打造的文生视频、文生图大模型：即梦、可灵、通义万象、腾讯混元文生视频Pi：用英文母语者的口音与你聊天的 AI （练习英语听力）MagicMirror：一键 AI 换脸、发型、穿搭3.2 视频换脸视频AI换脸：DeepFaceLab[中文论坛]、DeepFaceLive、RopeDeep-Live-Cam：只需要一张图片就可以将视频中的人脸实时（直播可用）替换成目标人脸AniTalker：通过音频和静态人像生成逼真的说话视频 [MyVoiceYourFace]SadTalker-Video-Lip-Sync：为视频人像生成流畅、真实、自然的唇形3.3 音声合成DiffSinger：堪比真人的歌声合成模型 [AI本兮]AI音色克隆：GPT-SoVITS [介绍]、RVC-WebUI、AI歌曲生成：Suno[Bark]、Uido、St…