[{"content":"frp 特性 通过在具有公网 IP 的节点上部署 frp 服务端，您可以轻松地将内网服务穿透到公网，并享受以下专业特性：\n多种协议支持：客户端服务端通信支持 TCP、QUIC、KCP 和 Websocket 等多种协议。 TCP 连接流式复用：在单个连接上承载多个请求，减少连接建立时间，降低请求延迟。 代理组间的负载均衡。 端口复用：多个服务可以通过同一个服务端端口暴露。 P2P 通信：流量不必经过服务器中转，充分利用带宽资源。 客户端插件：提供多个原生支持的客户端插件，如静态文件查看、HTTPS/HTTP 协议转换、HTTP、SOCKS5 代理等，以便满足各种需求。 服务端插件系统：高度可扩展的服务端插件系统，便于根据自身需求进行功能扩展。 用户友好的 UI 页面：提供服务端和客户端的用户界面，使配置和监控变得更加方便。 frp 工作原理 frp 主要由两个组件组成：客户端(frpc) 和 服务端(frps)。通常情况下，服务端部署在具有公网 IP 地址的机器上，而客户端部署在需要穿透的内网服务所在的机器上。\n由于内网服务缺乏公网 IP 地址，因此无法直接被非局域网内的用户访问。用户通过访问服务端的 frps，frp 负责根据请求的端口或其他信息将请求路由到相应的内网机器，从而实现通信。\n代理 在 frp 中，一个代理对应一个需要公开访问的内网服务。一个客户端可以同时配置多个代理，以满足不同的需求。\n代理类型 frp 支持多种代理类型，以适应不同的使用场景。以下是一些常见的代理类型：\nTCP：提供纯粹的 TCP 端口映射，使服务端能够根据不同的端口将请求路由到不同的内网服务。 UDP：提供纯粹的 UDP 端口映射，与 TCP 代理类似，但用于 UDP 流量。 HTTP：专为 HTTP 应用设计，支持修改 Host Header 和增加鉴权等额外功能。 HTTPS：类似于 HTTP 代理，但专门用于处理 HTTPS 流量。 STCP：提供安全的 TCP 内网代理，要求在被访问者和访问者的机器上都部署 frpc，不需要在服务端暴露端口。 SUDP：提供安全的 UDP 内网代理，与 STCP 类似，需要在被访问者和访问者的机器上都部署 frpc，不需要在服务端暴露端口。 XTCP：点对点内网穿透代理，与 STCP 类似，但流量不需要经过服务器中转。 TCPMUX：支持服务端 TCP 端口的多路复用，允许通过同一端口访问不同的内网服务。 每种代理类型适用于不同的使用情境，您可以根据需求选择合适的代理类型来配置 frp。\n安装 下载 您可以从 GitHub 的 Release 页面中下载最新版本的客户端和服务器二进制文件。所有文件都打包在一个压缩包中，还包含了一份完整的配置参数说明。\n部署 解压下载的压缩包。 将 frpc 复制到内网服务所在的机器上。 将 frps 复制到拥有公网 IP 地址的机器上，并将它们放在任意目录。 开始使用 编写配置文件，目前支持的文件格式包括 TOML/YAML/JSON，旧的 INI 格式仍然支持，但已经不再推荐。 使用以下命令启动服务器：./frps -c ./frps.toml。 使用以下命令启动客户端：./frpc -c ./frpc.toml。 如果需要在后台长期运行，建议结合其他工具，如 systemd。 使用systemd 1. 安装 systemd 如果您的 Linux 服务器上尚未安装 systemd，可以使用包管理器如 yum（适用于 CentOS/RHEL）或 apt（适用于 Debian/Ubuntu）来安装它：\n# 使用 yum 安装 systemd（CentOS/RHEL） yum install systemd # 使用 apt 安装 systemd（Debian/Ubuntu） apt install systemd 2. 创建 frps.service 文件 使用文本编辑器 (如 vim) 在 /etc/systemd/system 目录下创建一个 frps.service 文件，用于配置 frps 服务。\n$ sudo vim /etc/systemd/system/frps.service 写入内容\n[Unit] # 服务名称，可自定义 Description = frp server After = network.target syslog.target Wants = network.target [Service] Type = simple # 启动frps的命令，需修改为您的frps的安装路径 ExecStart = /path/to/frps -c /path/to/frps.toml [Install] WantedBy = multi-user.target 3. 使用 systemd 命令管理 frps 服务 # 启动frp sudo systemctl start frps # 停止frp sudo systemctl stop frps # 重启frp sudo systemctl restart frps # 查看frp状态 sudo systemctl status frps 4. 设置 frps 开机自启动 sudo systemctl enable frps 示例 1. 通过 SSH 访问内网机器 通过简单配置 TCP 类型的代理，使用户能够访问内网服务器。\n在具有公网 IP 的机器上部署 frps 部署 frps 并编辑 frps.toml 文件。以下是简化的配置，其中设置了 frp 服务器用于接收客户端连接的端口：\nbindPort = 7000 在需要被访问的内网机器上部署 frpc 部署 frpc 并编辑 frpc.toml 文件，假设 frps 所在服务器的公网 IP 地址为 x.x.x.x。以下是示例配置：\nserverAddr = \u0026#34;x.x.x.x\u0026#34; serverPort = 7000 [[proxies]] name = \u0026#34;ssh\u0026#34; type = \u0026#34;tcp\u0026#34; localIP = \u0026#34;127.0.0.1\u0026#34; localPort = 22 remotePort = 6000 localIP 和 localPort 配置为需要从公网访问的内网服务的地址和端口。 remotePort 表示在 frp 服务端监听的端口，访问此端口的流量将被转发到本地服务的相应端口 启动 frps 和 frpc\n通过 SSH 访问内网机器\n使用以下命令通过 SSH 访问内网机器，假设用户名为 test：\nssh -o Port=6000 test@x.x.x.x frp 将请求发送到 x.x.x.x:6000 的流量转发到内网机器的 22 端口\n所有内容均来自 frp 官方：\nfrp 官方文档\nhttps://github.com/fatedier/frp\nfrps_full_example.toml\nfrpc_full_example.toml\n","permalink":"https://bestsky.top/posts/frp-%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F%E5%B7%A5%E5%85%B7/","summary":"frp 是一款高性能的反向代理应用，专注于内网穿透。它支持多种协议，包括 TCP、UDP、HTTP、HTTPS 等，并且具备 P2P 通信功能。使用 frp，您可以安全、便捷地将内网服务暴露到公网，通过拥有公网 IP 的节点进行中转。","title":"frp 内网穿透工具"},{"content":"Agent Skills 概述 Agent Skills 是一种为 Agent 赋予全新功能与专业能力的标准化方案。\n什么是 Agent Skills Agent Skills 是一种轻量、开放的格式，可借助专业知识与工作流拓展 AI Agent 的能力。\n从本质上来说，技能是一个存放着SKILL.md文件的文件夹。该文件包含元数据（至少需填写 name 与 description 两项）以及指引 Agent 完成特定任务的操作指令。技能包中还可整合脚本、参考资料、模板及其他各类资源。\nmy-skill/ ├── SKILL.md # Required: metadata + instructions ├── scripts/ # Optional: executable code ├── references/ # Optional: documentation ├── assets/ # Optional: templates, resources └── ... # Any additional files or directories 为什么需要 Agent Skills Agent 的能力正在不断提升，但它们往往缺少可靠完成实际工作所需的上下文信息。Skills 可解决这一问题：它将流程化知识以及企业、团队、用户专属的上下文信息封装为可移植、支持版本管理的文件夹，供 Agent 按需加载。这能为智能体带来如下优势：\n领域专业能力：将各类专业知识 —— 从合规审核流程、数据分析流程到演示文稿排版规范 —— 整理为可重复使用的操作指引与配套资源。 可复用工作流：将多步骤任务转化为规范统一、可审计的流程。 跨产品复用：只需创建一次技能，即可在所有兼容该技能的智能体中使用。 Agent Skills 如何工作 Agent 通过渐进式加载机制加载技能，分为三个阶段：\n发现阶段：启动时，Agent 仅加载每项可用 skill 的名称与描述，仅获取足以判断该 skill 是否适用的基础信息。 激活阶段：当任务与某项 skill 的描述匹配时，Agent 会将完整的 SKILL.md 指令加载至上下文。 执行阶段：Agent 按照指令执行操作，可根据需求运行配套代码或加载引用文件。 完整指令仅在任务需要时加载，Agent 因此可储备大量可用 skills，同时仅占用极小的上下文空间。\nAgent Skills 规格说明 Agent Skills 完整格式规范。\n目录结构 一项 Skill 是一个目录，其中至少包含一个 SKILL.md 文件：\nskill-name/ ├── SKILL.md # Required: metadata + instructions ├── scripts/ # Optional: executable code ├── references/ # Optional: documentation ├── assets/ # Optional: templates, resources └── ... # Any additional files or directories SKILL.md 格式 SKILL.md 文件必须包含 YAML 前置元数据，其后紧跟 Markdown 正文内容。\nYAML 元数据 Field Required Constraints name Yes 最多 64 个字符。仅允许小写字母、数字与连字符，首尾不得使用连字符。 description Yes 最多 1024 个字符，内容不可为空，用于说明该 skill 的功能以及适用场景。 license No License name or reference to a bundled license file. compatibility No Max 500 characters. Indicates environment requirements (intended product, system packages, network access, etc.). metadata No Arbitrary key-value mapping for additional metadata. allowed-tools No Space-separated string of pre-approved tools the skill may use. (Experimental) 最简单的 skill 示例 --- name: skill-name description: A description of what this skill does and when to use it. --- --- name: pdf-processing description: Extract PDF text, fill forms, merge files. Use when handling PDFs. license: Apache-2.0 metadata: author: example-org version: \u0026#34;1.0\u0026#34; --- name 字段 字符长度需为 1 至 64 位 仅可包含 Unicode 小写字母数字字符（a-z、0-9）与连字符（-） 不得以连字符（-）开头或结尾 不可出现连续连字符（--） 需与上级目录名称保持一致 name: pdf-processing description 字段 字符长度需为 1 至 1024 个 需同时说明该技能的功能与适用场景 需包含可协助 Agent 识别相关任务的特定关键词 description: Extracts text and tables from PDF files, fills PDF forms, and merges multiple PDFs. Use when working with PDF documents or when the user mentions PDFs, forms, or document extraction. license 字段 指定该 skill 所使用的许可证 建议填写简短内容（可为许可证名称或配套许可证文件名称） license: Proprietary. LICENSE.txt has complete terms compatibility 字段 若填写，字符长度需在 1 至 500 个之间 仅当你的工具存在特定环境要求时才需填写此项 可标注适配产品、所需系统软件包、网络访问需求等信息 compatibility: Requires git, docker, jq, and access to the internet metadata 字段 字符串格式的 key-value 映射表 客户端可通过该字段存储 Agent Skills 规范中未定义的附加属性 建议设置辨识度较高的键名，防止出现意外冲突 metadata: author: example-org version: \u0026#34;1.0\u0026#34; allowed-tools 字段 以空格分隔、预先获准可运行的工具字符串 实验性功能。不同智能代理实现方案对该字段的支持程度存在差异 allowed-tools: Bash(git:*) Bash(jq:*) Read SKILL.md 正文 YAML 元数据之后的 Markdown 正文包含技能说明，无格式限制，可撰写一切能助力 Agent 高效完成任务的内容。\n推荐板块：\n分步操作指南 输入输出示例 常见边界场景 请注意，Agent 一旦确定启用某项 skill，就会加载整个文件。可考虑将篇幅较长的 SKILL.md 内容拆分至引用文件中。\n可选目录 scripts/ 包含 Agent 可运行的可执行代码。脚本需满足以下要求：\n独立完整，或清晰说明依赖项 附带易懂的错误提示信息 妥善处理各类极端场景 支持的编程语言由 Agent 的实现方式决定，常用语言包括 Python、Bash 以及 JavaScript。\nreferences/ 存放 Agent 按需查阅的补充文档：\nREFERENCE.md—— 详细技术参考文档 FORMS.md—— 表单模板或结构化数据格式文件 各专业领域专用文件（如finance.md、legal.md等） 每份reference 文件内容需主题专一。Agent 会按需加载这类文件，文件体积越小，占用上下文资源越少。\nassets/ 包含静态资源：\n模板（文档模板、配置模板） 图片（示意图、示例图） 数据文件（查找表、数据模式） 渐进式加载 Agent 逐步加载 skill，仅在任务需要时调取更多详细信息。skill 的结构设计应适配这一特性：\n元数据（约 100 token）：所有 skill 启动时会加载 name 与 description 字段 操作指引（建议少于 5000 token）：激活对应 skill 时，完整加载 SKILL.md 全部内容 资源文件（按需加载）：仅在必要时读取各类文件（例如存放于scripts/、references/或assets/目录下的文件） 将主文件 SKILL.md 控制在 500 行以内。将详细参考资料拆分至独立文件中。\n引用文件 在你的 skill 中引用其他文件时，请使用基于 skill 根目录的相对路径：\nSee [the reference guide](references/REFERENCE.md) for details. Run the extraction script: scripts/extract.py 文件引用路径需仅与 SKILL.md 相差一级目录，避免多层嵌套的引用链路。\n内容来源：\nAgent Skills Overview\nAgent Skills Specification\n","permalink":"https://bestsky.top/posts/agent-skills/","summary":"Agent Skills 格式规范与使用指南，包括元数据定义、目录结构、渐进式加载机制等","title":"Agent Skills"},{"content":"这是我的第一篇博客，用 Hugo + PaperMod 搭建，GitHub Actions 自动部署到阿里云。🦐\n以后就在这里写东西了。\n","permalink":"https://bestsky.top/posts/hello/","summary":"\u003cp\u003e这是我的第一篇博客，用 Hugo + PaperMod 搭建，GitHub Actions 自动部署到阿里云。🦐\u003c/p\u003e\n\u003cp\u003e以后就在这里写东西了。\u003c/p\u003e","title":"你好，世界"},{"content":"这是我的小站，用 Hugo + PaperMod 搭建。\n欢迎交流 🦐\n","permalink":"https://bestsky.top/about/","summary":"about","title":"About"}]