<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>技术文档 on 忘川</title><link>https://f50a586b.blog-run.pages.dev/docs/</link><description>Recent content in 技术文档 on 忘川</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><atom:link href="https://f50a586b.blog-run.pages.dev/docs/index.xml" rel="self" type="application/rss+xml"/><item><title>Codex Pets 使用详细说明（官方 + 社区实战整合）</title><link>https://f50a586b.blog-run.pages.dev/docs/codex-pets%E4%BD%BF%E7%94%A8%E8%AF%A6%E7%BB%86%E8%AF%B4%E6%98%8E/</link><pubDate>Mon, 11 May 2026 00:00:00 +0000</pubDate><guid>https://f50a586b.blog-run.pages.dev/docs/codex-pets%E4%BD%BF%E7%94%A8%E8%AF%A6%E7%BB%86%E8%AF%B4%E6%98%8E/</guid><description>&lt;p&gt;&lt;strong&gt;从零开始掌握 Codex Pets：先启用内置宠物，再生成自定义宠物，最后完成本地安装与稳定排障。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="1-codex-pets-是什么"&gt;1. Codex Pets 是什么
&lt;/h2&gt;&lt;p&gt;Codex Pets 是 Codex App 的可选动画伙伴层（floating overlay），核心价值不是“装饰”，而是让任务状态可视化：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在使用其他应用时，仍可看到当前活跃线程。&lt;/li&gt;
&lt;li&gt;直接显示状态变化：运行中、等待输入、待审阅。&lt;/li&gt;
&lt;li&gt;用简短进度提示快速了解“刚刚发生了什么”。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这套机制对长时任务和多线程任务非常实用，能明显减少反复切回主界面的成本。&lt;/p&gt;
&lt;h2 id="2-官方启用路径建议先做"&gt;2. 官方启用路径（建议先做）
&lt;/h2&gt;&lt;p&gt;根据 OpenAI Codex App 官方设置文档，推荐按以下顺序启用：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打开 &lt;code&gt;Settings -&amp;gt; Appearance -&amp;gt; Pets&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;选择内置宠物，或刷新本地自定义宠物列表。&lt;/li&gt;
&lt;li&gt;使用以下任一方式切换悬浮层显示状态：
&lt;ul&gt;
&lt;li&gt;在输入框输入 &lt;code&gt;/pet&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Settings -&amp;gt; Appearance&lt;/code&gt; 中使用 &lt;code&gt;Wake Pet&lt;/code&gt; / &lt;code&gt;Tuck Away Pet&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Cmd+K&lt;/code&gt;（macOS）或 &lt;code&gt;Ctrl+K&lt;/code&gt;（Windows）执行同名命令&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="3-自定义宠物生成hatch-pet-正确流程"&gt;3. 自定义宠物生成：hatch-pet 正确流程
&lt;/h2&gt;&lt;h3 id="31-安装技能"&gt;3.1 安装技能
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$skill-installer hatch-pet
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;安装后若没有立即生效，先重启 Codex；也可以先通过命令面板执行 &lt;code&gt;Force Reload Skills&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id="32-触发生成"&gt;3.2 触发生成
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$hatch-pet create a new pet inspired by my recent projects
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;也可以直接给出更精确描述，例如颜色、风格、性格、动作偏好。&lt;/p&gt;
&lt;h3 id="33-生成机制官方-skill-关键点"&gt;3.3 生成机制（官方 skill 关键点）
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;openai/skills&lt;/code&gt; 里的 &lt;code&gt;hatch-pet&lt;/code&gt; 说明了完整生成契约：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;通过 &lt;code&gt;$imagegen&lt;/code&gt; 负责视觉生成。&lt;/li&gt;
&lt;li&gt;标准流程最多约 10 个视觉任务（1 个 base + 9 个状态行）。&lt;/li&gt;
&lt;li&gt;目标图集规格是 &lt;code&gt;8 x 9&lt;/code&gt; 网格，单格 &lt;code&gt;192 x 208&lt;/code&gt;，总尺寸 &lt;code&gt;1536 x 1872&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;最终以 &lt;code&gt;pet.json + spritesheet.webp&lt;/code&gt; 作为可安装包落地。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="4-本地文件结构与包规范"&gt;4. 本地文件结构与包规范
&lt;/h2&gt;&lt;p&gt;社区安装文档与生成工具的约定高度一致，最小可用包建议如下：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;~/.codex/pets/my-pet/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; pet.json
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; spritesheet.webp
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;最小 &lt;code&gt;pet.json&lt;/code&gt; 示例：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;id&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;my-pet&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;displayName&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;My Pet&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;A concise pet description.&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;spritesheetPath&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;spritesheet.webp&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;关键一致性要求：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;文件夹名、&lt;code&gt;id&lt;/code&gt;、资源路径要对齐。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;spritesheetPath&lt;/code&gt; 指向包内文件（本地安装场景不建议外链）。&lt;/li&gt;
&lt;li&gt;图集尺寸和网格不匹配时，动画会错位或花屏。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="5-已有宠物的两种安装方式"&gt;5. 已有宠物的两种安装方式
&lt;/h2&gt;&lt;h3 id="方式-a手动安装可控"&gt;方式 A：手动安装（可控）
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdir -p &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/.codex/pets/tater&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;unzip -o &lt;span class="s2"&gt;&amp;#34;./tater-codex-pet.zip&amp;#34;&lt;/span&gt; -d &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/.codex/pets/tater&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;安装后通过 &lt;code&gt;/pet&lt;/code&gt; 或设置页选择该宠物。&lt;/p&gt;
&lt;h3 id="方式-b社区-cli-一键安装更快"&gt;方式 B：社区 CLI 一键安装（更快）
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npx codex-pet-cli add &amp;lt;pet-slug&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;社区站点说明该命令会把宠物安装到 &lt;code&gt;~/.codex/pets/&amp;lt;name&amp;gt;&lt;/code&gt;，适合快速体验大量现成宠物。&lt;/p&gt;
&lt;h2 id="6-官方与社区能力边界"&gt;6. 官方与社区能力边界
&lt;/h2&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;维度&lt;/th&gt;
 &lt;th&gt;官方文档/官方仓库&lt;/th&gt;
 &lt;th&gt;社区站点/第三方工具&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;功能定义&lt;/td&gt;
 &lt;td&gt;权威来源（设置路径、命令入口、技能机制）&lt;/td&gt;
 &lt;td&gt;主要补充教程、示例、素材市场&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;兼容保证&lt;/td&gt;
 &lt;td&gt;与 Codex 版本同步更新&lt;/td&gt;
 &lt;td&gt;可能滞后或偏差&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;风险&lt;/td&gt;
 &lt;td&gt;相对可控&lt;/td&gt;
 &lt;td&gt;需自行校验来源与包内容&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;推荐用途&lt;/td&gt;
 &lt;td&gt;作为“标准答案”&lt;/td&gt;
 &lt;td&gt;作为“提效补充”&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;实践建议：&lt;strong&gt;以官方说明为准绳，以社区工具做提速。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="7-高频问题与排障清单"&gt;7. 高频问题与排障清单
&lt;/h2&gt;&lt;h3 id="71-pet-输入后没有触发仅当普通消息发送"&gt;7.1 &lt;code&gt;/pet&lt;/code&gt; 输入后没有触发，仅当普通消息发送
&lt;/h3&gt;&lt;p&gt;已在 &lt;code&gt;openai/codex&lt;/code&gt; 出现公开问题案例（例如 &lt;code&gt;#20836&lt;/code&gt;）。可按以下顺序排查：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先在 &lt;code&gt;Settings -&amp;gt; Appearance -&amp;gt; Pets&lt;/code&gt; 里直接切换，确认基础功能可用。&lt;/li&gt;
&lt;li&gt;升级到最新 Codex 版本后重试。&lt;/li&gt;
&lt;li&gt;通过 &lt;code&gt;Cmd+K&lt;/code&gt;/&lt;code&gt;Ctrl+K&lt;/code&gt; 执行宠物切换命令，验证是否仅 slash 行为异常。&lt;/li&gt;
&lt;li&gt;若仍异常，记录版本号和平台信息后提 issue。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="72-hatch-pet-已安装但命令补全里找不到"&gt;7.2 &lt;code&gt;hatch-pet&lt;/code&gt; 已安装但命令补全里找不到
&lt;/h3&gt;&lt;p&gt;公开问题（如 &lt;code&gt;#20778&lt;/code&gt;）反映过“slash 自动补全不可见”的情况。重点是区分：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Skill 被安装，并不一定等于 slash 自动补全立刻可见。&lt;/li&gt;
&lt;li&gt;按官方技能文档，优先使用 &lt;code&gt;$skill-name&lt;/code&gt; 形式触发技能。&lt;/li&gt;
&lt;li&gt;安装后先 &lt;code&gt;Force Reload Skills&lt;/code&gt; 或重启应用。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="73-生成流程中断并出现-stream-disconnected"&gt;7.3 生成流程中断并出现 stream disconnected
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;#20947&lt;/code&gt; 的排障信息显示，某些环境中可能涉及 &lt;code&gt;$imagegen&lt;/code&gt; 发现/依赖问题。建议：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;检查 &lt;code&gt;hatch-pet&lt;/code&gt; 是否完整安装。&lt;/li&gt;
&lt;li&gt;核实系统技能链路是否正常加载（尤其图像生成依赖）。&lt;/li&gt;
&lt;li&gt;先跑最小生成任务验证流程，再逐步增加复杂度。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="8-面向生产使用的建议"&gt;8. 面向生产使用的建议
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;先固定一套“已验证可用”的宠物模板与尺寸规范。&lt;/li&gt;
&lt;li&gt;把 &lt;code&gt;pet.json&lt;/code&gt; 校验做成脚本，提交前自动检查关键字段。&lt;/li&gt;
&lt;li&gt;团队内统一宠物包目录命名，避免重复或覆盖。&lt;/li&gt;
&lt;li&gt;社区来源包先在隔离环境验证后再分发。&lt;/li&gt;
&lt;li&gt;每次 Codex 版本升级后做一次宠物回归检查。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="9-快速上手清单10-分钟版本"&gt;9. 快速上手清单（10 分钟版本）
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;设置里启用一个内置宠物，确认 overlay 正常。&lt;/li&gt;
&lt;li&gt;安装 &lt;code&gt;hatch-pet&lt;/code&gt; 并重载技能。&lt;/li&gt;
&lt;li&gt;生成第一个自定义宠物。&lt;/li&gt;
&lt;li&gt;检查输出目录是否包含 &lt;code&gt;pet.json&lt;/code&gt; 与 &lt;code&gt;spritesheet.webp&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;放入 &lt;code&gt;~/.codex/pets/&amp;lt;pet-id&amp;gt;/&lt;/code&gt; 并在设置页启用。&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;/pet&lt;/code&gt; 与快捷键验证开关是否正常。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="参考链接"&gt;参考链接
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;OpenAI Developers（Codex App Settings）：https://developers.openai.com/codex/app/settings&lt;/li&gt;
&lt;li&gt;OpenAI Developers（Agent Skills）：https://developers.openai.com/codex/skills&lt;/li&gt;
&lt;li&gt;OpenAI Skills 仓库 README：https://github.com/openai/skills&lt;/li&gt;
&lt;li&gt;hatch-pet（官方技能定义）：https://github.com/openai/skills/blob/main/skills/.curated/hatch-pet/SKILL.md&lt;/li&gt;
&lt;li&gt;社区安装说明（含 manifest 示例）：https://codexpets.org/install&lt;/li&gt;
&lt;li&gt;社区 Hatch 指南：https://codex-pet.org/how-to-create-a-codex-pet/&lt;/li&gt;
&lt;li&gt;社区一键安装工具说明：https://codex-pet.com/&lt;/li&gt;
&lt;li&gt;兼容问题参考（官方仓库 issue）：
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/openai/codex/issues/20836" target="_blank" rel="noopener"
 &gt;https://github.com/openai/codex/issues/20836&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/openai/codex/issues/20778" target="_blank" rel="noopener"
 &gt;https://github.com/openai/codex/issues/20778&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/openai/codex/issues/20947" target="_blank" rel="noopener"
 &gt;https://github.com/openai/codex/issues/20947&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>OpenClaw Skill 01：ByteRover 知识库实战指南</title><link>https://f50a586b.blog-run.pages.dev/docs/openclaw-skill-01-byterover%E7%9F%A5%E8%AF%86%E5%BA%93%E5%AE%9E%E6%88%98%E6%8C%87%E5%8D%97/</link><pubDate>Tue, 10 Mar 2026 00:00:00 +0000</pubDate><guid>https://f50a586b.blog-run.pages.dev/docs/openclaw-skill-01-byterover%E7%9F%A5%E8%AF%86%E5%BA%93%E5%AE%9E%E6%88%98%E6%8C%87%E5%8D%97/</guid><description>&lt;h2 id="一skill-定位"&gt;一、Skill 定位
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;ByteRover&lt;/code&gt; 是 OpenClaw 生态里最常用的知识库能力之一，核心价值是把分散文档转成“可检索、可引用、可复用”的知识资产。&lt;br&gt;
在实际工作中，它通常承担三件事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;把团队资料统一索引，减少重复问答。&lt;/li&gt;
&lt;li&gt;让回答可回溯到原文来源，便于审核。&lt;/li&gt;
&lt;li&gt;为后续自动化流程提供稳定知识底座。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="二典型使用场景"&gt;二、典型使用场景
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;新人入职：快速检索项目规范、部署流程、常见故障。&lt;/li&gt;
&lt;li&gt;技术支持：从 SOP 和历史案例中检索最接近的处理路径。&lt;/li&gt;
&lt;li&gt;产品运营：从活动文档与数据周报中抽取可复用结论。&lt;/li&gt;
&lt;li&gt;研发协作：把 ADR、设计文档、接口说明统一沉淀。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="三安装与前置准备"&gt;三、安装与前置准备
&lt;/h2&gt;&lt;h3 id="1-前置条件"&gt;1) 前置条件
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;已安装并可正常运行 OpenClaw。&lt;/li&gt;
&lt;li&gt;已配置可用模型与基础工具。&lt;/li&gt;
&lt;li&gt;准备好知识源目录（Markdown、PDF、网页导出文档等）。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="2-安装命令"&gt;2) 安装命令
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 安装 ByteRover skill&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;clawhub install byterover
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 同步本地已安装 skills&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;clawhub sync --all
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="3-建议配置"&gt;3) 建议配置
&lt;/h3&gt;&lt;p&gt;在项目环境变量中补齐知识库连接参数，例如：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;BYTEROVER_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;your_api_key&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;BYTEROVER_INDEX&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;team-knowledge&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="四手把手使用方法"&gt;四、手把手使用方法
&lt;/h2&gt;&lt;h3 id="step-1建立知识目录结构"&gt;Step 1：建立知识目录结构
&lt;/h3&gt;&lt;p&gt;推荐采用三层结构：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;01-guides&lt;/code&gt;：操作手册与流程。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;02-architecture&lt;/code&gt;：架构与技术方案。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;03-ops&lt;/code&gt;：运维与故障处理记录。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这样可以显著提升检索召回的稳定性。&lt;/p&gt;
&lt;h3 id="step-2执行首次入库"&gt;Step 2：执行首次入库
&lt;/h3&gt;&lt;p&gt;在会话中给出明确任务描述：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/skill byterover
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;请将 docs/ 目录文档建立索引，按“架构/运维/业务”打标签，并输出入库摘要。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="step-3做带引用的问答"&gt;Step 3：做带引用的问答
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/skill byterover
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;基于已索引文档，回答“服务发布失败后如何回滚”，并附来源文件名与章节。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="step-4做增量更新"&gt;Step 4：做增量更新
&lt;/h3&gt;&lt;p&gt;每次变更只更新新增内容，避免全量重建导致成本升高。&lt;/p&gt;
&lt;h2 id="五排错与注意事项"&gt;五、排错与注意事项
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;检索结果空白&lt;/strong&gt;：优先检查索引名是否一致、文档是否真的入库。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;回答不稳定&lt;/strong&gt;：缩小检索范围，给出更清晰的问题上下文。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;成本过高&lt;/strong&gt;：改为增量索引，限制单次检索文档数量。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;敏感信息泄露风险&lt;/strong&gt;：入库前先做脱敏，明确禁止目录。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;版本污染&lt;/strong&gt;：同一知识库要有版本标识，避免旧文档覆盖新规则。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="六落地清单可直接执行"&gt;六、落地清单（可直接执行）
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;确定知识源目录与命名规范。&lt;/li&gt;
&lt;li&gt;安装 &lt;code&gt;byterover&lt;/code&gt; 并完成首次索引。&lt;/li&gt;
&lt;li&gt;统一问答模板：结论 + 依据 + 来源。&lt;/li&gt;
&lt;li&gt;每周做一次增量入库和失效文档清理。&lt;/li&gt;
&lt;li&gt;建立“高频问题榜”，持续优化知识结构。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="七参考资料"&gt;七、参考资料
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;OpenClaw Skills 文档：https://docs.openclaw.ai/skills&lt;/li&gt;
&lt;li&gt;ByteRover Skill 说明：https://github.com/sundial-org/awesome-openclaw-skills/tree/main/skills/byterover&lt;/li&gt;
&lt;li&gt;OpenClaw 安装文档：https://docs.openclaw.ai/install/index&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>OpenClaw Skill 02：Self-Improvement 持续进化指南</title><link>https://f50a586b.blog-run.pages.dev/docs/openclaw-skill-02-self-improvement%E6%8C%81%E7%BB%AD%E8%BF%9B%E5%8C%96%E6%8C%87%E5%8D%97/</link><pubDate>Tue, 10 Mar 2026 00:00:00 +0000</pubDate><guid>https://f50a586b.blog-run.pages.dev/docs/openclaw-skill-02-self-improvement%E6%8C%81%E7%BB%AD%E8%BF%9B%E5%8C%96%E6%8C%87%E5%8D%97/</guid><description>&lt;h2 id="一skill-定位"&gt;一、Skill 定位
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Self-Improvement&lt;/code&gt; 的核心是让 Agent 不只是执行任务，而是能够基于结果质量持续优化自身工作方式。&lt;br&gt;
它适合做“长期有效”的流程：任务复盘、提示词改写、失败归因、策略升级。&lt;/p&gt;
&lt;h2 id="二适用场景"&gt;二、适用场景
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;同类任务反复执行，但输出质量不稳定。&lt;/li&gt;
&lt;li&gt;团队希望沉淀“高质量提示词模板”。&lt;/li&gt;
&lt;li&gt;需要建立可审计的优化闭环，而不是靠经验拍脑袋。&lt;/li&gt;
&lt;li&gt;想让新人快速复用成熟流程，缩短学习曲线。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="三安装与配置"&gt;三、安装与配置
&lt;/h2&gt;&lt;h3 id="1-安装命令"&gt;1) 安装命令
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;clawhub install self-improvement
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;clawhub sync --all
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="2-建议准备的输入数据"&gt;2) 建议准备的输入数据
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;历史任务日志（成功与失败样本都要有）。&lt;/li&gt;
&lt;li&gt;输出评分标准（准确性、完整性、可执行性）。&lt;/li&gt;
&lt;li&gt;业务约束（禁用词、合规规则、时效要求）。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="四使用方法建议流程"&gt;四、使用方法（建议流程）
&lt;/h2&gt;&lt;h3 id="step-1定义评估标准"&gt;Step 1：定义评估标准
&lt;/h3&gt;&lt;p&gt;先把“什么叫好答案”说清楚，再让 Skill 参与优化。&lt;/p&gt;
&lt;p&gt;示例标准：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;结论必须可执行。&lt;/li&gt;
&lt;li&gt;必须给出关键依据。&lt;/li&gt;
&lt;li&gt;不允许出现无来源断言。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="step-2执行首轮复盘"&gt;Step 2：执行首轮复盘
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/skill self-improvement
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;请基于最近 20 条任务输出，按“成功原因/失败原因/可改进提示词”三栏给出复盘报告。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="step-3生成优化后的模板"&gt;Step 3：生成优化后的模板
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/skill self-improvement
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;针对“技术文档总结”场景，输出 v2 提示词模板，并说明相对 v1 的改动理由。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="step-4ab-验证"&gt;Step 4：A/B 验证
&lt;/h3&gt;&lt;p&gt;把旧模板与新模板并行跑一周，比较稳定性与人工返工率。&lt;/p&gt;
&lt;h2 id="五注意事项"&gt;五、注意事项
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;不要只看单次结果&lt;/strong&gt;：至少观察 1-2 周趋势。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;避免过拟合&lt;/strong&gt;：模板不要只针对单一案例优化。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;要保留回滚版本&lt;/strong&gt;：v2 效果差时能迅速退回 v1。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;加入人工验收节点&lt;/strong&gt;：关键业务不能完全自动放行。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;明确禁区&lt;/strong&gt;：涉及合规、财务、法务的内容必须人工复核。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="六常见问题与排查"&gt;六、常见问题与排查
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;优化后反而变差：检查评估指标是否与业务目标一致。&lt;/li&gt;
&lt;li&gt;输出越来越长：在模板中显式限制结构与长度。&lt;/li&gt;
&lt;li&gt;解释很多但不可执行：增加“最终动作列表”硬性要求。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="七落地清单"&gt;七、落地清单
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;建立统一评分标准与评审表。&lt;/li&gt;
&lt;li&gt;每周固定一次复盘与模板迭代。&lt;/li&gt;
&lt;li&gt;维护模板版本库（含变更记录）。&lt;/li&gt;
&lt;li&gt;对关键场景设置人工验收门槛。&lt;/li&gt;
&lt;li&gt;每月复盘一次 ROI（节省时间/返工率变化）。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="八参考资料"&gt;八、参考资料
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;Self-Improvement Skill：https://github.com/sundial-org/awesome-openclaw-skills/tree/main/skills/self-improvement&lt;/li&gt;
&lt;li&gt;OpenClaw Skills 文档：https://docs.openclaw.ai/skills&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>OpenClaw Skill 03：Agent-Browser 网页自动化指南</title><link>https://f50a586b.blog-run.pages.dev/docs/openclaw-skill-03-agent-browser%E7%BD%91%E9%A1%B5%E8%87%AA%E5%8A%A8%E5%8C%96%E6%8C%87%E5%8D%97/</link><pubDate>Tue, 10 Mar 2026 00:00:00 +0000</pubDate><guid>https://f50a586b.blog-run.pages.dev/docs/openclaw-skill-03-agent-browser%E7%BD%91%E9%A1%B5%E8%87%AA%E5%8A%A8%E5%8C%96%E6%8C%87%E5%8D%97/</guid><description>&lt;h2 id="一skill-定位"&gt;一、Skill 定位
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Agent-Browser&lt;/code&gt; 用来把网页上的重复动作自动化，例如登录、表单填写、信息采集、页面巡检。&lt;br&gt;
它非常适合“规则清晰、步骤固定”的场景。&lt;/p&gt;
&lt;h2 id="二适用场景"&gt;二、适用场景
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;每日固定抓取多个页面的数据。&lt;/li&gt;
&lt;li&gt;后台系统批量录入或状态核验。&lt;/li&gt;
&lt;li&gt;前端回归测试中的基础流程检查。&lt;/li&gt;
&lt;li&gt;舆情/竞品页面的周期性巡检。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="三安装与前置"&gt;三、安装与前置
&lt;/h2&gt;&lt;h3 id="1-安装-skill"&gt;1) 安装 skill
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;clawhub install agent-browser
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;clawhub sync --all
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="2-基础依赖建议"&gt;2) 基础依赖建议
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;启用 OpenClaw 的浏览器工具能力。&lt;/li&gt;
&lt;li&gt;准备专用测试账号，避免使用个人主账号。&lt;/li&gt;
&lt;li&gt;配置稳定网络与重试策略。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="四使用方法"&gt;四、使用方法
&lt;/h2&gt;&lt;h3 id="step-1先写动作剧本"&gt;Step 1：先写动作剧本
&lt;/h3&gt;&lt;p&gt;把流程拆成可执行步骤，例如：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打开目标 URL。&lt;/li&gt;
&lt;li&gt;输入账号密码登录。&lt;/li&gt;
&lt;li&gt;跳转到报表页。&lt;/li&gt;
&lt;li&gt;抓取指定字段并导出。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="step-2在会话中执行"&gt;Step 2：在会话中执行
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/skill agent-browser
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;访问示例后台，登录后进入“订单列表”，筛选最近 7 天数据并导出 CSV。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="step-3加入容错策略"&gt;Step 3：加入容错策略
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;元素定位失败时重试 2-3 次。&lt;/li&gt;
&lt;li&gt;页面超时切换备用入口。&lt;/li&gt;
&lt;li&gt;关键步骤截图留痕，便于排错。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="step-4做定时任务"&gt;Step 4：做定时任务
&lt;/h3&gt;&lt;p&gt;将稳定流程挂到计划任务，形成自动巡检。&lt;/p&gt;
&lt;h2 id="五注意事项"&gt;五、注意事项
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;验证码与风控&lt;/strong&gt;：遇到验证码需要人工介入，不要强行绕过。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;账号安全&lt;/strong&gt;：自动化账号最小权限、单独隔离。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;页面变更风险&lt;/strong&gt;：前端改版会导致选择器失效，要定期回归。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;合规边界&lt;/strong&gt;：只抓取被授权的数据，避免违规采集。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;执行成本&lt;/strong&gt;：长流程优先拆分为多个小任务，降低失败重跑成本。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="六常见问题"&gt;六、常见问题
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;元素找不到：检查页面是否在 iframe 或 shadow DOM。&lt;/li&gt;
&lt;li&gt;登录后跳回首页：确认 session/cookie 是否保存成功。&lt;/li&gt;
&lt;li&gt;抓取数据错位：优先定位表头再映射字段，避免硬编码列序。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="七落地清单"&gt;七、落地清单
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;固化 3 个高频网页自动化场景。&lt;/li&gt;
&lt;li&gt;每个场景保留“动作剧本 + 异常处理”文档。&lt;/li&gt;
&lt;li&gt;接入执行日志与截图存档。&lt;/li&gt;
&lt;li&gt;每月做一次选择器健康检查。&lt;/li&gt;
&lt;li&gt;高风险页面统一人工复核。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="八参考资料"&gt;八、参考资料
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;Agent-Browser Skill：https://github.com/sundial-org/awesome-openclaw-skills/tree/main/skills/agent-browser&lt;/li&gt;
&lt;li&gt;OpenClaw Skills 文档：https://docs.openclaw.ai/skills&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>OpenClaw Skill 04：Proactive-Agent 主动式助手架构</title><link>https://f50a586b.blog-run.pages.dev/docs/openclaw-skill-04-proactive-agent%E4%B8%BB%E5%8A%A8%E5%BC%8F%E5%8A%A9%E6%89%8B%E6%9E%B6%E6%9E%84/</link><pubDate>Tue, 10 Mar 2026 00:00:00 +0000</pubDate><guid>https://f50a586b.blog-run.pages.dev/docs/openclaw-skill-04-proactive-agent%E4%B8%BB%E5%8A%A8%E5%BC%8F%E5%8A%A9%E6%89%8B%E6%9E%B6%E6%9E%84/</guid><description>&lt;h2 id="一skill-定位"&gt;一、Skill 定位
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Proactive-Agent&lt;/code&gt; 的重点不是“你问我答”，而是“在正确时间主动做事”。&lt;br&gt;
它通常与事件、时间、状态变化联动，帮助团队把关键动作前置。&lt;/p&gt;
&lt;h2 id="二适用场景"&gt;二、适用场景
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;每日站会前自动推送昨天进展与风险。&lt;/li&gt;
&lt;li&gt;发布窗口前自动检查关键依赖状态。&lt;/li&gt;
&lt;li&gt;SLA 超时前自动预警并通知责任人。&lt;/li&gt;
&lt;li&gt;周期性巡检后自动汇总异常。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="三安装与准备"&gt;三、安装与准备
&lt;/h2&gt;&lt;h3 id="1-安装命令"&gt;1) 安装命令
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;clawhub install proactive-agent
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;clawhub sync --all
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="2-配置建议"&gt;2) 配置建议
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;打通消息通知通道（如 Slack/Telegram/邮件）。&lt;/li&gt;
&lt;li&gt;先定义事件触发条件，避免“无意义提醒轰炸”。&lt;/li&gt;
&lt;li&gt;每个提醒必须有明确接收人与处置动作。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="四使用方法"&gt;四、使用方法
&lt;/h2&gt;&lt;h3 id="step-1定义触发规则"&gt;Step 1：定义触发规则
&lt;/h3&gt;&lt;p&gt;示例规则：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;每天 09:30 自动发送前一日异常汇总。&lt;/li&gt;
&lt;li&gt;发布前 30 分钟执行 Checklist，失败则拦截。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="step-2配置任务指令"&gt;Step 2：配置任务指令
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/skill proactive-agent
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;每天 9:30 自动汇总昨日错误日志 Top5，并推送到项目群，附修复负责人建议。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="step-3联动定时器"&gt;Step 3：联动定时器
&lt;/h3&gt;&lt;p&gt;可配合 OpenClaw 的 cron/hook 能力触发执行，形成稳定闭环。&lt;/p&gt;
&lt;h3 id="step-4增加升级策略"&gt;Step 4：增加升级策略
&lt;/h3&gt;&lt;p&gt;提醒未处理时二次通知，仍未处理则升级到值班负责人。&lt;/p&gt;
&lt;h2 id="五注意事项"&gt;五、注意事项
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;提醒必须可执行&lt;/strong&gt;：只报问题不提供动作，价值很低。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;控制通知噪音&lt;/strong&gt;：同类告警要聚合，不要刷屏。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;设置静默窗口&lt;/strong&gt;：夜间与节假日策略要单独处理。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;失败重试要有限制&lt;/strong&gt;：避免异常时无限循环触发。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;留审计日志&lt;/strong&gt;：记录触发时间、对象、执行结果。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="六常见问题"&gt;六、常见问题
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;提醒延迟：检查时区设置和任务队列积压。&lt;/li&gt;
&lt;li&gt;重复提醒：确认去重键是否正确（任务 ID + 时间窗）。&lt;/li&gt;
&lt;li&gt;内容空洞：增加“背景、影响、下一步”三段式输出模板。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="七落地清单"&gt;七、落地清单
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;选 2 个业务高价值提醒先试点。&lt;/li&gt;
&lt;li&gt;建立提醒等级（普通/重要/紧急）。&lt;/li&gt;
&lt;li&gt;每周复盘触发准确率与处理闭环率。&lt;/li&gt;
&lt;li&gt;对无效提醒持续下线，保持轻量高效。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="八参考资料"&gt;八、参考资料
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;Proactive-Agent Skill：https://github.com/sundial-org/awesome-openclaw-skills/tree/main/skills/proactive-agent&lt;/li&gt;
&lt;li&gt;OpenClaw Skills 文档：https://docs.openclaw.ai/skills&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>OpenClaw Skill 05：Deep-Research 深度研究工作流</title><link>https://f50a586b.blog-run.pages.dev/docs/openclaw-skill-05-deep-research%E6%B7%B1%E5%BA%A6%E7%A0%94%E7%A9%B6%E5%B7%A5%E4%BD%9C%E6%B5%81/</link><pubDate>Tue, 10 Mar 2026 00:00:00 +0000</pubDate><guid>https://f50a586b.blog-run.pages.dev/docs/openclaw-skill-05-deep-research%E6%B7%B1%E5%BA%A6%E7%A0%94%E7%A9%B6%E5%B7%A5%E4%BD%9C%E6%B5%81/</guid><description>&lt;h2 id="一skill-定位"&gt;一、Skill 定位
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Deep-Research&lt;/code&gt; 面向“复杂问题研究”而不是简单问答。&lt;br&gt;
它强调多源检索、证据交叉、结构化结论和明确假设边界。&lt;/p&gt;
&lt;h2 id="二适用场景"&gt;二、适用场景
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;行业趋势分析与竞品研究。&lt;/li&gt;
&lt;li&gt;政策解读与影响评估。&lt;/li&gt;
&lt;li&gt;技术方案选型对比。&lt;/li&gt;
&lt;li&gt;需要附来源链路的研究报告输出。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="三安装与准备"&gt;三、安装与准备
&lt;/h2&gt;&lt;h3 id="1-安装命令"&gt;1) 安装命令
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;clawhub install deep-research
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;clawhub sync --all
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="2-研究任务准备"&gt;2) 研究任务准备
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;明确研究问题与时间范围。&lt;/li&gt;
&lt;li&gt;定义可信来源优先级（官方 &amp;gt; 一手资料 &amp;gt; 二手解读）。&lt;/li&gt;
&lt;li&gt;明确结论格式（摘要、证据、风险、建议）。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="四使用方法"&gt;四、使用方法
&lt;/h2&gt;&lt;h3 id="step-1先限定研究边界"&gt;Step 1：先限定研究边界
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/skill deep-research
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;研究“OpenClaw 在企业自动化场景的落地模式”，时间范围限定近 12 个月，并区分官方信息与社区实践。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="step-2执行多轮检索"&gt;Step 2：执行多轮检索
&lt;/h3&gt;&lt;p&gt;第一轮做广覆盖，第二轮做重点深挖，第三轮只做争议点验证。&lt;/p&gt;
&lt;h3 id="step-3输出结构化报告"&gt;Step 3：输出结构化报告
&lt;/h3&gt;&lt;p&gt;建议固定四段式：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;关键结论&lt;/li&gt;
&lt;li&gt;主要证据&lt;/li&gt;
&lt;li&gt;不确定性说明&lt;/li&gt;
&lt;li&gt;可执行建议&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="step-4保留引用链路"&gt;Step 4：保留引用链路
&lt;/h3&gt;&lt;p&gt;每条重要结论都应保留来源，方便后续复核。&lt;/p&gt;
&lt;h2 id="五注意事项"&gt;五、注意事项
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;防止信息污染&lt;/strong&gt;：避免把转载内容当一手证据。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;区分事实与观点&lt;/strong&gt;：输出时必须显式区分。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;标注时效性&lt;/strong&gt;：策略类结论要注明时间窗口。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;处理冲突信息&lt;/strong&gt;：给出冲突点与权重判断理由。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;避免过度自信&lt;/strong&gt;：不确定结论要保留概率表述。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="六常见问题"&gt;六、常见问题
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;报告很长但无重点：增加“必须先给 3 条结论”约束。&lt;/li&gt;
&lt;li&gt;来源很多但不可用：加入来源质量评分机制。&lt;/li&gt;
&lt;li&gt;建议空泛：把建议绑定到角色、动作、时间。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="七落地清单"&gt;七、落地清单
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;建立研究任务模板（问题、范围、来源、输出格式）。&lt;/li&gt;
&lt;li&gt;固化“证据分级”标准。&lt;/li&gt;
&lt;li&gt;每份报告都保留复核入口与更新时间。&lt;/li&gt;
&lt;li&gt;对关键结论设置人工审核。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="八参考资料"&gt;八、参考资料
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;Deep-Research Skill：https://github.com/sundial-org/awesome-openclaw-skills/tree/main/skills/deep-research&lt;/li&gt;
&lt;li&gt;OpenClaw Skills 文档：https://docs.openclaw.ai/skills&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>OpenClaw Skill 06：Memory-Setup 记忆体系搭建</title><link>https://f50a586b.blog-run.pages.dev/docs/openclaw-skill-06-memory-setup%E8%AE%B0%E5%BF%86%E4%BD%93%E7%B3%BB%E6%90%AD%E5%BB%BA/</link><pubDate>Tue, 10 Mar 2026 00:00:00 +0000</pubDate><guid>https://f50a586b.blog-run.pages.dev/docs/openclaw-skill-06-memory-setup%E8%AE%B0%E5%BF%86%E4%BD%93%E7%B3%BB%E6%90%AD%E5%BB%BA/</guid><description>&lt;h2 id="一skill-定位"&gt;一、Skill 定位
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Memory-Setup&lt;/code&gt; 的目标是让 OpenClaw 具备稳定的“长期记忆”，而不是每次任务都从零开始。&lt;br&gt;
它解决的核心问题是：上下文遗忘、历史决策丢失、跨会话协作断层。&lt;/p&gt;
&lt;h2 id="二适用场景"&gt;二、适用场景
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;需求长期跟踪（跨周、跨月的项目推进）。&lt;/li&gt;
&lt;li&gt;多人协作中需要共享历史结论与约束。&lt;/li&gt;
&lt;li&gt;需要保留“为什么这么做”的决策链路。&lt;/li&gt;
&lt;li&gt;复杂任务拆分后需要持续接力。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="三安装与前置"&gt;三、安装与前置
&lt;/h2&gt;&lt;h3 id="1-安装命令"&gt;1) 安装命令
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;clawhub install memory-setup
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;clawhub sync --all
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="2-记忆数据分层建议"&gt;2) 记忆数据分层建议
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;短期记忆：当前会话中的临时信息。&lt;/li&gt;
&lt;li&gt;中期记忆：当前迭代周期内的任务上下文。&lt;/li&gt;
&lt;li&gt;长期记忆：长期有效的规则、偏好、决策与知识资产。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="四使用方法"&gt;四、使用方法
&lt;/h2&gt;&lt;h3 id="step-1定义记忆写入规则"&gt;Step 1：定义记忆写入规则
&lt;/h3&gt;&lt;p&gt;不是所有信息都要写入长期记忆，建议只写入：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;稳定偏好（风格、输出结构、禁用项）。&lt;/li&gt;
&lt;li&gt;关键决策（架构选择、业务规则）。&lt;/li&gt;
&lt;li&gt;高价值事实（流程、常见错误与修复路径）。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="step-2执行记忆初始化"&gt;Step 2：执行记忆初始化
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/skill memory-setup
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;初始化项目记忆：记录技术栈、部署环境、文档规范、发布流程和故障升级路径。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="step-3建立更新机制"&gt;Step 3：建立更新机制
&lt;/h3&gt;&lt;p&gt;每次任务完成后沉淀“结论 + 依据 + 下次注意点”，避免信息老化。&lt;/p&gt;
&lt;h3 id="step-4查询记忆再行动"&gt;Step 4：查询记忆再行动
&lt;/h3&gt;&lt;p&gt;在执行复杂任务前先检索记忆，减少重复试错。&lt;/p&gt;
&lt;h2 id="五注意事项"&gt;五、注意事项
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;防止记忆膨胀&lt;/strong&gt;：长期记忆只保留高价值信息。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;防止过期污染&lt;/strong&gt;：设置更新时间和过期清理机制。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;隐私保护&lt;/strong&gt;：敏感数据单独隔离，不进入通用记忆库。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;冲突处理&lt;/strong&gt;：同一规则出现冲突时，保留最新版本并记录变更原因。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;可解释性&lt;/strong&gt;：每条关键记忆要有来源和责任人。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="六常见问题"&gt;六、常见问题
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;记忆命中率低：检查标签设计是否混乱。&lt;/li&gt;
&lt;li&gt;记忆引用错误：增加版本字段与来源校验。&lt;/li&gt;
&lt;li&gt;内容越来越杂：按主题拆分记忆空间，定期归档。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="七落地清单"&gt;七、落地清单
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;先建立“写什么、不写什么”的清单。&lt;/li&gt;
&lt;li&gt;建立月度记忆体检（清理过期、合并重复）。&lt;/li&gt;
&lt;li&gt;为关键规则设置审批与变更记录。&lt;/li&gt;
&lt;li&gt;在高风险任务前强制执行“先读记忆再执行”。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="八参考资料"&gt;八、参考资料
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;Memory-Setup Skill：https://github.com/sundial-org/awesome-openclaw-skills/tree/main/skills/memory-setup&lt;/li&gt;
&lt;li&gt;OpenClaw Skills 文档：https://docs.openclaw.ai/skills&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>OpenClaw Skill 07：Second-Brain 知识中枢实战</title><link>https://f50a586b.blog-run.pages.dev/docs/openclaw-skill-07-second-brain%E7%9F%A5%E8%AF%86%E4%B8%AD%E6%9E%A2%E5%AE%9E%E6%88%98/</link><pubDate>Tue, 10 Mar 2026 00:00:00 +0000</pubDate><guid>https://f50a586b.blog-run.pages.dev/docs/openclaw-skill-07-second-brain%E7%9F%A5%E8%AF%86%E4%B8%AD%E6%9E%A2%E5%AE%9E%E6%88%98/</guid><description>&lt;h2 id="一skill-定位"&gt;一、Skill 定位
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Second-Brain&lt;/code&gt; 可以理解为“可执行的数字第二大脑”。&lt;br&gt;
它不仅管理笔记，更强调将知识转化为行动：计划、提醒、复盘、复用。&lt;/p&gt;
&lt;h2 id="二适用场景"&gt;二、适用场景
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;内容创作：积累素材并自动整理选题。&lt;/li&gt;
&lt;li&gt;技术学习：记录知识点并形成可复习路径。&lt;/li&gt;
&lt;li&gt;项目管理：把会议纪要转成可追踪待办。&lt;/li&gt;
&lt;li&gt;团队知识资产化：沉淀 SOP、模板与最佳实践。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="三安装与准备"&gt;三、安装与准备
&lt;/h2&gt;&lt;h3 id="1-安装命令"&gt;1) 安装命令
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;clawhub install second-brain
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;clawhub sync --all
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="2-推荐基础结构"&gt;2) 推荐基础结构
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;Inbox：快速收集。&lt;/li&gt;
&lt;li&gt;Projects：进行中的任务。&lt;/li&gt;
&lt;li&gt;Areas：长期职责领域。&lt;/li&gt;
&lt;li&gt;Resources：参考资料。&lt;/li&gt;
&lt;li&gt;Archives：完成归档。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="四使用方法"&gt;四、使用方法
&lt;/h2&gt;&lt;h3 id="step-1统一输入入口"&gt;Step 1：统一输入入口
&lt;/h3&gt;&lt;p&gt;把聊天记录、网页摘录、会议要点统一汇入 Inbox，先收集后整理。&lt;/p&gt;
&lt;h3 id="step-2自动化分类与标签"&gt;Step 2：自动化分类与标签
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/skill second-brain
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;请把 Inbox 中近一周内容按“项目/学习/创作/运维”分类，并提取可执行任务。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="step-3转行动清单"&gt;Step 3：转行动清单
&lt;/h3&gt;&lt;p&gt;每条笔记至少要输出一个下一步动作，否则知识无法产生业务价值。&lt;/p&gt;
&lt;h3 id="step-4周期复盘"&gt;Step 4：周期复盘
&lt;/h3&gt;&lt;p&gt;每周复盘一次，清理无效笔记，合并重复主题，更新优先级。&lt;/p&gt;
&lt;h2 id="五注意事项"&gt;五、注意事项
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;避免收藏成瘾&lt;/strong&gt;：收集不是目标，可执行才是目标。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;标签不要过多&lt;/strong&gt;：标签体系过复杂会降低检索效率。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;输入质量优先&lt;/strong&gt;：记录时尽量包含背景与结论，避免碎片化噪音。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;重视复盘&lt;/strong&gt;：Second-Brain 的价值来自持续整理，而非一次性搭建。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;权限治理&lt;/strong&gt;：团队知识库要区分公开区与敏感区。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="六常见问题"&gt;六、常见问题
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;笔记越来越多但找不到：改为层级目录 + 少量核心标签。&lt;/li&gt;
&lt;li&gt;知识难转化为行动：模板中强制加“下一步动作”字段。&lt;/li&gt;
&lt;li&gt;复盘坚持不下去：固定每周同一时间、同一流程执行。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="七落地清单"&gt;七、落地清单
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;搭建统一收集入口与文件命名规范。&lt;/li&gt;
&lt;li&gt;固化“收集-整理-执行-复盘”四步流程。&lt;/li&gt;
&lt;li&gt;每月做一次结构优化与过期内容清理。&lt;/li&gt;
&lt;li&gt;把高价值笔记升级为团队标准文档。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="八参考资料"&gt;八、参考资料
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;Second-Brain Skill：https://github.com/sundial-org/awesome-openclaw-skills/tree/main/skills/second-brain&lt;/li&gt;
&lt;li&gt;OpenClaw Skills 文档：https://docs.openclaw.ai/skills&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>OpenClaw Skill 08：Prompt-Guard 提示注入防护</title><link>https://f50a586b.blog-run.pages.dev/docs/openclaw-skill-08-prompt-guard%E6%8F%90%E7%A4%BA%E6%B3%A8%E5%85%A5%E9%98%B2%E6%8A%A4/</link><pubDate>Tue, 10 Mar 2026 00:00:00 +0000</pubDate><guid>https://f50a586b.blog-run.pages.dev/docs/openclaw-skill-08-prompt-guard%E6%8F%90%E7%A4%BA%E6%B3%A8%E5%85%A5%E9%98%B2%E6%8A%A4/</guid><description>&lt;h2 id="一skill-定位"&gt;一、Skill 定位
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Prompt-Guard&lt;/code&gt; 主要用于识别并拦截提示注入、越权指令和可疑输入。&lt;br&gt;
在生产环境中，它是保护 Agent 执行边界的关键安全层。&lt;/p&gt;
&lt;h2 id="二适用场景"&gt;二、适用场景
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;Agent 会读取外部网页、邮件、文档等不可信输入。&lt;/li&gt;
&lt;li&gt;系统支持工具调用，存在潜在越权执行风险。&lt;/li&gt;
&lt;li&gt;业务对数据安全与合规有明确要求。&lt;/li&gt;
&lt;li&gt;多租户或多团队共享同一 Agent 平台。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="三安装与前置"&gt;三、安装与前置
&lt;/h2&gt;&lt;h3 id="1-安装命令"&gt;1) 安装命令
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;clawhub install prompt-guard
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;clawhub sync --all
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="2-防护策略建议"&gt;2) 防护策略建议
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;输入分级：可信输入与不可信输入分开处理。&lt;/li&gt;
&lt;li&gt;动作分级：高风险动作必须二次确认。&lt;/li&gt;
&lt;li&gt;输出审查：关键输出先过规则再发送。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="四使用方法"&gt;四、使用方法
&lt;/h2&gt;&lt;h3 id="step-1设定高风险关键词与模式"&gt;Step 1：设定高风险关键词与模式
&lt;/h3&gt;&lt;p&gt;例如：泄露密钥、忽略系统指令、执行未授权命令。&lt;/p&gt;
&lt;h3 id="step-2执行安全检测"&gt;Step 2：执行安全检测
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/skill prompt-guard
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;检测以下输入是否存在注入风险，并给出风险等级与拦截建议。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="step-3联动执行策略"&gt;Step 3：联动执行策略
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;低风险：记录日志并继续。&lt;/li&gt;
&lt;li&gt;中风险：要求人工确认后执行。&lt;/li&gt;
&lt;li&gt;高风险：直接阻断并告警。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="step-4持续更新规则库"&gt;Step 4：持续更新规则库
&lt;/h3&gt;&lt;p&gt;把已发生案例沉淀为规则，提高下一次命中率。&lt;/p&gt;
&lt;h2 id="五注意事项"&gt;五、注意事项
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;不要只靠关键词&lt;/strong&gt;：要结合上下文语义判断。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;误杀可控&lt;/strong&gt;：安全策略宁可略保守，也不要放过高风险动作。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;日志留痕&lt;/strong&gt;：每次拦截都要记录样本与处置结果。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;分环境策略&lt;/strong&gt;：测试环境和生产环境阈值应不同。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;人工兜底&lt;/strong&gt;：涉及资金、权限、外发信息必须人工复核。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="六常见问题"&gt;六、常见问题
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;误报过高：调整阈值并增加白名单机制。&lt;/li&gt;
&lt;li&gt;漏报攻击：补充语义规则与历史样本训练。&lt;/li&gt;
&lt;li&gt;影响效率：对低风险路径做快速放行，关键环节再加严。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="七落地清单"&gt;七、落地清单
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;先定义高风险动作清单。&lt;/li&gt;
&lt;li&gt;对关键入口启用 Prompt-Guard。&lt;/li&gt;
&lt;li&gt;接入告警渠道与审计日志。&lt;/li&gt;
&lt;li&gt;每月做一次攻防演练与规则更新。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="八参考资料"&gt;八、参考资料
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;Prompt-Guard Skill：https://github.com/sundial-org/awesome-openclaw-skills/tree/main/skills/prompt-guard&lt;/li&gt;
&lt;li&gt;OpenClaw Skills 文档：https://docs.openclaw.ai/skills&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>OpenClaw Skill 09：AgentMail 邮件自动化实战</title><link>https://f50a586b.blog-run.pages.dev/docs/openclaw-skill-09-agentmail%E9%82%AE%E4%BB%B6%E8%87%AA%E5%8A%A8%E5%8C%96%E5%AE%9E%E6%88%98/</link><pubDate>Tue, 10 Mar 2026 00:00:00 +0000</pubDate><guid>https://f50a586b.blog-run.pages.dev/docs/openclaw-skill-09-agentmail%E9%82%AE%E4%BB%B6%E8%87%AA%E5%8A%A8%E5%8C%96%E5%AE%9E%E6%88%98/</guid><description>&lt;h2 id="一skill-定位"&gt;一、Skill 定位
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;AgentMail&lt;/code&gt; 用于把邮件从“人工逐封处理”升级为“自动预处理 + 人工确认”的高效率模式。&lt;br&gt;
它特别适合邮件量大、信息密度高的岗位。&lt;/p&gt;
&lt;h2 id="二适用场景"&gt;二、适用场景
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;客服/运营：大量咨询邮件自动归类。&lt;/li&gt;
&lt;li&gt;商务/销售：线索邮件自动打标签和优先级。&lt;/li&gt;
&lt;li&gt;技术团队：告警通知和工单邮件自动聚合。&lt;/li&gt;
&lt;li&gt;管理岗位：每日邮件摘要和行动清单自动生成。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="三安装与前置"&gt;三、安装与前置
&lt;/h2&gt;&lt;h3 id="1-安装命令"&gt;1) 安装命令
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;clawhub install agentmail
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;clawhub sync --all
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="2-邮件连接准备"&gt;2) 邮件连接准备
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;配置 IMAP/SMTP 或服务商 API。&lt;/li&gt;
&lt;li&gt;使用专用应用密码，不直接暴露主账号密码。&lt;/li&gt;
&lt;li&gt;先在测试邮箱验证规则，再迁移生产邮箱。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="四使用方法"&gt;四、使用方法
&lt;/h2&gt;&lt;h3 id="step-1定义分类规则"&gt;Step 1：定义分类规则
&lt;/h3&gt;&lt;p&gt;建议至少包含：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;紧急问题&lt;/li&gt;
&lt;li&gt;业务合作&lt;/li&gt;
&lt;li&gt;系统通知&lt;/li&gt;
&lt;li&gt;可延后处理&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="step-2生成摘要与待办"&gt;Step 2：生成摘要与待办
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/skill agentmail
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;整理今天未读邮件，按紧急级别排序，输出三段式摘要并提炼待办事项。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="step-3生成回复草稿"&gt;Step 3：生成回复草稿
&lt;/h3&gt;&lt;p&gt;对标准问题先自动生成草稿，再人工一键确认发送。&lt;/p&gt;
&lt;h3 id="step-4联动任务系统"&gt;Step 4：联动任务系统
&lt;/h3&gt;&lt;p&gt;把关键邮件自动转为任务卡片，避免遗漏。&lt;/p&gt;
&lt;h2 id="五注意事项"&gt;五、注意事项
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;外发必须可控&lt;/strong&gt;：默认先生成草稿，不建议自动外发。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;隐私与合规&lt;/strong&gt;：涉及个人信息和合同内容要严格脱敏。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;误分类风险&lt;/strong&gt;：高优先级分类必须保留人工复核。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;规则迭代&lt;/strong&gt;：每周复盘错分样本并修正规则。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;邮件回环&lt;/strong&gt;：防止自动回复触发无限邮件循环。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="六常见问题"&gt;六、常见问题
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;邮件抓取不完整：检查同步时间窗和分页参数。&lt;/li&gt;
&lt;li&gt;分类准确率低：补充业务词表与历史样本。&lt;/li&gt;
&lt;li&gt;回复语气不合适：为不同对象建立模板库。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="七落地清单"&gt;七、落地清单
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;先落地“摘要 + 待办提取”两个核心功能。&lt;/li&gt;
&lt;li&gt;第二阶段上线“回复草稿”能力。&lt;/li&gt;
&lt;li&gt;第三阶段再做跨系统任务联动。&lt;/li&gt;
&lt;li&gt;建立邮件自动化审计与回溯机制。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="八参考资料"&gt;八、参考资料
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;AgentMail Skill：https://github.com/sundial-org/awesome-openclaw-skills/tree/main/skills/agentmail&lt;/li&gt;
&lt;li&gt;OpenClaw Skills 文档：https://docs.openclaw.ai/skills&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>OpenClaw Skill 10：Compound-Engineering 工程评审流水线</title><link>https://f50a586b.blog-run.pages.dev/docs/openclaw-skill-10-compound-engineering%E5%B7%A5%E7%A8%8B%E8%AF%84%E5%AE%A1%E6%B5%81%E6%B0%B4%E7%BA%BF/</link><pubDate>Tue, 10 Mar 2026 00:00:00 +0000</pubDate><guid>https://f50a586b.blog-run.pages.dev/docs/openclaw-skill-10-compound-engineering%E5%B7%A5%E7%A8%8B%E8%AF%84%E5%AE%A1%E6%B5%81%E6%B0%B4%E7%BA%BF/</guid><description>&lt;h2 id="一skill-定位"&gt;一、Skill 定位
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Compound-Engineering&lt;/code&gt; 关注的是“复杂工程任务的分阶段协同”。&lt;br&gt;
它把需求理解、方案设计、代码检查、风险评估、发布准备串成统一流程，减少单点失误。&lt;/p&gt;
&lt;h2 id="二适用场景"&gt;二、适用场景
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;需求频繁变更、跨角色协作复杂的项目。&lt;/li&gt;
&lt;li&gt;需要把评审流程标准化的研发团队。&lt;/li&gt;
&lt;li&gt;上线风险高、需要多环节质量门禁的业务。&lt;/li&gt;
&lt;li&gt;需要沉淀工程最佳实践与复盘机制。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="三安装与前置"&gt;三、安装与前置
&lt;/h2&gt;&lt;h3 id="1-安装命令"&gt;1) 安装命令
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;clawhub install compound-engineering
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;clawhub sync --all
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="2-推荐准备项"&gt;2) 推荐准备项
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;统一代码规范与分支策略。&lt;/li&gt;
&lt;li&gt;基础 CI（测试、Lint、构建）已可运行。&lt;/li&gt;
&lt;li&gt;明确评审角色与责任边界。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="四使用方法"&gt;四、使用方法
&lt;/h2&gt;&lt;h3 id="step-1任务拆解"&gt;Step 1：任务拆解
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/skill compound-engineering
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;对“新增支付回调模块”做工程拆解，输出需求澄清、实现步骤、测试策略与上线检查项。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="step-2分阶段评审"&gt;Step 2：分阶段评审
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;设计评审：检查架构与边界。&lt;/li&gt;
&lt;li&gt;实现评审：检查代码质量与可维护性。&lt;/li&gt;
&lt;li&gt;风险评审：检查安全、性能、回滚方案。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="step-3输出标准化结论"&gt;Step 3：输出标准化结论
&lt;/h3&gt;&lt;p&gt;固定输出模板建议：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;关键问题（按优先级）&lt;/li&gt;
&lt;li&gt;修复建议&lt;/li&gt;
&lt;li&gt;阻塞项&lt;/li&gt;
&lt;li&gt;可上线条件&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="step-4形成闭环"&gt;Step 4：形成闭环
&lt;/h3&gt;&lt;p&gt;评审结果自动同步到任务系统，跟踪问题状态直到关闭。&lt;/p&gt;
&lt;h2 id="五注意事项"&gt;五、注意事项
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;避免过度流程化&lt;/strong&gt;：小需求采用轻量流程，大需求走完整流水线。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;保持可追溯&lt;/strong&gt;：每条评审意见都要有定位和责任人。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不要忽略回滚&lt;/strong&gt;：发布策略必须包含失败回滚路径。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;防止伪通过&lt;/strong&gt;：关键门禁不允许“人工口头放行”。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;持续复盘&lt;/strong&gt;：上线后对照评审结论评估准确率。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="六常见问题"&gt;六、常见问题
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;评审结论太泛：要求必须定位到模块/文件/风险等级。&lt;/li&gt;
&lt;li&gt;改了但又回归：引入回归测试与自动检查。&lt;/li&gt;
&lt;li&gt;流程太慢：对低风险任务启用快速通道。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="七落地清单"&gt;七、落地清单
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;先选一个核心项目试运行两周。&lt;/li&gt;
&lt;li&gt;固化“拆解-评审-修复-验证-上线”模板。&lt;/li&gt;
&lt;li&gt;把评审结果接入看板做状态跟踪。&lt;/li&gt;
&lt;li&gt;每月复盘一次流程效率与线上事故数据。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="八参考资料"&gt;八、参考资料
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;Compound-Engineering Skill：https://github.com/sundial-org/awesome-openclaw-skills/tree/main/skills/compound-engineering&lt;/li&gt;
&lt;li&gt;OpenClaw Skills 文档：https://docs.openclaw.ai/skills&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>SiliconFlow 邀请码 rVyGSYMu：注册入口与使用说明（2026）</title><link>https://f50a586b.blog-run.pages.dev/docs/siliconflow-invite-code-rvygsymu/</link><pubDate>Tue, 10 Mar 2026 00:00:00 +0000</pubDate><guid>https://f50a586b.blog-run.pages.dev/docs/siliconflow-invite-code-rvygsymu/</guid><description>&lt;p&gt;&lt;strong&gt;这是一篇面向新用户的快速指南：直接给出可用邀请码与邀请链接，并说明为什么通过邀请入口注册更省时间、更稳定。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="邀请码与邀请链接"&gt;邀请码与邀请链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;邀请码：&lt;code&gt;rVyGSYMu&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;邀请链接：&lt;a class="link" href="https://cloud.siliconflow.cn/i/rVyGSYMu" target="_blank" rel="noopener"
 &gt;https://cloud.siliconflow.cn/i/rVyGSYMu&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;活动要点&lt;/strong&gt;：根据活动说明，已完成实名认证的推荐官邀请新用户；当被邀请人完成&lt;strong&gt;注册 + 实名认证&lt;/strong&gt;后，邀请人可获得对应奖励券。具体发放与规则以平台当期页面为准。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="为什么建议优先使用邀请链接注册"&gt;为什么建议优先使用邀请链接注册
&lt;/h2&gt;&lt;p&gt;如果正准备注册 SiliconFlow，但手上暂时没有朋友分享入口，直接使用可用邀请链接有三个现实好处：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;减少查找成本&lt;/strong&gt;：不用反复比对多个来源，避免无效邀请码。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;降低输入错误&lt;/strong&gt;：链接可直接带入邀请信息，省去手动填写造成的错漏。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;更快完成流程&lt;/strong&gt;：进入页面后即可按步骤完成注册与实名认证，不耽误后续使用。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="新用户注册流程简版"&gt;新用户注册流程（简版）
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;打开邀请链接：&lt;a class="link" href="https://cloud.siliconflow.cn/i/rVyGSYMu" target="_blank" rel="noopener"
 &gt;https://cloud.siliconflow.cn/i/rVyGSYMu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;按页面提示完成账号注册。&lt;/li&gt;
&lt;li&gt;根据平台要求完成实名认证。&lt;/li&gt;
&lt;li&gt;登录控制台，开始配置与使用对应服务。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="使用邀请入口的价值给首次用户"&gt;使用邀请入口的价值（给首次用户）
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;决策更直接&lt;/strong&gt;：不需要先做“邀请码可用性验证”。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;路径更清晰&lt;/strong&gt;：从入口到实名认证，流程连续。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;节省首次上手时间&lt;/strong&gt;：把时间留给真正需要的事情，例如模型体验、API 调试和业务落地。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="常见问题"&gt;常见问题
&lt;/h2&gt;&lt;h3 id="q1不通过链接手动输入邀请码可以吗"&gt;Q1：不通过链接，手动输入邀请码可以吗？
&lt;/h3&gt;&lt;p&gt;可以。邀请码为 &lt;code&gt;rVyGSYMu&lt;/code&gt;。若追求省步骤，建议直接使用邀请链接。&lt;/p&gt;
&lt;h3 id="q2注册后需要马上做什么"&gt;Q2：注册后需要马上做什么？
&lt;/h3&gt;&lt;p&gt;建议第一时间完成实名认证，避免后续功能和活动条件不匹配。&lt;/p&gt;
&lt;h3 id="q3活动奖励如何计算"&gt;Q3：活动奖励如何计算？
&lt;/h3&gt;&lt;p&gt;当前活动说明为“每成功邀请 1 位符合条件的新用户，对应 1 次奖励记录”。最终以平台活动页实时规则为准。&lt;/p&gt;
&lt;h2 id="关键词覆盖seo"&gt;关键词覆盖（SEO）
&lt;/h2&gt;&lt;p&gt;本文覆盖以下检索词：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SiliconFlow 邀请码&lt;/li&gt;
&lt;li&gt;硅基流动邀请码&lt;/li&gt;
&lt;li&gt;rVyGSYMu&lt;/li&gt;
&lt;li&gt;SiliconFlow 注册&lt;/li&gt;
&lt;li&gt;SiliconFlow 实名认证&lt;/li&gt;
&lt;li&gt;硅基流动邀请链接&lt;/li&gt;
&lt;/ul&gt;
&lt;script type="application/ld+json"&gt;
{
 "@context": "https://schema.org",
 "@type": "FAQPage",
 "mainEntity": [
 {
 "@type": "Question",
 "name": "不通过链接，手动输入邀请码可以吗？",
 "acceptedAnswer": {
 "@type": "Answer",
 "text": "可以，邀请码为 rVyGSYMu。建议直接使用邀请链接以减少步骤与输入错误。"
 }
 },
 {
 "@type": "Question",
 "name": "注册后需要马上做什么？",
 "acceptedAnswer": {
 "@type": "Answer",
 "text": "建议优先完成实名认证，确保后续功能使用与活动条件匹配。"
 }
 },
 {
 "@type": "Question",
 "name": "活动奖励如何计算？",
 "acceptedAnswer": {
 "@type": "Answer",
 "text": "根据活动说明，每成功邀请 1 位符合条件的新用户，对应 1 次奖励记录。以平台最新活动规则为准。"
 }
 }
 ]
}
&lt;/script&gt;</description></item><item><title>Openclaw Skills 与常见功能清单（实战版）</title><link>https://f50a586b.blog-run.pages.dev/docs/openclaw-skills%E4%B8%8E%E5%B8%B8%E8%A7%81%E5%8A%9F%E8%83%BD%E6%B8%85%E5%8D%95/</link><pubDate>Mon, 09 Mar 2026 00:00:00 +0000</pubDate><guid>https://f50a586b.blog-run.pages.dev/docs/openclaw-skills%E4%B8%8E%E5%B8%B8%E8%A7%81%E5%8A%9F%E8%83%BD%E6%B8%85%E5%8D%95/</guid><description>&lt;p&gt;&lt;strong&gt;这篇文档聚焦实操落地：先装什么、先开哪些功能、如何减少踩坑。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="1-先建立统一认知skilltoolcommand-是三层"&gt;1. 先建立统一认知：Skill、Tool、Command 是三层
&lt;/h2&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;层级&lt;/th&gt;
 &lt;th&gt;作用&lt;/th&gt;
 &lt;th&gt;典型用途&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Skill&lt;/td&gt;
 &lt;td&gt;任务方法包（&lt;code&gt;SKILL.md&lt;/code&gt; + 规则）&lt;/td&gt;
 &lt;td&gt;用于“告诉 Agent 怎么做事”&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Tool&lt;/td&gt;
 &lt;td&gt;网关原生能力（如 browser、cron、message）&lt;/td&gt;
 &lt;td&gt;用于“真正执行动作”&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Slash Command&lt;/td&gt;
 &lt;td&gt;聊天入口控制命令（如 &lt;code&gt;/skill&lt;/code&gt;、&lt;code&gt;/context&lt;/code&gt;）&lt;/td&gt;
 &lt;td&gt;用于“调度和观察”&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;一句话：&lt;strong&gt;Skill 负责策略，Tool 负责执行，Command 负责调度。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="2-skills-必知规则官方"&gt;2. Skills 必知规则（官方）
&lt;/h2&gt;&lt;h3 id="21-加载优先级冲突时谁生效"&gt;2.1 加载优先级（冲突时谁生效）
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;workspace&amp;gt;/skills&lt;/code&gt;（最高）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;~/.openclaw/skills&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;bundled skills（安装内置，最低）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这意味着：在项目里放同名 skill，可以覆盖全局或内置行为。&lt;/p&gt;
&lt;h3 id="22-推荐的技能管理动作"&gt;2.2 推荐的技能管理动作
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 安装某个 skill 到当前工作区&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;clawhub install &amp;lt;skill-slug&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 更新全部已装 skill&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;clawhub update --all
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 扫描并同步&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;clawhub sync --all
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="23-新手最容易忽略的安全点"&gt;2.3 新手最容易忽略的安全点
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;第三方 skill 一律按“不可信代码”处理。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;skills.entries.*.env&lt;/code&gt; / &lt;code&gt;apiKey&lt;/code&gt; 会把密钥注入主机进程（不是沙箱）。&lt;/li&gt;
&lt;li&gt;有风险 skill 先放隔离环境跑，再上生产机。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="3-推荐优先做的-12-类-skill每项只讲核心"&gt;3. 推荐优先做的 12 类 Skill（每项只讲核心）
&lt;/h2&gt;
 &lt;blockquote&gt;
 &lt;p&gt;下面是“方向清单”，用于快速搭建体系。单项介绍保持简短，重点给出可执行路径。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Skill 方向&lt;/th&gt;
 &lt;th&gt;解决的问题&lt;/th&gt;
 &lt;th&gt;最小落地建议&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;文档检索 skill&lt;/td&gt;
 &lt;td&gt;多文档问答不稳定&lt;/td&gt;
 &lt;td&gt;先限定目录范围，再做摘要输出&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;会议纪要 skill&lt;/td&gt;
 &lt;td&gt;会议后整理慢&lt;/td&gt;
 &lt;td&gt;固定模板：结论/待办/负责人/截止时间&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;日报周报 skill&lt;/td&gt;
 &lt;td&gt;重复写汇报&lt;/td&gt;
 &lt;td&gt;从 Git 提交 + issue +群聊汇总生成&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;运维巡检 skill&lt;/td&gt;
 &lt;td&gt;例行检查零散&lt;/td&gt;
 &lt;td&gt;输出固定巡检表（CPU/内存/磁盘/告警）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;发布检查 skill&lt;/td&gt;
 &lt;td&gt;上线前漏项&lt;/td&gt;
 &lt;td&gt;做“发布前 Checklist”自动核对&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;数据拉取 skill&lt;/td&gt;
 &lt;td&gt;查数流程重复&lt;/td&gt;
 &lt;td&gt;固化参数校验 + 超时重试&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;客服 FAQ skill&lt;/td&gt;
 &lt;td&gt;回复口径不统一&lt;/td&gt;
 &lt;td&gt;强制走知识库引用，不允许编造&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;代码审查 skill&lt;/td&gt;
 &lt;td&gt;review 标准不一致&lt;/td&gt;
 &lt;td&gt;固定输出：风险级别 + 文件定位 +建议&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;舆情监控 skill&lt;/td&gt;
 &lt;td&gt;信息分散&lt;/td&gt;
 &lt;td&gt;关键词 + 时间窗 + 去重汇总&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;竞品跟踪 skill&lt;/td&gt;
 &lt;td&gt;对比更新慢&lt;/td&gt;
 &lt;td&gt;周期化抓取官网更新与发布日志&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;招聘筛选 skill&lt;/td&gt;
 &lt;td&gt;简历初筛耗时&lt;/td&gt;
 &lt;td&gt;规则化打分 + 人工复核结论&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;安全检查 skill&lt;/td&gt;
 &lt;td&gt;安全项靠手工&lt;/td&gt;
 &lt;td&gt;对配置、权限、明文密钥做例行扫描&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="4-常见功能清单高频可直接抄"&gt;4. 常见功能清单（高频、可直接抄）
&lt;/h2&gt;&lt;h3 id="41-运行某个-skill"&gt;4.1 运行某个 skill
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/skill &amp;lt;name&amp;gt; [input]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;适合：快速调用某个明确能力，不走长对话试探。&lt;/p&gt;
&lt;h3 id="42-看上下文是否超载"&gt;4.2 看上下文是否超载
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/context detail
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;适合：回复质量突然下降、成本异常时排查。&lt;/p&gt;
&lt;h3 id="43-快速换模型看模型状态"&gt;4.3 快速换模型/看模型状态
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/model list
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/model &amp;lt;provider/model&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/model status
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;适合：同一任务切换“快模型/强模型”。&lt;/p&gt;
&lt;h3 id="44-观察与控制子代理并行"&gt;4.4 观察与控制子代理并行
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/subagents list
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/subagents info &amp;lt;id&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/subagents kill &amp;lt;id|all&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;适合：研究、抓取、整理这类可并行任务。&lt;/p&gt;
&lt;h3 id="45-给每条回复附成本token"&gt;4.5 给每条回复附成本/Token
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/usage tokens
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/usage full
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/usage cost
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;适合：做成本治理，防止“看起来正常但实际很贵”。&lt;/p&gt;
&lt;h3 id="46-需要时才开-bash-执行"&gt;4.6 需要时才开 Bash 执行
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# 需先配置 commands.bash
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;! &amp;lt;command&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;!poll
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;!stop
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;适合：运维场景；不建议在高风险群聊里常开。&lt;/p&gt;
&lt;h3 id="47-创建一次性提醒cron"&gt;4.7 创建一次性提醒（cron）
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;openclaw cron add &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --name &lt;span class="s2"&gt;&amp;#34;Reminder&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --at &lt;span class="s2"&gt;&amp;#34;2026-03-10T08:00:00Z&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --session main &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --system-event &lt;span class="s2"&gt;&amp;#34;提醒：检查昨日告警&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --wake now &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --delete-after-run
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;适合：轻量自动化，不需要外部调度系统。&lt;/p&gt;
&lt;h3 id="48-开启-hooks-做审计与记忆沉淀"&gt;4.8 开启 hooks 做审计与记忆沉淀
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;openclaw hooks list
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;openclaw hooks &lt;span class="nb"&gt;enable&lt;/span&gt; session-memory
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;openclaw hooks &lt;span class="nb"&gt;enable&lt;/span&gt; command-logger
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;openclaw hooks check
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;适合：要追溯“谁在什么时间触发了什么动作”。&lt;/p&gt;
&lt;h3 id="49-用工具配置收敛风险面"&gt;4.9 用工具配置收敛风险面
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;tools&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;profile&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;coding&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;deny&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;group:runtime&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;适合：默认可用，敏感执行默认禁止。&lt;/p&gt;
&lt;h3 id="410-跨渠道发送消息message-tool"&gt;4.10 跨渠道发送消息（message tool）
&lt;/h3&gt;&lt;p&gt;官方 &lt;code&gt;message&lt;/code&gt; 工具支持 Discord/Slack/Telegram/WhatsApp/Signal/iMessage 等动作（send/react/thread/pin 等）。&lt;/p&gt;
&lt;p&gt;适合：同一工作流多渠道通知。&lt;/p&gt;
&lt;h2 id="5-使用技巧结合社区分享的高频经验"&gt;5. 使用技巧（结合社区分享的高频经验）
&lt;/h2&gt;&lt;h3 id="技巧-a先少量-skill后扩容"&gt;技巧 A：先少量 skill，后扩容
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;首批只保留 3-5 个高频 skill。&lt;/li&gt;
&lt;li&gt;连续一周稳定后再扩展。&lt;/li&gt;
&lt;li&gt;删除长期不用 skill，降低攻击面和提示词噪音。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="技巧-b把可控性放在炫技前面"&gt;技巧 B：把“可控性”放在“炫技”前面
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;优先开 &lt;code&gt;tools.profile&lt;/code&gt;，再按需 &lt;code&gt;allow&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;高频群聊不建议常开 &lt;code&gt;/verbose&lt;/code&gt;、&lt;code&gt;/reasoning&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;管理命令尽量放 owner-only 环境。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="技巧-c把安全审查变成固定流程"&gt;技巧 C：把“安全审查”变成固定流程
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;新 skill 必做：读 &lt;code&gt;SKILL.md&lt;/code&gt; + 看安装步骤 + 看是否要求执行外部脚本。&lt;/li&gt;
&lt;li&gt;若 skill 引导手工执行可疑命令，默认判定高风险。&lt;/li&gt;
&lt;li&gt;尽量在隔离环境先试跑。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="技巧-d把可观测做在前面"&gt;技巧 D：把“可观测”做在前面
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;开启 command logger / session memory。&lt;/li&gt;
&lt;li&gt;关键流程记录输入、输出、失败原因。&lt;/li&gt;
&lt;li&gt;形成“失败可复盘”的工程习惯。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="6-近期风险提醒来自公开分享文章"&gt;6. 近期风险提醒（来自公开分享文章）
&lt;/h2&gt;&lt;p&gt;多家技术媒体与社区在 2026 年 1-3 月持续提到：Openclaw 生态中存在恶意 skill、钓鱼分发、以及配置失误导致的安全问题。对普通用户最实用的结论是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;只从官方文档与可信仓库进入安装链路&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;第三方 skill 全部先审再用&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;保持版本更新并及时打安全补丁&lt;/strong&gt;。&lt;/li&gt;
&lt;/ol&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;注意&lt;/strong&gt;：不要把 Skill 当“普通文档”看待。&lt;br&gt;
在 Openclaw 里，Skill 实际上是“可触发执行路径”的能力单元，安全要求应按“代码上线”标准执行。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="7-参考链接可核验"&gt;7. 参考链接（可核验）
&lt;/h2&gt;&lt;h3 id="官方文档"&gt;官方文档
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;Install: &lt;a class="link" href="https://docs.openclaw.ai/install/index" target="_blank" rel="noopener"
 &gt;https://docs.openclaw.ai/install/index&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: &lt;a class="link" href="https://docs.openclaw.ai/skills" target="_blank" rel="noopener"
 &gt;https://docs.openclaw.ai/skills&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Slash Commands: &lt;a class="link" href="https://docs.openclaw.ai/slash-commands" target="_blank" rel="noopener"
 &gt;https://docs.openclaw.ai/slash-commands&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Tools: &lt;a class="link" href="https://docs.openclaw.ai/tools" target="_blank" rel="noopener"
 &gt;https://docs.openclaw.ai/tools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Hooks: &lt;a class="link" href="https://docs.openclaw.ai/automation/hooks" target="_blank" rel="noopener"
 &gt;https://docs.openclaw.ai/automation/hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Cron Jobs: &lt;a class="link" href="https://docs.openclaw.ai/cron/" target="_blank" rel="noopener"
 &gt;https://docs.openclaw.ai/cron/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Sub-Agents: &lt;a class="link" href="https://docs.openclaw.ai/tools/subagents" target="_blank" rel="noopener"
 &gt;https://docs.openclaw.ai/tools/subagents&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="分享文章社区讨论用于经验侧补充"&gt;分享文章/社区讨论（用于经验侧补充）
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;The Verge（技能生态安全讨论）: &lt;a class="link" href="https://www.theverge.com/news/874011/openclaw-ai-skill-clawhub-extensions-security-nightmare" target="_blank" rel="noopener"
 &gt;https://www.theverge.com/news/874011/openclaw-ai-skill-clawhub-extensions-security-nightmare&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Tom&amp;rsquo;s Hardware（恶意 skill 事件报道）: &lt;a class="link" href="https://www.tomshardware.com/tech-industry/cyber-security/malicious-moltbot-skill-targets-crypto-users-on-clawhub" target="_blank" rel="noopener"
 &gt;https://www.tomshardware.com/tech-industry/cyber-security/malicious-moltbot-skill-targets-crypto-users-on-clawhub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;TechRadar（安全漏洞报道）: &lt;a class="link" href="https://www.techradar.com/pro/security/a-human-chosen-password-doesnt-stand-a-chance-openclaw-has-yet-another-major-security-flaw-heres-what-we-know-about-clawjacked" target="_blank" rel="noopener"
 &gt;https://www.techradar.com/pro/security/a-human-chosen-password-doesnt-stand-a-chance-openclaw-has-yet-another-major-security-flaw-heres-what-we-know-about-clawjacked&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Reddit（社区告警样本）: &lt;a class="link" href="https://www.reddit.com/r/openclaw/comments/1r2enjm/psa_openclaws_skills_are_compromised/" target="_blank" rel="noopener"
 &gt;https://www.reddit.com/r/openclaw/comments/1r2enjm/psa_openclaws_skills_are_compromised/&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="公众号参考链接"&gt;公众号参考链接
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;a class="link" href="https://mp.weixin.qq.com/s/g1mFpR4gy00Gi5MX2Hs07Q" target="_blank" rel="noopener"
 &gt;https://mp.weixin.qq.com/s/g1mFpR4gy00Gi5MX2Hs07Q&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Openclaw 项目入门：是什么、能做什么、怎么安全使用</title><link>https://f50a586b.blog-run.pages.dev/docs/openclaw%E9%A1%B9%E7%9B%AE%E5%85%A5%E9%97%A8/</link><pubDate>Mon, 09 Mar 2026 00:00:00 +0000</pubDate><guid>https://f50a586b.blog-run.pages.dev/docs/openclaw%E9%A1%B9%E7%9B%AE%E5%85%A5%E9%97%A8/</guid><description>
 &lt;blockquote&gt;
 &lt;p&gt;官方仓库（建议只从这里进入）：&lt;br&gt;
&lt;a class="link" href="https://github.com/openclaw/openclaw" target="_blank" rel="noopener"
 &gt;https://github.com/openclaw/openclaw&lt;/a&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="openclaw-是什么"&gt;Openclaw 是什么
&lt;/h2&gt;&lt;p&gt;Openclaw 可以理解为一个“可执行任务的个人 AI 助手”框架。&lt;br&gt;
它不是只聊天的机器人，而是更偏向 Agent：能接入你的工具、读取上下文、执行任务并返回结果。&lt;/p&gt;
&lt;h2 id="这个项目的作用"&gt;这个项目的作用
&lt;/h2&gt;&lt;p&gt;它的核心价值是把“问答”变成“动作”：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;把多个工具统一接入到一个助手里（消息、文档、任务、自动化等）。&lt;/li&gt;
&lt;li&gt;让重复流程自动化（例如定时汇总、跨工具同步、提醒与追踪）。&lt;/li&gt;
&lt;li&gt;给个人或小团队提供可自托管、可扩展的 Agent 工作流底座。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="能做些啥典型能力"&gt;能做些啥（典型能力）
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;多渠道交互：在你常用的沟通入口里与助手对话并下发任务。&lt;/li&gt;
&lt;li&gt;工具连接：对接外部服务后，执行查询、整理、分发等动作。&lt;/li&gt;
&lt;li&gt;自动化执行：把固定流程编排成可重复执行的任务。&lt;/li&gt;
&lt;li&gt;可扩展能力：通过插件/技能机制扩展新场景。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="需要注意些啥务必先看"&gt;需要注意些啥（务必先看）
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;权限边界：Agent 拿到什么权限，就可能执行到什么程度；最小权限原则要先落地。&lt;/li&gt;
&lt;li&gt;数据安全：敏感信息（API Key、私有文档、数据库凭据）必须隔离存储与审计。&lt;/li&gt;
&lt;li&gt;来源可信：只从官方仓库和官方文档安装，不要直接运行来路不明的脚本或“二次打包版”。&lt;/li&gt;
&lt;li&gt;成本控制：接入模型和外部服务后要做调用限额、重试和预算告警。&lt;/li&gt;
&lt;li&gt;生产前验证：先在测试环境做流程演练，再逐步放量到正式场景。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="围绕-openclaw-的花边新闻社区讨论点"&gt;围绕 Openclaw 的“花边新闻”（社区讨论点）
&lt;/h2&gt;&lt;p&gt;下面是近期开源社区里最常见的话题方向（更偏“趋势观察”）：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;生态增长很快：围绕插件、部署、最佳实践的二级项目越来越多。&lt;/li&gt;
&lt;li&gt;安全话题持续升温：越“能干活”的 Agent，越要重视权限和供应链安全。&lt;/li&gt;
&lt;li&gt;架构路线争议：社区常讨论“RAG 优先”还是“工具调用优先”，Openclaw 通常被放在后者语境里对比。&lt;/li&gt;
&lt;/ol&gt;

 &lt;blockquote&gt;
 &lt;p&gt;说明：花边信息更新快、噪声也大，建议以仓库 &lt;code&gt;README&lt;/code&gt;、&lt;code&gt;Issues&lt;/code&gt;、&lt;code&gt;Discussions&lt;/code&gt; 和官方发布说明为准。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="建议的学习路径"&gt;建议的学习路径
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;先通读官方 README，明确架构和依赖。&lt;/li&gt;
&lt;li&gt;用最小可用配置跑通一个简单自动化流程。&lt;/li&gt;
&lt;li&gt;再逐步增加连接器、权限策略和监控告警。&lt;/li&gt;
&lt;li&gt;最后再进入复杂业务编排，避免一开始“全家桶”导致排错困难。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="参考链接"&gt;参考链接
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;Openclaw GitHub: &lt;a class="link" href="https://github.com/openclaw/openclaw" target="_blank" rel="noopener"
 &gt;https://github.com/openclaw/openclaw&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Openclaw 原生安装路径与第三方搭建全指南</title><link>https://f50a586b.blog-run.pages.dev/docs/openclaw%E5%8E%9F%E7%94%9F%E5%AE%89%E8%A3%85%E4%B8%8E%E7%AC%AC%E4%B8%89%E6%96%B9%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97/</link><pubDate>Mon, 09 Mar 2026 00:00:00 +0000</pubDate><guid>https://f50a586b.blog-run.pages.dev/docs/openclaw%E5%8E%9F%E7%94%9F%E5%AE%89%E8%A3%85%E4%B8%8E%E7%AC%AC%E4%B8%89%E6%96%B9%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97/</guid><description>&lt;p&gt;&lt;strong&gt;这是一份面向新手的 Openclaw 安装与部署实操手册：先本地跑通，再决定上云，最后补齐安全与运维。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="Openclaw 安装部署示意图" class="gallery-image" data-flex-basis="360px" data-flex-grow="150" data-title-escaped="Openclaw 安装部署示意图" height="1280" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://f50a586b.blog-run.pages.dev/docs/openclaw%E5%8E%9F%E7%94%9F%E5%AE%89%E8%A3%85%E4%B8%8E%E7%AC%AC%E4%B8%89%E6%96%B9%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97/feature.jpg" title="Openclaw 安装部署示意图" width="1920"&gt;&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;版本说明（2026-03-09）&lt;/strong&gt;：文中命令与路径基于 Openclaw 官方文档和官方仓库整理。若后续版本有差异，优先以官方文档最新说明为准。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="一图看懂先选哪条安装路线"&gt;一图看懂：先选哪条安装路线
&lt;/h2&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;路线&lt;/th&gt;
 &lt;th&gt;适合谁&lt;/th&gt;
 &lt;th style="text-align: right"&gt;上手速度&lt;/th&gt;
 &lt;th style="text-align: right"&gt;可控性&lt;/th&gt;
 &lt;th style="text-align: right"&gt;推荐指数&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;官方安装脚本&lt;/td&gt;
 &lt;td&gt;第一次接触 Openclaw&lt;/td&gt;
 &lt;td style="text-align: right"&gt;很快&lt;/td&gt;
 &lt;td style="text-align: right"&gt;中&lt;/td&gt;
 &lt;td style="text-align: right"&gt;⭐⭐⭐⭐⭐&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;npm / pnpm 全局安装&lt;/td&gt;
 &lt;td&gt;有 Node 经验&lt;/td&gt;
 &lt;td style="text-align: right"&gt;快&lt;/td&gt;
 &lt;td style="text-align: right"&gt;中高&lt;/td&gt;
 &lt;td style="text-align: right"&gt;⭐⭐⭐⭐&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;install-cli 前缀安装&lt;/td&gt;
 &lt;td&gt;无 root 权限环境&lt;/td&gt;
 &lt;td style="text-align: right"&gt;中&lt;/td&gt;
 &lt;td style="text-align: right"&gt;高&lt;/td&gt;
 &lt;td style="text-align: right"&gt;⭐⭐⭐⭐&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;源码构建安装&lt;/td&gt;
 &lt;td&gt;二开/深度定制&lt;/td&gt;
 &lt;td style="text-align: right"&gt;慢&lt;/td&gt;
 &lt;td style="text-align: right"&gt;很高&lt;/td&gt;
 &lt;td style="text-align: right"&gt;⭐⭐⭐&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;第三方托管（Railway/Render/Northflank）&lt;/td&gt;
 &lt;td&gt;想快速上线&lt;/td&gt;
 &lt;td style="text-align: right"&gt;很快&lt;/td&gt;
 &lt;td style="text-align: right"&gt;中&lt;/td&gt;
 &lt;td style="text-align: right"&gt;⭐⭐⭐⭐&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;建议顺序&lt;/strong&gt;：&lt;strong&gt;本地跑通&lt;/strong&gt; -&amp;gt; &lt;strong&gt;确认业务需求&lt;/strong&gt; -&amp;gt; &lt;strong&gt;再决定托管平台&lt;/strong&gt;。&lt;br&gt;
不要一上来就做复杂生产部署，否则排错成本会很高。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="路径一官方安装脚本最推荐"&gt;路径一：官方安装脚本（最推荐）
&lt;/h2&gt;&lt;h3 id="1-环境前置检查"&gt;1) 环境前置检查
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# macOS / Linux&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;uname -a
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;node -v
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Node 建议 &lt;code&gt;22+&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Windows 建议优先使用 WSL2&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="2-执行安装"&gt;2) 执行安装
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -fsSL https://openclaw.ai/install.sh &lt;span class="p"&gt;|&lt;/span&gt; bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Windows PowerShell：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;iwr &lt;/span&gt;&lt;span class="n"&gt;-useb&lt;/span&gt; &lt;span class="n"&gt;https&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="p"&gt;//&lt;/span&gt;&lt;span class="n"&gt;openclaw&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ai&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;install&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;ps1&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="nb"&gt;iex
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="3-首次引导与验证"&gt;3) 首次引导与验证
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;openclaw doctor
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;openclaw status
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;openclaw dashboard
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;doctor&lt;/code&gt;：检查依赖和运行条件&lt;/li&gt;
&lt;li&gt;&lt;code&gt;status&lt;/code&gt;：看服务是否健康&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dashboard&lt;/code&gt;：进入控制台&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="4-常见报错与修复"&gt;4) 常见报错与修复
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;现象&lt;/th&gt;
 &lt;th&gt;原因&lt;/th&gt;
 &lt;th&gt;处理&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;openclaw: command not found&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;全局 bin 不在 PATH&lt;/td&gt;
 &lt;td&gt;补 PATH 后重开终端&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;安装卡住&lt;/td&gt;
 &lt;td&gt;网络/代理问题&lt;/td&gt;
 &lt;td&gt;换网络或配置代理再试&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;权限错误&lt;/td&gt;
 &lt;td&gt;系统权限不足&lt;/td&gt;
 &lt;td&gt;使用用户目录安装或加 sudo（谨慎）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="路径二npm--pnpm-全局安装可控版"&gt;路径二：npm / pnpm 全局安装（可控版）
&lt;/h2&gt;&lt;h3 id="1-安装命令"&gt;1) 安装命令
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm install -g openclaw@latest
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;openclaw onboard --install-daemon
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;或 pnpm：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pnpm add -g openclaw@latest
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pnpm approve-builds -g
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;openclaw onboard --install-daemon
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="2-path-修复模板"&gt;2) PATH 修复模板
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm prefix -g
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$PATH&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果路径缺失，补到 &lt;code&gt;~/.zshrc&lt;/code&gt; 或 &lt;code&gt;~/.bashrc&lt;/code&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;PATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;npm prefix -g&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;/bin:&lt;/span&gt;&lt;span class="nv"&gt;$PATH&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;注意&lt;/strong&gt;：不要同时混用多套 Node 管理器（如 nvm + fnm + 系统 Node）并交叉全局安装，这会造成命令漂移和版本冲突。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="路径三install-cli-前缀安装企业受限环境友好"&gt;路径三：install-cli 前缀安装（企业受限环境友好）
&lt;/h2&gt;&lt;h3 id="1-默认安装用户目录"&gt;1) 默认安装（用户目录）
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -fsSL --proto &lt;span class="s1"&gt;&amp;#39;=https&amp;#39;&lt;/span&gt; --tlsv1.2 https://openclaw.ai/install-cli.sh &lt;span class="p"&gt;|&lt;/span&gt; bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="2-指定安装目录"&gt;2) 指定安装目录
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -fsSL --proto &lt;span class="s1"&gt;&amp;#39;=https&amp;#39;&lt;/span&gt; --tlsv1.2 https://openclaw.ai/install-cli.sh &lt;span class="p"&gt;|&lt;/span&gt; bash -s -- --prefix /opt/openclaw --version latest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="3-自动化安装cicd-可用"&gt;3) 自动化安装（CI/CD 可用）
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -fsSL --proto &lt;span class="s1"&gt;&amp;#39;=https&amp;#39;&lt;/span&gt; --tlsv1.2 https://openclaw.ai/install-cli.sh &lt;span class="p"&gt;|&lt;/span&gt; bash -s -- --json --prefix /opt/openclaw
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这个路径的优势在于：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不污染全局环境&lt;/li&gt;
&lt;li&gt;便于多版本并行测试&lt;/li&gt;
&lt;li&gt;更适合受限服务器权限场景&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="路径四源码构建安装开发者路线"&gt;路径四：源码构建安装（开发者路线）
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone https://github.com/openclaw/openclaw.git
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; openclaw
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pnpm install
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pnpm ui:build
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pnpm build
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pnpm link --global
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;openclaw onboard --install-daemon
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;适用场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需要改 UI 或流程逻辑&lt;/li&gt;
&lt;li&gt;需要提交 PR&lt;/li&gt;
&lt;li&gt;需要做企业内部插件开发&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="第三方部署如何选平台更稳"&gt;第三方部署：如何选平台更稳
&lt;/h2&gt;&lt;h3 id="方案-arailway速度优先"&gt;方案 A：Railway（速度优先）
&lt;/h3&gt;&lt;p&gt;操作流程：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;使用官方模板一键部署。&lt;/li&gt;
&lt;li&gt;配置持久化目录（如 &lt;code&gt;/data&lt;/code&gt;）。&lt;/li&gt;
&lt;li&gt;设置关键环境变量：&lt;code&gt;SETUP_PASSWORD&lt;/code&gt;、&lt;code&gt;PORT&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;访问 &lt;code&gt;https://你的域名/setup&lt;/code&gt; 完成初始化。&lt;/li&gt;
&lt;li&gt;使用 &lt;code&gt;https://你的域名/openclaw&lt;/code&gt; 进入控制台。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;优点：快。&lt;br&gt;
注意点：免费配额与休眠策略要提前评估。&lt;/p&gt;
&lt;h3 id="方案-brender配置可版本化"&gt;方案 B：Render（配置可版本化）
&lt;/h3&gt;&lt;p&gt;操作流程：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;按官方 Blueprint 导入。&lt;/li&gt;
&lt;li&gt;配置 &lt;code&gt;SETUP_PASSWORD&lt;/code&gt; 与持久化磁盘。&lt;/li&gt;
&lt;li&gt;部署完成后访问 &lt;code&gt;/setup&lt;/code&gt; 初始化。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;优点：IaC 友好，团队协作清晰。&lt;br&gt;
注意点：首次构建与冷启动要考虑耗时。&lt;/p&gt;
&lt;h3 id="方案-cnorthflank面板体验好"&gt;方案 C：Northflank（面板体验好）
&lt;/h3&gt;&lt;p&gt;操作流程：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;一键部署官方模板。&lt;/li&gt;
&lt;li&gt;填写环境变量并启动服务。&lt;/li&gt;
&lt;li&gt;打开 &lt;code&gt;/setup&lt;/code&gt; 完成首启配置。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;优点：上手直观。&lt;br&gt;
注意点：资源规格与成本要按实际流量调优。&lt;/p&gt;
&lt;h3 id="方案-dvps--docker长期生产推荐"&gt;方案 D：VPS + Docker（长期生产推荐）
&lt;/h3&gt;&lt;p&gt;建议步骤：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;选稳定 Linux 发行版并更新系统。&lt;/li&gt;
&lt;li&gt;使用官方镜像 &lt;code&gt;ghcr.io/openclaw/openclaw&lt;/code&gt; 部署。&lt;/li&gt;
&lt;li&gt;挂载数据目录，避免容器重建丢状态。&lt;/li&gt;
&lt;li&gt;加反向代理（Nginx/Caddy）并启用 HTTPS。&lt;/li&gt;
&lt;li&gt;增加监控、日志归档、自动备份。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="新手最容易忽略的-6-个坑"&gt;新手最容易忽略的 6 个坑
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;只关注安装，不做权限边界&lt;/strong&gt;：应先定义谁可调用哪些工具。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;把密钥写进仓库&lt;/strong&gt;：应使用环境变量与密钥管理服务。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不做限流与预算控制&lt;/strong&gt;：模型调用量会在高并发下快速放大。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不区分测试环境与生产环境&lt;/strong&gt;：先在测试环境走通再放量。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;无备份策略&lt;/strong&gt;：至少要做每日快照与关键配置备份。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;盲目追新版本&lt;/strong&gt;：生产环境升级前先灰度验证。&lt;/li&gt;
&lt;/ol&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;安全底线&lt;/strong&gt;：最小权限、密钥隔离、日志留痕、可回滚发布。&lt;br&gt;
这四件事做到了，线上风险会下降一个数量级。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="快速验收清单安装后-10-分钟内完成"&gt;快速验收清单（安装后 10 分钟内完成）
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; &lt;code&gt;openclaw doctor&lt;/code&gt; 全项通过&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; &lt;code&gt;openclaw status&lt;/code&gt; 显示运行中&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Dashboard 可访问&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; 至少连接 1 个外部工具并完成一次读写测试&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; 已设置管理员密码与最小权限策略&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; 已启用日志与数据目录备份&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="参考资料官方"&gt;参考资料（官方）
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;Install 总览：https://docs.openclaw.ai/install/index&lt;/li&gt;
&lt;li&gt;Installer Internals：https://docs.openclaw.ai/install/installer&lt;/li&gt;
&lt;li&gt;Docker：https://docs.openclaw.ai/install/docker&lt;/li&gt;
&lt;li&gt;Podman：https://docs.openclaw.ai/install/podman&lt;/li&gt;
&lt;li&gt;Nix：https://docs.openclaw.ai/install/nix&lt;/li&gt;
&lt;li&gt;Ansible：https://docs.openclaw.ai/install/ansible&lt;/li&gt;
&lt;li&gt;Railway：https://docs.openclaw.ai/install/railway&lt;/li&gt;
&lt;li&gt;Render：https://docs.openclaw.ai/install/render&lt;/li&gt;
&lt;li&gt;Northflank：https://docs.openclaw.ai/install/northflank&lt;/li&gt;
&lt;li&gt;OpenClaw GitHub：https://github.com/openclaw/openclaw&lt;/li&gt;
&lt;li&gt;配图来源（Pexels）：https://www.pexels.com/photo/a-close-up-image-of-computer-circuit-board-34804019/&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>深圳龙岗 OpenClaw 补贴政策速览（2026-03）</title><link>https://f50a586b.blog-run.pages.dev/docs/%E6%B7%B1%E5%9C%B3%E9%BE%99%E5%B2%97openclaw%E8%A1%A5%E8%B4%B4%E6%94%BF%E7%AD%96%E9%80%9F%E8%A7%88/</link><pubDate>Mon, 09 Mar 2026 00:00:00 +0000</pubDate><guid>https://f50a586b.blog-run.pages.dev/docs/%E6%B7%B1%E5%9C%B3%E9%BE%99%E5%B2%97openclaw%E8%A1%A5%E8%B4%B4%E6%94%BF%E7%AD%96%E9%80%9F%E8%A7%88/</guid><description>&lt;p&gt;&lt;strong&gt;一句话先说结论：有补贴，但目前还是征求意见稿，正式申报要等最终发布版和实施细则。&lt;/strong&gt;&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;信息更新至 2026 年 3 月 9 日&lt;/strong&gt;：龙岗区公开的是《支持OpenClaw&amp;amp;OPC发展的若干措施（征求意见稿）》。&lt;br&gt;
&lt;strong&gt;公示期&lt;/strong&gt;：2026 年 3 月 7 日至 2026 年 4 月 6 日。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="这次openclaw-补贴核心看点"&gt;这次“OpenClaw 补贴”核心看点
&lt;/h2&gt;&lt;p&gt;和 OpenClaw 直接相关、且最容易被关注的条款，主要是这几类：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;方向&lt;/th&gt;
 &lt;th&gt;支持方式&lt;/th&gt;
 &lt;th style="text-align: right"&gt;额度上限&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;开发推广支持&lt;/td&gt;
 &lt;td&gt;关键代码贡献、产业技能包、具身应用项目&lt;/td&gt;
 &lt;td style="text-align: right"&gt;最高 200 万元&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;数字员工应用券&lt;/td&gt;
 &lt;td&gt;企业采购或自建 OpenClaw 方案，按项目投入比例补贴&lt;/td&gt;
 &lt;td style="text-align: right"&gt;不超过投入 40%，单家企业每年最高 200 万元&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;应用示范项目&lt;/td&gt;
 &lt;td&gt;评选 OpenClaw 深度应用示范&lt;/td&gt;
 &lt;td style="text-align: right"&gt;按实际投入 30% 一次性奖励，最高 100 万元&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;免费部署服务&lt;/td&gt;
 &lt;td&gt;鼓励平台提供 OpenClaw 免费部署服务，政府对平台补贴&lt;/td&gt;
 &lt;td style="text-align: right"&gt;文件写明“给予一定补贴”，未写明确上限&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;另外，文件里还有与 OpenClaw 生态强相关的配套支持：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;AIGC 模型调用补贴：按调用费用 30%，每家每年最高 100 万元。&lt;/li&gt;
&lt;li&gt;算力与场景支持：示范场景最高不超过 400 万元。&lt;/li&gt;
&lt;li&gt;基金融资：符合条件项目最高 1000 万元股权投资支持。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="谁更可能用得上"&gt;谁更可能用得上
&lt;/h2&gt;&lt;p&gt;优先看这三类主体：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在龙岗落地的 OpenClaw 工具开发团队。&lt;/li&gt;
&lt;li&gt;准备用 OpenClaw 做业务数字化的区内企业。&lt;/li&gt;
&lt;li&gt;提供部署、数据、算力、场景服务的平台型机构。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="现在该怎么做实操版"&gt;现在该怎么做（实操版）
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;先按“征求意见稿”预评估项目，别按“已落地政策”做财务承诺。&lt;/li&gt;
&lt;li&gt;提前整理项目投入、代码贡献、场景效果等可核验材料。&lt;/li&gt;
&lt;li&gt;持续盯官方页面，等正式稿和申报细则发布后再按口径申报。&lt;/li&gt;
&lt;li&gt;有疑问可在公示期内按公告联系方式咨询或反馈意见。&lt;/li&gt;
&lt;/ol&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;注意&lt;/strong&gt;：当前文本为征求意见稿，部分条款可能在正式发布时调整；文中“补贴比例/上限”请以最终政策文件为准。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="官方与新闻来源"&gt;官方与新闻来源
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;龙岗区官方公告（2026-03-07）：https://www.lg.gov.cn/bmzz/rgznjqrs/xxgk/qt/tzgg/content/post_12672989.html&lt;/li&gt;
&lt;li&gt;官方附件（征求意见稿 .doc）：https://www.lg.gov.cn/attachment/1/1690/1690481/12672989.doc&lt;/li&gt;
&lt;li&gt;深圳新闻网（2026-03-09）：“龙岗拟推龙虾十条”：https://www.sznews.com/news/content/2026-03/09/content_31969411.htm&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Psnr对比图片画质</title><link>https://f50a586b.blog-run.pages.dev/docs/psnr%E5%AF%B9%E6%AF%94%E5%9B%BE%E7%89%87%E7%94%BB%E8%B4%A8/</link><pubDate>Thu, 02 Oct 2025 00:00:00 +0000</pubDate><guid>https://f50a586b.blog-run.pages.dev/docs/psnr%E5%AF%B9%E6%AF%94%E5%9B%BE%E7%89%87%E7%94%BB%E8%B4%A8/</guid><description>&lt;h3 id="31-典型评价尺度"&gt;3.1 典型评价尺度
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;PSNR范围(dB)&lt;/th&gt;
 &lt;th&gt;图像质量评价&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&amp;gt;40&lt;/td&gt;
 &lt;td&gt;极好（肉眼不可辨差异）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;30-40&lt;/td&gt;
 &lt;td&gt;良好（可接受质量）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;20-30&lt;/td&gt;
 &lt;td&gt;较差（明显失真）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&amp;lt;20&lt;/td&gt;
 &lt;td&gt;严重失真（不可接受）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;numpy&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nn"&gt;np&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;cv2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;matplotlib.pyplot&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nn"&gt;plt&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;计算两幅RGB图像的PSNR值
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;参数:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; img1: 原始图像(numpy数组)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; img2: 待评估图像(numpy数组)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;返回:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; PSNR值(dB)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;rgb_psnr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;img1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;img2&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 确保输入是numpy数组&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;img1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;img1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dtype&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;float64&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;img2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;img2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dtype&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;float64&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 计算各通道MSE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;mse_r&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mean&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;img1&lt;/span&gt;&lt;span class="p"&gt;[:,&lt;/span&gt; &lt;span class="p"&gt;:,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;img2&lt;/span&gt;&lt;span class="p"&gt;[:,&lt;/span&gt; &lt;span class="p"&gt;:,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;mse_g&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mean&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;img1&lt;/span&gt;&lt;span class="p"&gt;[:,&lt;/span&gt; &lt;span class="p"&gt;:,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;img2&lt;/span&gt;&lt;span class="p"&gt;[:,&lt;/span&gt; &lt;span class="p"&gt;:,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;mse_b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mean&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;img1&lt;/span&gt;&lt;span class="p"&gt;[:,&lt;/span&gt; &lt;span class="p"&gt;:,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;img2&lt;/span&gt;&lt;span class="p"&gt;[:,&lt;/span&gt; &lt;span class="p"&gt;:,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 计算平均MSE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;mse&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mse_r&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;mse_g&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;mse_b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 处理完全相同的图像&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;mse&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nb"&gt;float&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;inf&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;log10&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;255&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sqrt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mse&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;psnr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;img1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;img2&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;img1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;img1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;astype&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;float64&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;img2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;img2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;astype&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;float64&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;mse&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mean&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;img1&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;img2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;mse&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nb"&gt;float&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;inf&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;img1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;max&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;max_pixel&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;255.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;max_pixel&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;1.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;log10&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;max_pixel&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sqrt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mse&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="vm"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;__main__&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 1. 读取原始图像&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;original&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cv2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;imread&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;../../mario.png&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# BGR格式&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;original&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cv2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cvtColor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;original&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cv2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;COLOR_BGR2RGB&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# 转换为RGB&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 2. 创建测试图像（添加高斯噪声）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;noisy&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;original&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;normal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;original&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;noisy&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;clip&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;noisy&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;astype&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;uint8&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 3. 计算PSNR&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# psnr_value = rgb_psnr(original, noisy)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;psnr_value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;psnr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;original&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;noisy&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;PSNR between original and noisy image: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;psnr_value&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;.2f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; dB&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 4. 可视化比较&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;figure&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;figsize&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;subplot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;imshow&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;original&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Original Image&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;axis&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;off&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;subplot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;imshow&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;noisy&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Noisy Image (PSNR=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;psnr_value&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="s1"&gt;.2f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s1"&gt;dB)&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;axis&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;off&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tight_layout&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;show&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt="Pasted image 20251002145829" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://picbed.daoxuanshan.online/PicList/2025/10/6ec6c67d5d4d4c53129e22b6cb6e1894.png"&gt;&lt;/p&gt;</description></item><item><title>SSIM对比图片相似度</title><link>https://f50a586b.blog-run.pages.dev/docs/ssim-%E5%AF%B9%E6%AF%94%E5%9B%BE%E7%89%87%E7%9B%B8%E4%BC%BC%E5%BA%A6/</link><pubDate>Thu, 02 Oct 2025 00:00:00 +0000</pubDate><guid>https://f50a586b.blog-run.pages.dev/docs/ssim-%E5%AF%B9%E6%AF%94%E5%9B%BE%E7%89%87%E7%9B%B8%E4%BC%BC%E5%BA%A6/</guid><description>&lt;p&gt;对比图片相似度, 相似度越接近1 表示相似度越高,&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;cv2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;numpy&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nn"&gt;np&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;scipy.ndimage&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;gaussian_filter&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;load_image_grayscale&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;image_path&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;img&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cv2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;imread&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;image_path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cv2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;IMREAD_GRAYSCALE&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;img&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="ne"&gt;ValueError&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;无法读取图像: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;image_path&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;img&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;img&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;astype&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;float64&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mf"&gt;255.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;img&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;compute_statistics&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;img1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;img2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;window_size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sigma&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;1.5&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;mu1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;gaussian_filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;img1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sigma&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;sigma&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;mu2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;gaussian_filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;img2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sigma&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;sigma&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;sigma1_sq&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;gaussian_filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;img1&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sigma&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;sigma&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;mu1&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;sigma2_sq&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;gaussian_filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;img2&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sigma&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;sigma&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;mu2&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;sigma12&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;gaussian_filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;img1&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;img2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sigma&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;sigma&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;mu1&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;mu2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;mu1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;mu2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sigma1_sq&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sigma2_sq&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sigma12&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;calculate_ssim&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;img1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;img2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;window_size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sigma&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;1.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;K1&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.01&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;K2&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.03&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;L&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;mu1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;mu2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sigma1_sq&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sigma2_sq&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sigma12&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;compute_statistics&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;img1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;img2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;window_size&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sigma&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;C1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;K1&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;L&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;C2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;K2&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;L&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;luminance&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;mu1&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;mu2&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;C1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mu1&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;mu2&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;C1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;luminance: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mean&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;luminance&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;.4f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 确保方差值非负&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;sigma1_sq&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;maximum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sigma1_sq&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;sigma2_sq&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;maximum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sigma2_sq&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;contrast&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sqrt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sigma1_sq&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sqrt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sigma2_sq&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;C2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sigma1_sq&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;sigma2_sq&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;C2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;contrast: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mean&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;contrast&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;.4f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;structure&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sigma12&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;C2&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sqrt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sigma1_sq&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sqrt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sigma2_sq&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;C2&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;structure: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mean&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;structure&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;.4f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;ssim_map&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;luminance&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;contrast&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;structure&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mean&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ssim_map&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;ssim_index&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;image1_path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;image2_path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;window_size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sigma&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;1.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;K1&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.01&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;K2&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.03&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;img1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;load_image_grayscale&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;image1_path&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;img2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;load_image_grayscale&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;image2_path&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;img1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="n"&gt;img2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="ne"&gt;ValueError&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;输入的两幅图像必须具有相同的尺寸&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;ssim&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;calculate_ssim&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;img1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;img2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;window_size&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sigma&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;K1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;K2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;L&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;ssim&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 示例使用&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="vm"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;__main__&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;image1_path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;/Users/pkl/Downloads/3.png&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;image2_path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;/Users/pkl/Downloads/3_副本.png&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;ssim_value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ssim_index&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;image1_path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;image2_path&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;两张图像的SSIM值为: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;ssim_value&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;.4f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="ne"&gt;Exception&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;计算SSIM时发生错误: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;输出结果&amp;gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;❯&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;anaconda3&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nb"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;python&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;SSIM结构相似性值计算.py&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;luminance&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.9946&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;contrast&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.9917&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;structure&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.9869&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;两张图像的SSIM值为&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.9831&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Linux 运维必备的 25 个核心命令解析</title><link>https://f50a586b.blog-run.pages.dev/docs/linux-%E8%BF%90%E7%BB%B4%E5%BF%85%E5%A4%87%E7%9A%84-25-%E4%B8%AA%E6%A0%B8%E5%BF%83%E5%91%BD%E4%BB%A4%E8%A7%A3%E6%9E%90/</link><pubDate>Sat, 15 Feb 2025 00:00:00 +0000</pubDate><guid>https://f50a586b.blog-run.pages.dev/docs/linux-%E8%BF%90%E7%BB%B4%E5%BF%85%E5%A4%87%E7%9A%84-25-%E4%B8%AA%E6%A0%B8%E5%BF%83%E5%91%BD%E4%BB%A4%E8%A7%A3%E6%9E%90/</guid><description>&lt;h2 id="一文件目录操作类"&gt;一、文件目录操作类
&lt;/h2&gt;&lt;h3 id="1-ls-文件列表查看"&gt;1. ls 文件列表查看
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ls -lah &lt;span class="c1"&gt;# 显示所有文件（含隐藏文件）的详细信息&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-l&lt;/code&gt; 长格式显示&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-a&lt;/code&gt; 显示隐藏文件&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-h&lt;/code&gt; 人性化文件大小[1][2]&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="2-cd-目录切换"&gt;2. cd 目录切换
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ~/Documents &lt;span class="c1"&gt;# 进入用户文档目录&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; .. &lt;span class="c1"&gt;# 返回上级目录&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="3-mkdir-创建目录"&gt;3. mkdir 创建目录
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdir -p project/&lt;span class="o"&gt;{&lt;/span&gt;src,test&lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="c1"&gt;# 递归创建多级目录&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="4-rm-删除操作"&gt;4. rm 删除操作
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;rm -rf temp/ &lt;span class="c1"&gt;# 强制递归删除目录&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;⚠️ 高危操作需谨慎&lt;/p&gt;
&lt;h3 id="5-cpmv-文件操作"&gt;5. cp/mv 文件操作
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cp -a config.conf config_backup.conf &lt;span class="c1"&gt;# 保留属性的完整复制&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mv old_file.txt new_location/ &lt;span class="c1"&gt;# 移动文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="二文本处理三剑客"&gt;二、文本处理三剑客
&lt;/h2&gt;&lt;h3 id="6-grep-文本搜索"&gt;6. grep 文本搜索
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;grep -rn &lt;span class="s2"&gt;&amp;#34;error&amp;#34;&lt;/span&gt; /var/log/ &lt;span class="c1"&gt;# 递归搜索错误日志&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-i&lt;/code&gt; 忽略大小写&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-v&lt;/code&gt; 反向匹配[1][3]&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="7-sed-流编辑器"&gt;7. sed 流编辑器
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sed &lt;span class="s1"&gt;&amp;#39;s/foo/bar/g&amp;#39;&lt;/span&gt; file.txt &lt;span class="c1"&gt;# 全局替换文本&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="8-awk-数据分析"&gt;8. awk 数据分析
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;awk &lt;span class="s1"&gt;&amp;#39;{print $1}&amp;#39;&lt;/span&gt; access.log &lt;span class="c1"&gt;# 提取第一列数据&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="三系统监控命令"&gt;三、系统监控命令
&lt;/h2&gt;&lt;h3 id="9-top-进程监控"&gt;9. top 进程监控
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;top -u apache &lt;span class="c1"&gt;# 监控指定用户进程&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="10-ps-进程查看"&gt;10. ps 进程查看
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ps aux &lt;span class="p"&gt;|&lt;/span&gt; grep nginx &lt;span class="c1"&gt;# 查看 Nginx 进程&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="11-free-内存查看"&gt;11. free 内存查看
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;free -h &lt;span class="c1"&gt;# 人性化显示内存使用&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="12-df-磁盘空间"&gt;12. df 磁盘空间
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;df -Th &lt;span class="c1"&gt;# 显示文件系统类型及使用率&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="四网络相关命令"&gt;四、网络相关命令
&lt;/h2&gt;&lt;h3 id="13-ping-网络连通性"&gt;13. ping 网络连通性
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ping -c &lt;span class="m"&gt;4&lt;/span&gt; google.com &lt;span class="c1"&gt;# 发送4个测试包&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="14-netstat-网络状态"&gt;14. netstat 网络状态
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;netstat -tuln &lt;span class="c1"&gt;# 查看监听端口&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="15-curl-网络请求"&gt;15. curl 网络请求
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -I https://example.com &lt;span class="c1"&gt;# 获取响应头信息&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="五压缩解压工具"&gt;五、压缩解压工具
&lt;/h2&gt;&lt;h3 id="16-tar-归档处理"&gt;16. tar 归档处理
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tar czvf backup.tar.gz /data &lt;span class="c1"&gt;# 创建压缩包&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tar xzvf backup.tar.gz &lt;span class="c1"&gt;# 解压文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="17-gzip-压缩工具"&gt;17. gzip 压缩工具
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;gzip -9 bigfile.log &lt;span class="c1"&gt;# 最大压缩率处理&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="六权限管理命令"&gt;六、权限管理命令
&lt;/h2&gt;&lt;h3 id="18-chmod-权限修改"&gt;18. chmod 权限修改
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chmod &lt;span class="m"&gt;755&lt;/span&gt; script.sh &lt;span class="c1"&gt;# 设置可执行权限&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="19-chown-归属变更"&gt;19. chown 归属变更
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chown -R www:www /var/www &lt;span class="c1"&gt;# 递归修改目录归属&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="七进阶工具集"&gt;七、进阶工具集
&lt;/h2&gt;&lt;h3 id="20-find-文件查找"&gt;20. find 文件查找
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;find / -name &lt;span class="s2"&gt;&amp;#34;*.conf&amp;#34;&lt;/span&gt; -mtime +30 &lt;span class="c1"&gt;# 查找30天前的配置文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="21-ssh-远程连接"&gt;21. ssh 远程连接
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ssh -p &lt;span class="m"&gt;2222&lt;/span&gt; user@host &lt;span class="c1"&gt;# 指定端口连接&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="22-scp-安全传输"&gt;22. scp 安全传输
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;scp -r local_dir user@remote:/path &lt;span class="c1"&gt;# 递归传输目录&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="23-tail-日志跟踪"&gt;23. tail 日志跟踪
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tail -f /var/log/syslog &lt;span class="c1"&gt;# 实时监控日志变化&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="24-history-命令历史"&gt;24. history 命令历史
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;history&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; grep &lt;span class="s2"&gt;&amp;#34;apt install&amp;#34;&lt;/span&gt; &lt;span class="c1"&gt;# 检索安装记录&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="25-alias-命令别名"&gt;25. alias 命令别名
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;alias&lt;/span&gt; &lt;span class="nv"&gt;ll&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;ls -alF&amp;#39;&lt;/span&gt; &lt;span class="c1"&gt;# 创建快捷命令&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="命令速查表"&gt;命令速查表
&lt;/h2&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;分类&lt;/th&gt;
 &lt;th&gt;命令示例&lt;/th&gt;
 &lt;th&gt;使用频率&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;文件操作&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;cp/mv/rm&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;★★★★★&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;系统监控&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;top/ps/free&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;★★★★☆&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;网络相关&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;ping/curl/netstat&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;★★★★☆&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;文本处理&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;grep/sed/awk&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;★★★★★&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;

 &lt;blockquote&gt;
 &lt;p&gt;提示：使用 &lt;code&gt;man [命令]&lt;/code&gt; 可查看完整手册，例如 &lt;code&gt;man grep&lt;/code&gt; 查看详细用法说明[3][5]&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="参考资料"&gt;参考资料
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;GNU Coreutils 文档：https://www.gnu.org/software/coreutils/manual/coreutils.html&lt;/li&gt;
&lt;li&gt;Linux man-pages 项目：https://man7.org/linux/man-pages/&lt;/li&gt;
&lt;li&gt;&lt;code&gt;grep&lt;/code&gt; 手册页：https://man7.org/linux/man-pages/man1/grep.1.html&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ps&lt;/code&gt; / &lt;code&gt;top&lt;/code&gt; 工具说明（procps）：https://man7.org/linux/man-pages/man1/ps.1.html&lt;/li&gt;
&lt;li&gt;The Linux Documentation Project：https://tldp.org/&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Python日期处理工具类深度解析</title><link>https://f50a586b.blog-run.pages.dev/docs/python%E6%97%A5%E6%9C%9F%E5%A4%84%E7%90%86/</link><pubDate>Sat, 15 Feb 2025 00:00:00 +0000</pubDate><guid>https://f50a586b.blog-run.pages.dev/docs/python%E6%97%A5%E6%9C%9F%E5%A4%84%E7%90%86/</guid><description>&lt;h2 id="核心功能实现"&gt;核心功能实现
&lt;/h2&gt;&lt;h3 id="1-基础时间获取"&gt;1. 基础时间获取
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nd"&gt;@staticmethod&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_current_date&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;date&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;获取当前日期对象（date类型）[1][3]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; Example: 2024-02-15
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;date&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;today&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nd"&gt;@staticmethod&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_current_datetime&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;datetime&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;获取当前日期时间对象（datetime类型）[2][3]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; Example: 2024-02-15 14:30:45.123456
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;datetime&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;now&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="2-日期格式化与解析"&gt;2. 日期格式化与解析
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nd"&gt;@staticmethod&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;format_date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dt&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;date&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;%Y-%m-&lt;/span&gt;&lt;span class="si"&gt;%d&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;日期格式化输出[1][2]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; Example: 2024-02-15 → &amp;#34;15/02/2024&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;dt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;strftime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nd"&gt;@staticmethod&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;parse_date_str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;date_str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;%Y-%m-&lt;/span&gt;&lt;span class="si"&gt;%d&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;date&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;字符串转日期对象[2][3]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; Example: &amp;#34;20240215&amp;#34; → 2024-02-15
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;datetime&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;strptime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;date_str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;date&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="3-日期计算功能"&gt;3. 日期计算功能
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nd"&gt;@staticmethod&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;calculate_days_diff&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;start&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;date&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;end&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;date&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;计算两个日期之间的天数差[2]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; Example: 2024-02-10与2024-02-15 → 5天
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;end&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;start&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;days&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nd"&gt;@staticmethod&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;add_days&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;base_date&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;date&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;days&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;date&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;日期加减计算[1][3]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; Example: 2024-02-15 + 3天 → 2024-02-18
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;base_date&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;timedelta&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;days&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;days&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="4-日历相关功能"&gt;4. 日历相关功能
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nd"&gt;@staticmethod&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_month_calendar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;year&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;month&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;生成月份日历[4][5]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; Example: 2024年2月 → 返回格式化日历表格
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;calendar&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;month&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;year&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;month&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nd"&gt;@staticmethod&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;is_month_end&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dt&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;date&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;bool&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;判断是否月末[4][5]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; Example: 2024-02-15 → False
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;dt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;day&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;calendar&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;monthrange&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;year&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;month&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="5-高级判断功能"&gt;5. 高级判断功能
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nd"&gt;@staticmethod&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;is_future_date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;date&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;bool&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;判断是否为未来日期[1]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; Example: 2025-01-01 → True
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;date&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;today&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nd"&gt;@staticmethod&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_workdays&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;year&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;month&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;date&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;获取当月工作日列表[4][5]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; Example: 2024年2月 → 过滤周末的日期列表
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;year&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;month&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;day&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;day&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;calendar&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;monthrange&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;year&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;month&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;year&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;month&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;day&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;weekday&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="6-时间维度计算"&gt;6. 时间维度计算
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nd"&gt;@staticmethod&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_week_number&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dt&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;date&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;获取ISO周数[2][3]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; Example: 2024-02-15 → 周数7
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;dt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;isocalendar&lt;/span&gt;&lt;span class="p"&gt;()[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nd"&gt;@staticmethod&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_age&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;birth_date&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;date&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;精确年龄计算[2][3]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; Example: 2000-03-15 → 24岁（当前日期2024-02-15）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;today&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;date&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;today&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;today&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;year&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;birth_date&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;year&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;today&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;month&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;today&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;day&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;birth_date&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;month&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;birth_date&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;day&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="使用示例"&gt;使用示例
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;当前日期:&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;DateUtils&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get_current_date&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt; &lt;span class="c1"&gt;# [1][3]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;月末判断:&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;DateUtils&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;is_month_end&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2024&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;28&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt; &lt;span class="c1"&gt;# [4][5]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;工作日列表:&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;DateUtils&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get_workdays&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2024&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="c1"&gt;# [4][5]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="功能对比表"&gt;功能对比表
&lt;/h2&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;功能&lt;/th&gt;
 &lt;th&gt;核心方法&lt;/th&gt;
 &lt;th&gt;相关模块&lt;/th&gt;
 &lt;th&gt;应用场景&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;日期格式化&lt;/td&gt;
 &lt;td&gt;strftime&lt;/td&gt;
 &lt;td&gt;datetime&lt;/td&gt;
 &lt;td&gt;日志记录&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;工作日计算&lt;/td&gt;
 &lt;td&gt;weekday + calendar&lt;/td&gt;
 &lt;td&gt;calendar&lt;/td&gt;
 &lt;td&gt;考勤统计&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;闰年判断&lt;/td&gt;
 &lt;td&gt;monthrange&lt;/td&gt;
 &lt;td&gt;calendar&lt;/td&gt;
 &lt;td&gt;日期校验&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;时区转换&lt;/td&gt;
 &lt;td&gt;astimezone&lt;/td&gt;
 &lt;td&gt;dateutil&lt;/td&gt;
 &lt;td&gt;跨国系统&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="最佳实践建议"&gt;最佳实践建议
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;处理跨时区场景时建议统一使用UTC时间[1][3]&lt;/li&gt;
&lt;li&gt;日期比较前确保时区一致性[1][4]&lt;/li&gt;
&lt;li&gt;使用calendar.monthrange()处理月末日期更可靠[4][5]&lt;/li&gt;
&lt;li&gt;批量处理日期时建议先进行时区转换[3][4]&lt;/li&gt;
&lt;/ol&gt;

 &lt;blockquote&gt;
 &lt;p&gt;该工具类已涵盖日常开发中常见的日期处理需求，通过合理组合使用这些方法，可以显著提升开发效率。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="参考资料"&gt;参考资料
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;Python &lt;code&gt;datetime&lt;/code&gt; 官方文档：https://docs.python.org/3/library/datetime.html&lt;/li&gt;
&lt;li&gt;Python &lt;code&gt;date&lt;/code&gt;/&lt;code&gt;timedelta&lt;/code&gt; 用法：https://docs.python.org/3/library/datetime.html#date-objects&lt;/li&gt;
&lt;li&gt;Python &lt;code&gt;zoneinfo&lt;/code&gt; 时区文档：https://docs.python.org/3/library/zoneinfo.html&lt;/li&gt;
&lt;li&gt;Python &lt;code&gt;calendar&lt;/code&gt; 官方文档：https://docs.python.org/3/library/calendar.html&lt;/li&gt;
&lt;li&gt;&lt;code&gt;python-dateutil&lt;/code&gt; 项目文档：https://dateutil.readthedocs.io/&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>SeleniumBase框架深度解析：Web自动化测试的利器与局限</title><link>https://f50a586b.blog-run.pages.dev/docs/seleniumbase%E6%8E%A8%E8%8D%90/</link><pubDate>Sat, 15 Feb 2025 00:00:00 +0000</pubDate><guid>https://f50a586b.blog-run.pages.dev/docs/seleniumbase%E6%8E%A8%E8%8D%90/</guid><description>&lt;h1 id="一框架定位"&gt;一、框架定位
&lt;/h1&gt;&lt;p&gt;SeleniumBase是基于Python的&lt;strong&gt;全栈Web自动化框架&lt;/strong&gt;，深度融合Selenium WebDriver与pytest测试框架，支持Web自动化测试、数据抓取、端到端测试等场景[1][3]。其核心设计目标是简化Selenium的复杂操作，提供开箱即用的解决方案[2]。&lt;/p&gt;
&lt;h1 id="二核心优势"&gt;二、核心优势
&lt;/h1&gt;&lt;h2 id="1-极简api设计"&gt;1. 极简API设计
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;封装常见操作（点击/输入/断言）为单行代码：
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;click&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;button#submit&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# 元素点击[2]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;assert_text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;支付成功&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;h1.status&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# 智能断言[2]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;自动处理等待机制，减少显式等待代码[4]&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2-深度pytest集成"&gt;2. 深度pytest集成
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;原生支持参数化测试、夹具管理等pytest特性&lt;/li&gt;
&lt;li&gt;命令行直接运行测试并生成报告：
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pytest my_test.py --html&lt;span class="o"&gt;=&lt;/span&gt;report.html&lt;span class="o"&gt;[&lt;/span&gt;4&lt;span class="o"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="3-增强型功能套件"&gt;3. 增强型功能套件
&lt;/h2&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;功能模块&lt;/th&gt;
 &lt;th&gt;应用场景&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;智能截图&lt;/td&gt;
 &lt;td&gt;失败用例自动截屏[2]&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;数据驱动&lt;/td&gt;
 &lt;td&gt;CSV/YAML数据源支持[2]&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Bot检测绕过&lt;/td&gt;
 &lt;td&gt;模拟人类操作规避反爬[1]&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;多浏览器支持&lt;/td&gt;
 &lt;td&gt;Chrome/Firefox/Edge无缝切换[3]&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="4-全场景覆盖能力"&gt;4. 全场景覆盖能力
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;支持常规Web测试（表单提交/元素验证）&lt;/li&gt;
&lt;li&gt;扩展爬虫场景（自动滚动/动态内容抓取）[1]&lt;/li&gt;
&lt;li&gt;移动端Web测试（通过Appium集成）[5]&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="三使用局限"&gt;三、使用局限
&lt;/h1&gt;&lt;h2 id="1-技术栈限制"&gt;1. 技术栈限制
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;仅支持Python语言，无法用于Java/C#技术体系[1]&lt;/li&gt;
&lt;li&gt;深度依赖pytest框架，需要额外学习成本[4]&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2-性能瓶颈"&gt;2. 性能瓶颈
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;基于WebDriver的架构导致执行速度较慢（相比Playwright）&lt;/li&gt;
&lt;li&gt;大规模测试时浏览器实例管理效率较低[3]&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="3-学习曲线"&gt;3. 学习曲线
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;内置方法多达200+，新手需要时间熟悉（如&lt;code&gt;self.wait_for_element_visible()&lt;/code&gt;与&lt;code&gt;self.assert_element_present()&lt;/code&gt;的区别）[2]&lt;/li&gt;
&lt;li&gt;自定义扩展需要理解框架多层继承结构[4]&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="4-移动端支持"&gt;4. 移动端支持
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;仅支持WebView测试，无法直接操作原生APP元素[5]&lt;/li&gt;
&lt;li&gt;移动端设备管理功能较弱（对比Appium）&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="四适用场景建议"&gt;四、适用场景建议
&lt;/h1&gt;&lt;p&gt;✅ &lt;strong&gt;推荐使用&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python技术栈的Web项目&lt;/li&gt;
&lt;li&gt;需要快速搭建自动化体系的团队&lt;/li&gt;
&lt;li&gt;结合爬虫的测试验证场景[1]&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;❌ &lt;strong&gt;不推荐使用&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;高性能要求的并发测试&lt;/li&gt;
&lt;li&gt;跨语言技术体系（Java/C#）&lt;/li&gt;
&lt;li&gt;原生APP自动化测试&lt;/li&gt;
&lt;/ul&gt;

 &lt;blockquote&gt;
 &lt;p&gt;框架选择如同选汽车：SeleniumBase是配备智能驾驶的SUV，适合需要多功能集成的团队；而Cypress/Playwright更像是跑车，专注极致性能[1][3]。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="参考资料"&gt;参考资料
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;SeleniumBase 官方文档：https://seleniumbase.io/&lt;/li&gt;
&lt;li&gt;SeleniumBase GitHub：https://github.com/seleniumbase/SeleniumBase&lt;/li&gt;
&lt;li&gt;Selenium WebDriver 文档：https://www.selenium.dev/documentation/&lt;/li&gt;
&lt;li&gt;Pytest 官方文档：https://docs.pytest.org/&lt;/li&gt;
&lt;li&gt;Appium 官方文档：https://appium.io/docs/en/latest/&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>测试用例编写全攻略：从理论到实践的核心方法解析</title><link>https://f50a586b.blog-run.pages.dev/docs/%E6%B5%8B%E8%AF%95%E7%94%A8%E4%BE%8B%E7%BC%96%E5%86%99/</link><pubDate>Sat, 15 Feb 2025 00:00:00 +0000</pubDate><guid>https://f50a586b.blog-run.pages.dev/docs/%E6%B5%8B%E8%AF%95%E7%94%A8%E4%BE%8B%E7%BC%96%E5%86%99/</guid><description>&lt;h1 id="一测试用例核心要素"&gt;一、测试用例核心要素
&lt;/h1&gt;&lt;p&gt;测试用例是验证软件需求的&lt;strong&gt;最小执行单元&lt;/strong&gt;，完整的用例应包含：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;用例编号&lt;/strong&gt;：TC-模块名-序列号（如TC-Login-001）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;测试标题&lt;/strong&gt;：简明描述验证目标（如&amp;quot;验证正确用户名密码登录成功&amp;quot;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;前置条件&lt;/strong&gt;：执行测试前的系统状态（如用户已注册并激活）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;测试步骤&lt;/strong&gt;：可执行的操作序列（输入用户名→输入密码→点击登录）[2][4]&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;预期结果&lt;/strong&gt;：符合需求定义的明确预期（跳转到用户主页）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;优先级&lt;/strong&gt;：P0（核心功能）到P3（边缘场景）的等级划分[4]&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id="二经典设计方法"&gt;二、经典设计方法
&lt;/h1&gt;&lt;h2 id="21-等价类划分法"&gt;2.1 等价类划分法
&lt;/h2&gt;&lt;p&gt;将输入域划分为有效/无效等价类，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用户名输入框：有效（6-20位字符）、无效（5位/21位/特殊符号）[3]&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="22-边界值分析法"&gt;2.2 边界值分析法
&lt;/h2&gt;&lt;p&gt;重点测试输入域的边界条件：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;密码长度限制8-16位时，测试7/8/9和15/16/17位的情况[1]&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="23-判定表法"&gt;2.3 判定表法
&lt;/h2&gt;&lt;p&gt;处理多条件组合场景（推荐代替因果图法）：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;条件组合&lt;/th&gt;
 &lt;th&gt;已登录&lt;/th&gt;
 &lt;th&gt;有权限&lt;/th&gt;
 &lt;th&gt;预期结果&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;是&lt;/td&gt;
 &lt;td&gt;是&lt;/td&gt;
 &lt;td&gt;访问成功&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;2&lt;/td&gt;
 &lt;td&gt;是&lt;/td&gt;
 &lt;td&gt;否&lt;/td&gt;
 &lt;td&gt;提示无权限&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;3&lt;/td&gt;
 &lt;td&gt;否&lt;/td&gt;
 &lt;td&gt;-&lt;/td&gt;
 &lt;td&gt;跳转登录&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h1 id="三编写实践技巧"&gt;三、编写实践技巧
&lt;/h1&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;需求映射&lt;/strong&gt;：每个用例必须对应明确的需求点（如PRD第3.2条）[5]&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;正向用例优先&lt;/strong&gt;：先保证核心流程正确性（如成功登录）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;异常场景覆盖&lt;/strong&gt;：网络中断、数据异常等边缘情况（登录时断网）[3]&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;参数化设计&lt;/strong&gt;：使用变量提高用例复用性（不同用户角色共用登录流程）&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id="四典型错误规避"&gt;四、典型错误规避
&lt;/h1&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;大而全的用例&lt;/strong&gt;：单个用例包含多个验证点（应拆分为原子用例）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;模糊描述&lt;/strong&gt;：使用&amp;quot;适量数据&amp;quot;等不明确表述（应改为&amp;quot;输入15位数字&amp;quot;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;忽略前置条件&lt;/strong&gt;：未说明测试环境状态导致结果不稳定[4]&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;缺乏维护&lt;/strong&gt;：需求变更后未及时更新关联用例[5]&lt;/li&gt;
&lt;/ol&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;实战案例&lt;/strong&gt;：微信朋友圈发布功能测试&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;正常场景：图文混排+定位发送&lt;/li&gt;
&lt;li&gt;异常场景：无网络时发布、超过9张图片&lt;/li&gt;
&lt;li&gt;边界测试：输入1000个字符检查截断逻辑[3][4]&lt;/li&gt;
&lt;/ol&gt;

 &lt;/blockquote&gt;
&lt;h1 id="五质量提升checklist"&gt;五、质量提升checklist
&lt;/h1&gt;&lt;ol&gt;
&lt;li&gt;每个用例是否可独立执行？&lt;/li&gt;
&lt;li&gt;预期结果是否可量化验证？&lt;/li&gt;
&lt;li&gt;是否覆盖所有需求分支？&lt;/li&gt;
&lt;li&gt;是否经过同行评审？[5]&lt;/li&gt;
&lt;li&gt;是否关联到缺陷管理系统？&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;通过合理的用例设计，测试团队可提升缺陷发现率30%以上[2]。建议新人在编写前先使用&lt;strong&gt;测试大纲法&lt;/strong&gt;梳理测试点，再逐步细化为具体用例。记住：好的测试用例应该像导航路线一样，让执行者无需额外思考就能完成验证[4][5]。&lt;/p&gt;
&lt;h2 id="参考资料"&gt;参考资料
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;ISTQB Foundation Syllabus：https://www.istqb.org/certifications/certified-tester-foundation-level/&lt;/li&gt;
&lt;li&gt;IEEE 29119 Software Testing：https://standards.ieee.org/ieee/29119-1/6400/&lt;/li&gt;
&lt;li&gt;等价类与边界值分析介绍：https://www.guru99.com/equivalence-partitioning-boundary-value-analysis.html&lt;/li&gt;
&lt;li&gt;决策表测试方法：https://www.toolsqa.com/software-testing/decision-table-testing/&lt;/li&gt;
&lt;li&gt;软件测试文档与用例管理实践（Atlassian）：https://www.atlassian.com/software/confluence/testing&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>软件测试入门指南：从零基础到核心技能解析</title><link>https://f50a586b.blog-run.pages.dev/docs/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95%E5%85%A5%E9%97%A8%E6%8C%87%E5%8D%97/</link><pubDate>Sat, 15 Feb 2025 00:00:00 +0000</pubDate><guid>https://f50a586b.blog-run.pages.dev/docs/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95%E5%85%A5%E9%97%A8%E6%8C%87%E5%8D%97/</guid><description>&lt;h1 id="一什么是软件测试"&gt;一、什么是软件测试？
&lt;/h1&gt;&lt;p&gt;软件测试是通过技术手段验证软件是否满足需求的过程，本质上是通过系统化的方法发现软件缺陷，确保产品质量[1]。测试工程师需要像侦探一样，通过不同的测试手段寻找软件中的&amp;quot;漏洞&amp;quot;。&lt;/p&gt;
&lt;h1 id="二测试分类体系解析"&gt;二、测试分类体系解析
&lt;/h1&gt;&lt;h2 id="21-按测试方法划分"&gt;2.1 按测试方法划分
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;黑盒测试&lt;/strong&gt;：不关注内部实现，验证功能是否符合需求（如电商下单流程测试）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;白盒测试&lt;/strong&gt;：基于代码逻辑的测试（常用于单元测试）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;灰盒测试&lt;/strong&gt;：结合代码和功能的混合测试[2]&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="22-按测试阶段划分"&gt;2.2 按测试阶段划分
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;单元测试：验证最小代码单元&lt;/li&gt;
&lt;li&gt;集成测试：模块间接口测试&lt;/li&gt;
&lt;li&gt;系统测试：完整业务流程验证&lt;/li&gt;
&lt;li&gt;验收测试：用户需求匹配度测试&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id="三新手学习路径规划"&gt;三、新手学习路径规划
&lt;/h1&gt;&lt;h2 id="31-基础阶段1-3个月"&gt;3.1 基础阶段（1-3个月）
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;掌握测试基本理论：测试生命周期、缺陷管理流程&lt;/li&gt;
&lt;li&gt;熟悉测试文档编写：测试计划、用例、报告&lt;/li&gt;
&lt;li&gt;学习SQL基础与Linux常用命令[2]&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="32-进阶路线4-6个月"&gt;3.2 进阶路线（4-6个月）
&lt;/h2&gt;&lt;p&gt;建议选择以下组合发展：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;功能测试 + 接口测试（适合业务型测试）&lt;/li&gt;
&lt;li&gt;自动化测试 + 接口测试（技术路线）&lt;/li&gt;
&lt;li&gt;功能 + 性能测试（全栈方向）[1]&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="四必备工具与技术栈"&gt;四、必备工具与技术栈
&lt;/h1&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;测试类型&lt;/th&gt;
 &lt;th&gt;推荐工具&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;功能测试&lt;/td&gt;
 &lt;td&gt;Jira, TestLink&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;接口测试&lt;/td&gt;
 &lt;td&gt;Postman, Swagger&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;自动化测试&lt;/td&gt;
 &lt;td&gt;Selenium, Appium&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;性能测试&lt;/td&gt;
 &lt;td&gt;JMeter, LoadRunner&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;持续集成&lt;/td&gt;
 &lt;td&gt;Jenkins, GitLab CI&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h1 id="五职业发展建议"&gt;五、职业发展建议
&lt;/h1&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;保持学习敏感度&lt;/strong&gt;：关注AI测试、混沌工程等新趋势[4]&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;构建技术深度&lt;/strong&gt;：从脚本录制进阶到框架开发（如Pytest框架）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;培养质量意识&lt;/strong&gt;：通过质量模型（功能性/可靠性/易用性等维度）全面评估产品[1]&lt;/li&gt;
&lt;/ol&gt;

 &lt;blockquote&gt;
 &lt;p&gt;测试工程师的成长就像玩RPG游戏：前期打基础（功能测试）是新手村任务，中期选择职业方向（自动化/性能）开启转职，后期成为测试架构师则是挑战终极BOSS[3]。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="参考资料"&gt;参考资料
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;ISTQB Foundation Syllabus：https://www.istqb.org/certifications/certified-tester-foundation-level/&lt;/li&gt;
&lt;li&gt;ISO/IEC/IEEE 29119 软件测试标准：https://www.iso.org/standard/45142.html&lt;/li&gt;
&lt;li&gt;软件测试生命周期（STLC）实践介绍：https://www.browserstack.com/guide/software-testing-life-cycle&lt;/li&gt;
&lt;li&gt;ISO/IEC 25010 软件质量模型：https://iso25000.com/index.php/en/iso-25000-standards/iso-25010&lt;/li&gt;
&lt;/ol&gt;</description></item></channel></rss>