运维123 - 技术教程
type: channel
link: https://www.sddts.cn/index.php/category/%E6%8A%80%E6%9C%AF%E6%95%99%E7%A8%8B/
description: 技术教程
items: 为豪华汽车修理店构建 AI 接待员
items: 构建可靠的本地化Home Assistant语音助手
items: CLI-Anything：让所有软件成为 AI Agent 原生工具
items: Debian 下 Node.js 安装指南
items: AI 时代 Vibe Coding 三大保命符：原子化、互解耦、可回滚
items: OpenClaw + CherryIN 零基础保姆级教程
items: Linux 用户活动监控工具 psacct 与 acct 使用教程
items: Clawdbot 在 DigitalOcean 部署指南
items: 智谱AI HTTP API 调用教程
items: 荷兰沃达丰eSIM保号卡全攻略

为豪华汽车修理店构建 AI 接待员
type: item
date: 2026-03-24T00:13:42+00:00
description: 为豪华汽车修理店构建 AI 接待员一、概述1. 简介A. 是什么这是一个为豪华汽车修理店定制的 AI 语音接待员系统，名为 Axle。它能够接听电话、回答价格和服务相关问题、记录回访请求，帮助店主挽回因漏接电话造成的业务损失。B. 为什么学展示 RAG（检索增强生成）在实际业务中的应用演示如何将 LLM 与语音通信集成了解 AI Agent 的完整开发流程学习向量搜索和知识库构建的最佳实践C. 学完能做什么使用 MongoDB Atlas 构建向量知识库集成 Vapi 实现语音 AI 代理使用 Claude 构建基于知识库的问答系统设计企业级 AI 应用的升级路径二、项目背景1. 业务问题Dane 经营一家豪华汽车修理店，每天因在车底下工作而漏接数百个电话。每个未接电话都意味着潜在的收入损失：从 45 美元的刹车服务到 2000 美元的发动机维修。客户电话无人接听时，会转向其他服务商。2. 解决方案概述构建一个名为 Axle 的 AI 接待员，具备以下能力：24/7 接听电话准确回答价格和服务问题了解营业时间、政策等业务信息在无法回答时收集回访信息graph LR A[客户来电] --> B[Vapi 语音平台] B --> C[FastAPI Webhook] C --> D[MongoDB Atlas 向量搜索] D --> E[检索相关文档] E --> F[Anthropic Claude] F --> G[生成回复] G --> C C --> B B --> H[语音播放给客户]三、技术栈1. 核心组件组件用途说明Vapi语音平台电话号码、语音识别/合成、工具调用Deepgram语音转文字集成于 VapiElevenLabs文字转语音集成于 VapiFastAPI + UvicornWebhook 服务处理 Vapi 回调请求MongoDB Atlas数据存储知识库、向量搜索、通话记录Voyage AI文本嵌入voyage-3-large 模型Anthropic Claude响应生成claude-sonnet-4-6Ngrok隧道服务本地开发时暴露公网地址Copilot CLIAI 辅助开发代码生成工具2. 为什么选择这套技术栈Vapi：一站式语音解决方案，无需单独处理电信复杂性MongoDB Atlas：原生向量搜索，知识库和通话记录统一存储Voyage AI：高质量的语义嵌入，适合专业领域知识Claude：优秀的指令遵循能力，减少幻觉问题四、实施步骤1. 步骤一：构建大脑（RAG 管道）A. 知识库准备抓取修理店网站数据，提取以下信息：服务类型和定价（21+ 份文档）营业时间支付方式取消政策质保信息代步车服务擅长的汽车品牌B. 向量化存储使用 Voyage AI 将每个文档转换为 1024 维向量：# 示例：文档向量化 import voyageai voyage_client = voyageai.Client(api_key="your_key") document = "刹车服务：450美元，包含前后刹车片更换..." embedding = voyage_client.embed( [document], model="voyage-3-large" )C. 检索流程graph TD A[用户提问] --> B[使用 Voyage AI 嵌入查询] B --> C[MongoDB Atlas 向量搜索] C --> D[返回前3个最相关文档] D --> E[传递给 Claude + 严格系统提示] E --> F{是否包含答案?} F -->|是| G[生成简洁对话回复] F -->|否| H[请求回访信息] G --> I[返回答案] H --> J[保存到 callbacks 集合]D. 系统提示设计关键原则：仅从知识库回答保持简短对话风格不知道时明确说明禁止幻觉五、步骤二：连接真实电话号码1. FastAPI Webhook 服务器from fastapi import FastAPI, Request from pymongo import MongoClient app = FastAPI() @app.post("/webhook") async def handle_call(request: Request): data = await request.json() # 提取用户查询 query = data.get("message", "") # 调用 RAG 管道 response = rag_pipeline(query) # 记录到 MongoDB client = MongoClient("mongodb+srv://...") db = client["mechanic_…

构建可靠的本地化Home Assistant语音助手
type: item
date: 2026-03-16T21:47:03+00:00
description: 构建可靠的本地化 Home Assistant 语音助手一、概述1. 简介A. 是什么本文介绍如何从 Google Home/Nest Mini 迁移到完全本地化的 Home Assistant 语音助手（Assist），使用 local-first 架构配合 llama.cpp（此前使用 Ollama）实现本地运行。B. 为什么学Google Assistant 逐渐变笨，无法满足日常需求隐私担忧：家中在线麦克风可能泄露隐私网络依赖：云服务宕机时无法控制家中设备完全本地化运行，无需依赖外部服务C. 学完能做什么搭建完全本地化的语音助手系统实现天气查询、地点搜索、音乐播放等功能自定义唤醒词和语音模型通过本地大模型实现自然对话二、硬件准备1. 语音设备1 台 HA Voice Preview Edition2 台 Satellite1 Small Squircle Enclosures1 台 Pixel 7a 作为卫星设备/Hub（搭配 View Assist）2. 语音服务器硬件Beelink MiniPC（支持 USB4）USB4 eGPU 外接显卡盒3. 显卡选择GPU模型类别响应时间（提示缓存后）备注RTX 3090 24GB20B-30B MoE, 9B Dense1 - 2 秒高效运行此架构最优模型RX 7900XTX 24GB20B-30B MoE, 9B Dense1 - 2 秒高效运行此架构最优模型RTX 5060Ti 16GB20B MoE, 9B Dense1.5 - 3 秒响应时间 < 3 秒RX 9060XT 16GB20B MoE, 9B Dense1.5 - 4 秒响应时间 < 4 秒RTX 3050 8GB4B Dense3 秒适合运行基础功能的小模型4. 模型选择模型多设备工具调用理解上下文线索解析误听指令忽略误激活文本GGML GPT-OSS:20B MXFP4支持支持支持支持Unsloth Qwen3.5-35B-A3B MXFP4_MOE支持一般一般支持Unsloth Qwen3-VL:8B-Instruct Q6_K_XL支持支持一般一般Unsloth Qwen3-30B-A3B-Instruct Q4_K_XL支持一般不支持一般Unsloth GLM 4.7 Flash (30B) Q4_K_XL一般支持不支持一般Unsloth Qwen3:4b-Instruct 2507 Q6_K_XL一般不支持不支持不支持功能说明：多设备工具调用：处理如打开风扇并关闭灯光的复合指令理解上下文线索：在特定区域时，若该区域只有一个设备则不询问，多个时正确询问解析误听指令：能够处理误听指令（如打开 pan）并正确执行意图指令忽略误激活文本：可靠忽略不需要的输入，不受误听文本负面影响三、系统架构1. 整体架构graph LR A[用户] --> B[Home Assistant Assist] B --> C[语音卫星设备] C -->|麦克风输入| B B --> D[语音转文本] B --> E[大模型推理] B --> F[文本转语音] D -->|转录文本| B E -->|对话生成| B B -->|音频输出| C2. 组件说明Home Assistant：核心控制平台语音卫星设备：麦克风和扬声器终端语音转文本：Wyoming ONNX ASR（Nvidia Parakeet V2）大模型推理：llama.cpp 运行本地模型文本转语音：Kokoro TTS 或 Piper四、软件配置1. 模型运行器推荐使用 llama.cpp 以获得最佳性能。2. 语音转文本软件模型备注Wyoming ONNX ASRNvidia Parakeet V2通过 OpenVINO 分支运行，CPU 推理时间优化至约 0.3 秒Rhasspy Faster WhisperNvidia Parakeet V2直接通过 ONNX CPU 运行，速度较慢3. 文本转语音软件备注Kokoro TTS可混合多种声音/语调，处理所有文本Piper (CPU 运行)有多种声音可选，处理一般文本，但处理货币、电话号码和地址有困难4. Home Assistant LLM 集成LLM Conversation：改进基础对话体验LLM Intents：提供额外工具（Web 搜索、地点搜索、天气预报）五、配置步骤1. 初始设置从 Ollama 内置模型开始测试，每隔几周连接 Ollama 到 Home Assistant。2. 模型选择从 HuggingFace 获取 GGUF 模型选择更高量化的模型（如 MXFP4）避免使用默认 Q4_K 低量化模型3. 提示词优化A. 提示词结构为每个服务使用专门的 # 章节使用项目符号列出详细说明…

CLI-Anything：让所有软件成为 AI Agent 原生工具
type: item
date: 2026-03-12T08:18:09+00:00
description: CLI-Anything：让所有软件成为 AI Agent 原生工具一、概述1. 简介A. 是什么CLI-Anything 是一个 Claude Code 插件，能够将任何软件自动转换为 AI Agent 可控制的命令行工具。通过一条命令，它可以为 GIMP、Blender、LibreOffice 等应用生成功能完整的 CLI 接口，让 AI Agent 获得直接控制专业软件的能力。B. 为什么学解决 AI Agent 使用软件难题：当前 AI Agent 虽然推理能力强，但难以使用真实的专业软件统一接口范式：CLI 是 AI Agent 的理想接口，结构化、可组合、自描述自动化生成：无需手动编写代码，自动分析软件架构并生成 CLI生产级质量：1,508 个测试用例验证，覆盖 11 个主流应用C. 学完能做什么为任何软件自动生成 CLI，让 AI Agent 可以控制理解 7 阶段自动化流水线的工作原理部署和使用生成的 CLI 工具通过 refine 命令迭代改进 CLI 覆盖率2. 前置知识A. 必备技能Python 3.10+ 基础基本的命令行操作经验理解 AI Agent 的基本概念B. 推荐知识Click 框架（Python CLI 工具）pytest 测试框架Claude Code 使用经验二、环境准备1. 系统要求Python 3.10 或更高版本目标软件已安装（如 GIMP、Blender 等）Claude Code 或其他支持的 AI 编码代理2. 安装步骤Claude Code 平台安装：# 添加 CLI-Anything 市场 /plugin marketplace add HKUDS/CLI-Anything # 安装插件 /plugin install cli-anything手动安装（可选）：# 克隆仓库 git clone https://github.com/HKUDS/CLI-Anything.git # 复制插件到 Claude Code 插件目录 cp -r CLI-Anything/cli-anything-plugin ~/.claude/plugins/cli-anything # 重新加载插件 /reload-plugins3. 验证安装安装完成后，在 Claude Code 会话中输入：/cli-anything:cli-anything --help三、核心概念1. 基本术语Agent-Native（Agent 原生）：专为 AI Agent 设计的接口，支持结构化输入输出Harness（工具套件）：为特定软件生成的完整 CLI 包REPL（交互式解释器）：命令行交互模式，支持状态持久化7-Phase Pipeline：从分析到发布的自动化流程2. 工作原理CLI-Anything 通过自动化流程分析软件源码，理解其功能架构，然后生成标准的命令行接口。生成的 CLI 直接调用真实软件的后端，确保功能完整性。graph TB A[软件源码/仓库] --> B[分析阶段] B --> C[设计阶段] C --> D[实现阶段] D --> E[测试规划] E --> F[测试编写] F --> G[文档更新] G --> H[发布安装] subgraph 生成产物 I[Click CLI] J[REPL 界面] K[JSON 输出] L[测试套件] end D --> I D --> J D --> K F --> L3. 架构设计graph LR A[AI Agent] -->|命令| B[CLI-Anything 生成的 CLI] B -->|调用| C[真实软件后端] C -->|渲染/处理| D[输出文件] B -->|JSON 输出| A B -->|人类可读| E[终端输出] subgraph CLI-Anything 核心 F[分析引擎] G[代码生成器] H[测试框架] end F --> G G --> H四、快速上手1. Hello World 示例生成第一个 CLI 工具：# 为本地 GIMP 源码生成完整 CLI（所有 7 个阶段） /cli-anything:cli-anything ./gimp2. 核心功能演示# 从 GitHub 仓库生成 /cli-anything:cli-anything https://github.com/blender/blender3. 代码讲解上述命令会自动执行以下流程：第 1 阶段：分析扫描源代码，映射 GUI 操作到 API第 2 阶段：设计架构命令组、状态模型、输出格式第 3 阶段：实现构建 Click CLI，包含 REPL、JSON 输出、撤销/重做功能第 4 阶段：测试规划创建 TEST.md，包含单元测试和端…

Debian 下 Node.js 安装指南
type: item
date: 2026-03-09T01:37:53+00:00
description: Debian 下 Node.js 安装指南一、概述1. 简介A. 是什么Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境，它使 JavaScript 可以在服务器端运行。npm (Node Package Manager) 是 Node.js 的默认包管理器，用于安装和管理 JavaScript 依赖包。B. 为什么学使用 JavaScript 进行全栈开发丰富的 npm 生态系统高性能的 I/O 处理能力适合构建实时应用和 API 服务C. 学完能做什么运行 Node.js 应用程序使用 npm 管理项目依赖开发 Web 服务器和 API使用 nvm 管理多个 Node.js 版本2. 前置知识A. 必备技能基本 Linux 命令行操作了解包管理器概念（apt、npm）B. 推荐知识JavaScript 基础语法终端环境变量配置二、环境准备1. 系统要求Linux：Debian 11+ / Ubuntu 18.04+ / CentOS 7+macOS：10.15+Windows：10/112. 安装方式对比安装方式优点缺点推荐场景nvm (Node Version Manager)版本管理灵活、无需 sudo、多版本共存需要额外工具✅ 推荐，开发环境NodeSource 仓库官方源、版本较新需要 sudo、权限限制生产环境系统自带仓库安装简单、版本稳定版本较旧测试环境3. 安装步骤检查当前状态node --version cat /etc/os-release使用 nvm 安装（推荐）安装 nvm：unset NVM_DIR && curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash加载 nvm 环境变量export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"安装 Node.js LTS 版本nvm install --lts3. 验证安装node --version npm --version预期输出：v24.14.0 11.9.0三、核心概念1. 基本术语Node.js：JavaScript 运行时环境npm：Node Package Manager，包管理器LTS：Long Term Support，长期支持版本nvm：Node Version Manager，版本管理工具2. 工作原理graph LR A[开发者] -->|编写 JS 代码| B[nvm] B -->|管理多个版本| C[Node.js] C -->|V8 引擎| D[执行 JS] B -->|npm| E[包管理] E -->|下载依赖| F[node_modules] F -->|导入使用| C3. 版本管理graph TB subgraph Node.js 版本 A[LTS - 稳定版] B[Current - 最新版] end subgraph nvm 管理 C[nvm install --lts] D[nvm install latest] E[nvm use <version>] end A -.推荐.-> C B -.尝鲜.-> D C --> E D --> E E --> F[切换成功]四、快速上手1. Hello World 示例创建 test.js：console.log('Hello, Node.js!');运行：node test.js2. 使用 npm 初始化项目mkdir myapp && cd myapp npm init -y npm install express3. 创建简单的 Web 服务器const http = require('http'); const server = http.createServer((req, res) => { res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('Hello World\n'); }); server.listen(3000);五、nvm 高级用法1. 常用命令nvm ls # 列出已安装版本 nvm install 18.20.0 # 安装特定版本 nvm use 18.20.0 # 切换到指定版本 nvm alias default 18.20.0 # 设置默认版本 nvm uninstall 18.20.0 # 卸载版本 nvm current # 显示当前版本2. 版本切换场景不同项目可能需要不同 Node.js 版本，使用 nvm 可以轻松切…

AI 时代 Vibe Coding 三大保命符：原子化、互解耦、可回滚
type: item
date: 2026-02-01T22:40:39+00:00
description: AI 时代 Vibe Coding 三大保命符一、概述1. 背景AI 编程工具（如 Claude Code、Cursor 等）的普及带来了开发效率的革命性提升，但也引入了新的风险。AI 可能一次性修改大量代码，如果缺乏正确的开发策略，可能导致难以挽回的损失。本文总结 AI 时代 Vibe Coding 的三大保命符：原子化、互解耦、可回滚。2. 核心原则步子迈小（原子化）各管各的（互解耦）随时后悔（可回滚）二、原子化 (Atomic)1. 定义事情一件一件做，别贪多。每次只完成一个最小的可验证单元。2. 形象比喻就像玩游戏"存盘"。非原子化（错误示范）你一口气玩了 10 个关卡，打赢了 3 个 BOSS，捡了一堆装备，中间一次都没存盘。结果在最后一步如果不小心死机了，你之前的努力全白费，得从头再来。原子化（正确做法）打完一个小怪，存个盘；捡到一个宝箱，存个盘。每次只做一个小动作就确认一下。这样就算出错了，你只损失最近这几分钟的进度，而不是一下午的心血。3. 代码实践graph LR A[开始] --> B[任务分解] B --> C1[子任务1] C1 --> D1[完成并提交] D1 --> C2[子任务2] C2 --> D2[完成并提交] D2 --> C3[子任务3] C3 --> D3[完成并提交] D3 --> E[结束] style D1 fill:#90EE90 style D2 fill:#90EE90 style D3 fill:#90EE90错误做法：让 AI 一次性"改登录功能 + 换背景颜色 + 优化数据库"正确做法：让 AI"改登录"，确认没问题后，git commit再让 AI"换背景"，确认没问题后，git commit最后让 AI"优化数据库"，确认没问题后，git commit4. Git 原子化提交# 每完成一个小功能就提交一次 git add src/auth/login.py git commit -m "fix: 修复登录密码验证逻辑" # 继续下一个功能 git add src/styles/background.css git commit -m "feat: 更新页面背景颜色"三、互解耦 (Decoupled)1. 定义各管各的，谁也别挨着谁。模块之间应该保持独立，互不影响。2. 形象比喻就像家里的电路系统。未解耦（错误示范）你家客厅的灯坏了，结果连着厨房的冰箱、厕所的马桶、卧室的空调全都断电罢工了。这就是"纠缠不清"。已解耦（正确做法）客厅灯坏了就只是客厅灯不亮，厨房依然能做饭，厕所依然能冲水。每个房间的电路是独立的，互不影响。3. 代码实践graph TB subgraph 未解耦系统 A[用户头像功能] <--> B[支付系统] B <--> C[评论功能] C <--> A end subgraph 已解耦系统 D[用户服务] -.独立.-> E[支付服务] E -.独立.-> F[评论服务] F -.独立.-> D end style A fill:#FFB6C6 style B fill:#FFB6C6 style C fill:#FFB6C6 style D fill:#90EE90 style E fill:#90EE90 style F fill:#90EE90错误场景：AI 修改了"用户头像"的功能，导致"支付系统"崩溃正确架构：用户服务：独立管理用户信息和头像支付服务：独立处理支付逻辑两个服务通过 API 通信，一个挂了不影响另一个4. 解耦实践要点模块化设计：每个功能模块职责单一接口隔离：通过明确的接口通信，避免直接依赖依赖注入：使用依赖注入降低耦合度事件驱动：使用消息队列实现异步解耦四、可回滚 (Rollback)1. 定义世上真有后悔药。当出现问题时，能够快速恢复到之前的工作状态。2. 形象比喻就像文档里的"撤销 (Ctrl+Z)"。不可回滚（错误示范）你在纸上用油性笔画画，画错了就是画错了，涂不掉，只能把纸撕了重画。可回滚（正确做法）你在电脑上画画，画错了一笔？点一下"撤销"，马上回到画错之前的样子，就像什么都没发生过。3. 代码实践graph LR A[当前版本 v1.3] -->|AI 改坏了| B[崩溃版本 v1.4-broken] B -->|git reset| A A -->|重新修改| C[修复版本 v1.4-fixed] style B fill:#FFB6C6 style A fill:#FFD700 style C fill:#90EE90核心工具：Git 版本管理# 查看提交历史 git log --oneline # 回滚到上一个稳定版本 git reset --hard HEAD~1 # 或者创建新分支回滚 git che…

OpenClaw + CherryIN 零基础保姆级教程
type: item
date: 2026-01-31T08:45:13+00:00
description: OpenClaw + CherryIN 零基础保姆级教程一、概述1. 简介A. 是什么OpenClaw 是一个开源的 AI Agent 框架，可以让 AI 模型控制电脑执行各种任务，包括写代码、操作文件、执行命令等。CherryIN 是一个 AI 模型聚合平台，提供多家大模型的统一接入服务。B. 为什么学OpenClaw 开源一周 Stars 数已超过 12 万，生态活跃CherryIN 聚合多家模型，包括 DeepSeek v3.2、Kimi K2.5 等最新模型打造专属 AI Agent，彻底解放生产力C. 学完能做什么独立配置 OpenClaw + CherryIN 环境使用 AI Agent 自动化执行电脑操作任务切换使用多种 AI 模型完成不同场景需求2. 前置知识A. 必备技能基本命令行操作能力了解 JSON 配置文件格式B. 推荐知识虚拟机基础概念（推荐在虚拟机中测试）Node.js 和 npm 基础二、环境准备1. 系统要求操作系统：Windows / macOS / Linux网络环境：稳定的互联网连接Node.js：22 以上版本（推荐 24）时间：约 20 分钟2. 安装 Node.jsmacOS / Linux 用户推荐使用 nvm 安装：# 下载并安装 nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash # 加载 nvm（避免重启终端） \. "$HOME/.nvm/nvm.sh" # 安装 Node.js 24 nvm install 24 # 验证安装 node -v npm -vWindows 用户推荐使用 WSL 环境，或直接下载 Node.js 安装包。3. 安装 OpenClawNode.js 装好后，一行命令搞定：npm install -g openclaw@latest或使用 pnpm：pnpm add -g openclaw@latest4. 验证安装node -v openclaw --version能正常显示版本号即说明安装成功。三、核心概念1. 基本术语OpenClaw：AI Agent 框架，提供模型调用和电脑控制能力CherryIN：AI 模型聚合平台，提供统一 API 接口Provider：模型供应商，CherryIN 是其中一个供应商Agent：智能代理，可以理解并执行用户指令2. 工作原理graph LR A[用户] --> B[OpenClaw] B --> C{模型路由} C --> D[CherryIN] D --> E[各大模型] E --> D D --> B B --> F[电脑操作] F --> G[文件/命令/应用]3. 架构图OpenClaw 采用插件化架构，支持多种模型供应商：配置文件：~/.openclaw/openclaw.jsonWebUI：浏览器界面交互Daemon：后台服务进程四、快速上手1. 初始化 OpenClaw执行初始化命令：openclaw onboard --install-daemon安装完成后会自动弹出配置页面。如果没有弹出，可手动执行：openclaw onboard2. 安全风险确认因为 OpenClaw 可以控制电脑，会有安全提示。接受即可。强烈建议：在虚拟机中使用，避免影响主力机。3. 配置向导步骤A. 跳过 Provider 设置暂时不设置 Provider，后续通过配置文件接入 CherryIN。B. 跳过通知设置IM 通知需要额外配置，先确保基础功能可用。C. 选择 WebUI 模式选择 WebUI 模式，方便在浏览器中操作。D. 成功标志控制台输出访问地址，如 http://localhost:30004. 注册 CherryIN访问 CherryIN 官网：https://open.cherryin.ai/建议：使用邮箱登录，比 GitHub 登录更稳定。充值后可体验全部模型，包括免费的 DeepSeek v3.2 和各家最新模型。5. 获取 API 令牌A. 创建令牌进入「令牌管理」，创建新令牌，如 Openclaw-AgentB. 复制令牌保存 sk- 开头的令牌，后续配置需要使用五、配置模型接入1. 找到配置文件OpenClaw 配置文件路径：~/.openclaw/openclaw.json~ 表示用户主目录：Linux：/home/用户名macOS：/Users/用户名Windows：C:\Users\用户名2. 添加 CherryIN 配置打开配置文件，添加以下内容（替换 sk-xxxxx 为自己的令牌）：{ "models": { "mode": "merge", "prov…

Linux 用户活动监控工具 psacct 与 acct 使用教程
type: item
date: 2026-01-26T21:52:05+00:00
description: Linux 用户活动监控工具 psacct 与 acct 使用教程一、概述1. 简介A. 是什么psacct 和 acct 是 Linux 系统中用于监控用户活动的开源工具。这些工具在后台运行，持续跟踪系统中每个用户的活动以及所消耗的资源。B. 为什么学多用户服务器管理需要了解用户行为安全审计和问题排查的基础工具资源管理和容量规划的数据来源系统管理员必备的监控技能C. 学完能做什么查看用户登录时长和连接时间统计追踪用户执行的所有命令监控系统资源消耗情况生成用户活动报告用于审计2. 前置知识A. 必备技能基本 Linux 命令操作了解 Linux 用户和权限概念熟悉 systemctl 服务管理命令B. 推荐知识Linux 进程管理基础系统日志和日志轮转概念二、环境准备1. 系统要求Linux 发行版：RHEL/CentOS/Fedora 或 Ubuntu/Debianroot 或 sudo 权限磁盘空间：至少 500MB 用于日志存储2. 安装步骤RHEL/CentOS/Fedora 系统：sudo yum install psacct # 或在新系统上使用 dnf sudo dnf install psacctUbuntu/Debian 系统：sudo apt install acct其他发行版：# Alpine Linux sudo apk add psacct # Arch Linux sudo pacman -S acct # OpenSUSE sudo zypper install acct3. 启动服务RHEL 系统需要手动启动：# 查看服务状态 sudo systemctl status psacct # 启动服务 sudo systemctl start psacct # 设置开机自启 sudo systemctl enable psacct # 再次查看状态确认 sudo systemctl status psacctDebian 系统会自动启动服务。4. 验证安装# 检查进程日志文件是否创建 ls -lh /var/account/pacct # 查看当前登录统计 ac三、核心概念1. 基本术语psacct/acct：进程 accounting 工具包pacct：进程 accounting 数据文件wtmp：用户登录登出记录文件连接时间：用户登录系统的累计时长2. 工作原理graph TB A[用户登录] --> B[系统记录 wtmp] A --> C[用户执行命令] C --> D[acct 记录进程信息] D --> E[写入 pacct 文件] B --> F[ac 命令读取] E --> G[sa 命令读取] E --> H[lastcomm 命令读取] F --> I[生成统计报告] G --> I H --> I3. 核心命令功能命令功能说明ac显示用户登录/登出统计（连接时间）lastcomm显示用户之前执行的命令accton开启或关闭进程 accountingsa汇总已执行命令的信息last/lastb显示最后登录的用户列表四、快速上手1. 查看总连接时间ac输出示例：total 11299.15这个数字表示所有用户累计连接小时数。2. 按日期查看连接时间ac -d输出示例：Oct 28 total 234.50 Oct 29 total 189.23 Oct 30 total 198.67 Oct 31 total 456.12 Nov 1 total 267.45 Nov 2 total 201.34 Nov 3 total 423.45注意某些日期的异常峰值，需要调查原因。3. 按用户查看连接时间ac -p输出示例：rockylinux 425.61 tecmint 702.29 root 10171.54 total 11299.44可以看到 root 用户的登录时间远超其他用户。4. 查看特定用户连接时间ac ravi输出示例：total 110.31五、进阶内容1. 命令执行统计A. 查看所有命令摘要sa输出包含以下列：第一列：实际执行时间（挂钟时间，分钟）第二列：CPU 时间（系统+用户时间，分钟）第三列：平均 CPU 使用量（以 1k 为单位）第四列：命令名称带星号（*）的命令表示以超级用户权限运行。B. 查看特定用户信息sa -u显示每个用户执行的命令及资源消耗。C. 查看进程统计sa -m显示总进程数和 CPU 分钟数。如果这些数字持续增长，需要调查系统状况。D. 按使用率排序sa -c按百分比显示资源使用情况，帮助识别消耗最多资源的命令。2. 命令历史查询A. 查看用户最后执行的命令lastcomm ravi输出显示用户 ravi 执行的最后命令。B. 限制输出行数l…

Clawdbot 在 DigitalOcean 部署指南
type: item
date: 2026-01-25T21:29:57+00:00
description: Clawdbot 在 DigitalOcean 部署指南一、概述1. 简介A. 是什么Clawdbot 是一个自托管 AI 助手，可部署在云服务器上，提供 AI 交互能力。本文介绍如何在 DigitalOcean 平台快速部署 Clawdbot 服务。B. 为什么学快速搭建个人 AI 助手服务学习云服务器部署基础流程了解 AI 应用的服务器配置要求C. 学完能做什么在 DigitalOcean 创建服务器并部署 Clawdbot通过 SSH 隧道安全访问 Web 管理界面独立维护和更新 Clawdbot 服务2. 前置知识A. 必备技能基本 SSH 连接操作Linux 终端命令基础B. 推荐知识DigitalOcean 账号基本的服务器概念二、环境准备1. 服务器要求A. 系统版本Ubuntu 24.04 LTSB. 硬件配置推荐：2 GB RAM / 1 AMD CPU / 50 GB NVMe最低：1 GB RAM（需配置交换空间）C. 区域选择选择距离用户最近的区域以降低延迟2. 准备工作注册 DigitalOcean 账号并充值三、部署步骤1. 创建 Droplet（云服务器）在 DigitalOcean 控制台创建新的 Droplet：操作系统：Ubuntu 24.04 LTS区域：选择最近的区域CPU 类型：Premium AMD规格：2 GB RAM / 1 AMD CPU / 50 GB NVMe2. SSH 连接服务器graph LR A[本地终端] -->|ssh root@IP| B[Droplet 服务器] B -->|连接成功| C[执行部署命令]获取服务器 IP 后，执行：ssh root@YOUR_IP将 YOUR_IP 替换为实际的服务器 IP 地址。3. 创建 sudo 用户出于安全考虑，不建议直接使用 root 用户操作。adduser clawd && usermod -aG sudo clawd && su - clawd此命令会：创建名为 clawd 的新用户将其添加到 sudo 组切换到新用户4. 安装 ClawdbotClawdbot 提供了一键安装脚本：curl -fsSL https://clawd.bot/install.sh | bash安装完成后运行：exec bash5. 配置 API 密钥使用向导模式配置：clawdbot setup --wizard按照提示输入必要的 API 密钥和配置信息。6. 启动网关服务clawdbot gateway --bind lan --port 18789参数说明：bind lan：绑定到局域网接口port 18789：监听 18789 端口四、访问管理界面1. 建立 SSH 隧道由于安全考虑，服务仅监听本地。通过 SSH 隧道转发端口：ssh -L 18789:127.0.0.1:18789 clawd@YOUR_IP此命令将本地 18789 端口映射到远程服务器的 18789 端口。2. 访问 Web UI隧道建立后，在浏览器打开：http://127.0.0.1:18789即可访问 Clawdbot 的 Web 管理界面。sequenceDiagram participant B as 浏览器 participant L as 本地:18789 participant T as SSH隧道 participant S as 服务器:18789 participant C as Clawdbot B->>L: http://127.0.0.1:18789 L->>T: 转发请求 T->>S: 通过SSH隧道 S->>C: 访问服务 C-->>S: 返回响应 S-->>T: 隧道返回 T-->>L: 本地端口 L-->>B: 显示界面五、内存优化（1GB 服务器）如果使用 1GB 内存的服务器，NPM 安装可能会因内存不足失败。1. 方案一：增加 Node 内存限制export NODE_OPTIONS="--max-old-space-size=2048"2. 方案二：添加交换空间sudo fallocate -l 2G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab此操作会创建 2GB 的交换文件，并在重启后自动挂载。六、常见问题1. SSH 连接失败检查服务器 IP 地址是否正确，确保防火墙允许 22 端口访问。2. 内存不足错误参考第五章内存优化方案，推荐直接使用 2GB 配置的服务器。3. 端口无…

智谱AI HTTP API 调用教程
type: item
date: 2026-01-20T03:55:04+00:00
description: 智谱AI HTTP API 调用教程一、概述1. 简介A. 是什么智谱AI 提供基于 RESTful 架构的应用程序接口，通过标准的 HTTP 协议与智谱AI 的模型服务进行交互。开发者可以使用任何支持 HTTP 协议的编程语言或开发框架调用智谱AI 的各种 AI 模型。B. 为什么学跨平台兼容：支持所有支持 HTTP 协议的编程语言和平台标准协议：基于 RESTful 设计，遵循 HTTP 标准，易于理解和使用灵活集成：可以集成到任何现有的应用程序和系统中实时调用：支持同步和异步调用，满足不同场景需求C. 学完能做什么使用任何编程语言调用智谱AI 的 GLM 系列模型实现简单对话、流式响应和多轮对话功能正确处理 API 鉴权和错误响应在生产环境中安全、高效地集成智谱AI 服务二、环境准备1. 前置条件有效的智谱AI 账户已获取 API Key基本的 HTTP 请求知识至少熟悉一种编程语言（Python、JavaScript、Java 等）2. 获取 API Key步骤流程访问智谱AI 开放平台：https://bigmodel.cn注册并登录账户进入 API Keys 管理页面创建 API Key复制生成的 API Key 以供使用安全建议建议将 API Key 设置为环境变量，避免硬编码到代码中，以提高安全性。三、API 基础信息1. 请求端点通用 API 端点https://open.bigmodel.cn/api/paas/v4/Coding 专用端点使用 GLM 编码套餐时，需要使用专属端点：https://open.bigmodel.cn/api/coding/paas/v4注意：Coding API 端点仅限 Coding 场景使用，不适用于通用 API 场景。2. 请求头要求所有请求必须包含以下 HTTP 头：请求头值说明Content-Typeapplication/json指定请求体格式为 JSONAuthorizationBearer YOUR_API_KEYAPI 密钥鉴权3. 支持的鉴权方式A. API Key 鉴权最简单的鉴权方式，直接使用 API Key：curl --location 'https://open.bigmodel.cn/api/paas/v4/chat/completions' \ --header 'Authorization: Bearer YOUR_API_KEY' \ --header 'Content-Type: application/json' \ --data '{ "model": "glm-4.7", "messages": [ { "role": "user", "content": "你好" } ] }'B. JWT Token 鉴权适用于需要更复杂权限控制的场景（具体实现请参考官方文档）。四、基础调用示例1. 简单对话请求示例curl --location 'https://open.bigmodel.cn/api/paas/v4/chat/completions' \ --header 'Authorization: Bearer YOUR_API_KEY' \ --header 'Content-Type: application/json' \ --data '{ "model": "glm-4.7", "messages": [ { "role": "user", "content": "请介绍一下人工智能的发展历程" } ], "temperature": 1.0, "max_tokens": 1024 }'参数说明model：使用的模型名称，如 glm-4.7messages：对话消息列表temperature：控制输出随机性，范围 0-2，默认 1.0max_tokens：限制响应最大 token 数2. 流式响应请求示例curl --location 'https://open.bigmodel.cn/api/paas/v4/chat/completions' \ --header 'Authorization: Bearer YOUR_API_KEY' \ --header 'Content-Type: application/json' \ --data '{ "model": "glm-4.7", "messages": [ { "role": "user", "content": "写一首关于春天的诗" } ], "stream": true }'流式响应特点设置 stream 参数为 true 启用流式响应响应以 Server-Sent Events（SSE）格式返回可以实时获取模型生成的内容3. 多轮对话请求示例curl --…

荷兰沃达丰eSIM保号卡全攻略
type: item
date: 2026-01-19T22:05:22+00:00
description: 荷兰沃达丰 eSIM 保号卡全攻略一、概述1. 简介A. 是什么荷兰沃达丰（Vodafone）eSIM 是由全球电信巨头 Vodafone 提供的预付费 eSIM 服务，用户无需实名认证即可获取欧洲原生手机号。B. 为什么需要海外账号注册：Telegram、WhatsApp、Google、ChatGPT 等平台需要海外手机号接收验证码隐私保护：无需实名认证，保护个人隐私账号安全：作为辅助验证号码，提高账号安全性C. 核心优势持有成本极低：一年保号成本仅需 1.2 欧元（约 9.2 元人民币）大厂背景：Vodafone 是实体运营商，非虚拟运营商，账号权重高无需实名：全程不需要护照、身份证国内漫游：走移动/联通信号，收短信免费2. 前置知识A. 必备条件一张外币信用卡（Visa/Mastercard）或虚拟卡一个邮箱（接收 eSIM 二维码）支持 eSIM 的手机或 eSIM 写卡器B. 推荐知识了解 eSIM 基本概念了解手机漫游设置二、准备工作1. 硬件准备A. 海外版手机用户iPhone XS 及以上机型（海外版）Google Pixel 3 及以上机型三星 Galaxy S20 及以上机型B. 国行手机用户需要准备 eSIM 写卡器：Xesim（推荐）5berESTKSwitchesim使用方法：将 eSIM 写卡器插入安卓手机，下载 eSIM 后，将卡插回 iPhone 使用。2. 软件准备邮箱账户：Gmail、Outlook 等任意邮箱虚拟卡：Bybit Card 等（如无外币信用卡）VPN：推荐准备荷兰节点的梯子（用于 WiFi Calling）三、核心概念1. 基本术语eSIM：嵌入式 SIM 卡，无需实体卡槽MVNO：虚拟移动网络运营商WiFi Calling：通过 WiFi 网络拨打电话和发送短信保号：保持手机号活跃，避免被注销2. 工作原理graph LR A[官网购买] --> B[邮箱接收二维码] B --> C{手机类型} C -->|海外版| D[直接激活 eSIM] C -->|国行| E[eSIM 写卡器] E --> F[安卓写入] F --> G[iPhone 使用] D --> H[漫游国内网络] G --> H H --> I[收发短信]3. Vodafone 优势对比特性Vodafone 荷兰giffgaff 英国其他 eSIM运营商类型实体运营商虚拟运营商多样化账号权重高中低-中无需实名是是部分需要保号成本1.2 欧元/年需半年消费各异发送短信支持仅接收部分支持信号质量优秀良好参差不齐四、快速上手1. 第一步：购买 eSIMA. 访问官网打开网址：https://act.vodafone.nl/prepaid-esim/B. 选择套餐选择最便宜的套餐（约 14 欧元），包含：荷兰手机号码（永久使用）流量和通话套餐（国内不可用）eSIM 激活码C. 完成支付填写邮箱地址（务必准确）使用 Visa/Mastercard 支付支付成功后邮箱收到 QR Code 和 Activation CodesequenceDiagram participant U as 用户 participant W as Vodafone 官网 participant E as 邮箱 participant P as 支付网关 U->>W: 访问官网 U->>W: 选择套餐 U->>P: 支付 14 欧元 P-->>W: 支付成功 W->>E: 发送二维码邮件 E-->>U: 接收激活信息2. 第二步：激活 eSIMA. 海外版手机用户打开手机设置进入蜂窝网络/移动网络添加 eSIM/蜂窝号码计划扫描邮件中的二维码等待激活完成B. 国行手机用户（使用 Xesim）将 Xesim 卡插入安卓手机打开 Xesim App，选择"下载 eSIM"扫描二维码或手动输入 Activation Code下载完成后在 App 里启用该号码重要：如需输入 PIN 码，默认是"0000"关键设置：PIN 码：0000（默认）建议在手机设置中关闭 SIM 卡锁3. 第三步：注册账号A. 创建账号访问：https://www.vodafone.nl/account选择"我还没有账号"输入荷兰手机号（格式：06xxxxxxxx，不加 +31）接收短信验证码绑定邮箱并设置密码B. 完善资料登录后填写荷兰地址地址生成器：https://www.meiguodizhi.com/nl-address点击"Upgrade"升级账户账户功能完整后可充值管理C. 薅羊毛技巧查看是否有"Top up 5, get 5 free"活动充值 5 欧元获得 10 欧余额足够保号数年使用五、保号技巧1. 保号规则Vodafone 规则：每 180 天余额有变动…