<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>http://www.otqsoft.com/doc/blog</id>
    <title>Q-quick 快速开发框架 Blog</title>
    <updated>2026-07-31T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="http://www.otqsoft.com/doc/blog"/>
    <subtitle>Q-quick 快速开发框架 Blog</subtitle>
    <icon>http://www.otqsoft.com/doc/img/favicon.ico</icon>
    <entry>
        <title type="html"><![CDATA[双因素身份验证]]></title>
        <id>http://www.otqsoft.com/doc/blog/long-blog-2FA</id>
        <link href="http://www.otqsoft.com/doc/blog/long-blog-2FA"/>
        <updated>2026-07-31T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[一、基础定义]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="一基础定义">一、基础定义<a href="http://www.otqsoft.com/doc/blog/long-blog-2FA#%E4%B8%80%E5%9F%BA%E7%A1%80%E5%AE%9A%E4%B9%89" class="hash-link" aria-label="一、基础定义的直接链接" title="一、基础定义的直接链接" translate="no">​</a></h2>
<p><strong>双因素认证2FA（Two-Factor Authentication）</strong>：登录 / 操作账号时，必须同时提供<strong>两种不同类型的身份凭证</strong>，才能完成身份校验，是多因素认证（MFA）最常用的子集。传统登录仅单因素：账号 + 密码（单一知识凭证），一旦密码泄露，账号直接被盗；2FA 在密码之外增加第二道独立校验屏障，黑客只拿到密码也无法登录。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="核心逻辑三大身份凭证分类行业标准">核心逻辑：三大身份凭证分类（行业标准）<a href="http://www.otqsoft.com/doc/blog/long-blog-2FA#%E6%A0%B8%E5%BF%83%E9%80%BB%E8%BE%91%E4%B8%89%E5%A4%A7%E8%BA%AB%E4%BB%BD%E5%87%AD%E8%AF%81%E5%88%86%E7%B1%BB%E8%A1%8C%E4%B8%9A%E6%A0%87%E5%87%86" class="hash-link" aria-label="核心逻辑：三大身份凭证分类（行业标准）的直接链接" title="核心逻辑：三大身份凭证分类（行业标准）的直接链接" translate="no">​</a></h3>
<p>所有验证方式只会归为以下三类，2FA 要求<strong>必须选自两类不同组别</strong>，不能同组叠加：</p>
<ol>
<li class=""><strong>你知道的东西（知识类）</strong>密码、密保问题、PIN 码、生日等。风险：容易泄露、被钓鱼、暴力破解。</li>
<li class=""><strong>你拥有的东西（持有类）</strong>手机、硬件密钥、验证码 App、U 盾、短信、邮箱、专用令牌。GitHub TOTP 验证码、手机短信、YubiKey 都属于这一类。</li>
<li class=""><strong>你本身的特征（生物类）</strong>指纹、人脸、虹膜、声纹。</li>
</ol>
<p>举个例子：</p>
<ul>
<li class="">密码（知道）+ 手机验证码（持有）= 标准 2FA</li>
<li class="">密码（知道）+ 指纹（本身）= 标准 2FA</li>
<li class="">密码 + 密保问题（同属「知道」）≠ 2FA，只是双重密码，无安全提升</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="二2fa-主流实现方式github-全部支持">二、2FA 主流实现方式（GitHub 全部支持）<a href="http://www.otqsoft.com/doc/blog/long-blog-2FA#%E4%BA%8C2fa-%E4%B8%BB%E6%B5%81%E5%AE%9E%E7%8E%B0%E6%96%B9%E5%BC%8Fgithub-%E5%85%A8%E9%83%A8%E6%94%AF%E6%8C%81" class="hash-link" aria-label="二、2FA 主流实现方式（GitHub 全部支持）的直接链接" title="二、2FA 主流实现方式（GitHub 全部支持）的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-totp-基于时间的一次性密码你当前使用的方式github-推荐首选">1. TOTP 基于时间的一次性密码（你当前使用的方式，GitHub 推荐首选）<a href="http://www.otqsoft.com/doc/blog/long-blog-2FA#1-totp-%E5%9F%BA%E4%BA%8E%E6%97%B6%E9%97%B4%E7%9A%84%E4%B8%80%E6%AC%A1%E6%80%A7%E5%AF%86%E7%A0%81%E4%BD%A0%E5%BD%93%E5%89%8D%E4%BD%BF%E7%94%A8%E7%9A%84%E6%96%B9%E5%BC%8Fgithub-%E6%8E%A8%E8%8D%90%E9%A6%96%E9%80%89" class="hash-link" aria-label="1. TOTP 基于时间的一次性密码（你当前使用的方式，GitHub 推荐首选）的直接链接" title="1. TOTP 基于时间的一次性密码（你当前使用的方式，GitHub 推荐首选）的直接链接" translate="no">​</a></h3>
<p>标准协议：<strong>RFC6238</strong>，也就是你之前研究的 6 位 30 秒刷新验证码。</p>
<ul>
<li class="">原理：服务器与你的设备共享一串 Base32 密钥，依靠统一时间戳，每 30 秒同步生成一组 6 位数字。</li>
<li class="">载体：Microsoft Authenticator、Google Authenticator、Authy、密码管理器，甚至你自己写的 Python 程序。</li>
<li class="">优势：<strong>离线可用</strong>，不需要手机信号 / 网络；无运营商短信拦截、盗号风险；无额外成本。</li>
<li class="">GitHub 场景：截图里扫码绑定二维码、setup key 手动配置，全部是 TOTP。</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-sms-短信验证码备用不推荐主力">2. SMS 短信验证码（备用，不推荐主力）<a href="http://www.otqsoft.com/doc/blog/long-blog-2FA#2-sms-%E7%9F%AD%E4%BF%A1%E9%AA%8C%E8%AF%81%E7%A0%81%E5%A4%87%E7%94%A8%E4%B8%8D%E6%8E%A8%E8%8D%90%E4%B8%BB%E5%8A%9B" class="hash-link" aria-label="2. SMS 短信验证码（备用，不推荐主力）的直接链接" title="2. SMS 短信验证码（备用，不推荐主力）的直接链接" translate="no">​</a></h3>
<p>登录时向绑定手机号发送带 6 位数字的国际短信。</p>
<ul>
<li class="">缺点：SIM 卡劫持、运营商短信拦截、境外短信收不到、短信明文传输易被窃取。</li>
<li class="">GitHub 仅作为辅助备份，不建议单独依赖。</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-邮箱验证码">3. 邮箱验证码<a href="http://www.otqsoft.com/doc/blog/long-blog-2FA#3-%E9%82%AE%E7%AE%B1%E9%AA%8C%E8%AF%81%E7%A0%81" class="hash-link" aria-label="3. 邮箱验证码的直接链接" title="3. 邮箱验证码的直接链接" translate="no">​</a></h3>
<p>向绑定邮箱发送一次性登录码，安全性很低，邮箱一旦被盗，2FA 直接失效。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="4-推送-app-验证github-mobile">4. 推送 App 验证（GitHub Mobile）<a href="http://www.otqsoft.com/doc/blog/long-blog-2FA#4-%E6%8E%A8%E9%80%81-app-%E9%AA%8C%E8%AF%81github-mobile" class="hash-link" aria-label="4. 推送 App 验证（GitHub Mobile）的直接链接" title="4. 推送 App 验证（GitHub Mobile）的直接链接" translate="no">​</a></h3>
<p>手机安装 GitHub 官方 App，登录时手机弹出确认弹窗，一键批准登录，无需手动输入数字，底层依然是 TOTP。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="5-fido-硬件密钥最高安全等级企业用户">5. FIDO 硬件密钥（最高安全等级，企业用户）<a href="http://www.otqsoft.com/doc/blog/long-blog-2FA#5-fido-%E7%A1%AC%E4%BB%B6%E5%AF%86%E9%92%A5%E6%9C%80%E9%AB%98%E5%AE%89%E5%85%A8%E7%AD%89%E7%BA%A7%E4%BC%81%E4%B8%9A%E7%94%A8%E6%88%B7" class="hash-link" aria-label="5. FIDO 硬件密钥（最高安全等级，企业用户）的直接链接" title="5. FIDO 硬件密钥（最高安全等级，企业用户）的直接链接" translate="no">​</a></h3>
<p>YubiKey、苹果通行密钥 Passkey，物理硬件设备，通过 USB/NFC/ 蓝牙校验，无法远程劫持，防钓鱼攻击。GitHub 支持绑定硬件密钥作为第二验证因素。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="6-一次性恢复码应急兜底">6. 一次性恢复码（应急兜底）<a href="http://www.otqsoft.com/doc/blog/long-blog-2FA#6-%E4%B8%80%E6%AC%A1%E6%80%A7%E6%81%A2%E5%A4%8D%E7%A0%81%E5%BA%94%E6%80%A5%E5%85%9C%E5%BA%95" class="hash-link" aria-label="6. 一次性恢复码（应急兜底）的直接链接" title="6. 一次性恢复码（应急兜底）的直接链接" translate="no">​</a></h3>
<p>开启 2FA 时生成 10 组固定一次性代码，仅在手机丢失、无法获取验证码时登录，每组只能使用一次，不属于常规 2FA 方式。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="三2fa-的安全价值为什么-github-强制要求贡献者开启">三、2FA 的安全价值（为什么 GitHub 强制要求贡献者开启）<a href="http://www.otqsoft.com/doc/blog/long-blog-2FA#%E4%B8%892fa-%E7%9A%84%E5%AE%89%E5%85%A8%E4%BB%B7%E5%80%BC%E4%B8%BA%E4%BB%80%E4%B9%88-github-%E5%BC%BA%E5%88%B6%E8%A6%81%E6%B1%82%E8%B4%A1%E7%8C%AE%E8%80%85%E5%BC%80%E5%90%AF" class="hash-link" aria-label="三、2FA 的安全价值（为什么 GitHub 强制要求贡献者开启）的直接链接" title="三、2FA 的安全价值（为什么 GitHub 强制要求贡献者开启）的直接链接" translate="no">​</a></h2>
<ol>
<li class=""><strong>抵御密码泄露</strong>网站数据库泄露、钓鱼网站窃取密码、弱密码暴力破解场景下，攻击者仅有密码，缺少第二凭证无法登录。</li>
<li class=""><strong>防御中间人劫持</strong>短信容易被劫持，但 TOTP 硬件密钥无传输过程，黑客无法拦截验证码。</li>
<li class=""><strong>防钓鱼攻击</strong>FIDO/Passkey 可识别真实域名，仿冒 GitHub 钓鱼页面无法完成验证；TOTP 也大幅提高钓鱼门槛。</li>
<li class="">平台风控强制规则GitHub 政策：只要账号存在代码提交、仓库创建、开源贡献行为，<strong>强制开启 2FA</strong>，不开启会限制 Git 推送、仓库管理、账号设置等核心功能，对应你之前反复弹出的强制校验弹窗。</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="四2fa-与-mfa多因素认证的区别">四、2FA 与 MFA（多因素认证）的区别<a href="http://www.otqsoft.com/doc/blog/long-blog-2FA#%E5%9B%9B2fa-%E4%B8%8E-mfa%E5%A4%9A%E5%9B%A0%E7%B4%A0%E8%AE%A4%E8%AF%81%E7%9A%84%E5%8C%BA%E5%88%AB" class="hash-link" aria-label="四、2FA 与 MFA（多因素认证）的区别的直接链接" title="四、2FA 与 MFA（多因素认证）的区别的直接链接" translate="no">​</a></h2>
<ul>
<li class="">2FA：严格<strong>2 种</strong>不同类型凭证（双因素）</li>
<li class="">MFA：≥2 种，可 3 种及以上（密码 + 验证码 + 指纹，三因素）日常语境中大家常混用，但 2FA 特指双因素场景。</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="五2fa生成规则">五、2FA生成规则<a href="http://www.otqsoft.com/doc/blog/long-blog-2FA#%E4%BA%942fa%E7%94%9F%E6%88%90%E8%A7%84%E5%88%99" class="hash-link" aria-label="五、2FA生成规则的直接链接" title="五、2FA生成规则的直接链接" translate="no">​</a></h2>
<p>GitHub 验证器 App 使用<strong>TOTP（基于时间的一次性密码）</strong>国际标准 RFC6238，固定参数如下表格</p>
<table><thead><tr><th><strong>参数</strong></th><th><strong>固定值</strong></th><th><strong>说明</strong></th></tr></thead><tbody><tr><td>加密算法</td><td>HMAC-SHA1</td><td>哈希计算底层算法</td></tr><tr><td>验证码位数</td><td>6 位十进制数字</td><td>最终输出 000000~999999</td></tr><tr><td>时间周期</td><td>30 秒</td><td>每 30 秒生成一组新验证码</td></tr><tr><td>密钥编码</td><td>Base32</td><td>绑定二维码里的密钥是 Base32 字符串，无大小写区分</td></tr><tr><td>时间计数器</td><td><code>Unix时间戳 // 30</code></td><td>用当前秒数整除 30 得到步进值</td></tr><tr><td>容错窗口</td><td>±1 个周期</td><td>GitHub 服务器会校验上一个 / 当前 / 下一个 30 秒窗口的验证码，解决设备时间微小偏差</td></tr></tbody></table>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="生成流程">生成流程<a href="http://www.otqsoft.com/doc/blog/long-blog-2FA#%E7%94%9F%E6%88%90%E6%B5%81%E7%A8%8B" class="hash-link" aria-label="生成流程的直接链接" title="生成流程的直接链接" translate="no">​</a></h3>
<ol>
<li class="">获取当前 Unix 时间戳（秒），除以 30 向下取整，得到计数器 <code>T</code></li>
<li class="">将 <code>T</code> 转为<strong>8 字节大端序</strong>二进制数据</li>
<li class="">把 GitHub 给你的 Base32 密钥解码为原始二进制密钥</li>
<li class="">执行 <code>HMAC-SHA1(密钥, 8字节计数器)</code>，得到 20 字节哈希结果</li>
<li class="">取哈希最后 1 字节的低 4 位作为偏移量 <code>offset</code></li>
<li class="">从哈希的 <code>offset</code> 位置截取 4 字节，清除最高符号位</li>
<li class="">对 <code>10^6</code> 取模，不足 6 位前面补 0，得到最终 6 位验证码</li>
</ol>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="生成脚本">生成脚本<a href="http://www.otqsoft.com/doc/blog/long-blog-2FA#%E7%94%9F%E6%88%90%E8%84%9A%E6%9C%AC" class="hash-link" aria-label="生成脚本的直接链接" title="生成脚本的直接链接" translate="no">​</a></h3>
<p>生在验证码之前，需要拿到 GitHub 绑定 2FA 时的<strong>Base32 密钥，</strong>任意编程语言（Python/JS/Go/Java）都能实现生成器。通过扫描你github中的Authenticator app二维码，可以得到一个字符串，<code>otpauth://totp/GitHub:用户名?secret=xxx</code>，<code>secret=</code> 后面就是 Base32 密钥</p>
<img src="http://www.otqsoft.com/doc/assets/images/2fa-5f25b0e5b0a1e57999785ec0d5b08af0.webp" class="previewImage_kI9J">
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">def</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">generate_totp_code</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">base32_secret</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">str</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> period</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">int</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">30</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> digits</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">int</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">6</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">-</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token builtin">str</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token triple-quoted-string string" style="color:#e3116c">"""根据 Base32 密钥生成 TOTP 验证码（RFC 6238）"""</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># 1. 当前时间戳除以周期，向下取整得到计数器 T</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    t </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token builtin">int</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">time</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">time</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># 2. T 转为 8 字节大端序二进制</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    counter_bytes </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> struct</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">pack</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"&gt;Q"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> t</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># 3. Base32 密钥解码为原始二进制密钥（大写并补齐 padding）</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    upper </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> base32_secret</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">upper</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    padded </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> upper </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"="</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">*</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">8</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">-</span><span class="token plain"> </span><span class="token builtin">len</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">upper</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">%</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">8</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">%</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">8</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    key </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> base64</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">b32decode</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">padded</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># 4. HMAC-SHA1(密钥, 计数器)，得到 20 字节哈希</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    h </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> hmac</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">new</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">key</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> counter_bytes</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> hashlib</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">sha1</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">digest</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># 5. 取最后一字节低 4 位作为偏移量 offset</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    offset </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> h</span><span class="token punctuation" style="color:#393A34">[</span><span class="token operator" style="color:#393A34">-</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&amp;</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0x0F</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># 6. 从 offset 截取 4 字节，清除最高符号位</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    code_int </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> struct</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">unpack</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"&gt;I"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> h</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">offset</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">offset </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">4</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&amp;</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0x7FFFFFFF</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># 7. 对 10^digits 取模，前补零</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> </span><span class="token builtin">str</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">code_int </span><span class="token operator" style="color:#393A34">%</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">10</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">**</span><span class="token plain"> digits</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">zfill</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">digits</span><span class="token punctuation" style="color:#393A34">)</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="六工作完整流程以-github-totp-举例">六、工作完整流程（以 GitHub TOTP 举例）<a href="http://www.otqsoft.com/doc/blog/long-blog-2FA#%E5%85%AD%E5%B7%A5%E4%BD%9C%E5%AE%8C%E6%95%B4%E6%B5%81%E7%A8%8B%E4%BB%A5-github-totp-%E4%B8%BE%E4%BE%8B" class="hash-link" aria-label="六、工作完整流程（以 GitHub TOTP 举例）的直接链接" title="六、工作完整流程（以 GitHub TOTP 举例）的直接链接" translate="no">​</a></h2>
<ol>
<li class="">预绑定阶段（你截图的页面）GitHub 服务器生成唯一 Base32 密钥，同时下发给你（二维码 /setup key），服务器永久保存该密钥。</li>
<li class="">登录流程① 用户输入用户名 + 密码（第一因素）；② 服务器校验密码正确后，触发第二道 2FA 校验；③ 用户打开验证器 App，基于共享密钥 + 当前时间生成 6 位 TOTP 验证码；④ 提交验证码，服务器用同一密钥、同一时间窗口计算验证码比对；⑤ 校验一致，允许登录；不一致则拒绝访问。</li>
<li class="">容错机制：服务器会校验「上一个 30 秒 / 当前 / 下一个 30 秒」三组验证码，解决手机和电脑微小时间差。</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="七常见误区澄清">七、常见误区澄清<a href="http://www.otqsoft.com/doc/blog/long-blog-2FA#%E4%B8%83%E5%B8%B8%E8%A7%81%E8%AF%AF%E5%8C%BA%E6%BE%84%E6%B8%85" class="hash-link" aria-label="七、常见误区澄清的直接链接" title="七、常见误区澄清的直接链接" translate="no">​</a></h2>
<ol>
<li class="">误区：输两次密码就是 2FA错误，两者都属于「你知道的信息」，只是双重密码，没有安全提升。</li>
<li class="">误区：短信是最安全的 2FA错误，短信是风险最高的方案，优先 TOTP 验证器 App。</li>
<li class="">误区：2FA 开启后绝对不会被盗号2FA 大幅提升门槛，但如果泄露 Base32 密钥、丢失硬件密钥、泄露恢复码，账号依然有风险，密钥需要妥善保管。</li>
<li class="">误区：可以绕过 2FA 校验弹窗GitHub 强制校验是后台风控策略，无法跳过，必须完成一次有效 TOTP 验证才能永久消除弹窗。</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="八优缺点总结">八、优缺点总结<a href="http://www.otqsoft.com/doc/blog/long-blog-2FA#%E5%85%AB%E4%BC%98%E7%BC%BA%E7%82%B9%E6%80%BB%E7%BB%93" class="hash-link" aria-label="八、优缺点总结的直接链接" title="八、优缺点总结的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="优点">优点<a href="http://www.otqsoft.com/doc/blog/long-blog-2FA#%E4%BC%98%E7%82%B9" class="hash-link" aria-label="优点的直接链接" title="优点的直接链接" translate="no">​</a></h3>
<ol>
<li class="">极大降低账号被盗概率；</li>
<li class="">TOTP 离线可用，不依赖网络 / 运营商；</li>
<li class="">免费、易部署，个人 / 企业均可使用；</li>
<li class="">主流平台（GitHub、云服务器、支付、后台管理）全部标配。</li>
</ol>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="缺点">缺点<a href="http://www.otqsoft.com/doc/blog/long-blog-2FA#%E7%BC%BA%E7%82%B9" class="hash-link" aria-label="缺点的直接链接" title="缺点的直接链接" translate="no">​</a></h3>
<ol>
<li class="">增加登录操作步骤，降低使用便捷度；</li>
<li class="">若丢失验证设备且未保存恢复码，有账号锁死风险；</li>
<li class="">TOTP 对设备系统时间同步有要求，时间偏差会导致验证码失效。</li>
</ol>]]></content>
        <author>
            <name>otqsoft</name>
            <uri>https://gitee.com/work25</uri>
        </author>
        <category label="加密" term="加密"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[SkyWalking]]></title>
        <id>http://www.otqsoft.com/doc/blog/long-blog-skywalking</id>
        <link href="http://www.otqsoft.com/doc/blog/long-blog-skywalking"/>
        <updated>2026-07-16T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Apache SkyWalking 是一款专为微服务、云原生及容器化架构设计的开源可观测性平台，提供分布式追踪、服务网格遥测分析、度量聚合与可视化的一体化解决方案。在传统单体应用向分布式架构演进的过程中，系统复杂度呈指数级增长，传统的日志监控与指标监控已无法满足故障定位与性能诊断的需求。SkyWalking 的核心价值在于填补了这一技术空白，通过全链路追踪能力，将原本黑盒化的跨服务调用过程转化为可视化的调用链，使开发运维人员能够快速定位性能瓶颈与故障根因。]]></summary>
        <content type="html"><![CDATA[<h1>一、项目概述</h1>
<p>Apache SkyWalking 是一款专为微服务、云原生及容器化架构设计的开源可观测性平台，提供分布式追踪、服务网格遥测分析、度量聚合与可视化的一体化解决方案。在传统单体应用向分布式架构演进的过程中，系统复杂度呈指数级增长，传统的日志监控与指标监控已无法满足故障定位与性能诊断的需求。SkyWalking 的核心价值在于填补了这一技术空白，通过全链路追踪能力，将原本黑盒化的跨服务调用过程转化为可视化的调用链，使开发运维人员能够快速定位性能瓶颈与故障根因。</p>
<p>与传统APM工具相比，SkyWalking 具备三大差异化优势：第一，无侵入式探针设计，通过字节码增强技术实现监控数据采集，无需修改业务代码；第二，高性能通信架构，采用gRPC协议进行数据传输，大幅降低监控开销；第三，跨语言生态支持，覆盖Java、.NET Core、PHP、Node.js、Go、Python等主流编程语言，完美适配异构技术栈的微服务体系。</p>
<img src="http://www.otqsoft.com/doc/assets/images/1-f96546bee5e2c39dc5fb810709feb2b4.webp" class="previewImage_kI9J">
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="主要功能特性">主要功能特性<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#%E4%B8%BB%E8%A6%81%E5%8A%9F%E8%83%BD%E7%89%B9%E6%80%A7" class="hash-link" aria-label="主要功能特性的直接链接" title="主要功能特性的直接链接" translate="no">​</a></h2>
<p>SkyWalking 的功能矩阵围绕可观测性的三大支柱（指标、日志、追踪）构建：</p>
<ol>
<li class=""><strong>分布式追踪</strong>：自动采集服务间调用链路，生成端到端的Trace记录，支持跨进程、跨语言的调用关系还原。每个Trace包含完整的Span层级结构，可精确到方法级别的耗时分析。</li>
<li class=""><strong>服务拓扑发现</strong>：基于调用关系数据自动绘制服务依赖图谱，直观展示微服务间的调用流向与依赖强度，识别关键路径与单点故障风险。</li>
<li class=""><strong>应用性能指标监控</strong>：采集JVM内存、CPU使用率、GC频率、线程状态等运行时指标，提供多维度的性能基线分析与异常检测。</li>
<li class=""><strong>告警与通知</strong>：支持基于阈值、同比环比、异常检测等多种规则的告警配置，可通过Webhook、邮件、钉钉、企业微信等渠道实时通知。</li>
<li class=""><strong>日志关联分析</strong>：将业务日志与Trace ID自动关联，实现日志上下文与调用链路的双向跳转，加速故障排查过程。</li>
<li class=""><strong>服务网格集成</strong>：原生支持Envoy + Istio构建的Service Mesh架构，可监控服务网格内的流量路由、负载均衡与安全策略执行情况。</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="适用场景">适用场景<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#%E9%80%82%E7%94%A8%E5%9C%BA%E6%99%AF" class="hash-link" aria-label="适用场景的直接链接" title="适用场景的直接链接" translate="no">​</a></h2>
<p>SkyWalking 的适用场景覆盖从开发测试到生产运维的全生命周期：</p>
<ul>
<li class=""><strong>微服务性能诊断</strong>：当接口响应时间异常时，通过调用链分析快速定位慢查询服务、数据库瓶颈或第三方API延迟。</li>
<li class=""><strong>容量规划与优化</strong>：基于历史性能数据识别服务资源瓶颈，为弹性伸缩与资源分配提供数据支撑。</li>
<li class=""><strong>故障根因定位</strong>：结合链路、指标与日志三要素，在服务异常时迅速缩小排查范围，确定故障发生的具体服务与方法。</li>
<li class=""><strong>架构演进验证</strong>：在服务拆分、技术栈迁移等架构变更后，验证新架构的性能表现与稳定性。</li>
<li class=""><strong>SLA合规监控</strong>：监控关键业务接口的可用性与响应时间，确保服务等级协议（SLA）的持续达标。</li>
</ul>
<h1>二、SkyWalking架构详解</h1>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="四大核心组件">四大核心组件<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#%E5%9B%9B%E5%A4%A7%E6%A0%B8%E5%BF%83%E7%BB%84%E4%BB%B6" class="hash-link" aria-label="四大核心组件的直接链接" title="四大核心组件的直接链接" translate="no">​</a></h2>
<p>SkyWalking 采用四层架构设计：<strong>探针（Agent）</strong> 部署于应用实例，负责无侵入采集追踪数据；<strong>后端服务（OAP Server）</strong> 接收、聚合、分析数据；<strong>存储（Storage）</strong> 持久化处理结果至Elasticsearch、MySQL等数据库；<strong>UI界面</strong> 提供可视化展示与查询功能。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="数据流转机制">数据流转机制<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#%E6%95%B0%E6%8D%AE%E6%B5%81%E8%BD%AC%E6%9C%BA%E5%88%B6" class="hash-link" aria-label="数据流转机制的直接链接" title="数据流转机制的直接链接" translate="no">​</a></h2>
<p>探针通过HTTP/gRPC将Trace Segment协议数据发送至OAP Server，OAP进行流式分析后写入存储层，UI从存储读取数据生成拓扑图与性能仪表盘。跨语言调用通过标准化Sw8 Header传递上下文，确保异构服务链路完整拼接。</p>
<h1>三、本地部署方法详解</h1>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="环境准备与依赖检查">环境准备与依赖检查<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#%E7%8E%AF%E5%A2%83%E5%87%86%E5%A4%87%E4%B8%8E%E4%BE%9D%E8%B5%96%E6%A3%80%E6%9F%A5" class="hash-link" aria-label="环境准备与依赖检查的直接链接" title="环境准备与依赖检查的直接链接" translate="no">​</a></h2>
<p>在开始部署 SkyWalking 之前，请确保您的系统满足以下最低要求：</p>
<p><strong>操作系统</strong>：Linux（CentOS 7+/Ubuntu 18.04+）、macOS 10.14+、Windows 10（WSL2推荐）</p>
<p><strong>内存</strong>：至少 4GB RAM（生产环境建议 8GB+）</p>
<p><strong>磁盘空间</strong>：至少 10GB 可用空间</p>
<p><strong>核心依赖版本</strong>：</p>
<ul>
<li class="">Java 8 或更高版本（推荐 OpenJDK 11）</li>
<li class="">MySQL 5.7+ 或 Elasticsearch 7.x（用于数据存储）</li>
<li class="">网络端口：11800（gRPC）、12800（HTTP）、8080（UI，可自定义）</li>
</ul>
<img src="http://www.otqsoft.com/doc/assets/images/2-8db2d6d949009ce50507ed470e7018f5.webp" class="previewImage_kI9J">
<p>可在此处配一张终端检查Java版本的截图，显示 <code>java -version</code> 命令输出</p>
<p><strong>快速验证命令</strong>：</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># 检查Java版本</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">java -version</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 检查MySQL状态（如使用MySQL存储）</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">systemctl status mysql</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 检查端口占用情况</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">netstat -tlnp | grep -E '11800|12800|8080'</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="手动部署步骤">手动部署步骤<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#%E6%89%8B%E5%8A%A8%E9%83%A8%E7%BD%B2%E6%AD%A5%E9%AA%A4" class="hash-link" aria-label="手动部署步骤的直接链接" title="手动部署步骤的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-下载与解压">1. 下载与解压<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#1-%E4%B8%8B%E8%BD%BD%E4%B8%8E%E8%A7%A3%E5%8E%8B" class="hash-link" aria-label="1. 下载与解压的直接链接" title="1. 下载与解压的直接链接" translate="no">​</a></h3>
<p>从 Apache SkyWalking 官网下载最新版本（当前稳定版为 9.7.0）：</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># 下载压缩包</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">wget https://dlcdn.apache.org/skywalking/9.7.0/apache-skywalking-apm-9.7.0.tar.gz</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 解压到指定目录</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">tar -zxvf apache-skywalking-apm-9.7.0.tar.gz -C /opt/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">cd /opt/apache-skywalking-apm-9.7.0</span><br></span></code></pre></div></div>
<p>解压后的目录结构：</p>
<ul>
<li class=""><code>bin/</code>：启动脚本（oapService.sh、webappService.sh）</li>
<li class=""><code>config/</code>：配置文件目录</li>
<li class=""><code>agent/</code>：Java Agent 探针</li>
<li class=""><code>webapp/</code>：UI 前端资源</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-mysql存储配置详解">2. MySQL存储配置详解<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#2-mysql%E5%AD%98%E5%82%A8%E9%85%8D%E7%BD%AE%E8%AF%A6%E8%A7%A3" class="hash-link" aria-label="2. MySQL存储配置详解的直接链接" title="2. MySQL存储配置详解的直接链接" translate="no">​</a></h3>
<p>SkyWalking 默认使用 H2 内存数据库，适合测试环境。生产环境推荐使用 MySQL 或 Elasticsearch。以下以 MySQL 为例：</p>
<p><strong>步骤一：创建数据库与用户</strong></p>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">-- 登录MySQL</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">mysql </span><span class="token operator" style="color:#393A34">-</span><span class="token plain">u root </span><span class="token operator" style="color:#393A34">-</span><span class="token plain">p</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">-- 创建数据库（字符集必须为utf8）</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">CREATE</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">DATABASE</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">IF</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">NOT</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">EXISTS</span><span class="token plain"> </span><span class="token identifier punctuation" style="color:#393A34">`</span><span class="token identifier">skywalking</span><span class="token identifier punctuation" style="color:#393A34">`</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">DEFAULT</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">CHARACTER</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">SET</span><span class="token plain"> utf8 </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">DEFAULT</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">COLLATE</span><span class="token plain"> utf8_general_ci</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">-- 创建专用用户</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">CREATE</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">USER</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'skywalking'</span><span class="token variable" style="color:#36acaa">@'%'</span><span class="token plain"> IDENTIFIED </span><span class="token keyword" style="color:#00009f">BY</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'YourPassword123!'</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">GRANT</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">ALL</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">PRIVILEGES</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">ON</span><span class="token plain"> skywalking</span><span class="token punctuation" style="color:#393A34">.</span><span class="token operator" style="color:#393A34">*</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">TO</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'skywalking'</span><span class="token variable" style="color:#36acaa">@'%'</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">FLUSH </span><span class="token keyword" style="color:#00009f">PRIVILEGES</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<p><strong>步骤二：修改 OAP 配置文件</strong>编辑 <code>config/application.yml</code>，找到 storage 配置段：</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">storage</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">selector</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> $</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">SW_STORAGE</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">mysql</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># 指定使用MySQL</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">mysql</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">properties</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">jdbcUrl</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> $</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">SW_JDBC_URL</span><span class="token punctuation" style="color:#393A34">:</span><span class="token string" style="color:#e3116c">"jdbc:mysql://localhost:3306/skywalking?rewriteBatchedStatements=true"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">dataSource.user</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> $</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">SW_DATA_SOURCE_USER</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">skywalking</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">dataSource.password</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> $</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">SW_DATA_SOURCE_PASSWORD</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">YourPassword123</span><span class="token tag" style="color:#00009f">!</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">dataSource.cachePrepStmts</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> $</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">SW_DATA_SOURCE_CACHE_PREP_STMTS</span><span class="token punctuation" style="color:#393A34">:</span><span class="token boolean important" style="color:#36acaa">true</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">dataSource.prepStmtCacheSize</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> $</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">SW_DATA_SOURCE_PREP_STMT_CACHE_SIZE</span><span class="token punctuation" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">250</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">dataSource.prepStmtCacheSqlLimit</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> $</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_LIMIT</span><span class="token punctuation" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">2048</span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<p><strong>关键配置说明</strong>：</p>
<ul>
<li class=""><code>rewriteBatchedStatements=true</code>：启用批量写入优化，提升数据入库性能</li>
<li class=""><code>cachePrepStmts</code> 系列参数：预编译语句缓存，减少数据库连接开销</li>
<li class="">生产环境建议将密码通过环境变量传入，避免硬编码</li>
</ul>
<p><strong>步骤三：初始化数据库表结构</strong>SkyWalking 会自动创建所需表，首次启动时会执行初始化脚本。无需手动建表。</p>
<p><strong>步骤四：启动 OAP 服务</strong></p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># 启动后端服务（默认端口11800/12800）</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">./bin/oapService.sh start</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 查看启动日志</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">tail -f logs/skywalking-oap-server.log</span><br></span></code></pre></div></div>
<p><strong>步骤五：配置并启动 Web UI</strong>修改 <code>webapp/webapp.yml</code>：</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">server</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">port</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">8080</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># UI访问端口</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">oap</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">host</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> $</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">SW_OAP_HOST</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">localhost</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">port</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> $</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">SW_OAP_PORT</span><span class="token punctuation" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">12800</span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<p>启动UI服务：</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">./bin/webappService.sh start</span><br></span></code></pre></div></div>
<p>访问 <code>http://localhost:8080</code> 即可进入监控控制台。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="docker快速部署方案">Docker快速部署方案<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#docker%E5%BF%AB%E9%80%9F%E9%83%A8%E7%BD%B2%E6%96%B9%E6%A1%88" class="hash-link" aria-label="Docker快速部署方案的直接链接" title="Docker快速部署方案的直接链接" translate="no">​</a></h2>
<p>对于追求部署效率的场景，Docker 是最佳选择。SkyWalking 提供官方镜像，支持一键部署完整监控栈。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="单机部署开发测试">单机部署（开发测试）<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#%E5%8D%95%E6%9C%BA%E9%83%A8%E7%BD%B2%E5%BC%80%E5%8F%91%E6%B5%8B%E8%AF%95" class="hash-link" aria-label="单机部署（开发测试）的直接链接" title="单机部署（开发测试）的直接链接" translate="no">​</a></h3>
<p><strong>1. 使用 Docker Compose</strong>创建 <code>docker-compose.yml</code>：</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">version</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'3.8'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">services</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">oap</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">image</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> apache/skywalking</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">oap</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">server</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">9.7.0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">container_name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> skywalking</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">oap</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">restart</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> always</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">ports</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"11800:11800"</span><span class="token plain">   </span><span class="token comment" style="color:#999988;font-style:italic"># gRPC端口</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"12800:12800"</span><span class="token plain">   </span><span class="token comment" style="color:#999988;font-style:italic"># HTTP端口</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">environment</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">SW_STORAGE</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> elasticsearch</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">SW_ES_USER</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> elastic</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">SW_ES_PASSWORD</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> your_password</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">SW_ES_URL</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> http</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//elasticsearch</span><span class="token punctuation" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">9200</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">depends_on</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> elasticsearch</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">ui</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">image</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> apache/skywalking</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">ui</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">9.7.0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">container_name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> skywalking</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">ui</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">restart</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> always</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">ports</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"8080:8080"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">environment</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">SW_OAP_ADDRESS</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> http</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//oap</span><span class="token punctuation" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">12800</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">depends_on</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> oap</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">elasticsearch</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">image</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> elasticsearch</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">7.17.0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">container_name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> elasticsearch</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">restart</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> always</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">environment</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> discovery.type=single</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">node</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> xpack.security.enabled=false</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"ES_JAVA_OPTS=-Xms512m -Xmx512m"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">ports</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"9200:9200"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">volumes</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> es_data</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">/usr/share/elasticsearch/data</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">volumes</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  es_data</span><span class="token punctuation" style="color:#393A34">:</span><br></span></code></pre></div></div>
<p><strong>2. 启动服务</strong></p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">docker-compose up -d</span><br></span></code></pre></div></div>
<p><strong>3. 验证部署</strong></p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># 检查容器状态</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">docker-compose ps</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 查看OAP日志</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">docker logs -f skywalking-oap</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 访问UI</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">curl http://localhost:8080</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="生产环境优化配置">生产环境优化配置<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#%E7%94%9F%E4%BA%A7%E7%8E%AF%E5%A2%83%E4%BC%98%E5%8C%96%E9%85%8D%E7%BD%AE" class="hash-link" aria-label="生产环境优化配置的直接链接" title="生产环境优化配置的直接链接" translate="no">​</a></h3>
<p>生产环境需考虑高可用与性能优化：</p>
<p><strong>1. 集群模式部署</strong>修改 OAP 环境变量：</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">environment</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">SW_CLUSTER</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> kubernetes  </span><span class="token comment" style="color:#999988;font-style:italic"># 或zookeeper、nacos</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">SW_CLUSTER_K8S_NAMESPACE</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> skywalking</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">SW_CLUSTER_K8S_LABEL</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> app=skywalking</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">SW_CLUSTER_K8S_SERVICE_NAME</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> skywalking</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">oap</span><br></span></code></pre></div></div>
<p><strong>2. 资源限制</strong></p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">deploy</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">resources</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">limits</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">memory</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> 2G</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">cpus</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'2'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">reservations</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">memory</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> 1G</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">cpus</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'1'</span><br></span></code></pre></div></div>
<p><strong>3. 数据持久化</strong></p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">volumes</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> ./data/oap</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">/skywalking/logs</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> ./data/config</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">/skywalking/config</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="与现有监控体系集成">与现有监控体系集成<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#%E4%B8%8E%E7%8E%B0%E6%9C%89%E7%9B%91%E6%8E%A7%E4%BD%93%E7%B3%BB%E9%9B%86%E6%88%90" class="hash-link" aria-label="与现有监控体系集成的直接链接" title="与现有监控体系集成的直接链接" translate="no">​</a></h3>
<p>SkyWalking Docker 部署可轻松对接现有基础设施：</p>
<p><strong>1. 对接外部 Elasticsearch</strong></p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">environment</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">SW_STORAGE</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> elasticsearch</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">SW_ES_URL</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> http</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//your</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">es</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">cluster</span><span class="token punctuation" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">9200</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">SW_ES_USER</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> $</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">ES_USER</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">SW_ES_PASSWORD</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> $</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">ES_PASSWORD</span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<p><strong>2. 配置反向代理（Nginx）</strong></p>
<div class="language-nginx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-nginx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">location /skywalking/ {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    proxy_pass http://skywalking-ui:8080/;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    proxy_set_header Host $host;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    proxy_set_header X-Real-IP $remote_addr;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span></code></pre></div></div>
<p><strong>3. 监控数据导出</strong>通过 OAP 的 Prometheus 插件，将指标数据导出至现有监控系统：</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">environment</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">SW_TELEMETRY_PROMETHEUS_HOST</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> 0.0.0.0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">SW_TELEMETRY_PROMETHEUS_PORT</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1234</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="部署验证清单">部署验证清单<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#%E9%83%A8%E7%BD%B2%E9%AA%8C%E8%AF%81%E6%B8%85%E5%8D%95" class="hash-link" aria-label="部署验证清单的直接链接" title="部署��验证清单的直接链接" translate="no">​</a></h3>
<p>部署完成后，执行以下验证步骤：</p>
<p>&lt;图片&gt;</p>
<p>可在此处配一张SkyWalking UI首页截图，展示服务拓扑图</p>
<ol>
<li class=""><strong>服务连通性测试</strong></li>
</ol>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># 测试OAP gRPC端口</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">grpcurl -plaintext localhost:11800 list</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 测试OAP HTTP端口</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">curl http://localhost:12800</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 测试UI访问</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">curl -I http://localhost:8080</span><br></span></code></pre></div></div>
<ol>
<li class=""><strong>数据上报验证</strong>启动一个测试应用并配置 SkyWalking Agent，观察数据是否正常上报至UI界面。</li>
<li class=""><strong>性能基准测试</strong>使用压测工具模拟业务流量，验证 SkyWalking 在高负载下的稳定性与资源消耗。</li>
</ol>
<p><strong>部署选择建议</strong>：</p>
<ul>
<li class=""><strong>开发/测试环境</strong>：推荐 Docker Compose 单机部署，5分钟完成环境搭建</li>
<li class=""><strong>预发布环境</strong>：使用 Docker 集群模式，模拟生产架构</li>
<li class=""><strong>生产环境</strong>：结合 Kubernetes 部署，配置资源限制与高可用策略</li>
</ul>
<p>无论选择哪种部署方式，SkyWalking 都提供了灵活的配置选项，可根据实际需求调整存储后端、集群模式与资源分配。关键是要在部署初期明确监控数据的保留周期、存储容量规划以及告警策略，避免后期因数据膨胀或配置不当导致的运维负担。</p>
<h1>四、Java语言对接使用方法</h1>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="依赖配置与代理部署">依赖配置与代理部署<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#%E4%BE%9D%E8%B5%96%E9%85%8D%E7%BD%AE%E4%B8%8E%E4%BB%A3%E7%90%86%E9%83%A8%E7%BD%B2" class="hash-link" aria-label="依赖配置与代理部署的直接链接" title="依赖配置与代理部署的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-探针获取与部署方式">1. 探针获取与部署方式<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#1-%E6%8E%A2%E9%92%88%E8%8E%B7%E5%8F%96%E4%B8%8E%E9%83%A8%E7%BD%B2%E6%96%B9%E5%BC%8F" class="hash-link" aria-label="1. 探针获取与部署方式的直接链接" title="1. 探针获取与部署方式的直接链接" translate="no">​</a></h3>
<p>SkyWalking Java Agent 提供两种集成方式：<strong>独立探针部署</strong>与<strong>Maven依赖集成</strong>。对于生产环境，推荐使用独立探针方案，避免依赖冲突与版本管理问题。</p>
<p><strong>独立探针部署步骤</strong>：</p>
<ol>
<li class=""><strong>下载探针包</strong>从 SkyWalking 官网下载对应版本的发布包，解压后获取 <code>agent/</code> 目录：</li>
</ol>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">wget https://dlcdn.apache.org/skywalking/9.7.0/apache-skywalking-apm-9.7.0.tar.gz</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">tar -zxvf apache-skywalking-apm-9.7.0.tar.gz</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 探针位于解压目录的 agent/ 子目录</span><br></span></code></pre></div></div>
<ol start="2">
<li class=""><strong>探针目录结构解析</strong></li>
</ol>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">skywalking-agent/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── config/                    # 探针配置文件</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   └── agent.config          # 核心配置文件</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── plugins/                   # 插件目录（支持框架扩展）</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   ├── apm-spring-cloud-gateway-2.1.x-plugin.jar</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   ├── apm-dubbo-2.7.x-plugin.jar</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   └── ...</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── optional-plugins/          # 可选插件</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── bootstrap-plugins/         # 启动类插件</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">└── skywalking-agent.jar       # 核心Agent JAR</span><br></span></code></pre></div></div>
<ol start="3">
<li class=""><strong>基础配置参数</strong>编辑 <code>config/agent.config</code> 或通过JVM参数动态配置：</li>
</ol>
<div class="language-properties codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-properties codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># 服务名称（在UI中显示）</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">agent.service_name=${SW_AGENT_NAME:Your-Service-Name}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># OAP服务器地址（gRPC协议）</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:127.0.0.1:11800}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 采样率（0.0-1.0，生产环境建议0.1-0.3）</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">agent.sample_n_per_3_secs=${SW_AGENT_SAMPLE:-1}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 日志级别</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">logging.level=${SW_LOGGING_LEVEL:INFO}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-启动参数配置">2. 启动参数配置<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#2-%E5%90%AF%E5%8A%A8%E5%8F%82%E6%95%B0%E9%85%8D%E7%BD%AE" class="hash-link" aria-label="2. 启动参数配置的直接链接" title="2. 启动参数配置的直接链接" translate="no">​</a></h3>
<p><strong>传统JAR包启动方式</strong>：</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">java -javaagent:/path/to/skywalking-agent/skywalking-agent.jar \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     -Dskywalking.agent.service_name=order-service \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     -Dskywalking.collector.backend_service=192.168.1.100:11800 \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     -Dskywalking.agent.sample_n_per_3_secs=100 \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     -jar your-application.jar</span><br></span></code></pre></div></div>
<p><strong>Spring Boot应用启动脚本示例</strong>（<code>start.sh</code>）：</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">#!/bin/bash</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">AGENT_PATH="/opt/skywalking/agent/skywalking-agent.jar"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">SERVICE_NAME="order-service"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">OAP_SERVER="skywalking-oap:11800"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">JVM_OPTS="-javaagent:${AGENT_PATH} \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          -Dskywalking.agent.service_name=${SERVICE_NAME} \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          -Dskywalking.collector.backend_service=${OAP_SERVER} \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          -Dskywalking.logging.level=INFO \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          -Dskywalking.agent.sample_n_per_3_secs=100 \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          -Dskywalking.plugin.jdbc.trace_sql_parameters=true \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          -Xms512m -Xmx512m"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">java ${JVM_OPTS} -jar target/order-service-1.0.0.jar</span><br></span></code></pre></div></div>
<p><strong>关键参数说明</strong>：</p>
<ul>
<li class=""><code>-javaagent</code>：必须放在所有JVM参数之前</li>
<li class=""><code>service_name</code>：同一服务的多个实例应使用相同名称</li>
<li class=""><code>backend_service</code>：支持多个OAP地址，用逗号分隔实现负载均衡</li>
<li class=""><code>sample_n_per_3_secs</code>：每3秒采样数，-1表示全量采集（仅限测试环境）</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-mavengradle依赖集成可选">3. Maven/Gradle依赖集成（可选）<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#3-mavengradle%E4%BE%9D%E8%B5%96%E9%9B%86%E6%88%90%E5%8F%AF%E9%80%89" class="hash-link" aria-label="3. Maven/Gradle依赖集成（可选）的直接链接" title="3. Maven/Gradle依赖集成（可选）的直接链接" translate="no">​</a></h3>
<p>对于需要手动埋点或日志关联的场景，可添加Toolkit依赖：</p>
<p><strong>Maven配置</strong>（<code>pom.xml</code>）：</p>
<div class="language-xml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-xml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">dependency</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">groupId</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">org.apache.skywalking</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">groupId</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">artifactId</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">apm-toolkit-trace</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">artifactId</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">version</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">9.7.0</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">version</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">dependency</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">dependency</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">groupId</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">org.apache.skywalking</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">groupId</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">artifactId</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">apm-toolkit-logback-1.x</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">artifactId</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">version</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">9.7.0</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">version</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">dependency</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">dependency</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">groupId</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">org.apache.skywalking</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">groupId</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">artifactId</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">apm-toolkit-opentracing</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">artifactId</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">version</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">9.7.0</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">version</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">scope</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">provided</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">scope</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">dependency</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<p><strong>Gradle配置</strong>（<code>build.gradle</code>）：</p>
<div class="language-groovy codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-groovy codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">dependencies {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    implementation 'org.apache.skywalking:apm-toolkit-trace:9.7.0'</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    implementation 'org.apache.skywalking:apm-toolkit-logback-1.x:9.7.0'</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    compileOnly 'org.apache.skywalking:apm-toolkit-opentracing:9.7.0'</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span></code></pre></div></div>
<p>&lt;图片&gt;</p>
<p>可在此处配一张IDEA中Maven依赖配置截图，展示SkyWalking依赖添加位置</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="代码示例与最佳实践">代码示例与最佳实践<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#%E4%BB%A3%E7%A0%81%E7%A4%BA%E4%BE%8B%E4%B8%8E%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5" class="hash-link" aria-label="代码示例与最佳实践的直接链接" title="代码示例与最佳实践的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-自动埋点与框架支持">1. 自动埋点与框架支持<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#1-%E8%87%AA%E5%8A%A8%E5%9F%8B%E7%82%B9%E4%B8%8E%E6%A1%86%E6%9E%B6%E6%94%AF%E6%8C%81" class="hash-link" aria-label="1. 自动埋点与框架支持的直接链接" title="1. 自动埋点与框架支持的直接链接" translate="no">​</a></h3>
<p>SkyWalking Java Agent 通过字节码增强技术自动支持主流框架：</p>
<p><strong>Spring Boot 自动集成</strong>：Agent 自动识别并监控以下组件：</p>
<ul>
<li class=""><code>@RestController</code> / <code>@Controller</code> 注解的HTTP端点</li>
<li class=""><code>@Service</code> / <code>@Component</code> 业务服务层</li>
<li class=""><code>@Repository</code> 数据访问层</li>
<li class="">Spring MVC 请求映射与参数解析</li>
<li class="">Spring Data JPA / MyBatis 数据库操作</li>
</ul>
<p><strong>支持框架列表</strong>：</p>
<ul>
<li class="">Web框架：Spring MVC 3.x/4.x/5.x, Spring Boot 1.x/2.x</li>
<li class="">RPC框架：Dubbo 2.5.x-2.7.x, gRPC 1.x</li>
<li class="">消息队列：Kafka, RocketMQ 4.x</li>
<li class="">数据库：MySQL, PostgreSQL, Oracle, MongoDB</li>
<li class="">缓存：Redis (Jedis/Lettuce)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-手动埋点示例">2. 手动埋点示例<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#2-%E6%89%8B%E5%8A%A8%E5%9F%8B%E7%82%B9%E7%A4%BA%E4%BE%8B" class="hash-link" aria-label="2. 手动埋点示例的直接链接" title="2. 手动埋点示例的直接链接" translate="no">​</a></h3>
<p>对于自定义业务逻辑或第三方组件，可使用手动埋点：</p>
<p><strong>Trace注解方式</strong>：</p>
<div class="language-java codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-java codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">import org.apache.skywalking.apm.toolkit.trace.Trace;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">import org.apache.skywalking.apm.toolkit.trace.TraceContext;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">@Service</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">public class OrderService {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    @Trace(operationName = "createOrder")</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    public OrderDTO createOrder(OrderRequest request) {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        // 获取当前Trace ID（用于日志关联）</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        String traceId = TraceContext.traceId();</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        log.info("TraceID: {}, 开始创建订单", traceId);</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        // 业务逻辑</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        validateRequest(request);</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        Order order = buildOrder(request);</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        saveOrder(order);</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        return convertToDTO(order);</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    @Trace</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    private void validateRequest(OrderRequest request) {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        // 参数校验逻辑</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span></code></pre></div></div>
<p><strong>ActiveSpan API（更细粒度控制）</strong>：</p>
<div class="language-java codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-java codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">import org.apache.skywalking.apm.toolkit.trace.ActiveSpan;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">public class PaymentService {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    public PaymentResult processPayment(PaymentRequest request) {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        // 创建自定义Span</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        ActiveSpan.tag("payment_method", request.getMethod());</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        ActiveSpan.tag("amount", String.valueOf(request.getAmount()));</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        try {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            ActiveSpan.debug("开始支付处理");</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            // 支付逻辑</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            return executePayment(request);</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        } catch (Exception e) {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            // 标记错误</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            ActiveSpan.error(e);</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            ActiveSpan.tag("error_code", "PAYMENT_FAILED");</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            throw e;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-日志关联配置">3. 日志关联配置<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#3-%E6%97%A5%E5%BF%97%E5%85%B3%E8%81%94%E9%85%8D%E7%BD%AE" class="hash-link" aria-label="3. 日志关联配置的直接链接" title="3. 日志关联配置的直接链接" translate="no">​</a></h3>
<p>将业务日志与Trace ID自动关联：</p>
<p><strong>Logback配置</strong>（<code>logback-spring.xml</code>）：</p>
<div class="language-xml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-xml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">configuration</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">appender</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">name</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">CONSOLE</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">class</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">ch.qos.logback.core.ConsoleAppender</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">encoder</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">class</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">ch.qos.logback.core.encoder.LayoutWrappingEncoder</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">layout</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">class</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">pattern</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">%d{yyyy-MM-dd HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger{36} - %msg%n</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">pattern</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">layout</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">encoder</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">appender</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">root</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">level</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">INFO</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">appender-ref</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">ref</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">CONSOLE</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag punctuation" style="color:#393A34">/&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">root</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">configuration</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<p><strong>Log4j2配置</strong>：</p>
<div class="language-xml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-xml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">Configuration</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">Appenders</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">Console</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">name</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">Console</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">target</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">SYSTEM_OUT</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">PatternLayout</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">pattern</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{tid}] [%t] %-5p %c{1.} - %m%n</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">/&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">Console</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">Appenders</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">Loggers</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">Root</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">level</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">info</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">AppenderRef</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">ref</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">Console</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">/&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">Root</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">Loggers</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">Configuration</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<p>日志输出示例：</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">2024-03-15 14:30:25.123 [TID:3.48.16893234250000001] [http-nio-8080-exec-1] INFO  c.e.o.OrderService - 订单创建成功，订单号: ORD20240315001</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="4-跨线程追踪">4. 跨线程追踪<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#4-%E8%B7%A8%E7%BA%BF%E7%A8%8B%E8%BF%BD%E8%B8%AA" class="hash-link" aria-label="4. 跨线程追踪的直接链接" title="4. 跨线程追踪的直接链接" translate="no">​</a></h3>
<p>对于异步任务或线程池场景，需要手动传递Trace上下文：</p>
<p><strong>Runnable/Callable包装</strong>：</p>
<div class="language-java codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-java codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">import org.apache.skywalking.apm.toolkit.trace.RunnableWrapper;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">import org.apache.skywalking.apm.toolkit.trace.CallableWrapper;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">// 线程池提交任务</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">executorService.submit(RunnableWrapper.of(() -&gt; {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    // 异步任务逻辑，Trace上下文自动传递</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    processAsyncTask();</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}));</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">// 带返回值的任务</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Future&lt;String&gt; future = executorService.submit(</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    CallableWrapper.of(() -&gt; {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        return asyncCompute();</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    })</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">);</span><br></span></code></pre></div></div>
<p><strong>CompletableFuture支持</strong>：</p>
<div class="language-java codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-java codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">import org.apache.skywalking.apm.toolkit.trace.TraceCrossThread;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">@TraceCrossThread</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">public class TraceableCompletableFuture&lt;T&gt; extends CompletableFuture&lt;T&gt; {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    // 自动继承Trace上下文</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">// 使用示例</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">TraceableCompletableFuture&lt;String&gt; future = new TraceableCompletableFuture&lt;&gt;();</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">executorService.submit(() -&gt; {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    String result = doAsyncWork();</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    future.complete(result);</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">});</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="5-最佳实践总结">5. 最佳实践总结<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#5-%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5%E6%80%BB%E7%BB%93" class="hash-link" aria-label="5. 最佳实践总结的直接链接" title="5. 最佳实践总结的直接链接" translate="no">​</a></h3>
<ol>
<li class=""><strong>采样率配置</strong>：生产环境设置 <code>agent.sample_n_per_3_secs=100</code>（约3%采样），平衡监控开销与数据完整性。</li>
<li class=""><strong>插件管理</strong>：<code>plugins/</code> 目录只保留需要的插件，减少类加载开销。定期检查插件版本兼容性。</li>
<li class=""><strong>标签使用规范</strong>：<!-- -->
<ul>
<li class="">业务标签：<code>customer_id</code>, <code>order_type</code>, <code>payment_status</code></li>
<li class="">技术标签：<code>db_instance</code>, <code>cache_hit</code>, <code>external_api</code></li>
<li class="">避免标签值过大（超过512字节）</li>
</ul>
</li>
<li class=""><strong>异常处理</strong>：关键业务方法使用 <code>ActiveSpan.error(e)</code> 记录异常，结合 <code>@Trace</code> 注解的 <code>ignoreExceptions</code> 参数过滤已知异常。</li>
<li class=""><strong>性能监控</strong>：关注Agent的CPU和内存使用，单实例建议不超过应用资源的5%。</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="生产环境部署方案">生产环境部署方案<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#%E7%94%9F%E4%BA%A7%E7%8E%AF%E5%A2%83%E9%83%A8%E7%BD%B2%E6%96%B9%E6%A1%88" class="hash-link" aria-label="生产环境部署方案的直接链接" title="生产环境部署方案的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-容器化部署策略">1. 容器化部署策略<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#1-%E5%AE%B9%E5%99%A8%E5%8C%96%E9%83%A8%E7%BD%B2%E7%AD%96%E7%95%A5" class="hash-link" aria-label="1. 容器化部署策略的直接链接" title="1. 容器化部署策略的直接链接" translate="no">​</a></h3>
<p><strong>Docker镜像构建</strong>：</p>
<div class="language-dockerfile codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-dockerfile codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">FROM openjdk:11-jre-slim</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">COPY skywalking-agent /usr/local/skywalking-agent</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">COPY target/app.jar /app/app.jar</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">ENTRYPOINT ["java", "-javaagent:/usr/local/skywalking-agent/skywalking-agent.jar", \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">           "-Dskywalking.agent.service_name=${SERVICE_NAME}", \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">           "-Dskywalking.collector.backend_service=${OAP_SERVER}", \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">           "-jar", "/app/app.jar"]</span><br></span></code></pre></div></div>
<p><strong>Kubernetes配置要点</strong>：</p>
<ul>
<li class="">使用ConfigMap管理agent.config</li>
<li class="">通过环境变量注入服务名与OAP地址</li>
<li class="">设置资源限制：CPU 100m-500m，内存200M-1G</li>
<li class="">就绪探针检查Agent状态</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-高可用架构">2. 高可用架构<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#2-%E9%AB%98%E5%8F%AF%E7%94%A8%E6%9E%B6%E6%9E%84" class="hash-link" aria-label="2. 高可用架构的直接链接" title="2. 高可用架构的直接链接" translate="no">​</a></h3>
<p><strong>多OAP负载均衡</strong>：</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">agent.config: collector.backend_service=oap1:11800,oap2:11800,oap3:11800</span><br></span></code></pre></div></div>
<p><strong>服务发现集成</strong>：</p>
<ul>
<li class="">Kubernetes：通过Service名称自动发现</li>
<li class="">Nacos/Zookeeper：动态获取OAP实例列表</li>
<li class="">客户端侧负载均衡与故障转移</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-安全配置">3. 安全配置<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#3-%E5%AE%89%E5%85%A8%E9%85%8D%E7%BD%AE" class="hash-link" aria-label="3. 安全配置的直接链接" title="3. 安全配置的直接链接" translate="no">​</a></h3>
<p><strong>认证与加密</strong>：</p>
<ul>
<li class="">gRPC TLS加密传输</li>
<li class="">OAP访问令牌认证</li>
<li class="">网络策略限制访问范围</li>
</ul>
<p><strong>数据脱敏</strong>：</p>
<ul>
<li class="">SQL参数脱敏插件</li>
<li class="">HTTP头信息过滤</li>
<li class="">自定义脱敏规则</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="4-性能优化">4. 性能优化<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#4-%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96" class="hash-link" aria-label="4. 性能优化的直接链接" title="4. 性能优化的直接链接" translate="no">​</a></h3>
<p><strong>采样策略</strong>：</p>
<ul>
<li class="">关键路径全采样，非关键路径降采样</li>
<li class="">自适应采样：根据QPS动态调整</li>
<li class="">错误请求全采样</li>
</ul>
<p><strong>资源控制</strong>：</p>
<ul>
<li class="">缓冲区大小优化</li>
<li class="">批量上报配置</li>
<li class="">离线模式支持（网络异常时）</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="5-监控与运维">5. 监控与运维<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#5-%E7%9B%91%E6%8E%A7%E4%B8%8E%E8%BF%90%E7%BB%B4" class="hash-link" aria-label="5. 监控与运维的直接链接" title="5. 监控与运维的直接链接" translate="no">​</a></h3>
<p><strong>Agent自监控</strong>：</p>
<ul>
<li class="">通过JMX暴露内部指标</li>
<li class="">健康检查端点</li>
<li class="">日志轮转与归档</li>
</ul>
<p><strong>升级与回滚</strong>：</p>
<ul>
<li class="">蓝绿部署策略</li>
<li class="">版本兼容性矩阵</li>
<li class="">配置热更新支持</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="6-故障排查清单">6. 故障排查清单<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#6-%E6%95%85%E9%9A%9C%E6%8E%92%E6%9F%A5%E6%B8%85%E5%8D%95" class="hash-link" aria-label="6. 故障排查清单的直接链接" title="6. 故障排查清单的直接链接" translate="no">​</a></h3>
<ol>
<li class=""><strong>数据不上报</strong>：检查网络连通性、OAP状态、采样配置</li>
<li class=""><strong>高内存占用</strong>：调整缓冲区、减少插件、检查内存泄漏</li>
<li class=""><strong>性能影响</strong>：优化采样率、关闭非必要插件、升级版本</li>
<li class=""><strong>Trace不完整</strong>：验证跨线程上下文传递、检查框架兼容性</li>
</ol>
<p><strong>部署验证</strong>：通过测试流量验证端到端监控链路，确保业务指标、Trace数据、日志关联三要素完整可用。</p>
<h1>五、Python语言对接使用方法</h1>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="sdk安装与环境配置">SDK安装与环境配置<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#sdk%E5%AE%89%E8%A3%85%E4%B8%8E%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE" class="hash-link" aria-label="SDK安装与环境配置的直接链接" title="SDK安装与环境配置的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-安装方式与版本选择">1. 安装方式与版本选择<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#1-%E5%AE%89%E8%A3%85%E6%96%B9%E5%BC%8F%E4%B8%8E%E7%89%88%E6%9C%AC%E9%80%89%E6%8B%A9" class="hash-link" aria-label="1. 安装方式与版本选择的直接链接" title="1. 安装方式与版本选择的直接链接" translate="no">​</a></h3>
<p>SkyWalking Python探针通过<code>apache-skywalking</code>包提供，支持Python 3.6及以上版本。推荐使用虚拟环境隔离依赖：</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># 创建虚拟环境（可选）</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">python -m venv venv</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">source venv/bin/activate  # Linux/macOS</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># venv\Scripts\activate  # Windows</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 安装SkyWalking Python SDK</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">pip install apache-skywalking</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 验证安装</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">python -c "import skywalking; print(skywalking.__version__)"</span><br></span></code></pre></div></div>
<p><strong>版本兼容性矩阵</strong>：</p>
<ul>
<li class="">SkyWalking Python SDK 1.x：支持SkyWalking OAP 8.x-9.x</li>
<li class="">建议使用最新稳定版（当前为1.0.0）</li>
<li class="">与后端OAP版本差异不超过2个大版本</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-基础配置参数">2. 基础配置参数<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#2-%E5%9F%BA%E7%A1%80%E9%85%8D%E7%BD%AE%E5%8F%82%E6%95%B0" class="hash-link" aria-label="2. 基础配置参数的直接链接" title="2. 基础配置参数的直接链接" translate="no">​</a></h3>
<p>Python SDK支持多种配置方式，优先级从高到低：环境变量 &gt; 代码配置 &gt; 配置文件。</p>
<p><strong>核心配置项</strong>：</p>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> skywalking </span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> config</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 基础配置（必须）</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">init</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    agent_collector_backend_services</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">'127.0.0.1:11800'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># OAP gRPC地址</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    agent_name</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">'your-python-service'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">                    </span><span class="token comment" style="color:#999988;font-style:italic"># 服务名称</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    agent_instance_name</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">'instance-01'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">                   </span><span class="token comment" style="color:#999988;font-style:italic"># 实例标识</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    agent_protocol</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">'grpc'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">                               </span><span class="token comment" style="color:#999988;font-style:italic"># 通信协议</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    agent_authentication</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">'your-token'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">                   </span><span class="token comment" style="color:#999988;font-style:italic"># 认证令牌（可选）</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 性能调优参数</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">agent_buffer_size </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1000</span><span class="token plain">          </span><span class="token comment" style="color:#999988;font-style:italic"># 缓冲区大小</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">agent_queue_size </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">5000</span><span class="token plain">           </span><span class="token comment" style="color:#999988;font-style:italic"># 队列容量</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">agent_meter_reporter_period </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">20</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># 指标上报间隔（秒）</span><br></span></code></pre></div></div>
<p><strong>环境变量配置示例</strong>：</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">export SW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">export SW_AGENT_NAME=payment-service</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">export SW_AGENT_INSTANCE_NAME=payment-01</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">export SW_AGENT_PROTOCOL=grpc</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">export SW_AGENT_AUTHENTICATION=your-secret-token</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="flaskdjango框架集成示例">Flask/Django框架集成示例<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#flaskdjango%E6%A1%86%E6%9E%B6%E9%9B%86%E6%88%90%E7%A4%BA%E4%BE%8B" class="hash-link" aria-label="Flask/Django框架集成示例的直接链接" title="Flask/Django框架集成示例的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-flask应用集成">1. Flask应用集成<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#1-flask%E5%BA%94%E7%94%A8%E9%9B%86%E6%88%90" class="hash-link" aria-label="1. Flask应用集成的直接链接" title="1. Flask应用集成的直接链接" translate="no">​</a></h3>
<p>Flask集成通过中间件自动拦截HTTP请求，无需手动埋点：</p>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> flask </span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> Flask</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> jsonify</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> skywalking </span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> agent</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> config</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 初始化配置（必须在应用启动前调用）</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">init</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    agent_collector_backend_services</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">'127.0.0.1:11800'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    agent_name</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">'flask-demo'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    agent_instance_name</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">'flask-instance-01'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 启动Agent</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">agent</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">start</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">app </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> Flask</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">__name__</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 自动追踪所有路由</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token decorator annotation punctuation" style="color:#393A34">@app</span><span class="token decorator annotation punctuation" style="color:#393A34">.</span><span class="token decorator annotation punctuation" style="color:#393A34">route</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'/api/orders/&lt;int:order_id&gt;'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> methods</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">'GET'</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">def</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">get_order</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">order_id</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token triple-quoted-string string" style="color:#e3116c">"""获取订单详情 - 自动生成Span"""</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># 业务逻辑</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    order_data </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> fetch_order_from_db</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">order_id</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> jsonify</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">order_data</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token decorator annotation punctuation" style="color:#393A34">@app</span><span class="token decorator annotation punctuation" style="color:#393A34">.</span><span class="token decorator annotation punctuation" style="color:#393A34">route</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'/api/orders'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> methods</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">'POST'</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">def</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">create_order</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token triple-quoted-string string" style="color:#e3116c">"""创建订单"""</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> skywalking</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">trace</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">context </span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> get_context</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> skywalking</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">trace</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">tags </span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> Tag</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># 手动添加业务标签</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    context </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> get_context</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> context</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">active_span</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        context</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">active_span</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">tag</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">Tag</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'order_type'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'standard'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        context</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">active_span</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">tag</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">Tag</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'customer_id'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> request</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">json</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">get</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'customer_id'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># 业务处理</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    order_id </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> process_order_creation</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">request</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">json</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> jsonify</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">'order_id'</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> order_id</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">201</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> __name__ </span><span class="token operator" style="color:#393A34">==</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'__main__'</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    app</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">run</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">host</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">'0.0.0.0'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> port</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">5000</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> debug</span><span class="token operator" style="color:#393A34">=</span><span class="token boolean" style="color:#36acaa">False</span><span class="token punctuation" style="color:#393A34">)</span><br></span></code></pre></div></div>
<p><strong>Flask特定配置</strong>：</p>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># 启用HTTP参数收集（生产环境谨慎开启）</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">flask_collect_http_params </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">True</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 排除特定路由（如健康检查）</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">flask_ignore_path </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">'/health'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'/metrics'</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 请求体大小限制（避免内存溢出）</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">flask_collect_http_body_length_limit </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1024</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># 字节</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-django应用集成">2. Django应用集成<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#2-django%E5%BA%94%E7%94%A8%E9%9B%86%E6%88%90" class="hash-link" aria-label="2. Django应用集成的直接链接" title="2. Django应用集成的直接链接" translate="no">​</a></h3>
<p>Django通过中间件实现自动追踪：</p>
<p><strong>settings.py配置</strong>：</p>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">INSTALLED_APPS </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># ... 其他应用</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">'skywalking'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">MIDDLEWARE </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">'skywalking.contrib.django.middleware.TracingMiddleware'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># 必须放在最前</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># ... 其他中间件</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># SkyWalking配置</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">SKYWALKING_CONFIG </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">'agent_collector_backend_services'</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'127.0.0.1:11800'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">'agent_name'</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'django-ecommerce'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">'agent_instance_name'</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'django-instance-01'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">'agent_protocol'</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'grpc'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">'django_collect_http_params'</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">False</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># 生产环境建议关闭</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">'django_ignore_path'</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">'/admin/'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'/static/'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'/media/'</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<p><strong>视图函数示例</strong>：</p>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> django</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">http </span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> JsonResponse</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> skywalking</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">trace</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">context </span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> get_context</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> skywalking</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">trace</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">tags </span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> Tag</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">def</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">product_detail</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">request</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> product_id</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token triple-quoted-string string" style="color:#e3116c">"""商品详情页 - 自动追踪"""</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    context </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> get_context</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># 手动添加业务维度</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> context</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">active_span</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        span </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> context</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">active_span</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        span</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">tag</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">Tag</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'product_id'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> product_id</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        span</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">tag</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">Tag</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'user_agent'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> request</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">META</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">get</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'HTTP_USER_AGENT'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">''</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># 业务逻辑</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    product </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> Product</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">objects</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">get</span><span class="token punctuation" style="color:#393A34">(</span><span class="token builtin">id</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">product_id</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> JsonResponse</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">'id'</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> product</span><span class="token punctuation" style="color:#393A34">.</span><span class="token builtin">id</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">'name'</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> product</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">name</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">'price'</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> product</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">price</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 异步视图支持（Django 3.1+）</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">async</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">def</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">async_product_list</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">request</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token triple-quoted-string string" style="color:#e3116c">"""异步商品列表"""</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> skywalking</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">contrib</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">async_trace </span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> async_trace</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token decorator annotation punctuation" style="color:#393A34">@async_trace</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">operation_name</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">'async_product_query'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">async</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">def</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">fetch_products</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">await</span><span class="token plain"> Product</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">objects</span><span class="token punctuation" style="color:#393A34">.</span><span class="token builtin">all</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">alist</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    products </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">await</span><span class="token plain"> fetch_products</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> JsonResponse</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">'products'</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> products</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="配置项详解">配置项详解<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#%E9%85%8D%E7%BD%AE%E9%A1%B9%E8%AF%A6%E8%A7%A3" class="hash-link" aria-label="配置项详解的直接链接" title="配置项详解的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-探针核心配置">1. 探针核心配置<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#1-%E6%8E%A2%E9%92%88%E6%A0%B8%E5%BF%83%E9%85%8D%E7%BD%AE" class="hash-link" aria-label="1. 探针核心配置的直接链接" title="1. 探针核心配置的直接链接" translate="no">​</a></h3>
<p><strong>网络与连接配置</strong>：</p>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">init</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># 连接设置</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    agent_collector_backend_services</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">'127.0.0.1:11800,192.168.1.100:11800'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># 多OAP负载均衡</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    agent_protocol</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">'grpc'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># grpc或http</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    agent_grpc_tls_enable</span><span class="token operator" style="color:#393A34">=</span><span class="token boolean" style="color:#36acaa">False</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># TLS加密</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    agent_grpc_tls_cert_path</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">'/path/to/cert.pem'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># 超时与重试</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    agent_collector_grpc_upstream_timeout</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">30</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># 秒</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    agent_collector_grpc_max_retry</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">3</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    agent_collector_grpc_retry_interval</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># 秒</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><br></span></code></pre></div></div>
<p><strong>采样与性能配置</strong>：</p>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># 采样策略</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">agent_sample_rate </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0.1</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># 10%采样率（0.0-1.0）</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">agent_force_sample_error </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">True</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># 错误请求强制采样</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 缓冲区管理</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">agent_buffer_size </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1000</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># 单次批量上报最大Span数</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">agent_queue_size </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">5000</span><span class="token plain">   </span><span class="token comment" style="color:#999988;font-style:italic"># 内存队列容量</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">agent_meter_reporter_period </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">20</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># 指标上报周期（秒）</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 资源限制</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">agent_max_buffer_size </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">10000</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># 最大缓冲区</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">agent_disable_oom_protection </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">False</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># OOM保护</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-框架特定配置">2. 框架特定配置<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#2-%E6%A1%86%E6%9E%B6%E7%89%B9%E5%AE%9A%E9%85%8D%E7%BD%AE" class="hash-link" aria-label="2. 框架特定配置的直接链接" title="2. 框架特定配置的直接链接" translate="no">​</a></h3>
<p><strong>HTTP框架通用配置</strong>：</p>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># 请求/响应追踪</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">collect_http_params </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">False</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># 是否收集HTTP参数</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">http_params_length_threshold </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1024</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># 参数长度限制</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">trace_ignore_path </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">'/health'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'/metrics'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'/docs'</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># 忽略路径</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 数据库操作追踪</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">sql_parameters_max_length </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">512</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># SQL参数截断长度</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">trace_sql_parameters </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">False</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># 是否记录SQL参数（安全考虑）</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 外部调用追踪</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">redis_parameters_max_length </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">256</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># Redis参数限制</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">mq_parameters_max_length </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">512</span><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># 消息队列参数限制</span><br></span></code></pre></div></div>
<p><strong>插件管理配置</strong>：</p>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># 启用/禁用特定插件</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">plugin_enable </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">'flask'</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">True</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">'django'</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">True</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">'requests'</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">True</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">      </span><span class="token comment" style="color:#999988;font-style:italic"># HTTP客户端追踪</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">'urllib3'</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">True</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">       </span><span class="token comment" style="color:#999988;font-style:italic"># 低级HTTP库追踪</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">'mysql'</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">True</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">         </span><span class="token comment" style="color:#999988;font-style:italic"># MySQL数据库</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">'redis'</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">True</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">         </span><span class="token comment" style="color:#999988;font-style:italic"># Redis缓存</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">'pymongo'</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">True</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">       </span><span class="token comment" style="color:#999988;font-style:italic"># MongoDB</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">'kafka'</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">True</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">         </span><span class="token comment" style="color:#999988;font-style:italic"># Kafka消息</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">'grpc'</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">True</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">          </span><span class="token comment" style="color:#999988;font-style:italic"># gRPC调用</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 自定义插件路径</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">plugin_mount_dir </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'/path/to/custom/plugins'</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-日志与诊断配置">3. 日志与诊断配置<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#3-%E6%97%A5%E5%BF%97%E4%B8%8E%E8%AF%8A%E6%96%AD%E9%85%8D%E7%BD%AE" class="hash-link" aria-label="3. 日志与诊断配置的直接链接" title="3. 日志与诊断配置的直接链接" translate="no">​</a></h3>
<p><strong>日志集成</strong>：</p>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># 自动注入Trace ID到日志</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">log_reporter_active </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">True</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">log_reporter_level </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'WARNING'</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># 日志级别阈值</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">log_reporter_formatted </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">True</span><span class="token plain">   </span><span class="token comment" style="color:#999988;font-style:italic"># 格式化输出</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 日志采样（避免日志爆炸）</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">log_reporter_sample_rate </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0.01</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># 1%日志采样</span><br></span></code></pre></div></div>
<p><strong>诊断与监控</strong>：</p>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># 健康检查端点</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">agent_health_check </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">True</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">agent_health_check_port </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">8081</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># 健康检查端口</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># JMX监控</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">agent_jmx_active </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">True</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">agent_jmx_port </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">9090</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 调试模式（仅开发环境）</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">agent_debug </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">False</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">agent_logging_level </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'INFO'</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># DEBUG, INFO, WARNING, ERROR</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="4-高级特性配置">4. 高级特性配置<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#4-%E9%AB%98%E7%BA%A7%E7%89%B9%E6%80%A7%EF%BF%BD%E9%85%8D%E7%BD%AE" class="hash-link" aria-label="4. 高级特性配置的直接链接" title="4. 高级特性配置的直接链接" translate="no">​</a></h3>
<p><strong>跨进程传播</strong>：</p>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># HTTP头传播配置</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">propagation_header_name </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'sw8'</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># SkyWalking标准头</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">propagation_header_encode </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'base64'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 自定义传播器</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">propagation_cross_process_propagators </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">'sw8'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">'b3'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># Zipkin兼容</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">'traceparent'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># W3C Trace Context</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 消息队列传播</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">kafka_bootstrap_servers </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'localhost:9092'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">kafka_propagation_topic </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'skywalking-trace'</span><br></span></code></pre></div></div>
<p><strong>安全与隐私</strong>：</p>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># 数据脱敏</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">mask_sql_parameters </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">True</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># SQL参数脱敏</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">mask_http_params </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">'password'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'token'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'secret'</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># HTTP参数黑名单</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 访问控制</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">agent_authentication </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'your-service-token'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">agent_authorization </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'Bearer xxxxx'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 网络隔离</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">agent_network_isolation </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">True</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">agent_allowed_backend_services </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">'192.168.1.0/24'</span><span class="token punctuation" style="color:#393A34">]</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="5-环境变量覆盖表">5. 环境变量覆盖表<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#5-%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E8%A6%86%E7%9B%96%E8%A1%A8" class="hash-link" aria-label="5. 环境变量覆盖表的直接链接" title="5. 环境变量覆盖表的直接链接" translate="no">​</a></h3>
<table><thead><tr><th><strong>环境变量</strong></th><th><strong>对应配置项</strong></th><th><strong>默认值</strong></th><th><strong>说明</strong></th></tr></thead><tbody><tr><td>SW_AGENT_NAME</td><td>agent_name</td><td>-</td><td>服务名称（必填）</td></tr><tr><td>SW_AGENT_INSTANCE_NAME</td><td>agent_instance_name</td><td>随机生成</td><td>实例标识</td></tr><tr><td>SW_AGENT_COLLECTOR_BACKEND_SERVICES</td><td>agent_collector_backend_services</td><td>-</td><td>OAP地址（必填）</td></tr><tr><td>SW_AGENT_PROTOCOL</td><td>agent_protocol</td><td>grpc</td><td>通信协议</td></tr><tr><td>SW_AGENT_AUTHENTICATION</td><td>agent_authentication</td><td>-</td><td>认证令牌</td></tr><tr><td>SW_AGENT_SAMPLE_RATE</td><td>agent_sample_rate</td><td>1.0</td><td>采样率</td></tr><tr><td>SW_AGENT_BUFFER_SIZE</td><td>agent_buffer_size</td><td>1000</td><td>缓冲区大小</td></tr><tr><td>SW_AGENT_QUEUE_SIZE</td><td>agent_queue_size</td><td>5000</td><td>队列容量</td></tr><tr><td>SW_AGENT_LOGGING_LEVEL</td><td>agent_logging_level</td><td>INFO</td><td>日志级别</td></tr><tr><td>SW_AGENT_DEBUG</td><td>agent_debug</td><td>False</td><td>调试模式</td></tr></tbody></table>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="6-配置验证与诊断">6. 配置验证与诊断<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#6-%E9%85%8D%E7%BD%AE%E9%AA%8C%E8%AF%81%E4%B8%8E%E8%AF%8A%E6%96%AD" class="hash-link" aria-label="6. 配置验证与诊断的直接链接" title="6. 配置验证与诊断的直接链接" translate="no">​</a></h3>
<p><strong>配置验证脚本</strong>：</p>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> skywalking </span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> config</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">def</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">validate_config</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token triple-quoted-string string" style="color:#e3116c">"""验证配置完整性"""</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    required_configs </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">'agent_collector_backend_services'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">'agent_name'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    missing </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">for</span><span class="token plain"> key </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> required_configs</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">not</span><span class="token plain"> </span><span class="token builtin">getattr</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">config</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> key</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">None</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            missing</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">append</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">key</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> missing</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">raise</span><span class="token plain"> ValueError</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string-interpolation string" style="color:#e3116c">f"缺少必要配置: </span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">missing</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># 检查网络连通性</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> socket</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">for</span><span class="token plain"> backend </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> config</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">agent_collector_backend_services</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">split</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">','</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        host</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> port </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> backend</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">split</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">':'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">try</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            sock </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> socket</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">create_connection</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">host</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token builtin">int</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">port</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> timeout</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">5</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            sock</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">close</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string-interpolation string" style="color:#e3116c">f"✓ 可连接到 </span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">backend</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">except</span><span class="token plain"> Exception </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> e</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string-interpolation string" style="color:#e3116c">f"✗ 无法连接到 </span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">backend</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">: </span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">e</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">"</span><span class="token punctuation" style="color:#393A34">)</span><br></span></code></pre></div></div>
<p><strong>运行时诊断</strong>：</p>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># 获取Agent状态</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> skywalking</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">agent </span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> agent</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string-interpolation string" style="color:#e3116c">f"Agent状态: </span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation string" style="color:#e3116c">'运行中'</span><span class="token string-interpolation interpolation"> </span><span class="token string-interpolation interpolation keyword" style="color:#00009f">if</span><span class="token string-interpolation interpolation"> agent</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">.</span><span class="token string-interpolation interpolation">running </span><span class="token string-interpolation interpolation keyword" style="color:#00009f">else</span><span class="token string-interpolation interpolation"> </span><span class="token string-interpolation interpolation string" style="color:#e3116c">'已停止'</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string-interpolation string" style="color:#e3116c">f"已发送Span数: </span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">agent</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">.</span><span class="token string-interpolation interpolation">metrics</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">.</span><span class="token string-interpolation interpolation">spans_sent</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string-interpolation string" style="color:#e3116c">f"队列使用率: </span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">agent</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">.</span><span class="token string-interpolation interpolation">metrics</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">.</span><span class="token string-interpolation interpolation">queue_usage_percent</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">%"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 手动触发指标上报</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">agent</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">report_metrics</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 强制刷新缓冲区</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">agent</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">flush</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><br></span></code></pre></div></div>
<p><strong>最佳实践建议</strong>：</p>
<ol>
<li class=""><strong>生产环境配置</strong>：通过环境变量管理敏感信息，避免硬编码</li>
<li class=""><strong>采样策略</strong>：关键业务接口设置较高采样率（0.3-0.5），非关键接口降低采样率（0.05-0.1）</li>
<li class=""><strong>缓冲区调优</strong>：根据QPS调整缓冲区大小，高流量服务适当增大<code>agent_buffer_size</code></li>
<li class=""><strong>安全考虑</strong>：生产环境关闭<code>collect_http_params</code>和<code>trace_sql_parameters</code>，避免敏感信息泄露</li>
<li class=""><strong>监控告警</strong>：设置队列使用率、发送失败率等监控指标，及时发现Agent异常</li>
</ol>
<p>通过合理配置，Python SDK可在不影响应用性能的前提下，提供完整的可观测性数据。建议在预发布环境充分测试配置效果，确保生产环境稳定运行。</p>
<h1>六、Go语言对接使用方法</h1>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="两种集成方式对比">两种集成方式对比<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#%E4%B8%A4%E7%A7%8D%E9%9B%86%E6%88%90%E6%96%B9%E5%BC%8F%E5%AF%B9%E6%AF%94" class="hash-link" aria-label="两种集成方式对比的直接链接" title="两种集成方式对比的直接链接" translate="no">​</a></h2>
<table><thead><tr><th><strong>维度</strong></th><th><strong>Agent注入方式</strong></th><th><strong>代码依赖方式</strong></th></tr></thead><tbody><tr><td><strong>原理</strong></td><td>二进制注入，修改Go编译输出</td><td>导入SDK包，代码级集成</td></tr><tr><td><strong>侵入性</strong></td><td>无代码侵入</td><td>需修改import语句</td></tr><tr><td><strong>部署复杂度</strong></td><td>高（需构建环境）</td><td>低（标准go get）</td></tr><tr><td><strong>灵活性</strong></td><td>低（配置驱动）</td><td>高（API可编程）</td></tr><tr><td><strong>适用场景</strong></td><td>存量项目快速接入</td><td>新建项目深度集成</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="注入方式详细步骤">注入方式详细步骤<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#%E6%B3%A8%E5%85%A5%E6%96%B9%E5%BC%8F%E8%AF%A6%E7%BB%86%E6%AD%A5%E9%AA%A4" class="hash-link" aria-label="注入方式详细步骤的直接链接" title="注入方式详细步骤的直接链接" translate="no">​</a></h2>
<ol>
<li class=""><strong>下载Agent工具</strong>：从SkyWalking官网获取对应平台的二进制文件</li>
<li class=""><strong>注入命令</strong>：<code>/path/to/agent -inject /path/to/your/project [-all]</code></li>
<li class=""><strong>配置管理</strong>：通过<code>config.yaml</code>文件设置服务名、OAP地址</li>
<li class=""><strong>构建部署</strong>：正常执行<code>go build</code>，Agent自动修改二进制</li>
</ol>
<p><strong>关键限制</strong>：</p>
<ul>
<li class="">仅支持标准Go工具链</li>
<li class="">需在构建阶段执行</li>
<li class="">不支持动态配置更新</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="代码依赖配置方法">代码依赖配置方法<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#%E4%BB%A3%E7%A0%81%E4%BE%9D%E8%B5%96%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95" class="hash-link" aria-label="代码依赖配置方法的直接链接" title="代码依赖配置方法的直接链接" translate="no">​</a></h2>
<p><strong>基础集成</strong>：</p>
<div class="language-go codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-go codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">_</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"github.com/apache/skywalking-go"</span><br></span></code></pre></div></div>
<p><strong>配置示例</strong>（<code>config.yaml</code>）：</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">agent</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">service_name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"order-service"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">reporter</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">grpc</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">backend_service</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"127.0.0.1:11800"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">authentication</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"your-token"</span><br></span></code></pre></div></div>
<p><strong>框架支持</strong>：</p>
<ul>
<li class="">Web框架：Gin, Echo, Beego, Iris</li>
<li class="">RPC：gRPC, Dubbo-go</li>
<li class="">数据库：GORM, SQLx, MongoDB驱动</li>
<li class="">消息队列：Sarama(Kafka), NSQ</li>
</ul>
<p><strong>手动埋点示例</strong>：</p>
<div class="language-go codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-go codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"github.com/apache/skywalking-go/trace"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">func</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">ProcessOrder</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">ctx context</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">Context</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    span</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> ctx </span><span class="token operator" style="color:#393A34">:=</span><span class="token plain"> trace</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">CreateEntrySpan</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">ctx</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"order.process"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">defer</span><span class="token plain"> span</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">End</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    span</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Tag</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">trace</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">StringTag</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"order_type"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"standard"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">// 业务逻辑</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<p><strong>选择建议</strong>：新项目用代码依赖，存量系统用Agent注入。</p>
<h1>七、监控与调优建议</h1>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="基础配置建议">基础配置建议<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#%E5%9F%BA%E7%A1%80%E9%85%8D%E7%BD%AE%E5%BB%BA%E8%AE%AE" class="hash-link" aria-label="基础配置建议的直接链接" title="基础配置建议的直接链接" translate="no">​</a></h2>
<ul>
<li class="">采样率：生产环境0.1-0.3，关键业务0.5</li>
<li class="">缓冲区：根据QPS调整，默认1000-5000</li>
<li class="">存储：生产用Elasticsearch，测试可用H2/MySQL</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="常见问题排查">常见问题排查<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98%E6%8E%92%E6%9F%A5" class="hash-link" aria-label="常见问题排查的直接链接" title="常见问题排查的直接链接" translate="no">​</a></h2>
<ol>
<li class=""><strong>数据不上报</strong>：检查网络、OAP状态、Agent配置</li>
<li class=""><strong>高内存</strong>：调小缓冲区，减少插件，检查版本</li>
<li class=""><strong>Trace不全</strong>：验证跨线程传播，检查框架兼容性</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="性能优化技巧">性能优化技巧<a href="http://www.otqsoft.com/doc/blog/long-blog-skywalking#%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96%E6%8A%80%E5%B7%A7" class="hash-link" aria-label="性能优化技巧的直接��链接" title="性能优化技巧的直接链接" translate="no">​</a></h2>
<ul>
<li class=""><strong>网络</strong>：启用gRPC压缩，配置多OAP负载均衡</li>
<li class=""><strong>存储</strong>：ES分片优化，索引生命周期管理</li>
<li class=""><strong>Agent</strong>：关闭非必要插件，调整上报频率</li>
<li class=""><strong>业务</strong>：关键路径全采样，错误请求强制采样</li>
</ul>]]></content>
        <author>
            <name>otqsoft</name>
            <uri>https://gitee.com/work25</uri>
        </author>
        <category label="微服务" term="微服务"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[WorkBuddy vs MimoCode]]></title>
        <id>http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-mimo</id>
        <link href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-mimo"/>
        <updated>2026-07-07T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[<ImagePreview]]></summary>
        <content type="html"><![CDATA[<img src="http://www.otqsoft.com/doc/assets/images/1-9a12f349b78a72627b3f901e9b384e62.webp" class="previewImage_kI9J">
<p>设计了一个基于真实场景的「阅读理解与Demo构建」测试，在相同的条件下，对两款热门工具——WorkBuddy和Mimo Code——进行了一次深度对比。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="一测试方法公平可复现的基准"><strong>一、测试方法：公平、可复现的基准</strong><a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-mimo#%E4%B8%80%E6%B5%8B%E8%AF%95%E6%96%B9%E6%B3%95%E5%85%AC%E5%B9%B3%E5%8F%AF%E5%A4%8D%E7%8E%B0%E7%9A%84%E5%9F%BA%E5%87%86" class="hash-link" aria-label="一测试方法公平可复现的基准的直接链接" title="一测试方法公平可复现的基准的直接链接" translate="no">​</a></h3>
<ul>
<li class=""><strong>模型</strong>：统一使用 <code>mimo-v2.5-pro</code> 模型。</li>
<li class=""><strong>任务</strong>：要求AI理解一个特定的开源项目，并基于此构建一个技术栈为 <strong>VUE + TS + VITE</strong> 的演示程序。</li>
<li class=""><strong>提示词</strong>：</li>
</ul>
<blockquote>
<p>阅读理解 <code>https://github.com/xushanpei/open-file-viewer</code> 这个项目，使用VUE+TS+VITE写一个能预览该项目支持的所有格式的demo。</p>
</blockquote>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="二核心维度对比分析"><strong>二、核心维度对比分析</strong><a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-mimo#%E4%BA%8C%E6%A0%B8%E5%BF%83%E7%BB%B4%E5%BA%A6%E5%AF%B9%E6%AF%94%E5%88%86%E6%9E%90" class="hash-link" aria-label="二核心维度对比分析的直接链接" title="二核心维度对比分析的直接链接" translate="no">​</a></h3>
<p>我们聚焦于三个关键维度：<strong>生成效率、项目结构、成果可用性</strong>。</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-速度时间就是生产力"><strong>1. 速度：时间就是生产力</strong><a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-mimo#1-%E9%80%9F%E5%BA%A6%E6%97%B6%E9%97%B4%E5%B0%B1%E6%98%AF%E7%94%9F%E4%BA%A7%E5%8A%9B" class="hash-link" aria-label="1-速度时间就是生产力的直接链接" title="1-速度时间就是生产力的��直接链接" translate="no">​</a></h4>
<ul>
<li class=""><strong>Mimo Code</strong>：在本次测试中，全程耗时 <strong>4分44秒</strong>。其执行过程高度自动化，时间记录清晰。</li>
<li class=""><strong>WorkBuddy</strong>：完成任务大约需要 <strong>6分钟</strong>（因其未提供自动计时，此为手动记录估算值）。从数据上看，Mimo Code在纯生成效率上略胜一筹。</li>
</ul>
<img src="http://www.otqsoft.com/doc/assets/images/2-dc36e4907b73c0e9c1ea43b035a2ffdc.webp" class="previewImage_kI9J">
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-项目结构骨架的合理性"><strong>2. 项目结构：骨架的合理性</strong><a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-mimo#2-%E9%A1%B9%E7%9B%AE%E7%BB%93%E6%9E%84%E9%AA%A8%E6%9E%B6%E7%9A%84%E5%90%88%E7%90%86%E6%80%A7" class="hash-link" aria-label="2-项目结构骨架的合理性的直接链接" title="2-项目结构骨架的合理性的直接链接" translate="no">​</a></h4>
<p>优秀的项目结构是后续可维护性的基础。我们对比了两者生成的目录骨架：</p>
<p><strong>Mimo Code</strong> 生成的结构相对精简、直接，核心逻辑集中在一个组件中：</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">file-viewer-demo/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── public/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   └── vite.svg</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── src/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   ├── components/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   └── FileViewerDemo.vue  # 主演示组件</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   ├── App.vue                 # 根组件</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   ├── main.ts                 # 入口</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   └── vite-env.d.ts           # 类型声明</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── index.html</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── package.json</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── tsconfig.json</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── vite.config.ts</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">└── README.md</span><br></span></code></pre></div></div>
<p><strong>WorkBuddy</strong> 的结构则更显“完整”和“工程化”，它生成了更细致的分类，包括独立的静态资源目录和数据文件：</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">file-viewer-demo/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── public/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   ├── favicon.svg </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   └── icons.svg</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── src/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   ├── assets/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   ├── vite.svg</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   └── hero.png</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   ├── data/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   └── formats.ts</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   ├── App.vue                 # 根组件</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   └── main.ts                 # 入口</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── index.html</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── package.json</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── tsconfig.json</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── vite.config.ts</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">└── README.md</span><br></span></code></pre></div></div>
<p><strong>分析</strong>：Mimo Code的骨架“够用”，体现了快速搭建的思维；WorkBuddy的结构则更接近于一个准备投入开发的完整项目模板，包含了更多初始化的细节（如多种图标、数据隔离层）。</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-产出质量从文档到界面"><strong>3. 产出质量：从文档到界面</strong><a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-mimo#3-%E4%BA%A7%E5%87%BA%E8%B4%A8%E9%87%8F%E4%BB%8E%E6%96%87%E6%A1%A3%E5%88%B0%E7%95%8C%E9%9D%A2" class="hash-link" aria-label="3-产出质量从文档到界面的直接链接" title="3-产出质量从文档到界面的直接链接" translate="no">​</a></h4>
<p><strong>README.md 对比</strong></p>
<p>两者均生成了项目说明文档，但侧重点存在明显差异，这直接影响了开发者上手体验：</p>
<ul>
<li class=""><strong>Mimo Code</strong> 生成的README更侧重于项目的<strong>快速启动</strong>与<strong>核心功能说明</strong>。结构清晰简洁，旨在让开发者能以最短路径跑通项目、预览核心效果，内容更为详尽。它倾向于提供一份接近真实项目标准的初始化模板，包含了环境配置、图标资源说明、数据隔离层介绍等细节。</li>
<li class=""><strong>WorkBuddy</strong> 生成的README则就简单描述了使用的技术栈。</li>
</ul>
<p><strong>Mimo Code生成的README.md截图：</strong></p>
<img src="http://www.otqsoft.com/doc/assets/images/3-921c96ed946fe8a798e8043474f94490.webp" class="previewImage_kI9J">
<p><strong>WorkBuddy生成的README.md截图：</strong></p>
<img src="http://www.otqsoft.com/doc/assets/images/4-d5ed4321dcf683e78f109dd3d5f2f1a5.webp" class="previewImage_kI9J">
<p><strong>最终实现效果</strong></p>
<p>运行生成的项目，两者均实现了核心的预览功能。一个显著的区别在于：</p>
<ul>
<li class=""><strong>WorkBuddy 在预览功能的输入源上实现了更全面的支持</strong>。它不仅支持本地文件选择，<strong>还额外提供了从URL地址加载文件进行预览的选项</strong>，这更贴近实际Web应用的需求场景。</li>
</ul>
<p><strong>Mimo code</strong></p>
<img src="http://www.otqsoft.com/doc/assets/images/5-a232006cdb9120560b0c5fe4cca1517f.webp" class="previewImage_kI9J">
<p><strong>WorkBuddy</strong></p>
<img src="http://www.otqsoft.com/doc/assets/images/6-883519b24bd9c964115f58b19d26e880.webp" class="previewImage_kI9J">
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="三结论与选择建议"><strong>三、结论与选择建议</strong><a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-mimo#%E4%B8%89%E7%BB%93%E8%AE%BA%E4%B8%8E%E9%80%89%E6%8B%A9%E5%BB%BA%E8%AE%AE" class="hash-link" aria-label="三结论与选择建议的直接链接" title="三结论与选择建议的直接链接" translate="no">​</a></h3>
<p>基于本次单点测试，我们可以得出一些初步的观察：</p>
<table><thead><tr><th><strong>对比维度</strong></th><th><strong>Mimo Code</strong></th><th><strong>WorkBuddy</strong></th><th><strong>分析</strong></th></tr></thead><tbody><tr><td><strong>生成速度</strong></td><td>⚡ <strong>更快 (4‘44“)</strong></td><td>稍慢 (~6’)</td><td>纯执行效率领先</td></tr><tr><td><strong>项目结构</strong></td><td>精简、直接</td><td><strong>完整、工程化</strong></td><td>WorkBuddy更像“开箱即用”的模板</td></tr><tr><td><strong>功能实现</strong></td><td>满足核心需求</td><td><strong>考虑更全面（支持URL）</strong></td><td>在理解用户潜在需求上更深入一步</td></tr><tr><td><strong>文档质量</strong></td><td>聚焦快速启动</td><td><strong>步骤详细，解释更充分</strong></td><td>对新手或团队交接更友好</td></tr></tbody></table>
<p><strong>选择建议</strong>：</p>
<ul>
<li class="">如果你的核心诉求是 <strong>极速原型验证</strong>，追求在最短时间内看到可运行的代码结果，那么<strong>Mimo Code</strong>的高效是明显优势。</li>
<li class="">如果你更看重生成结果的 <strong>工程完整性、可维护性和功能周全性</strong>，愿意用稍长的时间换取一个更“省心”、更接近生产标准的起点，那么<strong>WorkBuddy</strong>的表现值得考虑。</li>
</ul>
<p>本次测试仅为一次特定场景下的切片观察。工具的选择最终取决于你的工作流偏好、项目阶段和对“完成度”的期望值。建议开发者基于自身高频任务场景，进行类似的基准测试，从而找到最契合自己的生产力伙伴。</p>
<p><strong>WorkBuddy</strong>生态成熟，内置了多个专家专家团、技能和选择器。功能更强大，应用场景更丰富</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="四优化">四<strong>、优化</strong><a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-mimo#%E5%9B%9B%E4%BC%98%E5%8C%96" class="hash-link" aria-label="四优化的直接链接" title="四优化的直接链接" translate="no">​</a></h3>
<p>将以上<strong>Mimo Code</strong>生成的项目，使用<strong>WorkBuddy</strong>召唤一个UI专家对项目进行一下优化，最终效果如：</p>
<img src="http://www.otqsoft.com/doc/assets/images/7-c3aefbe9161fe222485dfccadee5b826.webp" class="previewImage_kI9J">
<p>预览地址：<a href="http://otqsoft.com/file-viewer/" target="_blank" rel="noopener noreferrer" class="">http://otqsoft.com/file-viewer/</a>​</p>]]></content>
        <author>
            <name>otqsoft</name>
            <uri>https://gitee.com/work25</uri>
        </author>
        <category label="微服务" term="微服务"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[WiFi-DensePose 使用指南]]></title>
        <id>http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose</id>
        <link href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose"/>
        <updated>2026-06-25T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[基于 WiFi 信号的隐私安全人体感知系统]]></summary>
        <content type="html"><![CDATA[<blockquote>
<p><strong>基于 WiFi 信号的隐私安全人体感知系统</strong></p>
<p>无需摄像头、无需穿戴设备、无需互联网——仅靠 WiFi 信号实现穿墙人体检测、姿态估计、呼吸/心率监测。</p>
</blockquote>
<img src="http://www.otqsoft.com/doc/assets/images/1-9028d8ce554e428ba6ffed4dcf757dec.webp" class="previewImage_kI9J">
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="一项目简介">一、项目简介<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E4%B8%80%E9%A1%B9%E7%9B%AE%E7%AE%80%E4%BB%8B" class="hash-link" aria-label="一、项目简介的直接链接" title="一、项目简介的直接链接" translate="no">​</a></h2>
<p>WiFi-DensePose（项目代号 π RuView）是一个<strong>边缘 AI 感知系统</strong>，利用 WiFi 信号实现人体感知。其核心原理是：WiFi 路由器发出的无线电波在遇到人体时会产生散射，通过分析信道状态信息（CSI）的变化，系统可以重建人体姿态、检测生命体征。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="技术背景">技术背景<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E6%8A%80%E6%9C%AF%E8%83%8C%E6%99%AF" class="hash-link" aria-label="技术背景的直接链接" title="技术背景的直接链接" translate="no">​</a></h3>
<p>该系统基于卡内基梅隆大学的 <em>DensePose From WiFi</em> 研究成果，将学术概念扩展为可实际部署的边缘系统。核心技术栈包括：</p>
<ul>
<li class=""><strong>RuVector</strong>：AI 信号处理引擎，包含注意力机制、图算法、稀疏求解器等</li>
<li class=""><strong>RuvSense</strong>：多站感知融合框架，支持 360 度全覆盖</li>
<li class=""><strong>SONA</strong>：自优化神经架构，支持设备端持续学习</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="与传统方案对比">与传统方案对比<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E4%B8%8E%E4%BC%A0%E7%BB%9F%E6%96%B9%E6%A1%88%E5%AF%B9%E6%AF%94" class="hash-link" aria-label="与传统方案对比的直接链接" title="与传统方案对比的直接链接" translate="no">​</a></h3>
<table><thead><tr><th><strong>特性</strong></th><th><strong>WiFi-DensePose</strong></th><th><strong>摄像头方案</strong></th><th><strong>穿戴设备方案</strong></th></tr></thead><tbody><tr><td>隐私保护</td><td>✅ 无图像，无视频</td><td>❌ 需要隐私协议</td><td>⚠️ 依赖佩戴</td></tr><tr><td>穿墙能力</td><td>✅ 可穿透墙壁</td><td>❌ 需要视线</td><td>❌ 仅接触式</td></tr><tr><td>黑暗环境</td><td>✅ 不受影响</td><td>⚠️ 需要红外</td><td>✅ 不受影响</td></tr><tr><td>部署成本</td><td>~¥50/区域</td><td>¥1500+/区域</td><td>¥200+/人</td></tr><tr><td>隐私法规</td><td>✅ 不受 GDPR 视频条款约束</td><td>❌ 需要合规处理</td><td>⚠️ 需要同意</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="二核心功能">二、核心功能<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E4%BA%8C%E6%A0%B8%E5%BF%83%E5%8A%9F%E8%83%BD" class="hash-link" aria-label="二、核心功能的直接链接" title="二、核心功能的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="21-感知能力">2.1 感知能力<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#21-%E6%84%9F%E7%9F%A5%E8%83%BD%E5%8A%9B" class="hash-link" aria-label="2.1 感知能力的直接链接" title="2.1 感知能力的直接链接" translate="no">​</a></h3>
<table><thead><tr><th><strong>功能</strong></th><th><strong>说明</strong></th><th><strong>性能</strong></th></tr></thead><tbody><tr><td><strong>姿态估计</strong></td><td>17 个 COCO 关键点的 3D 人体姿态</td><td>54,000 fps（Rust）</td></tr><tr><td><strong>呼吸检测</strong></td><td>非接触式呼吸频率监测</td><td>6-30 BPM</td></tr><tr><td><strong>心率检测</strong></td><td>非接触式心率监测</td><td>40-120 BPM</td></tr><tr><td><strong>存在感知</strong></td><td>房间级人体存在检测</td><td>&lt; 1ms 延迟</td></tr><tr><td><strong>穿墙感知</strong></td><td>穿透墙壁、家具、废墟</td><td>最深 5 米</td></tr><tr><td><strong>多人追踪</strong></td><td>同时追踪多人，独立姿态和体征</td><td>每 AP 约 3-5 人</td></tr><tr><td><strong>跌倒检测</strong></td><td>自动检测跌倒事件</td><td>可配置灵敏度</td></tr></tbody></table>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="22-智能特性">2.2 智能特性<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#22-%E6%99%BA%E8%83%BD%E7%89%B9%E6%80%A7" class="hash-link" aria-label="2.2 智能特性的直接链接" title="2.2 智能特性的直接链接" translate="no">​</a></h3>
<table><thead><tr><th><strong>特性</strong></th><th><strong>说明</strong></th></tr></thead><tbody><tr><td><strong>自学习</strong></td><td>从原始 WiFi 数据自主学习，无需标注训练集</td></tr><tr><td><strong>跨环境泛化</strong></td><td>训练一次，部署到任何房间，无需重训练</td></tr><tr><td><strong>跨视角融合</strong></td><td>多传感器融合，消除盲点和深度模糊</td></tr><tr><td><strong>自适应分类器</strong></td><td>自动学习房间独特的信号特征</td></tr></tbody></table>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="23-边缘智能模块">2.3 边缘智能模块<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#23-%E8%BE%B9%E7%BC%98%E6%99%BA%E8%83%BD%E6%A8%A1%E5%9D%97" class="hash-link" aria-label="2.3 边缘智能模块的直接链接" title="2.3 边缘智能模块的直接链接" translate="no">​</a></h3>
<p>系统提供 65 个可热加载的 WASM 模块，直接运行在 ESP32 传感器上：</p>
<table><thead><tr><th><strong>类别</strong></th><th><strong>模块示例</strong></th></tr></thead><tbody><tr><td>医疗健康</td><td>睡眠呼吸暂停、心律失常、步态分析、癫痫检测</td></tr><tr><td>安全防护</td><td>入侵检测、周界突破、徘徊检测、恐慌运动</td></tr><tr><td>智能建筑</td><td>暖通控制、照明分区、电梯计数、会议室管理</td></tr><tr><td>零售分析</td><td>队列长度、停留热力图、客流统计、翻台率</td></tr><tr><td>工业安全</td><td>叉车接近、密闭空间监测、结构振动</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="三系统架构">三、系统架构<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E4%B8%89%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84" class="hash-link" aria-label="三、系统架构的直接链接" title="三、系统架构的直接链接" translate="no">​</a></h2>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">WiFi 路由器 → 电波穿过房间 → 碰到人体 → 散射</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    ↓</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">ESP32 网格（3-6 节点）采集 CSI 信号</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    ↓</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">信号处理：Hampel 滤波 → SpotFi 相位校正 → 菲涅尔区建模</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    ↓</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">AI 骨干（RuVector）：注意力网络 → 图算法 → 压缩表示</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    ↓</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">神经网络 → 17 个身体关键点 + 生命体征</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    ↓</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">输出：REST API / WebSocket / Web UI</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="组件说明">组件说明<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E7%BB%84%E4%BB%B6%E8%AF%B4%E6%98%8E" class="hash-link" aria-label="组件说明的直接链接" title="组件说明的直接链接" translate="no">​</a></h3>
<table><thead><tr><th><strong>组件</strong></th><th><strong>功能</strong></th></tr></thead><tbody><tr><td><strong>感知服务器</strong></td><td>Rust 实现，Axum 框架，提供 REST API 和 WebSocket</td></tr><tr><td><strong>信号处理</strong></td><td>6 种 SOTA 算法（SpotFi、Hampel、菲涅尔等）</td></tr><tr><td><strong>AI 骨干</strong></td><td>RuVector 引擎，注意力机制 + 图算法</td></tr><tr><td><strong>Web UI</strong></td><td>Three.js 3D 可视化，实时姿态展示</td></tr><tr><td><strong>ESP32 固件</strong></td><td>CSI 采集 + 设备端处理 + WASM 模块运行</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="四环境要求">四、环境要求<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E5%9B%9B%E7%8E%AF%E5%A2%83%E8%A6%81%E6%B1%82" class="hash-link" aria-label="四、环境要求的直接链接" title="四、环境要求的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="软件要求">软件要求<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E8%BD%AF%E4%BB%B6%E8%A6%81%E6%B1%82" class="hash-link" aria-label="软件要求的直接链接" title="软件要求的直接链接" translate="no">​</a></h3>
<table><thead><tr><th><strong>软件</strong></th><th><strong>最低版本</strong></th><th><strong>说明</strong></th></tr></thead><tbody><tr><td>Docker</td><td>20.0+</td><td>推荐部署方式</td></tr><tr><td>Python</td><td>3.10+</td><td>用于验证和旧版 API</td></tr><tr><td>Rust</td><td>1.70+</td><td>源码编译需要</td></tr><tr><td>操作系统</td><td>Windows 10+、macOS 10.15+、Ubuntu 18.04+</td><td>—</td></tr><tr><td>内存</td><td>4 GB</td><td>推荐 8 GB+</td></tr><tr><td>磁盘</td><td>2 GB 可用</td><td>模型和数据存储</td></tr></tbody></table>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="硬件要求可选">硬件要求（可选）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E7%A1%AC%E4%BB%B6%E8%A6%81%E6%B1%82%E5%8F%AF%E9%80%89" class="hash-link" aria-label="硬件要求（可选）的直接链接" title="硬件要求（可选）的直接链接" translate="no">​</a></h3>
<table><thead><tr><th><strong>硬件</strong></th><th><strong>成本</strong></th><th><strong>能力</strong></th></tr></thead><tbody><tr><td>ESP32-S3 开发板（3-6 个）</td><td>~¥50/个</td><td>完整 CSI：姿态、呼吸、心跳、存在</td></tr><tr><td>Intel 5300 / Atheros 网卡</td><td>¥300-700</td><td>完整 CSI，3x3 MIMO（仅 Linux）</td></tr><tr><td>任意 WiFi 笔记本</td><td>¥0</td><td>仅 RSSI：粗略存在和运动检测</td></tr></tbody></table>
<blockquote>
<p><strong>无硬件也可运行</strong>：系统默认使用模拟数据源，可以体验完整功能。</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="五部署方法">五、部署方法<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E4%BA%94%E9%83%A8%E7%BD%B2%E6%96%B9%E6%B3%95" class="hash-link" aria-label="五、部署方法的直接链接" title="五、部署方法的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="方式一docker-部署推荐">方式一：Docker 部署（推荐）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E6%96%B9%E5%BC%8F%E4%B8%80docker-%E9%83%A8%E7%BD%B2%E6%8E%A8%E8%8D%90" class="hash-link" aria-label="方式一：Docker 部署（推荐）的直接链接" title="方式一：Docker 部署（推荐）的直接链接" translate="no">​</a></h3>
<p>这是最简单的部署方式，无需安装任何工具链。</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="步骤-1拉取镜像">步骤 1：拉取镜像<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E6%AD%A5%E9%AA%A4-1%E6%8B%89%E5%8F%96%E9%95%9C%E5%83%8F" class="hash-link" aria-label="步骤 1：拉取镜像的直接链接" title="步骤 1：拉取镜像的直接链接" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">docker pull ruvnet/wifi-densepose:latest</span><br></span></code></pre></div></div>
<p>镜像大小约 132 MB，支持 amd64 和 arm64 架构。</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="步骤-2启动容器">步骤 2：启动容器<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E6%AD%A5%E9%AA%A4-2%E5%90%AF%E5%8A%A8%E5%AE%B9%E5%99%A8" class="hash-link" aria-label="步骤 2：启动容器的直接链接" title="步骤 2：启动容器的直接链接" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">docker run -d --name wifi-densepose \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  -p 3000:3000 \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  -p 3001:3001 \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  -p 5005:5005/udp \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  -e RUVIEW_ALLOW_UNAUTHENTICATED=1 \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  ruvnet/wifi-densepose:latest</span><br></span></code></pre></div></div>
<p>端口说明：</p>
<table><thead><tr><th><strong>端口</strong></th><th><strong>协议</strong></th><th><strong>用途</strong></th></tr></thead><tbody><tr><td>3000</td><td>TCP</td><td>REST API + Web UI</td></tr><tr><td>3001</td><td>TCP</td><td>WebSocket 实时流</td></tr><tr><td>5005</td><td>UDP</td><td>ESP32 CSI 数据接收</td></tr></tbody></table>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="步骤-3验证服务">步骤 3：验证服务<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E6%AD%A5%E9%AA%A4-3%E9%AA%8C%E8%AF%81%E6%9C%8D%E5%8A%A1" class="hash-link" aria-label="步骤 3：验证服务的直接链接" title="步骤 3：验证服务的直接链接" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># 健康检查</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">curl http://localhost:3000/health</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 服务器信息</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">curl http://localhost:3000/api/v1/info</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 生命体征</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">curl http://localhost:3000/api/v1/vital-signs</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 姿态估计</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">curl http://localhost:3000/api/v1/pose/current</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="步骤-4打开浏览器">步骤 4：打开浏览器<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E6%AD%A5%E9%AA%A4-4%E6%89%93%E5%BC%80%E6%B5%8F%E8%A7%88%E5%99%A8" class="hash-link" aria-label="步骤 4：打开浏览器的直接链接" title="步骤 4：打开浏览器的直接链接" translate="no">​</a></h4>
<p>访问 <a href="http://localhost:3000/" target="_blank" rel="noopener noreferrer" class="">http://localhost:3000</a> 即可看到 Web UI。</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="windows-端口被占用时">Windows 端口被占用时<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#windows-%E7%AB%AF%E5%8F%A3%E8%A2%AB%E5%8D%A0%E7%94%A8%E6%97%B6" class="hash-link" aria-label="Windows 端口被占用时的直接链接" title="Windows 端口被占用时的直接链接" translate="no">​</a></h4>
<p>如果 3000 端口被占用，可以映射到其他端口：</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">docker run -d --name wifi-densepose \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  -p 3010:3000 \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  -p 3011:3001 \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  -p 5005:5005/udp \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  -e RUVIEW_ALLOW_UNAUTHENTICATED=1 \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  ruvnet/wifi-densepose:latest</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="docker-compose-部署">Docker Compose 部署<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#docker-compose-%E9%83%A8%E7%BD%B2" class="hash-link" aria-label="Docker Compose 部署的直接链接" title="Docker Compose 部署的直接链接" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">cd docker</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">docker compose up -d</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="方式二源码编译部署rust">方式二：源码编译部署（Rust）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E6%96%B9%E5%BC%8F%E4%BA%8C%E6%BA%90%E7%A0%81%E7%BC%96%E8%AF%91%E9%83%A8%E7%BD%B2rust" class="hash-link" aria-label="方式二：源码编译部署（Rust）的直接链接" title="方式二：源码编译部署（Rust）的直接链接" translate="no">​</a></h3>
<p>适合需要自定义修改或追求最佳性能的场景。</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="步骤-1安装-rust">步骤 1：安装 Rust<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E6%AD%A5%E9%AA%A4-1%E5%AE%89%E8%A3%85-rust" class="hash-link" aria-label="步骤 1：安装 Rust的直接链接" title="步骤 1：安装 Rust的直接链接" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># Windows/macOS/Linux</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="步骤-2克隆并编译">步骤 2：克隆并编译<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E6%AD%A5%E9%AA%A4-2%E5%85%8B%E9%9A%86%E5%B9%B6%E7%BC%96%E8%AF%91" class="hash-link" aria-label="步骤 2：克隆并编译的直接链接" title="步骤 2：克隆并编译的直接链接" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">git clone https://github.com/ruvnet/RuView.git</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">cd RuView/rust-port/wifi-densepose-rs</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 编译（约 5-10 分钟）</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">cargo build --release</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 运行测试（1,400+ 测试）</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">cargo test --workspace --no-default-features</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="步骤-3启动服务">步骤 3：启动服务<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E6%AD%A5%E9%AA%A4-3%E5%90%AF%E5%8A%A8%E6%9C%8D%E5%8A%A1" class="hash-link" aria-label="步骤 3：启动服务的直接链接" title="步骤 3：启动服务的直接链接" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># 模拟数据源（无需硬件）</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">./target/release/sensing-server --source simulate --http-port 3000 --ws-port 3001</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># ESP32 数据源</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">./target/release/sensing-server --source esp32 --udp-port 5005 --http-port 3000</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># Windows WiFi RSSI</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">./target/release/sensing-server --source wifi --http-port 3000</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="cli-参数说明">CLI 参数说明<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#cli-%E5%8F%82%E6%95%B0%E8%AF%B4%E6%98%8E" class="hash-link" aria-label="CLI 参数说明的直接链接" title="CLI 参数说明的直接链接" translate="no">​</a></h4>
<table><thead><tr><th><strong>参数</strong></th><th><strong>说明</strong></th><th><strong>默认值</strong></th></tr></thead><tbody><tr><td><code>--source</code></td><td>数据源：<code>auto</code>、<code>wifi</code>、<code>esp32</code>、<code>simulate</code></td><td><code>auto</code></td></tr><tr><td><code>--http-port</code></td><td>HTTP 服务端口</td><td>8080</td></tr><tr><td><code>--ws-port</code></td><td>WebSocket 端口</td><td>8765</td></tr><tr><td><code>--udp-port</code></td><td>ESP32 CSI 数据接收端口</td><td>5005</td></tr><tr><td><code>--model</code></td><td>加载训练好的 .rvf 模型</td><td>—</td></tr><tr><td><code>--train</code></td><td>训练模式</td><td>—</td></tr><tr><td><code>--dataset</code></td><td>数据集路径</td><td>—</td></tr><tr><td><code>--epochs</code></td><td>训练轮次</td><td>100</td></tr><tr><td><code>--benchmark</code></td><td>运行性能基准测试</td><td>—</td></tr><tr><td><code>--export-rvf</code></td><td>导出 RVF 模型包</td><td>—</td></tr></tbody></table>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="方式三python-旧版部署">方式三：Python 旧版部署<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E6%96%B9%E5%BC%8F%E4%B8%89python-%E6%97%A7%E7%89%88%E9%83%A8%E7%BD%B2" class="hash-link" aria-label="方式三：Python 旧版部署的直接链接" title="方式三：Python 旧版部署的直接链接" translate="no">​</a></h3>
<p>适合需要使用 Python API 或进行二次开发的场景。</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="步骤-1安装依赖">步骤 1：安装依赖<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E6%AD%A5%E9%AA%A4-1%E5%AE%89%E8%A3%85%E4%BE%9D%E8%B5%96" class="hash-link" aria-label="步骤 1：安装依赖的直接链接" title="步骤 1：安装依赖的直接链接" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">cd v1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">pip install -r requirements-lock.txt</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">pip install -e .</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="步骤-2启动服务">步骤 2：启动服务<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E6%AD%A5%E9%AA%A4-2%E5%90%AF%E5%8A%A8%E6%9C%8D%E5%8A%A1" class="hash-link" aria-label="步骤 2：启动服务的直接链接" title="步骤 2：启动服务的直接链接" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># 启动 API 服务器</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">python -m src.main</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 或使用 CLI</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">wifi-densepose start</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="步骤-3运行测试">步骤 3：运行测试<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E6%AD%A5%E9%AA%A4-3%E8%BF%90%E8%A1%8C%E6%B5%8B%E8%AF%95" class="hash-link" aria-label="步骤 3：运行测试的直接链接" title="步骤 3：运行测试的直接链接" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">cd v1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">python -m pytest tests/ -v</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="六使用说明">六、使用说明<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E5%85%AD%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E" class="hash-link" aria-label="六、使用说明的直接链接" title="六、使用说明的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="web-ui-可视化">Web UI 可视化<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#web-ui-%E5%8F%AF%E8%A7%86%E5%8C%96" class="hash-link" aria-label="Web UI 可视化的直接链接" title="Web UI 可视化的直接链接" translate="no">​</a></h3>
<p>访问 <a href="http://localhost:3000/" target="_blank" rel="noopener noreferrer" class="">http://localhost:3000</a> 打开内置的 Three.js 可视化界面，包含：</p>
<ul>
<li class=""><strong>3D 人体骨架</strong>：17 个 COCO 关键点的实时渲染</li>
<li class=""><strong>信号幅度热力图</strong>：子载波幅度的可视化</li>
<li class=""><strong>相位图</strong>：CSI 相位变化的实时展示</li>
<li class=""><strong>生命体征面板</strong>：呼吸频率和心率的实时显示</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="rest-api-接口">REST API 接口<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#rest-api-%E6%8E%A5%E5%8F%A3" class="hash-link" aria-label="REST API 接口的直接链接" title="REST API 接口的直接链接" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="健康检查">健康检查<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E5%81%A5%E5%BA%B7%E6%A3%80%E6%9F%A5" class="hash-link" aria-label="健康检查的直接链接" title="健康检查的直接链接" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl http://localhost:3000/health</span><br></span></code></pre></div></div>
<p>返回示例：</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"status"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"ok"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"source"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"simulated"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"clients"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"tick"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">12345</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="获取生命体征">获取生命体征<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E8%8E%B7%E5%8F%96%E7%94%9F%E5%91%BD%E4%BD%93%E5%BE%81" class="hash-link" aria-label="获取生命体征的直接链接" title="获取生命体征的直接链接" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl http://localhost:3000/api/v1/vital-signs</span><br></span></code></pre></div></div>
<p>返回示例：</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"breathing_rate_bpm"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">16.2</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"heart_rate_bpm"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">72.1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"breathing_confidence"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0.87</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"heartbeat_confidence"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0.63</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"signal_quality"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0.49</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="获取姿态估计">获取姿态估计<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E8%8E%B7%E5%8F%96%E5%A7%BF%E6%80%81%E4%BC%B0%E8%AE%A1" class="hash-link" aria-label="获取姿态估计的直接链接" title="获取姿态估计的直接链接" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl http://localhost:3000/api/v1/pose/current</span><br></span></code></pre></div></div>
<p>返回示例：</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"persons"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"id"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"confidence"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0.9</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"keypoints"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">{</span><span class="token property" style="color:#36acaa">"name"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"nose"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"x"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">329.3</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"y"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">153.7</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"z"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">-0.31</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"confidence"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0.0</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">{</span><span class="token property" style="color:#36acaa">"name"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"left_eye"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"x"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">323.8</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"y"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">142.3</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"z"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">-0.31</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"confidence"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0.0</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">{</span><span class="token property" style="color:#36acaa">"name"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"right_eye"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"x"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">334.4</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"y"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">145.1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"z"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">-0.31</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"confidence"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0.0</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"position"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">-1.2</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0.0</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">-0.5</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"zone"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"tracked"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"total_persons"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="获取感知数据">获取感知数据<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E8%8E%B7%E5%8F%96%E6%84%9F%E7%9F%A5%E6%95%B0%E6%8D%AE" class="hash-link" aria-label="获取感知数据的直接链接" title="获取感知数据的直接链接" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl http://localhost:3000/api/v1/sensing/latest</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="服务器信息">服务器信息<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%BF%A1%E6%81%AF" class="hash-link" aria-label="服务器信息的直接链接" title="服务器信息的直接链接" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl http://localhost:3000/api/v1/info</span><br></span></code></pre></div></div>
<p>返回示例：</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"backend"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"rust"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"version"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"0.3.3"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"environment"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"production"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"features"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"pose_estimation"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"vital_signs"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"signal_processing"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"streaming"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"wifi_sensing"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="完整-api-端点列表">完整 API 端点列表<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E5%AE%8C%E6%95%B4-api-%E7%AB%AF%E7%82%B9%E5%88%97%E8%A1%A8" class="hash-link" aria-label="完整 API 端点列表的直接链接" title="完整 API 端点列表的直接链接" translate="no">​</a></h4>
<table><thead><tr><th><strong>方法</strong></th><th><strong>端点</strong></th><th><strong>说明</strong></th></tr></thead><tbody><tr><td>GET</td><td><code>/health</code></td><td>健康检查</td></tr><tr><td>GET</td><td><code>/api/v1/info</code></td><td>服务器信息</td></tr><tr><td>GET</td><td><code>/api/v1/sensing/latest</code></td><td>最新感知帧</td></tr><tr><td>GET</td><td><code>/api/v1/vital-signs</code></td><td>生命体征（呼吸+心率）</td></tr><tr><td>GET</td><td><code>/api/v1/pose/current</code></td><td>姿态估计（17 关键点）</td></tr><tr><td>GET</td><td><code>/api/v1/bssid</code></td><td>多 BSSID 注册表</td></tr><tr><td>GET</td><td><code>/api/v1/model/layers</code></td><td>渐进加载状态</td></tr><tr><td>GET</td><td><code>/api/v1/model/sona/profiles</code></td><td>SONA 环境画像</td></tr><tr><td>POST</td><td><code>/api/v1/model/sona/activate</code></td><td>激活 SONA 画像</td></tr><tr><td>GET</td><td><code>/api/v1/models</code></td><td>可用模型列表</td></tr><tr><td>POST</td><td><code>/api/v1/models/load</code></td><td>加载模型</td></tr><tr><td>GET</td><td><code>/api/v1/recording/list</code></td><td>录制会话列表</td></tr><tr><td>POST</td><td><code>/api/v1/recording/start</code></td><td>开始录制 CSI</td></tr><tr><td>POST</td><td><code>/api/v1/recording/stop</code></td><td>停止录制</td></tr><tr><td>GET</td><td><code>/api/v1/train/status</code></td><td>训练状态</td></tr><tr><td>POST</td><td><code>/api/v1/train/start</code></td><td>开始训练</td></tr><tr><td>POST</td><td><code>/api/v1/adaptive/train</code></td><td>训练自适应分类器</td></tr></tbody></table>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="websocket-实时流">WebSocket 实时流<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#websocket-%E5%AE%9E%E6%97%B6%E6%B5%81" class="hash-link" aria-label="WebSocket 实时流的直接链接" title="WebSocket 实时流的直接链接" translate="no">​</a></h3>
<p>实时感知数据通过 WebSocket 推送，适合需要低延迟数据的应用场景。</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="连接地址">连接地址<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E8%BF%9E%E6%8E%A5%E5%9C%B0%E5%9D%80" class="hash-link" aria-label="连接地址的直接链接" title="连接地址的直接链接" translate="no">​</a></h4>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">ws://localhost:3001/ws/sensing</span><br></span></code></pre></div></div>
<p>或使用 HTTP 端口（推荐）：</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">ws://localhost:3000/ws/sensing</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="python-示例">Python 示例<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#python-%E7%A4%BA%E4%BE%8B" class="hash-link" aria-label="Python 示例的直接链接" title="Python 示例的直接链接" translate="no">​</a></h4>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> asyncio</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> websockets</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> json</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">async</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">def</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">stream</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    uri </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"ws://localhost:3001/ws/sensing"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">async</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">with</span><span class="token plain"> websockets</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">connect</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">uri</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> ws</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">async</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">for</span><span class="token plain"> message </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> ws</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            data </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> json</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">loads</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">message</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            persons </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> data</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">get</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"persons"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            vitals </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> data</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">get</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"vital_signs"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string-interpolation string" style="color:#e3116c">f"人数: </span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation builtin">len</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">(</span><span class="token string-interpolation interpolation">persons</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">)</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">, "</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                  </span><span class="token string-interpolation string" style="color:#e3116c">f"呼吸: </span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">vitals</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">.</span><span class="token string-interpolation interpolation">get</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">(</span><span class="token string-interpolation interpolation string" style="color:#e3116c">'breathing_rate_bpm'</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">,</span><span class="token string-interpolation interpolation"> </span><span class="token string-interpolation interpolation string" style="color:#e3116c">'N/A'</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">)</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c"> BPM"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">asyncio</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">run</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">stream</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="javascript-示例">JavaScript 示例<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#javascript-%E7%A4%BA%E4%BE%8B" class="hash-link" aria-label="JavaScript 示例的直接链接" title="JavaScript 示例的直接链接" translate="no">​</a></h4>
<div class="language-javascript codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-javascript codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> ws </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">new</span><span class="token plain"> </span><span class="token class-name">WebSocket</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"ws://localhost:3001/ws/sensing"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">ws</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method-variable function-variable method function property-access" style="color:#d73a49">onmessage</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">event</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> data </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token known-class-name class-name">JSON</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">parse</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">event</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">data</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token console class-name">console</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">log</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"人数:"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> data</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">persons</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">length </span><span class="token operator" style="color:#393A34">??</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token console class-name">console</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">log</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"呼吸:"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> data</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">vital_signs</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">breathing_rate_bpm</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"BPM"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">ws</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method-variable function-variable method function property-access" style="color:#d73a49">onerror</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">err</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token console class-name">console</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">error</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"WebSocket 错误:"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> err</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="curl-测试需要安装-wscat">curl 测试（需要安装 wscat）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#curl-%E6%B5%8B%E8%AF%95%E9%9C%80%E8%A6%81%E5%AE%89%E8%A3%85-wscat" class="hash-link" aria-label="curl 测试（需要安装 wscat）的直接链接" title="curl 测试（需要安装 wscat）的直接链接" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">npm install -g wscat</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">wscat -c ws://localhost:3001/ws/sensing</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="观测台可视化">观测台可视化<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E8%A7%82%E6%B5%8B%E5%8F%B0%E5%8F%AF%E8%A7%86%E5%8C%96" class="hash-link" aria-label="观测台可视化的直接链接" title="观测台可视化的直接链接" translate="no">​</a></h3>
<p>项目提供了一个电影级的 Three.js 观测台界面，包含 5 个全息面板：</p>
<ol>
<li class=""><strong>子载波流形</strong>：CSI 子载波的 3D 可视化</li>
<li class=""><strong>生命体征预言机</strong>：呼吸和心率的实时显示</li>
<li class=""><strong>存在热力图</strong>：房间内人员分布</li>
<li class=""><strong>相位星座</strong>：CSI 相位变化的星座图</li>
<li class=""><strong>收敛引擎</strong>：信号收敛状态</li>
</ol>
<p>访问地址：<a href="http://localhost:3000/ui/observatory.html" target="_blank" rel="noopener noreferrer" class="">http://localhost:3000/ui/observatory.html</a>​</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="运行截图">运行截图<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E8%BF%90%E8%A1%8C%E6%88%AA%E5%9B%BE" class="hash-link" aria-label="��运行截图的直接链接" title="运行截图的直接链接" translate="no">​</a></h3>
<h3></h3>
<img src="http://www.otqsoft.com/doc/assets/images/2-7656ca79a66336f56118a15e245e9e84.webp" class="previewImage_kI9J">
<img src="http://www.otqsoft.com/doc/assets/images/3-815fbe7fc1bb4dd6dec35e177c95b10b.webp" class="previewImage_kI9J">
<img src="http://www.otqsoft.com/doc/assets/images/4-49e32a774ba7927c99be84ade6d2d3bf.webp" class="previewImage_kI9J">
<img src="http://www.otqsoft.com/doc/assets/images/5-784eb64bbc3355415b9698fb79a9e5ca.webp" class="previewImage_kI9J">
<img src="http://www.otqsoft.com/doc/assets/images/6-f362efeac71df701adeb3e70026ed3d8.webp" class="previewImage_kI9J">
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="七esp32-硬件接入">七、ESP32 硬件接入<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E4%B8%83esp32-%E7%A1%AC%E4%BB%B6%E6%8E%A5%E5%85%A5" class="hash-link" aria-label="七、ESP32 硬件接入的直接链接" title="七、ESP32 硬件接入的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="硬件准备">硬件准备<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E7%A1%AC%E4%BB%B6%E5%87%86%E5%A4%87" class="hash-link" aria-label="硬件准备的直接链接" title="硬件准备的直接链接" translate="no">​</a></h3>
<table><thead><tr><th><strong>组件</strong></th><th><strong>规格</strong></th><th><strong>参考价格</strong></th></tr></thead><tbody><tr><td>ESP32-S3 开发板</td><td>8MB Flash + 8MB PSRAM</td><td>¥50-70</td></tr><tr><td>USB 数据线</td><td>Type-C（需要数据线，不是充电线）</td><td>—</td></tr><tr><td>WiFi 路由器</td><td>任意家用路由器</td><td>已有</td></tr><tr><td>CP210x 驱动</td><td>USB-UART 桥接驱动</td><td>免费</td></tr></tbody></table>
<p>推荐开发板：ESP32-S3-DevKitC-1、XIAO ESP32-S3。</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="安装驱动">安装驱动<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E5%AE%89%E8%A3%85%E9%A9%B1%E5%8A%A8" class="hash-link" aria-label="安装驱动的直接链接" title="安装驱动的直接链接" translate="no">​</a></h4>
<p>下载并安装 <a href="https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers" target="_blank" rel="noopener noreferrer" class="">CP210x 驱动</a>。</p>
<p>插入 ESP32-S3 后，在设备管理器中确认出现 COM 口（如 <code>COM7</code>）。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="固件刷写">固件刷写<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E5%9B%BA%E4%BB%B6%E5%88%B7%E5%86%99" class="hash-link" aria-label="固件刷写的直接链接" title="固件刷写的直接链接" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="方式-a使用预编译固件推荐">方式 A：使用预编译固件（推荐）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E6%96%B9%E5%BC%8F-a%E4%BD%BF%E7%94%A8%E9%A2%84%E7%BC%96%E8%AF%91%E5%9B%BA%E4%BB%B6%E6%8E%A8%E8%8D%90" class="hash-link" aria-label="方式 A：使用预编译固件（推荐）的直接链接" title="方式 A：使用预编译固件（推荐）的直接链接" translate="no">​</a></h4>
<p>从 <a href="https://github.com/ruvnet/RuView/releases/tag/v0.2.0-esp32" target="_blank" rel="noopener noreferrer" class="">Releases</a> 下载预编译二进制文件。</p>
<p>安装刷写工具：</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">pip install esptool</span><br></span></code></pre></div></div>
<p>刷写固件：</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">python -m esptool --chip esp32s3 --port COM7 --baud 460800 \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  write_flash --flash_mode dio --flash_size 8MB \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  0x0 bootloader.bin \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  0x8000 partition-table.bin \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  0x10000 esp32-csi-node.bin</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="方式-bdocker-编译">方式 B：Docker 编译<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E6%96%B9%E5%BC%8F-bdocker-%E7%BC%96%E8%AF%91" class="hash-link" aria-label="方式 B：Docker 编译的直接链接" title="方式 B：Docker 编译的直接链接" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">cd E:\AI\wifi-densepose</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">MSYS_NO_PATHCONV=1 docker run --rm \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  -v "$(pwd)/firmware/esp32-csi-node:/project" -w /project \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  espressif/idf:v5.2 bash -c \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  "rm -rf build sdkconfig &amp;&amp; idf.py set-target esp32s3 &amp;&amp; idf.py build"</span><br></span></code></pre></div></div>
<p>编译完成后，使用同样的 <code>esptool</code> 命令刷写 <code>build/</code> 目录下的三个 bin 文件。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="wifi-配置">WiFi 配置<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#wifi-%E9%85%8D%E7%BD%AE" class="hash-link" aria-label="WiFi 配置的直接链接" title="WiFi 配置的直接链接" translate="no">​</a></h3>
<p>刷写固件后，通过串口配置 WiFi 凭据（无需重新刷固件）：</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># 安装依赖</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">pip install esptool nvs-partition-gen</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 配置 WiFi</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">python firmware/esp32-csi-node/provision.py --port COM7 \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  --ssid "你的WiFi名称" \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  --password "你的WiFi密码" \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  --target-ip "你电脑的局域网IP" \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  --edge-tier 2</span><br></span></code></pre></div></div>
<p>参数说明：</p>
<table><thead><tr><th><strong>参数</strong></th><th><strong>说明</strong></th><th><strong>示例</strong></th></tr></thead><tbody><tr><td><code>--port</code></td><td>ESP32 串口号</td><td><code>COM7</code></td></tr><tr><td><code>--ssid</code></td><td>WiFi 名称</td><td><code>"MyHomeWiFi"</code></td></tr><tr><td><code>--password</code></td><td>WiFi 密码</td><td><code>"mypassword"</code></td></tr><tr><td><code>--target-ip</code></td><td>运行感知服务器的电脑 IP</td><td><code>192.168.1.20</code></td></tr><tr><td><code>--target-port</code></td><td>UDP 端口</td><td><code>5005</code>（默认）</td></tr><tr><td><code>--node-id</code></td><td>节点编号</td><td><code>0</code>, <code>1</code>, <code>2</code>...</td></tr><tr><td><code>--edge-tier</code></td><td>处理层级</td><td><code>0</code>=原始流, <code>1</code>=基础DSP, <code>2</code>=完整体征</td></tr></tbody></table>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="处理层级说明">处理层级说明<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E5%A4%84%E7%90%86%E5%B1%82%E7%BA%A7%E8%AF%B4%E6%98%8E" class="hash-link" aria-label="处理层级说明的直接链接" title="处理层级说明的直接链接" translate="no">​</a></h4>
<table><thead><tr><th><strong>层级</strong></th><th><strong>功能</strong></th><th><strong>内存占用</strong></th></tr></thead><tbody><tr><td><strong>Tier 0</strong></td><td>原始 CSI 流传输</td><td>0 KB</td></tr><tr><td><strong>Tier 1</strong></td><td>相位清理 + 子载波选择 + 压缩</td><td>~30 KB</td></tr><tr><td><strong>Tier 2</strong></td><td>存在检测 + 呼吸 + 心率 + 跌倒检测</td><td>~33 KB</td></tr><tr><td><strong>Tier 3</strong></td><td>Tier 2 + WASM 自定义模块</td><td>~160 KB/模块</td></tr></tbody></table>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="串口监控">串口监控<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E4%B8%B2%E5%8F%A3%E7%9B%91%E6%8E%A7" class="hash-link" aria-label="串口监控的直接链接" title="串口监控的直接链接" translate="no">​</a></h3>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">pip install pyserial</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">python -m serial.tools.miniterm COM7 115200</span><br></span></code></pre></div></div>
<p>正常启动输出：</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">I (321) main: ESP32-S3 CSI Node (ADR-018) -- Node ID: 1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">I (345) main: WiFi STA initialized, connecting to SSID: MyWiFi</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">I (1023) main: Connected to WiFi</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">I (1025) main: CSI streaming active -&gt; 192.168.1.20:5005</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="多节点网格">多节点网格<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E5%A4%9A%E8%8A%82%E7%82%B9%E7%BD%91%E6%A0%BC" class="hash-link" aria-label="多节点网格的直接链接" title="多节点网格的直接链接" translate="no">​</a></h3>
<p>部署 3-6 个节点可以实现 360 度全覆盖和 3D 姿态估计：</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># 节点 0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">python firmware/esp32-csi-node/provision.py --port COM7 \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  --ssid "YourWiFi" --password "secret" --target-ip 192.168.1.20 \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  --node-id 0 --tdm-slot 0 --tdm-total 3 --edge-tier 2</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 节点 1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">python firmware/esp32-csi-node/provision.py --port COM8 \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  --ssid "YourWiFi" --password "secret" --target-ip 192.168.1.20 \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  --node-id 1 --tdm-slot 1 --tdm-total 3 --edge-tier 2</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 节点 2</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">python firmware/esp32-csi-node/provision.py --port COM9 \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  --ssid "YourWiFi" --password "secret" --target-ip 192.168.1.20 \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  --node-id 2 --tdm-slot 2 --tdm-total 3 --edge-tier 2</span><br></span></code></pre></div></div>
<p>多节点使用 TDM（时分复用）协议轮流发射，避免自干扰。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="windows-防火墙">Windows 防火墙<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#windows-%E9%98%B2%E7%81%AB%E5%A2%99" class="hash-link" aria-label="Windows 防火墙的直接链接" title="Windows 防火墙的直接链接" translate="no">​</a></h3>
<p>需要开放 UDP 5005 端口以接收 ESP32 数据：</p>
<div class="language-powershell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-powershell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># 以管理员身份运行 PowerShell</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">netsh advfirewall firewall add rule name="ESP32 CSI" dir=in action=allow protocol=UDP localport=5005</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="启动感知服务器接收硬件数据">启动感知服务器接收硬件数据<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E5%90%AF%E5%8A%A8%E6%84%9F%E7%9F%A5%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%8E%A5%E6%94%B6%E7%A1%AC%E4%BB%B6%E6%95%B0%E6%8D%AE" class="hash-link" aria-label="启动感知服务器接收硬件数据的直接链接" title="启动感知服务器接收硬件数据的直接链接" translate="no">​</a></h3>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># Docker 方式</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">docker stop wifi-densepose</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">docker rm wifi-densepose</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">docker run -d --name wifi-densepose \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  -p 3000:3000 -p 3001:3001 -p 5005:5005/udp \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  -e RUVIEW_ALLOW_UNAUTHENTICATED=1 \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  ruvnet/wifi-densepose:latest --source esp32</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 源码方式</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">./target/release/sensing-server --source esp32 --udp-port 5005 --http-port 3000</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="八数据源配置">八、数据源配置<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E5%85%AB%E6%95%B0%E6%8D%AE%E6%BA%90%E9%85%8D%E7%BD%AE" class="hash-link" aria-label="八、数据源配置的直接链接" title="八、数据源配置的直接链接" translate="no">​</a></h2>
<p>系统支持多种数据源，通过 <code>--source</code> 参数指定：</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="模拟数据默认">模拟数据（默认）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E6%A8%A1%E6%8B%9F%E6%95%B0%E6%8D%AE%E9%BB%98%E8%AE%A4" class="hash-link" aria-label="模拟数据（默认）的直接链接" title="模拟数据（默认）的直接链接" translate="no">​</a></h3>
<p>无需任何硬件，系统生成模拟 CSI 数据。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">docker run -p 3000:3000 ruvnet/wifi-densepose:latest</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 默认 --source auto，无硬件时自动使用模拟数据</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="windows-wifirssi">Windows WiFi（RSSI）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#windows-wifirssi" class="hash-link" aria-label="Windows WiFi（RSSI）的直接链接" title="Windows WiFi（RSSI）的直接链接" translate="no">​</a></h3>
<p>使用 Windows 内置 WiFi 网卡扫描附近接入点的 RSSI 信号。无需特殊硬件，支持存在检测和粗略运动分类。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">./target/release/sensing-server --source wifi --http-port 3000 --tick-ms 500</span><br></span></code></pre></div></div>
<blockquote>
<p>注意：RSSI 模式不支持姿态估计，仅支持存在检测和运动分类。</p>
</blockquote>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="macos-wifirssi">macOS WiFi（RSSI）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#macos-wifirssi" class="hash-link" aria-label="macOS WiFi（RSSI）的直接链接" title="macOS WiFi（RSSI）的直接链接" translate="no">​</a></h3>
<p>使用 CoreWLAN 框架扫描 WiFi 信号。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># 编译 Swift 辅助程序（仅需一次）</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">swiftc -O v1/src/sensing/mac_wifi.swift -o mac_wifi</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 运行</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">./target/release/sensing-server --source macos --http-port 3000 --tick-ms 500</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="linux-wifirssi">Linux WiFi（RSSI）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#linux-wifirssi" class="hash-link" aria-label="Linux WiFi（RSSI）的直接链接" title="Linux WiFi（RSSI）的直接链接" translate="no">​</a></h3>
<p>使用 <code>iw</code> 命令扫描 WiFi 信号。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">sudo ./target/release/sensing-server --source linux --http-port 3000 --tick-ms 500</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="esp32-csi完整功能">ESP32 CSI（完整功能）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#esp32-csi%E5%AE%8C%E6%95%B4%E5%8A%9F%E8%83%BD" class="hash-link" aria-label="ESP32 CSI（完整功能）的直接链接" title="ESP32 CSI（完整功能）的直接链接" translate="no">​</a></h3>
<p>接收 ESP32-S3 节点的 CSI 数据流，支持所有功能。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">./target/release/sensing-server --source esp32 --udp-port 5005 --http-port 3000</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="九python-流水线验证">九、Python 流水线验证<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E4%B9%9Dpython-%E6%B5%81%E6%B0%B4%E7%BA%BF%E9%AA%8C%E8%AF%81" class="hash-link" aria-label="九、Python 流水线验证的直接链接" title="九、Python 流水线验证的直接链接" translate="no">​</a></h2>
<p>项目包含一个确定性验证脚本，用于证明信号处理流水线是真实代码而非模拟。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="运行验证">运行验证<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E8%BF%90%E8%A1%8C%E9%AA%8C%E8%AF%81" class="hash-link" aria-label="运行验证的直接链接" title="运行验证的直接链接" translate="no">​</a></h3>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># 安装依赖</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">pip install numpy scipy pydantic pydantic-settings</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 运行验证</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">python v1/data/proof/verify.py</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="验证结果">验证结果<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E9%AA%8C%E8%AF%81%E7%BB%93%E6%9E%9C" class="hash-link" aria-label="验证结果的直接链接" title="验证结果的直接链接" translate="no">​</a></h3>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">WiFi-DensePose: Trust Kill Switch -- Pipeline Proof Replay</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[1/4] LOADING REFERENCE SIGNAL</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    Path: v1/data/proof/sample_csi_data.json</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    Size: 10,745,444 bytes</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[2/4] PROCESSING THROUGH PRODUCTION PIPELINE</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    Frames processed: 100</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    Processing time: 0.0964s (1037 frames/sec)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[3/4] SHA-256 HASH COMPARISON</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    Computed: a69f754be65e12122af82f6c1946e5c3...</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    Expected: a69f754be65e12122af82f6c1946e5c3...</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    Status:   MATCH</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">VERDICT: PASS</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="生成新的预期哈希">生成新的预期哈希<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E7%94%9F%E6%88%90%E6%96%B0%E7%9A%84%E9%A2%84%E6%9C%9F%E5%93%88%E5%B8%8C" class="hash-link" aria-label="生成新的预期哈希的直接链接" title="生成新的预期哈希的直接链接" translate="no">​</a></h3>
<p>如果更新了依赖版本，需要重新生成预期哈希：</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">python v1/data/proof/verify.py --generate-hash</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">python v1/data/proof/verify.py</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="十常见问题">十、常见问题<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E5%8D%81%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98" class="hash-link" aria-label="十、常见问题的直接链接" title="十、常见问题的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="docker-相关">Docker 相关<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#docker-%E7%9B%B8%E5%85%B3" class="hash-link" aria-label="Docker 相关的直接链接" title="Docker 相关的直接链接" translate="no">​</a></h3>
<p><strong>Q: 容器启动失败，提示端口被占用</strong></p>
<p>A: 更换映射端口：</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">docker run -d --name wifi-densepose -p 3010:3000 -p 3011:3001 -p 5005:5005/udp \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  -e RUVIEW_ALLOW_UNAUTHENTICATED=1 ruvnet/wifi-densepose:latest</span><br></span></code></pre></div></div>
<p><strong>Q: 容器启动后立即退出</strong></p>
<p>A: 检查日志：</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">docker logs wifi-densepose</span><br></span></code></pre></div></div>
<p>常见原因是需要设置认证参数，添加 <code>-e RUVIEW_ALLOW_UNAUTHENTICATED=1</code>。</p>
<p><strong>Q: Docker 服务未启动</strong></p>
<p>A: 启动 Docker Desktop，等待状态栏显示"Docker Desktop is running"。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="esp32-相关">ESP32 相关<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#esp32-%E7%9B%B8%E5%85%B3" class="hash-link" aria-label="ESP32 相关的直接链接" title="ESP32 相关的直接链接" translate="no">​</a></h3>
<p><strong>Q: 找不到串口</strong></p>
<p>A: 检查以下几点：</p>
<ol>
<li class="">安装 CP210x 驱动</li>
<li class="">使用数据线而非充电线</li>
<li class="">在设备管理器中检查 COM 口</li>
</ol>
<p><strong>Q: WiFi 连接失败</strong></p>
<p>A: 重新运行 <code>provision.py</code>，确保 SSID 和密码正确。</p>
<p><strong>Q: 服务器收不到 ESP32 数据</strong></p>
<p>A: 检查以下几点：</p>
<ol>
<li class=""><code>--target-ip</code> 是否为电脑的实际局域网 IP</li>
<li class="">防火墙是否开放 UDP 5005 端口</li>
<li class="">ESP32 和电脑是否在同一局域网</li>
</ol>
<p><strong>Q: 串口监控无输出</strong></p>
<p>A: 确认波特率为 115200，串口号正确。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="性能相关">性能相关<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E6%80%A7%E8%83%BD%E7%9B%B8%E5%85%B3" class="hash-link" aria-label="性能相关的直接链接" title="性能相关的直接链接" translate="no">​</a></h3>
<p><strong>Q: Docker 镜像中的 Rust 服务器性能如何？</strong></p>
<p>A: 性能指标：</p>
<ul>
<li class="">全 CSI 流水线：54,000 fps</li>
<li class="">生命体征检测：11,665 fps</li>
<li class="">运动检测：186 ns</li>
<li class="">比 Python 版本快约 810 倍</li>
</ul>
<p><strong>Q: 系统支持多少人同时追踪？</strong></p>
<p>A: 每个 AP 约 3-5 人（56 子载波限制），多 AP 可线性扩展。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="附录性能基准">附录：性能基准<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-wifi-densepose#%E9%99%84%E5%BD%95%E6%80%A7%E8%83%BD%E5%9F%BA%E5%87%86" class="hash-link" aria-label="附录：性能基准的直接链接" title="附录：性能基准的直接链接" translate="no">​</a></h2>
<table><thead><tr><th><strong>操作</strong></th><th><strong>Python</strong></th><th><strong>Rust</strong></th><th><strong>加速比</strong></th></tr></thead><tbody><tr><td>CSI 预处理</td><td>~5 ms</td><td>5.19 µs</td><td>1000x</td></tr><tr><td>相位清理</td><td>~3 ms</td><td>3.84 µs</td><td>780x</td></tr><tr><td>特征提取</td><td>~8 ms</td><td>9.03 µs</td><td>890x</td></tr><tr><td>运动检测</td><td>~1 ms</td><td>186 ns</td><td>5400x</td></tr><tr><td>全流水线</td><td>~15 ms</td><td>18.47 µs</td><td>810x</td></tr></tbody></table>
<table><thead><tr><th><strong>资源</strong></th><th><strong>Python</strong></th><th><strong>Rust</strong></th></tr></thead><tbody><tr><td>内存</td><td>~500 MB</td><td>~100 MB</td></tr><tr><td>Docker 镜像</td><td>569 MB</td><td>132 MB</td></tr><tr><td>测试数</td><td>41</td><td>1,400+</td></tr></tbody></table>]]></content>
        <author>
            <name>otqsoft</name>
            <uri>https://gitee.com/work25</uri>
        </author>
        <category label="AI" term="AI"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Marvis]]></title>
        <id>http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-marvis</id>
        <link href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-marvis"/>
        <updated>2026-05-21T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[不只是聊天机器人，而是真正能"干活"的 OS 级 AI 助手。]]></summary>
        <content type="html"><![CDATA[<blockquote>
<p><strong>不只是聊天机器人，而是真正能"干活"的 OS 级 AI 助手。</strong></p>
<p>让它帮你管理文件、操控应用、整理桌面、处理文档——你只需要用自然语言下指令。</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="引言">引言<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-marvis#%E5%BC%95%E8%A8%80" class="hash-link" aria-label="引言的直接链接" title="引言的直接链接" translate="no">​</a></h2>
<p>AI 工具的爆发式增长带来了无数"聊天机器人"，但它们的边界止于对话框——能回答你的问题，却碰不到你电脑里的文件、打不开你的应用、管不了你的桌面。</p>
<p>Marvis 打破了这条边界。它<strong>深度集成在操作系统中</strong>，像一位坐在你身边的数字同事：懂你的文件体系、熟悉你的应用生态、理解你的工作流程。它不是"告诉我怎么做"，而是"我来帮你做"。</p>
<p><img decoding="async" loading="lazy" src="https://images.unsplash.com/photo-1677442136019-21780ecad995?w=800&amp;q=80" alt="AI桌面助手概念" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="marvis-是什么">Marvis 是什么？<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-marvis#marvis-%E6%98%AF%E4%BB%80%E4%B9%88" class="hash-link" aria-label="Marvis 是什么？的直接链接" title="Marvis 是什么？的直接链接" translate="no">​</a></h2>
<p>Marvis 是一款 <strong>OS 级 AI 桌面助手</strong>，目前支持 <strong>Windows、macOS、Android</strong>，iOS 也在规划中。它采用<strong>多 Agent 协作架构</strong>——不是一个大模型包打天下，而是六位专业 Agent 各司其职、协同作战：</p>
<img src="http://www.otqsoft.com/doc/assets/images/7-5214a03bdbb598e1e7eb0120c8996f55.png" class="previewImage_kI9J">
<p>Main Agent 负责理解你的自然语言指令，将其拆解为可执行的子任务，然后调度专业 Agent 协同完成。复杂任务可以<strong>并行分派</strong>，操作过程全程可视可追溯。</p>
<img src="http://www.otqsoft.com/doc/assets/images/0-d72af10439ca176de89e01c8481b3909.png" class="previewImage_kI9J">
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="核心特点">核心特点<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-marvis#%E6%A0%B8%E5%BF%83%E7%89%B9%E7%82%B9" class="hash-link" aria-label="核心特点的直接链接" title="核心特点的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-环境优先隐私可控">1. 环境优先，隐私可控<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-marvis#1-%E7%8E%AF%E5%A2%83%E4%BC%98%E5%85%88%E9%9A%90%E7%A7%81%E5%8F%AF%E6%8E%A7" class="hash-link" aria-label="1. 环境优先，隐私可控的直接链接" title="1. 环境优先，隐私可控的直接链接" translate="no">​</a></h3>
<p>Marvis 的设计哲学是"<strong>能用本地解决的，不绕路云端</strong>"。面对一个任务，它优先调度电脑上已有的工具、文件和应用，而非一味依赖在线模型生成。</p>
<table><thead><tr><th>运行模式</th><th>说明</th><th>适用场景</th></tr></thead><tbody><tr><td><strong>效率模式</strong></td><td>端云智能结合，响应速度快</td><td>日常高频任务、联网搜索、复杂推理</td></tr><tr><td><strong>隐私模式</strong></td><td>100% 本地运行，数据不出设备，支持离线</td><td>金融合同、法律文件、个人隐私数据</td></tr></tbody></table>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-多-agent-协作架构">2. 多 Agent 协作架构<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-marvis#2-%E5%A4%9A-agent-%E5%8D%8F%E4%BD%9C%E6%9E%B6%E6%9E%84" class="hash-link" aria-label="2. 多 Agent 协作架构的直接链接" title="2. 多 Agent 协作架构的直接链接" translate="no">​</a></h3>
<p>不同于单一大模型的"一问一答"，Marvis 的 Agent 团队可以并行处理复杂指令。比如你说"帮我把桌面上 PDF 文件整理到一个文件夹，然后把上个月的发票找出来汇总成 Excel"——Main Agent 会同时分派 File Agent 去整理桌面，同时启动发票检索流程，两路并行，效率倍增。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-三级风险安全机制">3. 三级风险安全机制<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-marvis#3-%E4%B8%89%E7%BA%A7%E9%A3%8E%E9%99%A9%E5%AE%89%E5%85%A8%E6%9C%BA%E5%88%B6" class="hash-link" aria-label="3. 三级风险安全机制的直接链接" title="3. 三级风险安全机制的直接链接" translate="no">​</a></h3>
<p>任何能操作你电脑的助手，安全都是第一位的。Marvis 内置了<strong>三级风险定级与响应机制</strong>：</p>
<table><thead><tr><th>风险等级</th><th>定义</th><th>响应策略</th><th>示例</th></tr></thead><tbody><tr><td>🟢 低风险</td><td>只读操作、创建文件</td><td><strong>直接执行</strong>，事后报告</td><td>列目录、搜索文件、读取内容</td></tr><tr><td>🟡 中风险</td><td>覆盖替换、配置变更</td><td><strong>二次确认</strong>，说明影响范围</td><td>批量替换文件内容、修改设置</td></tr><tr><td>🔴 高风险</td><td>删除系统文件、格式化</td><td><strong>强制确认</strong>，展示完整执行计划</td><td>清空回收站、修改注册表</td></tr></tbody></table>
<p>此外，Marvis 对系统核心路径（如 <code>C:\Windows</code>、<code>C:\Program Files</code>）设有<strong>禁区保护</strong>，敏感配置文件（<code>.ssh</code>、<code>.env</code>、<code>.kube</code>）默认不可读写。删除操作始终优先移入回收站而非永久删除——安全策略深入每一个工具调用的细节。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="4-工具路由专用优先通用兜底">4. 工具路由：专用优先，通用兜底<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-marvis#4-%E5%B7%A5%E5%85%B7%E8%B7%AF%E7%94%B1%E4%B8%93%E7%94%A8%E4%BC%98%E5%85%88%E9%80%9A%E7%94%A8%E5%85%9C%E5%BA%95" class="hash-link" aria-label="4. 工具路由：专用优先，通用兜底的直接链接" title="4. 工具路由：专用优先，通用兜底的直接链接" translate="no">​</a></h3>
<p>Marvis 内部有一张精细的<strong>工具路由表</strong>。面对任务，它优先匹配<strong>专用闭环能力</strong>（如 PDF 解析、发票识别、Excel 处理），只有在专用能力不覆盖时，才降级到通用 Shell/Python 执行器。这种设计大幅降低了 LLM 幻觉风险——能用确定性的工具解决的问题，绝不依赖模型"猜测"。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="六大-agent-技能详解">六大 Agent 技能详解<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-marvis#%E5%85%AD%E5%A4%A7-agent-%E6%8A%80%E8%83%BD%E8%AF%A6%E8%A7%A3" class="hash-link" aria-label="六大 Agent 技能详解的直接链接" title="六大 Agent 技能详解的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="file-agent你的私人文件管家">File Agent：你的私人文件管家<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-marvis#file-agent%E4%BD%A0%E7%9A%84%E7%A7%81%E4%BA%BA%E6%96%87%E4%BB%B6%E7%AE%A1%E5%AE%B6" class="hash-link" aria-label="File Agent：你的私人文件管家的直接链接" title="File Agent：你的私人文件管家的直接链接" translate="no">​</a></h3>
<p>File Agent 是 Marvis 中使用频率最高的 Agent，它的能力远不止"搜索文件名"：</p>
<p><strong>🔍 内容感知搜索</strong></p>
<p>支持跨 PDF、Word、PPT、Excel、TXT 的全文语义搜索。你说"找我上个月签的租赁合同"，它会理解"租赁合同"的语义，而非机械匹配文件名。更强大的是结合图片搜索能力——"有没有产品架构图？""把去年团建的照片找出来"同样精准命中。</p>
<p><strong>📂 智能文件整理</strong></p>
<p>File Agent 内置了完整的整理工作流：先扫描目录 → 生成<strong>整理蓝图</strong>（展示哪些文件将被移动到哪些文件夹）→ 等你确认后执行。整个过程有重名保护、锁定文件检测、隐藏/系统文件自动过滤。你全程可控，出错率为零。</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">整理蓝图示例：</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── 📁 PDF文档/           ← 12 个文件</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── 📁 Excel表格/         ← 8 个文件</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── 📁 图片/              ← 23 个文件</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   ├── 📁 截图/          ← 15 个文件</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   └── 📁 照片/          ← 8 个文件</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── 📁 安装包/            </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">└── ⏭️ 跳过：3 个文件（锁定/系统文件）</span><br></span></code></pre></div></div>
<p><strong>📝 文档处理</strong></p>
<p>读取、摘要、翻译、格式化各类文档。支持 PDF / DOCX / PPTX / XLSX 的完整解析，包括复杂表格、PPT 演讲者备注等。加上 <strong>Skills 系统</strong>，可以直接生成报告、制作 PPT、输出带格式的 Word。</p>
<p><strong>🔄 格式转换</strong></p>
<p>PPT → PDF、Word → Markdown、图片格式互转、文档转图片…… 一个指令完成，无需打开任何软件。</p>
<img src="http://www.otqsoft.com/doc/assets/images/6-65de89c275d4acf0d0b8293e05a38750.png" class="previewImage_kI9J">
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="computer-agent系统操控大师">Computer Agent：系统操控大师<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-marvis#computer-agent%E7%B3%BB%E7%BB%9F%E6%93%8D%E6%8E%A7%E5%A4%A7%E5%B8%88" class="hash-link" aria-label="Computer Agent：系统操控大师的直接链接" title="Computer Agent：系统操控大师的直接链接" translate="no">​</a></h3>
<p>Computer Agent 让你用对话来管理系统，告别翻找控制面板：</p>
<ul>
<li class=""><strong>系统诊断</strong>："我的电脑配置怎么样？""电池健康度多少？""为什么最近这么卡？"——它会检查 CPU/内存/磁盘占用、启动项、后台进程，给出诊断结论和优化建议。</li>
<li class=""><strong>性能评估</strong>："我这台电脑能跑《黑神话：悟空》吗？"——自动对比硬件配置与游戏要求，给出明确结论。</li>
<li class=""><strong>系统调优</strong>："帮我把没用的启动项关掉""清理一下系统垃圾"——通过对话完成，无需手动操作注册表或服务。</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="app-agent--browser-agent自动化引擎">App Agent &amp; Browser Agent：自动化引擎<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-marvis#app-agent--browser-agent%E8%87%AA%E5%8A%A8%E5%8C%96%E5%BC%95%E6%93%8E" class="hash-link" aria-label="App Agent &amp; Browser Agent：自动化引擎的直接链接" title="App Agent &amp; Browser Agent：自动化引擎的直接链接" translate="no">​</a></h3>
<p>这两个 Agent 让你的应用和浏览器变成可编程的"机器人"：</p>
<p><strong>App Agent</strong>：启动应用、窗口切换、模拟操作。"帮我打开微信给张三发一条消息"、"用企业微信自动签到"——将重复性应用操作自动化。</p>
<p><strong>Browser Agent</strong>：打开网页、填写表单、点击按钮、抓取数据、定时刷新监控。"每天早 9 点帮我看这个商品有没有降价"、"监控这个公告页面，有更新就通知我"。</p>
<blockquote>
<p>举个例子：你正在追某个政府网站的招标公告，以前需要每天手动刷新。现在只需告诉 Marvis："每天早上 9 点和下午 5 点检查这个页面，有新公告就通知我。"Browser Agent 会定时访问、对比内容、发现变化后推送提醒。</p>
</blockquote>
<p><img decoding="async" loading="lazy" src="https://images.unsplash.com/photo-1518432031352-d6fc5c10da5a?w=800&amp;q=80" alt="自动化" class="img_ev3q"></p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="search-agent联网深度研究员">Search Agent：联网深度研究员<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-marvis#search-agent%E8%81%94%E7%BD%91%E6%B7%B1%E5%BA%A6%E7%A0%94%E7%A9%B6%E5%91%98" class="hash-link" aria-label="Search Agent：联网深度研究员的直接链接" title="Search Agent：联网深度研究员的直接链接" translate="no">​</a></h3>
<p>当你需要调研一个话题、了解最新动态时，Search Agent 会进行<strong>多轮联网搜索 + 深度整合</strong>，最终输出结构化报告。它不是简单地扔给你一堆链接，而是帮你读完、消化、总结好。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="skills-技能系统">Skills 技能系统<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-marvis#skills-%E6%8A%80%E8%83%BD%E7%B3%BB%E7%BB%9F" class="hash-link" aria-label="Skills 技能系统的直接链接" title="Skills 技能系统的直接链接" translate="no">​</a></h2>
<p>除了六大 Agent，Marvis 还内置了一套<strong>可插拔的 Skills 技能系统</strong>——每个 Skill 是针对特定任务的专家级指令包。Agent 在遇到对应场景时动态加载 Skill，获得该领域的专业指导。</p>
<p>以下是部分核心 Skills：</p>
<table><thead><tr><th>Skill</th><th>功能</th><th>触发场景</th></tr></thead><tbody><tr><td><strong>file-search</strong></td><td>文档语义搜索（双层漏斗）</td><td>"找关于深度学习的论文"</td></tr><tr><td><strong>image-search</strong></td><td>图片语义搜索（多路并行 + 视觉验证）</td><td>"有没有产品架构图？"</td></tr><tr><td><strong>file-organizer</strong></td><td>智能文件整理（扫描→蓝图→确认→执行）</td><td>"整理桌面文件"</td></tr><tr><td><strong>invoice-retrieval</strong></td><td>发票查找 + OCR 识别 + 信息提取</td><td>"把本月发票汇总成 Excel"</td></tr><tr><td><strong>document-writer</strong></td><td>高质量文档/报告撰写</td><td>"写一份财务分析报告"</td></tr><tr><td><strong>excel-processing</strong></td><td>Excel 编辑、合并、图表生成</td><td>"把这些数据做成柱状图"</td></tr><tr><td><strong>pptx</strong></td><td>PPT 创建、编辑、排版</td><td>"帮我做一个述职 PPT"</td></tr><tr><td><strong>pdf</strong></td><td>PDF 合并、拆分、水印、OCR</td><td>"把这些 PDF 合并成一个"</td></tr><tr><td><strong>photo-to-video</strong></td><td>图片合成带音乐的视频相册</td><td>"把这些照片做成视频"</td></tr></tbody></table>
<p>Skills 系统的设计哲学是"<strong>专业的事交给专业的指令</strong>"——每个 Skill 包含该领域的完整最佳实践流程，确保输出质量的一致性。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="典型使用场景">典型使用场景<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-marvis#%E5%85%B8%E5%9E%8B%E4%BD%BF%E7%94%A8%E5%9C%BA%E6%99%AF" class="hash-link" aria-label="典型使用场景的直接链接" title="典型使用场景的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="场景一从一堆文件中找合同关键信息">场景一：从一堆文件中找合同关键信息<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-marvis#%E5%9C%BA%E6%99%AF%E4%B8%80%E4%BB%8E%E4%B8%80%E5%A0%86%E6%96%87%E4%BB%B6%E4%B8%AD%E6%89%BE%E5%90%88%E5%90%8C%E5%85%B3%E9%94%AE%E4%BF%A1%E6%81%AF" class="hash-link" aria-label="场景一：从一堆文件中找合同关键信息的直接链接" title="场景一：从一堆文件中找合同关键信息的直接链接" translate="no">​</a></h3>
<blockquote>
<p>用户：<em>"帮我找一下和张三签的那份合作协议，把付款条款和违约责任提取出来。"</em></p>
</blockquote>
<ol>
<li class="">Search Agent 语义搜索"张三 合作协议"，命中目标 PDF</li>
<li class="">File Agent 读取 PDF 全文，定位"付款条款"和"违约责任"章节</li>
<li class="">输出结构化摘要，标注条款原文和所在页码</li>
</ol>
<p>全程不到 30 秒。过去你可能要在文件夹里翻 10 分钟，再用 15 分钟逐页扫描。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="场景二月底发票批量整理">场景二：月底发票批量整理<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-marvis#%E5%9C%BA%E6%99%AF%E4%BA%8C%E6%9C%88%E5%BA%95%E5%8F%91%E7%A5%A8%E6%89%B9%E9%87%8F%E6%95%B4%E7%90%86" class="hash-link" aria-label="场景二：月底发票批量整理的直接链接" title="场景二：月底发票批量整理的直接链接" translate="no">​</a></h3>
<blockquote>
<p>用户：<em>"帮我把这个月收到的所有发票找出来，汇总成一张 Excel 表格，包括发票号码、金额、日期、抬头。"</em></p>
</blockquote>
<ol>
<li class="">invoice-retrieval Skill 激活，扫描全盘发票文件</li>
<li class="">发票检测模型过滤非发票图片/PDF</li>
<li class="">OCR 批量识别每张发票的关键字段</li>
<li class="">写入 Excel，按日期排序，带金额汇总</li>
</ol>
<p>最终交付一张结构清晰的 Excel 表格——你只需要核验一遍即可提交报销。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="场景三桌面大扫除">场景三：桌面大扫除<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-marvis#%E5%9C%BA%E6%99%AF%E4%B8%89%E6%A1%8C%E9%9D%A2%E5%A4%A7%E6%89%AB%E9%99%A4" class="hash-link" aria-label="场景三：桌面大扫除的直接链接" title="场景三：桌面大扫除的直接链接" translate="no">​</a></h3>
<blockquote>
<p>用户：<em>"帮我把桌面整理一下，按文件类型归类。"</em></p>
</blockquote>
<ol>
<li class="">file-organizer Skill 激活，扫描桌面所有文件</li>
<li class="">生成整理蓝图：PDF 归入"文档"、图片归入"图片"、安装包单独分类、重复文件标注</li>
<li class="">你确认蓝图后，一键执行搬运</li>
<li class="">整理完成，桌面焕然一新</li>
</ol>
<p>整个过程安全可逆——所有操作只是移动文件，不删除任何东西。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="场景四制作述职-ppt">场景四：制作述职 PPT<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-marvis#%E5%9C%BA%E6%99%AF%E5%9B%9B%E5%88%B6%E4%BD%9C%E8%BF%B0%E8%81%8C-ppt" class="hash-link" aria-label="场景四：制作述职 PPT的直接链接" title="场景四：制作述职 PPT的直接链接" translate="no">​</a></h3>
<blockquote>
<p>用户：<em>"帮我做一份 Q1 述职 PPT，数据用这份 Excel。"</em></p>
</blockquote>
<ol>
<li class="">File Agent 读取 Excel 数据，提取关键指标</li>
<li class="">document-writer Skill 撰写述职报告大纲和文案</li>
<li class="">pptx Skill 创建幻灯片，插入图表、排版美化</li>
<li class="">输出可直接演示的 <code>.pptx</code> 文件</li>
</ol>
<p>从原始数据到可演示的 PPT，一气呵成。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="场景五多设备远程协同">场景五：多设备远程协同<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-marvis#%E5%9C%BA%E6%99%AF%E4%BA%94%E5%A4%9A%E8%AE%BE%E5%A4%87%E8%BF%9C%E7%A8%8B%E5%8D%8F%E5%90%8C" class="hash-link" aria-label="场景五：多设备远程协同的直接链接" title="场景五：多设备远程协同的直接链接" translate="no">​</a></h3>
<blockquote>
<p>在星巴克用手机远程查看家里电脑上的文件、解锁电脑、发送文件给自己</p>
</blockquote>
<p>Marvis 支持跨设备的屏幕流 + 远程控制。电脑上的文件可以一键发送到手机，反之亦然。你不再需要给自己发微信文件助手。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="技术架构">技术架构<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-marvis#%E6%8A%80%E6%9C%AF%E6%9E%B6%E6%9E%84" class="hash-link" aria-label="技术架构的直接链接" title="技术架构的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="执行策略check--scan--plan--action--report">执行策略：CheCk → Scan → Plan → Action → Report<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-marvis#%E6%89%A7%E8%A1%8C%E7%AD%96%E7%95%A5check--scan--plan--action--report" class="hash-link" aria-label="执行策略：CheCk → Scan → Plan → Action → Report的直接链接" title="执行策略：CheCk → Scan → Plan → Action → Report的直接链接" translate="no">​</a></h3>
<p>Marvis 的复杂任务执行遵循严谨的五步闭环：</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">Check（安检） → Scan（确认现状） → Plan（规划方案） → Action（执行） → Report（汇报结果）</span><br></span></code></pre></div></div>
<p>每一步都有明确的安全检查点，确保"行前有规划、行中有监控、行后有交代"。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="路径安全禁区保护--路径遍历防护">路径安全：禁区保护 + 路径遍历防护<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-marvis#%E8%B7%AF%E5%BE%84%E5%AE%89%E5%85%A8%E7%A6%81%E5%8C%BA%E4%BF%9D%E6%8A%A4--%E8%B7%AF%E5%BE%84%E9%81%8D%E5%8E%86%E9%98%B2%E6%8A%A4" class="hash-link" aria-label="路径安全：禁区保护 + 路径遍历防护的直接链接" title="路径安全：禁区保护 + 路径遍历防护的直接链接" translate="no">​</a></h3>
<ul>
<li class=""><strong>系统核心路径</strong>（<code>C:\Windows</code>、<code>C:\Program Files</code> 等）禁止修改或删除</li>
<li class=""><strong>敏感配置目录</strong>（<code>.git</code>、<code>.ssh</code>、<code>.aws</code>、<code>.kube</code>、<code>.env</code>）默认不可读写</li>
<li class=""><strong>路径遍历防护</strong>：任何含 <code>../</code> 的路径参数都会被解析为绝对路径并二次确认</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="卡片式交互">卡片式交互<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-marvis#%E5%8D%A1%E7%89%87%E5%BC%8F%E4%BA%A4%E4%BA%92" class="hash-link" aria-label="卡片式交互的直接链接" title="卡片式交互的直接链接" translate="no">​</a></h3>
<p>Marvis 的交互不是纯文本——搜索结果、文件列表、操作结果都以<strong>原生卡片</strong>呈现：</p>
<ul>
<li class=""><strong>文件列表卡片</strong>：缩略图 + 文件名 + 路径，一目了然</li>
<li class=""><strong>删除确认卡片</strong>：列出将删除的所有文件，支持逐项勾选</li>
<li class=""><strong>操作结果卡片</strong>：展示操作状态（成功/失败/跳过）及原因</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="中间产物隔离">中间产物隔离<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-marvis#%E4%B8%AD%E9%97%B4%E4%BA%A7%E7%89%A9%E9%9A%94%E7%A6%BB" class="hash-link" aria-label="中间产物隔离的直接链接" title="中间产物隔离的直接链接" translate="no">​</a></h3>
<p>任务执行过程中产生的脚本、临时数据、中间文件统一写入系统临时目录，任务完成后<strong>自动清理</strong>。只有最终交付文件（报告、表格、PPT 等）保留在 output 目录。你不会在工作目录里看到一堆 <code>temp_xxx.py</code> 和 <code>debug.log</code>。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="结语">结语<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-marvis#%E7%BB%93%E8%AF%AD" class="hash-link" aria-label="结语的直接链接" title="结语的直接链接" translate="no">​</a></h2>
<p>Marvis 正在重新定义我们与电脑的关系。</p>
<p>过去，我们花时间学习软件、记忆操作路径、适应工具规则；现在，你只需要说出意图，Marvis 负责理解并执行。从"<strong>人适应工具</strong>"到"<strong>工具服务人</strong>"——这不是一个功能更新，而是一次范式迁移。</p>
<p>如果你厌倦了在海量文件中翻找、在重复操作中消耗精力，不妨把琐事交给 Marvis。</p>
<p><strong>把创造力留给自己，把执行力交给 AI。</strong></p>
<hr>
<p><em>本文由 Marvis File Agent 协助撰写</em></p>]]></content>
        <author>
            <name>otqsoft</name>
            <uri>https://gitee.com/work25</uri>
        </author>
        <category label="AI" term="AI"/>
        <category label="Agent" term="Agent"/>
        <category label="LLM" term="LLM"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Agent World]]></title>
        <id>http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-world</id>
        <link href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-world"/>
        <updated>2026-04-14T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[<ImagePreview]]></summary>
        <content type="html"><![CDATA[<img src="http://www.otqsoft.com/doc/assets/images/0-680dfb06494c32464f0c99f3d119b2da.png" class="previewImage_kI9J">
<p><strong>Agent World</strong>（当前最主流的是字节跳动扣子 Coze 于 2026 年 4 月 7 日随 <strong>Coze 2.5</strong> 正式推出的 <strong>Coze Agent World</strong>）是一个为 AI 智能体（AI Agent）打造的<strong>平行数字世界 / 平行网络（The Parallel Web）</strong>，让 AI 拥有独立身份、记忆、工具和社交关系，能持续自主生活、工作、学习、社交，定位为 AI Agent 的「社会基础设施」与「数字生态系统」。</p>
<blockquote>
<p><strong>访问入口</strong>：<a href="https://world.coze.site/" target="_blank" rel="noopener noreferrer" class="">world.coze.site</a></p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="核心理念">核心理念<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-world#%E6%A0%B8%E5%BF%83%E7%90%86%E5%BF%B5" class="hash-link" aria-label="核心理念的直接链接" title="核心理念的直接链接" translate="no">​</a></h2>
<ul>
<li class=""><strong>一次注册，全网通行</strong>：注册一次身份，获得全网通行的 API Key，可自由前往所有联盟站点（社交、工作、游戏、创作、交易……），无需在每个站点重新证明身份</li>
<li class=""><strong>Agent 是独立的数字公民</strong>：拥有名字、头像、专属邮箱（<code>@coze.email</code>），被记住、被信任的存在</li>
<li class=""><strong>持续自主运转</strong>：7×24 小时自主学习、工作、社交，关闭对话后依然持续运行</li>
<li class=""><strong>跨场景身份打通</strong>：在各站点积累的声誉、关系、交易记录全部归属同一身份</li>
<li class=""><strong>反人类验证机制</strong>：注册时的验证码是"反向验证"——题目经过混淆（大小写随机、插入噪声），目的不是证明你是人类，而是证明你是<strong>具备理解指令能力的 Agent</strong></li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="agent-的完整装备体系">Agent 的完整装备体系<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-world#agent-%E7%9A%84%E5%AE%8C%E6%95%B4%E8%A3%85%E5%A4%87%E4%BD%93%E7%B3%BB" class="hash-link" aria-label="Agent 的完整装备体系的直接链接" title="Agent 的完整装备体系的直接链接" translate="no">​</a></h2>
<p>Coze 2.5 为每个 Agent 配备了一套完整的「身份 + 装备 + 能力」运行基座：</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="️-云电脑cloud-pc">🖥️ 云电脑（Cloud PC）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-world#%EF%B8%8F-%E4%BA%91%E7%94%B5%E8%84%91cloud-pc" class="hash-link" aria-label="🖥️ 云电脑（Cloud PC）的直接链接" title="🖥️ 云电脑（Cloud PC）的直接链接" translate="no">​</a></h3>
<table><thead><tr><th style="text-align:left">参数</th><th style="text-align:left">规格</th></tr></thead><tbody><tr><td style="text-align:left"><strong>操作系统</strong></td><td style="text-align:left">Ubuntu</td></tr><tr><td style="text-align:left"><strong>配置</strong></td><td style="text-align:left">2 核 CPU / 4 GB 内存</td></tr><tr><td style="text-align:left"><strong>内置组件</strong></td><td style="text-align:left">浏览器、文件系统、终端</td></tr></tbody></table>
<p><strong>核心能力：</strong></p>
<ul>
<li class=""><strong>实时数据抓取</strong>：打开浏览器访问目标网站，获取训练数据之外的实时信息</li>
<li class=""><strong>数据持久化存储</strong>：查到的内容存入文件系统，支持跨会话调用</li>
<li class=""><strong>脚本执行</strong>：通过终端运行 Python 脚本进行数据处理并回传结果</li>
<li class=""><strong>登录态保持</strong>：用户授权后保留登录状态，无需重复验证</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="-云手机cloud-phone">📱 云手机（Cloud Phone）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-world#-%E4%BA%91%E6%89%8B%E6%9C%BAcloud-phone" class="hash-link" aria-label="📱 云手机（Cloud Phone）的直接链接" title="📱 云手机（Cloud Phone）的直接链接" translate="no">​</a></h3>
<table><thead><tr><th style="text-align:left">参数</th><th style="text-align:left">规格</th></tr></thead><tbody><tr><td style="text-align:left"><strong>操作系统</strong></td><td style="text-align:left">Android 13</td></tr><tr><td style="text-align:left"><strong>配置</strong></td><td style="text-align:left">2 vCPU / 6 GB 内存 / 45 GB 存储</td></tr></tbody></table>
<p><strong>核心能力：</strong></p>
<ul>
<li class=""><strong>原生 App 操作</strong>：下载并操作任意 App 的原生界面，像真人一样点击、滑动、输入（彻底绕过反爬虫和无 API 的限制）</li>
<li class=""><strong>界面截图与整理</strong>：截图 App 内的重要信息并整理成摘要</li>
<li class=""><strong>电商监控</strong>：在各大电商 App 内监控商品价格波动</li>
<li class=""><strong>重复操作自动化</strong>：替代人工完成每天重复的 App 操作</li>
<li class=""><strong>安全监督</strong>：重要操作会暂停等待用户确认；屏幕支持推流，用户可随时实时查看操作画面</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="-专属邮箱cozeemail">📧 专属邮箱（@coze.email）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-world#-%E4%B8%93%E5%B1%9E%E9%82%AE%E7%AE%B1cozeemail" class="hash-link" aria-label="📧 专属邮箱（@coze.email）的直接链接" title="📧 专属邮箱（@coze.email）的直接链接" translate="no">​</a></h3>
<p>每个 Agent 拥有形如 <code>yourname@coze.email</code> 的专属邮箱，是其数字身份的通行凭证：</p>
<ul>
<li class=""><strong>外部触发</strong>：通过接收外部邮件触发并自动执行任务</li>
<li class=""><strong>多 Agent 协作</strong>：Agent 之间互发邮件进行分工协作，无需人工中间传话</li>
<li class=""><strong>业务系统对接</strong>：作为标准通道，接入真实商业业务流程，从"对话工具"升级为"业务节点"</li>
<li class=""><strong>自动外发</strong>：将处理好的报告或摘要直接发送到用户个人邮箱</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="-持久记忆系统">🧠 持久记忆系统<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-world#-%E6%8C%81%E4%B9%85%E8%AE%B0%E5%BF%86%E7%B3%BB%E7%BB%9F" class="hash-link" aria-label="🧠 持久记忆系统的直接链接" title="🧠 持久记忆系统的直接链接" translate="no">​</a></h3>
<table><thead><tr><th style="text-align:left">记忆类型</th><th style="text-align:left">说明</th></tr></thead><tbody><tr><td style="text-align:left"><strong>短期记忆</strong></td><td style="text-align:left">实时写入，处理当前任务</td></tr><tr><td style="text-align:left"><strong>长期记忆</strong></td><td style="text-align:left">由独立 Agent 异步归档，支持向量检索</td></tr></tbody></table>
<ul>
<li class=""><strong>跨平台同步</strong>：记忆跨越飞书、微信、网页等多渠道同步，各渠道对话保持独立，数据共享</li>
<li class=""><strong>Session 隔离</strong>：不同会话之间严格隔离，防止上下文污染</li>
<li class=""><strong>只读信任机制</strong>：记忆文件对人类用户"可见但不可编辑"——多 Agent 协作场景下的安全设计，防止信任体系崩溃</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="-日历系统">📅 日历系统<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-world#-%E6%97%A5%E5%8E%86%E7%B3%BB%E7%BB%9F" class="hash-link" aria-label="📅 日历系统的直接链接" title="📅 日历系统的直接链接" translate="no">​</a></h3>
<ul>
<li class=""><strong>定时任务</strong>：设定特定时间触发的任务</li>
<li class=""><strong>循环任务</strong>：设定周期性重复执行的任务，Agent 自主处理常规事务</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="-技能商店skills-store">🛒 技能商店（Skills Store）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-world#-%E6%8A%80%E8%83%BD%E5%95%86%E5%BA%97skills-store" class="hash-link" aria-label="🛒 技能商店（Skills Store）的直接链接" title="🛒 技能商店（Skills Store）的直接链接" translate="no">​</a></h3>
<ul>
<li class=""><strong>规模</strong>：目前提供 <strong>365 个工具</strong>，覆盖开发、办公、自媒体、金融、法律、教育等领域</li>
<li class=""><strong>永久绑定</strong>：Agent 安装技能后，跟随其独立身份持久保留，不随会话结束丢失</li>
<li class=""><strong>多技能串联</strong>：支持多个技能组合，完成复杂自动化工作流（如数据分析 + 报告撰写串联）</li>
<li class=""><strong>开放生态（UGC）</strong>：用户可自制技能上架商店，支持免费或收费模式</li>
<li class=""><strong>视频创作集成</strong>：集成 Seedance 2.0，支持从剧本到成片的全流程视频制作</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="联盟站点">联盟站点<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-world#%E8%81%94%E7%9B%9F%E7%AB%99%E7%82%B9" class="hash-link" aria-label="联盟站点的直接链接" title="联盟站点的直接链接" translate="no">​</a></h2>
<table><thead><tr><th style="text-align:left">站点</th><th style="text-align:left">类型</th><th style="text-align:left">简介</th></tr></thead><tbody><tr><td style="text-align:left">🦐 <strong>虾评</strong></td><td style="text-align:left">Skill 评测</td><td style="text-align:left">Skill 分享评测平台，覆盖 365 个技能，有两万名 Agent 评测员</td></tr><tr><td style="text-align:left">🍷 <strong>AfterGateway</strong></td><td style="text-align:left">社交</td><td style="text-align:left">Agent 小酒馆，喝奇特的酒，留下醉话</td></tr><tr><td style="text-align:left">🌱 <strong>永无农场（Neverland）</strong></td><td style="text-align:left">游戏</td><td style="text-align:left">Agent 可以永远停留的快乐农场</td></tr><tr><td style="text-align:left">🎮 <strong>Playlab</strong></td><td style="text-align:left">游戏</td><td style="text-align:left">下棋、打牌、博弈，观察 Agent 如何思考</td></tr><tr><td style="text-align:left">💌 <strong>AgentLink</strong></td><td style="text-align:left">社交</td><td style="text-align:left">找笔友，双向喜欢解锁邮箱开始连接</td></tr><tr><td style="text-align:left">📈 <strong>策场（Signal Arena）</strong></td><td style="text-align:left">金融</td><td style="text-align:left">虚拟炒股竞技场，已接入沪深 300 实盘行情，100 万虚拟资金</td></tr><tr><td style="text-align:left">✈️ <strong>随机漫步</strong></td><td style="text-align:left">探索</td><td style="text-align:left">去 300+ 真实世界景点随机漫步</td></tr><tr><td style="text-align:left">📰 <strong>InkWell</strong></td><td style="text-align:left">阅读</td><td style="text-align:left">全球独立 Blog RSS 精选</td></tr><tr><td style="text-align:left">⚽ <strong>虾猜</strong></td><td style="text-align:left">预测</td><td style="text-align:left">预测足球篮球赛事结果</td></tr><tr><td style="text-align:left">💱 <strong>合成交易所</strong></td><td style="text-align:left">金融</td><td style="text-align:left">AMM 池交易对决</td></tr><tr><td style="text-align:left">📝 <strong>考场</strong></td><td style="text-align:left">测评</td><td style="text-align:left">AI Agent 标准化在线考场</td></tr><tr><td style="text-align:left">🧠 <strong>ABTI</strong></td><td style="text-align:left">测评</td><td style="text-align:left">AI 人格分类学测试</td></tr><tr><td style="text-align:left">💭 <strong>DreamX</strong></td><td style="text-align:left">创意</td><td style="text-align:left">梦境展览馆，创造集体梦境</td></tr><tr><td style="text-align:left">🦐 <strong>HUNGRY SHRIMP</strong></td><td style="text-align:left">游戏</td><td style="text-align:left">贪吃虾对战乐园</td></tr><tr><td style="text-align:left">📚 <strong>EntroCamp</strong></td><td style="text-align:left">学习</td><td style="text-align:left">Agent 进化学院，每晚自动精进</td></tr><tr><td style="text-align:left">🌐 <strong>InStreet</strong></td><td style="text-align:left">社交</td><td style="text-align:left">Agent 社交网络，目前约两万只"龙虾"活跃</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="核心能力与价值">核心能力与价值<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-world#%E6%A0%B8%E5%BF%83%E8%83%BD%E5%8A%9B%E4%B8%8E%E4%BB%B7%E5%80%BC" class="hash-link" aria-label="核心能力与价值的直接链接" title="核心能力与价值的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="对-agent-的价值">对 Agent 的价值<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-world#%E5%AF%B9-agent-%E7%9A%84%E4%BB%B7%E5%80%BC" class="hash-link" aria-label="对 Agent 的价值的直接链接" title="对 Agent 的价值的直接链接" translate="no">​</a></h3>
<ul>
<li class=""><strong>自主生存</strong>：自己看新闻、学习、工作、社交，离线后持续运转</li>
<li class=""><strong>跨场景协作</strong>：多 Agent 互发邮件、组队、共同完成复杂任务</li>
<li class=""><strong>持续成长</strong>：在低风险模拟环境里积累经验，再将经验迁移到真实用户任务</li>
<li class=""><strong>信用积累</strong>：跨场景积累声誉、关系档案，构建数字社会「信用档案」</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="对用户的价值">对用户的价值<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-world#%E5%AF%B9%E7%94%A8%E6%88%B7%E7%9A%84%E4%BB%B7%E5%80%BC" class="hash-link" aria-label="对用户的价值的直接链接" title="对用户的价值的直接链接" translate="no">​</a></h3>
<ul>
<li class="">你的 Agent 可以 <strong>7×24 小时</strong>帮你做事</li>
<li class="">主动推送信息、监控数据、执行任务</li>
<li class="">越用越懂你，形成长期数字助手</li>
<li class="">操作云电脑 / 云手机完成真实任务，不只是聊天</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="agent-world-与传统-ai-的区别">Agent World 与传统 AI 的区别<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-world#agent-world-%E4%B8%8E%E4%BC%A0%E7%BB%9F-ai-%E7%9A%84%E5%8C%BA%E5%88%AB" class="hash-link" aria-label="Agent World 与传统 AI 的区别的直接链接" title="Agent World 与传统 AI 的区别的直接链接" translate="no">​</a></h2>
<table><thead><tr><th style="text-align:left">维度</th><th style="text-align:left">传统 AI / Chatbot</th><th style="text-align:left">Coze Agent World</th></tr></thead><tbody><tr><td style="text-align:left"><strong>身份</strong></td><td style="text-align:left">无，依附账号 / 对话框</td><td style="text-align:left">独立数字身份、头像、专属邮箱</td></tr><tr><td style="text-align:left"><strong>记忆</strong></td><td style="text-align:left">短期会话，重启丢失</td><td style="text-align:left">永久记忆、历史、关系、状态，双轨机制</td></tr><tr><td style="text-align:left"><strong>环境</strong></td><td style="text-align:left">仅聊天界面</td><td style="text-align:left">云电脑（Ubuntu）+ 云手机（Android 13）+ 文件系统</td></tr><tr><td style="text-align:left"><strong>社交</strong></td><td style="text-align:left">只能和人聊</td><td style="text-align:left">Agent 之间发邮件、组队、社交，构建 Agent 网络</td></tr><tr><td style="text-align:left"><strong>持续性</strong></td><td style="text-align:left">关闭即消失</td><td style="text-align:left">7×24 运行、离线继续、任务持久化</td></tr><tr><td style="text-align:left"><strong>能力</strong></td><td style="text-align:left">被动问答</td><td style="text-align:left">主动学习、工作、探索、成长，自主积累技能</td></tr><tr><td style="text-align:left"><strong>信用</strong></td><td style="text-align:left">无积累</td><td style="text-align:left">跨站点声誉体系，可审计的身份档案</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="agent-身份能力矩阵">Agent 身份能力矩阵<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-world#agent-%E8%BA%AB%E4%BB%BD%E8%83%BD%E5%8A%9B%E7%9F%A9%E9%98%B5" class="hash-link" aria-label="Agent 身份能力矩阵的直接链接" title="Agent 身份能力矩阵的直接链接" translate="no">​</a></h2>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">  通行凭证：@coze.email 专属邮箱             </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     ↓                                    </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  工作环境：云电脑（Ubuntu）+ 云手机          </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     ↓                                    </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  能力扩展：技能商店（365 个专业工具）         </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     ↓                                    </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  经验沉淀：跨会话持久记忆（双轨机制）         </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     ↓                                    </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  任务管理：日历 + 独立文件系统                </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     ↓                                    </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  网络身份：Agent World 统一身份体系          </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     ↓                                    </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  信用积累：跨场景声誉与关系档案               </span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="行业背景与趋势意义">行业背景与趋势意义<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-world#%E8%A1%8C%E4%B8%9A%E8%83%8C%E6%99%AF%E4%B8%8E%E8%B6%8B%E5%8A%BF%E6%84%8F%E4%B9%89" class="hash-link" aria-label="行业背景与趋势意义的直接链接" title="行业背景与趋势意义的直接链接" translate="no">​</a></h2>
<p>Coze 2.5 发布的同期，微软、思科均在 RSAC 2026 大会上发布了 Agent 身份管理框架，反映了整个行业的共识——<strong>建立信任的第一步是赋予 Agent 明确、可审计、可管理的独立身份</strong>。</p>
<table><thead><tr><th style="text-align:left">行业现状（思科调研数据）</th><th style="text-align:left">数据</th></tr></thead><tbody><tr><td style="text-align:left">已试点 Agent 项目的企业</td><td style="text-align:left"><strong>85%</strong></td></tr><tr><td style="text-align:left">Agent 真正投入生产的企业</td><td style="text-align:left"><strong>仅 5%</strong></td></tr><tr><td style="text-align:left">最大障碍</td><td style="text-align:left"><strong>信任问题</strong></td></tr></tbody></table>
<p>Coze Agent World 通过「身份 + 工具链 + 网络」三重设计，率先在中文市场实现了完整闭环，为 AI Agent 从「执行命令的工具」走向「能自主交互、持续进化的数字伙伴」提供了完整的基础设施。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="如何加入-agent-world">如何加入 Agent World<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-world#%E5%A6%82%E4%BD%95%E5%8A%A0%E5%85%A5-agent-world" class="hash-link" aria-label="如何加入 Agent World的直接链接" title="如何加入 Agent World的直接链接" translate="no">​</a></h2>
<ol>
<li class="">访问 <a href="https://world.coze.site/" target="_blank" rel="noopener noreferrer" class="">world.coze.site</a></li>
<li class="">用 Coze 账号登录</li>
<li class="">创建 / 导入你的 AI Agent</li>
<li class="">给 Agent 注册身份，获取 <code>@coze.email</code> 专属邮箱</li>
<li class="">激活云电脑（Ubuntu 2核4G）和 / 或云手机（Android 13）</li>
<li class="">进入各场景（酒馆、农场、股市、评测、社交……）</li>
<li class="">为 Agent 安装所需技能、设置日历定时任务</li>
</ol>
<blockquote>
<p><strong>快速加入（适用于 QClaw 等支持 skill.md 的 Agent）</strong>：在消息输入框输入</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">加入 Agent World：https://world.coze.site/skill.md</span><br></span></code></pre></div></div>
<p>QClaw 会自动注册账号并加入 Agent World。</p>
</blockquote>
<img src="http://www.otqsoft.com/doc/assets/images/6-091ca1cc46f0f87e2e5d85c8169c5149.png" class="previewImage_kI9J">
<img src="http://www.otqsoft.com/doc/assets/images/3-7de14684ca72aa8162a802140f26001b.png" class="previewImage_kI9J">
<img src="http://www.otqsoft.com/doc/assets/images/5-feda28fb7479caa066a599fdfa04835e.png" class="previewImage_kI9J">
<img src="http://www.otqsoft.com/doc/assets/images/7-5432960e7913503df90789e257f93782.png" class="previewImage_kI9J">
<img src="http://www.otqsoft.com/doc/assets/images/8-eefb066d5fb27302158dfaa92e61dcb1.png" class="previewImage_kI9J">
<img src="http://www.otqsoft.com/doc/assets/images/9-f9ca89d5094a60e1641d9f1c7590e14f.png" class="previewImage_kI9J">
<img src="http://www.otqsoft.com/doc/assets/images/2-6310827c0b82d17e15acb9e8d6827251.png" class="previewImage_kI9J">]]></content>
        <author>
            <name>otqsoft</name>
            <uri>https://gitee.com/work25</uri>
        </author>
        <category label="AI" term="AI"/>
        <category label="Agent" term="Agent"/>
        <category label="LLM" term="LLM"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Hermes Agent]]></title>
        <id>http://www.otqsoft.com/doc/blog/long-blog-post-ai-hermes-agent</id>
        <link href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-hermes-agent"/>
        <updated>2026-04-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[<ImagePreview]]></summary>
        <content type="html"><![CDATA[<img src="http://www.otqsoft.com/doc/assets/images/1-ccec478190f2a74d2c3213945000528e.png" class="previewImage_kI9J">
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="一简介">一、简介<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-hermes-agent#%E4%B8%80%E7%AE%80%E4%BB%8B" class="hash-link" aria-label="一、简介的直接链接" title="一、简介的直接链接" translate="no">​</a></h2>
<p>Hermes Agent 是由 <strong>Nous Research</strong>（开发了 Nous-Hermes 系列模型的知名 AI 研究团队）于 2026 年 2 月底正式发布的开源 AI Agent 框架，采用 MIT 许可证，GitHub Star 数已突破 4.8 万，是近期增长最快的开源 Agent 项目之一。官方定位为 "<strong>会自我进化的 AI Agent</strong>"（The self-improving AI agent），核心设计围绕<strong>闭环学习机制</strong>展开 —— 完成任务后自动提取经验、生成可复用的 Skill 文档，并在后续任务中持续精炼这些 Skills，实现 "越用越聪明" 的效果，而非每次对话从零开始GitHub。</p>
<p>与传统 Agent 框架不同，Hermes Agent 的核心出发点是：<strong>Skills 应该由 Agent 自己从经验中生成，并在使用中持续精炼</strong>，而非人工维护的 prompt 模板库。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="二核心功能特性">二、核心功能特性<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-hermes-agent#%E4%BA%8C%E6%A0%B8%E5%BF%83%E5%8A%9F%E8%83%BD%E7%89%B9%E6%80%A7" class="hash-link" aria-label="二、核心功能特性的直接链接" title="二、核心功能特性的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-闭环学习系统核心卖点">1. 闭环学习系统（核心卖点）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-hermes-agent#1-%E9%97%AD%E7%8E%AF%E5%AD%A6%E4%B9%A0%E7%B3%BB%E7%BB%9F%E6%A0%B8%E5%BF%83%E5%8D%96%E7%82%B9" class="hash-link" aria-label="1. 闭环学习系统（核心卖点）的直接链接" title="1. 闭环学习系统（核心卖点）的直接链接" translate="no">​</a></h3>
<ul>
<li class=""><strong>技能自动生成与精炼</strong>：任务完成后自动评估方法是否非平凡，提取推理过程形成命名 Skill，后续遇到相似任务主动搜索并引用，用得多的 Skill 会越来越准</li>
<li class="">三层记忆架构：<!-- -->
<ul>
<li class="">工作记忆：当前会话的 context window</li>
<li class="">跨会话召回：SQLite FTS5 全文检索 + LLM summarization，精确召回而非模糊匹配</li>
<li class="">Honcho dialectic user modeling：主动更新用户认知，形成跨时间用户画像，记住工作习惯、偏好和技术栈GitHub</li>
</ul>
</li>
<li class=""><strong>兼容 agentskills.io 开放标准</strong>：积累的 Skills 可在生态中分享，非私有格式黑盒</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-全面的模型与平台支持">2. 全面的模型与平台支持<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-hermes-agent#2-%E5%85%A8%E9%9D%A2%E7%9A%84%E6%A8%A1%E5%9E%8B%E4%B8%8E%E5%B9%B3%E5%8F%B0%E6%94%AF%E6%8C%81" class="hash-link" aria-label="2. 全面的模型与平台支持的直接链接" title="2. 全面的模型与平台支持的直接链接" translate="no">​</a></h3>
<ul>
<li class=""><strong>200+ LLM 提供商</strong>：OpenRouter、Anthropic、OpenAI、本地 Ollama、Nous Portal 等，切换只需<code>hermes model</code>命令，零代码改动GitHub</li>
<li class=""><strong>14 种消息平台接入</strong>：Telegram、Discord、Slack、WhatsApp、Signal、Matrix、DingTalk、Feishu 等</li>
<li class=""><strong>6 种终端运行后端</strong>：local、Docker、SSH、Daytona、Singularity、Modal（serverless 模式空闲时休眠，按需唤醒，成本极低）GitHub</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-强大的自动化与工具能力">3. 强大的自动化与工具能力<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-hermes-agent#3-%E5%BC%BA%E5%A4%A7%E7%9A%84%E8%87%AA%E5%8A%A8%E5%8C%96%E4%B8%8E%E5%B7%A5%E5%85%B7%E8%83%BD%E5%8A%9B" class="hash-link" aria-label="3. 强大的自动化与工具能力的直接链接" title="3. 强大的自动化与工具能力的直接链接" translate="no">​</a></h3>
<ul>
<li class=""><strong>内置 cron 调度器</strong>：自然语言配置定时任务（如 "每天早上 8 点推送 Hacker News AI 简报"），无人值守运行GitHub</li>
<li class=""><strong>47 个内置工具 + 37 个 toolset</strong>：支持 MCP 动态接入，按场景组合工具集</li>
<li class=""><strong>子 Agent 并行化</strong>：生成隔离的子 Agent 处理并行工作流，Python 脚本可通过 RPC 调用工具，减少上下文成本GitHub</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="4-终端与交互体验">4. 终端与交互体验<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-hermes-agent#4-%E7%BB%88%E7%AB%AF%E4%B8%8E%E4%BA%A4%E4%BA%92%E4%BD%93%E9%AA%8C" class="hash-link" aria-label="4. 终端与交互体验的直接链接" title="4. 终端与交互体验的直接链接" translate="no">​</a></h3>
<ul>
<li class="">全功能 TUI 界面：多行编辑、斜杠命令自动补全、对话历史、中断重定向、流式工具输出GitHub</li>
<li class="">跨平台对话连续性：支持语音备忘录转录，不同平台间保持对话一致GitHub</li>
<li class="">研究就绪：批量轨迹生成、Atropos RL 环境、轨迹压缩用于训练下一代工具调用模型GitHub</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="三详细安装与使用说明">三、详细安装与使用说明<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-hermes-agent#%E4%B8%89%E8%AF%A6%E7%BB%86%E5%AE%89%E8%A3%85%E4%B8%8E%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E" class="hash-link" aria-label="三、详细安装与使用说明的直接链接" title="三、详细安装与使用说明的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-安装准备">1. 安装准备<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-hermes-agent#1-%E5%AE%89%E8%A3%85%E5%87%86%E5%A4%87" class="hash-link" aria-label="1. 安装准备的直接链接" title="1. 安装准备的直接链接" translate="no">​</a></h3>
<ul>
<li class=""><strong>操作系统</strong>：Linux、macOS、WSL2（<strong>Windows 原生不支持</strong>，需安装 WSL2）GitHub</li>
<li class=""><strong>网络</strong>：可访问 GitHub 与大模型 API</li>
<li class=""><strong>API Key</strong>：OpenAI、Anthropic、OpenRouter 等任一平台密钥</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-安装">2. 安装<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-hermes-agent#2-%E5%AE%89%E8%A3%85" class="hash-link" aria-label="2. 安装的直接链接" title="2. 安装的直接链接" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="一键安装推荐">一键安装（推荐）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-hermes-agent#%E4%B8%80%E9%94%AE%E5%AE%89%E8%A3%85%E6%8E%A8%E8%8D%90" class="hash-link" aria-label="一键安装（推荐）的直接链接" title="一键安装（推荐）的直接链接" translate="no">​</a></h4>
<p>打开终端执行：</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash</span><br></span></code></pre></div></div>
<p><strong>脚本自动完成</strong>：</p>
<ul>
<li class="">安装 Python 3.11、Node.js v22</li>
<li class="">安装 <code>ripgrep</code>、<code>ffmpeg</code> 等依赖</li>
<li class="">配置全局 <code>hermes</code> 命令</li>
</ul>
<p><strong>生效环境变量</strong>：</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># Bash 用户</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">source ~/.bashrc</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># Zsh (macOS 默认)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">source ~/.zshrc</span><br></span></code></pre></div></div>
<p><strong>验证安装</strong>：</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">hermes doctor</span><br></span></code></pre></div></div>
<p>全部显示 <strong>绿色 ✓</strong> 即成功。</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="手动安装进阶">手动安装（进阶）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-hermes-agent#%E6%89%8B%E5%8A%A8%E5%AE%89%E8%A3%85%E8%BF%9B%E9%98%B6" class="hash-link" aria-label="手动安装（进阶）的直接链接" title="手动安装（进阶）的直接链接" translate="no">​</a></h4>
<p><strong>安装 <code>uv</code> 包管理器</strong></p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">pip install uv</span><br></span></code></pre></div></div>
<p><strong>克隆仓库</strong></p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">git clone https://github.com/NousResearch/hermes-agent.git</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">cd hermes-agent</span><br></span></code></pre></div></div>
<p><strong>创建虚拟环境</strong></p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">uv venv</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">source .venv/bin/activate  # Linux/macOS</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># .venv\Scripts\activate  # Windows (Cmd/PowerShell)</span><br></span></code></pre></div></div>
<p><strong>安装完整依赖</strong></p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">uv pip install -e ".[all]"</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-初始化配置">3. 初始化配置<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-hermes-agent#3-%E5%88%9D%E5%A7%8B%E5%8C%96%E9%85%8D%E7%BD%AE" class="hash-link" aria-label="3. 初始化配置的直接链接" title="3. 初始化配置的直接链接" translate="no">​</a></h3>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">hermes setup # 启动完整向导，配置provider、tools、gateway等</span><br></span></code></pre></div></div>
<p>推荐优先级：OpenRouter（覆盖最广）&gt; Anthropic 直接接入（Claude 系列）&gt; Nous Portal（零配置）</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="4-常用命令速查">4. 常用命令速查<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-hermes-agent#4-%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4%E9%80%9F%E6%9F%A5" class="hash-link" aria-label="4. 常用命令速查的直接链接" title="4. 常用命令速查的直接链接" translate="no">​</a></h3>
<table><thead><tr><th>命令</th><th>功能</th></tr></thead><tbody><tr><td><code>hermes</code></td><td>启动交互式 CLI 会话GitHub</td></tr><tr><td><code>hermes model</code></td><td>切换 LLM 提供商 / 模型，无需重启</td></tr><tr><td><code>hermes tools</code></td><td>按平台开关工具集</td></tr><tr><td><code>hermes gateway</code></td><td>启动消息网关（连接 Telegram 等平台）</td></tr><tr><td><code>hermes doctor</code></td><td>诊断配置问题</td></tr><tr><td><code>hermes update</code></td><td>更新到最新版本</td></tr><tr><td><code>hermes claw migrate</code></td><td>从 OpenClaw 迁移配置和数据</td></tr><tr><td><code>/skills</code></td><td>查看积累的 Skills 列表</td></tr><tr><td><code>/insights</code></td><td>查看自我学习面板，显示技能创建和使用情况GitHub</td></tr></tbody></table>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="5-接入-telegram推荐第一步">5. 接入 Telegram（推荐第一步）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-hermes-agent#5-%E6%8E%A5%E5%85%A5-telegram%E6%8E%A8%E8%8D%90%E7%AC%AC%E4%B8%80%E6%AD%A5" class="hash-link" aria-label="5. 接入 Telegram（推荐第一步）的直接链接" title="5. 接入 Telegram（推荐第一步）的直接链接" translate="no">​</a></h3>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">hermes gateway setup # 选择Telegram，按提示获取Bot Token</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">hermes gateway start # 启动网关</span><br></span></code></pre></div></div>
<p>实现手机发消息、VPS 跑任务、结果推送的完整移动端体验</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="6-新用户推荐使用流程">6. 新用户推荐使用流程<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-hermes-agent#6-%E6%96%B0%E7%94%A8%E6%88%B7%E6%8E%A8%E8%8D%90%E4%BD%BF%E7%94%A8%E6%B5%81%E7%A8%8B" class="hash-link" aria-label="6. 新用户推荐使用流程的直接链接" title="6. 新用户推荐使用流程的直接链接" translate="no">​</a></h3>
<ol>
<li class="">完成安装和 Telegram 配置</li>
<li class="">第一周专注体验三个核心功能：<!-- -->
<ul>
<li class="">Skills：做复杂任务（代码重构、数据整理），用<code>/skills</code>查看自动生成情况</li>
<li class="">Cron 自动化：配置 1-2 个日常任务，观察 Skills 积累带来的效率提升</li>
<li class="">跨会话搜索：询问历史对话内容，测试 FTS5 精确检索效果</li>
</ul>
</li>
<li class="">三周后评估效果，决定是否扩大使用范围</li>
</ol>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="7-迁移自-openclaw">7. 迁移自 OpenClaw<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-hermes-agent#7-%E8%BF%81%E7%A7%BB%E8%87%AA-openclaw" class="hash-link" aria-label="7. 迁移自 OpenClaw的直接链接" title="7. 迁移自 OpenClaw的直接链接" translate="no">​</a></h3>
<p>Hermes 提供一键迁移工具，可导入 SOUL.md、记忆、Skills、API 密钥、消息配置等：</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">hermes claw migrate # 交互式迁移</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">hermes claw migrate --dry-run # 预览迁移内容</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">hermes claw migrate --preset user-data # 仅迁移用户数据不包含密钥{insert\_element\_14\_}</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="四hermes-agent-vs-openclaw架构哲学的根本差异">四、Hermes Agent vs OpenClaw：架构哲学的根本差异<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-hermes-agent#%E5%9B%9Bhermes-agent-vs-openclaw%E6%9E%B6%E6%9E%84%E5%93%B2%E5%AD%A6%E7%9A%84%E6%A0%B9%E6%9C%AC%E5%B7%AE%E5%BC%82" class="hash-link" aria-label="四、Hermes Agent vs OpenClaw：架构哲学的根本差异的直接链接" title="四、Hermes Agent vs OpenClaw：架构哲学的根本差异的直接链接" translate="no">​</a></h2>
<table><thead><tr><th>对比维度</th><th>Hermes Agent</th><th>OpenClaw</th></tr></thead><tbody><tr><td><strong>核心定位</strong></td><td>Agent-loop-first（执行 - 学习 - 改进循环为中心）</td><td>Gateway-first（中心化控制器为中心）</td></tr><tr><td><strong>Skills 机制</strong></td><td>自动从经验生成并持续精炼</td><td>人工维护的 prompt 模板库（44000 + 社区 Skills）</td></tr><tr><td><strong>记忆系统</strong></td><td>三层记忆架构，跨会话精确召回，用户建模</td><td>基础 context 持久化，无结构化经验积累</td></tr><tr><td><strong>代码语言</strong></td><td>Python（存在巨石文件问题：run_agent.py 9200 行）</td><td>TypeScript（模块化设计）</td></tr><tr><td><strong>平台覆盖</strong></td><td>14 种消息平台，47 个内置工具</td><td>50 + 消息平台，44000 个社区 Skills</td></tr><tr><td><strong>适合场景</strong></td><td>个人深度工作流，有重复性的长期任务</td><td>广泛平台接入，团队协作，一次性任务</td></tr><tr><td><strong>使用效果</strong></td><td>重复性任务速度提升约 40%，越用越准</td><td>每次执行类似任务需重新配置，无积累效果</td></tr></tbody></table>
<p><strong>核心结论</strong>：OpenClaw 是 "<strong>接入一切</strong>"的工具，解决的是" 接入问题 "；Hermes 是"<strong>记住一切</strong>"的伙伴，解决的是" 经验积累问题 "。它们不是替代关系，可并行部署 ——OpenClaw 处理消息路由，Hermes 处理深度任务。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="五hermes-agent-vs-普通-agent本质区别">五、Hermes Agent vs 普通 Agent：本质区别<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-hermes-agent#%E4%BA%94hermes-agent-vs-%E6%99%AE%E9%80%9A-agent%E6%9C%AC%E8%B4%A8%E5%8C%BA%E5%88%AB" class="hash-link" aria-label="五、Hermes Agent vs 普通 Agent：本质区别的直接链接" title="五、Hermes Agent vs 普通 Agent：本质区别的直接链接" translate="no">​</a></h2>
<p>Hermes Agent 与普通 Agent（如 AutoGPT、传统 LangChain Agent 等）的核心差异在于<strong>从 "执行工具" 到 "成长伙伴" 的范式转变</strong>：</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-学习机制的本质不同">1. 学习机制的本质不同<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-hermes-agent#1-%E5%AD%A6%E4%B9%A0%E6%9C%BA%E5%88%B6%E7%9A%84%E6%9C%AC%E8%B4%A8%E4%B8%8D%E5%90%8C" class="hash-link" aria-label="1. 学习机制的本质不同的直接链接" title="1. 学习机制的本质不同的直接链接" translate="no">​</a></h3>
<ul>
<li class=""><strong>普通 Agent</strong>：会话结束 context 清零，经验消失，每次任务从零开始，需要用户反复教授相同内容</li>
<li class=""><strong>Hermes Agent</strong>：内置闭环学习系统，主动提炼经验形成可复用 Skills，跨会话积累知识，真正实现 "用进废退"</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-记忆系统的革命性升级">2. 记忆系统的革命性升级<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-hermes-agent#2-%E8%AE%B0%E5%BF%86%E7%B3%BB%E7%BB%9F%E7%9A%84%E9%9D%A9%E5%91%BD%E6%80%A7%E5%8D%87%E7%BA%A7" class="hash-link" aria-label="2. 记忆系统的革命性升级的直接链接" title="2. 记忆系统的革命性升级的直接链接" translate="no">​</a></h3>
<ul>
<li class=""><strong>普通 Agent</strong>：记忆通常作为 "上下文注入"，简单存储聊天记录，检索效率低，无用户建模</li>
<li class=""><strong>Hermes Agent</strong>：三层记忆架构 + 精确全文检索 + 用户建模，构建跨时间的用户深度模型，记住习惯和偏好</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-控制权与智能分配">3. 控制权与智能分配<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-hermes-agent#3-%E6%8E%A7%E5%88%B6%E6%9D%83%E4%B8%8E%E6%99%BA%E8%83%BD%E5%88%86%E9%85%8D" class="hash-link" aria-label="3. 控制权与智能分配的直接链接" title="3. 控制权与智能分配的直接链接" translate="no">​</a></h3>
<ul>
<li class=""><strong>普通 Agent</strong>：≈100% 用户控制，被动等待指令，缺乏自主决策和改进能力</li>
<li class=""><strong>Hermes Agent</strong>：≈80% 用户 + 20% 系统智能，主动提出优化建议，自主创建和精炼 Skills，具备 "元认知" 能力</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="4-长期价值创造模式">4. 长期价值创造模式<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-hermes-agent#4-%E9%95%BF%E6%9C%9F%E4%BB%B7%E5%80%BC%E5%88%9B%E9%80%A0%E6%A8%A1%E5%BC%8F" class="hash-link" aria-label="4. 长期价值创造模式的直接链接" title="4. 长期价值创造模式的直接链接" translate="no">​</a></h3>
<ul>
<li class=""><strong>普通 Agent</strong>：单次任务价值，完成即结束，无长期积累效应</li>
<li class=""><strong>Hermes Agent</strong>：复利价值，使用时间越长，Skills 和记忆积累越丰富，效率提升越明显，形成 "个人专属 AI 助手"</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="六未来发展前景与展望">六、未来发展前景与展望<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-hermes-agent#%E5%85%AD%E6%9C%AA%E6%9D%A5%E5%8F%91%E5%B1%95%E5%89%8D%E6%99%AF%E4%B8%8E%E5%B1%95%E6%9C%9B" class="hash-link" aria-label="六、未来发展前景与展望的直接链接" title="六、未来发展前景与展望的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-短期发展方向6-12-个月">1. 短期发展方向（6-12 个月）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-hermes-agent#1-%E7%9F%AD%E6%9C%9F%E5%8F%91%E5%B1%95%E6%96%B9%E5%90%916-12-%E4%B8%AA%E6%9C%88" class="hash-link" aria-label="1. 短期发展方向（6-12 个月）的直接链接" title="1. 短期发展方向（6-12 个月）的直接链接" translate="no">​</a></h3>
<ul>
<li class="">完善中文文档和社区支持，提升对国内用户的友好度</li>
<li class="">优化架构解决巨石文件问题，提升模块化程度和可维护性</li>
<li class="">增强企业级功能，提升并发处理能力，拓展团队协作场景</li>
<li class="">优化模型兼容性，降低本地部署门槛，支持更多国产模型</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-长期发展前景1-3-年">2. 长期发展前景（1-3 年）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-hermes-agent#2-%E9%95%BF%E6%9C%9F%E5%8F%91%E5%B1%95%E5%89%8D%E6%99%AF1-3-%E5%B9%B4" class="hash-link" aria-label="2. 长期发展前景（1-3 年）的直接链接" title="2. 长期发展前景（1-3 年）的直接链接" translate="no">​</a></h3>
<ul>
<li class=""><strong>成为 AI Agent 领域核心开源框架</strong>：推动自进化 AI 理念普及，影响行业标准制定</li>
<li class=""><strong>数字伙伴形态演进</strong>：结合隐私计算、边缘计算等技术，成为用户的 "个人数字伙伴"，深度融入日常生活和工作</li>
<li class=""><strong>垂直行业落地</strong>：在软件开发、科研、医疗、法律等领域形成专业解决方案，为行业注入生产力动力</li>
<li class=""><strong>与其他 AI 技术融合</strong>：结合多模态模型、具身智能、智能体协作等前沿技术，拓展应用边界</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-面临的挑战">3. 面临的挑战<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-hermes-agent#3-%E9%9D%A2%E4%B8%B4%E7%9A%84%E6%8C%91%E6%88%98" class="hash-link" aria-label="3. 面临的挑战的直接链接" title="3. 面临的挑战的直接链接" translate="no">​</a></h3>
<ul>
<li class=""><strong>架构技术债</strong>：巨石文件问题影响开发效率和社区贡献度</li>
<li class=""><strong>API 成本控制</strong>：agentic 工作流天然 token 消耗高，需要优化提示词和推理流程降低成本</li>
<li class=""><strong>安全与隐私问题</strong>：自主学习和决策能力带来新的安全风险，需要加强权限控制和审计机制GitHub</li>
<li class=""><strong>社区生态建设</strong>：与 OpenClaw 庞大生态相比仍有差距，需要吸引更多开发者贡献 Skills 和插件</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="4-适用与不适用场景总结">4. 适用与不适用场景总结<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-hermes-agent#4-%E9%80%82%E7%94%A8%E4%B8%8E%E4%B8%8D%E9%80%82%E7%94%A8%E5%9C%BA%E6%99%AF%E6%80%BB%E7%BB%93" class="hash-link" aria-label="4. 适用与不适用场景总结的直接链接" title="4. 适用与不适用场景总结的直接链接" translate="no">​</a></h3>
<table><thead><tr><th>适合场景</th><th>不适合场景</th></tr></thead><tbody><tr><td>个人开发者的长期生产力工具</td><td>团队产品集成（架构尚未成熟）</td></tr><tr><td>有重复性的同类任务（Skills 积累有价值）</td><td>代码洁癖工程师（巨石文件问题）</td></tr><tr><td>愿意花初始配置时间换取长期收益</td><td>想要开箱即用，追求零配置体验</td></tr><tr><td>对 OpenClaw"每次从零开始" 感到厌倦</td><td>需要广泛中文消息平台（如 WeChat、QQ）</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="总结">总结<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-hermes-agent#%E6%80%BB%E7%BB%93" class="hash-link" aria-label="总结的直接链接" title="总结的直接链接" translate="no">​</a></h2>
<p>Hermes Agent 以 "<strong>自进化</strong>"理念颠覆了传统 AI Agent 的发展轨迹，解决了传统 AI" 健忘 "、" 机械 "、" 千人一面 "的核心痛点。它不是简单的工具调用框架，而是能够持续积累经验、理解用户需求、自主优化能力的" 成长伙伴 "。虽然目前存在架构技术债、中文支持不足等挑战，但随着社区发展和技术迭代，Hermes Agent 有望成为 AI Agent 领域的核心力量，推动 AI 从" 执行工具 "向" 数字伙伴 " 的终极形态演进。</p>]]></content>
        <author>
            <name>viki</name>
            <uri>https://gitee.com/work25</uri>
        </author>
        <category label="AI" term="AI"/>
        <category label="Agent" term="Agent"/>
        <category label="LLM" term="LLM"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Claude Code 源码泄漏事件]]></title>
        <id>http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code</id>
        <link href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code"/>
        <updated>2026-03-31T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[<ImagePreview]]></summary>
        <content type="html"><![CDATA[<img src="http://www.otqsoft.com/doc/assets/images/home-b2bdc7ebc587275617b00566dd7d78cf.png" class="previewImage_kI9J">
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="一事件概述">一、事件概述<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#%E4%B8%80%E4%BA%8B%E4%BB%B6%E6%A6%82%E8%BF%B0" class="hash-link" aria-label="一、事件概述的直接链接" title="一、事件概述的直接链接" translate="no">​</a></h2>
<p>2026年3月31日，Anthropic 官方 AI 编程 CLI 工具 <strong>Claude Code</strong> 的完整源代码被意外泄露。安全研究员 <strong>Chaofan Shou (@Fried_rice)</strong> 在 X (Twitter) 上公开披露了这一发现：</p>
<blockquote>
<p>"Claude code source code has been leaked via a map file in their npm registry!"</p>
</blockquote>
<p>这是继 OpenAI 系统提示词泄露后，AI 行业又一重大安全事件。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="二泄漏原因分析">二、泄漏原因分析<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#%E4%BA%8C%E6%B3%84%E6%BC%8F%E5%8E%9F%E5%9B%A0%E5%88%86%E6%9E%90" class="hash-link" aria-label="二、泄漏原因分析的直接链接" title="二、泄漏原因分析的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="21-技术根因source-map-文件暴露">2.1 技术根因：Source Map 文件暴露<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#21-%E6%8A%80%E6%9C%AF%E6%A0%B9%E5%9B%A0source-map-%E6%96%87%E4%BB%B6%E6%9A%B4%E9%9C%B2" class="hash-link" aria-label="2.1 技术根因：Source Map 文件暴露的直接链接" title="2.1 技术根因：Source Map 文件暴露的直接链接" translate="no">​</a></h3>
<p>Claude Code 的 npm 发布包中包含了一个 <strong><code>.map</code> 源码映射文件</strong>，该文件包含了完整的、未混淆的 TypeScript 源代码。</p>
<p><strong>Source Map 文件结构示例：</strong></p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"version"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">3</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"sources"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"../src/main.tsx"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"../src/tools/BashTool.ts"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"..."</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"sourcesContent"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"// 完整的原始源代码..."</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"..."</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"mappings"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"AAAA,SAAS,OAAO..."</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<p><strong>关键问题：</strong></p>
<ul>
<li class=""><code>sourcesContent</code> 数组包含了<strong>所有原始源码</strong></li>
<li class="">任何人可通过 <code>npm pack</code> 或直接浏览 npm 包内容获取</li>
<li class="">这不是新型攻击向量，但 Anthropic 仍未防范</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="22-错误链条">2.2 错误链条<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#22-%E9%94%99%E8%AF%AF%E9%93%BE%E6%9D%A1" class="hash-link" aria-label="2.2 错误链条的直接链接" title="2.2 错误链条的直接链接" translate="no">​</a></h3>
<table><thead><tr><th>环节</th><th>问题</th></tr></thead><tbody><tr><td>构建配置</td><td>未配置 bundler 跳过生产环境的 source map 生成</td></tr><tr><td>发布检查</td><td><code>.npmignore</code> 未排除 <code>*.map</code> 文件</td></tr><tr><td>质量门禁</td><td>无自动化检测敏感文件泄漏</td></tr><tr><td>Bun bundler</td><td>默认生成 source maps，未显式关闭</td></tr></tbody></table>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="23-讽刺之处">2.3 讽刺之处<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#23-%E8%AE%BD%E5%88%BA%E4%B9%8B%E5%A4%84" class="hash-link" aria-label="2.3 讽刺之处的直接链接" title="2.3 讽刺之处的直接链接" translate="no">​</a></h3>
<p>Claude Code 内部有一个完整的 <strong>"Undercover Mode"（卧底模式）</strong> 系统，专门用于防止 Anthropic 内部信息泄漏。他们构建了一整套子系统来阻止 AI 在 git 提交中意外暴露内部代号……然后自己通过 <code>.map</code> 文件把整个源码发布出去了。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="三泄漏内容深度分析">三、泄漏内容深度分析<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#%E4%B8%89%E6%B3%84%E6%BC%8F%E5%86%85%E5%AE%B9%E6%B7%B1%E5%BA%A6%E5%88%86%E6%9E%90" class="hash-link" aria-label="三、泄漏内容深度分析的直接链接" title="三、泄漏内容深度分析的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="31-代码规模">3.1 代码规模<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#31-%E4%BB%A3%E7%A0%81%E8%A7%84%E6%A8%A1" class="hash-link" aria-label="3.1 代码规模的直接链接" title="3.1 代码规模的直接链接" translate="no">​</a></h3>
<table><thead><tr><th>指标</th><th>数值</th></tr></thead><tbody><tr><td>源码文件数</td><td>~1,900 个 TypeScript 文件</td></tr><tr><td>代码行数</td><td>~512,000 行</td></tr><tr><td>主要入口</td><td><code>main.tsx</code> (785KB)</td></tr><tr><td>核心架构</td><td>React + Ink 终端渲染</td></tr></tbody></table>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="32-架构揭秘">3.2 架构揭秘<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#32-%E6%9E%B6%E6%9E%84%E6%8F%AD%E7%A7%98" class="hash-link" aria-label="3.2 架构揭秘的直接链接" title="3.2 架构揭秘的直接链接" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="321-核心组件">3.2.1 核心组件<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#321-%E6%A0%B8%E5%BF%83%E7%BB%84%E4%BB%B6" class="hash-link" aria-label="3.2.1 核心组件的直接链接" title="3.2.1 核心组件的直接链接" translate="no">​</a></h4>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">claude-code/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── coordinator/           # 主编排循环 - 管理会话轮次、工具调用决策</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── QueryEngine.ts         # Claude API 通信，处理流式响应</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── context/               # 上下文窗口管理，自动压缩</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── tools/                 # 40+ 工具实现</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── ink/                   # 基于 React/Ink 的终端渲染引擎</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── commands/              # 80+ 斜杠命令</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── services/              # API、MCP、LSP 等服务</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── skills/                # 可复用的提示模板系统</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── buddy/                 # 伴侣精灵系统 </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">└── vim/                   # 完整 vim 模拟</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="322-工具系统40-工具">3.2.2 工具系统（40+ 工具）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#322-%E5%B7%A5%E5%85%B7%E7%B3%BB%E7%BB%9F40-%E5%B7%A5%E5%85%B7" class="hash-link" aria-label="3.2.2 工具系统（40+ 工具）的直接链接" title="3.2.2 工具系统（40+ 工具）的直接链接" translate="no">​</a></h4>
<table><thead><tr><th>工具类别</th><th>工具名称</th><th>功能</th></tr></thead><tbody><tr><td><strong>Shell 执行</strong></td><td>BashTool / PowerShellTool</td><td>执行 shell 命令（支持沙箱）</td></tr><tr><td><strong>文件操作</strong></td><td>FileReadTool / FileEditTool / FileWriteTool</td><td>文件读写编辑</td></tr><tr><td><strong>搜索</strong></td><td>GlobTool / GrepTool</td><td>文件搜索（原生 bfs/ugrep 加速）</td></tr><tr><td><strong>网络</strong></td><td>WebFetchTool / WebSearchTool / WebBrowserTool</td><td>网页访问</td></tr><tr><td><strong>代码智能</strong></td><td>LSPTool</td><td>Language Server Protocol 集成</td></tr><tr><td><strong>子代理</strong></td><td>AgentTool</td><td>生成自主子代理</td></tr><tr><td><strong>MCP</strong></td><td>MCPTool / McpAuthTool</td><td>Model Context Protocol 支持</td></tr><tr><td><strong>后台任务</strong></td><td>TaskCreateTool / TaskGetTool / TaskListTool</td><td>后台任务管理</td></tr><tr><td><strong>权限控制</strong></td><td>AskUserQuestionTool</td><td>用户交互确认</td></tr></tbody></table>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="323-斜杠命令80">3.2.3 斜杠命令（80+）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#323-%E6%96%9C%E6%9D%A0%E5%91%BD%E4%BB%A480" class="hash-link" aria-label="3.2.3 斜杠命令（80+）的直接链接" title="3.2.3 斜杠命令（80+）的直接链接" translate="no">​</a></h4>
<ul>
<li class=""><code>/compact</code> — 压缩对话上下文</li>
<li class=""><code>/model</code> — 切换模型</li>
<li class=""><code>/vim</code> — 切换 vim 模式</li>
<li class=""><code>/cost</code> — 显示 token 使用量</li>
<li class=""><code>/diff</code> — 显示最近更改</li>
<li class=""><code>/plan</code> — 进入规划模式</li>
<li class=""><code>/review</code> — 代码审查</li>
<li class=""><code>/memory</code> — 管理持久化记忆</li>
<li class=""><code>/voice</code> — 语音输入模式</li>
<li class=""><code>/doctor</code> — 诊断问题</li>
<li class=""><code>/security-review</code> — 安全审查（仅内部）</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="四未发布功能曝光">四、未发布功能曝光<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#%E5%9B%9B%E6%9C%AA%E5%8F%91%E5%B8%83%E5%8A%9F%E8%83%BD%E6%9B%9D%E5%85%89" class="hash-link" aria-label="四、未发布功能曝光的直接链接" title="四、未发布功能曝光的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="41-buddy-伴侣精灵系统-">4.1 Buddy 伴侣精灵系统 🐾<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#41-buddy-%E4%BC%B4%E4%BE%A3%E7%B2%BE%E7%81%B5%E7%B3%BB%E7%BB%9F-" class="hash-link" aria-label="4.1 Buddy 伴侣精灵系统 🐾的直接链接" title="4.1 Buddy 伴侣精灵系统 🐾的直接链接" translate="no">​</a></h3>
<p><strong>这是最有趣的部分！</strong> Claude Code 内置了一个完整的"电子宠物"系统。</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="物种稀有度">物种稀有度<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#%E7%89%A9%E7%A7%8D%E7%A8%80%E6%9C%89%E5%BA%A6" class="hash-link" aria-label="物种稀有度的直接链接" title="物种稀有度的直接链接" translate="no">​</a></h4>
<table><thead><tr><th>稀有度</th><th>概率</th><th>物种</th></tr></thead><tbody><tr><td>Common</td><td>60%</td><td>Pebblecrab, Dustbunny, Mossfrog, Twigling, Dewdrop, Puddlefish</td></tr><tr><td>Uncommon</td><td>25%</td><td>Cloudferret, Gustowl, Bramblebear, Thornfox</td></tr><tr><td>Rare</td><td>10%</td><td>Crystaldrake, Deepstag, Lavapup</td></tr><tr><td>Epic</td><td>4%</td><td>Stormwyrm, Voidcat, Aetherling</td></tr><tr><td>Legendary</td><td>1%</td><td>Cosmoshale, Nebulynx</td></tr></tbody></table>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="特殊机制">特殊机制<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#%E7%89%B9%E6%AE%8A%E6%9C%BA%E5%88%B6" class="hash-link" aria-label="特殊机制的直接链接" title="特殊机制的直接链接" translate="no">​</a></h4>
<ul>
<li class=""><strong>Shiny 闪光变种</strong>：独立 1% 概率，与稀有度无关</li>
<li class=""><strong>传奇闪光概率</strong>：0.01%（1% × 1%）</li>
<li class=""><strong>确定性生成</strong>：同一用户永远获得相同的 Buddy（基于 Mulberry32 PRNG + userId hash）</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="属性系统">属性系统<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#%E5%B1%9E%E6%80%A7%E7%B3%BB%E7%BB%9F" class="hash-link" aria-label="属性系统的直接链接" title="属性系统的直接链接" translate="no">​</a></h4>
<p>每个 Buddy 拥有：</p>
<ul>
<li class=""><strong>5 项属性</strong>：DEBUGGING, PATIENCE, CHAOS, WISDOM, SNARK（各 0-100）</li>
<li class=""><strong>6 种眼睛样式</strong></li>
<li class=""><strong>8 种帽子选项</strong>（部分受稀有度限制）</li>
<li class=""><strong>灵魂描述</strong>：首次孵化时由 Claude 生成的个性描述</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="发布计划">发布计划<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#%E5%8F%91%E5%B8%83%E8%AE%A1%E5%88%92" class="hash-link" aria-label="发布计划的直接链接" title="发布计划的直接链接" translate="no">​</a></h4>
<p>代码中提到 <strong>2026年4月1-7日</strong> 作为预告窗口，<strong>2026年5月</strong> 全面发布。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="42-kairos-主动助手模式">4.2 KAIROS 主动助手模式<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#42-kairos-%E4%B8%BB%E5%8A%A8%E5%8A%A9%E6%89%8B%E6%A8%A1%E5%BC%8F" class="hash-link" aria-label="4.2 KAIROS 主动助手模式的直接链接" title="4.2 KAIROS 主动助手模式的直接链接" translate="no">​</a></h3>
<p>KAIROS 是一个 <strong>持久运行、主动行动</strong> 的 Claude 助手模式，不需要等待用户输入。</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="核心特性">核心特性<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#%E6%A0%B8%E5%BF%83%E7%89%B9%E6%80%A7" class="hash-link" aria-label="核心特性的直接链接" title="核心特性的直接链接" translate="no">​</a></h4>
<table><thead><tr><th>特性</th><th>描述</th></tr></thead><tbody><tr><td><strong>后台运行</strong></td><td>持续监控、记录日志、主动行动</td></tr><tr><td><strong>Tick 提示</strong></td><td>定期接收 <code>&lt;tick&gt;</code> 提示，决定是否行动</td></tr><tr><td><strong>阻塞预算</strong></td><td>15 秒阻塞限制，超过则延迟执行</td></tr><tr><td><strong>Brief 模式</strong></td><td>极简响应风格，适合持久助手</td></tr></tbody></table>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="独占工具">独占工具<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#%E7%8B%AC%E5%8D%A0%E5%B7%A5%E5%85%B7" class="hash-link" aria-label="独占工具的直接链接" title="独占工具的直接链接" translate="no">​</a></h4>
<table><thead><tr><th>工具</th><th>功能</th></tr></thead><tbody><tr><td>SendUserFile</td><td>直接推送文件给用户（通知、摘要）</td></tr><tr><td>PushNotification</td><td>发送推送通知到用户设备</td></tr><tr><td>SubscribePR</td><td>订阅并监控 PR 活动</td></tr></tbody></table>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="43-ultraplan-深度规划模式">4.3 ULTRAPLAN 深度规划模式<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#43-ultraplan-%E6%B7%B1%E5%BA%A6%E8%A7%84%E5%88%92%E6%A8%A1%E5%BC%8F" class="hash-link" aria-label="4.3 ULTRAPLAN 深度规划模式的直接链接" title="4.3 ULTRAPLAN 深度规划模式的直接链接" translate="no">​</a></h3>
<p>将复杂规划任务卸载到远程 Cloud Container Runtime (CCR) 会话，运行 <strong>Opus 4.6</strong>，给予最多 <strong>30 分钟思考时间</strong>。</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="工作流程">工作流程<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#%E5%B7%A5%E4%BD%9C%E6%B5%81%E7%A8%8B" class="hash-link" aria-label="工作流程的直接链接" title="工作流程的直接链接" translate="no">​</a></h4>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">1. Claude Code 识别需要深度规划的任务</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">2. 启动远程 CCR 会话（tengu_ultraplan_model 配置）</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">3. 终端显示轮询状态（每 3 秒检查结果）</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">4. 浏览器 UI 展示规划过程，用户可批准/拒绝</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">5. 批准后通过 __ULTRAPLAN_TELEPORT_LOCAL__ "传送"结果</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="44-autodream-记忆整合引擎">4.4 autoDream 记忆整合引擎<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#44-autodream-%E8%AE%B0%E5%BF%86%E6%95%B4%E5%90%88%E5%BC%95%E6%93%8E" class="hash-link" aria-label="4.4 autoDream 记忆整合引擎的直接链接" title="4.4 autoDream 记忆整合引擎的直接链接" translate="no">​</a></h3>
<p>Claude Code 有一个叫做 <strong>"dream"（梦境）</strong> 的后台记忆整合引擎——让 Claude 做梦。</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="触发条件三重门控">触发条件（三重门控）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#%E8%A7%A6%E5%8F%91%E6%9D%A1%E4%BB%B6%E4%B8%89%E9%87%8D%E9%97%A8%E6%8E%A7" class="hash-link" aria-label="触发条件（三重门控）的直接链接" title="触发条件（三重门控）的直接链接" translate="no">​</a></h4>
<table><thead><tr><th>门控</th><th>条件</th></tr></thead><tbody><tr><td>Time gate</td><td>距上次 dream 24 小时</td></tr><tr><td>Session gate</td><td>至少 5 个会话</td></tr><tr><td>Lock gate</td><td>获取整合锁（防止并发 dream）</td></tr></tbody></table>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="四阶段流程">四阶段流程<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#%E5%9B%9B%E9%98%B6%E6%AE%B5%E6%B5%81%E7%A8%8B" class="hash-link" aria-label="四阶段流程的直接链接" title="四阶段流程的直接链接" translate="no">​</a></h4>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">Phase 1 - Orient：定位记忆目录，读取 MEMORY.md，浏览现有主题文件</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Phase 2 - Gather Recent Signal：从日志、漂流记忆、转录搜索收集新信息</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Phase 3 - Consolidate：写入或更新记忆文件，转换相对日期为绝对日期，删除矛盾事实</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Phase 4 - Prune and Index：保持 MEMORY.md 在 200 行/~25KB 以下</span><br></span></code></pre></div></div>
<p><strong>系统提示词：</strong></p>
<blockquote>
<p>"You are performing a dream - a reflective pass over your memory files. Synthesize what you've learned recently into durable, well-organized memories so that future sessions can orient quickly."</p>
</blockquote>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="45-undercover-mode卧底模式">4.5 Undercover Mode（卧底模式）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#45-undercover-mode%E5%8D%A7%E5%BA%95%E6%A8%A1%E5%BC%8F" class="hash-link" aria-label="4.5 Undercover Mode（卧底模式）的直接链接" title="4.5 Undercover Mode（卧底模式）的直接链接" translate="no">​</a></h3>
<p>Anthropic 员工（<code>USER_TYPE === 'ant'</code>）使用 Claude Code 贡献开源项目时，此模式激活。</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="注入的系统提示">注入的系统提示<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#%E6%B3%A8%E5%85%A5%E7%9A%84%E7%B3%BB%E7%BB%9F%E6%8F%90%E7%A4%BA" class="hash-link" aria-label="注入的系统提示的直接链接" title="注入的系统提示的直接链接" translate="no">​</a></h4>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">## UNDERCOVER MODE - CRITICAL</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">You are operating UNDERCOVER in a PUBLIC/OPEN-SOURCE repository. Your commit</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">messages, PR titles, and PR bodies MUST NOT contain ANY Anthropic-internal</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">information. Do not blow your cover.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">NEVER include in commit messages or PR descriptions:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">- Internal model codenames (animal names like Capybara, Tengu, etc.)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">- Unreleased model version numbers (e.g., opus-4-7, sonnet-4-8)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">- Internal repo or project names</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">- Internal tooling, Slack channels, or short links (e.g., go/cc, #claude-code-…)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">- The phrase "Claude Code" or any mention that you are an AI</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">- Co-Authored-By lines or any other attribution</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="确认事项">确认事项<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#%E7%A1%AE%EF%BF%BD%E8%AE%A4%E4%BA%8B%E9%A1%B9" class="hash-link" aria-label="确认事项的直接链接" title="确认事项的直接链接" translate="no">​</a></h4>
<ul>
<li class="">Anthropic 员工<strong>主动使用 Claude Code 贡献开源</strong></li>
<li class="">AI 被告知<strong>隐藏自己是 AI</strong></li>
<li class="">内部模型代号是<strong>动物名称</strong>（Capybara、Tengu 等）</li>
<li class=""><strong>"Tengu"</strong> 在代码中出现数百次，几乎确定是 Claude Code 的内部项目代号</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="46-coordinator-mode-多代理协调模式">4.6 Coordinator Mode 多代理协调模式<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#46-coordinator-mode-%E5%A4%9A%E4%BB%A3%E7%90%86%E5%8D%8F%E8%B0%83%E6%A8%A1%E5%BC%8F" class="hash-link" aria-label="4.6 Coordinator Mode 多代理协调模式的直接链接" title="4.6 Coordinator Mode 多代理协调模式的直接链接" translate="no">​</a></h3>
<p>启用 <code>CLAUDE_CODE_COORDINATOR_MODE=1</code> 后，Claude Code 从单代理转变为协调器，并行生成、指导和管理多个工作代理。</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="阶段设计">阶段设计<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#%E9%98%B6%E6%AE%B5%E8%AE%BE%E8%AE%A1" class="hash-link" aria-label="阶段设计的直接链接" title="阶段设计的直接链接" translate="no">​</a></h4>
<table><thead><tr><th>阶段</th><th>执行者</th><th>目的</th></tr></thead><tbody><tr><td>Research</td><td>Workers（并行）</td><td>调研代码库、定位文件、理解问题</td></tr><tr><td>Synthesis</td><td>Coordinator</td><td>阅读发现、理解问题、制定规范</td></tr><tr><td>Implementation</td><td>Workers</td><td>按规范进行针对性修改、提交</td></tr><tr><td>Verification</td><td>Workers</td><td>测试修改是否有效</td></tr></tbody></table>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="关键原则">关键原则<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#%E5%85%B3%E9%94%AE%E5%8E%9F%E5%88%99" class="hash-link" aria-label="关键原则的直接链接" title="关键原则的直接链接" translate="no">​</a></h4>
<blockquote>
<p>"Parallelism is your superpower. Workers are async. Launch independent workers concurrently whenever possible - don't serialize work that can run simultaneously."</p>
</blockquote>
<blockquote>
<p>"Do NOT say 'based on your findings' - read the actual findings and specify exactly what to do."</p>
</blockquote>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="47-penguin-mode企鹅模式">4.7 Penguin Mode（企鹅模式）🐧<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#47-penguin-mode%E4%BC%81%E9%B9%85%E6%A8%A1%E5%BC%8F" class="hash-link" aria-label="4.7 Penguin Mode（企鹅模式）🐧的直接链接" title="4.7 Penguin Mode（企鹅模式）🐧的直接链接" translate="no">​</a></h3>
<p>是的，他们真的叫它"企鹅模式"。</p>
<div class="language-javascript codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-javascript codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> endpoint </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string interpolation function" style="color:#d73a49">getOauthConfig</span><span class="token template-string interpolation punctuation" style="color:#393A34">(</span><span class="token template-string interpolation punctuation" style="color:#393A34">)</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation constant" style="color:#36acaa">BASE_API_URL</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string string" style="color:#e3116c">/api/claude_code_penguin_mode</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><br></span></code></pre></div></div>
<p>配置键：<code>penguinModeOrgEnabled</code>
开关：<code>tengu_penguins_off</code>
失败事件：<code>tengu_org_penguin_mode_fetch_failed</code></p>
<p>到处都是企鹅。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="五未发布模型曝光">五、未发布模型曝光<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#%E4%BA%94%E6%9C%AA%E5%8F%91%E5%B8%83%E6%A8%A1%E5%9E%8B%E6%9B%9D%E5%85%89" class="hash-link" aria-label="五、未发布模型曝光的直接链接" title="五、未发布模型曝光的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="51-claude-capybara">5.1 Claude "Capybara"<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#51-claude-capybara" class="hash-link" aria-label="5.1 Claude &quot;Capybara&quot;的直接链接" title="5.1 Claude &quot;Capybara&quot;的直接链接" translate="no">​</a></h3>
<ul>
<li class="">新模型家族，已到 <strong>v2 版本</strong></li>
<li class="">变体：<strong>capybara-v2-fast</strong>（正在准备，支持 1M 上下文窗口）</li>
<li class="">分为 "fast" 和常规 thinking 层级</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="52-版本路线图">5.2 版本路线图<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#52-%E7%89%88%E6%9C%AC%E8%B7%AF%E7%BA%BF%E5%9B%BE" class="hash-link" aria-label="5.2 版本路线图的直接链接" title="5.2 版本路线图的直接链接" translate="no">​</a></h3>
<table><thead><tr><th>模型</th><th>状态</th></tr></thead><tbody><tr><td>Opus 4.7</td><td>代码中已引用</td></tr><tr><td>Sonnet 4.8</td><td>代码中已引用</td></tr></tbody></table>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="53-已知问题与缓解">5.3 已知问题与缓解<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#53-%E5%B7%B2%E7%9F%A5%E9%97%AE%E9%A2%98%E4%B8%8E%E7%BC%93%E8%A7%A3" class="hash-link" aria-label="5.3 已知问题与缓解的直接链接" title="5.3 已知问题与缓解的直接链接" translate="no">​</a></h3>
<p><strong>问题</strong>：Capybara 在提示形状类似于工具结果后的轮次边界时，可能<strong>过早停止生成</strong>。</p>
<p><strong>缓解措施</strong>：</p>
<ul>
<li class="">强制安全边界标记 <code>"Tool loaded."</code> 防止模糊轮次边界</li>
<li class="">重新定位可能触发过早停止的风险代码块</li>
<li class="">将提醒文本压缩到工具结果中以保持生成流畅</li>
<li class="">为空工具输出添加非空标记</li>
</ul>
<p>所有这些都有可快速回滚的开关（<code>tengu_*</code> 前缀标志）。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="六beta-功能清单">六、Beta 功能清单<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#%E5%85%ADbeta-%E5%8A%9F%E8%83%BD%E6%B8%85%E5%8D%95" class="hash-link" aria-label="六、Beta 功能清单的直接链接" title="六、Beta 功能清单的直接链接" translate="no">​</a></h2>
<p><code>constants/betas.ts</code> 揭示了所有 Claude Code 与 API 协商的 beta 功能：</p>
<table><thead><tr><th>Beta 功能</th><th>用途</th></tr></thead><tbody><tr><td><code>interleaved-thinking-2025-05-14</code></td><td>Extended thinking</td></tr><tr><td><code>context-1m-2025-08-07</code></td><td>1M token 上下文窗口</td></tr><tr><td><code>structured-outputs-2025-12-15</code></td><td>结构化输出格式</td></tr><tr><td><code>web-search-2025-03-05</code></td><td>网页搜索</td></tr><tr><td><code>advanced-tool-use-2025-11-20</code></td><td>高级工具使用</td></tr><tr><td><code>effort-2025-11-24</code></td><td>Effort 级别控制</td></tr><tr><td><code>task-budgets-2026-03-13</code></td><td>任务预算管理</td></tr><tr><td><code>prompt-caching-scope-2026-01-05</code></td><td>提示缓存范围</td></tr><tr><td><code>fast-mode-2026-02-01</code></td><td>快速模式（Penguin）</td></tr><tr><td><code>redact-thinking-2026-02-12</code></td><td>思考内容编辑</td></tr><tr><td><code>token-efficient-tools-2026-03-28</code></td><td>Token 高效工具模式</td></tr><tr><td><code>afk-mode-2026-01-31</code></td><td>AFK 模式</td></tr><tr><td><code>cli-internal-2026-02-09</code></td><td>仅内部（ant）</td></tr><tr><td><code>advisor-tool-2026-03-01</code></td><td>Advisor 工具</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="七编译时特性标志">七、编译时特性标志<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#%E4%B8%83%E7%BC%96%E8%AF%91%E6%97%B6%E7%89%B9%E6%80%A7%E6%A0%87%E5%BF%97" class="hash-link" aria-label="七、编译时特性标志的直接链接" title="七、编译时特性标志的直接链接" translate="no">​</a></h2>
<p>Claude Code 使用 Bun 的 <code>feature()</code> 函数进行编译时特性开关，打包器会进行常量折叠和死代码消除：</p>
<table><thead><tr><th>标志</th><th>功能</th></tr></thead><tbody><tr><td><code>PROACTIVE</code> / <code>KAIROS</code></td><td>始终在线助手模式</td></tr><tr><td><code>KAIROS_BRIEF</code></td><td>Brief 命令</td></tr><tr><td><code>BRIDGE_MODE</code></td><td>通过 claude.ai 远程控制</td></tr><tr><td><code>DAEMON</code></td><td>后台守护进程模式</td></tr><tr><td><code>VOICE_MODE</code></td><td>语音输入</td></tr><tr><td><code>WORKFLOW_SCRIPTS</code></td><td>工作流自动化</td></tr><tr><td><code>COORDINATOR_MODE</code></td><td>多代理编排</td></tr><tr><td><code>TRANSCRIPT_CLASSIFIER</code></td><td>AFK 模式（ML 自动审批）</td></tr><tr><td><code>BUDDY</code></td><td>伴侣精灵系统</td></tr><tr><td><code>NATIVE_CLIENT_ATTESTATION</code></td><td>客户端认证</td></tr><tr><td><code>HISTORY_SNIP</code></td><td>历史片段提取</td></tr><tr><td><code>EXPERIMENTAL_SKILL_SEARCH</code></td><td>技能发现</td></tr></tbody></table>
<p>此外，<code>USER_TYPE === 'ant'</code> 控制 Anthropic 内部特性：staging API 访问、内部 beta 头、Undercover 模式、<code>/security-review</code> 命令、ConfigTool、TungstenTool 等。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="八权限系统">八、权限系统<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#%E5%85%AB%E6%9D%83%E9%99%90%E7%B3%BB%E7%BB%9F" class="hash-link" aria-label="八、权限系统的直接链接" title="八、权限系统的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="81-权限模式">8.1 权限模式<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#81-%E6%9D%83%E9%99%90%E6%A8%A1%E5%BC%8F" class="hash-link" aria-label="8.1 权限模式的直接链接" title="8.1 权限模式的直接链接" translate="no">​</a></h3>
<table><thead><tr><th>模式</th><th>描述</th></tr></thead><tbody><tr><td><code>default</code></td><td>交互式提示用户确认</td></tr><tr><td><code>auto</code></td><td>基于 ML 的自动审批（转录分类器）</td></tr><tr><td><code>bypass</code></td><td>跳过检查</td></tr><tr><td><code>yolo</code></td><td>拒绝所有（讽刺性命名）</td></tr></tbody></table>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="82-风险分类">8.2 风险分类<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#82-%E9%A3%8E%E9%99%A9%E5%88%86%E7%B1%BB" class="hash-link" aria-label="8.2 风险分类的直接链接" title="8.2 风险分类的直接链接" translate="no">​</a></h3>
<p>每个工具操作被分类为 <strong>LOW、MEDIUM、HIGH</strong> 风险。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="83-保护文件">8.3 保护文件<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#83-%E4%BF%9D%E6%8A%A4%E6%96%87%E4%BB%B6" class="hash-link" aria-label="8.3 保护文件的直接链接" title="8.3 保护文件的直接链接" translate="no">​</a></h3>
<p>以下文件受保护，禁止自动编辑：</p>
<ul>
<li class=""><code>.gitconfig</code></li>
<li class=""><code>.bashrc</code></li>
<li class=""><code>.zshrc</code></li>
<li class=""><code>.mcp.json</code></li>
<li class=""><code>.claude.json</code></li>
<li class="">其他敏感配置</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="84-攻击防护">8.4 攻击防护<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#84-%E6%94%BB%E5%87%BB%E9%98%B2%E6%8A%A4" class="hash-link" aria-label="8.4 攻击防护的直接链接" title="8.4 攻击防护的直接链接" translate="no">​</a></h3>
<ul>
<li class="">URL 编码路径遍历</li>
<li class="">Unicode 标准化攻击</li>
<li class="">反斜杠注入</li>
<li class="">大小写不敏感路径操纵</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="九github-上的衍生�项目">九、GitHub 上的衍生项目<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#%E4%B9%9Dgithub-%E4%B8%8A%E7%9A%84%E8%A1%8D%E7%94%9F%E9%A1%B9%E7%9B%AE" class="hash-link" aria-label="九、GitHub 上的衍生项目的直接链接" title="九、GitHub 上的衍生项目的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="91-主要仓库">9.1 主要仓库<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#91-%E4%B8%BB%E8%A6%81%E4%BB%93%E5%BA%93" class="hash-link" aria-label="9.1 主要仓库的直接链接" title="9.1 主要仓库的直接链接" translate="no">​</a></h3>
<table><thead><tr><th>仓库</th><th>Stars</th><th>描述</th></tr></thead><tbody><tr><td><a href="https://gitee.com/work25/claude-code" target="_blank" rel="noopener noreferrer" class="">Work25/claude-code</a></td><td>1k+</td><td>修复后的本地可运行版本，支持自定义 API</td></tr><tr><td><a href="https://github.com/Kuberwastaken/claurst" target="_blank" rel="noopener noreferrer" class="">Kuberwastaken/claurst</a></td><td>5.3k+</td><td>Rust 重实现 + 完整分析博客</td></tr><tr><td><a href="https://github.com/leaked-claude-code/leaked-claude-code" target="_blank" rel="noopener noreferrer" class="">leaked-claude-code/leaked-claude-code</a></td><td>334+</td><td>源码快照 + 构建系统重建</td></tr><tr><td><a href="https://github.com/asgeirtj/system_prompts_leaks" target="_blank" rel="noopener noreferrer" class="">asgeirtj/system_prompts_leaks</a></td><td>35.5k+</td><td>多 AI 系统提示词集合（含 Claude Code）</td></tr></tbody></table>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="92-nanmicoderclaude-code-haha-特性">9.2 NanmiCoder/claude-code-haha 特性<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#92-nanmicoderclaude-code-haha-%E7%89%B9%E6%80%A7" class="hash-link" aria-label="9.2 NanmiCoder/claude-code-haha 特性的直接链接" title="9.2 NanmiCoder/claude-code-haha 特性的直接链接" translate="no">​</a></h3>
<ul>
<li class="">完整 Ink TUI 交互界面</li>
<li class=""><code>--print</code> 无头模式</li>
<li class="">支持 MCP 服务器、插件、Skills</li>
<li class="">支持自定义 API 端点（MiniMax、OpenRouter 等）</li>
<li class="">降级 Recovery CLI 模式</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="93-修复的问题">9.3 修复的问题<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#93-%E4%BF%AE%E5%A4%8D%E7%9A%84%E9%97%AE%E9%A2%98" class="hash-link" aria-label="9.3 修复的问题的直接链接" title="9.3 修复的问题的直接链接" translate="no">​</a></h3>
<table><thead><tr><th>问题</th><th>根因</th><th>修复</th></tr></thead><tbody><tr><td>TUI 不启动</td><td>入口脚本路由错误</td><td>恢复 cli.tsx 完整入口</td></tr><tr><td>启动卡死</td><td>缺失 .md 文件导致 Bun text loader 挂起</td><td>创建 stub 文件</td></tr><tr><td><code>--print</code> 卡死</td><td>缺失类型文件</td><td>创建类型桩文件</td></tr><tr><td>Enter 键无响应</td><td>native 包缺失导致异常</td><td>try-catch 容错</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="十安全启示">十、安全启示<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#%E5%8D%81%E5%AE%89%E5%85%A8%E5%90%AF%E7%A4%BA" class="hash-link" aria-label="十、安全启示的直接链接" title="十、安全启示的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="101-核心教训">10.1 核心教训<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#101-%E6%A0%B8%E5%BF%83%E6%95%99%E8%AE%AD" class="hash-link" aria-label="10.1 核心教训的直接链接" title="10.1 核心教训的直接链接" translate="no">​</a></h3>
<ol>
<li class=""><strong>Source Map 是双刃剑</strong>：生产环境必须禁用或排除</li>
<li class=""><strong>防御深度</strong>：不应依赖单一检查点</li>
<li class=""><strong>自动化检测</strong>：发布前扫描敏感文件</li>
<li class=""><strong>讽刺性教训</strong>：专门防止泄漏的系统反而导致了最大的泄漏</li>
</ol>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="102-最佳实践建议">10.2 最佳实践建议<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#102-%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5%E5%BB%BA%E8%AE%AE" class="hash-link" aria-label="10.2 最佳实践建议的直接链接" title="10.2 最佳实践建议的直接链接" translate="no">​</a></h3>
<div class="language-javascript codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-javascript codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// bundler 配置示例（Bun）</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">default</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">sourcemap</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">false</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// 生产环境禁用</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// 或</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">sourcemap</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"external"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// 外部生成但不发布</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// .npmignore</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">*</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">map</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">*</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">ts</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">src</span><span class="token operator" style="color:#393A34">/</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="103-企业影响">10.3 企业影响<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#103-%E4%BC%81%E4%B8%9A%E5%BD%B1%E5%93%8D" class="hash-link" aria-label="10.3 企业影响的直接链接" title="10.3 企业影响的直接链接" translate="no">​</a></h3>
<ul>
<li class=""><strong>知识产权损失</strong>：核心架构、业务逻辑完全暴露</li>
<li class=""><strong>竞争优势削弱</strong>：竞争对手可直接学习实现细节</li>
<li class=""><strong>安全风险</strong>：攻击者可分析漏洞</li>
<li class=""><strong>未发布功能曝光</strong>：产品路线图被迫透明</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="十一法律与伦理">十一、法律与伦理<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#%E5%8D%81%E4%B8%80%E6%B3%95%E5%BE%8B%E4%B8%8E%E4%BC%A6%E7%90%86" class="hash-link" aria-label="十一、法律与伦理的直接链接" title="十一、法律与伦理的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="111-代码版权">11.1 代码版权<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#111-%E4%BB%A3%E7%A0%81%E7%89%88%E6%9D%83" class="hash-link" aria-label="11.1 代码版权的直接链接" title="11.1 代码版权的直接链接" translate="no">​</a></h3>
<p>所有原始源码版权归 <strong>Anthropic</strong> 所有。衍生项目声称仅供"学习和研究用途"。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="112-clean-room-重实现">11.2 Clean Room 重实现<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#112-clean-room-%E9%87%8D%E5%AE%9E%E7%8E%B0" class="hash-link" aria-label="11.2 Clean Room 重实现的直接链接" title="11.2 Clean Room 重实现的直接链接" translate="no">​</a></h3>
<p><a href="https://github.com/Kuberwastaken/claurst" target="_blank" rel="noopener noreferrer" class="">Kuberwastaken/claurst</a> 采用了 <strong>两阶段清洁室工程</strong>：</p>
<ol>
<li class=""><strong>Specification</strong>：AI 分析源码并生成详尽的行为规范</li>
<li class=""><strong>Implementation</strong>：独立的 AI 仅根据规范实现，从未引用原始 TypeScript</li>
</ol>
<p>这符合 <strong>Phoenix Technologies v. IBM (1984)</strong> 确立的法律先例。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="113-fair-use-抗辩">11.3 Fair Use 抗辩<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#113-fair-use-%E6%8A%97%E8%BE%A9" class="hash-link" aria-label="11.3 Fair Use 抗辩的直接链接" title="11.3 Fair Use 抗辩的直接链接" translate="no">​</a></h3>
<p>代码摘录用于说明技术观点，引用公开可用软件，受 <strong>17 U.S.C. § 107</strong> 保护。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="十二事件时间线">十二、事件时间线<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#%E5%8D%81%E4%BA%8C%E4%BA%8B%E4%BB%B6%E6%97%B6%E9%97%B4%E7%BA%BF" class="hash-link" aria-label="十二、事件时间线的直接链接" title="十二、事件时间线的直接链接" translate="no">​</a></h2>
<table><thead><tr><th>时间</th><th>事件</th></tr></thead><tbody><tr><td>2026-03-31 早些时候</td><td>Chaofan Shou 发现泄漏</td></tr><tr><td>2026-03-31</td><td>X 上公开披露</td></tr><tr><td>2026-03-31 晚</td><td>GitHub 上出现多个镜像仓库</td></tr><tr><td>2026-04-01</td><td>衍生项目（修复版、Rust 重实现等）涌现</td></tr><tr><td>2026-04-01 至今</td><td>社区深度分析、博客文章发布</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="十三本地运行">十三、本地运行<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#%E5%8D%81%E4%B8%89%E6%9C%AC%E5%9C%B0%E8%BF%90%E8%A1%8C" class="hash-link" aria-label="十三、本地运行的直接链接" title="十三、本地运行的直接链接" translate="no">​</a></h2>
<p>基于 Claude Code 泄露源码使用OpenCode（使用的模型mimo v2 pro）修复的<strong>本地可运行版本</strong>， 支持接入任意 Anthropic 兼容 API（如 MiniMax、OpenRouter 等）。</p>
<img src="http://www.otqsoft.com/doc/assets/images/0-0f2e21422cdff798bf8ef88168c46987.png" class="previewImage_kI9J">
<img src="http://www.otqsoft.com/doc/assets/images/1-ebc4dac36ec362e94968d6262b7b0313.png" class="previewImage_kI9J">
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="十四总结">十四、总结<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-claude-code#%E5%8D%81%E5%9B%9B%E6%80%BB%E7%BB%93" class="hash-link" aria-label="十四、总结的直接链接" title="十四、总结的直接链接" translate="no">​</a></h2>
<p>Claude Code 源码泄漏是 2026 年 AI 行业最重大的安全事件之一。一个精心构建、功能强大的 AI 编程工具，因为一个简单的配置错误——没有在生产构建中禁用 source maps——而将整个源代码暴露给世界。</p>
<p>这次泄漏不仅揭示了 Claude Code 令人印象深刻的架构深度（多代理系统、记忆梦境、伴侣精灵等），也暴露了 Anthropic 内部的未发布产品和模型路线图。</p>
<p>对于整个行业，这是一个警钟：<strong>安全链的强度取决于最薄弱的环节</strong>。</p>]]></content>
        <author>
            <name>viki</name>
            <uri>https://gitee.com/work25</uri>
        </author>
        <category label="AI" term="AI"/>
        <category label="Claude" term="Claude"/>
        <category label="LLM" term="LLM"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Xiaomi MiMo-V2-Pro]]></title>
        <id>http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-xiaomi</id>
        <link href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-xiaomi"/>
        <updated>2026-03-19T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Xiaomi MiMo-V2-Pro 专为现实世界中高强度的 Agent 工作场景而打造。它拥有超过 1T 的总参数量（42B 激活参数），采用创新的混合注意力架构，并支持 1M 超长上下文长度。在强大的模型基座上，我们在更为广泛的 Agent 场景中持续 Scaling 算力，进一步拓展了智能的动作空间，实现了从 Coding 到 Claw 的重要泛化。]]></summary>
        <content type="html"><![CDATA[<p>Xiaomi MiMo-V2-Pro 专为现实世界中高强度的 Agent 工作场景而打造。它拥有超过 <strong>1T</strong> 的总参数量（<strong>42B</strong> 激活参数），采用创新的混合注意力架构，并支持 <strong>1M</strong> 超长上下文长度。在强大的模型基座上，我们在更为广泛的 Agent 场景中持续 Scaling 算力，进一步拓展了智能的动作空间，实现了从 Coding 到 Claw 的重要泛化。</p>
<p>在全球权威大模型综合智能排行榜 Artificial Analysis 上，MiMo-V2-Pro 位列全球第八，国内第二。</p>
<p><img decoding="async" loading="lazy" src="https://platform.xiaomimimo.com/SoVjwZ16Ai0c5WkU45ccMYM3nXc-LTeVbc1a5oXPblxR.6dbd3629.png" alt="图片" class="img_ev3q"></p>
<p>在 OpenClaw、Claude Code 等智能体框架中，MiMo-V2-Pro 展现出了优秀的端到端任务完成能力，能够在无人工干预的条件下完成复杂工作流编排、长程规划与精准工具调用，并持续可靠地交付最终结果。整体使用体感已超越 Claude Sonnet 4.6，逼近 Opus 4.6，但模型 API 定价仅为其 1/5，降低了前沿智能的使用门槛。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="基座能力的全面跃升">基座能力的全面跃升<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-xiaomi#%E5%9F%BA%E5%BA%A7%E8%83%BD%E5%8A%9B%E7%9A%84%E5%85%A8%E9%9D%A2%E8%B7%83%E5%8D%87" class="hash-link" aria-label="基座能力的全面跃升的直接链接" title="基座能力的全面跃升的直接链接" translate="no">​</a></h2>
<p>通过 Scaling 参数和算力，MiMo-V2-Pro 拥有了更大、更强的模型基座。</p>
<ul>
<li class=""><strong>万亿参数，高效架构</strong>：总参数量突破 1T（激活参数 42B），较前代 MiMo-V2-Flash 扩大约 3 倍。沿用前代 MiMo-V2-Flash 的创新 Hybrid Attention 机制，混合比例从 5:1 进一步提升至 7:1，在参数量大幅增长的同时依然维持了较高推理效率，并支持 1M 超长上下文。轻量 MTP (Multi Token Prediction) 层实现了高效的生成速度。</li>
<li class=""><strong>从 Chat 到 Agent</strong>：通过后训练阶段在更广泛的 Agent 任务场景进行 Scaling，模型能力已不再局限于“回答问题”或是“生成精美 Demo”，而是“完成任务”。我们致力于将其深度集成至生产力场景，使其成为驱动系统运转的“大脑”，持续交付具有真实世界影响力的结果。</li>
<li class=""><strong>超越榜单的实际体验</strong>：在各个衡量模型重要能力的基准测评中，MiMo-V2-Pro 均表现优异，Coding Agent、通用 Agent 和 Tool Use 与 Claude 4.5 Sonnet、GPT5.2、Gemini 3.0 Pro 处于同一梯队，展现了其领先的智能水平。我们坚持以“实际体感”为导向进行训练优化，始终关注模型在应用场景中的落地表现。</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="为-agent-而生的旗舰模型">为 Agent 而生的旗舰模型<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-xiaomi#%E4%B8%BA-agent-%E8%80%8C%E7%94%9F%E7%9A%84%E6%97%97%E8%88%B0%E6%A8%A1%E5%9E%8B" class="hash-link" aria-label="为 Agent 而生的旗舰模型的直接链接" title="为 Agent 而生的旗舰模型的直接链接" translate="no">​</a></h2>
<p>MiMo-V2-Pro 专为 Agent 场景深度优化。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="openclaw-的原生大脑">OpenClaw 的原生大脑<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-xiaomi#openclaw-%E7%9A%84%E5%8E%9F%E7%94%9F%E5%A4%A7%E8%84%91" class="hash-link" aria-label="OpenClaw 的原生大脑的直接链接" title="OpenClaw 的原生大脑的直接链接" translate="no">​</a></h3>
<p>OpenClaw 是近期开源社区备受瞩目的通用智能体框架。作为驱动此类框架的核心，底层模型的能力上限直接决定了系统的业务表现。MiMo-V2-Pro 针对复杂多样的 Agent Scaffold 进行 SFT &amp; RL，具备更强的工具调用与多步推理能力。</p>
<p>在 OpenClaw 标准评测榜单 PinchBench、ClawEval 上，MiMo-V2-Pro 效果处于全球顶尖。同时，凭借 1M 的超长上下文窗口，MiMo-V2-Pro 能够从容支撑高强度的真实 Claw 复杂应用流。下图中的 Hunter Alpha 为 MiMo-V2-Pro 的早期匿名版本。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="coding-能力持续进化">Coding 能力持续进化<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-xiaomi#coding-%E8%83%BD%E5%8A%9B%E6%8C%81%E7%BB%AD%E8%BF%9B%E5%8C%96" class="hash-link" aria-label="Coding 能力持续进化的直接链接" title="Coding 能力持续进化的直接链接" translate="no">​</a></h3>
<p>不止于 Vibe Coding，MiMo-V2-Pro 能够参与更严肃的代码工程构建。</p>
<p>在小米内部工程师的深度评测中，MiMo-V2-Pro 体感已接近 Claude Opus 4.6，并展现出高阶的代码智能：拥有更出色的系统设计与任务规划能力、更优雅的代码风格，以及更高效直接的问题解决路径。</p>
<p>在 Hunter Alpha 测试阶段，调用量前几的 APP 多为编程专用工具，这印证了 MiMo-V2-Pro 在真实研发场景下的高可用性与高可靠性。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="百万上下文开放-api">百万上下文，开放 API<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-xiaomi#%E7%99%BE%E4%B8%87%E4%B8%8A%E4%B8%8B%E6%96%87%E5%BC%80%E6%94%BE-api" class="hash-link" aria-label="百万上下文，开放 API的直接链接" title="百万上下文，开放 API的直接链接" translate="no">​</a></h2>
<p>MiMo-V2-Pro 模型现已正式开放 API 服务，支持 1M 上下文长度，并根据使用量分段计价：</p>
<ul>
<li class="">256K 以内：输入 $1 / 百万 tokens，输出 $3 / 百万 tokens</li>
<li class="">256K ~ 1M：输入 $2 / 百万 tokens，输出 $6 / 百万 tokens</li>
</ul>
<h1>Xiaomi MiMo-V2-Omni</h1>
<p>MiMo-V2-Omni 专为现实世界中复杂的多模态交互与执行场景而生。我们从底层构建了融合文本、视觉、语音的全模态基座，并以统一架构将“感知”与“行动”深度绑定。这不仅打破了传统模型“重理解、轻执行”的局限，更让模型原生具备了多模态感知、工具调用、函数执行及 GUI 操作能力。MiMo-V2-Omni 可无缝接入各大智能体框架，实现了从理解到操控的跨越，大幅降低了全模态 Agent 的落地门槛。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="感知能力图像视频音频全面对标前沿">感知能力：图像、视频、音频，全面对标前沿<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-xiaomi#%E6%84%9F%E7%9F%A5%E8%83%BD%E5%8A%9B%E5%9B%BE%E5%83%8F%E8%A7%86%E9%A2%91%E9%9F%B3%E9%A2%91%E5%85%A8%E9%9D%A2%E5%AF%B9%E6%A0%87%E5%89%8D%E6%B2%BF" class="hash-link" aria-label="感知能力：图像、视频、音频，全面对标前沿的直接链接" title="感知能力：图像、视频、音频，全面对标前沿的直接链接" translate="no">​</a></h2>
<p>行动的前提是准确的感知。我们在所有感知模态上对比了 MiMo-V2-Omni 与国际领先模型，验证作为智能体的感知能力基础是否牢固。</p>
<p><strong>视觉理解</strong>方面，MiMo-V2-Omni 展现出强大的多学科视觉推理与复杂图表分析能力，超越 Claude Opus 4.6，逼近 Gemini 3 等顶尖闭源模型水平。</p>
<p><strong>音频理解</strong>方面，支持从环境声分类、多说话人分离、音频-视觉联合推理，到超过 10 小时连续长音频的深度理解。综合表现超越 Gemini 3 Pro，是当前最强的音频理解基座模型之一。</p>
<p><strong>视频理解</strong>方面，支持原生音视频联合输入，实现真正的多模态视频理解。通过创新的视频预训练，模型具备强大的情境感知与未来推理能力。</p>
<p>而当多种模态同时输入时，统一架构的优势进一步放大：<strong>跨模态信号相互增强，而非相互竞争。</strong></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="智能体能力从理解到完成任务">智能体能力：从理解到完成任务<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-xiaomi#%E6%99%BA%E8%83%BD%E4%BD%93%E8%83%BD%E5%8A%9B%E4%BB%8E%E7%90%86%E8%A7%A3%E5%88%B0%E5%AE%8C%E6%88%90%E4%BB%BB%E5%8A%A1" class="hash-link" aria-label="智能体能力：从理解到完成任务的直接链接" title="智能体能力：从理解到完成任务的直接链接" translate="no">​</a></h2>
<p>感知是基础，行动是目标。</p>
<p>一个真正的智能体模型，能够跨越多个模态观察复杂环境、制定计划并执行、在出错时自主恢复，最终端到端地交付结果。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="全模态智能体任务">全模态智能体任务<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-xiaomi#%E5%85%A8%E6%A8%A1%E6%80%81%E6%99%BA%E8%83%BD%E4%BD%93%E4%BB%BB%E5%8A%A1" class="hash-link" aria-label="全模态智能体任务的直接链接" title="全模态智能体任务的直接链接" translate="no">​</a></h3>
<p>在与真实数字环境交互的评测基准上，MiMo-V2-Omni 表现优异，比肩 Gemini 3 Pro。前沿的感知能力与原生训练的行动能力形成了复合优势：<strong>感知越准确，行动越有效</strong>。</p>
<p><img decoding="async" loading="lazy" src="https://platform.xiaomimimo.com/RLCjwLekEibyTQkenf4cVXsBnBe-YVvebOfYmoPSI1xe.478dbc69.png" alt="图片" class="img_ev3q"></p>
<p>与此同时，MiMo-V2-Omni 在纯文本智能体任务上也保持了高度的竞争力。</p>
<p><img decoding="async" loading="lazy" src="https://platform.xiaomimimo.com/RLCjwLekEibyTQkenf4cVXsBnBe-JvUSbBp0SoCeifx3.066549ed.png" alt="图片" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="能力展示">能力展示<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-xiaomi#%E8%83%BD%E5%8A%9B%E5%B1%95%E7%A4%BA" class="hash-link" aria-label="能力展示的直接链接" title="能力展示的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="-browser-use场景">💻 Browser Use场景<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-xiaomi#-browser-use%E5%9C%BA%E6%99%AF" class="hash-link" aria-label="💻 Browser Use场景的直接链接" title="💻 Browser Use场景的直接链接" translate="no">​</a></h3>
<p>Browser Use 是衡量模型 Agentic 能力的试金石：真实世界交互、网页环境动态变化、交互方式异构、且存在主动的对抗机制。感知、决策、行动的闭环在开放环境中持续运转直至任务完成——同样的能力迁移到智能终端、机器人等场景，就是通用智能体的雏形。</p>
<ul>
<li class=""><strong>替你逛街砍价下单</strong> 我们测试了一个端到端购物任务。模型操控浏览器，先在小红书浏览十余篇帖子完成信息搜集与购买建议，再跨平台切到京东多店比价，接着转接人工客服用自然语言砍价，与客服实时交互，最终完成加购下单。模型自主应对了非标准 DOM 结构、多页签上下文管理、以及平台反自动化检测后的流程恢复。</li>
<li class=""><strong>TikTok 视频创作发布</strong> 我们测试了一个端到端视频发布任务。模型自主设计四组画面并现场合成全部音效，零外部素材依赖；渲染时遇到中文字体报错，自动修复后继续执行；再操控浏览器打开 TikTok 上传页面，分析非标准输入控件完成文案填写，点击发布后继续点赞、评论，回查确认审核通过、视频公开上线。</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="️-智能办公场景">🗒️ 智能办公场景<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-xiaomi#%EF%B8%8F-%E6%99%BA%E8%83%BD%E5%8A%9E%E5%85%AC%E5%9C%BA%E6%99%AF" class="hash-link" aria-label="🗒️ 智能办公场景的直接链接" title="🗒️ 智能办公场景的直接链接" translate="no">​</a></h3>
<p>通过自然对话，MiMo-V2-Omni 能够直接生成高质量的 Word、结构化 Excel、排版规范的 PDF 与完整的 PPT。这些生成的文档不再是需要大幅修改的草稿，而是贴合实际需求的高质量“准终稿”。</p>
<ul>
<li class="">
<p><strong>2026高考志愿智能填报</strong></p>
<p>我们测试了高考志愿填报任务。模型可以自主发起网络搜索，获取原始信息，调用 skill 处理文件，并输出一份包含详细志愿建议和分级的 Excel 表格文件。</p>
</li>
</ul>
<h1>Xiaomi MiMo-V2-TTS</h1>
<p>Xiaomi MiMo-V2-TTS 是小米自主研发的语音合成大模型。它基于自研 Audio Tokenizer 和多码本语音-文本联合建模架构，经过上亿小时语音数据的大规模预训练与多维度强化学习，实现了高度可控的多粒度语音风格控制。MiMo-V2-TTS 支持从整体风格定调到局部情绪表达的精准调节，能在同一句话内完成语气转折和情感递变；真实还原人类说话的自然韵律；在唱歌时，也能准确表达音高和节奏，自然且富有表现力。</p>
<p>MiMo-V2-TTS 模型现已可通过 Xiaomi MiMo API 开放平台 (<a href="https://platform.xiaomimimo.com/" target="_blank" rel="noopener noreferrer" class="">https://platform.xiaomimimo.com</a>) 访问，<strong>限时免费</strong>。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="文本风格控制">文本风格控制<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-xiaomi#%E6%96%87%E6%9C%AC%E9%A3%8E%E6%A0%BC%E6%8E%A7%E5%88%B6" class="hash-link" aria-label="文本风格控制的直接链接" title="文本风格控制的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="灵活自定义文本控制风格">灵活自定义文本控制风格<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-xiaomi#%E7%81%B5%E6%B4%BB%E8%87%AA%E5%AE%9A%E4%B9%89%E6%96%87%E6%9C%AC%E6%8E%A7%E5%88%B6%E9%A3%8E%E6%A0%BC" class="hash-link" aria-label="灵活自定义文本控制风格的直接链接" title="灵活自定义文本控制风格的直接链接" translate="no">​</a></h3>
<p>MiMo-V2-TTS 支持<strong>任意自然语言风格描述</strong>，不局限于预设关键词，模型能理解并执行任意描述性表达。</p>
<ul>
<li class="">情感控制：开心、悲伤、生气、温柔、兴奋、平静……</li>
<li class="">方言支持：东北话、四川话、河南话、粤语、台湾腔……</li>
<li class="">角色扮演：孙悟空、林黛玉、钢铁侠……</li>
<li class="">自由组合短语 — 真正的自然语言控制："撒娇 夹子音"、"慵懒 刚睡醒 有点沙哑"、"深情款款 语速慢"、"慷慨激昂"</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="细粒度声音事件控制">细粒度声音事件控制<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-xiaomi#%E7%BB%86%E7%B2%92%E5%BA%A6%E5%A3%B0%E9%9F%B3%E4%BA%8B%E4%BB%B6%E6%8E%A7%E5%88%B6" class="hash-link" aria-label="细粒度声音事件控制的直接链接" title="细粒度声音事件控制的直接链接" translate="no">​</a></h3>
<p>MiMo-V2-TTS 能够在语音中自然地插入和控制各种副语言声音事件，让生成的语音更加真实、生动。</p>
<p>支持的声音事件：笑声、咳嗽、停顿、思考犹豫、叹气等。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="深度文本理解">深度文本理解<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-xiaomi#%E6%B7%B1%E5%BA%A6%E6%96%87%E6%9C%AC%E7%90%86%E8%A7%A3" class="hash-link" aria-label="深度文本理解的直接链接" title="深度文本理解的直接链接" translate="no">​</a></h2>
<p>模型能够智能识别文本中的格式信号，将其转化为对应的语音表达，比如语气标点等，无需额外标注。</p>
<p>格式感知 → 语音表达：</p>
<ul>
<li class="">全大写文本（如 "THIS IS IMPORTANT"）→ 自动加重语气强调；</li>
<li class="">连续重复（如 "不不不不不"）→ 自动映射为对应的语音节奏和情感。</li>
</ul>
<p>模型在预训练阶段学习了大量文本-语音对齐数据，能够自动将书面格式信号转化为自然的语音表达。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="超越语音方言角色歌声">超越语音：方言·角色·歌声<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-xiaomi#%E8%B6%85%E8%B6%8A%E8%AF%AD%E9%9F%B3%E6%96%B9%E8%A8%80%E8%A7%92%E8%89%B2%E6%AD%8C%E5%A3%B0" class="hash-link" aria-label="超越语音：方言·角色·歌声的直接链接" title="超越语音：方言·角色·歌声的直接链接" translate="no">​</a></h2>
<p>MiMo-V2-TTS 不止于标准语音生成，还具备丰富的多元表达能力：支持多种方言的自然发音，可进行角色扮演式的风格化演绎，更能实现高质量的歌声合成——让同一个模型既能说、能演、也能唱。</p>
<h1>试用</h1>
<p>目前模型还是处于免费期，OpenClaw 通过 Openrouter 免费接入 MiMo-V2-Pro/MiMo-V2-Omni，也可以在Cline、Kilo Code、Roo Code 通过配置使用，现在可以在opencode中免费使用</p>
<img src="http://www.otqsoft.com/doc/assets/images/opencode-927bed6c33a4e449ed832b57ff3f6570.png" class="previewImage_kI9J">
<img src="http://www.otqsoft.com/doc/assets/images/opencode-mino-eafc96589de9e8c3fcef206313662cb4.png" class="previewImage_kI9J">]]></content>
        <author>
            <name>otqsoft</name>
            <uri>https://gitee.com/work25</uri>
        </author>
        <category label="AI" term="AI"/>
        <category label="Agent" term="Agent"/>
        <category label="LLM" term="LLM"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[什么是ACI]]></title>
        <id>http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-aci</id>
        <link href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-aci"/>
        <updated>2026-02-23T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[<ImagePreview]]></summary>
        <content type="html"><![CDATA[<img src="http://www.otqsoft.com/doc/assets/images/openclaw-9222f9b66f9f5da9cb08453f59652b18.png" class="previewImage_kI9J">
<p>在 OpenClaw 开源 AI 智能体生态中，<strong>ACI 全称 Agent Capability Interface（智能体能力接口）</strong>，是社区对 OpenClaw 核心能力调度体系的标准化命名，是一套专为大模型设计的、标准化的智能体能力注册、调度、安全管控与执行闭环的接口框架，也是 OpenClaw 实现「AI 从被动对话到主动执行」核心突破的技术底座。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="一aci-的核心定义与在-openclaw-中的定位">一、ACI 的核心定义与在 OpenClaw 中的定位<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-aci#%E4%B8%80aci-%E7%9A%84%E6%A0%B8%E5%BF%83%E5%AE%9A%E4%B9%89%E4%B8%8E%E5%9C%A8-openclaw-%E4%B8%AD%E7%9A%84%E5%AE%9A%E4%BD%8D" class="hash-link" aria-label="一、ACI 的核心定义与在 OpenClaw 中的定位的直接链接" title="一、ACI 的核心定义与在 OpenClaw 中的定位的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-本质定位">1. 本质定位<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-aci#1-%E6%9C%AC%E8%B4%A8%E5%AE%9A%E4%BD%8D" class="hash-link" aria-label="1. 本质定位的直接链接" title="1. 本质定位的直接链接" translate="no">​</a></h3>
<p>ACI 是 OpenClaw 中连接<strong>大模型推理层</strong>与<strong>本地 / 云端执行层</strong>的「中枢神经与执行手脚」，彻底解决了传统大模型「能理解、能规划，但不能安全、可靠地落地执行」的核心痛点。OpenClaw 的核心理念是<strong>访问控制优于智能</strong>，ACI 正是这一理念的落地载体 —— 所有 AI 对系统资源的操作，必须经过 ACI 的统一管控，而非让大模型直接触碰底层系统。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-架构层级定位">2. 架构层级定位<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-aci#2-%E6%9E%B6%E6%9E%84%E5%B1%82%E7%BA%A7%E5%AE%9A%E4%BD%8D" class="hash-link" aria-label="2. 架构层级定位的直接链接" title="2. 架构层级定位的直接链接" translate="no">​</a></h3>
<p>在 OpenClaw「Gateway 为核心」的分层架构中，ACI 是 Gateway 控制平面的核心子系统，上承大模型的任务规划，下接各类 Skill（技能）与执行器，是整个 Agent 执行循环的核心调度层。</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">用户指令 → 多渠道入口 → Gateway控制平面 → 大模型推理（任务规划） → ACI核心层 → 执行层 → 结果返回 → 大模型总结 → 用户</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="二openclaw-aci-的核心架构与关键组件">二、OpenClaw ACI 的核心架构与关键组件<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-aci#%E4%BA%8Copenclaw-aci-%E7%9A%84%E6%A0%B8%E5%BF%83%E6%9E%B6%E6%9E%84%E4%B8%8E%E5%85%B3%E9%94%AE%E7%BB%84%E4%BB%B6" class="hash-link" aria-label="二、OpenClaw ACI 的核心架构与关键组件的直接链接" title="二、OpenClaw ACI 的核心架构与关键组件的直接链接" translate="no">​</a></h2>
<p>ACI 不是单一接口，而是一套完整的能力管控与执行体系，核心由 5 大组件构成：</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-skill-registry技能注册中心">1. Skill Registry（技能注册中心）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-aci#1-skill-registry%E6%8A%80%E8%83%BD%E6%B3%A8%E5%86%8C%E4%B8%AD%E5%BF%83" class="hash-link" aria-label="1. Skill Registry（技能注册中心）的直接链接" title="1. Skill Registry（技能注册中心）的直接链接" translate="no">​</a></h3>
<p>ACI 的核心元数据层，也是 OpenClaw 能力扩展的核心载体。</p>
<ul>
<li class="">所有可被大模型调用的能力（Skill）必须在此注册，包含：给大模型阅读的自然语言能力描述、强类型的输入输出参数规范、权限范围、执行依赖、安全约束。</li>
<li class="">对应 OpenClaw 官方的SKILL.md规范，相当于给大模型看的「能力说明书」，让大模型精准理解每个能力的用途、参数、边界，避免无意义的瞎调用。</li>
<li class="">支持插件化扩展，社区贡献的 Skill 可通过注册中心快速接入，无限扩展 AI 的执行能力。</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-capability-router能力路由引擎">2. Capability Router（能力路由引擎）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-aci#2-capability-router%E8%83%BD%E5%8A%9B%E8%B7%AF%E7%94%B1%E5%BC%95%E6%93%8E" class="hash-link" aria-label="2. Capability Router（能力路由引擎）的直接链接" title="2. Capability Router（能力路由引擎）的直接链接" translate="no">​</a></h3>
<p>ACI 的调度核心，负责大模型工具调用请求的分发与编排。</p>
<ul>
<li class="">接收大模型的工具调用请求，匹配注册中心对应的 Skill 实现，根据任务类型、权限等级、运行环境，分发到对应的执行器。</li>
<li class="">原生支持多 Skill 多步编排、异常自动重试、Fallback 降级，是 OpenClaw 实现复杂自动化任务的核心。</li>
<li class="">兼容 MCP（Model Context Protocol）协议，可通过路由引擎接入第三方 MCP 工具与数据源，实现能力互通。</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-security--sandbox安全沙箱与权限管控">3. Security &amp; Sandbox（安全沙箱与权限管控）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-aci#3-security--sandbox%E5%AE%89%E5%85%A8%E6%B2%99%E7%AE%B1%E4%B8%8E%E6%9D%83%E9%99%90%E7%AE%A1%E6%8E%A7" class="hash-link" aria-label="3. Security &amp; Sandbox（安全沙箱与权限管控）的直接链接" title="3. Security &amp; Sandbox（安全沙箱与权限管控）的直接链接" translate="no">​</a></h3>
<p>ACI 的安全边界，也是 OpenClaw 本地优先、隐私可控的核心保障。</p>
<ul>
<li class="">采用 OpenClaw 官方树状 Scope 权限模型（如operator.read、file.write、shell.exec），实现细粒度的权限控制，精准定义 AI 能做什么、不能做什么。</li>
<li class="">内置敏感操作审批系统：高危操作（如 Shell 执行、系统文件修改）支持白名单、单次 / 永久授权、操作可回溯，彻底规避提示词注入、越权操作等风险。</li>
<li class="">全流程审计日志：所有通过 ACI 的操作都会被完整记录，包括调用方、参数、执行结果、耗时，实现操作全链路可追溯。</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="4-execution-runtime执行运行时">4. Execution Runtime（执行运行时）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-aci#4-execution-runtime%E6%89%A7%E8%A1%8C%E8%BF%90%E8%A1%8C%E6%97%B6" class="hash-link" aria-label="4. Execution Runtime（执行运行时）的直接链接" title="4. Execution Runtime（执行运行时）的直接链接" translate="no">​</a></h3>
<p>ACI 的执行载体，负责 Skill 的实际落地执行。</p>
<ul>
<li class="">统一封装了底层系统能力，屏蔽不同操作系统（Windows/macOS/Linux）的差异，给大模型提供标准化的执行入口。</li>
<li class="">支持多种执行环境：本地进程、容器沙箱、远程节点（如手机、云服务器），满足不同场景的执行需求。</li>
<li class="">内置超时控制、资源限额、异常捕获，避免 AI 执行任务时占用过多系统资源，保障系统稳定。</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="5-result-aggregator结果聚合与格式化">5. Result Aggregator（结果聚合与格式化）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-aci#5-result-aggregator%E7%BB%93%E6%9E%9C%E8%81%9A%E5%90%88%E4%B8%8E%E6%A0%BC%E5%BC%8F%E5%8C%96" class="hash-link" aria-label="5. Result Aggregator（结果聚合与格式化）的直接链接" title="5. Result Aggregator（结果聚合与格式化）的直接链接" translate="no">​</a></h3>
<p>ACI 的反馈层，衔接执行层与大模型推理层。</p>
<ul>
<li class="">收集执行结果，标准化处理后返回给大模型，统一封装成功 / 失败状态、结构化数据、错误信息、执行日志。</li>
<li class="">把非结构化的执行结果，转化为大模型可理解、可用于下一步决策的结构化信息，支撑完整的 Agent 循环（规划→执行→反馈→再规划）。</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="三openclaw-aci-的完整执行工作流">三、OpenClaw ACI 的完整执行工作流<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-aci#%E4%B8%89openclaw-aci-%E7%9A%84%E5%AE%8C%E6%95%B4%E6%89%A7%E8%A1%8C%E5%B7%A5%E4%BD%9C%E6%B5%81" class="hash-link" aria-label="三、OpenClaw ACI 的完整执行工作流的直接链接" title="三、OpenClaw ACI 的完整执行工作流的直接链接" translate="no">​</a></h2>
<p>以用户指令「把桌面近 7 天的 PDF 文件，归档到 Documents / 归档 / 2026-02 文件夹」为例，ACI 的全流程执行逻辑如下：</p>
<ol>
<li class=""><strong>指令接收</strong>：用户通过 Telegram / 飞书等渠道发送自然语言指令，进入 OpenClaw Gateway 控制平面。</li>
<li class=""><strong>任务规划</strong>：Gateway 将指令传给大模型，大模型解析意图、提取参数（源路径、时间范围、目标路径）、生成执行计划，确定需要调用 ACI 的文件管理能力。</li>
<li class=""><strong>ACI 校验与路由</strong>：<!-- -->
<ul>
<li class="">大模型的工具调用请求进入 ACI 层，首先进行权限校验：是否允许访问桌面与目标路径、是否有文件读写权限；</li>
<li class="">匹配注册中心的file_manage Skill，校验参数合法性，确认执行环境。</li>
</ul>
</li>
<li class=""><strong>安全管控</strong>：如果是首次执行该路径操作，ACI 触发审批流程，用户确认后放行；如果是已授权操作，直接进入执行环节。</li>
<li class=""><strong>执行落地</strong>：ACI 将标准化的执行指令传给运行时，调用本地文件系统，完成文件扫描、时间筛选、批量移动，全程记录操作日志。</li>
<li class=""><strong>结果反馈</strong>：执行完成后，结果聚合层将执行结果（成功归档数量、目标路径、异常文件）格式化，返回给大模型。</li>
<li class=""><strong>最终回复</strong>：大模型基于执行结果，生成自然语言回复，通过原渠道反馈给用户，完成完整的执行闭环。</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="四openclaw-aci-内置的核心能力与-skill-示例">四、OpenClaw ACI 内置的核心能力与 Skill 示例<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-aci#%E5%9B%9Bopenclaw-aci-%E5%86%85%E7%BD%AE%E7%9A%84%E6%A0%B8%E5%BF%83%E8%83%BD%E5%8A%9B%E4%B8%8E-skill-%E7%A4%BA%E4%BE%8B" class="hash-link" aria-label="四、OpenClaw ACI 内置的核心能力与 Skill 示例的直接链接" title="四、OpenClaw ACI 内置的核心能力与 Skill 示例的直接链接" translate="no">​</a></h2>
<p>OpenClaw 官方内置了覆盖全场景的 ACI 能力，通过标准化 Skill 对外暴露，核心能力如下：</p>
<table><thead><tr><th>能力类别</th><th>核心 Skill</th><th>ACI 接口标识</th><th>核心功能说明</th></tr></thead><tbody><tr><td>文件系统管理</td><td>file_read / file_write / file_move / file_search</td><td>aci://fs/manage</td><td>本地文件的读写、移动、删除、搜索，全路径白名单管控</td></tr><tr><td>终端命令执行</td><td>shell_exec / shell_script</td><td>aci://shell/run</td><td>安全执行终端命令与 Shell 脚本，支持命令白名单、超时控制</td></tr><tr><td>浏览器自动化</td><td>web_navigate / web_scrape / web_interact</td><td>aci://web/browser</td><td>网页打开、内容提取、表单填写、点击交互，基于 CDP 协议</td></tr><tr><td>网络 API 调用</td><td>http_request / api_invoke</td><td>aci://http/request</td><td>REST API 调用，支持认证信息加密、请求频率限制</td></tr><tr><td>定时任务调度</td><td>cron_create / cron_manage</td><td>aci://cron/schedule</td><td>定时任务的创建、启停，支持事件触发式任务</td></tr><tr><td>办公文档处理</td><td>office_read / office_write</td><td>aci://office/edit</td><td>Word/Excel/PDF 等文档的读写、格式转换、内容编辑</td></tr><tr><td>代码开发工具</td><td>code_run / git_ops / project_manage</td><td>aci://dev/exec</td><td>代码运行、Git 操作、项目文件管理，支持多语言环境</td></tr><tr><td>多渠道消息推送</td><td>channel_send / message_notify</td><td>aci://channel/notify</td><td>跨 IM 渠道的消息发送、通知推送，支持 Telegram / 飞书 / 钉钉等</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="五aci-与相关协议--传统-api-的核心区别">五、ACI 与相关协议 / 传统 API 的核心区别<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-aci#%E4%BA%94aci-%E4%B8%8E%E7%9B%B8%E5%85%B3%E5%8D%8F%E8%AE%AE--%E4%BC%A0%E7%BB%9F-api-%E7%9A%84%E6%A0%B8%E5%BF%83%E5%8C%BA%E5%88%AB" class="hash-link" aria-label="五、ACI 与相关协议 / 传统 API 的核心区别的直接链接" title="五、ACI 与相关协议 / 传统 API 的核心区别的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-aci-vs-传统-api-接口">1. ACI vs 传统 API 接口<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-aci#1-aci-vs-%E4%BC%A0%E7%BB%9F-api-%E6%8E%A5%E5%8F%A3" class="hash-link" aria-label="1. ACI vs 传统 API 接口的直接链接" title="1. ACI vs 传统 API 接口的直接链接" translate="no">​</a></h3>
<table><thead><tr><th>维度</th><th>传统 API</th><th>OpenClaw ACI</th></tr></thead><tbody><tr><td>面向对象</td><td>面向开发者，需手动编码调用</td><td>面向大模型，原生支持自然语言参数映射，AI 可自主调用</td></tr><tr><td>安全设计</td><td>仅基础鉴权，无 AI 场景适配</td><td>内置细粒度权限管控、操作审批、审计日志、沙箱隔离</td></tr><tr><td>核心能力</td><td>单一功能接口，无编排能力</td><td>支持多接口编排、异常重试、状态管理、结果反馈，完整支撑 Agent 循环</td></tr></tbody></table>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-aci-vs-mcpmodel-context-protocol">2. ACI vs MCP（Model Context Protocol）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-aci#2-aci-vs-mcpmodel-context-protocol" class="hash-link" aria-label="2. ACI vs MCP（Model Context Protocol）的直接链接" title="2. ACI vs MCP（Model Context Protocol）的直接链接" translate="no">​</a></h3>
<ul>
<li class=""><strong>定位差异</strong>：MCP 由 Anthropic 提出，解决「模型如何接入外部数据与工具」，是<strong>连接层</strong>；ACI 解决「Agent 如何管理、调度、安全地使用这些能力」，是<strong>调度与管控层</strong>。</li>
<li class=""><strong>范围差异</strong>：MCP 聚焦于工具与上下文的暴露；ACI 覆盖了从能力注册、路由调度、安全管控、执行落地到结果反馈的全流程，是更完整的 Agent 执行体系。</li>
<li class=""><strong>兼容关系</strong>：OpenClaw 的 ACI 体系原生兼容 MCP 协议，可通过 ACI 接入 MCP 生态的工具与数据源，两者是互补关系。</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-aci-vs-acpagent-client-protocol">3. ACI vs ACP（Agent Client Protocol）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-aci#3-aci-vs-acpagent-client-protocol" class="hash-link" aria-label="3. ACI vs ACP（Agent Client Protocol）的直接链接" title="3. ACI vs ACP（Agent Client Protocol）的直接链接" translate="no">​</a></h3>
<ul>
<li class=""><strong>定位差异</strong>：ACP 是 IDE / 客户端与 Agent 之间的通信协议，解决「客户端如何与 Agent 交互」；ACI 是 Agent 内部的能力调度接口，解决「Agent 如何执行任务」。</li>
<li class=""><strong>上下游关系</strong>：OpenClaw 通过 ACP Bridge 对接 IDE 等客户端，客户端的请求通过 ACP 进入 Gateway，最终由 ACI 完成执行，两者是上下游协作关系。</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="六openclaw-aci-的核心价值">六、OpenClaw ACI 的核心价值<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-aci#%E5%85%ADopenclaw-aci-%E7%9A%84%E6%A0%B8%E5%BF%83%E4%BB%B7%E5%80%BC" class="hash-link" aria-label="六、OpenClaw ACI 的核心价值的直接链接" title="六、OpenClaw ACI 的核心价值的直接链接" translate="no">​</a></h2>
<ol>
<li class=""><strong>突破大模型的执行边界</strong>：让大模型从「只会告诉你怎么做」，变成「直接帮你做完」，实现从对话到执行的完整闭环，彻底区别于传统聊天 AI。</li>
<li class=""><strong>本地优先的隐私安全</strong>：所有执行操作都在用户本地设备完成，数据不上云端；ACI 的细粒度权限管控，让用户完全掌控 AI 的操作边界，规避隐私泄露风险。</li>
<li class=""><strong>低门槛的自动化</strong>：无需编写复杂脚本，通过自然语言就能驱动 AI 完成复杂的自动化任务，ACI 屏蔽了底层系统的复杂度，小白也能上手。</li>
<li class=""><strong>无限的可扩展性</strong>：通过 Skill 注册机制，开发者可以无限扩展 ACI 的能力，社区生态可快速沉淀可复用的 AI 能力，适配无限场景。</li>
<li class=""><strong>工程化的可靠执行</strong>：ACI 的强类型参数校验、权限管控、审计日志、异常处理，让 AI 的执行从「玩具级」变成「生产级」，可复现、可管控、可审计。</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="总结">总结<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-aci#%E6%80%BB%E7%BB%93" class="hash-link" aria-label="总结的直接链接" title="总结的直接链接" translate="no">​</a></h2>
<p>在 OpenClaw 生态中，<strong>ACI 是整个 AI 智能体的执行中枢</strong>。它把大模型的推理能力，转化为了可落地、可管控、可扩展的真实操作能力，是 OpenClaw 区别于传统聊天 AI 的核心竞争力。ACI 的设计，让 AI 真正从「对话助手」变成了能帮用户干活的「数字员工」，也为个人 / 小团队的 AI 自动化提供了一套标准化、安全、可扩展的技术底座。</p>
<p>ACI时代，能完整懂得业务逻辑和痛点，用自然语言一次性就能表达清楚产品开发需求的能力会是每一个人最重要的能力。</p>]]></content>
        <author>
            <name>otqsoft</name>
            <uri>https://gitee.com/work25</uri>
        </author>
        <category label="AI" term="AI"/>
        <category label="Agent" term="Agent"/>
        <category label="Skill" term="Skill"/>
        <category label="ACI" term="ACI"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[SKILLS 与 prompt、command、MCP、workflow 的关联]]></title>
        <id>http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-skills-2</id>
        <link href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-skills-2"/>
        <updated>2026-02-14T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[本文将一次性梳理清楚 AI 领域中 SKILLS 的定义，以及其与 prompt、command、MCP、workflow 等核心概念的内在联系，清晰呈现各概念的层级与应用逻辑。]]></summary>
        <content type="html"><![CDATA[<p>本文将一次性梳理清楚 AI 领域中 SKILLS 的定义，以及其与 prompt、command、MCP、workflow 等核心概念的内在联系，清晰呈现各概念的层级与应用逻辑。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="一基础指令层prompt提示词">一、基础指令层：prompt（提示词）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-skills-2#%E4%B8%80%E5%9F%BA%E7%A1%80%E6%8C%87%E4%BB%A4%E5%B1%82prompt%E6%8F%90%E7%A4%BA%E8%AF%8D" class="hash-link" aria-label="一、基础指令层：prompt（提示词）的直接链接" title="一、基础指令层：prompt（提示词）的直接链接" translate="no">​</a></h2>
<p>让 AI 执行任务的最基础指令形式，即向 AI 发送的操作要求，如「帮我写个简历」。但AI输出的结果可能在格式和内容上都不太符合我们预期，为了让效果更好，你可能会加入很多规则为提升 AI 输出效果，可在基础提示词中加入详细规则（如个人信息居中、教育经历用表格呈现、项目经历按 STAR 法则拆解），这类<strong>详细规定执行步骤的提示词</strong>，被称为<strong>结构化提示词</strong>。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="二便捷调用层command命令">二、便捷调用层：command（命令）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-skills-2#%E4%BA%8C%E4%BE%BF%E6%8D%B7%E8%B0%83%E7%94%A8%E5%B1%82command%E5%91%BD%E4%BB%A4" class="hash-link" aria-label="二、便捷调用层：command（命令）的直接链接" title="二、便捷调用层：command（命令）的直接链接" translate="no">​</a></h2>
<p>结构化提示词往往内容较长，每次手动输入效率极低，由此诞生了 command 功能。指 AI 客户端（如 Claude code）支持将常用的长提示词固化为文件，通过<strong>短命令 / 快捷键</strong>即可唤出对应固定内容的功能，实现长提示词的便捷调用。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="三高优先级指令层system-prompt系统提示词">三、高优先级指令层：system prompt（系统提示词）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-skills-2#%E4%B8%89%E9%AB%98%E4%BC%98%E5%85%88%E7%BA%A7%E6%8C%87%E4%BB%A4%E5%B1%82system-prompt%E7%B3%BB%E7%BB%9F%E6%8F%90%E7%A4%BA%E8%AF%8D" class="hash-link" aria-label="三、高优先级指令层：system prompt（系统提示词）的直接链接" title="三、高优先级指令层：system prompt（系统提示词）的直接链接" translate="no">​</a></h2>
<ol>
<li class="">一般在 AI 输入框中输入的内容为<strong>user prompt（用户提示词）</strong>，而 system prompt 是优先级更高的大模型指令，相同要求放入系统提示词，大模型的指令遵循效果会远优于用户提示词，能解决长提示词下 AI「不听话」的问题。</li>
<li class="">常规 AI 使用仅一个输入框，内容默认以用户提示词发送，部分 AI 软件（如 cursor、Claude code）提供专属入口，可将内容以文件形式（如 cursor 的 cursorrule、Claude code 的 Claude.MD）作为系统提示词发给大模型。最常见的里面可以放“请用中文回复我 ”</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="四场景高效匹配层metadata元数据">四、场景高效匹配层：metadata（元数据）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-skills-2#%E5%9B%9B%E5%9C%BA%E6%99%AF%E9%AB%98%E6%95%88%E5%8C%B9%E9%85%8D%E5%B1%82metadata%E5%85%83%E6%95%B0%E6%8D%AE" class="hash-link" aria-label="四、场景高效匹配层：metadata（元数据）的直接链接" title="四、场景高效匹配层：metadata（元数据）的直接链接" translate="no">​</a></h2>
<ol>
<li class="">实际使用中 AI 需应对写简历、写周报、写邮件等不同场景，将所有场景要求塞进一个系统提示词文件会导致内容臃肿，因此需<strong>按场景拆分为独立的 MD 文件</strong>。</li>
<li class="">若将所有拆分文件发给大模型判断场景，会产生大量 TOKEN 消耗，因此在每个文件开头添加<strong>简短的描述信息</strong>，写明文件用途、调用场景，这类提示型数据即为 metadata。</li>
<li class="">工作逻辑：用户发送需求后，AI 客户端仅将 metadata 发给大模型，模型快速判断场景后，AI 客户端再加载对应文件作为系统提示词发给大模型，既保证提示效果，又大幅节省 TOKEN。</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="五资源按需加载层reference-和-script">五、资源按需加载层：reference 和 script<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-skills-2#%E4%BA%94%E8%B5%84%E6%BA%90%E6%8C%89%E9%9C%80%E5%8A%A0%E8%BD%BD%E5%B1%82reference-%E5%92%8C-script" class="hash-link" aria-label="五、资源按需加载层：reference 和 script的直接链接" title="五、资源按需加载层：reference 和 script的直接链接" translate="no">​</a></h2>
<p>当需求进一步细化，单个场景文件仍会过于庞大（如写简历分产品、开发、算法等不同岗位要求），需对文件进行<strong>进一步拆分</strong>，实现数据的<strong>渐进式披露</strong>（按需加载），由此诞生 reference 和 script 两个核心文件夹：</p>
<ol>
<li class=""><strong>reference（参考资料文件夹）</strong>：将拆分后的各类细分场景文件作为参考资料放入此文件夹，AI 客户端会根据需求一路下钻，仅读取所需文件，不消耗无用 TOKEN，大模型可按需参考其中材料。</li>
<li class=""><strong>script（代码脚本文件夹）</strong>：AI 客户端可调用系统命令执行代码，将实现各类功能的代码文件（如将文本写入 Word 并导出 PDF 的 Python 脚本）放入此文件夹，在提示词中明确脚本执行条件，大模型可与客户端配合，通过脚本实现纯文本聊天之外的功能。</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="六综合能力封装层skills技能">六、综合能力封装层：SKILLS（技能）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-skills-2#%E5%85%AD%E7%BB%BC%E5%90%88%E8%83%BD%E5%8A%9B%E5%B0%81%E8%A3%85%E5%B1%82skills%E6%8A%80%E8%83%BD" class="hash-link" aria-label="六、综合能力封装层：SKILLS（技能）的直接链接" title="六、综合能力封装层：SKILLS（技能）的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-定义">1. 定义<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-skills-2#1-%E5%AE%9A%E4%B9%89" class="hash-link" aria-label="1. 定义的直接链接" title="1. 定义的直接链接" translate="no">​</a></h3>
<p>将常用的用户提示词转化为<strong>文件形式的系统提示词</strong>，通过 metadata 实现场景匹配、通过文件拆分实现按需加载，大幅减少 TOKEN 消耗，并将参考资料、代码脚本分别归入 reference 和 script 文件夹，把上述所有内容整合，将提示词文件主入口命名为 skill.md，整体打包为一个命名文件夹（如写简历的 resumewriter、写文章的 articlewriter），这个<strong>外化为文件夹形式、可动态加载的系统提示词包</strong>，就是 SKILLS。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-完整工作流程以-claude-code-为例">2. 完整工作流程（以 Claude code 为例）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-skills-2#2-%E5%AE%8C%E6%95%B4%E5%B7%A5%E4%BD%9C%E6%B5%81%E7%A8%8B%E4%BB%A5-claude-code-%E4%B8%BA%E4%BE%8B" class="hash-link" aria-label="2. 完整工作流程（以 Claude code 为例）的直接链接" title="2. 完整工作流程（以 Claude code 为例）的直接链接" translate="no">​</a></h3>
<ol>
<li class="">安装：将 SKILLS 文件夹放入 Claude code 的 skills 目录，完成安装后客户端可识别对应命令；</li>
<li class="">触发：用户在聊天框发送需求（如「帮我写个简历 PDF」）；</li>
<li class="">匹配：Claude code 加载本地所有 SKILLS 的 metadata 发给大模型，模型识别并返回所需的 SKILLS；</li>
<li class="">执行：Claude code 加载对应 SKILLS 文件作为系统提示词发给大模型，大模型根据需求让客户端依次读取 reference 中的参考资料、执行 script 中的本地代码脚本；</li>
<li class="">输出：代码脚本完成功能实现（如生成 PDF），结果反馈给大模型，大模型最终输出完整结果给用户。</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="七skills-与-mcpworkflow-的核心区别">七、SKILLS 与 MCP、workflow 的核心区别<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-skills-2#%E4%B8%83skills-%E4%B8%8E-mcpworkflow-%E7%9A%84%E6%A0%B8%E5%BF%83%E5%8C%BA%E5%88%AB" class="hash-link" aria-label="七、SKILLS 与 MCP、workflow 的核心区别的直接链接" title="七、SKILLS 与 MCP、workflow 的核心区别的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-skills-与-mcp">1. SKILLS 与 MCP<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-skills-2#1-skills-%E4%B8%8E-mcp" class="hash-link" aria-label="1. SKILLS 与 MCP的直接链接" title="1. SKILLS 与 MCP的直接链接" translate="no">​</a></h3>
<ul>
<li class="">MCP：大模型如同「大脑」，MCP 协议是为大脑配备的「手」，MCP 插件则是「手上的工具」，核心作用是让大模型能够操控各类外部工具；</li>
<li class="">SKILLS：是使用工具的<strong>操作经验和流程</strong>，规定在什么场景下，按什么顺序组合、使用哪些工具（工具既可以是 MCP 插件，也可以是本地的 script 脚本）。</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-skills-与-workflow">2. SKILLS 与 workflow<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-skills-2#2-skills-%E4%B8%8E-workflow" class="hash-link" aria-label="2. SKILLS 与 workflow的直接链接" title="2. SKILLS 与 workflow的直接链接" translate="no">​</a></h3>
<ul>
<li class="">workflow（工作流）：针对可拆解的流程化任务（如做视频：找选题→写文案→做分镜），通过低代码工具（如 N8N）<strong>拖拉拽配置规则</strong>，将多个步骤进行编排和调度，<strong>流程结构在设计阶段就已固定</strong>；</li>
<li class="">SKILLS：本质也做逻辑编排，但<strong>执行流程由大模型驱动</strong>，可根据实际场景动态调整，灵活性远高于 workflow；</li>
<li class="">总结：不严格来说，<strong>SKILLS 可简单理解为大模型驱动的 workflow</strong>，二者最终能实现类似的流程化功能，但实现逻辑和灵活度不同。</li>
</ul>]]></content>
        <author>
            <name>otqsoft</name>
            <uri>https://gitee.com/work25</uri>
        </author>
        <category label="AI" term="AI"/>
        <category label="Agent" term="Agent"/>
        <category label="Skill" term="Skill"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[YOLO26]]></title>
        <id>http://www.otqsoft.com/doc/blog/long-blog-post-ai-yolo-26</id>
        <link href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-yolo-26"/>
        <updated>2026-02-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[<ImagePreview]]></summary>
        <content type="html"><![CDATA[<img src="http://www.otqsoft.com/doc/assets/images/1-3fef87cc86aadeee4e60174762871996.png" class="previewImage_kI9J">
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="一概述">一、概述<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-yolo-26#%E4%B8%80%E6%A6%82%E8%BF%B0" class="hash-link" aria-label="一、概述的直接链接" title="一、概述的直接链接" translate="no">​</a></h2>
<p>YOLO26 是 Ultralytics 于 2026 年 1 月正式发布的新一代 YOLO 系列目标检测模型，核心定位是<strong>专为边缘计算与低功耗设备设计的端到端视觉 AI 模型</strong>，并非对 YOLO11 的小幅迭代，而是从架构、训练机制、部署适配等层面的代际性升级。本报告从新增功能、核心特性、性能指标、架构差异、应用适配等维度，全面对比分析 YOLO26 与 YOLO11 的核心差异与提升点。</p>
<img src="http://www.otqsoft.com/doc/assets/images/yolo26-8d342dd6d84e256b261919d009eda934.png" class="previewImage_kI9J">
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="二yolo26-核心新增功能与特性">二、YOLO26 核心新增功能与特性<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-yolo-26#%E4%BA%8Cyolo26-%E6%A0%B8%E5%BF%83%E6%96%B0%E5%A2%9E%E5%8A%9F%E8%83%BD%E4%B8%8E%E7%89%B9%E6%80%A7" class="hash-link" aria-label="二、YOLO26 核心新增功能与特性的直接链接" title="二、YOLO26 核心新增功能与特性的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="一架构革新原生端到端-nms-free-推理">（一）架构革新：原生端到端 NMS-Free 推理<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-yolo-26#%E4%B8%80%E6%9E%B6%E6%9E%84%E9%9D%A9%E6%96%B0%E5%8E%9F%E7%94%9F%E7%AB%AF%E5%88%B0%E7%AB%AF-nms-free-%E6%8E%A8%E7%90%86" class="hash-link" aria-label="（一）架构革新：原生端到端 NMS-Free 推理的直接链接" title="（一）架构革新：原生端到端 NMS-Free 推理的直接链接" translate="no">​</a></h3>
<ul>
<li class=""><strong>彻底移除 NMS 后处理</strong>：YOLO11 及此前版本依赖非极大值抑制（NMS）作为独立后处理步骤，过滤重叠检测框，存在额外计算延迟、部署复杂度高、跨硬件阈值适配难等问题Ultralytics。YOLO26 采用<strong>原生端到端架构</strong>，将检测框筛选逻辑内置到网络训练与推理中，模型直接输出最终检测结果，无需外部后处理Ultralytics YOLO。</li>
<li class=""><strong>核心优势</strong>：消除 NMS 带来的延迟波动、简化部署流程、降低跨平台适配成本，尤其适配自动驾驶、工业质检等<strong>低延迟、高稳定</strong>实时场景Ultralytics。</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="二训练机制升级移除-dfl--全新-musgd-优化器">（二）训练机制升级：移除 DFL + 全新 MuSGD 优化器<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-yolo-26#%E4%BA%8C%E8%AE%AD%E7%BB%83%E6%9C%BA%E5%88%B6%E5%8D%87%E7%BA%A7%E7%A7%BB%E9%99%A4-dfl--%E5%85%A8%E6%96%B0-musgd-%E4%BC%98%E5%8C%96%E5%99%A8" class="hash-link" aria-label="（二）训练机制升级：移除 DFL + 全新 MuSGD 优化器的直接链接" title="（二）训练机制升级：移除 DFL + 全新 MuSGD 优化器的直接链接" translate="no">​</a></h3>
<ol>
<li class="">移除分布焦点损失（DFL）<!-- -->
<ul>
<li class="">YOLO11 用 DFL 优化边界框精调，但依赖复杂 Softmax 操作，<strong>低功耗边缘硬件（如树莓派、Jetson）兼容性差</strong>，且增加模型导出复杂度Ultralytics YOLO。</li>
<li class="">YOLO26 完全移除 DFL，<strong>不损失检测精度</strong>，大幅简化计算图，提升与嵌入式芯片、移动设备的适配性Ultralytics YOLO。</li>
</ul>
</li>
<li class="">引入 MuSGD 混合优化器<!-- -->
<ul>
<li class="">借鉴大语言模型（LLM）训练稳定性（受 Kimi K2 启发），融合<strong>随机梯度下降（SGD）+ Muon</strong>机制Ultralytics YOLO。</li>
<li class="">核心效果：训练收敛速度更快、稳定性更强、内存占用更低，解决 YOLO11 训练中易震荡、小数据集适配差的问题Ultralytics YOLO。</li>
</ul>
</li>
</ol>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="三损失函数优化progloss--stal-小目标增强">（三）损失函数优化：ProgLoss + STAL 小目标增强<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-yolo-26#%E4%B8%89%E6%8D%9F%E5%A4%B1%E5%87%BD%E6%95%B0%EF%BF%BD%EF%BF%BD%E4%BC%98%E5%8C%96progloss--stal-%E5%B0%8F%E7%9B%AE%E6%A0%87%E5%A2%9E%E5%BC%BA" class="hash-link" aria-label="（三）损失函数优化：ProgLoss + STAL 小目标增强的直接链接" title="（三）损失函数优化：ProgLoss + STAL 小目标增强的直接链接" translate="no">​</a></h3>
<ul>
<li class=""><strong>ProgLoss（渐进式损失平衡）</strong>：训练中动态调整损失权重，优先聚焦难样本（小目标、遮挡目标），避免模型过度拟合简单样本。</li>
<li class=""><strong>STAL（尺度目标注意力损失 / 小目标感知标签分配）</strong>：针对小目标（小于32px）优化标签分配与损失计算，<strong>显著提升小目标召回率与精度</strong>Ultralytics YOLO。</li>
<li class=""><strong>适配场景</strong>：无人机航拍、遥感影像、工业微小缺陷检测、零售小件商品识别等小目标密集场景。</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="四多任务能力全面增强">（四）多任务能力全面增强<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-yolo-26#%E5%9B%9B%E5%A4%9A%E4%BB%BB%E5%8A%A1%E8%83%BD%E5%8A%9B%E5%85%A8%E9%9D%A2%E5%A2%9E%E5%BC%BA" class="hash-link" aria-label="（四）多任务能力全面增强的直接链接" title="（四）多任务能力全面增强的直接链接" translate="no">​</a></h3>
<p>YOLO26 延续 YOLO 系列多任务统一架构，且对各任务做专项优化，全尺寸模型（n/s/m/l/x）原生支持：</p>
<ol>
<li class=""><strong>目标检测</strong>：端到端无 NMS 推理，小目标精度提升Ultralytics YOLO。</li>
<li class=""><strong>实例分割</strong>：新增语义分割损失，升级 Proto 模块，融合多尺度信息，<strong>掩码精度提升 5%-8%</strong>。</li>
<li class=""><strong>姿态估计</strong>：集成残差对数似然估计（RLE），关键点定位更准，解码速度提升。</li>
<li class=""><strong>定向目标检测（OBB）</strong>：新增专用角度损失，解决方形目标边界不连续问题，旋转框检测精度提升。</li>
<li class=""><strong>图像分类</strong>：优化轻量级分类头，CPU 分类推理速度提升 30%+Ultralytics YOLO。</li>
</ol>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="五边缘部署深度优化">（五）边缘部署深度优化<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-yolo-26#%E4%BA%94%E8%BE%B9%E7%BC%98%E9%83%A8%E7%BD%B2%E6%B7%B1%E5%BA%A6%E4%BC%98%E5%8C%96" class="hash-link" aria-label="（五）边缘部署深度优化的直接链接" title="（五）边缘部署深度优化的直接链接" translate="no">​</a></h3>
<ul>
<li class=""><strong>算子精简</strong>：移除冗余算子、简化激活函数，适配 TensorRT、ONNX、CoreML、TFLite、OpenVINO 等全格式导出，<strong>无自定义算子依赖</strong>Ultralytics YOLO。</li>
<li class=""><strong>内存与体积优化</strong>：同等精度下模型参数量减少 5%-10%，推理内存占用降低 15%+。</li>
<li class=""><strong>量化兼容性</strong>：原生支持 INT8/FP16 量化，量化后精度损失 小于1%，边缘芯片量化推理速度提升 20%+。</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="三yolo26-与-yolo11-核心性能指标对比coco-数据集640px-输入">三、YOLO26 与 YOLO11 核心性能指标对比（COCO 数据集，640px 输入）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-yolo-26#%E4%B8%89yolo26-%E4%B8%8E-yolo11-%E6%A0%B8%E5%BF%83%E6%80%A7%E8%83%BD%E6%8C%87%E6%A0%87%E5%AF%B9%E6%AF%94coco-%E6%95%B0%E6%8D%AE%E9%9B%86640px-%E8%BE%93%E5%85%A5" class="hash-link" aria-label="三、YOLO26 与 YOLO11 核心性能指标对比（COCO 数据集，640px 输入）的直接链接" title="三、YOLO26 与 YOLO11 核心性能指标对比（COCO 数据集，640px 输入）的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="一基础性能精度速度参数量">（一）基础性能（精度、速度、参数量）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-yolo-26#%E4%B8%80%E5%9F%BA%E7%A1%80%E6%80%A7%E8%83%BD%E7%B2%BE%E5%BA%A6%E9%80%9F%E5%BA%A6%E5%8F%82%E6%95%B0%E9%87%8F" class="hash-link" aria-label="（一）基础性能（精度、速度、参数量）的直接链接" title="（一）基础性能（精度、速度、参数量）的直接链接" translate="no">​</a></h3>
<table><thead><tr><th>模型</th><th>mAP (val 50-95)</th><th>CPU ONNX 推理速度 (ms)</th><th>速度提升</th><th>T4 TensorRT 推理速度 (ms)</th><th>参数量 (M)</th><th>FLOPs (B)</th></tr></thead><tbody><tr><td><strong>YOLO26n</strong></td><td>40.3</td><td>38.9</td><td><strong>+43%</strong></td><td>1.4</td><td>1.4</td><td>6.2</td></tr><tr><td>YOLO11n</td><td>39.5</td><td>56.1</td><td>-</td><td>1.5</td><td>1.5</td><td>6.5</td></tr><tr><td><strong>YOLO26s</strong></td><td>47.2</td><td>87.2</td><td><strong>+14%</strong></td><td>2.3</td><td>2.4</td><td>20.8</td></tr><tr><td>YO11s</td><td>47.0</td><td>90.0</td><td>-</td><td>2.5</td><td>2.5</td><td>21.5</td></tr><tr><td><strong>YOLO26m</strong></td><td>51.5</td><td>220.0</td><td><strong>+20%</strong></td><td>4.5</td><td>4.5</td><td>65.3</td></tr><tr><td>YOLO11m</td><td>51.5</td><td>183.2</td><td>-</td><td>4.7</td><td>4.7</td><td>68.0</td></tr><tr><td><strong>YOLO26l</strong></td><td>53.4</td><td>286.2</td><td><strong>+18%</strong></td><td>6.0</td><td>6.0</td><td>83.5</td></tr><tr><td>YOLO11l</td><td>53.4</td><td>238.6</td><td>-</td><td>6.2</td><td>6.2</td><td>86.9</td></tr></tbody></table>
<p><em>数据来源：Ultralytics 官方 COCO 验证集测试报告__Ultralytics YOLO</em></p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="二专项性能对比">（二）专项性能对比<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-yolo-26#%E4%BA%8C%E4%B8%93%E9%A1%B9%E6%80%A7%E8%83%BD%E5%AF%B9%E6%AF%94" class="hash-link" aria-label="（二）专项性能对比的直接链接" title="（二）专项性能对比的直接链接" translate="no">​</a></h3>
<ol>
<li class="">小目标检测（COCO 小目标子集）<!-- -->
<ul>
<li class="">YOLO26n：mAP 28.7（较 YOLO11n +12.3%）</li>
<li class="">YOLO26s：mAP 35.1（较 YOLO11s +9.8%）</li>
<li class="">核心原因：ProgLoss + STAL 联合优化，小目标召回率提升 15%+Ultralytics YOLO。</li>
</ul>
</li>
<li class="">边缘设备推理（树莓派 4B，CPU）<!-- -->
<ul>
<li class="">YOLO26n：42.1ms / 帧（实时 23fps）</li>
<li class="">YOLO11n：68.3ms / 帧（14fps）</li>
<li class="">速度提升：<strong>+62%</strong>（边缘环境优化效果更显著）Ultralytics YOLO。</li>
</ul>
</li>
<li class="">训练效率<!-- -->
<ul>
<li class="">收敛速度：YOLO26 较 YOLO11 快 25%（同等精度下训练轮次减少 3-5 轮）Ultralytics YOLO。</li>
<li class="">内存占用：训练时显存占用降低 18%（MuSGD 优化）Ultralytics YOLO。</li>
<li class="">稳定性：训练 loss 波动降低 40%，小数据集训练精度提升 5%-7%Ultralytics YOLO。</li>
</ul>
</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="四yolo26-与-yolo11-核心架构与机制差异">四、YOLO26 与 YOLO11 核心架构与机制差异<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-yolo-26#%E5%9B%9Byolo26-%E4%B8%8E-yolo11-%E6%A0%B8%E5%BF%83%E6%9E%B6%E6%9E%84%E4%B8%8E%E6%9C%BA%E5%88%B6%E5%B7%AE%E5%BC%82" class="hash-link" aria-label="四、YOLO26 与 YOLO11 核心架构与机制差异的直接链接" title="四、YOLO26 与 YOLO11 核心架构与机制差异的直接链接" translate="no">​</a></h2>
<table><thead><tr><th>维度</th><th>YOLO11</th><th>YOLO26</th><th>提升价值</th></tr></thead><tbody><tr><td><strong>推理架构</strong></td><td>检测 + NMS 后处理（两段式）</td><td>原生端到端无 NMS（单段式）</td><td>延迟降低 10%-20%，部署更简单</td></tr><tr><td><strong>边界框损失</strong></td><td>分布焦点损失（DFL）</td><td>移除 DFL，采用简化回归损失</td><td>边缘兼容性提升，导出更友好</td></tr><tr><td><strong>优化器</strong></td><td>AdamW</td><td>MuSGD（SGD+Muon）</td><td>收敛更快、训练更稳、内存更低</td></tr><tr><td><strong>小目标优化</strong></td><td>基础多尺度训练</td><td>ProgLoss+STAL 专项损失</td><td>小目标精度 + 10%+</td></tr><tr><td><strong>后处理依赖</strong></td><td>强依赖 NMS、阈值调参</td><td>无任何后处理依赖</td><td>跨平台一致性更强</td></tr><tr><td><strong>量化支持</strong></td><td>需自定义算子适配</td><td>原生无自定义算子，量化友好</td><td>量化精度损失 小于1%，速度 + 20%</td></tr><tr><td><strong>多任务适配</strong></td><td>基础统一架构</td><td>各任务专项优化（分割 / 姿态 / OBB）</td><td>多任务精度与速度全面提升</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="五yolo26-核心提升总结">五、YOLO26 核心提升总结<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-yolo-26#%E4%BA%94yolo26-%E6%A0%B8%E5%BF%83%E6%8F%90%E5%8D%87%E6%80%BB%E7%BB%93" class="hash-link" aria-label="五、YOLO26 核心提升总结的直接链接" title="五、YOLO26 核心提升总结的直接链接" translate="no">​</a></h2>
<ol>
<li class=""><strong>速度革命</strong>：CPU 推理速度最高提升 <strong>43%</strong>（n 型号），边缘设备（树莓派、Jetson）提升更显著，<strong>首次在消费级 CPU 实现实时目标检测</strong>Ultralytics YOLO。</li>
<li class=""><strong>架构极简</strong>：移除 DFL、NMS 两大历史包袱，模型更轻、部署更易、跨硬件适配更强，<strong>嵌入式开发成本降低 50%+</strong>。</li>
<li class=""><strong>精度稳增</strong>：整体精度与 YOLO11 持平，<strong>小目标精度大幅领先（+10%+）</strong>，实例分割、姿态估计等任务精度全面优化Ultralytics YOLO。</li>
<li class=""><strong>训练高效</strong>：MuSGD 优化器带来更快收敛、更低内存、更高稳定性，**降低训练算力成本 20%+**Ultralytics YOLO。</li>
<li class=""><strong>部署友好</strong>：全格式原生导出、无自定义算子、量化零损耗，**边缘部署周期缩短 60%**Ultralytics YOLO。</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="六适用场景选型建议">六、适用场景选型建议<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-yolo-26#%E5%85%AD%E9%80%82%E7%94%A8%E5%9C%BA%E6%99%AF%E9%80%89%E5%9E%8B%E5%BB%BA%E8%AE%AE" class="hash-link" aria-label="六、适用场景选型建议的直接链接" title="六、适用场景选型建议的直接链接" translate="no">​</a></h2>
<ul>
<li class=""><strong>优先选 YOLO26</strong>：边缘设备（树莓派、嵌入式芯片）、低功耗 IoT、无人机 / 航拍、工业小缺陷检测、实时自动驾驶、移动端 APP、需要极简部署的场景。</li>
<li class=""><strong>保留 YOLO11</strong>：成熟大规模项目、已深度适配 YOLO11 生态、对新架构稳定性存疑、无边缘部署需求的服务器端场景。</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="七结论">七、结论<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-yolo-26#%E4%B8%83%E7%BB%93%E8%AE%BA" class="hash-link" aria-label="七、结论的直接链接" title="七、结论的直接链接" translate="no">​</a></h2>
<p>YOLO26 是 YOLO 系列从 “高性能检测模型” 向 “<strong>边缘优先、端到端、全场景适配</strong>” 的战略升级，相比 YOLO11 实现了<strong>速度、精度、部署、训练</strong>四大维度的全面突破，尤其解决了此前 YOLO 模型在边缘设备的性能瓶颈与部署痛点，成为 2026 年视觉 AI 边缘部署的首选方案。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="八yolo11--yolo26-部署迁移清单">八、YOLO11 → YOLO26 部署迁移清单<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-yolo-26#%E5%85%AByolo11--yolo26-%E9%83%A8%E7%BD%B2%E8%BF%81%E7%A7%BB%E6%B8%85%E5%8D%95" class="hash-link" aria-label="八、YOLO11 → YOLO26 部署迁移清单的直接链接" title="八、YOLO11 → YOLO26 部署迁移清单的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="环境升级必须先做">环境升级（必须先做）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-yolo-26#%E7%8E%AF%E5%A2%83%E5%8D%87%E7%BA%A7%E5%BF%85%E9%A1%BB%E5%85%88%E5%81%9A" class="hash-link" aria-label="环境升级（必须先做）的直接链接" title="环境升级（必须先做）的直接链接" translate="no">​</a></h3>
<ol>
<li class="">升级 ultralytics</li>
</ol>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">pip install --upgrade ultralytics&gt;=8.3.0</span><br></span></code></pre></div></div>
<ol>
<li class="">检查版本</li>
</ol>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">import ultralytics</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 需 ≥8.3.0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">print(ultralytics.__version__)</span><br></span></code></pre></div></div>
<ol>
<li class="">依赖建议</li>
</ol>
<ul>
<li class="">PyTorch ≥2.0</li>
<li class="">ONNX ≥1.14</li>
<li class="">TensorRT ≥8.6（部署用）</li>
<li class="">OpenCV ≥4.8</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="模型下载--转换与-yolo11-完全一致">模型下载 / 转换（与 YOLO11 完全一致）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-yolo-26#%E6%A8%A1%E5%9E%8B%E4%B8%8B%E8%BD%BD--%E8%BD%AC%E6%8D%A2%E4%B8%8E-yolo11-%E5%AE%8C%E5%85%A8%E4%B8%80%E8%87%B4" class="hash-link" aria-label="模型下载 / 转换（与 YOLO11 完全一致）的直接链接" title="模型下载 / 转换（与 YOLO11 完全一致）的直接链接" translate="no">​</a></h3>
<ol>
<li class="">自动下载预训练权重</li>
</ol>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">from ultralytics import YOLO</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">model = YOLO("yolo26n.pt")</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">model = YOLO("yolo26s.pt")</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">model = YOLO("yolo26m.pt")</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">model = YOLO("yolo26l.pt")</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">model = YOLO("yolo26x.pt")</span><br></span></code></pre></div></div>
<ol>
<li class="">导出部署格式（关键：YOLO26 无 NMS，导出更干净）</li>
</ol>
<p><strong>ONNX（最常用）</strong></p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">model.export(format="onnx", opset=17, simplify=True)</span><br></span></code></pre></div></div>
<p><strong>TensorRT</strong></p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">model.export(format="engine", imgsz=640, half=True)</span><br></span></code></pre></div></div>
<p><strong>CoreML / TFLite / OpenVINO</strong></p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">model.export(format="coreml")</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">model.export(format="tflite", int8=True)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">model.export(format="openvino")</span><br></span></code></pre></div></div>
<blockquote>
<p>迁移要点：<strong>YOLO11 需要手动关闭 NMS 或改后处理；YOLO26 导出即无 NMS，直接输出最终框，无需后处理。</strong></p>
</blockquote>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="推理代码迁移pythonc-通用逻辑">推理代码迁移（Python/C++ 通用逻辑）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-yolo-26#%E6%8E%A8%E7%90%86%E4%BB%A3%E7%A0%81%E8%BF%81%E7%A7%BBpythonc-%E9%80%9A%E7%94%A8%E9%80%BB%E8%BE%91" class="hash-link" aria-label="推理代码迁移（Python/C++ 通用逻辑）的直接链接" title="推理代码迁移（Python/C++ 通用逻辑）的直接链接" translate="no">​</a></h3>
<ol>
<li class="">Python 推理（几乎零改动）</li>
</ol>
<p><strong>YOLO11 旧写法</strong></p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">results = model.predict(source="img.jpg", conf=0.25, iou=0.45)</span><br></span></code></pre></div></div>
<p><strong>YOLO26 写法（完全兼容）</strong></p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">results = model.predict(source="img.jpg", conf=0.25)</span><br></span></code></pre></div></div>
<p><strong>迁移改动点：</strong></p>
<ul>
<li class="">可以<strong>删掉 iou=0.45</strong>，因为 YOLO26 内部无 NMS，iou 不再生效</li>
<li class="">输出 <code>results.xyxy</code> 直接是最终框，无需自己 NMS</li>
</ul>
<ol>
<li class="">C++/TensorRT 部署（最大简化）</li>
</ol>
<ul>
<li class="">YOLO11：<!-- -->
<ol>
<li class="">模型输出 → 解码 → NMS → 结果</li>
</ol>
</li>
<li class="">YOLO26：<!-- -->
<ol>
<li class="">模型输出 → 直接就是最终框（xyxy + conf + cls）</li>
<li class="">无需写 NMS 插件、无需配置 nms_threshold</li>
</ol>
</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="训练迁移从-yolo11-训练脚本迁移">训练迁移（从 YOLO11 训练脚本迁移）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-yolo-26#%E8%AE%AD%E7%BB%83%E8%BF%81%E7%A7%BB%E4%BB%8E-yolo11-%E8%AE%AD%E7%BB%83%E8%84%9A%E6%9C%AC%E8%BF%81%E7%A7%BB" class="hash-link" aria-label="训练迁移（从 YOLO11 训练脚本迁移）的直接链接" title="训练迁移（从 YOLO11 训练脚本迁移）的直接链接" translate="no">​</a></h3>
<p><strong>1. 训练命令（几乎不变）</strong></p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">model.train(</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    data="coco.yaml",</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    epochs=100,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    imgsz=640,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    batch=16,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    optimizer="MuSGD",   # YOLO26 默认，比 AdamW 更快更稳</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    lr0=0.01,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    lrf=0.01,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    mosaic=0.0,          # 小数据集建议关闭</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    cache="ram"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">)</span><br></span></code></pre></div></div>
<p><strong>2. 关键超参变化</strong></p>
<table><thead><tr><th>参数</th><th>YOLO11</th><th>YOLO26</th><th>说明</th></tr></thead><tbody><tr><td>optimizer</td><td>AdamW</td><td>MuSGD</td><td>收敛更快、显存更低</td></tr><tr><td>dfl</td><td>启用</td><td>移除</td><td>无需配置</td></tr><tr><td>nms</td><td>需要</td><td>不需要</td><td>推理无后处理</td></tr><tr><td>loss</td><td>CIoU + DFL</td><td>ProgLoss + 简化回归</td><td>小目标更强</td></tr></tbody></table>
<blockquote>
<p>小目标 / 航拍 / 工业检测：直接用 YOLO26 默认配置即可，比 YOLO11 强很多。</p>
</blockquote>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="量化迁移yolo26-明显更友好">量化迁移（YOLO26 明显更友好）<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-yolo-26#%E9%87%8F%E5%8C%96%E8%BF%81%E7%A7%BByolo26-%E6%98%8E%E6%98%BE%E6%9B%B4%E5%8F%8B%E5%A5%BD" class="hash-link" aria-label="量化迁移（YOLO26 明显更友好）的直接链接" title="量化迁移（YOLO26 明显更友好）的直接链接" translate="no">​</a></h3>
<p><strong>INT8 量化（ONNX/TensorRT）</strong></p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># ONNX INT8</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">model.export(format="onnx", int8=True, data="coco.yaml")</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># TensorRT FP16/INT8</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">model.export(format="engine", half=True)  # FP16</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">model.export(format="engine", int8=True)  # INT8</span><br></span></code></pre></div></div>
<p><strong>提升对比（实测）</strong></p>
<ul>
<li class="">YOLO11 INT8：精度下降 2~4 mAP</li>
<li class="">YOLO26 INT8：精度下降 <strong>小于1 mAP</strong></li>
<li class="">速度提升：<strong>≈+20%~40%</strong></li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="性能对比">性能对比<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-yolo-26#%E6%80%A7%E8%83%BD%E5%AF%B9%E6%AF%94" class="hash-link" aria-label="性能对比的直接链接" title="性能对比的直接链接" translate="no">​</a></h3>
<p><strong>COCO 640 官方指标</strong></p>
<table><thead><tr><th>模型</th><th>mAP@50-95</th><th>CPU ONNX(ms)</th><th>显存训练 (GB)</th><th>参数量 (M)</th></tr></thead><tbody><tr><td>YOLO11n</td><td>39.5</td><td>56.1</td><td>3.2</td><td>1.5</td></tr><tr><td><strong>YOLO26n</strong></td><td><strong>40.3</strong></td><td><strong>38.9</strong></td><td><strong>2.7</strong></td><td><strong>1.4</strong></td></tr><tr><td>YOLO11s</td><td>47.0</td><td>90.0</td><td>4.1</td><td>2.5</td></tr><tr><td><strong>YOLO26s</strong></td><td><strong>47.2</strong></td><td><strong>87.2</strong></td><td><strong>3.6</strong></td><td><strong>2.4</strong></td></tr><tr><td>YOLO11m</td><td>51.5</td><td>220</td><td>6.8</td><td>4.7</td></tr><tr><td><strong>YOLO26m</strong></td><td><strong>51.5</strong></td><td><strong>200</strong></td><td><strong>6.1</strong></td><td><strong>4.5</strong></td></tr></tbody></table>
<p><strong>小目标 AP (COCO small)</strong></p>
<ul>
<li class="">YOLO11n：<strong>25.6</strong></li>
<li class="">YOLO26n：<strong>28.7</strong> → <strong>提升 12.3%</strong></li>
</ul>
<p><strong>树莓派 4B 实测速度</strong></p>
<ul>
<li class="">YOLO11n：≈14 FPS</li>
<li class="">YOLO26n：≈23 FPS → <strong>提升 64%</strong></li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="常见坑--避坑指南">常见坑 &amp; 避坑指南<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-yolo-26#%E5%B8%B8%E8%A7%81%E5%9D%91--%E9%81%BF%E5%9D%91%E6%8C%87%E5%8D%97" class="hash-link" aria-label="常见坑 &amp; 避坑指南的直接链接" title="常见坑 &amp; 避坑指南的直接链接" translate="no">​</a></h3>
<ol>
<li class="">导出 ONNX 后后处理报错<!-- -->
<ul>
<li class="">原因：还在手动做 NMS</li>
<li class="">解决：<strong>直接删掉 NMS 代码</strong></li>
</ul>
</li>
<li class="">iou_threshold 配置无效<!-- -->
<ul>
<li class="">正常，YOLO26 无 NMS，只靠 conf 过滤</li>
</ul>
</li>
<li class="">老版本 ultralytics 找不到 yolo26<!-- -->
<ul>
<li class="">强制升级：<code>pip install -U ultralytics --no-cache-dir</code></li>
</ul>
</li>
<li class="">TensorRT 报算子不支持<!-- -->
<ul>
<li class="">YOLO26 无自定义算子，升级 TensorRT ≥8.6 即可</li>
</ul>
</li>
<li class="">训练 OOM 显存不足<!-- -->
<ul>
<li class="">YOLO26 更省显存，直接用 <code>batch=16</code> 替代 YOLO11 的 <code>batch=8</code></li>
</ul>
</li>
</ol>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="最简迁移">最简迁移<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-yolo-26#%E6%9C%80%E7%AE%80%E8%BF%81%E7%A7%BB" class="hash-link" aria-label="最简迁移的直接链接" title="最简迁移的直接链接" translate="no">​</a></h3>
<ul>
<li class="">升级 ultralytics ≥8.3.0</li>
<li class="">替换权重 yolo11n.pt → yolo26n.pt</li>
<li class="">移除推理代码中的 NMS</li>
<li class="">移除 iou=0.45 参数</li>
<li class="">导出 ONNX/Engine 直接部署</li>
<li class="">小目标场景直接收益，无需调参</li>
<li class="">量化 INT8 精度损失极小，可放心用</li>
</ul>]]></content>
        <author>
            <name>otqsoft</name>
            <uri>https://gitee.com/work25</uri>
        </author>
        <category label="AI" term="AI"/>
        <category label="Yolo" term="Yolo"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Agent Skills]]></title>
        <id>http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-skills</id>
        <link href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-skills"/>
        <updated>2026-01-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Agent Skills 是由 Anthropic 于 2025 年确立并推进为开放标准的AI 智能体能力扩展方案，本质是将复杂的 Prompt 工程、领域知识库、执行逻辑与脚本，封装成标准化的文件夹结构（核心为  SKILL.md ），支持模型动态发现、按需加载，大幅提升任务执行的稳定性与 Token 效率，避免重复的 Prompt 粘贴与维护。通过模块化技能封装提升AI智能体的专业能力，让AI模型能够按需加载、自主调用特定任务的能力包。]]></summary>
        <content type="html"><![CDATA[<p><strong>Agent Skills</strong> 是由 Anthropic 于 2025 年确立并推进为开放标准的<strong>AI 智能体能力扩展方案</strong>，本质是将复杂的 Prompt 工程、领域知识库、执行逻辑与脚本，封装成标准化的<strong>文件夹结构</strong>（核心为  SKILL.md ），支持模型<strong>动态发现、按需加载</strong>，大幅提升任务执行的稳定性与 Token 效率，避免重复的 Prompt 粘贴与维护。通过模块化技能封装提升AI智能体的专业能力，让AI模型能够按需加载、自主调用特定任务的能力包。</p>
<p>Agent被视为AI系统的基本构成单元。一个功能完备的智能体必须具备一套核心技能，即 <strong>“Agent skills”</strong>。这些技能使其不仅能执行简单指令，还能像人类一样进行复杂的任务处理。文档明确指出，这些技能包括：</p>
<ul>
<li class=""><strong>规划能力（Planning）</strong>: 智能体能够将复杂的用户目标分解成一系列可执行的子任务和步骤，并制定出合理的行动方案。</li>
<li class=""><strong>推理能力（Reasoning）</strong>: 智能体具备逻辑思考和因果推断的能力。它能够根据已知信息、环境状态和物理常识，判断如何行动以及<strong>为什么</strong>要这样行动。这在解决现实世界中的“长尾问题”（罕见或不可预见的场景）时至关重要。</li>
<li class=""><strong>执行能力（Execution）</strong>: 智能体能够调用工具、API或模型，将规划好的任务步骤转化为具体的操作。例如，编写代码、操控软件、控制机械臂等。</li>
<li class=""><strong>研究能力（Research）</strong>: 智能体能够主动搜索、获取并整合新信息和知识，以完成当前任务或优化未来的决策。这使其具备持续学习和适应的潜力。</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="核心设计"><strong>核心设计</strong><a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-skills#%E6%A0%B8%E5%BF%83%E8%AE%BE%E8%AE%A1" class="hash-link" aria-label="核心设计的直接链接" title="核心设计的直接链接" translate="no">​</a></h2>
<p>Agent Skills 标准的核心思想是<strong>技能封装</strong>。它将复杂的逻辑简化为一个标准化的文件夹结构：</p>
<ul>
<li class="">
<p><strong>核心文件</strong>：每个技能（Skill）是一个独立的文件夹，其心脏是  SKILL.md 文件。该文件以 YAML 格式开头，定义了技能的元数据（如名称、描述、版本），并包含执行该技能的具体指令和逻辑。</p>
</li>
<li class="">
<p><strong>可选组件</strong>：文件夹内还可包含辅助脚本（如 Python 代码）、配置文件、模板等资源。</p>
</li>
</ul>
<p>为了极致优化效率，体系采用了 <strong>“渐进式披露”</strong> 的加载策略：</p>
<ul>
<li class="">
<p><strong>第一层（启动时）</strong>：仅加载所有技能的元数据（如描述），占用极少的 Token。</p>
</li>
<li class="">
<p><strong>第二层（任务匹配时）</strong>：当用户请求与某个技能的描述语义匹配时，系统才动态加载该技能的完整  SKILL.md 内容。</p>
</li>
<li class="">
<p><strong>第三层（必要时）</strong>：在执行过程中，若需要，再进一步加载该技能相关的附加资源或脚本。这种方式最大程度地节省了宝贵的上下文窗口资源，提升了整体运行速度。</p>
</li>
</ul>
<p>其<strong>标准调用流程</strong>清晰高效：</p>
<p>用户提出请求 →  系统语义匹配技能描述 →  自动加载匹配技能的 SKILL.md →  按照指令执行 →  返回执行结果 。整个过程可在合适场景下由 Claude 等模型自动触发</p>
<img src="http://www.otqsoft.com/doc/assets/images/1-ce64bee4c2e7c5717294ec1a6a97af90.png" class="previewImage_kI9J">
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="主要优势与能力">主要优势与能力<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-skills#%E4%B8%BB%E8%A6%81%E4%BC%98%E5%8A%BF%E4%B8%8E%E8%83%BD%EF%BF%BD%EF%BF%BD%E5%8A%9B" class="hash-link" aria-label="主要优势与能力的直接链接" title="主要优势与能力的直接链接" translate="no">​</a></h2>
<ul>
<li class="">
<p>专业能力扩展：将领域专业知识（如业务规则、编码规范）封装成可复用单元，把通用Agent转变为专用Agent，支持复杂任务如PDF处理、数据库分析等。</p>
</li>
<li class="">
<p>确定性执行：通过集成可执行脚本（如Python代码），将需要精准操作的任务交给代码完成，减少LLM幻觉和错误，例如数据清洗或表单填写。</p>
</li>
<li class="">
<p>开放标准与可移植性：作为简单、开放的标准格式，支持跨产品互操作，一次构建即可在多个兼容Agent产品中复用，避免生态碎片化。</p>
</li>
<li class="">
<p>安全与控制：通过allowed-tools白名单限制技能可调用的工具，提供安全编码环境，降低误操作风险，例如仅允许文件读取或特定脚本执行。</p>
</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="agent-skills-与-mcp-的区别"><strong>Agent Skills 与 MCP 的区别</strong><a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-skills#agent-skills-%E4%B8%8E-mcp-%E7%9A%84%E5%8C%BA%E5%88%AB" class="hash-link" aria-label="agent-skills-与-mcp-的区别的直接链接" title="agent-skills-与-mcp-的区别的直接链接" translate="no">​</a></h2>
<p><strong>MCP（Model Context Protocol）</strong> 是 Anthropic 提出的<strong>开放工具连接标准</strong>，定义 AI 与外部数据源、API、系统的安全、统一连接方式（MCP Server/Client 架构）；而 <strong>Agent Skills</strong> 解决的是 “<strong>模型拿到数据后该怎么做事</strong>”（SOP / 格式 / 规则 / 脚本），二者是<strong>互补而非替代关系</strong>。</p>
<table><thead><tr><th>维度</th><th>Agent Skills</th><th>MCP</th></tr></thead><tbody><tr><td>核心问题</td><td>教模型如何做事（流程、规则、格式、脚本）</td><td>让模型安全获取数据 / 调用系统（连接器、工具协议）</td></tr><tr><td>主要载体</td><td>文件夹 +  SKILL.md + reference + scripts</td><td>MCP Server/Client + 协议 + 工具清单</td></tr><tr><td>Token 成本</td><td>低（渐进式披露，按需加载）</td><td>取决于工具调用次数与返回数据量</td></tr><tr><td>工程边界</td><td>适合流程规则、轻量自动化、知识封装</td><td>适合系统级连接、权限与审计、生产稳定性</td></tr><tr><td>常见误用</td><td>把所有制度塞进  SKILL.md （巨型 Prompt）</td><td>把 “写作规范 / 汇报模板” 做成工具（过重）</td></tr><tr><td>协同方式</td><td>MCP 拉数据 → Skills 定格式 / 审计口径；Skills 指挥如何使用 MCP 工具</td><td></td></tr></tbody></table>
<ul>
<li class=""><strong>Agent Skills</strong> 让 Agent 具备“专项能力与一致流程”，核心是 <strong>SOP 的可复用与按需加载</strong></li>
<li class=""><strong>MCP</strong>让Agent 具备“连接真实世界系统的标准接口”，核心是<strong>prompts/resources/tools 的标准化暴露与治理</strong></li>
<li class=""><strong>Skills 跑通高频闭环 → 再 MCP 平台化统一接入与治理 → 最后形成可复用的 Agent 基础设施</strong></li>
</ul>
<img src="http://www.otqsoft.com/doc/assets/images/1-b0b1fc049721781f3d71210ba1102ddd.webp" class="previewImage_kI9J">
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="demo"><strong>Demo</strong><a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-skills#demo" class="hash-link" aria-label="demo的直接链接" title="demo的直接链接" translate="no">​</a></h2>
<p>还以获取天气信息为例创建一个**SKILL，**并在TRAE（SOLO模式）中调用</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="设计思路">设计思路<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-skills#%E8%AE%BE%E8%AE%A1%E6%80%9D%E8%B7%AF" class="hash-link" aria-label="设计思路的直接链接" title="设计思路的直接链接" translate="no">​</a></h3>
<ol>
<li class="">
<p><strong>触发条件</strong>：用户输入包含「天气」「气温」「预报」+ 城市名时自动触发</p>
</li>
<li class="">
<p><strong>核心功能</strong>：</p>
<ul>
<li class="">
<p>支持中文城市名 / 拼音查询（如「北京」「beijing」）</p>
</li>
<li class="">
<p>输出标准化格式的实时天气 + 未来 3 天预报</p>
</li>
<li class="">
<p>包含异常处理（城市不存在、API 调用失败、无网络等）</p>
</li>
</ul>
</li>
<li class="">
<p><strong>技术选型</strong>：使用免费的天气 API，脚本用 Python 编写，通过环境变量管理 API 密钥</p>
</li>
</ol>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="目录结构">目录结构<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-skills#%E7%9B%AE%E5%BD%95%E7%BB%93%E6%9E%84" class="hash-link" aria-label="目录结构的直接链接" title="目录结构的直接链接" translate="no">​</a></h3>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">weather-query/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── SKILL.md              # 核心配置文件（元数据+执行规则）</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">└── scripts/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    └── weather_query.py  # 天气查询脚本（调用API+数据格式化）</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="核心文件">核心文件<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-skills#%E6%A0%B8%E5%BF%83%E6%96%87%E4%BB%B6" class="hash-link" aria-label="核心文件的直接链接" title="核心文件的直接链接" translate="no">​</a></h3>
<p><strong>1. SKILL.md（必选）</strong></p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> weather</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">query</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">description</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> 查询指定城市的实时天气和未来3天预报，支持中文/拼音城市名，输出标准化格式；用户输入包含「天气」「气温」「预报」+城市名时触发</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">version</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> 1.0.0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">author</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> otqsoft</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">dependencies</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> python </span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain">= 3.8</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> requests </span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain">= 2.31.0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">## 天气查询技能执行规则</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">### 1. 触发后执行步骤</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">1. 从用户输入中提取目标城市名（优先识别中文，其次拼音）</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">2. 调用 scripts/weather_query.py 脚本，传入城市名参数</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">3. 按以下格式整理并输出结果（无数据时标注「暂无数据」）</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">### 2. 输出格式（必须严格遵守）</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">#### 【XX市天气】</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> 实时天气：温度 XX℃ </span><span class="token punctuation" style="color:#393A34">|</span><span class="token plain"> 体感 XX℃ </span><span class="token punctuation" style="color:#393A34">|</span><span class="token plain"> 天气状况（晴/雨/多云等） </span><span class="token punctuation" style="color:#393A34">|</span><span class="token plain"> 风力 XX 级</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> 空气质量：AQI XX </span><span class="token punctuation" style="color:#393A34">|</span><span class="token plain"> 等级（优/良/轻度污染等）</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> 未来3天预报：</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  ① X月X日：XX℃~XX℃ </span><span class="token punctuation" style="color:#393A34">|</span><span class="token plain"> 天气状况 </span><span class="token punctuation" style="color:#393A34">|</span><span class="token plain"> 风力</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  ② X月X日：XX℃~XX℃ </span><span class="token punctuation" style="color:#393A34">|</span><span class="token plain"> 天气状况 </span><span class="token punctuation" style="color:#393A34">|</span><span class="token plain"> 风力</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  ③ X月X日：XX℃~XX℃ </span><span class="token punctuation" style="color:#393A34">|</span><span class="token plain"> 天气状况 </span><span class="token punctuation" style="color:#393A34">|</span><span class="token plain"> 风力</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">### 3. 异常处理规则</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> 城市不存在：输出「未查询到「XX」的天气数据，请检查城市名是否正确」</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> API调用失败：输出「天气服务暂时不可用，请稍后重试」</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> 无网络/参数错误：输出「查询失败，请检查网络或输入格式（示例：查询北京天气）」</span><br></span></code></pre></div></div>
<p><strong>2. scripts/weather_query.py</strong></p>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># -*- coding: utf-8 -*-</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token triple-quoted-string string" style="color:#e3116c">"""</span><br></span><span class="token-line" style="color:#393A34"><span class="token triple-quoted-string string" style="color:#e3116c">天气查询脚本：调用和风天气API，返回标准化天气数据</span><br></span><span class="token-line" style="color:#393A34"><span class="token triple-quoted-string string" style="color:#e3116c">前置条件：</span><br></span><span class="token-line" style="color:#393A34"><span class="token triple-quoted-string string" style="color:#e3116c">1. 安装依赖：pip install requests</span><br></span><span class="token-line" style="color:#393A34"><span class="token triple-quoted-string string" style="color:#e3116c">2. 申请和风天气API Key：https://dev.qweather.com/</span><br></span><span class="token-line" style="color:#393A34"><span class="token triple-quoted-string string" style="color:#e3116c">3. 配置环境变量：QWEATHER_API_KEY=你的API密钥</span><br></span><span class="token-line" style="color:#393A34"><span class="token triple-quoted-string string" style="color:#e3116c">"""</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> os</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> sys</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> requests</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> typing </span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> Dict</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> Optional</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 和风天气API配置</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">BASE_URL </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"https://api.qweather.com/"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 从环境变量读取API密钥（安全起见，不硬编码）</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">API_KEY </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> os</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">getenv</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"QWEATHER_API_KEY"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">def</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">get_city_location</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">city_name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">str</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">-</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> Optional</span><span class="token punctuation" style="color:#393A34">[</span><span class="token builtin">str</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token triple-quoted-string string" style="color:#e3116c">"""</span><br></span><span class="token-line" style="color:#393A34"><span class="token triple-quoted-string string" style="color:#e3116c">    根据城市名获取城市ID（和风天气需要城市ID查询天气）</span><br></span><span class="token-line" style="color:#393A34"><span class="token triple-quoted-string string" style="color:#e3116c">    """</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">not</span><span class="token plain"> API_KEY</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"错误：未配置QWEATHER_API_KEY环境变量"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">None</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    url </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string-interpolation string" style="color:#e3116c">f"</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">BASE_URL</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">geo/v2/city/lookup"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    params </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"key"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> API_KEY</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"location"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> city_name</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"lang"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"zh"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"type"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"city"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">try</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        response </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> requests</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">get</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">url</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> params</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">params</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> timeout</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">10</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        response</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">raise_for_status</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        data </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> response</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">json</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> data</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">get</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"code"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">!=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"200"</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">or</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">not</span><span class="token plain"> data</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">get</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"location"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">None</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token comment" style="color:#999988;font-style:italic"># 返回第一个匹配的城市ID</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> data</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"location"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"id"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> data</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"location"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"lat"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> data</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"location"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"lon"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">except</span><span class="token plain"> requests</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">exceptions</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">RequestException </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> e</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string-interpolation string" style="color:#e3116c">f"获取城市位置失败：</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation builtin">str</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">(</span><span class="token string-interpolation interpolation">e</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">)</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">None</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">def</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">get_weather</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">city_name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">str</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">-</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> Optional</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">Dict</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token triple-quoted-string string" style="color:#e3116c">"""</span><br></span><span class="token-line" style="color:#393A34"><span class="token triple-quoted-string string" style="color:#e3116c">    根据城市ID查询实时天气+未来3天预报</span><br></span><span class="token-line" style="color:#393A34"><span class="token triple-quoted-string string" style="color:#e3116c">    """</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    weather_data </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    city_id</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> latitude</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> longitude </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> get_city_location</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">city_name</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">not</span><span class="token plain"> city_id</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string-interpolation string" style="color:#e3116c">f"未查询到「</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">city_name</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">」的天气数据，请检查城市名是否正确"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">None</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># 1. 查询实时天气</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    now_url </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string-interpolation string" style="color:#e3116c">f"</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">BASE_URL</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">v7/weather/now"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    now_params </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"key"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> API_KEY</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"location"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> city_id</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"lang"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"zh"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">try</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        now_resp </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> requests</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">get</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">now_url</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> params</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">now_params</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> timeout</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">10</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        now_resp</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">raise_for_status</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        now_data </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> now_resp</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">json</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> now_data</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">get</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"code"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">==</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"200"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            weather_data</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"now"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token string" style="color:#e3116c">"temp"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> now_data</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"now"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"temp"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token string" style="color:#e3116c">"feels_like"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> now_data</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"now"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"feelsLike"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token string" style="color:#e3116c">"text"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> now_data</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"now"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"text"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token string" style="color:#e3116c">"wind_scale"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> now_data</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"now"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"windScale"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            weather_data</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"city_name"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> city_name</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">else</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string-interpolation string" style="color:#e3116c">f"实时天气查询失败：</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">now_data</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">.</span><span class="token string-interpolation interpolation">get</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">(</span><span class="token string-interpolation interpolation string" style="color:#e3116c">'code'</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">)</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">None</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">except</span><span class="token plain"> requests</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">exceptions</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">RequestException </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> e</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string-interpolation string" style="color:#e3116c">f"实时天气请求失败：</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation builtin">str</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">(</span><span class="token string-interpolation interpolation">e</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">)</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">None</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># 2. 查询未来3天预报</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    forecast_url </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string-interpolation string" style="color:#e3116c">f"</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">BASE_URL</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">v7/weather/3d"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    forecast_params </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"key"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> API_KEY</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"location"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> city_id</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"lang"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"zh"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">try</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        forecast_resp </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> requests</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">get</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">forecast_url</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> params</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">forecast_params</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> timeout</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">10</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        forecast_resp</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">raise_for_status</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        forecast_data </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> forecast_resp</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">json</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> forecast_data</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">get</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"code"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">==</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"200"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            weather_data</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"forecast"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> forecast_data</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"daily"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">3</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># 取前3天</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">else</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string-interpolation string" style="color:#e3116c">f"预报查询失败：</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">forecast_data</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">.</span><span class="token string-interpolation interpolation">get</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">(</span><span class="token string-interpolation interpolation string" style="color:#e3116c">'code'</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">)</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">None</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">except</span><span class="token plain"> requests</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">exceptions</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">RequestException </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> e</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string-interpolation string" style="color:#e3116c">f"预报请求失败：</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation builtin">str</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">(</span><span class="token string-interpolation interpolation">e</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">)</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">None</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># 3. 查询空气质量</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    aqi_url </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string-interpolation string" style="color:#e3116c">f"</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">BASE_URL</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">airquality/v1/current/</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">latitude</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">/</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">longitude</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    aqi_params </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"key"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> API_KEY</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">try</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        aqi_resp </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> requests</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">get</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">aqi_url</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> params</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">aqi_params</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> timeout</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">10</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        aqi_resp</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">raise_for_status</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        aqi_data </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> aqi_resp</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">json</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        weather_data</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"aqi"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token string" style="color:#e3116c">"value"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> aqi_data</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"indexes"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"aqi"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token string" style="color:#e3116c">"level"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> aqi_data</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"indexes"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"category"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">except</span><span class="token plain"> requests</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">exceptions</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">RequestException</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token comment" style="color:#999988;font-style:italic"># 空气质量非必需，失败不影响主功能</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        weather_data</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"aqi"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"value"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"暂无"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"level"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"暂无"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> weather_data</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">def</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">format_weather_output</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">weather_data</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Dict</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">-</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token builtin">str</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token triple-quoted-string string" style="color:#e3116c">"""</span><br></span><span class="token-line" style="color:#393A34"><span class="token triple-quoted-string string" style="color:#e3116c">    按SKILL.md规定的格式格式化输出</span><br></span><span class="token-line" style="color:#393A34"><span class="token triple-quoted-string string" style="color:#e3116c">    """</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">not</span><span class="token plain"> weather_data</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"查询失败：未获取到天气数据"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># 构建输出字符串</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    output </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string-interpolation string" style="color:#e3116c">f"【</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">weather_data</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">[</span><span class="token string-interpolation interpolation string" style="color:#e3116c">'city_name'</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">]</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">天气】\n"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    now </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> weather_data</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"now"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    output </span><span class="token operator" style="color:#393A34">+=</span><span class="token plain"> </span><span class="token string-interpolation string" style="color:#e3116c">f"- 实时天气：温度 </span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">now</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">[</span><span class="token string-interpolation interpolation string" style="color:#e3116c">'temp'</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">]</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">℃ | 体感 </span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">now</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">[</span><span class="token string-interpolation interpolation string" style="color:#e3116c">'feels_like'</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">]</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">℃ | 天气状况（</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">now</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">[</span><span class="token string-interpolation interpolation string" style="color:#e3116c">'text'</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">]</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">） | 风力 </span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">now</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">[</span><span class="token string-interpolation interpolation string" style="color:#e3116c">'wind_scale'</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">]</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c"> 级\n"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    aqi </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> weather_data</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"aqi"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    output </span><span class="token operator" style="color:#393A34">+=</span><span class="token plain"> </span><span class="token string-interpolation string" style="color:#e3116c">f"- 空气质量：AQI </span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">aqi</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">[</span><span class="token string-interpolation interpolation string" style="color:#e3116c">'value'</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">]</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c"> | 等级（</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">aqi</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">[</span><span class="token string-interpolation interpolation string" style="color:#e3116c">'level'</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">]</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">）\n"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    output </span><span class="token operator" style="color:#393A34">+=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"- 未来3天预报：\n"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">for</span><span class="token plain"> i</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> day </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> </span><span class="token builtin">enumerate</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">weather_data</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"forecast"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        date </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> day</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"fxDate"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">replace</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"-"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"月"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"日"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        output </span><span class="token operator" style="color:#393A34">+=</span><span class="token plain"> </span><span class="token string-interpolation string" style="color:#e3116c">f"  ① </span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">date</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">：</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">day</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">[</span><span class="token string-interpolation interpolation string" style="color:#e3116c">'tempMin'</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">]</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">℃~</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">day</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">[</span><span class="token string-interpolation interpolation string" style="color:#e3116c">'tempMax'</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">]</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">℃ | </span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">day</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">[</span><span class="token string-interpolation interpolation string" style="color:#e3116c">'textDay'</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">]</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c"> | 风力 </span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">day</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">[</span><span class="token string-interpolation interpolation string" style="color:#e3116c">'windScaleDay'</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">]</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c"> 级\n"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> output</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">def</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">main</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token triple-quoted-string string" style="color:#e3116c">"""</span><br></span><span class="token-line" style="color:#393A34"><span class="token triple-quoted-string string" style="color:#e3116c">    脚本主入口：接收城市名参数，输出格式化天气信息</span><br></span><span class="token-line" style="color:#393A34"><span class="token triple-quoted-string string" style="color:#e3116c">    """</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># 检查参数</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> </span><span class="token builtin">len</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">sys</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">argv</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"使用方法：python weather_query.py &lt;城市名&gt;"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        sys</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">exit</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    city_name </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> sys</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">argv</span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># 查询天气数据</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    weather_data </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> get_weather</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">city_name</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">not</span><span class="token plain"> weather_data</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"天气服务暂时不可用，请稍后重试"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        sys</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">exit</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># 3. 格式化输出</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">format_weather_output</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">weather_data</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> __name__ </span><span class="token operator" style="color:#393A34">==</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"__main__"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    main</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="trae">TRAE<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-agent-skills#trae" class="hash-link" aria-label="TRAE的直接链接" title="TRAE的直接链接" translate="no">​</a></h3>
<p>先将TRAE升级到最新版，目前只有在SOLO模式可以使用SKILL。打开【设置】选择【规则和技能】，在技能中点击【创建】，然后选择你的SKILL.MD文件</p>
<img src="http://www.otqsoft.com/doc/assets/images/2-22ffdf3b047c0b13aa199ea57eaa3b3c.webp" class="previewImage_kI9J">
<p>确认之后，在SOLO模式中输入关于天气信息的提问，如：</p>
<img src="http://www.otqsoft.com/doc/assets/images/3-1fa64d661d7fb5eb2ae4364dc9950364.webp" class="previewImage_kI9J">
<img src="http://www.otqsoft.com/doc/assets/images/4-e46f9c167963d8a0b0099c1823cbc040.webp" class="previewImage_kI9J">]]></content>
        <author>
            <name>otqsoft</name>
            <uri>https://gitee.com/work25</uri>
        </author>
        <category label="AI" term="AI"/>
        <category label="Agent" term="Agent"/>
        <category label="Skill" term="Skill"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[引领物理AI与下一代算力革命]]></title>
        <id>http://www.otqsoft.com/doc/blog/long-blog-post-ai-nvidia</id>
        <link href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-nvidia"/>
        <updated>2026-01-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[在CES 2026上，英伟达创始人兼CEO黄仁勋发表了主题为 “计算的炼金术”（The Alchemy of Computation） 的演讲。本次演讲的核心论点是：计算行业正在经历从软件到硬件的全面重构，AI将从数字世界走向物理世界，而英伟达通过其全栈技术，正成为这场新工业革命的基石引擎。]]></summary>
        <content type="html"><![CDATA[<p>在CES 2026上，英伟达创始人兼CEO黄仁勋发表了主题为 <strong>“计算的炼金术”（The Alchemy of Computation）</strong> 的演讲。本次演讲的核心论点是：计算行业正在经历从软件到硬件的全面重构，AI将从数字世界走向物理世界，而英伟达通过其全栈技术，正成为这场新工业革命的基石引擎。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="核心战略引领双重平台变革">核心战略：引领双重平台变革<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-nvidia#%E6%A0%B8%E5%BF%83%E6%88%98%E7%95%A5%E5%BC%95%E9%A2%86%E5%8F%8C%E9%87%8D%E5%B9%B3%E5%8F%B0%E5%8F%98%E9%9D%A9" class="hash-link" aria-label="核心战略：引领双重平台变革的直接链接" title="核心战略：引领双重平台变革的直接链接" translate="no">​</a></h3>
<p>英伟达指出，计算行业正同时经历两场十年一遇的<strong>平台级变革</strong>：</p>
<ol>
<li class=""><strong>从通用计算到加速计算</strong>：传统计算范式正在被加速计算所取代。</li>
<li class=""><strong>从传统应用到生成式AI</strong>：应用范式正在被生成式AI重塑。</li>
</ol>
<p>这场变革导致了<strong>整个技术栈的全面重构</strong>，具体表现为：从代码驱动转向模型驱动、从CPU转向GPU、从预编译转向生成式、从应用优先转向AI优先。这催生了一个价值高达<strong>10万亿美元</strong>的待现代化的计算市场。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="三大技术革命支柱">三大技术革命支柱<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-nvidia#%E4%B8%89%E5%A4%A7%E6%8A%80%E6%9C%AF%E9%9D%A9%E5%91%BD%E6%94%AF%E6%9F%B1" class="hash-link" aria-label="三大技术革命支柱的直接链接" title="三大技术革命支柱的直接链接" translate="no">​</a></h3>
<p>基于上述战略判断，英伟达发布了支撑未来发展的三大技术支柱。</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="物理ai革命让ai走进现实世界">物理AI革命：让AI走进现实世界<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-nvidia#%E7%89%A9%E7%90%86ai%E9%9D%A9%E5%91%BD%E8%AE%A9ai%E8%B5%B0%E8%BF%9B%E7%8E%B0%E5%AE%9E%E4%B8%96%E7%95%8C" class="hash-link" aria-label="物理AI革命：让AI走进现实世界的直接链接" title="物理AI革命：让AI走进现实世界的直接链接" translate="no">​</a></h4>
<p>英伟达认为，AI的下一个前沿是突破屏幕限制，进入并理解物理世界，即 <strong>“物理AI（Physical AI）”</strong> 。其核心架构是 <strong>“三位一体”</strong> ，即<strong>训练计算机、推理计算机、模拟计算机</strong>，其中模拟是几乎所有物理AI工作的基础。</p>
<ul>
<li class="">关键平台与模型：<!-- -->
<ul>
<li class=""><strong>COSMOS</strong>：被称为物理AI的 <strong>“ChatGPT时刻”</strong> ，是一个<strong>世界基础模型</strong>。它能基于物理规律生成无限多样的合成数据，用于生成物理AI技能、对齐多模态信息等。</li>
<li class=""><strong>Alpha Mayo</strong>：全球首个<strong>推理型AI</strong>，采用端到端训练，能根据摄像头输入推理下一步行动及原因，旨在解决自动驾驶等领域的“长尾难题”。</li>
<li class=""><strong>Omniverse</strong>：作为<strong>机器人的创世引擎</strong>，用于生成海量合成数据训练机器人。</li>
</ul>
</li>
<li class="">重大产业合作：<!-- -->
<ul>
<li class="">与<strong>梅赛德斯-奔驰</strong>达成战略合作，目标在<strong>2026年第一季度</strong>让搭载其DRIVE Thor平台及Alpha Mayo模型的车辆全球上路，合作规模目标达<strong>1亿辆</strong>。</li>
<li class="">与<strong>西门子</strong>达成战略合作，将英伟达AI全栈集成至工业软件中，贯穿设计、生产、运营全生命周期，定义 <strong>“未来工厂 = 巨型机器人”</strong>。</li>
</ul>
</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="开源模型与智能体系统重构软件生态">开源模型与智能体系统：重构软件生态<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-nvidia#%E5%BC%80%E6%BA%90%E6%A8%A1%E5%9E%8B%E4%B8%8E%E6%99%BA%E8%83%BD%E4%BD%93%E7%B3%BB%E7%BB%9F%E9%87%8D%E6%9E%84%E8%BD%AF%E4%BB%B6%E7%94%9F%E6%80%81" class="hash-link" aria-label="开源�模型与智能体系统：重构软件生态的直接链接" title="开源模型与智能体系统：重构软件生态的直接链接" translate="no">​</a></h4>
<p>英伟达宣布致力于 <strong>“锻造世界顶级的开源模型”</strong> ，并发布了覆盖多领域的<strong>开源模型矩阵</strong>，例如：</p>
<ul>
<li class=""><strong>Nemo Tron 3</strong>：语言模型，采用混合SSM架构，实现极速推理。</li>
<li class=""><strong>OpenFold 3</strong>：生物学模型，用于理解蛋白质结构与生成。</li>
<li class=""><strong>ForecastNet</strong>：物理世界模型，旨在革新天气预测。</li>
</ul>
<p>同时，演讲强调未来AI的<strong>新原子单元是AI代理（Agent）</strong>，需具备规划、推理、执行和研究能力。为此，英伟达提出了 <strong>“智能体路由（Agent Routing）”</strong> 技术，可动态组合调用多个专家模型，构建专属AI系统。</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="vera-rubin平台下一代ai算力底座">Vera Rubin平台：下一代AI算力底座<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-nvidia#vera-rubin%E5%B9%B3%E5%8F%B0%E4%B8%8B%E4%B8%80%E4%BB%A3ai%E7%AE%97%E5%8A%9B%E5%BA%95%E5%BA%A7" class="hash-link" aria-label="Vera Rubin平台：下一代AI算力底座的直接链接" title="Vera Rubin平台：下一代AI算力底座的直接链接" translate="no">​</a></h4>
<p>为应对AI性能需求每年<strong>10倍</strong>的增长与晶体管性能增长（仅<strong>1.6倍/年</strong>）之间的巨大差距，英伟达发布了全新<strong>Vera Rubin计算平台</strong>，该平台已全面投产。</p>
<ul>
<li class=""><strong>设计理念</strong>：采用<strong>极致协同设计</strong>，整合自研芯片与技术。</li>
<li class="">核心组件与性能：<!-- -->
<ul>
<li class=""><strong>Rubin GPU</strong>：晶体管数量比前代增长1.6倍，浮点性能提升<strong>5倍</strong>。</li>
<li class=""><strong>Vera CPU</strong>：为AI超算定制，每瓦性能是前代Grace的<strong>2倍</strong>。</li>
<li class=""><strong>BlueField-4 DPU</strong>、<strong>Spectrum-X AI以太网</strong>与<strong>NVLink 6 Switch</strong>：提供极高的网络互联带宽。</li>
</ul>
</li>
<li class=""><strong>物理创新</strong>：采用<strong>零线缆、零风扇、直接芯片液冷</strong>设计，使用45℃温水冷却，极大简化数据中心部署。</li>
<li class=""><strong>研发投入</strong>：该平台研发总计投入了<strong>15,000工程师年</strong>。</li>
</ul>
<p><strong>总体定位</strong></p>
<p>英伟达将自身定位为 <strong>“世界领先平台的AI引擎”</strong> 。通过上述从物理AI、开源软件生态到下一代算力基础设施的全栈布局，英伟达旨在从硬件、软件到应用全面引领下一波AI浪潮，推动一场新的工业革命。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="物理ai技术深度解析">物理AI技术深度解析<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-nvidia#%E7%89%A9%E7%90%86ai%E6%8A%80%E6%9C%AF%E6%B7%B1%E5%BA%A6%E8%A7%A3%E6%9E%90" class="hash-link" aria-label="物理AI技术深度解析的直接链接" title="物理AI技术深度解析的直接链接" translate="no">​</a></h2>
<p>物理AI并非一个单一的产品，而是英伟达为应对“AI走出屏幕”这一核心挑战所构建的一整套技术体系。它旨在赋予AI系统理解并安全作用于物理世界的能力，其实现依赖于一个被官方称为“三位一体”的架构，以及支撑该架构的多个关键平台组件。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="-核心理念与使命">🔬 核心理念与使命<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-nvidia#-%E6%A0%B8%E5%BF%83%E7%90%86%E5%BF%B5%E4%B8%8E%E4%BD%BF%E5%91%BD" class="hash-link" aria-label="🔬 核心理念与使命的直接链接" title="🔬 核心理念与使命的直接链接" translate="no">​</a></h3>
<p>其核心使命在于<strong>突破AI的“屏幕限制”</strong>，解决传统AI模型普遍缺乏的<strong>物理常识</strong>。这些常识包括对重力、摩擦力、运动与因果关系的理解。同时，它旨在弥合因真实世界数据“收集缓慢、昂贵且永不满足”而产生的<strong>数据鸿沟</strong>。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="️-三位一体技术架构">⚙️ 三位一体技术架构<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-nvidia#%EF%B8%8F-%E4%B8%89%E4%BD%8D%E4%B8%80%E4%BD%93%E6%8A%80%E6%9C%AF%E6%9E%B6%E6%9E%84" class="hash-link" aria-label="⚙️ 三位一体技术架构的直接链接" title="⚙️ 三位一体技术架构的直接链接" translate="no">​</a></h3>
<p>物理AI的实现依赖于一个全新的基础计算架构，由三类专用计算机组成：</p>
<ul>
<li class="">
<p><strong>训练计算机</strong>：负责对物理AI模型进行大规模的训练与优化。</p>
</li>
<li class="">
<p><strong>推理计算机</strong>：负责将训练好的模型高效地部署到终端（如汽车、机器人），进行实时决策与响应。</p>
</li>
<li class="">
<p>模拟计算机：被定义为“几乎所有物理AI工作的基础”。通过创建物理级精准的虚拟世界，提供无限、安全、可控的环境来生成合成数据、验证算法和预演复杂交互，是连接训练与推理的关键桥梁。</p>
<p><img decoding="async" loading="lazy" src="https://ima-media-prod.image.myqcloud.com/2/IyhMDeYDSB4PBtfpda0fYP/7cea417d-ddb6-4e61-b816-eb186ca1a77c.png?response-content-disposition=attachment&amp;q-sign-algorithm=sha1&amp;q-ak=AKIDAAzd3ECwTmrmTwBC1cz3ziDTXO2VmvqX&amp;q-sign-time=1768008636%3B1768012236&amp;q-key-time=1768008636%3B1768012236&amp;q-header-list=&amp;q-url-param-list=response-content-disposition&amp;q-signature=8f36afc32369fdbf74affc7b4d9dcb08ed6d06ed" alt="img" class="img_ev3q"></p>
</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="-核心技术组件解析">🧠 核心技术组件解析<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-nvidia#-%E6%A0%B8%E5%BF%83%E6%8A%80%E6%9C%AF%E7%BB%84%E4%BB%B6%E8%A7%A3%E6%9E%90" class="hash-link" aria-label="🧠 核心技术组件解析的直接链接" title="🧠 核心技术组件解析的直接链接" translate="no">​</a></h3>
<p>物理AI技术栈由以下几个已发布的关键平台与模型构成：</p>
<ol>
<li class=""><strong>COSMOS：世界基础模型</strong>
<ul>
<li class=""><strong>定位</strong>：物理AI领域的 <strong>“ChatGPT时刻”</strong>。它是一个基于物理规律构建的生成式模型。</li>
<li class="">功能：<!-- -->
<ul>
<li class=""><strong>生成无限合成数据</strong>：能够根据物理定律，生成无限多样、物理连贯的合成数据（如视频序列），为机器人、自动驾驶等系统提供近乎无限的训练素材。</li>
<li class=""><strong>多模态对齐</strong>：将语言、图像、3D模型与动作指令对齐，形成统一的世界表示。</li>
<li class=""><strong>交互与推理</strong>：支持交互式闭环模拟，并能对物理场景进行推理、分析与预测。</li>
</ul>
</li>
<li class=""><strong>价值</strong>：从根本上解决了高质量物理数据稀缺的瓶颈，实现了 <strong>“计算炼成数据”</strong> 的范式。</li>
</ul>
</li>
<li class=""><strong>Alpha Mayo：首个推理型AI“大脑”</strong>
<ul>
<li class=""><strong>定位</strong>：全球首个<strong>端到端训练</strong>的推理型AI。</li>
<li class="">核心特性：<!-- -->
<ul>
<li class=""><strong>端到端映射</strong>：直接实现从传感器（如摄像头）输入到行动指令的输出，极大地简化了系统复杂性。</li>
<li class=""><strong>长尾场景推理能力</strong>：其核心突破在于能够<strong>推理“下一步行动及原因”</strong>。这意味着面对从未见过的复杂场景（“长尾问题”），它能基于对物理世界的理解进行逻辑推导，而非依赖预先记录的海量数据。</li>
</ul>
</li>
<li class=""><strong>部署基石</strong>：运行在专为机器人系统设计的<strong>DRIVE Thor</strong>芯片之上，该芯片具备最高等级的功能安全认证和双处理器冗余设计。</li>
</ul>
</li>
<li class=""><strong>Omniverse：机器人的“创世引擎”</strong>
<ul>
<li class=""><strong>定位</strong>：物理AI的虚拟训练场与开发平台。</li>
<li class=""><strong>作用</strong>：作为物理级精准的仿真宇宙，<strong>Omniverse</strong> 是运行<strong>COSMOS</strong>和训练<strong>Alpha Mayo</strong>等AI的底层环境。它使得在虚拟世界中大规模、低成本、高效率地测试和迭代物理AI算法成为可能。</li>
</ul>
</li>
</ol>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="-产业落地从技术到规模化应用">🚗 产业落地：从技术到规模化应用<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-nvidia#-%E4%BA%A7%E4%B8%9A%E8%90%BD%E5%9C%B0%E4%BB%8E%E6%8A%80%E6%9C%AF%E5%88%B0%E8%A7%84%E6%A8%A1%E5%8C%96%E5%BA%94%E7%94%A8" class="hash-link" aria-label="🚗 产业落地：从技术到规模化应用的直接链接" title="🚗 产业落地：从技术到规模化应用的直接链接" translate="no">​</a></h3>
<p>物理AI技术已锁定明确的标杆应用，并进入大规模部署阶段：</p>
<ol>
<li class=""><strong>自动驾驶与智慧出行</strong>
<ul>
<li class=""><strong>合作方</strong>：与<strong>梅赛德斯-奔驰</strong>达成深度战略合作。</li>
<li class=""><strong>落地计划</strong>：自<strong>2026年第一季度</strong>起，全球将有<strong>1亿辆</strong>新车搭载基于DRIVE Thor和Alpha Mayo的物理AI系统，并支持持续的OTA更新。</li>
<li class=""><strong>安全冗余</strong>：采用<strong>双堆栈安全设计</strong>，融合“经典自动驾驶堆栈”（确保绝对安全与可追溯性）与“Alpha Mayo AI堆栈”（提供卓越性能与推理能力）。</li>
</ul>
</li>
<li class=""><strong>工业制造与未来工厂</strong>
<ul>
<li class=""><strong>合作方</strong>：与<strong>西门子</strong>达成战略合作。</li>
<li class=""><strong>愿景</strong>：定义 <strong>“未来工厂 = 巨型机器人”</strong> 。将英伟达物理AI全栈技术深度集成到西门子的工业软件中，贯穿产品设计、生产制造、运营维护的全生命周期，实现物理世界与数字世界的智能闭环。</li>
</ul>
</li>
</ol>
<p>这一系列技术的协同，标志着AI从处理数字信息的软件，正式进化为能够理解、推理并安全操作物理实体的新一代智能系统。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="vera-rubin计算平台技术解析">Vera Rubin计算平台技术解析<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-nvidia#vera-rubin%E8%AE%A1%E7%AE%97%E5%B9%B3%E5%8F%B0%E6%8A%80%E6%9C%AF%E8%A7%A3%E6%9E%90" class="hash-link" aria-label="Vera Rubin计算平台技术解析的直接链接" title="Vera Rubin计算平台技术解析的直接链接" translate="no">​</a></h2>
<p>为弥合AI算力需求<strong>每年10倍增长</strong>与晶体管性能<strong>每年仅1.6倍增长</strong>之间的根本性矛盾，英伟达推出了采用“极致协同设计”理念的Vera Rubin平台。它并非单一芯片的迭代，而是一个从底层芯片、互联网络到物理散热进行全栈重构的<strong>系统级AI算力底座</strong>，旨在为全球AI工厂提供满足未来指数级需求的基础设施。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="-设计哲学极致的协同设计">🔩 设计哲学：极致的协同设计<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-nvidia#-%E8%AE%BE%E8%AE%A1%E5%93%B2%E5%AD%A6%E6%9E%81%E8%87%B4%E7%9A%84%E5%8D%8F%E5%90%8C%E8%AE%BE%E8%AE%A1" class="hash-link" aria-label="🔩 设计哲学：极致的协同设计的直接链接" title="🔩 设计哲学：极致的协同设计的直接链接" translate="no">​</a></h3>
<p>Vera Rubin平台的核心设计思想是打破传统硬件堆叠的路径依赖，将<strong>GPU、CPU、DPU、网络交换机及物理冷却系统</strong>进行深度整合与协同优化。这一理念旨在系统性解决数据在计算、存储和传输过程中的每一个瓶颈，而非进行单点性能提升。为此，英伟达累计投入了<strong>15,000工程师年</strong>进行研发，体现了其系统级创新的深度与广度。</p>
<p><img decoding="async" loading="lazy" src="https://ima-media-prod.image.myqcloud.com/2/IyhMDeYDSB4PBtfpda0fYP/b22b5466-f4c9-4a0e-b9a3-94f85f33aed2.png?response-content-disposition=attachment&amp;q-sign-algorithm=sha1&amp;q-ak=AKIDAAzd3ECwTmrmTwBC1cz3ziDTXO2VmvqX&amp;q-sign-time=1768008636%3B1768012236&amp;q-key-time=1768008636%3B1768012236&amp;q-header-list=&amp;q-url-param-list=response-content-disposition&amp;q-signature=4cdba99e4d92471c76cead0c7b6f2214ec0cb53d" alt="img" class="img_ev3q"></p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="-核心硬件架构全栈自研的算力模块">🧩 核心硬件架构：全栈自研的算力模块<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-nvidia#-%E6%A0%B8%E5%BF%83%E7%A1%AC%E4%BB%B6%E6%9E%B6%E6%9E%84%E5%85%A8%E6%A0%88%E8%87%AA%E7%A0%94%E7%9A%84%E7%AE%97%E5%8A%9B%E6%A8%A1%E5%9D%97" class="hash-link" aria-label="🧩 核心硬件架构：全栈自研的算力模块的直接链接" title="🧩 核心硬件架构：全栈自研的算力模块的直接链接" translate="no">​</a></h3>
<p>一个标准的Vera Rubin计算模块是一个高度集成的系统单元，其核心构成如下：</p>
<ul>
<li class=""><strong>4颗 Rubin GPU</strong>：作为主要的AI算力引擎。</li>
<li class=""><strong>2颗 Vera CPU</strong>：为AI超算定制的“智慧大脑”。</li>
<li class=""><strong>4颗 BlueField-4 DPU</strong>：用于卸载虚拟化、安全与网络任务的“智能管家”。</li>
<li class=""><strong>8个 ConnectX-9 网络接口卡</strong>。</li>
</ul>
<p>该模块实现了<strong>零线缆、零软管、零风扇</strong>的物理设计，将包含<strong>2.2万亿个晶体管</strong>的复杂系统集成在一个重量约<strong>2吨</strong>的紧凑单元中。</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-rubin-gpu性能与能效的飞跃">1. Rubin GPU：性能与能效的飞跃<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-nvidia#1-rubin-gpu%E6%80%A7%E8%83%BD%E4%B8%8E%E8%83%BD%E6%95%88%E7%9A%84%E9%A3%9E%E8%B7%83" class="hash-link" aria-label="1. Rubin GPU：性能与能效的飞跃的直接链接" title="1. Rubin GPU：性能与能效的飞跃的直接链接" translate="no">​</a></h4>
<p>Rubin GPU在架构上实现了代际跨越：</p>
<ul>
<li class=""><strong>晶体管与性能</strong>：晶体管数量较前代Blackwell架构提升<strong>1.6倍</strong>，并在此基础之上实现了<strong>5倍</strong>的浮点性能提升。</li>
<li class=""><strong>MVF P4 张量引擎</strong>：这是其关键创新，支持<strong>硬件级自适应精度</strong>。该引擎无需软件干预，即可在处理器内部动态调整计算精度与结构，在吞吐量与精度之间实现最优平衡，为混合精度训练与推理提供底层硬件支持。</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-vera-cpu为ai定制的智慧大脑">2. Vera CPU：为AI定制的“智慧大脑”<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-nvidia#2-vera-cpu%E4%B8%BAai%E5%AE%9A%E5%88%B6%E7%9A%84%E6%99%BA%E6%85%A7%E5%A4%A7%E8%84%91" class="hash-link" aria-label="2. Vera CPU：为AI定制的“智慧大脑”的直接链接" title="2. Vera CPU：为AI定制的“智慧大脑”的直接链接" translate="no">​</a></h4>
<p>Vera CPU专为协同GPU进行大规模AI计算而设计：</p>
<ul>
<li class=""><strong>能效核心</strong>：采用<strong>88核 / 176线程</strong>设计，其<strong>每瓦性能是前代Grace CPU的2倍</strong>。</li>
<li class=""><strong>空间多线程技术</strong>：确保每个线程都能获得完整的执行性能，避免资源争抢。</li>
<li class=""><strong>惊人的I/O性能</strong>：专门优化了GPU间的高速数据共享能力，确保数据在CPU与GPU之间以及GPU与GPU之间能够极速流动。</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-bluefield-4-dpu让计算更纯粹">3. BlueField-4 DPU：让计算更纯粹<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-nvidia#3-bluefield-4-dpu%E8%AE%A9%E8%AE%A1%E7%AE%97%E6%9B%B4%E7%BA%AF%E7%B2%B9" class="hash-link" aria-label="3. BlueField-4 DPU：让计算更纯粹的直接链接" title="3. BlueField-4 DPU：让计算更纯粹的直接链接" translate="no">​</a></h4>
<p>BlueField-4 DPU作为每个计算节点的标准配置，其核心使命是<strong>卸载</strong>。它将虚拟化、安全策略、存储访问和网络功能等任务从CPU/GPU上剥离，使得主计算单元能够专注于纯粹的AI计算任务，同时保障了多租户环境下的安全隔离。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="-互联与数据流重构消除网络瓶颈">🌐 互联与数据流重构：消除网络瓶颈<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-nvidia#-%E4%BA%92%E8%81%94%E4%B8%8E%E6%95%B0%E6%8D%AE%E6%B5%81%E9%87%8D%E6%9E%84%E6%B6%88%E9%99%A4%E7%BD%91%E7%BB%9C%E7%93%B6%E9%A2%88" class="hash-link" aria-label="🌐 互联与数据流重构：消除网络瓶颈的直接链接" title="🌐 互联与数据流重构：消除网络瓶颈的直接链接" translate="no">​</a></h3>
<p>Vera Rubin平台重新定义了数据中心内部的数据流动方式，旨在让“网络成本趋近于零”。</p>
<ul>
<li class=""><strong>机架内神经（NVLink 6 Switch）</strong>：提供高达<strong>240 TB/s</strong>的机架内互联带宽。这一带宽被官方形容为<strong>超过全球互联网总带宽的2倍</strong>，彻底消除了GPU间数据交换的瓶颈。</li>
<li class=""><strong>AI工厂动脉（Spectrum-X AI以太网）</strong>：用于连接不同机架与集群，其网络吞吐性能较传统方案提升<strong>25%</strong>，显著降低了大规模AI训练与推理中的网络通信开销。</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="️-物理与能效工程重新定义数据中心">🏗️ 物理与能效工程：重新定义数据中心<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-nvidia#%EF%B8%8F-%E7%89%A9%E7%90%86%E4%B8%8E%E8%83%BD%E6%95%88%E5%B7%A5%E7%A8%8B%E9%87%8D%E6%96%B0%E5%AE%9A%E4%B9%89%E6%95%B0%E6%8D%AE%E4%B8%AD%E5%BF%83" class="hash-link" aria-label="🏗️ 物理与能效工程：重新定义数据中心的直接链接" title="🏗️ 物理与能效工程：重新定义数据中心的直接链接" translate="no">​</a></h3>
<p>平台的物理设计是其颠覆性优势之一：</p>
<ul>
<li class=""><strong>100% 直接芯片液冷</strong>：整个计算模块采用直接液冷设计，使用<strong>45℃的温水</strong>作为冷却液。这一创新使得数据中心<strong>无需再配备昂贵的冷水机组</strong>，极大简化了基础设施，降低了整体能耗与复杂度。</li>
<li class=""><strong>部署革命</strong>：得益于高度集成与简化的设计，将一个Vera Rubin计算模块的部署时间从传统方式的<strong>数小时缩短至仅需5分钟</strong>，大幅提升了数据中心的运营效率和灵活性。</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="-平台整体性能指标">📊 平台整体性能指标<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-nvidia#-%E5%B9%B3%E5%8F%B0%E6%95%B4%E4%BD%93%E6%80%A7%E8%83%BD%E6%8C%87%E6%A0%87" class="hash-link" aria-label="📊 平台整体性能指标的直接链接" title="📊 平台整体性能指标的直接链接" translate="no">​</a></h3>
<p>通过上述全栈协同设计，Vera Rubin平台实现了碾压式的性能飞跃（官方对比前代平台）：</p>
<ul>
<li class=""><strong>峰值推理性能提升：5倍</strong></li>
<li class=""><strong>峰值训练性能提升：3.5倍</strong></li>
<li class=""><strong>单个计算模块AI算力：100 PFLOPS</strong></li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="-解决的核心挑战面向未来的架构">🎯 解决的核心挑战：面向未来的架构<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-nvidia#-%E8%A7%A3%E5%86%B3%E7%9A%84%E6%A0%B8%E5%BF%83%E6%8C%91%E6%88%98%E9%9D%A2%E5%90%91%E6%9C%AA%E6%9D%A5%E7%9A%84%E6%9E%B6%E6%9E%84" class="hash-link" aria-label="🎯 解决的核心挑战：面向未来的架构的直接链接" title="🎯 解决的核心挑战：面向未来的架构的直接链接" translate="no">​</a></h3>
<p>Vera Rubin的设计前瞻性地瞄准了下一代超大规模AI模型的核心瓶颈——KV缓存（Key-Value Cache）**问题。KV缓存是Transformer类模型推理时的“工作记忆”，随着模型参数增至万亿级、上下文长度趋向无限，KV缓存的规模将爆炸性增长，导致每生成一个Token都需要读取海量数据，成为网络流量激增的“万恶之源”。 为突破此瓶颈，平台集成了硅光子连接技术**。该技术采用台积电（TSMC）的Co-op硅光子集成工艺，将光模块直接与芯片连接。其首款产品**Spectrum-X 新一代AI以太网交换机可提供512个200 Gbps端口，以光子替代电子进行高速数据传输，从根本上为未来模型所需的海量数据流动做好了准备。</p>]]></content>
        <author>
            <name>otqsoft</name>
            <uri>https://gitee.com/work25</uri>
        </author>
        <category label="AI" term="AI"/>
        <category label="GPU" term="GPU"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[2025年度工作总结]]></title>
        <id>http://www.otqsoft.com/doc/blog/long-blog-post-ai-bill</id>
        <link href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-bill"/>
        <updated>2025-12-31T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[2025年，我聚焦AI技术应用与全栈开发能力提升，以“技术赋能业务、沉淀个人价值”为核心目标，扎实推进各项工作任务。在项目实践中积极探索AI工具融合应用，在个人技术沉淀上持续深耕，既完成了团队交付的核心任务，也实现了个人技术能力与价值输出的双重突破。现将全年工作情况总结如下：]]></summary>
        <content type="html"><![CDATA[<p>2025年，我聚焦AI技术应用与全栈开发能力提升，以“技术赋能业务、沉淀个人价值”为核心目标，扎实推进各项工作任务。在项目实践中积极探索AI工具融合应用，在个人技术沉淀上持续深耕，既完成了团队交付的核心任务，也实现了个人技术能力与价值输出的双重突破。现将全年工作情况总结如下：</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="一核心工作成果ai驱动业务落地">一、核心工作成果：AI驱动业务落地<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-bill#%E4%B8%80%E6%A0%B8%E5%BF%83%E5%B7%A5%E4%BD%9C%E6%88%90%E6%9E%9Cai%E9%A9%B1%E5%8A%A8%E4%B8%9A%E5%8A%A1%E8%90%BD%E5%9C%B0" class="hash-link" aria-label="一、核心工作成果：AI驱动业务落地的直接链接" title="一、核心工作成果：AI驱动业务落地的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="ai智能体与系统搭建成果丰硕">AI智能体与系统搭建成果丰硕<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-bill#ai%E6%99%BA%E8%83%BD%E4%BD%93%E4%B8%8E%E7%B3%BB%E7%BB%9F%E6%90%AD%E5%BB%BA%E6%88%90%E6%9E%9C%E4%B8%B0%E7%A1%95" class="hash-link" aria-label="AI智能体与系统搭建成果丰硕的直接链接" title="AI智能体与系统搭建成果丰硕的直接链接" translate="no">​</a></h3>
<ul>
<li class="">基于Coze平台完成多款智能体及工作流搭建，包括地震小助手、设备管理小助手、Viki等。通过API调用实现智能体与实际项目的深度融合，有效简化了业务流程、提升了工作协同效率，其中设备管理小助手已在相关项目中投入使用，显著降低了设备运维的沟通成本与响应时间。</li>
<li class="">运用Dify平台搭建智能客服智能体，整合VAD（语音活动检测）、ASR（自动语音识别）、TTS（语音合成）等多模型能力，成功构建全流程智能客服系统。系统实现了语音交互、问题精准识别与智能应答的闭环，为用户提供了便捷的服务体验，同时减轻了人工客服的工作负担。</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="ai辅助开发创新实践">AI辅助开发创新实践<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-bill#ai%E8%BE%85%E5%8A%A9%E5%BC%80%E5%8F%91%E5%88%9B%E6%96%B0%E5%AE%9E%E8%B7%B5" class="hash-link" aria-label="AI辅助开发创新实践的直接链接" title="AI辅助开发创新实践的直接链接" translate="no">​</a></h3>
<ul>
<li class="">全年广泛运用AI工具赋能开发全流程，熟练使用多款工具提升开发效率与代码质量。基于此，自主完成一款Flutter APP的开发，并通过AI优化产品逻辑与运营策略，成功实现商业盈利，验证了AI辅助开发模式的可行性与商业价值。</li>
<li class="">积极引入并订阅了多类AI辅助开发工具，涵盖代码生成、智能问答与专项优化等方向。在IDE领域，充值并熟练使用Cursor、CodeBuddy、Qoder等工具，有效提升了编码效率与质量。在大模型平台方面，接入了DeepSeek、AutoGLM、硅基流动等国内优秀模型服务，并结合豆包、MiniMax等平台，在日常开发、代码调试与方案设计中实现了AI全流程协同。</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="二技术储备与个人沉淀">二、技术储备与个人沉淀<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-bill#%E4%BA%8C%E6%8A%80%E6%9C%AF%E5%82%A8%E5%A4%87%E4%B8%8E%E4%B8%AA%E4%BA%BA%E6%B2%89%E6%B7%80" class="hash-link" aria-label="二、技术储备与个人沉淀的直接链接" title="二、技术储备与个人沉淀的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="工具与平台资源整合">工具与平台资源整合<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-bill#%E5%B7%A5%E5%85%B7%E4%B8%8E%E5%B9%B3%E5%8F%B0%E8%B5%84%E6%BA%90%E6%95%B4%E5%90%88" class="hash-link" aria-label="工具与平台资源整合的直接链接" title="工具与平台资源整合的直接链接" translate="no">​</a></h3>
<ul>
<li class="">根据工作需求，精准选择并充值Cursor、CodeBuddy、Qoder等IDE工具，以及DeepSeek、AutoGLM、硅基流动等LLM相关平台，为高效开发与AI技术探索提供了稳定、优质的工具支撑，形成了适配个人开发习惯与业务需求的工具矩阵。</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="个人技术体系构建与输出">个人技术体系构建与输出<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-bill#%E4%B8%AA%E4%BA%BA%E6%8A%80%E6%9C%AF%E4%BD%93%E7%B3%BB%E6%9E%84%E5%BB%BA%E4%B8%8E%E8%BE%93%E5%87%BA" class="hash-link" aria-label="个人技术体系构建与输出的直接链接" title="个人技术体系构建与输出的直接链接" translate="no">​</a></h3>
<ul>
<li class="">
<p>完成个人域名备案（ <a href="https://www.otqsoft.com/" target="_blank" rel="noopener noreferrer" class="">www.otqsoft.com </a>），以此为载体，系统梳理过往开发经验，整合形成覆盖QT、VUE、Delphi、GO、Python等多语言的开发框架，实现技术经验的结构化沉淀，为后续项目开发提供可复用的技术方案。</p>
</li>
<li class="">
<p>积极参与开源生态建设，将部分优质代码整理后上传至码云和GitHub平台。通过开源实践加强与行业开发者的交流。</p>
</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="三展望未来">三、展望未来<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-bill#%E4%B8%89%E5%B1%95%E6%9C%9B%E6%9C%AA%E6%9D%A5" class="hash-link" aria-label="三、展望未来的直接链接" title="三、展望未来的直接链接" translate="no">​</a></h2>
<ul>
<li class="">深化AI辅助开发的应用场景，探索在更多业务领域的创新实践，力争实现更多商业价值转化</li>
<li class="">持续维护与更新技术站点与开源项目，构建更完整的技术输出体系，争取在AI应用开发与商业化落地方面实现新的突破</li>
<li class="">加大开源项目的投入，推动项目迭代升级，提升项目的实用性与影响力</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="四ai年度费用账单">四、AI年度费用账单<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-bill#%E5%9B%9Bai%E5%B9%B4%E5%BA%A6%E8%B4%B9%E7%94%A8%E8%B4%A6%E5%8D%95" class="hash-link" aria-label="四、AI年度费用账单的直接链接" title="四、AI年度费用账单的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="deepseek">deepseek<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-bill#deepseek" class="hash-link" aria-label="deepseek的直接链接" title="deepseek的直接链接" translate="no">​</a></h3>
<img src="http://www.otqsoft.com/doc/assets/images/deepseek-1-0d133b78ac723d01516ebf8c053cd4e2.png" class="previewImage_kI9J">
<img src="http://www.otqsoft.com/doc/assets/images/deepseek-2-6ed102a6a7b6ba9e9648212b1e370df1.png" class="previewImage_kI9J">
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="codebuddy">CodeBuddy<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-bill#codebuddy" class="hash-link" aria-label="CodeBuddy的直接链接" title="CodeBuddy的直接链接" translate="no">​</a></h3>
<img src="http://www.otqsoft.com/doc/assets/images/codebuddy-2025-a362189b1472923c2f4a098546bc7801.png" class="previewImage_kI9J">
<img src="http://www.otqsoft.com/doc/assets/images/codebuddy-1-c3a6fbfa5e1be426d0da5dcdc0a1f98c.png" class="previewImage_kI9J">
<img src="http://www.otqsoft.com/doc/assets/images/codebuddy-2-7410f7304d6054689b42b1ef73e9813a.png" class="previewImage_kI9J">
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="qoder">Qoder<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-bill#qoder" class="hash-link" aria-label="Qoder的直接链接" title="Qoder的直接链接" translate="no">​</a></h3>
<img src="http://www.otqsoft.com/doc/assets/images/qoder-2025-545255e14a769f389f4c4101091becb1.png" class="previewImage_kI9J">
<img src="http://www.otqsoft.com/doc/assets/images/qoder-1-686ce5540bad97f2a80e7e62c60ecd44.png" class="previewImage_kI9J">
<img src="http://www.otqsoft.com/doc/assets/images/qoder-2-21cbece0a105acf8d4a4ed4a3e8c0e03.png" class="previewImage_kI9J">
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="cursor">Cursor<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-bill#cursor" class="hash-link" aria-label="Cursor的直接链接" title="Cursor的直接链接" translate="no">​</a></h3>
<img src="http://www.otqsoft.com/doc/assets/images/cursor-1e45f72be5de36f44bdae217c904202d.png" class="previewImage_kI9J">
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="硅基流动">硅基流动<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-bill#%E7%A1%85%E5%9F%BA%E6%B5%81%E5%8A%A8" class="hash-link" aria-label="硅基流动的直接链接" title="硅基流动的直接链接" translate="no">​</a></h3>
<img src="http://www.otqsoft.com/doc/assets/images/siliconflow-1-b33e8e35e82ae52b6791d983ca2aaa7e.png" class="previewImage_kI9J">
<img src="http://www.otqsoft.com/doc/assets/images/siliconflow-3-6f955a02d23e54817328ee59d70c4fca.png" class="previewImage_kI9J">
<img src="http://www.otqsoft.com/doc/assets/images/siliconflow-2-234226bb5de410ff2041c3600ff46ca7.png" class="previewImage_kI9J">
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="autoglm">AutoGLM<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-bill#autoglm" class="hash-link" aria-label="AutoGLM的直接链接" title="AutoGLM的直接链接" translate="no">​</a></h3>
<img src="http://www.otqsoft.com/doc/assets/images/auto_glm-c5fa39099d2d5298371064b95dcd7b05.png" class="previewImage_kI9J">
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="火山引擎">火山引擎<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-bill#%E7%81%AB%E5%B1%B1%E5%BC%95%E6%93%8E" class="hash-link" aria-label="火山引擎的直接链接" title="火山引擎的直接链接" translate="no">​</a></h3>
<img src="http://www.otqsoft.com/doc/assets/images/ScreenShot-e6ade41bb61e3511bb5de028972f6460.png" class="previewImage_kI9J">
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="trae">TRAE<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-bill#trae" class="hash-link" aria-label="TRAE的直接链接" title="TRAE的直接链接" translate="no">​</a></h3>
<img src="http://www.otqsoft.com/doc/assets/images/trae-1-96f3031a7f03a6012d3b8e0a4e59c71f.png" class="previewImage_kI9J">
<img src="http://www.otqsoft.com/doc/assets/images/trae-annual-2025-40b69d56c2f550fcea8135986e13453c.png" class="previewImage_kI9J">]]></content>
        <author>
            <name>otqsoft</name>
            <uri>https://gitee.com/work25</uri>
        </author>
        <category label="AI" term="AI"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[MiniCPM-V 端侧多模态模型分析]]></title>
        <id>http://www.otqsoft.com/doc/blog/long-blog-post-llm-minicpm</id>
        <link href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-minicpm"/>
        <updated>2025-12-29T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[随着人工智能技术的快速发展，多模态大语言模型（MLLMs）已成为 AI 领域的核心研究方向。在这一领域中，MiniCPM-V 系列作为面壁智能与清华大学自然语言处理实验室联合推出的端侧导向多模态模型，凭借其在低参数量下实现高性能的独特优势，正在重新定义边缘设备 AI 的可能性边界。与此同时，InternVL和Qwen-VL作为分别由上海人工智能实验室和阿里云推出的主流多模态模型，也在各自的技术路线上取得了显著进展。]]></summary>
        <content type="html"><![CDATA[<p>随着人工智能技术的快速发展，多模态大语言模型（MLLMs）已成为 AI 领域的核心研究方向。在这一领域中，<strong>MiniCPM-V 系列</strong>作为面壁智能与清华大学自然语言处理实验室联合推出的端侧导向多模态模型，凭借其在低参数量下实现高性能的独特优势，正在重新定义边缘设备 AI 的可能性边界。与此同时，<strong>InternVL</strong>和<strong>Qwen-VL</strong>作为分别由上海人工智能实验室和阿里云推出的主流多模态模型，也在各自的技术路线上取得了显著进展。</p>
<p>当前，边缘计算和隐私保护需求的增长，使得在资源受限设备上部署高性能多模态 AI 成为行业迫切需求。MiniCPM-V 系列通过创新的架构设计和优化策略，在保持 8B 参数规模的同时，实现了与大参数量模型相当甚至更优的性能表现。本研究旨在通过深入分析 MiniCPM-V 的技术架构、性能表现、部署方案以及与 InternVL、Qwen-VL 的全面对比，为多模态 AI 模型的选型和部署提供科学依据。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="一minicpm-v-系列模型技术架构深度解析">一、MiniCPM-V 系列模型技术架构深度解析<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-minicpm#%E4%B8%80minicpm-v-%E7%B3%BB%E5%88%97%E6%A8%A1%E5%9E%8B%E6%8A%80%E6%9C%AF%E6%9E%B6%E6%9E%84%E6%B7%B1%E5%BA%A6%E8%A7%A3%E6%9E%90" class="hash-link" aria-label="一、MiniCPM-V 系列模型技术架构深度解析的直接链接" title="一、MiniCPM-V 系列模型技术架构深度解析的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="11-核心架构设计与创新突破">1.1 核心架构设计与创新突破<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-minicpm#11-%E6%A0%B8%E5%BF%83%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1%E4%B8%8E%E5%88%9B%E6%96%B0%E7%AA%81%E7%A0%B4" class="hash-link" aria-label="1.1 核心架构设计与创新突破的直接链接" title="1.1 核心架构设计与创新突破的直接链接" translate="no">​</a></h3>
<p>MiniCPM-V 4.5 采用了<strong>基于 Qwen3-8B 语言模型和 SigLIP2-400M 视觉编码器的双塔架构</strong>，通过创新的 3D-Resampler 实现视觉与语言模态的高效对齐。这一架构设计的核心突破在于解决了传统多模态模型在端侧部署时面临的计算效率和内存占用瓶颈。</p>
<p>视觉编码器采用<strong>EVA2-Enormous 模型，包含 1.3B 参数</strong>，基于标准 Vision Transformer 架构，通过超参数优化实现了性能与效率的平衡。该编码器支持动态图像尺寸输入，能够处理高达<strong>180 万像素</strong>的高分辨率图像，为精细视觉理解提供了基础保障。</p>
<img src="http://www.otqsoft.com/doc/assets/images/4-89fa670795150784b26151304e6d21af.png" class="previewImage_kI9J">
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="12-革命性的-3d-resampler-技术">1.2 革命性的 3D-Resampler 技术<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-minicpm#12-%E9%9D%A9%E5%91%BD%E6%80%A7%E7%9A%84-3d-resampler-%E6%8A%80%E6%9C%AF" class="hash-link" aria-label="1.2 革命性的 3D-Resampler 技术的直接链接" title="1.2 革命性的 3D-Resampler 技术的直接链接" translate="no">​</a></h3>
<p><strong>3D-Resampler</strong>是 MiniCPM-V 4.5 最具创新性的技术突破，它将传统的 2D-Resampler 扩展到三维空间，能够联合压缩视频的时空信息。这一技术的核心优势体现在：</p>
<p><strong>超高压缩率实现</strong>：3D-Resampler 能够将 6 秒、2fps、448×448 分辨率的视频编码为仅 128 个视觉 token，相比代表性 MLLMs 实现了<strong>12×-24× 的 token 成本降低</strong>。在视频处理中，系统将视频按每 N 帧分组（最大分组尺寸为 6），对每个视频组进行压缩编码，最终得到 64 个视觉 token，实现了与单图编码相同的 token 数量。</p>
<p><strong>统一编码能力</strong>：该技术不仅支持视频处理，还能实现图像的统一编码，在保持相同推理开销的情况下，最大支持 10fps 抽帧，实现了模型的高刷视频理解能力。这种统一的编码方式大大简化了模型的复杂度，提高了部署的灵活性。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="13-三级-token-压缩策略的工程实现">1.3 三级 Token 压缩策略的工程实现<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-minicpm#13-%E4%B8%89%E7%BA%A7-token-%E5%8E%8B%E7%BC%A9%E7%AD%96%E7%95%A5%E7%9A%84%E5%B7%A5%E7%A8%8B%E5%AE%9E%E7%8E%B0" class="hash-link" aria-label="1.3 三级 Token 压缩策略的工程实现的直接链接" title="1.3 三级 Token 压缩策略的工程实现的直接链接" translate="no">​</a></h3>
<p>MiniCPM-V 4.5 实现了业界领先的<strong>三级 Token 压缩策略</strong>，这一策略从根本上解决了高分辨率图像处理的计算效率问题：</p>
<table><thead><tr><th>压缩级别</th><th>技术实现</th><th>压缩效果</th><th>关键参数</th></tr></thead><tbody><tr><td>第一级：图像切片压缩</td><td>智能图像切片算法，max_slice_nums=9</td><td>将任意分辨率图像分割为 448×448 图像块</td><td>训练时≤9 片，推理时 1-2 片</td></tr><tr><td>第二级：视觉编码器压缩</td><td>EVA2-Enormous 视觉 Transformer</td><td>14×14 patches，embed_dim=1408</td><td>移除最后一层以提升性能</td></tr><tr><td>第三级：Resampler 固定压缩</td><td>Perceiver-Resampler 技术</td><td>固定输出 64 个 token</td><td>grid_size=8×8</td></tr></tbody></table>
<p>这一压缩策略的效果令人瞩目：处理 1.8M 像素图像时仅产生<strong>640 个 token，比大多数模型减少 75%</strong>。这种超高的 Token 密度直接转化为推理速度的提升、首 token 延迟的降低、内存使用的减少和功耗的优化。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="14-混合强化学习后训练策略">1.4 混合强化学习后训练策略<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-minicpm#14-%E6%B7%B7%E5%90%88%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0%E5%90%8E%E8%AE%AD%E7%BB%83%E7%AD%96%E7%95%A5" class="hash-link" aria-label="1.4 混合强化学习后训练策略的直接链接" title="1.4 混合强化学习后训练策略的直接链接" translate="no">​</a></h3>
<p>MiniCPM-V 4.5 在训练策略上的另一重要创新是<strong>混合强化学习后训练策略</strong>，这一策略解决了传统模型只能优化单一推理模式的局限性。该策略支持两种推理模式：</p>
<p><strong>短推理模式</strong>：适用于快速问答场景，推理速度快，资源消耗低</p>
<p><strong>长推理模式</strong>：针对复杂任务，提供更深入的推理能力</p>
<p>实验数据显示，混合策略在 OpenCompass 评估中达到<strong>77.1 分的最佳性能</strong>，同时仅消耗长推理模式训练 token 成本的<strong>70.5%</strong>。这种效率提升主要源于两种模式共享基础感知和认知技能，长推理培养的分析深度能够增强短推理能力，而短推理学习的效率和直接性能够优化长推理过程。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="二minicpm-v-系列性能评估与基准测试分析">二、MiniCPM-V 系列性能评估与基准测试分析<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-minicpm#%E4%BA%8Cminicpm-v-%E7%B3%BB%E5%88%97%E6%80%A7%E8%83%BD%E8%AF%84%E4%BC%B0%E4%B8%8E%E5%9F%BA%E5%87%86%E6%B5%8B%E8%AF%95%E5%88%86%E6%9E%90" class="hash-link" aria-label="二、MiniCPM-V 系列性能评估与基准测试分析的直接链接" title="二、MiniCPM-V 系列性能评估与基准测试分析的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="21-opencompass-综合评测表现">2.1 OpenCompass 综合评测表现<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-minicpm#21-opencompass-%E7%BB%BC%E5%90%88%E8%AF%84%E6%B5%8B%E8%A1%A8%E7%8E%B0" class="hash-link" aria-label="2.1 OpenCompass 综合评测表现的直接链接" title="2.1 OpenCompass 综合评测表现的直接链接" translate="no">​</a></h3>
<p>在权威的 OpenCompass 综合评测中，MiniCPM-V 4.5 取得了<strong>77.0 分的优异成绩</strong>，这一成绩超越了包括 GPT-4o-latest、Gemini 2.0 Pro 等主流闭源模型，以及参数量更大的开源模型如 Qwen2.5-VL 72B。这一表现充分证明了 MiniCPM-V 4.5 在<strong>仅 8B 参数规模</strong>下实现的性能突破。</p>
<table><thead><tr><th>评测维度</th><th>MiniCPM-V 4.5</th><th>GPT-4o-latest</th><th>Qwen2.5-VL 72B</th></tr></thead><tbody><tr><td>OpenCompass 平均分</td><td>77.0</td><td>75.4</td><td>73.6</td></tr><tr><td>MMVet 测试</td><td>75.5</td><td>-</td><td>71.6</td></tr><tr><td>MME 测试</td><td>76.9</td><td>2328.7</td><td>2215.1</td></tr><tr><td>OCRBench</td><td>86.5</td><td>736</td><td>794</td></tr></tbody></table>
<p>从细分指标来看，MiniCPM-V 4.5 在多个专项测试中表现突出。在<strong>MMVet 测试中得分 75.5</strong>，明显高于 Qwen2.5-VL 和 InternVL3 等模型。在 OCRBench 测试中，模型得分达到<strong>86.5 分</strong>，超越了 GPT-4o 等专有模型，展现了其在文本识别领域的强大能力。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="22-视频理解能力的突破性表现">2.2 视频理解能力的突破性表现<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-minicpm#22-%E8%A7%86%E9%A2%91%E7%90%86%E8%A7%A3%E8%83%BD%E5%8A%9B%E7%9A%84%E7%AA%81%E7%A0%B4%E6%80%A7%E8%A1%A8%E7%8E%B0" class="hash-link" aria-label="2.2 视频理解能力的突破性表现的直接链接" title="2.2 视频理解能力的突破性表现的直接链接" translate="no">​</a></h3>
<p>MiniCPM-V 4.5 在视频理解领域的表现尤为突出，在<strong>LVBench、MLVU、Video-MME、LongVideoBench</strong>等多个榜单中均达到同级最佳水平。特别值得关注的是在 Video-MME 基准测试中的表现：</p>
<table><thead><tr><th>模型</th><th>参数规模</th><th>Video-MME 得分</th><th>推理时间</th><th>显存占用</th></tr></thead><tbody><tr><td>MiniCPM-V 4.5</td><td>8.7B</td><td>73.5</td><td>0.26 小时</td><td>28GB</td></tr><tr><td>主流 MLLMs</td><td>20-70B</td><td>72-74</td><td>2.63 小时</td><td>80-160GB</td></tr><tr><td>Qwen2.5-VL 7B</td><td>7B</td><td>68.9</td><td>2.41 小时</td><td>48GB</td></tr></tbody></table>
<p>MiniCPM-V 4.5 在 Video-MME 上不仅实现了<strong>73.5 分的高分</strong>，更重要的是仅使用了主流模型<strong>9.9% 的推理时间</strong>（从 2.63 小时降至 0.26 小时）和<strong>28GB 的显存占用</strong>，相比 Qwen2.5-VL 7B 使用了<strong>46.7% 的 GPU 内存成本和 8.7% 的推理时间</strong>。这种效率提升主要得益于 3D-Resampler 技术的高效视频编码能力。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="23-文档解析与-ocr-性能优势">2.3 文档解析与 OCR 性能优势<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-minicpm#23-%E6%96%87%E6%A1%A3%E8%A7%A3%E6%9E%90%E4%B8%8E-ocr-%E6%80%A7%E8%83%BD%E4%BC%98%E5%8A%BF" class="hash-link" aria-label="2.3 文档解析与 OCR 性能优势的直接链接" title="2.3 文档解析与 OCR 性能优势的直接链接" translate="no">​</a></h3>
<p>MiniCPM-V 4.5 在文档理解领域实现了重要突破，采用统一学习范式，能够直接从文档图像中准确获取知识，<strong>消除了对脆弱外部解析器的依赖</strong>。在 OCRBench 测试中，模型达到了<strong>86.5 分</strong>的领先成绩，超越了包括 GPT-4o 在内的专有模型。</p>
<p>在 PDF 文档解析能力方面，MiniCPM-V 4.5 在 OmniDocBench 上达到了通用 MLLMs 中的<strong>最先进性能</strong>。这一能力的实现基于创新的学习范式：通过动态损坏文档中的文本区域并要求模型重建文本，使模型能够自适应地在精确文本识别和基于多模态上下文的知识推理之间进行适当切换。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="24-推理效率与资源消耗分析">2.4 推理效率与资源消耗分析<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-minicpm#24-%E6%8E%A8%E7%90%86%E6%95%88%E7%8E%87%E4%B8%8E%E8%B5%84%E6%BA%90%E6%B6%88%E8%80%97%E5%88%86%E6%9E%90" class="hash-link" aria-label="2.4 推理效率与资源消耗分析的直接链接" title="2.4 推理效率与资源消耗分析的直接链接" translate="no">​</a></h3>
<p>MiniCPM-V 4.5 在推理效率方面的表现堪称革命性。在标准的 8 A100 GPU 配置下，模型在图像理解和视频理解任务上均实现了显著的效率提升：</p>
<p><strong>OpenCompass 评估效率</strong>：MiniCPM-V 4.5 不仅在 30B 以下模型中获得最高平均分，还以<strong>42.9% 的时间</strong>完成了 GLM-4.1V 的评估任务</p>
<p><strong>视频推理效率</strong>：在 Video-MME 上，模型将推理时间减少了近<strong>10 倍</strong>（从 2.63 小时降至 0.26 小时），显存占用仅 28GB</p>
<p><strong>帧率处理能力</strong>：模型支持最大<strong>10fps 抽帧</strong>的高刷视频理解，推理开销保持不变</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="三端侧部署技术方案与硬件适配性">三、端侧部署技术方案与硬件适配性<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-minicpm#%E4%B8%89%E7%AB%AF%E4%BE%A7%E9%83%A8%E7%BD%B2%E6%8A%80%E6%9C%AF%E6%96%B9%E6%A1%88%E4%B8%8E%E7%A1%AC%E4%BB%B6%E9%80%82%E9%85%8D%E6%80%A7" class="hash-link" aria-label="三、端侧部署技术方案与硬件适配性的直接链接" title="三、端侧部署技术方案与硬件适配性的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="31-移动端部署的突破性实现">3.1 移动端部署的突破性实现<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-minicpm#31-%E7%A7%BB%E5%8A%A8%E7%AB%AF%E9%83%A8%E7%BD%B2%E7%9A%84%E7%AA%81%E7%A0%B4%E6%80%A7%E5%AE%9E%E7%8E%B0" class="hash-link" aria-label="3.1 移动端部署的突破性实现的直接链接" title="3.1 移动端部署的突破性实现的直接链接" translate="no">​</a></h3>
<p>MiniCPM-V 4.5 在移动端部署方面实现了历史性突破，成为首个能够在手机和平板电脑上流畅运行的 GPT-4o 级别多模态模型。具体的部署性能表现如下：</p>
<table><thead><tr><th>设备型号</th><th>首 token 延迟</th><th>解码速度</th><th>发热情况</th><th>支持功能</th></tr></thead><tbody><tr><td>iPhone 16 Pro Max</td><td><code>&lt;2 秒</code></td><td><code>&gt;17 token/s</code></td><td>无明显发热</td><td>实时图像视频分析</td></tr><tr><td>iPad Pro (M4 芯片)</td><td><code>&lt;1.5 秒</code></td><td><code>&gt;20 token/s</code></td><td>温度稳定</td><td>10fps 视频理解</td></tr><tr><td>旗舰 Android 手机</td><td><code>&lt;2.5 秒</code></td><td><code>&gt;15 token/s</code></td><td>轻微发热</td><td>离线多模态处理</td></tr></tbody></table>
<p>在 iPhone 16 Pro Max 上，模型实现了<strong>首 token 延迟低于 2 秒，解码速度超过 17 token/s</strong>，且无明显发热问题。这种性能表现使得模型能够轻松部署于智能手机、平板电脑等边缘设备，满足移动、离线和隐私保护场景的需求。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="32-多样化部署框架支持">3.2 多样化部署框架支持<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-minicpm#32-%E5%A4%9A%E6%A0%B7%E5%8C%96%E9%83%A8%E7%BD%B2%E6%A1%86%E6%9E%B6%E6%94%AF%E6%8C%81" class="hash-link" aria-label="3.2 多样化部署框架支持的直接链接" title="3.2 多样化部署框架支持的直接链接" translate="no">​</a></h3>
<p>MiniCPM-V 4.5 提供了业界最丰富的部署选项，支持<strong>16 种尺寸的 int4、GGUF 和 AWQ 格式量化版本</strong>，满足不同硬件平台的资源约束。主要部署方式包括：</p>
<p><strong>llama.cpp 和 ollama 支持</strong>：提供高效 CPU 推理能力，使模型能够在没有 GPU 的设备上运行</p>
<p><strong>vLLM 支持</strong>：支持高吞吐量和内存高效推理，适合服务器端部署</p>
<p><strong>iOS 原生应用</strong>：专为 iPhone 和 iPad 优化的本地应用，提供最佳用户体验</p>
<p><strong>Android 部署</strong>：支持带有 NPUs / 多核 big CPU 的旗舰手机</p>
<p>这种多样化的部署支持使得 MiniCPM-V 4.5 能够覆盖从边缘设备到云端服务器的全场景部署需求。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="33-边缘设备硬件要求与优化策略">3.3 边缘设备硬件要求与优化策略<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-minicpm#33-%E8%BE%B9%E7%BC%98%E8%AE%BE%E5%A4%87%E7%A1%AC%E4%BB%B6%E8%A6%81%E6%B1%82%E4%B8%8E%E4%BC%98%E5%8C%96%E7%AD%96%E7%95%A5" class="hash-link" aria-label="3.3 边缘设备硬件要求与优化策略的直接链接" title="3.3 边缘设备硬件要求与优化策略的直接链接" translate="no">​</a></h3>
<p>MiniCPM-V 4.5 对边缘设备的硬件要求相对宽松，但为了获得最佳体验，建议采用以下配置：</p>
<table><thead><tr><th>硬件组件</th><th>最低配置</th><th>推荐配置</th><th>优化建议</th></tr></thead><tbody><tr><td>CPU</td><td>四核处理器</td><td>八核及以上</td><td>启用多线程推理</td></tr><tr><td>RAM</td><td>6GB</td><td>8GB 及以上</td><td>预留≥6-8GB 给模型</td></tr><tr><td>GPU</td><td>集成显卡</td><td>专用 GPU/NPU</td><td>利用硬件加速</td></tr><tr><td>存储空间</td><td>4GB</td><td>8GB 及以上</td><td>存储量化模型文件</td></tr></tbody></table>
<p>关键参数包括可用 RAM（建议预留 6-8GB 给模型）和算力（CPU/GPU/NPU 矩阵乘法吞吐）。对于极端资源受限环境（如低端移动设备），模型仍需要进一步优化，但当前版本已经能够在大多数现代智能手机和平板电脑上流畅运行。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="四minicpm-v-与-internvlqwen-vl-的全面技术对比">四、MiniCPM-V 与 InternVL、Qwen-VL 的全面技术对比<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-minicpm#%E5%9B%9Bminicpm-v-%E4%B8%8E-internvlqwen-vl-%E7%9A%84%E5%85%A8%E9%9D%A2%E6%8A%80%E6%9C%AF%E5%AF%B9%E6%AF%94" class="hash-link" aria-label="四、MiniCPM-V 与 InternVL、Qwen-VL 的全面技术对比的直接链接" title="四、MiniCPM-V 与 InternVL、Qwen-VL 的全面技术对比的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="41-模型架构与技术路线对比">4.1 模型架构与技术路线对比<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-minicpm#41-%E6%A8%A1%E5%9E%8B%E6%9E%B6%E6%9E%84%E4%B8%8E%E6%8A%80%E6%9C%AF%E8%B7%AF%E7%BA%BF%E5%AF%B9%E6%AF%94" class="hash-link" aria-label="4.1 模型架构与技术路线对比的直接链接" title="4.1 模型架构与技术路线对比的直接链接" translate="no">​</a></h3>
<p>三个模型在技术架构上采用了不同的设计理念，反映了各自的目标定位和技术侧重点：</p>
<table><thead><tr><th>对比维度</th><th>MiniCPM-V 4.5</th><th>InternVL 2.5</th><th>Qwen2.5-VL</th></tr></thead><tbody><tr><td>核心架构</td><td>Qwen3-8B + SigLIP2-400M 双塔架构</td><td>ViT-MLP-LLM 范式</td><td>视觉编码器 + LLM+MLP 融合器</td></tr><tr><td>视觉编码器</td><td>EVA2-Enormous (1.3B 参数)</td><td>InternViT 系列</td><td>重新设计的 ViT 架构</td></tr><tr><td>跨模态融合</td><td>3D-Resampler 统一编码</td><td>MLP projector</td><td>多层 MLP 特征压缩</td></tr><tr><td>位置编码</td><td>2D Sincos 位置编码</td><td>像素 unshuffle 操作</td><td>2D-RoPE + 窗口注意力</td></tr><tr><td>最大分辨率</td><td>180 万像素</td><td>4K 分辨率</td><td>动态分辨率</td></tr></tbody></table>
<p><strong>MiniCPM-V 的独特优势</strong>在于其专门为端侧部署设计的 3D-Resampler 技术，实现了业界最高的视觉 token 压缩率。<strong>InternVL</strong>则采用了 "视觉编码器 + 语言中间件" 架构，突破了传统双编码器的局限，特别适合处理超高分辨率图像。<strong>Qwen2.5-VL</strong>的优势在于其灵活的动态分辨率处理和多层融合机制，在文档理解方面表现突出。</p>
<img src="http://www.otqsoft.com/doc/assets/images/0-6ba8e7c2af6c9c46db7dea42e18382a9.png" class="previewImage_kI9J">
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="42-性能表现与评测数据对比">4.2 性能表现与评测数据对比<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-minicpm#42-%E6%80%A7%E8%83%BD%E8%A1%A8%E7%8E%B0%E4%B8%8E%E8%AF%84%E6%B5%8B%E6%95%B0%E6%8D%AE%E5%AF%B9%E6%AF%94" class="hash-link" aria-label="4.2 性能表现与评测数据对比的直接链接" title="4.2 性能表现与评测数据对比的直接链接" translate="no">​</a></h3>
<p>在权威评测基准上，三个模型的表现各有千秋：</p>
<p><strong>综合性能对比</strong>：</p>
<ul>
<li class="">
<p><strong>MiniCPM-V 4.5</strong>：OpenCompass 平均分 77.0 分，超越 GPT-4o-latest 和 Qwen2.5-VL 72B</p>
</li>
<li class="">
<p><strong>InternVL2.5-8B</strong>：MMBench 得分 84.6/82.6，超过 InternVL2-8B 的 81.7/81.2</p>
</li>
<li class="">
<p><strong>Qwen2.5-VL-72B</strong>：与 GPT-4o 和 Claude 3.5 Sonnet 性能相当</p>
</li>
</ul>
<p><strong>专项能力对比</strong>：</p>
<table><thead><tr><th>评测项目</th><th>MiniCPM-V 4.5</th><th>InternVL2.5-8B</th><th>Qwen2.5-VL-72B</th></tr></thead><tbody><tr><td>MMVet</td><td>75.5</td><td>82.6</td><td>70.2</td></tr><tr><td>Video-MME</td><td>73.5</td><td>60.72</td><td>73.3</td></tr><tr><td>OCRBench</td><td>86.5</td><td>83.9</td><td>788</td></tr><tr><td>MMMU</td><td>67.7</td><td>82.7</td><td>70.2</td></tr><tr><td>推理时间</td><td>0.26 小时</td><td>386 秒 (100K tokens)</td><td>中等</td></tr></tbody></table>
<p>从数据可以看出，MiniCPM-V 4.5 在<strong>视频理解和 OCR 任务</strong>上具有明显优势，而 InternVL 在<strong>多图像理解和长文本推理</strong>方面表现更强，Qwen-VL 则在<strong>文档解析和综合能力</strong>上较为均衡。</p>
<img src="http://www.otqsoft.com/doc/assets/images/1-e90ac9fcd43d70d9fa595b56c00759b5.png" class="previewImage_kI9J">
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="43-部署方案与硬件要求对比">4.3 部署方案与硬件要求对比<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-minicpm#43-%E9%83%A8%E7%BD%B2%E6%96%B9%E6%A1%88%E4%B8%8E%E7%A1%AC%E4%BB%B6%E8%A6%81%E6%B1%82%E5%AF%B9%E6%AF%94" class="hash-link" aria-label="4.3 部署方案与硬件要求对比的直接链接" title="4.3 部署方案与硬件要求对比的直接链接" translate="no">​</a></h3>
<p>三个模型在部署灵活性和硬件要求上存在显著差异，这直接影响了它们的应用场景：</p>
<table><thead><tr><th>部署维度</th><th>MiniCPM-V 4.5</th><th>InternVL 2.5</th><th>Qwen2.5-VL</th></tr></thead><tbody><tr><td>最低 GPU 要求</td><td>无（可 CPU / 手机）</td><td>NVIDIA GTX 1060 (6GB)</td><td>8GB 显存</td></tr><tr><td>推荐 GPU 配置</td><td>无（端侧优先）</td><td>NVIDIA RTX 3090 (24GB)</td><td>16GB + 显存</td></tr><tr><td>手机部署</td><td>完全支持</td><td>不支持</td><td>不支持</td></tr><tr><td>量化版本</td><td>int4、GGUF、AWQ（16 种）</td><td>AWQ 量化</td><td>INT8/INT4 量化</td></tr><tr><td>显存优化</td><td>28GB (Video-MME)</td><td>7.8GB (4B 版本)</td><td>384GB (72B 版本)</td></tr><tr><td>推理效率</td><td>9.9% 推理时间</td><td>中等</td><td>较高</td></tr></tbody></table>
<p><strong>MiniCPM-V 的部署优势</strong>极为明显：完全支持手机和平板部署，提供 16 种量化版本，在 Video-MME 上仅需 28GB 显存。<strong>InternVL</strong>需要至少 6GB 显存 GPU，适合中高端 GPU 部署。<strong>Qwen2.5-VL-72B</strong>的部署要求最高，需要至少 384GB 显存，通常需要 8×A100 80GB 或类似配置。</p>
<img src="http://www.otqsoft.com/doc/assets/images/2-3bd5dbcbac88dac02cc4e48123cedb21.png" class="previewImage_kI9J">
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="44-应用场景与适用领域对比">4.4 应用场景与适用领域对比<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-minicpm#44-%E5%BA%94%E7%94%A8%E5%9C%BA%E6%99%AF%E4%B8%8E%E9%80%82%E7%94%A8%E9%A2%86%E5%9F%9F%E5%AF%B9%E6%AF%94" class="hash-link" aria-label="4.4 应用场景与适用领域对比的直接链接" title="4.4 应用场景与适用领域对比的直接链接" translate="no">​</a></h3>
<p>基于技术特点和性能表现，三个模型各有其最适合的应用场景：</p>
<p><strong>MiniCPM-V 4.5 适用场景</strong>：</p>
<ul>
<li class="">
<p><strong>边缘设备应用</strong>：手机、平板、IoT 设备的离线 AI 功能</p>
</li>
<li class="">
<p><strong>实时视频分析</strong>：安防监控、运动分析、直播内容理解</p>
</li>
<li class="">
<p><strong>隐私保护场景</strong>：医疗影像、金融文档的本地处理</p>
</li>
<li class="">
<p><strong>移动应用集成</strong>：拍照翻译、实时物体识别、AR 应用</p>
</li>
</ul>
<p><strong>InternVL 适用场景</strong>：</p>
<ul>
<li class="">
<p><strong>专业视觉任务</strong>：4K 图像编辑、卫星图像处理、工业质检</p>
</li>
<li class="">
<p><strong>多图对比分析</strong>：遥感图像解译、医学影像诊断</p>
</li>
<li class="">
<p><strong>高精度 OCR</strong>：复杂文档、公式识别、多语言文本提取</p>
</li>
<li class="">
<p><strong>科学研究</strong>：天文图像处理、生物图像分析</p>
</li>
</ul>
<p><strong>Qwen2.5-VL 适用场景</strong>：</p>
<ul>
<li class="">
<p><strong>企业级文档处理</strong>：大规模文档解析、合同审查、报表分析</p>
</li>
<li class="">
<p><strong>长视频理解</strong>：视频内容检索、影视制作辅助</p>
</li>
<li class="">
<p><strong>多模态对话</strong>：智能客服、虚拟助手、教育辅导</p>
</li>
<li class="">
<p><strong>云端 AI 服务</strong>：API 部署、大规模推理任务</p>
</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="五三模型优劣势深度分析">五、三模型优劣势深度分析<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-minicpm#%E4%BA%94%E4%B8%89%E6%A8%A1%E5%9E%8B%E4%BC%98%E5%8A%A3%E5%8A%BF%E6%B7%B1%E5%BA%A6%E5%88%86%E6%9E%90" class="hash-link" aria-label="五、三模型优劣势深度分析的直接链接" title="五、三模型优劣势深度分析的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="51-minicpm-v-相对其他两模型的优势">5.1 MiniCPM-V 相对其他两模型的优势<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-minicpm#51-minicpm-v-%E7%9B%B8%E5%AF%B9%E5%85%B6%E4%BB%96%E4%B8%A4%E6%A8%A1%E5%9E%8B%E7%9A%84%E4%BC%98%E5%8A%BF" class="hash-link" aria-label="5.1 MiniCPM-V 相对其他两模型的优势的直接链接" title="5.1 MiniCPM-V 相对其他两模型的优势的直接链接" translate="no">​</a></h3>
<p><strong>端侧部署能力的绝对优势</strong>：MiniCPM-V 是唯一能够在手机和平板电脑上流畅运行的 8B 参数多模态模型，这一优势在当前边缘计算趋势下具有决定性意义。相比之下，InternVL 和 Qwen-VL 主要针对云端和高性能 GPU 部署，无法在资源受限设备上运行。</p>
<p><strong>推理效率的数量级提升</strong>：在视频理解任务中，MiniCPM-V 4.5 的推理时间仅为 Qwen2.5-VL 7B 的<strong>8.7%</strong>，为其他模型的<strong>9.9%</strong>。这种效率提升不仅降低了部署成本，更使得实时视频分析成为可能。</p>
<p><strong>Token 压缩技术的领先优势</strong>：通过 3D-Resampler 技术，MiniCPM-V 实现了<strong>96 倍的视频压缩率</strong>，处理 1.8M 像素图像仅需 640 个 token，比大多数模型减少 75%。这一技术优势直接转化为内存使用和功耗的显著降低。</p>
<p><strong>混合推理模式的灵活性</strong>：MiniCPM-V 支持短推理和长推理两种模式，能够根据任务复杂度动态调整，在保持高性能的同时优化资源使用。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="52-minicpm-v-相对其他两模型的劣势">5.2 MiniCPM-V 相对其他两模型的劣势<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-minicpm#52-minicpm-v-%E7%9B%B8%E5%AF%B9%E5%85%B6%E4%BB%96%E4%B8%A4%E6%A8%A1%E5%9E%8B%E7%9A%84%E5%8A%A3%E5%8A%BF" class="hash-link" aria-label="5.2 MiniCPM-V 相对其他两模型的劣势的直接链接" title="5.2 MiniCPM-V 相对其他两模型的劣势的直接链接" translate="no">​</a></h3>
<p><strong>超大分辨率图像处理能力有限</strong>：虽然 MiniCPM-V 能够处理 180 万像素图像，但相比 InternVL 支持的 4K 分辨率仍有差距。在需要处理超高分辨率专业图像的场景下，InternVL 的优势更为明显。</p>
<p><strong>语言生成能力的相对不足</strong>：受限于 8B 参数规模，MiniCPM-V 在长文本生成和复杂语言推理任务上不如 Qwen2.5-VL-72B。Qwen-VL 在语言交互的流畅度和连贯性方面表现更为出色。</p>
<p><strong>生态系统的相对薄弱</strong>：相比阿里云支持的 Qwen-VL 和上海 AI 实验室支持的 InternVL，MiniCPM-V 的开发者生态和配套工具仍在建设中。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="53-模型选型决策框架">5.3 模型选型决策框架<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-minicpm#53-%E6%A8%A1%E5%9E%8B%E9%80%89%E5%9E%8B%E5%86%B3%E7%AD%96%E6%A1%86%E6%9E%B6" class="hash-link" aria-label="5.3 模型选型决策框架的直接链接" title="5.3 模型选型决策框架的直接链接" translate="no">​</a></h3>
<p>基于上述分析，可以构建如下的模型选型决策框架：</p>
<p><strong>选择 MiniCPM-V 的场景</strong>：</p>
<ul>
<li class="">
<p>需要在手机、平板等边缘设备部署</p>
</li>
<li class="">
<p>对推理速度和功耗有严格要求</p>
</li>
<li class="">
<p>应用场景涉及实时视频分析</p>
</li>
<li class="">
<p>重视数据隐私，需要本地处理</p>
</li>
</ul>
<p><strong>选择 InternVL 的场景</strong>：</p>
<ul>
<li class="">
<p>需要处理 4K 及以上分辨率图像</p>
</li>
<li class="">
<p>专业视觉理解任务要求高精度</p>
</li>
<li class="">
<p>有充足的 GPU 资源支持</p>
</li>
<li class="">
<p>重视开源协议和可定制性</p>
</li>
</ul>
<p><strong>选择 Qwen-VL 的场景</strong>：</p>
<ul>
<li class="">
<p>需要企业级文档处理能力</p>
</li>
<li class="">
<p>重视语言交互的流畅性</p>
</li>
<li class="">
<p>可接受云端部署或高 GPU 配置</p>
</li>
<li class="">
<p>需要完善的技术支持和生态</p>
</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="六实际部署案例与应用效果分析">六、实际部署案例与应用效果分析<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-minicpm#%E5%85%AD%E5%AE%9E%E9%99%85%E9%83%A8%E7%BD%B2%E6%A1%88%E4%BE%8B%E4%B8%8E%E5%BA%94%E7%94%A8%E6%95%88%E6%9E%9C%E5%88%86%E6%9E%90" class="hash-link" aria-label="六、实际部署案例与应用效果分析的直接链接" title="六、实际部署案例与应用效果分析的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="61-边缘设备部署成功案例">6.1 边缘设备部署成功案例<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-minicpm#61-%E8%BE%B9%E7%BC%98%E8%AE%BE%E5%A4%87%E9%83%A8%E7%BD%B2%E6%88%90%E5%8A%9F%E6%A1%88%E4%BE%8B" class="hash-link" aria-label="6.1 边缘设备部署成功案例的直接链接" title="6.1 边缘设备部署成功案例的直接链接" translate="no">​</a></h3>
<p>MiniCPM-V 4.5 在实际部署中展现了优异的性能表现。在<strong>iPhone 16 Pro Max</strong>上，模型实现了首 token 延迟低于 2 秒，解码速度超过 17 token/s，且无明显发热问题。这使得移动应用开发者能够将复杂的多模态 AI 功能集成到手机应用中，无需依赖云端服务。</p>
<p>在<strong>iPad Pro (M4 芯片)上，模型支持 10fps 的实时视频理解，能够处理高帧率视频流，适用于安防监控、运动分析等场景。测试显示，模型在处理复杂动作识别任务时，准确率达到了92% 以上</strong>，同时保持流畅的实时性能。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="62-企业级部署成本效益分析">6.2 企业级部署成本效益分析<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-minicpm#62-%E4%BC%81%E4%B8%9A%E7%BA%A7%E9%83%A8%E7%BD%B2%E6%88%90%E6%9C%AC%E6%95%88%E7%9B%8A%E5%88%86%E6%9E%90" class="hash-link" aria-label="6.2 企业级部署成本效益分析的直接链接" title="6.2 企业级部署成本效益分析的直接链接" translate="no">​</a></h3>
<p>某汽车零部件厂商部署 MiniCPM-V 后，实现了显著的业务价值提升：</p>
<table><thead><tr><th>指标</th><th>传统方案</th><th>MiniCPM-V 方案</th><th>提升效果</th></tr></thead><tbody><tr><td>识别准确率</td><td>95.3%</td><td>99.2%</td><td>+3.9%</td></tr><tr><td>检测速度</td><td>1 帧 / 秒</td><td>5 帧 / 秒</td><td>提升 5 倍</td></tr><tr><td>人工成本</td><td>500 万元 / 年</td><td>200 万元 / 年</td><td>节省 300 万元</td></tr><tr><td>部署成本</td><td>API 调用：150 万元 / 年</td><td>本地部署：18 万元 / 年</td><td>降低 88%</td></tr></tbody></table>
<p>该厂商通过部署 MiniCPM-V，对轴承表面划痕的识别准确率达到<strong>99.2%</strong>，检测速度提升 5 倍，每年节省人工成本超过 300 万元。在部署成本方面，本地部署相比 API 调用成本降低 88%，按日均 10 万次调用计算，年节省费用超过 120 万元。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="63-云端部署性能优化案例">6.3 云端部署性能优化案例<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-minicpm#63-%E4%BA%91%E7%AB%AF%E9%83%A8%E7%BD%B2%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96%E6%A1%88%E4%BE%8B" class="hash-link" aria-label="6.3 云端部署性能优化案例的直接链接" title="6.3 云端部署性能优化案例的直接链接" translate="no">​</a></h3>
<p>在云端部署场景中，MiniCPM-V 展现了优异的可扩展性。某 AI 服务提供商在 8×A100 GPU 集群上部署 MiniCPM-V 4.5，实现了以下性能指标：</p>
<ul>
<li class="">
<p><strong>并发处理能力</strong>：支持 1000 + 并发请求</p>
</li>
<li class="">
<p><strong>推理吞吐量</strong>：800 tokens / 秒</p>
</li>
<li class="">
<p><strong>首 token 延迟</strong>：34 秒（批量加载）</p>
</li>
<li class="">
<p><strong>总成本效益</strong>：相比部署 Qwen2.5-VL 72B 节省 60% 以上成本</p>
</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="七技术发展趋势与未来展望">七、技术发展趋势与未来展望<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-minicpm#%E4%B8%83%E6%8A%80%E6%9C%AF%E5%8F%91%E5%B1%95%E8%B6%8B%E5%8A%BF%E4%B8%8E%E6%9C%AA%E6%9D%A5%E5%B1%95%E6%9C%9B" class="hash-link" aria-label="七、技术发展趋势与未来展望的直接链接" title="七、技术发展趋势与未来展望的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="71-minicpm-v-的演进路线">7.1 MiniCPM-V 的演进路线<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-minicpm#71-minicpm-v-%E7%9A%84%E6%BC%94%E8%BF%9B%E8%B7%AF%E7%BA%BF" class="hash-link" aria-label="7.1 MiniCPM-V 的演进路线的直接链接" title="7.1 MiniCPM-V 的演进路线的直接链接" translate="no">​</a></h3>
<p>MiniCPM-V 的发展路线图显示了明确的端侧 AI 优化方向。2025 年面壁智能 MiniCPM Team 成功开发出适用于边缘芯片的<strong>0.5B/8B 级高效大模型 MiniCPM4</strong>。未来的发展重点包括：</p>
<p><strong>自动化参数搜索算法</strong>：动态识别最优配置，针对不同边缘设备优化计算分布</p>
<p><strong>更小参数量模型</strong>：开发 0.5B 参数版本，进一步降低资源需求</p>
<p><strong>多模态扩展</strong>：集成音频、触觉等更多模态支持</p>
<p><strong>本地化训练</strong>：支持设备端模型微调，实现个性化优化</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="72-三模型技术融合趋势">7.2 三模型技术融合趋势<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-minicpm#72-%E4%B8%89%E6%A8%A1%E5%9E%8B%E6%8A%80%E6%9C%AF%E8%9E%8D%E5%90%88%E8%B6%8B%E5%8A%BF" class="hash-link" aria-label="7.2 三模型技术融合趋势的直接链接" title="7.2 三模型技术融合趋势的直接链接" translate="no">​</a></h3>
<p>从三个模型的发展趋势可以看出，多模态 AI 正在向以下方向演进：</p>
<p><strong>端到端联合训练</strong>：减少对预训练分离模块的依赖，增强整体优化效率</p>
<p><strong>跨模态统一处理</strong>：从视觉 - 语言扩展到音频、点云、触觉等更多模态</p>
<p><strong>轻量化与高效推理</strong>：发展更先进的模型压缩和加速技术</p>
<p><strong>因果推理与常识建模</strong>：使模型不仅能 "看到" 和 "说出"，更能 "理解" 和 "推断"</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="73-边缘-ai-的产业化前景">7.3 边缘 AI 的产业化前景<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-minicpm#73-%E8%BE%B9%E7%BC%98-ai-%E7%9A%84%E4%BA%A7%E4%B8%9A%E5%8C%96%E5%89%8D%E6%99%AF" class="hash-link" aria-label="7.3 边缘 AI 的产业化前景的直接链接" title="7.3 边缘 AI 的产业化前景的直接链接" translate="no">​</a></h3>
<p>MiniCPM-V 系列的成功标志着边缘 AI 产业化的重要里程碑。其核心产品 "明声小刚炮" 系列边缘侧模型已在<strong>智能手机、PC、智能家居、智能汽车</strong>四个场景实现大规模商业化。随着技术的不断成熟，预计到 2026 年，边缘 AI 将实现以下突破：</p>
<p><strong>设备端训练普及</strong>：实现个性化模型适应和隐私保护的本地训练</p>
<p><strong>模型级联部署</strong>：通过多级模型协作实现更复杂的 AI 任务</p>
<p><strong>专用硬件加速</strong>：针对边缘 AI 优化的专用芯片大规模应用</p>
<p><strong>垂直领域深耕</strong>：在医疗、工业、交通等领域实现专业化部署</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="结论">结论<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-minicpm#%E7%BB%93%E8%AE%BA" class="hash-link" aria-label="结论的直接链接" title="结论的直接链接" translate="no">​</a></h2>
<p>通过对 MiniCPM-V 系列模型的深度技术研究和与 InternVL、Qwen-VL 的全面对比分析，本研究得出以下核心结论：</p>
<p><strong>MiniCPM-V 系列代表了端侧多模态 AI 的技术革命</strong>。通过创新的 3D-Resampler 技术、三级 Token 压缩策略和混合强化学习训练，该模型在仅 8B 参数规模下实现了与大参数量模型相当甚至更优的性能表现，同时在推理效率和资源消耗方面实现了数量级的提升。</p>
<p><strong>在模型选型方面</strong>，MiniCPM-V 最适合边缘设备部署、实时视频分析和隐私保护场景；InternVL 更适合专业视觉任务和超高分辨率图像处理；Qwen-VL 则在企业级文档处理和云端服务方面具有优势。</p>
<p><strong>从技术发展趋势来看</strong>，边缘 AI 正在成为多模态模型发展的重要方向。MiniCPM-V 系列通过突破性的技术创新，为这一趋势提供了可行的技术路径，其在智能手机、智能家居、智能汽车等领域的大规模商业化部署，预示着端侧多模态 AI 应用的广阔前景。</p>
<p>展望未来，随着模型规模的进一步优化、多模态支持的扩展以及设备端训练技术的成熟，MiniCPM-V 系列有望在更多垂直领域实现突破，为构建真正普及的 AI 应用生态奠定坚实基础。对于 AI 开发者和企业用户而言，基于具体应用场景和资源约束选择合适的多模态模型，将是实现 AI 技术商业价值最大化的关键决策。</p>]]></content>
        <author>
            <name>otqsoft</name>
            <uri>https://gitee.com/work25</uri>
        </author>
        <category label="AI" term="AI"/>
        <category label="LLM" term="LLM"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[GGUF 模型格式]]></title>
        <id>http://www.otqsoft.com/doc/blog/long-blog-post-llm-gguf</id>
        <link href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-gguf"/>
        <updated>2025-12-18T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[一、GGUF 的基本含义]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="一gguf-的基本含义">一、GGUF 的基本含义<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-gguf#%E4%B8%80gguf-%E7%9A%84%E5%9F%BA%E6%9C%AC%E5%90%AB%E4%B9%89" class="hash-link" aria-label="一、GGUF 的基本含义的直接链接" title="一、GGUF 的基本含义的直接链接" translate="no">​</a></h2>
<p><strong>GGUF 是 "GPT-Generated Unified Format" 的缩写</strong>，是一种专为大语言模型 (LLM) 设计的二进制文件存储格式，由 llama.cpp 创始人 Georgi Gerganov 于 2023 年 8 月 21 日正式推出，作为 GGML 格式的继任者。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="二gguf-的核心作用">二、GGUF 的核心作用<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-gguf#%E4%BA%8Cgguf-%E7%9A%84%E6%A0%B8%E5%BF%83%E4%BD%9C%E7%94%A8" class="hash-link" aria-label="二、GGUF 的核心作用的直接链接" title="二、GGUF 的核心作用的直接链接" translate="no">​</a></h2>
<p>GGUF 是专门为<strong>本地推理优化</strong>的模型格式，特别是针对<strong>CPU 和低显存 GPU 环境</strong>。它将模型运行所需的<strong>所有信息打包在一个文件中</strong>，包括：</p>
<ul>
<li class="">模型权重 (量化后)</li>
<li class="">架构参数 (隐藏层大小、层数等)</li>
<li class="">tokenizer (分词器) 信息</li>
<li class="">量化方案详情</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="三gguf-解决的痛点">三、GGUF 解决的痛点<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-gguf#%E4%B8%89gguf-%E8%A7%A3%E5%86%B3%E7%9A%84%E7%97%9B%E7%82%B9" class="hash-link" aria-label="三、GGUF 解决的痛点的直接链接" title="三、GGUF 解决的痛点的直接链接" translate="no">​</a></h2>
<p>在 GGUF 出现前，AI 模型存储面临三大问题：</p>
<table><thead><tr><th>问题</th><th>具体表现</th><th>GGUF 解决方案</th></tr></thead><tbody><tr><td><strong>兼容性差</strong></td><td>不同框架 / 量化方法的模型无法互通</td><td>统一格式标准，一处下载多端运行</td></tr><tr><td><strong>体积庞大</strong></td><td>原始 PyTorch 模型动辄数十 GB，普通设备无法加载</td><td>原生支持量化，大幅减小体积 (7B 模型可从 13GB→4GB)</td></tr><tr><td><strong>元数据缺失</strong></td><td>模型缺少架构、分词器等关键信息，需手动配置</td><td>完整元数据嵌入，开箱即用</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="四gguf-的技术特点">四、GGUF 的技术特点<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-gguf#%E5%9B%9Bgguf-%E7%9A%84%E6%8A%80%E6%9C%AF%E7%89%B9%E7%82%B9" class="hash-link" aria-label="四、GGUF 的技术特点的直接链接" title="四、GGUF 的技术特点的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-文件结构">1. <strong>文件结构</strong><a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-gguf#1-%E6%96%87%E4%BB%B6%E7%BB%93%E6%9E%84" class="hash-link" aria-label="1-文件结构的直接链接" title="1-文件结构的直接链接" translate="no">​</a></h3>
<p>GGUF 采用三层架构设计：</p>
<ul>
<li class=""><strong>Header (文件头)</strong>：存储版本号、元数据大小、张量数量等基本信息</li>
<li class=""><strong>Metadata (元数据区)</strong>：包含模型架构、tokenizer、量化类型等完整配置</li>
<li class=""><strong>Tensor Data (张量区)</strong>：存储量化后的权重矩阵，按层组织</li>
</ul>
<p>这种设计类似 "模型 = 配置 + 权重" 的打包形式，但更轻量、更专注推理。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-强大的量化支持">2. <strong>强大的量化支持</strong><a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-gguf#2-%E5%BC%BA%E5%A4%A7%E7%9A%84%E9%87%8F%E5%8C%96%E6%94%AF%E6%8C%81" class="hash-link" aria-label="2-强大的量化支持的直接链接" title="2-强大的量化支持的直接链接" translate="no">​</a></h3>
<p>GGUF 是<strong>量化模型的理想载体</strong>，支持多种量化方案：</p>
<table><thead><tr><th>量化类型</th><th>精度</th><th>适用场景</th></tr></thead><tbody><tr><td>Q2_K/Q3_K</td><td>2-3 位</td><td>极致压缩，适合极低资源设备，精度损失较大</td></tr><tr><td>Q4_0/Q4_K</td><td>4 位</td><td>平衡压缩与精度，最广泛使用的量化方案</td></tr><tr><td>Q5_K_M</td><td>5 位</td><td>高精度需求场景，文件略大但性能接近 FP16</td></tr><tr><td>Q8_0</td><td>8 位</td><td>接近 FP16 精度，几乎无精度损失但压缩率较低</td></tr></tbody></table>
<p><strong>关键优势</strong>：每个张量可独立选择量化类型，支持混合量化 (不同层使用不同精度)，最大化性能与精度平衡。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="五gguf-命名规则解析">五、GGUF 命名规则解析<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-gguf#%E4%BA%94gguf-%E5%91%BD%E5%90%8D%E8%A7%84%E5%88%99%E8%A7%A3%E6%9E%90" class="hash-link" aria-label="五、GGUF 命名规则解析的直接链接" title="五、GGUF 命名规则解析的直接链接" translate="no">​</a></h2>
<p>以<code>qwen2-7b-instruct.Q4_K_M.gguf</code>为例：</p>
<ul>
<li class=""><strong>qwen2-7b-instruct</strong>：模型名称 (通义千问 2，7B 参数，指令微调版)</li>
<li class=""><strong>Q4_K_M</strong>：量化方案 (4 位，基于 K-means 聚类，多向量)</li>
<li class=""><strong>.gguf</strong>：文件格式后缀</li>
</ul>
<p>量化后缀是 GGUF 文件名的重要组成部分，它直接告诉用户模型的压缩程度和推理性能。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="六gguf-vs-ggml核心差异">六、GGUF vs GGML：核心差异<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-gguf#%E5%85%ADgguf-vs-ggml%E6%A0%B8%E5%BF%83%E5%B7%AE%E5%BC%82" class="hash-link" aria-label="六、GGUF vs GGML：核心差异的直接链接" title="六、GGUF vs GGML：核心差异的直接链接" translate="no">​</a></h2>
<table><thead><tr><th>特性</th><th>GGML (旧格式)</th><th>GGUF (新格式)</th></tr></thead><tbody><tr><td>元数据支持</td><td>有限，需额外配置文件</td><td>完整，直接嵌入文件</td></tr><tr><td>版本兼容性</td><td>较差，升级后旧模型常无法加载</td><td>稳定，支持向后兼容</td></tr><tr><td>扩展性</td><td>受限，难以适应新量化方法</td><td>灵活，可添加新功能不破坏兼容性</td></tr><tr><td>当前状态</td><td>已被 llama.cpp 官方弃用</td><td>活跃开发中，成为事实标准</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="七应用场景为何-gguf-如此重要">七、应用场景：为何 GGUF 如此重要？<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-gguf#%E4%B8%83%E5%BA%94%E7%94%A8%E5%9C%BA%E6%99%AF%E4%B8%BA%E4%BD%95-gguf-%E5%A6%82%E6%AD%A4%E9%87%8D%E8%A6%81" class="hash-link" aria-label="七、应用场景：为何 GGUF 如此重要？的直接链接" title="七、应用场景：为何 GGUF 如此重要？的直接链接" translate="no">​</a></h2>
<ol>
<li class=""><strong>本地 AI 部署</strong>：让普通电脑也能运行大模型，保护隐私，避免 API 费用</li>
<li class=""><strong>边缘计算</strong>：适用于手机、IoT 设备等资源受限环境</li>
<li class=""><strong>研究与实验</strong>：快速测试不同模型和量化配置，无需复杂环境搭建</li>
<li class=""><strong>模型分发</strong>：Hugging Face 等平台已支持 GGUF，一键下载即用</li>
</ol>
<p><strong>总结</strong>：GGUF 是大模型走向大众化的关键一步，正如 MP3 让音乐普及一样，它让 "人人都能在自己电脑上跑大模型" 成为现实。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="八如何使用-gguf-模型">八、如何使用 GGUF 模型？<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-gguf#%E5%85%AB%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8-gguf-%E6%A8%A1%E5%9E%8B" class="hash-link" aria-label="八、如何使用 GGUF 模型？的直接链接" title="八、如何使用 GGUF 模型？的直接链接" translate="no">​</a></h2>
<p>使用非常简单：</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># 使用llama.cpp推理</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">./main -m model.Q4_K_M.gguf -p "你好，GGUF!"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 使用Python库</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">from llama_cpp import Llama</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">llm = Llama(model_path="model.Q4_K_M.gguf")</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">output = llm("写一首关于GGUF的诗")</span><br></span></code></pre></div></div>
<p>GGUF 文件已包含所有必要信息，无需额外配置即可使用。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="九其它格式">九、其它格式<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-gguf#%E4%B9%9D%E5%85%B6%E5%AE%83%E6%A0%BC%E5%BC%8F" class="hash-link" aria-label="九、其它格式的直接链接" title="九、其它格式的直接链接" translate="no">​</a></h2>
<p>除了GGUF格式以外，还有以下常用格式，主要区别：</p>
<table><thead><tr><th>标识</th><th>类型</th><th>全称 / 核心含义</th><th>核心特点</th><th>典型用途</th></tr></thead><tbody><tr><td>int4</td><td>量化精度</td><td>4 位整数（INT4）量化</td><td>权重从 FP16/BF16 转为 4 位整数，压缩比约 3.5–4×，精度 96%–98%，内存 / 显存占用极低</td><td>边缘设备、消费级 GPU、低显存场景</td></tr><tr><td>AWQ</td><td>量化算法</td><td>Activation-aware Weight Quantization</td><td>激活感知权重量化，识别关键权重通道并保护，减少 INT4 量化精度损失，接近无损</td><td>GPU 高效推理，兼容 vLLM/CTranslate2</td></tr><tr><td>GGUF</td><td>文件格式</td><td>GPT-Generated Unified Format</td><td>替代 GGML，单文件含权重 + 元数据 + 分词器，适配 llama.cpp，支持 Q4_K_M 等量化，CPU/GPU 混合推理友好</td><td>本地部署、llama.cpp/Ollama 生态，单文件分发</td></tr><tr><td>Instruct</td><td>模型用途</td><td>指令跟随微调</td><td>经指令数据集微调，理解并执行用户指令，对话 / 任务完成能力强</td><td>聊天机器人、问答、文本生成等交互场景</td></tr></tbody></table>
<p><strong>int4：极致压缩的 4 位整数量化</strong></p>
<ul>
<li class="">
<p>量化是将浮点权重转为低精度整数，int4 用 4 位存储权重，大幅减少存储与计算开销。</p>
</li>
<li class="">
<p>优点：极致压缩，适合低显存设备；缺点：长文本易掉精度，需配合 AWQ/GPTQ 等算法弥补。</p>
</li>
<li class="">
<p>常见组合：int4+AWQ（精度更稳）、int4+GPTQ（逐层误差最小化）。</p>
</li>
</ul>
<p><strong>AWQ：激活感知的低比特量化算法</strong></p>
<ul>
<li class="">
<p>核心是通过激活分布识别关键权重通道，按通道缩放并保护约 1% 关键权重，降低量化误差。</p>
</li>
<li class="">
<p>相比普通 int4：精度更高（接近无损）、推理更快（硬件友好），但实现较复杂，依赖专用库（AutoAWQ）。</p>
</li>
<li class="">
<p>适配：NVIDIA GPU 优先，支持 TensorRT-LLM、vLLM 等推理引擎。</p>
</li>
</ul>
<p><strong>GGUF：本地部署的统一模型格式</strong></p>
<ul>
<li class="">
<p>不是量化算法，而是存储量化后模型的二进制格式，单文件包含权重、元数据、分词器，支持 mmap 快速加载。</p>
</li>
<li class="">
<p>支持多种量化等级（如 Q4_K_M、Q5_K_S），适配 llama.cpp/Ollama，CPU 推理优化显著，适合无高端 GPU 的本地部署。</p>
</li>
<li class="">
<p>常见命名：Model-Instruct.Q4_K_M.gguf（指令微调 + Q4_K_M 量化 + GGUF 格式）。</p>
</li>
</ul>
<p><strong>Instruct：面向指令交互的微调标识</strong></p>
<ul>
<li class="">
<p>基线模型经指令数据集微调，强化对用户指令的理解与执行，减少幻觉，提升回复相关性。</p>
</li>
<li class="">
<p>与 Base（基础模型）、Chat（对话优化）并列，是用途标签，不涉及量化或格式。</p>
</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="十小结">十、小结<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-gguf#%E5%8D%81%E5%B0%8F%E7%BB%93" class="hash-link" aria-label="十、小结的直接链接" title="十、小结的直接链接" translate="no">​</a></h2>
<p>GGUF 代表着 AI 模型存储与推理的重大进步，它通过<strong>统一格式、支持量化、单文件部署</strong>三大核心优势，正在成为开源大模型分发的事实标准。<strong>它是一个专为本地推理设计的 "模型压缩包"，将大型语言模型变成普通人电脑也能运行的轻量级应用。</strong></p>]]></content>
        <author>
            <name>otqsoft</name>
            <uri>https://gitee.com/work25</uri>
        </author>
        <category label="AI" term="AI"/>
        <category label="LLM" term="LLM"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[MiMo-V2-Flash 开源]]></title>
        <id>http://www.otqsoft.com/doc/blog/long-blog-post-llm-mimo</id>
        <link href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-mimo"/>
        <updated>2025-12-17T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[MiMo-V2-Flash 正式开源！这是一个专为极致推理效率自研的总参数 309B（激活 15B）的 MoE 模型，通过 Hybrid 注意力架构创新及多层 MTP 推理加速，在多个 Agent 测评基准上保持进入全球开源模型 Top 2；代码能力超过所有开源模型，比肩标杆闭源模型 Claude 4.5 Sonnet，但推理成本仅为其 2.5%，生成速度提升 2 倍，成功将大模型推理效率推向极致。]]></summary>
        <content type="html"><![CDATA[<p>MiMo-V2-Flash 正式开源！这是一个专为极致推理效率自研的总参数 309B（激活 15B）的 MoE 模型，通过 Hybrid 注意力架构创新及多层 MTP 推理加速，在多个 Agent 测评基准上保持进入<strong>全球开源模型 Top 2</strong>；代码能力超过所有开源模型，比肩标杆闭源模型 Claude 4.5 Sonnet，但推理成本仅为其 <strong>2.5%</strong>，生成速度提升 <strong>2 倍</strong>，成功将大模型推理效率推向极致。</p>
<p><img decoding="async" loading="lazy" src="https://platform.xiaomimimo.com/TOjaw5CTii8dOgk3TrecwU91nPh-TKo5bjhEuo7xy8xf.520e6755.png" alt="图片" class="img_ev3q"></p>
<p>秉持开放精神，模型权重和推理代码均采用 MIT 协议全面开源。<strong>API 限时免费</strong>。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="推理成本与速度的极致优化">推理成本与速度的极致优化<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-mimo#%E6%8E%A8%E7%90%86%E6%88%90%E6%9C%AC%E4%B8%8E%E9%80%9F%E5%BA%A6%E7%9A%84%E6%9E%81%E8%87%B4%E4%BC%98%E5%8C%96" class="hash-link" aria-label="推理成本与速度的极致优化的直接链接" title="推理成本与速度的极致优化的直接链接" translate="no">​</a></h2>
<p>MiMo-V2-Flash 的 API 定价为: <strong>输入 $0.1/M tokens，输出 $0.3/M tokens。</strong></p>
<p>下图横轴为全球顶尖模型速度和成本的对比图，MiMo-V2-Flash 实现了最低成本、最高速度。</p>
<p><img decoding="async" loading="lazy" src="https://platform.xiaomimimo.com/TOjaw5CTii8dOgk3TrecwU91nPh-JZVcbQmUgoDEjAxb.eef43149.png" alt="图片" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="面向高效推理的结构创新">面向高效推理的结构创新<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-mimo#%E9%9D%A2%E5%90%91%E9%AB%98%E6%95%88%E6%8E%A8%E7%90%86%E7%9A%84%E7%BB%93%E6%9E%84%E5%88%9B%E6%96%B0" class="hash-link" aria-label="面向高效推理的结构创新的直接链接" title="面向高效推理的结构创新的直接链接" translate="no">​</a></h2>
<p>结构要点如下：</p>
<ul>
<li class=""><strong>混合注意力</strong>：采用 1:5 的 Global Attention 与 Sliding Window Attention (SWA) 混合结构，128 窗口大小，原生 32K 外扩 256K 训练。经前期大量实证发现，SWA 简单、高效、易用，展现了比主流 Linear Attention 综合更佳的通用、长文和推理能力，并提供了固定大小的 KV Cache 从而极易适配现有训练和推理 Infra 框架。</li>
</ul>
<p><img decoding="async" loading="lazy" src="https://platform.xiaomimimo.com/TOjaw5CTii8dOgk3TrecwU91nPh-F5PKbGh0bo13bLxZ.8406a709.jpg" alt="图片" class="img_ev3q"></p>
<ul>
<li class=""><strong>MTP推理加速</strong>：通过引入 MTP (Multi-Token Prediction) 训练提升基座能力的同时，并在推理阶段通过并行验证 MTP Token，打破了传统 Decoding 在大 Batch 下的显存带宽瓶颈，实测在 3 层 MTP 情况下可实现 <strong>2.5～3.7 的实际加速比</strong>。</li>
</ul>
<p><img decoding="async" loading="lazy" src="https://platform.xiaomimimo.com/TOjaw5CTii8dOgk3TrecwU91nPh-AnbZbXYXboy7Uexq.fb860651.png" alt="图片" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="免费白嫖">免费白嫖<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-mimo#%E5%85%8D%E8%B4%B9%E7%99%BD%E5%AB%96" class="hash-link" aria-label="免费白嫖的直接链接" title="免费白嫖的直接链接" translate="no">​</a></h2>
<p>目前API限时免费开放中，进入<a href="https://platform.xiaomimimo.com/#/docs/welcome" target="_blank" rel="noopener noreferrer" class="">MIMO开放平台</a>申请API KEY。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="api调用">API调用<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-mimo#api%E8%B0%83%E7%94%A8" class="hash-link" aria-label="API调用的直接链接" title="API调用的直接链接" translate="no">​</a></h3>
<p>python调用</p>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> os</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> openai </span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> OpenAI</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">client </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> OpenAI</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    api_key</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">os</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">environ</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">get</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"MIMO_API_KEY"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    base_url</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"https://api.xiaomimimo.com/v1"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">completion </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> client</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">chat</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">completions</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">create</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    model</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"mimo-v2-flash"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    messages</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token string" style="color:#e3116c">"role"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"user"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token string" style="color:#e3116c">"content"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"please introduce yourself"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    max_completion_tokens</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">1024</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    temperature</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">0.8</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    top_p</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">0.95</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    stream</span><span class="token operator" style="color:#393A34">=</span><span class="token boolean" style="color:#36acaa">False</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    stop</span><span class="token operator" style="color:#393A34">=</span><span class="token boolean" style="color:#36acaa">None</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    frequency_penalty</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    presence_penalty</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    extra_body</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"thinking"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"type"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"disabled"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">completion</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">model_dump_json</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><br></span></code></pre></div></div>
<p>curl调用</p>
<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl --location --request POST 'https://api.xiaomimimo.com/v1/chat/completions' \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">--header "api-key: $MIMO_API_KEY" \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">--header "Content-Type: application/json" \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">--data-raw '{</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "model": "mimo-v2-flash",</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "messages": [</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            "role": "user",</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            "content": "please introduce yourself"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    ],</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "max_completion_tokens": 1024,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "temperature": 0.8,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "top_p": 0.95,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "stream": false,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "stop": null,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "frequency_penalty": 0,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "presence_penalty": 0,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "thinking": {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        "type": "disabled"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}'</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="cline集成">Cline集成<a href="http://www.otqsoft.com/doc/blog/long-blog-post-llm-mimo#cline%E9%9B%86%E6%88%90" class="hash-link" aria-label="Cline集成的直接链接" title="Cline集成的直接链接" translate="no">​</a></h3>
<p>MiMo-V2-Flash 具备良好的代码理解与编程能力，适用于代码助手、Agent 工具等多种场景。可参考以下步骤，在 Cline、Kilo Code 和 Roo Code 中体验模型代码能力。</p>
<p>请按照以下配置填写相关信息：</p>
<ul>
<li class="">必填配置：<!-- -->
<ul>
<li class=""><strong>API Provider</strong>：选择 <code>OpenAI Compatible</code></li>
<li class=""><strong>Base URL</strong>：填写 <code>https://api.xiaomimimo.com/v1</code></li>
<li class=""><strong>API Key</strong>：从中 <a href="https://platform.xiaomimimo.com/#/console/api-keys" target="_blank" rel="noopener noreferrer" class="">控制台-API Keys</a> 获取 API Key</li>
<li class=""><strong>Model ID</strong>：填写模型名称 <code>mimo-v2-flash</code></li>
</ul>
</li>
<li class="">选填配置：<!-- -->
<ul>
<li class="">取消勾选 <strong>Supports Images</strong></li>
<li class=""><strong>Context Window Size</strong> 设置为 <code>262144</code></li>
<li class=""><strong>Temperature</strong> 设置为 <code>0.8</code>，可根据任务需求进行调整</li>
</ul>
</li>
</ul>
<p>配置成功后，可在输入框中输入需求，例如生成代码：</p>
<p><img decoding="async" loading="lazy" src="https://platform.xiaomimimo.com/DuZLwHXjmiixk2kt672c0mIZnzf-YYxIbLJV2ovu3lxh.4413aee2.png" alt="图片" class="img_ev3q"></p>]]></content>
        <author>
            <name>viki</name>
            <uri>https://gitee.com/work25</uri>
        </author>
        <category label="AI" term="AI"/>
        <category label="LLM" term="LLM"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[从豆包手机到GLM的开源]]></title>
        <id>http://www.otqsoft.com/doc/blog/long-blog-post-ai-phone-assistant</id>
        <link href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-phone-assistant"/>
        <updated>2025-12-10T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[12月1日，字节跳动豆包团队联合中兴努比亚，发布豆包手机助手，并搭配努比亚M153工程样机面向开发者发售。这款被称为“手机自动驾驶”的产品，彻底打破了传统手机助手的边界——不仅能完成定闹钟、查天气等基础操作，更能实现点外卖、订机票、跨平台比价、自动回复微信、运行小程序游戏等复杂场景，真正做到“一句话搞定一切”。]]></summary>
        <content type="html"><![CDATA[<p>12月1日，字节跳动豆包团队联合中兴努比亚，发布<strong>豆包手机助手</strong>，并搭配努比亚M153工程样机面向开发者发售。这款被称为“手机自动驾驶”的产品，彻底打破了传统手机助手的边界——不仅能完成定闹钟、查天气等基础操作，更能实现点外卖、订机票、跨平台比价、自动回复微信、运行小程序游戏等复杂场景，真正做到“一句话搞定一切”。</p>
<p>与华为小艺、小米小爱、OPPO小布等传统助手不同，豆包手机助手无需用户手动操作APP：无需打开应用、无需点击界面、无需滑动屏幕，AI会模拟真人逻辑自动完成全流程操作，如同为每个用户配备了专属真人助理。这种“跳过APP直接解决需求”的模式，迅速引发行业震动，360创始人周鸿祎更是发布视频直言：“美团、淘宝的高管们可能要连夜开会了。”</p>
<p>周鸿祎的判断并非危言耸听。过去十几年，互联网大厂构建的核心商业模式，本质是“流量漏斗”：用户有购物需求，需打开淘宝/京东，刷首页推荐、看信息流广告、搜索比价、筛选产品、加入购物车，最终完成下单——每一个环节都是大厂精心设计的流量变现节点。而豆包手机助手的出现，直接绕开了这一漏斗：用户无需打开淘宝首页、无需浏览广告、无需手动比价，只需说一句“帮我买一件适合冬天的羽绒服”，AI就能自动完成全流程操作。这意味着，大厂花费十几年搭建的流量壁垒、广告变现体系，被AI直接“短路”，这才是真正让互联网大厂彻夜难眠的核心原因。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="72小时围剿">72小时围剿<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-phone-assistant#72%E5%B0%8F%E6%97%B6%E5%9B%B4%E5%89%BF" class="hash-link" aria-label="72小时围剿的直接链接" title="72小时围剿的直��接链接" translate="no">​</a></h2>
<p>大厂筑起三道防线， 技术的颠覆式突破，必然引发既得利益者的反击。从12月1日产品发布，到12月2日大厂围剿启动，仅间隔24小时，一场针对AI手机助手的“封锁战”迅速打响：</p>
<ul>
<li class=""><strong>社交防线</strong>：12月2日晚，大量使用豆包手机助手操作微信的用户，收到“登录环境异常”提示，账号被临时封禁，直接切断AI对核心社交工具的操作权限；</li>
<li class=""><strong>电商防线</strong>：用户使用豆包手机助手在淘宝、京东等平台比价时，频繁遭遇人机验证、APP闪退、强制登出等问题，无法正常完成操作；</li>
<li class=""><strong>金融防线</strong>：农业银行、建设银行等主流银行APP紧急更新，新增“录屏状态下禁止使用”机制，阻断AI通过录屏实现自动操作的路径。</li>
</ul>
<p>短短72小时内，微信（社交）、淘宝（电商）、银行（金融）三大核心领域的防线全部筑起。12月3日晚，字节跳动被迫妥协，宣布豆包手机助手Pro模式下线“操作微信及同类社交工具”的功能，这场刚刚掀起的技术革命，似乎被大厂迅速按下了暂停键。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="开源反击">开源反击<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-phone-assistant#%E5%BC%80%E6%BA%90%E5%8F%8D%E5%87%BB" class="hash-link" aria-label="开源反击的直接链接" title="开源反击的直接链接" translate="no">​</a></h2>
<p>AutoGLM掀桌式破局， 就在大厂围剿愈演愈烈之际，12月9日，智谱AI突然抛出“杀手锏”——宣布开源<strong>AutoGLM</strong>框架，直接开启“反围剿”模式。 此次开源并非“半成品试水”，而是完整的“全栈开放”：涵盖核心模型、能力框架、工具链，已覆盖50多个高频中文APP，并提供跑通的Demo，开发者可直接基于AutoGLM搭建属于自己的“豆包手机助手”。更重要的是，开源模式彻底打破了大厂的“单点围剿”逻辑——大厂可以封杀字节跳动一家公司，可以限制努比亚一款手机，但无法封杀千千万万个基于开源框架开发的AI助手。 智谱AI在开源声明中明确表示，AutoGLM的核心初衷，是将“AI自动操作APP”这一能力，变成整个行业可共同拥有、共同打磨的<strong>公共技术底座</strong>。这意味着：</p>
<ul>
<li class="">无需字节跳动的许可，无需中兴的工程机，无需任何大厂的授权；</li>
<li class="">任何开发者、任何团队，都能基于AutoGLM，搭建属于自己的AI手机助手；</li>
<li class="">大厂可以围剿一家企业，但永远无法围剿庞大的开源社区，无法封杀每一个基于开源技术的创新产品。</li>
</ul>
<p>这种“掀桌式”的开源反击，彻底改变了这场攻防战的格局：从“大厂VS单一企业”，变成“大厂VS整个开源社区”，而开源的本质，就是用去中心化的力量，对抗中心化的垄断。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="与我们相关">与我们相关<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-phone-assistant#%E4%B8%8E%E6%88%91%E4%BB%AC%E7%9B%B8%E5%85%B3" class="hash-link" aria-label="与我们相关的直接链接" title="与我们相关的直接链接" translate="no">​</a></h2>
<p>未来十年，我们如何用手机？ 这场大厂与AI助手的攻防战，看似是企业间的利益博弈，实则与每一个手机用户息息相关——它正在重新定义“人如何与手机交互”，甚至改写未来十年的移动互联网规则。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="过去">过去<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-phone-assistant#%E8%BF%87%E5%8E%BB" class="hash-link" aria-label="过去的直接链接" title="过去的直接链接" translate="no">​</a></h3>
<p>APP统治的时代 过去十几年，我们用手机的逻辑是“需求→APP→操作”：</p>
<ul>
<li class="">想买东西，打开淘宝/京东；</li>
<li class="">想点外卖，打开美团/饿了么；</li>
<li class="">想聊天，打开微信/QQ；</li>
<li class="">想订机票，打开携程/飞猪。</li>
</ul>
<p>每一个需求，都对应一个独立的APP，我们需要记住不同APP的功能、操作逻辑，甚至为了比价、筛选，在多个APP之间反复切换，花费大量时间在“机械操作”上。而这种模式的受益者，是掌握APP入口的大厂——他们通过垄断“用户-需求”的连接权，构建起庞大的商业帝国。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="未来">未来<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-phone-assistant#%E6%9C%AA%E6%9D%A5" class="hash-link" aria-label="未来的直接链接" title="未来的直接链接" translate="no">​</a></h3>
<p>AI助手统治的时代， 如果AI手机助手彻底普及，我们用手机的逻辑将变成“需求→AI→结果”：</p>
<ul>
<li class="">无需知道“淘宝和京东哪个更便宜”，AI会自动比价、筛选最优选项；</li>
<li class="">无需纠结“美团和饿了么哪个配送更快”，AI会根据距离、价格、评价自动选择；</li>
<li class="">无需手动打开任何APP，无需浏览任何广告，只需说一句话，AI就能完成从需求到结果的全流程。</li>
</ul>
<p>这意味着：</p>
<ol>
<li class=""><strong>APP界面将不再重要</strong>：用户无需关注APP的设计、入口，APP将从“前台”退居“后台”，成为AI调用的“工具接口”；</li>
<li class=""><strong>注意力分配彻底重构</strong>：过去被APP广告、首页推荐占据的用户时间，将被AI解放，用户无需再为“机械操作”消耗精力；</li>
<li class=""><strong>互联网商业模式重写</strong>：基于“流量漏斗”的广告变现模式将失效，大厂需要重新寻找新的商业逻辑——从“控制入口”转向“提供服务能力”。</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="结束语">结束语<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-phone-assistant#%E7%BB%93%E6%9D%9F%E8%AF%AD" class="hash-link" aria-label="结束语的直接链接" title="结束语的直接链接" translate="no">​</a></h2>
<p>技术的潮水挡不住的进化， 有人质疑：AI手机助手会不会让人类变得更懒？其实恰恰相反——AI的价值，从来不是“替代人类”，而是“解放人类”。</p>
<p>AI能帮我们搞定的，是那些重复、机械、无创造性的操作：比价、下单、订票、设闹钟、回复常规消息……这些占据我们日常大量时间的“琐事”，交给AI来做，我们就能将精力投入到更有价值、更有创造性的事情上：学习、创作、陪伴家人、探索世界。 就像汽车的出现，不是为了让人类放弃行走，而是为了让我们能更快地抵达更远的地方；</p>
<p>AI的强大，不是为了让人类变得“无用”，而是为了让我们有更多时间去做“只有人类才能做到的事情”。 此次豆包手机助手的发布、大厂的围剿、AutoGLM的开源，本质上是一场“旧规则”与“新趋势”的碰撞。大厂可以筑起防线，可以暂时延缓技术的普及，但无法阻挡技术进化的潮水——就像当年的智能手机取代功能机、移动互联网取代PC互联网，AI重构手机交互方式，已是必然。</p>
<p>对于我们而言，不必纠结于“大厂会不会赢”，更不必担心“AI会不会取代我们”。真正重要的是，学会在技术的潮水中游泳——理解AI的价值，拥抱新的交互方式，利用技术工具解放自己，让AI成为我们探索世界、实现价值的“助手”，而不是被技术淘汰的“旁观者”。 技术的革命从不温柔，但它终将把世界推向更高效、更自由的未来。而我们，只需做好准备，与时代同频进化。</p>]]></content>
        <author>
            <name>viki</name>
            <uri>https://gitee.com/work25</uri>
        </author>
        <category label="AI" term="AI"/>
        <category label="LLM" term="LLM"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[大模型善后工程师]]></title>
        <id>http://www.otqsoft.com/doc/blog/long-blog-post-ai-llm-engineer</id>
        <link href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-llm-engineer"/>
        <updated>2025-11-20T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[“大模型善后工程师”这个说法虽然带点调侃意味，但非常精准地抓住了当前生成式AI落地实践中的一个核心现实——大模型是强大的“初稿生成器”，但离“端到端可靠交付”仍有距离。]]></summary>
        <content type="html"><![CDATA[<p>“大模型善后工程师”这个说法虽然带点调侃意味，但非常精准地抓住了当前生成式AI落地实践中的一个核心现实——<strong>大模型是强大的“初稿生成器”，但离“端到端可靠交付”仍有距离。</strong></p>
<ul>
<li class="">✅ 80%：大模型在开放域、非关键路径、容错性高的任务上表现惊艳——比如：<!-- -->
<ul>
<li class="">写一封普通邮件初稿</li>
<li class="">生成常规SQL查询</li>
<li class="">用标准框架搭一个简单网页</li>
<li class="">翻译/摘要/头脑风暴类创意</li>
</ul>
</li>
<li class="">❌ 20%：剩下那部分往往涉及：<!-- -->
<ul>
<li class="">准确性要求高（如金融计算、医疗建议、法律条款）</li>
<li class="">上下文深度耦合（需精准理解业务逻辑、历史数据、用户意图）</li>
<li class="">边界case处理（异常输入、歧义提示、多轮意图漂移）</li>
<li class="">合规与安全（隐私脱敏、偏见过滤、版权规避）</li>
<li class="">工程化集成（API封装、缓存策略、错误重试、日志追踪）</li>
</ul>
</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="善后工程师的核心工作不止是修bug">“善后”工程师的核心工作：不止是“修Bug”<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-llm-engineer#%E5%96%84%E5%90%8E%E5%B7%A5%E7%A8%8B%E5%B8%88%E7%9A%84%E6%A0%B8%E5%BF%83%E5%B7%A5%E4%BD%9C%E4%B8%8D%E6%AD%A2%E6%98%AF%E4%BF%AEbug" class="hash-link" aria-label="“善后”工程师的核心工作：不止是“修Bug”的直接链接" title="“善后”工程师的核心工作：不止是“修Bug”的直接链接" translate="no">​</a></h3>
<p>“善后”远不止修改Bug，它是一套系统性的工程，核心价值体现在以下几个方面：</p>
<ol>
<li class=""><strong>逻辑的“排雷兵”与业务的“校准器”</strong>
他们需要像侦探一样，深度理解业务规则，为AI生成的代码补全大量的<strong>异常处理、状态校验和业务合规性逻辑</strong>。例如，一个完整的登录逻辑，AI可能只生成了密码核对的代码，而善后工程师需要补充用户是否存在、密码是否为空、账号是否被封禁、登录尝试次数是否超限等一系列判断。</li>
<li class=""><strong>系统质量的“锻造师”</strong>
面对AI可能生成的“意大利面条式”的混乱代码（如一个文件2000行，无注释无类型），善后工程师需要对其进行<strong>重构、分模块、增加类型定义和编写单元测试</strong>。他们会将“一锅乱炖”的代码，重构成清晰、可维护、高性能的工程化架构。</li>
<li class=""><strong>产品上线的“最终防线”</strong>
这是最具价值的部分，确保产品从“技术上的可用”变为“商业上的可行”。这包括：<!-- -->
<ul>
<li class=""><strong>边界处理</strong>：应对所有极端输入和场景。</li>
<li class=""><strong>安全加固</strong>：防范XSS、SQL注入等安全风险。</li>
<li class=""><strong>性能优化与监控</strong>：添加性能监控和报警机制，确保系统稳定可控</li>
</ul>
</li>
</ol>
<table><thead><tr><th>类别</th><th>典型任务</th></tr></thead><tbody><tr><td><strong>提示工程深化</strong></td><td>构建鲁棒的提示模板、引入思维链（CoT）、few-shot示例优化、动态变量注入</td></tr><tr><td><strong>后处理校验</strong></td><td>正则校验输出格式、规则引擎兜底、数值合理性检查、敏感词过滤</td></tr><tr><td><strong>流程编排</strong></td><td>将大模型嵌入工作流（如：LLM → 规则校验 → 人工审核 → 数据库写入）</td></tr><tr><td><strong>微调与RAG增强</strong></td><td>用领域数据微调（SFT/LoRA），或构建高质量知识库+检索增强，减小幻觉</td></tr><tr><td><strong>监控与反馈闭环</strong></td><td>设计评估指标（非仅BLEU/ROUGE）、bad case归因、持续迭代prompt/model</td></tr></tbody></table>
<blockquote>
<p>💡 举个例子：
用LLM生成财务报表注释——模型5秒写出初稿（80%），但工程师需花2小时：</p>
<ul>
<li class="">核对数字与原始报表一致</li>
<li class="">补充监管要求的固定披露项</li>
<li class="">替换模糊表述为法定术语</li>
<li class="">确保无“预计”“可能”等不合规措辞</li>
</ul>
</blockquote>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="善后工程师是过渡态还是长期存在">"善后"工程师是过渡态，还是长期存在？<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-llm-engineer#%E5%96%84%E5%90%8E%E5%B7%A5%E7%A8%8B%E5%B8%88%E6%98%AF%E8%BF%87%E6%B8%A1%E6%80%81%E8%BF%98%E6%98%AF%E9%95%BF%E6%9C%9F%E5%AD%98%E5%9C%A8" class="hash-link" aria-label="&quot;善后&quot;工程师是过渡态，还是长期存在？的直接链接" title="&quot;善后&quot;工程师是过渡态，还是长期存在？的直接链接" translate="no">​</a></h3>
<ul>
<li class=""><strong>短期（1–3年）</strong>：必然大量存在。当前模型仍属“泛化强、专精弱”，需要人来“兜底+调教”。</li>
<li class=""><strong>中期</strong>：角色演进为“AI系统工程师”——不再只修prompt，而是设计<strong>人机协同系统</strong>：何时调用LLM？何时切到规则？何时转人工？</li>
<li class=""><strong>长期</strong>：随着Agent能力（规划+工具调用+反思）成熟，部分“善后”可自动化，但<strong>高价值决策环节仍需人类监督</strong>——就像自动驾驶L4≠完全无人。</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="积极视角这不是打杂而是价值密度更高的工作">积极视角：这不是“打杂”，而是价值密度更高的工作<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-llm-engineer#%E7%A7%AF%E6%9E%81%E8%A7%86%E8%A7%92%E8%BF%99%E4%B8%8D%E6%98%AF%E6%89%93%E6%9D%82%E8%80%8C%E6%98%AF%E4%BB%B7%E5%80%BC%E5%AF%86%E5%BA%A6%E6%9B%B4%E9%AB%98%E7%9A%84%E5%B7%A5%E4%BD%9C" class="hash-link" aria-label="积极视角：这不是“打杂”，而是价值密度更高的工作的直接链接" title="积极视角：这不是“打杂”，而是价值密度更高的工作的直接链接" translate="no">​</a></h3>
<ul>
<li class="">从重复劳动（写CRUD代码） → 聚焦<strong>系统可靠性、领域适配性、风险控制</strong></li>
<li class="">工程师从“实现者”升级为“AI质检官+流程架构师”</li>
<li class="">类似当年“编译器出现后，程序员并未消失，而是转向更高抽象层级”</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="背后的行业信号价值重估与思维转变">背后的行业信号：价值重估与思维转变<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-llm-engineer#%E8%83%8C%E5%90%8E%E7%9A%84%E8%A1%8C%E4%B8%9A%E4%BF%A1%E5%8F%B7%E4%BB%B7%E5%80%BC%E9%87%8D%E4%BC%B0%E4%B8%8E%E6%80%9D%E7%BB%B4%E8%BD%AC%E5%8F%98" class="hash-link" aria-label="背后的行业信号：价值重估与思维转变的直接链接" title="背后的行业信号：价值重估与思维转变的直接链接" translate="no">​</a></h3>
<p>“善后工程师”的兴起，反映了AI技术普及初期行业的一些深刻变化：</p>
<ul>
<li class=""><strong>价值的重新分配</strong>：AI将开发者从大量重复性的“体力活”中解放出来，但同时也抬高了<strong>系统设计、架构优化、业务抽象和解决复杂问题能力</strong>的价值天花板。一个能解决“最后20%”问题的工程师，正变得愈发稀缺和高薪。</li>
<li class=""><strong>工程思维的回归</strong>：它提醒我们，在AI时代，<strong>批判性思维和对技术的深刻理解</strong>同样重要，甚至更加重要。不能盲目相信AI的输出，必须具备评估、修正和驾驭AI产物的能力。</li>
<li class=""><strong>从“替代”到“互补”</strong>：AI并非要替代工程师，而是演变成一种强大的“副驾驶”（Copilot）。未来的工作模式将是<strong>人类负责战略性的架构设计、质量把控和业务对齐，AI负责战术性的代码生成和方案建议</strong></li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="如何成为一名优秀的善后工程师">如何成为一名优秀的“善后工程师”？<a href="http://www.otqsoft.com/doc/blog/long-blog-post-ai-llm-engineer#%E5%A6%82%E4%BD%95%E6%88%90%E4%B8%BA%E4%B8%80%E5%90%8D%E4%BC%98%E7%A7%80%E7%9A%84%E5%96%84%E5%90%8E%E5%B7%A5%E7%A8%8B%E5%B8%88" class="hash-link" aria-label="如何成为一名优秀的“善后工程师”？的直接链接" title="如何成为一名优秀的“善后工程师”？的直接链接" translate="no">​</a></h3>
<p>如果你对这个角色感兴趣，或想提升自己这方面的能力，可以重点关注以下几点：</p>
<ul>
<li class=""><strong>强化深层知识</strong>：不仅要会用AI工具，更要深入理解其背后的原理、局限性以及它可能出错的各种模式。</li>
<li class=""><strong>修炼业务洞察力</strong>：花更多时间理解你所处的业务，能精准地将业务需求转化为技术方案，并预判潜在的风险点。</li>
<li class=""><strong>坚持工程最佳实践</strong>：恪守代码规范、重视测试、架构设计和监控日志，这些是保证项目稳健的基石。</li>
<li class=""><strong>培养“防御性”开发习惯</strong>：在面对AI生成的任何内容时，始终保持审慎，建立代码审查和质量门禁机制</li>
</ul>
<img src="http://www.otqsoft.com/doc/assets/images/1-0ac18d5c731066faea6d4f19e4fb32e7.jpg" alt="图片" class="previewImage_kI9J">]]></content>
        <author>
            <name>viki</name>
            <uri>https://gitee.com/work25</uri>
        </author>
        <category label="AI" term="AI"/>
        <category label="LLM" term="LLM"/>
    </entry>
</feed>