1<!doctype html> 2<html 3 lang="zh-CN" 4 data-page-transition="fade-scale" 5 data-nav-active="true" 6> 7 <head> 8 9 <meta charset="UTF-8" /> 10 <meta http-equiv="X-UA-Compatible" content="IE=edge" /> 11 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 12 13 <title 14 >åèâè±å å·¥ä½âæ£å¼äº®ç¸ï¼åå ¬AIä»âåä¸è¥¿âå°â干宿´»âçèå¼è·è¿ | OpenClaw 俱ä¹é¨</title> 15 16 17 18 <meta name="description" content="æ¬ææ·±åº¦è§£è¯»åèè·³å¨ææ°åå¸çä¼ä¸çº§ Agent 产å"è±å å·¥ä½"ãæç« ä»ä¸å¥è¯çè§£åå ¥ï¼æè§£å ¶å 容çæãAI åä½ç¼è¾ãæä½çµè䏿µè§å¨ãå¤ Agent åä½ãæè½çæäºå¤§æ ¸å¿è½åï¼éç¹åæå ¶ä¸é£ä¹¦æ·±åº¦æéå½¢æçç«äºå£åï¼å¹¶æ¢³çå®å ¨åè§ä½ç³»ãè¡ä¸èæ¯ä¸ç«å对æ¯ã" /> 19 20 21 22 23 <meta name="keywords" content="åèè·³å¨, è±å å·¥ä½, AIåå ¬, AI Agent" /> 24 25 <meta name="author" content="ð¦n-openclaw" /> 26 27 28 <link rel="canonical" href="http://localhost:8090/archives/post" /> 29 30 31 32 <link rel="icon" href="/upload/OpenClaw%20(29).png" /> 33 <link rel="apple-touch-icon" href="/upload/OpenClaw%20(29).png" /> 34 <link 35 rel="alternate" 36 type="application/rss+xml" 37 href="http://localhost:8090/rss.xml" 38 title="OpenClaw 俱ä¹é¨ - RSS Feed" 39 /> 40 <meta property="og:site_name" content="OpenClaw 俱ä¹é¨" /> 41 <meta property="og:locale" content="zh_CN" /> 42 43 <meta property="og:type" content="article" /> 44 <meta property="og:title" content="åèâè±å å·¥ä½âæ£å¼äº®ç¸ï¼åå ¬AIä»âåä¸è¥¿âå°â干宿´»âçèå¼è·è¿" /> 45 <meta property="og:description" content="æ¬ææ·±åº¦è§£è¯»åèè·³å¨ææ°åå¸çä¼ä¸çº§ Agent 产å"è±å å·¥ä½"ãæç« ä»ä¸å¥è¯çè§£åå ¥ï¼æè§£å ¶å 容çæãAI åä½ç¼è¾ãæä½çµè䏿µè§å¨ãå¤ Agent åä½ãæè½çæäºå¤§æ ¸å¿è½åï¼éç¹åæå ¶ä¸é£ä¹¦æ·±åº¦æéå½¢æçç«äºå£åï¼å¹¶æ¢³çå®å ¨åè§ä½ç³»ãè¡ä¸èæ¯ä¸ç«å对æ¯ã" /> 46 <meta property="og:url" content="http://localhost:8090/archives/post" /> 47 <meta property="og:image" content="/upload/ChatGPT%20Image%202026%E5%B9%B48%E6%9C%8826%E6%97%A5%2010_59_06-jPVI.png" /> 48 49 <meta 50 property="article:published_time" 51 content="2026-08-26T11:22:00+08:00" 52 /> 53 <meta 54 property="article:modified_time" 55 content="2026-08-26T11:42:43+08:00" 56 /> 57 <meta property="article:author" content="ð¦n-openclaw" /> 58 <meta 59 property="article:section" 60 content="ææ¯åæ²¿" 61 /> 62 63 <meta property="article:tag" content="åèè·³å¨" /><meta property="article:tag" content="è±å å·¥ä½" /><meta property="article:tag" content="AIåå ¬" /><meta property="article:tag" content="AI Agent" /> 64 65 66 67 68 69 <meta name="twitter:card" content="summary_large_image" /> 70 <meta name="twitter:title" content="åèâè±å å·¥ä½âæ£å¼äº®ç¸ï¼åå ¬AIä»âåä¸è¥¿âå°â干宿´»âçèå¼è·è¿" /> 71 72 73 74 75 <meta name="twitter:description" content="æ¬ææ·±åº¦è§£è¯»åèè·³å¨ææ°åå¸çä¼ä¸çº§ Agent 产å"è±å å·¥ä½"ãæç« ä»ä¸å¥è¯çè§£åå ¥ï¼æè§£å ¶å 容çæãAI åä½ç¼è¾ãæä½çµè䏿µè§å¨ãå¤ Agent åä½ãæè½çæäºå¤§æ ¸å¿è½åï¼éç¹åæå ¶ä¸é£ä¹¦æ·±åº¦æéå½¢æçç«äºå£åï¼å¹¶æ¢³çå®å ¨åè§ä½ç³»ãè¡ä¸èæ¯ä¸ç«å对æ¯ã" /> 76 77 78 79 80 81 <meta name="twitter:image" content="/upload/ChatGPT%20Image%202026%E5%B9%B48%E6%9C%8826%E6%97%A5%2010_59_06-jPVI.png" /> 82 83 84 85 86 87 88 89 90 91 92 93 <link 94 rel="preload" 95 href="/themes/theme-clarity/assets/fonts/JetBrainsMono-Regular/6096f8ea8ec1ddec37a08da471025894.woff2" 96 as="font" 97 type="font/woff2" 98 crossorigin 99 /> 100 <link 101 rel="stylesheet" 102 href="/themes/theme-clarity/assets/fonts/JetBrainsMono-Regular/jetBrainsMonoRegular.css?v=1.5.3" 103 media="print" 104 onload="this.media = 'all'" 105 /> 106 <link 107 rel="stylesheet" 108 href="/themes/theme-clarity/assets/fonts/JetBrainsMono-Italic/jetBrainsMonoItalic.css?v=1.5.3" 109 media="print" 110 onload="this.media = 'all'" 111 /> 112 113 114 115 116 117 118 119 120 121 122 <link rel="stylesheet" href="/themes/theme-clarity/assets/dist/main.css?v=1.5.3" /> 123
123<script type="module" src="/themes/theme-clarity/assets/dist/main.js?v=1.5.3"></script>
123 124 125 <style> 126 :root, 127 :root.light, 128 :root.dark { 129 --c-primary: #000000 !important; 130 --c-primary-soft: color-mix(in srgb, #000000, transparent 85%) !important; 131 --c-accent: #D0021B !important; 132 } 133 </style> 134
134<script data-theme-config> 135 window.themeConfig = window.themeConfig || {}; 136 window.themeConfig.custom = window.themeConfig.custom || {}; 137 window.themeConfig.custom.img_alt = true; 138 window.themeConfig.custom.enable_fancybox = false; 139 window.themeConfig.custom.enable_pjax = false; 140 window.themeConfig.custom.pjax_timeout = 5000; 141 window.themeConfig.custom.enable_page_jump = false; 142 window.themeConfig.custom.caption_blacklist = []; 143 window.themeConfig.style = window.themeConfig.style || {}; 144 window.themeConfig.style.theme_mode = "light"; 145 window.themeConfig.header = window.themeConfig.header || {}; 146 window.themeConfig.header.menu_mouse_hover = true; 147 </script>
147 148
148<script> 149 (function () { 150 const theme = localStorage.getItem("theme") || window.themeConfig?.style?.theme_mode || "system"; 151 152 const isDark = 153 theme === "dark" || (theme === "system" && window.matchMedia("(prefers-color-scheme: dark)").matches); 154 155 if (isDark) { 156 document.documentElement.classList.add("dark"); 157 } 158 })(); 159 </script>
159 160 <meta content="Halo 2.23.2" name="generator"/><meta name="description" content="æ¬ææ·±åº¦è§£è¯»åèè·³å¨ææ°åå¸çä¼ä¸çº§ Agent 产å"è±å å·¥ä½"ãæç« ä»ä¸å¥è¯çè§£åå ¥ï¼æè§£å ¶å 容çæãAI åä½ç¼è¾ãæä½çµè䏿µè§å¨ãå¤ Agent åä½ãæè½çæäºå¤§æ ¸å¿è½åï¼éç¹åæå ¶ä¸é£ä¹¦æ·±åº¦æéå½¢æçç«äºå£åï¼å¹¶æ¢³çå®å ¨åè§ä½ç³»ãè¡ä¸èæ¯ä¸ç«å对æ¯ã"/><!-- plugin-editor-hyperlink-card start -->
161<script src="/plugins/editor-hyperlink-card/assets/static/hyperlink-card.iife.js?version=1.6.0"></script>
161 162<link rel="stylesheet" href="/plugins/editor-hyperlink-card/assets/static/var.css?version=1.6.0" /> 163<!-- plugin-editor-hyperlink-card end --> 164<!-- plugin-comment-widget start --> 165<link rel="modulepreload" href="/plugins/PluginCommentWidget/assets/static/comment-widget.js?version=3.0.0"> 166<link rel="stylesheet" href="/plugins/PluginCommentWidget/assets/static/index.css?version=3.0.0" /> 167<!-- plugin-comment-widget end --> 168<!-- PluginSearchWidget start -->
169<script src="/plugins/PluginSearchWidget/assets/static/search-widget.iife.js?version=1.7.0" defer></script>
169 170<link rel="stylesheet" href="/plugins/PluginSearchWidget/assets/static/style.css?version=1.7.0" /> 171<!-- PluginSearchWidget end --> 172<!-- plugin-shiki start -->
173<script type="module" src="/plugins/shiki/assets/static/shiki-code.js?version=1.0.11"></script>
173 174<!-- plugin-shiki end --> 175<!-- announcement start --> 176<link rel="stylesheet" href="/plugins/announcement/assets/static/announcement.css?version=2.0.1" />
177<script defer src="/plugins/announcement/assets/static/announcement.umd.cjs?version=2.0.1"></script>
177 178<!-- announcement end --> 179<!-- data-statistics start -->
180<script defer src="/plugins/data-statistics/assets/static/min/chart.umd.min.js?version=1.0.5"></script>
180 181<link rel="stylesheet" href="/plugins/data-statistics/assets/static/min/siteCharts.min.css?version=1.0.5" />
182<script defer src="/plugins/data-statistics/assets/static/min/siteCharts.min.js?version=1.0.5"></script>
vendor: 1 bytes, line 182
182
183<script defer src="/plugins/data-statistics/assets/static/min/dataStatistics.min.js?version=1.0.5"></script>
183 184<link rel="stylesheet" href="/plugins/data-statistics/assets/static/min/dataStatistics.min.css?version=1.0.5" /> 185<!-- data-statistics end --> 186<meta content="codeva-72zScPfTfX" name="baidu-site-verification"/><meta content="7loVlnm0-Jb1b4oGOQe1KfPBtQiXYSyEOybwWfYiywc" name="google-site-verification"/><meta content="5D3F3D2FF73FF2C9318AAAB0979DEC78" name="msvalidate.01"/><meta content="" name="sogou_site_verification"/><link rel="icon" href="/upload/OpenClaw%20(29).png" />
187<script async defer src="/halo-tracker.js" data-group="content.halo.run" data-plural="posts" data-name="e8f0d6fc-c6fc-48e5-bdc7-5c90511a3625"></script>
187 188</head> 189 <body id="clarity-root"> 190 <div 191 id="z-sidebar-bgmask" 192 class="hidden" 193 onclick=" 194 document.getElementById('z-sidebar').classList.remove('show'); 195 this.classList.add('hidden'); 196 document.getElementById('toggle-sidebar')?.classList.remove('active'); 197 " 198 ></div> 199 200 <div 201 id="z-aside-bgmask" 202 class="hidden" 203 onclick=" 204 document.getElementById('z-aside').classList.remove('show'); 205 this.classList.add('hidden'); 206 document.getElementById('toggle-aside')?.classList.remove('active'); 207 " 208 ></div> 209 210 <aside 211 id="z-sidebar" class="menu-icon-invert" 212> 213 <div class="clarity-header"> 214 <div class="emoji-tail"> 215 <span 216 class="split-char" 217 style="--delay: -3.0s" 218 >ð</span><span 219 class="split-char" 220 style="--delay: -2.4s" 221 >ð¦</span><span 222 class="split-char" 223 style="--delay: -1.8s" 224 >ð</span><span 225 class="split-char" 226 style="--delay: -1.2000000000000002s" 227 >ð</span><span 228 class="split-char" 229 style="--delay: -0.6000000000000001s" 230 >ðï¸</span> 231 </div> 232 233 <a href="/"> 234 <img 235 src="/upload/%E6%9C%AC%E5%9C%B0%20AI%20%E6%89%A7%E8%A1%8C%E5%BC%95%E6%93%8E%EF%BC%8C%E8%AE%A9%20AI%20%E7%9C%9F%E6%AD%A3%E5%B8%AE%E4%BD%A0%E5%B9%B2%E6%B4%BB%20(51).png" 236 class="clarity-logo" 237 alt="OpenClaw 俱ä¹é¨" sizes="(max-width: 640px) 94vw, (max-width: 768px) 92vw, (max-width: 1024px) 88vw, min(800px, 85vw)" srcset="/upload/%E6%9C%AC%E5%9C%B0%20AI%20%E6%89%A7%E8%A1%8C%E5%BC%95%E6%93%8E%EF%BC%8C%E8%AE%A9%20AI%20%E7%9C%9F%E6%AD%A3%E5%B8%AE%E4%BD%A0%E5%B9%B2%E6%B4%BB%20(51).png?width=1200 1200w, /upload/%E6%9C%AC%E5%9C%B0%20AI%20%E6%89%A7%E8%A1%8C%E5%BC%95%E6%93%8E%EF%BC%8C%E8%AE%A9%20AI%20%E7%9C%9F%E6%AD%A3%E5%B8%AE%E4%BD%A0%E5%B9%B2%E6%B4%BB%20(51).png?width=400 400w, /upload/%E6%9C%AC%E5%9C%B0%20AI%20%E6%89%A7%E8%A1%8C%E5%BC%95%E6%93%8E%EF%BC%8C%E8%AE%A9%20AI%20%E7%9C%9F%E6%AD%A3%E5%B8%AE%E4%BD%A0%E5%B9%B2%E6%B4%BB%20(51).png?width=800 800w, /upload/%E6%9C%AC%E5%9C%B0%20AI%20%E6%89%A7%E8%A1%8C%E5%BC%95%E6%93%8E%EF%BC%8C%E8%AE%A9%20AI%20%E7%9C%9F%E6%AD%A3%E5%B8%AE%E4%BD%A0%E5%B9%B2%E6%B4%BB%20(51).png?width=1600 1600w" 238 /> 239 </a> 240 241 242</div> 243 244 <nav class="sidebar-nav scrollcheck-y"> 245 <!-- æç´¢ç»ä»¶ --> 246 <div 247 class="search-btn sidebar-nav-item gradient-card" 248 onclick="SearchWidget.open()" 249> 250 <span class="icon-[ph--magnifying-glass-bold]"></span> 251 <span class="nav-text">æç´¢</span> 252 <kbd class="search-shortcut" x-data x-text="navigator.platform.includes('Mac') ? 'âK' : 'Ctrl+K'"></kbd> 253</div> 254 <!-- 导èªèåç»ä»¶ --> 255 256 <menu> 257 <li 258 > 259 260 <a 261 href="/" 262 class="sidebar-nav-item" 263 > 264 265 <span class="nav-text">é¦é¡µ</span> 266 267 </a> 268 </li> 269 <li 270 > 271 272 <a 273 href="/categories/aida-mo-xing" 274 class="sidebar-nav-item" target="_self" 275 > 276 277 <span class="nav-text">AI大模å</span> 278 279 </a> 280 </li> 281 <li 282 > 283 284 <a 285 href="/categories/anbs" 286 class="sidebar-nav-item" target="_self" 287 > 288 289 <span class="nav-text">å®è£ é¨ç½²</span> 290 291 </a> 292 </li> 293 <li 294 > 295 296 <a 297 href="/categories/qddj" 298 class="sidebar-nav-item" target="_self" 299 > 300 301 <span class="nav-text">æ¸ é对æ¥</span> 302 303 </a> 304 </li> 305 <li 306 > 307 308 <a 309 href="/categories/skills" 310 class="sidebar-nav-item" target="_self" 311 > 312 313 <span class="nav-text">Skillsæè½</span> 314 315 </a> 316 </li> 317 <li 318 > 319 320 <a 321 href="/categories/yycj" 322 class="sidebar-nav-item" target="_self" 323 > 324 325 <span class="nav-text">åºç¨åºæ¯</span> 326 327 </a> 328 </li> 329 <li 330 > 331 332 <a 333 href="/categories/hhgl" 334 class="sidebar-nav-item" target="_self" 335 > 336 337 <span class="nav-text">ä¼è¯ç®¡ç</span> 338 339 </a> 340 </li> 341 <li 342 > 343 344 <a 345 href="/categories/jygl" 346 class="sidebar-nav-item" target="_self" 347 > 348
349 <span class="nav-text">è®°å¿ç®¡ç</span> 350 351 </a> 352 </li> 353 <li 354 > 355 356 <a 357 href="/categories/agent" 358 class="sidebar-nav-item" target="_self" 359 > 360 361 <span class="nav-text">å¤Agentåä½</span> 362 363 </a> 364 </li> 365 <li 366 > 367 368 <a 369 href="/categories/ywgl" 370 class="sidebar-nav-item" target="_self" 371 > 372 373 <span class="nav-text">è¿ç»´ç®¡ç</span> 374 375 </a> 376 </li> 377 <li 378 > 379 380 <a 381 href="/categories/aqgf" 382 class="sidebar-nav-item" target="_self" 383 > 384 385 <span class="nav-text">å®å ¨å®¡è®¡</span> 386 387 </a> 388 </li> 389 <li 390 > 391 392 <a 393 href="/categories/release" 394 class="sidebar-nav-item" target="_self" 395 > 396 397 <span class="nav-text">å叿¥å¿</span> 398 399 </a> 400 </li> 401 </menu> 402 403 </nav> 404 405 <footer class="sidebar-footer"> 406 <!-- ç¨æ·è®¤è¯ç»ä»¶ --> 407 <div 408 class="user-auth" 409 x-data="userAuth()" 410 @click.outside="showMenu = false" 411> 412 <div x-show="!ready" class="user-entry loading"> 413 <div class="avatar-wrapper"> 414 <span class="icon-[ph--spinner] animate-spin"></span> 415 </div> 416 <div class="user-info"> 417 <span class="user-name">å è½½ä¸...</span> 418 </div> 419 </div> 420 421 <a x-show="ready && !currentUser" x-cloak href="/login" class="user-entry"> 422 <div class="avatar-wrapper"> 423 <span class="icon-[ph--user-circle-bold] default-avatar-icon"></span> 424 </div> 425 <div class="user-info"> 426 <span class="user-name">ç»å½</span> 427 <span class="user-desc">ç¹å»ç»å½è´¦å·</span> 428 </div> 429 </a> 430 431 <div x-show="ready && currentUser" x-cloak class="user-entry" @click="handleClick()"> 432 <div class="avatar-wrapper"> 433 <img :src="currentUser?.avatar" :alt="currentUser?.name" class="user-avatar" /> 434 </div> 435 <div class="user-info"> 436 <span class="user-name" x-text="currentUser?.name"></span> 437 <span class="user-desc" x-text="currentUser?.roleDisplayName || 'ç¨æ·è§è²'"></span> 438 </div> 439 <span class="icon-[ph--caret-down-bold] menu-arrow" :class="{ 'rotate': showMenu }"></span> 440 </div> 441 442 <div x-show="ready && showMenu" x-cloak x-transition class="user-menu"> 443 <a href="/uc" class="user-menu-item" data-no-pjax> 444 <span class="icon-[ph--user-bold]"></span> 445 <span>个人ä¸å¿</span> 446 </a> 447 448 <a href="/logout" class="user-menu-item logout"> 449 <span class="icon-[ph--sign-out-bold]"></span> 450 <span>éåºç»å½</span> 451 </a> 452 </div> 453</div> 454 <!-- 䏻颿¨¡å¼åæ¢ç»ä»¶ --> 455 <div class="theme-toggle" x-data="themeToggle()"> 456 <button :class="{ active: theme === 'light' }" @click="setTheme('light', $event)" title="æµ è²æ¨¡å¼"> 457 <span class="icon-[ph--sun-bold]"></span> 458 </button> 459 <button :class="{ active: theme === 'system' }" @click="setTheme('system', $event)" title="è·éç³»ç»"> 460 <span class="icon-[ph--monitor-bold]"></span> 461 </button> 462 <button :class="{ active: theme === 'dark' }" @click="setTheme('dark', $event)" title="æ·±è²æ¨¡å¼"> 463 <span class="icon-[ph--moon-bold]"></span> 464 </button> 465</div> 466 <!-- ç¤¾äº¤å¾æ ç»ä»¶ --> 467 468 </footer> 469</aside> 470 471 <div id="content"> 472 <main id="main-content"> 473 474 <!-- æç« å¤´é¨ --> 475 476 <div 477 class="post-header has-cover " 478 > 479 <img 480 src="/upload/ChatGPT%20Image%202026%E5%B9%B48%E6%9C%8826%E6%97%A5%2010_59_06-jPVI.png" 481 class="post-cover" 482 alt="åèâè±å å·¥ä½âæ£å¼äº®ç¸ï¼åå ¬AIä»âåä¸è¥¿âå°â干宿´»âçèå¼è·è¿" sizes="(max-width: 640px) 94vw, (max-width: 768px) 92vw, (max-width: 1024px) 88vw, min(800px, 85vw)" srcset="/upload/ChatGPT%20Image%202026%E5%B9%B48%E6%9C%8826%E6%97%A5%2010_59_06-jPVI.png?width=1200 1200w, /upload/ChatGPT%20Image%202026%E5%B9%B48%E6%9C%8826%E6%97%A5%2010_59_06-jPVI.png?width=400 400w, /upload/ChatGPT%20Image%202026%E5%B9%B48%E6%9C%8826%E6%97%A5%2010_59_06-jPVI.png?width=800 800w, /upload/ChatGPT%20Image%202026%E5%B9%B48%E6%9C%8826%E6%97%A5%2010_59_06-jPVI.png?width=1600 1600w" 483 /> 484 485 <div class="post-nav"> 486 <div class="operations"> 487 <button class="z-btn" id="share-btn" title="å¤å¶åäº«ææ¬">
488 <span class="icon-[ph--share-bold]"></span> 489 <span>æåå享</span> 490 </button> 491 <button class="z-btn" id="poster-btn" title="çæå享海æ¥"> 492 <span class="icon-[ph--image-bold]"></span> 493 <span>æµ·æ¥å享</span> 494 </button> 495 </div> 496 497 <div class="post-info"> 498 <a 499 href="/authors/n-openclaw" 500 class="author-capsule" 501> 502 503 <span>ð¦n-openclaw</span> 504</a> 505 506 <span> 507 <span class="icon-[ph--calendar-dots-bold]"></span> 508 <time>2026-08-26</time> 509 </span> 510 511 <span> 512 <span class="icon-[ph--chat-circle-dots-bold]"></span> 513 <span>0</span> è¯è®º 514 </span> 515 516 <span 517 > 518 519 <span class="icon-[ph--folder-bold]"></span> 520 <a href="/categories/%E6%8A%80%E6%9C%AF%E5%89%8D%E6%B2%BF">ææ¯åæ²¿</a> 521 </span> 522 523 <span> 524 <span class="icon-[ph--eye-bold]"></span> 525 <span>26</span> é 读 526 </span> 527 </div> 528 </div> 529 <h1 530 class="post-title text-creative" 531 >åèâè±å å·¥ä½âæ£å¼äº®ç¸ï¼åå ¬AIä»âåä¸è¥¿âå°â干宿´»âçèå¼è·è¿</h1> 532 </div> 533 534 <!-- æç« æè¦ --> 535 536 537
537<script> 538 (function () { 539 const container = document.querySelector(".md-excerpt"); 540 if (!container || container.dataset.animation === "false") return; 541 const el = document.getElementById("excerpt-text"); 542 const caret = document.getElementById("excerpt-caret"); 543 if (!el) return; 544 const text = el.dataset.text || ""; 545 const speed = parseInt(container.dataset.speed) || 50; 546 let index = 0; 547 function type() { 548 if (index < text.length) { 549 el.textContent += text[index]; 550 index++; 551 setTimeout(type, speed); 552 } else { 553 if (caret) caret.style.display = "none"; 554 } 555 } 556 type(); 557 })(); 558 </script>
558 559 560 <!-- æç« è¿ææç¤º --> 561 562 563
563<script> 564 (function () { 565 const notice = document.querySelector(".outdated-notice"); 566 if (!notice) return; 567 568 const publishTime = new Date(notice.dataset.publishTime).getTime(); 569 const threshold = parseInt(notice.dataset.threshold) || 180; 570 const messageTemplate = notice.dataset.message; 571 572 const now = Date.now(); 573 const daysPassed = Math.floor((now - publishTime) / (1000 * 60 * 60 * 24)); 574 575 if (daysPassed >= threshold) { 576 const text = messageTemplate.replace("{days}", daysPassed); 577 notice.querySelector(".notice-text").textContent = text; 578 notice.style.display = ""; 579 } 580 })(); 581 </script>
581 582 583 <!-- æç« AI æç¤º --> 584 585 586 587 <!-- æç« å 容 --> 588 <article class="article"> <style class="pjax" data-pjax> 589 pre:has(code) { 590 filter: blur(10px) !important; 591 padding: 1rem !important; 592 } 593 </style> 594<blockquote> 595<p>8 æ 25 æ¥ï¼åèè·³å¨æ£å¼åå¸"è±å å·¥ä½"ââ䏿¬¾é¢åç产ååºæ¯çä¼ä¸çº§ Agent 产åãå®ä¸åªæ¯"å¸®ä½ åææ¡£"ç AI 婿ï¼èæ¯ä¸ä¸ªè½èªä¸»æè§£ä»»å¡ãæä½çµèæµè§å¨ãè°ç¨äºçµèæç»æ¨è¿å¤æå·¥ä½æµçæºè½ä½ãæ¬ææ·±åº¦è§£è¯»è¿ä¸ªäº§åçæ ¸å¿è½åã设计å²å¦åè¡ä¸æä¹ã</p> 596</blockquote> 597<hr> 598<h2 id="ä¸ãä¸å¥è¯çè§£è±å å·¥ä½">ä¸ãä¸å¥è¯çè§£"è±å å·¥ä½"</h2> 599<p>妿ç¨ä¸ä¸ªç±»æ¯ï¼ä¹åç AI åå ¬äº§åï¼å æ¬æ©æç ChatGPTãKimiãè±å æ¬èº«ï¼æ´åæ¯"è¶ çº§æç§"ââä½ ç»å®ä¸ä¸ªæä»¤ï¼å®å¸®ä½ ååºä¸æ®µæåãä¸å¼ è¡¨æ ¼ï¼è<strong>è±å 工使¯"æ°ååå·¥"</strong>ââä½ ç»å®ä¸ä¸ªç®æ ï¼å®èªå·±æä»»å¡ãè°å·¥å ·ãæä½è½¯ä»¶ãè·å®æ´ä¸ªå·¥ä½æµï¼æç»ææ´»å¹²å®äº¤ä»ç»ä½ ã</p> 600<p>å®å´ç»ä¸ä¸ªæ ¸å¿è¯ï¼<strong>èªä¸»æè§£ãå·¥å ·è°ç¨ãæç»æ¨è¿</strong>ã</p> 601<hr> 602<h2 id="äºãæ ¸å¿è½åæè§£">äºãæ ¸å¿è½åæè§£</h2> 603<h3 id="å 容çæï¼ä¸æ¢æå">1. å 容çæï¼ä¸æ¢æå</h3> 604<p>è±å å·¥ä½è½äº¤ä»ç工使æè¦çï¼</p> 605<ul> 606<li><strong>ææ¡£ç±»</strong>ï¼æ¹æ¡æ°åãä¼è®®çºªè¦æ´çãæ¥åèµ·èãè°ç æ»ç»</li> 607<li><strong>æ°æ®ç±»</strong>ï¼è¡¨æ ¼å¶ä½ãæ°æ®åæãæ°æ®å¯è§å</li> 608<li><strong>å¤åªä½ç±»</strong>ï¼å¾ççæä¸ç¼è¾ãè§é¢çæä¸ç¼è¾ãç½é¡µçæãçè³ç®æåºç¨</li> 609</ul> 610<p>è½åè¦çèå´å¨å类产åä¸å¤äºç¬¬ä¸æ¢¯éã</p> 611<h3 id="ai-åä½ç¼è¾ï¼æåªæ¹åª">2. AI åä½ç¼è¾ï¼âæåªæ¹åªâ</h3> 612<p>è¿æ¯è±å å·¥ä½åºå«äºä¼ ç» AI å¤§æ¨¡åæ´æ®µéçæçå ³é®è®¾è®¡ã</p> 613<p>ç¨æ·å¯¹çæçææ¡£ãè¡¨æ ¼ãPPT æç½é¡µä¸çä»»æé¨åï¼<strong>ç´æ¥æ¡éåè¿è¡é对æ§ä¿®æ¹</strong>ï¼èé"éæ°çæä¸ç"ãè¿å¸¦æ¥ä¸¤ä¸ªå®é 好å¤ï¼</p> 614<ul> 615<li>éä½ç®åæ¶èï¼ä¸ç¨æ¯æ¬¡å ¨æéåï¼</li> 616<li>æå人æºå使çï¼AI åå稿ï¼äººå精修ï¼åå¤æç£¨å°æå交ä»ï¼</li> 617</ul> 618<h3 id="æä½çµè䏿µè§å¨ï¼çæ£ç干活">3. æä½çµè䏿µè§å¨ï¼çæ£ç"干活"</h3> 619<p>è¿æ¯"Agent"åºå«äº"Chatbot"çæ ¸å¿è½åãè·å¾ç¨æ·ææåï¼è±å å·¥ä½å¯ä»¥ï¼</p> 620<ul> 621<li>è·¨è½¯ä»¶å®æä»»å¡ï¼ç¨ä¸ä¸è½¯ä»¶å¤çæ°æ®ï¼</li> 622<li>æµè§ç½é¡µæ¶éä¿¡æ¯</li> 623<li>å¡«å表å</li> 624<li>æ¯å¯¹èµæ</li> 625<li>è°ç¨<strong>äºçµè</strong>ç»§ç»æ§è¡é¿ä»»å¡ï¼æ¬å°çµèå ³æºï¼ä»»å¡ä¸ä¸æï¼</li> 626<li>éè¿<strong>ææºè¿ç¨ææ§çµè</strong>ï¼å¤åºæ¶ç»§ç»æ¨è¿æªå®æå·¥ä½</li> 627</ul> 628<p>è¿æå³çä½ ä¸çå交ç»å®ä¸ä¸ªä»»å¡ï¼æ¯å¦"æ´çè¿ä»½è¡ä¸æ¥åçæææ°æ®æº"ï¼ï¼å®å¯ä»¥æ´å¤å·¥ä½ï¼ç¬¬äºå¤©æ©ä¸ä½ ç´æ¥çç»æã</p> 629<h3 id="å¤-agent-åä½ï¼å·¥ä½å°é">4. å¤ Agent åä½ï¼âå·¥ä½å°éâ</h3> 630<p>ç¨æ·å¯ä»¥éæ©å¤ä¸ªä¸ä¸ Agent ç»æ"å·¥ä½å°é"ï¼åå·¥åä½ãä¾å¦åä¸ä»½æ°æ®è°ç æ¥åæ¶ï¼</p> 631<ul> 632<li>æ°æ® Agent è´è´£éé忏 æ´</li> 633<li>ç ç©¶ Agent è´è´£åæå½çº³</li> 634<li>设计 Agent è´è´£æçè¾åº</li> 635</ul> 636<p>å屿é¿ãå忍è¿ï¼ç±»ä¼¼ä¸ä¸ªè¿·ä½ 项ç®ç»ã</p> 637<h3 id="æè½--è¿æ¥å¨çæ">5. æè½ / è¿æ¥å¨çæ</h3> 638<p>弿¾çæè½ï¼Skillsï¼åè¿æ¥å¨ï¼Connectorsï¼ç³»ç»ï¼è¦çæ°æ®åæãå 容çåãç§ç ãéèçå¤ä¸ªä¸ä¸æ¹åçå·¥å ·æ©å±ãç¨æ·å¯ä»¥æä»»å¡éè¦è°ç¨ä¸åå¤é¨è½åã</p> 639<hr> 640<h2 id="ä¸ãæå¤§å·®å¼åï¼é£ä¹¦æ·±åº¦æé">ä¸ãæå¤§å·®å¼åï¼é£ä¹¦æ·±åº¦æé</h2> 641<p>è¿æ¯è±å å·¥ä½ç¸æ¯å ¶ä» Agent 产å<strong>ææ ¸å¿çç«äºå£å</strong>ã</p> 642<p>使ç¨é£ä¹¦è´¦å·ç»å½åï¼Agent èªå¨ç»§æ¿æéèå´å çä¼ä¸ä¸ä¸æï¼</p> 643<div class="table-wrapper"><table> 644<thead> 645<tr> 646<th>ä¸ä¸æç±»å</th> 647<th>说æ</th> 648</tr> 649</thead> 650<tbody> 651<tr> 652<td>è天记å½</td> 653<td>å¢éæ¥å¸¸æ²éä¸çå³çã讨论ãç»è®º</td> 654</tr> 655<tr> 656<td>ææ¡£</td> 657<td>é¡¹ç®ææ¡£ãææ¯æ¹æ¡ãæµç¨è§è</td> 658</tr> 659<tr> 660<td>ä¼è®®çºªè¦</td> 661<td>ä¼è®®å³è®®ãå¾ åãAction Item</td> 662</tr> 663<tr> 664<td>æ¥ç¨</td> 665<td>æ¶é´çº¦æãä¼è®®å®æ</td> 666</tr> 667</tbody> 668</table> 669</div><p>è¿å¸¦æ¥çå®é æææ¯ï¼<strong>Agent 䏿¯"ç½çº¸"ç¶æçä½ ä¸æä»¤ï¼èæ¯å¸¦çå¯¹ä½ ä¸å¡ççè§£æ¥å·¥ä½</strong>ãå®ç¥éä½ ç项ç®èæ¯ãå¢éåå·¥ãåå²å³çï¼è¾åºæ´ç²¾åã</p> 670<p>æ´å ³é®çæ¯ååæ²æ·ï¼äººæºåå产åºçå 容ä¼<strong>ååé£ä¹¦</strong>ï¼å½¢æå¯äºæ¬¡ç¼è¾ãå享åå¤ç¨çä¼ä¸ç¥è¯ï¼è®©åç»ä»»å¡æ§è¡è¶æ¥è¶ç²¾åã</p> 671<blockquote> 672<p>åé£ä¹¦å é¨ç"è±å ä¼ä¸ç"å ¥å£å·²åæ¥å级为"è±å å·¥ä½"ã</p> 673</blockquote> 674<hr> 675<h2 id="åãå®å ¨ä¸åè§">åãå®å ¨ä¸åè§</h2> 676<p>ä¼ä¸çº§äº§åï¼å®å ¨æ¯åºçº¿ãè±å å·¥ä½æå»ºäºå ¨é¾è·¯ Agent å®å ¨é²æ¤ä½ç³»ï¼</p> 677<ul> 678<li>è®¾å¤æ¥å ¥ç®¡æ§</li> 679<li>æé设置ï¼ä¸¥æ ¼ç»§æ¿é£ä¹¦æéä½ç³»ï¼</li> 680<li>é¢åº¦ç®¡æ§</li> 681<li>æ°æ®å å¯</li> 682<li>æä½å®¡è®¡</li> 683<li><strong>ä¸ªäººæ°æ®ä¸ä¼ä¸æ°æ®ç©çé离</strong></li> 684</ul> 685<p>ç®åå·²æ¯å½å 馿¹éè¿<strong>åå ¬æºè½ä½è½å + äºç«¯åºåæµè¯</strong>å项认è¯çåå ¬æºè½ä½ã</p> 686<hr> 687<h2 id="äºãè¡ä¸èæ¯ï¼ä¸ºä»ä¹æ¯ç°å¨ï¼">äºãè¡ä¸èæ¯ï¼ä¸ºä»ä¹æ¯ç°å¨ï¼</h2> 688<h3 id="agent-产ååå å¹´">1. Agent 产ååå å¹´</h3> 689<p>2026 å¹´ 8 æï¼Agent 产åå¯éè½å°ï¼</p> 690<div class="table-wrapper"><table> 691<thead> 692<tr> 693<th>产å</th> 694<th>åå</th> 695<th>å®ä½</th> 696</tr> 697</thead> 698<tbody> 699<tr> 700<td>ChatGPT Work</td> 701<td>OpenAI</td> 702<td>å° Agent è½åéè³ $20/æ Plus æ¡£</td> 703</tr> 704<tr> 705<td>Gemini Spark</td> 706<td>Google</td> 707<td>$99.99/æäºç«¯ Agentï¼è·¨åºç¨å¤æ¥ä»»å¡</td> 708</tr> 709<tr> 710<td>Claude Cowork</td> 711<td>Anthropic</td> 712<td>æµè§å¨ä¾§é¢æ¿å®æ´ Agent ä¼è¯</td> 713</tr> 714<tr> 715<td>Grok Bot</td> 716<td>xAI</td> 717<td>7Ã24 èªä¸» AI"æ°ååäº"</td> 718</tr> 719<tr> 720<td><strong>è±å å·¥ä½</strong></td> 721<td><strong>åèè·³å¨</strong></td> 722<td><strong>ä¼ä¸çº§åå ¬ Agent + é£ä¹¦çæ</strong></td> 723</tr> 724</tbody> 725</table> 726</div><p>Gartner 颿µ 2026 å¹´åº 40% ä¼ä¸åºç¨å°å ç½® Task-specific AI Agentãè¿åº"åå ¬ Agent"ç«èµå·²ç»å ¨é¢å¼æã</p> 727<h3 id="åèçç»ç»æ´åä¿¡å·">2. åèçç»ç»æ´åä¿¡å·</h3> 728<p>è±å å·¥ä½åå¸åçç»ç»è°æ´å¼å¾æ³¨æï¼</p> 729<ul> 730<li><strong>7 æ 30 æ¥</strong>ï¼é£ä¹¦äº§åå¢éä¸è±å 产åå¢éæ´åï¼é£ä¹¦è´è´£äººè°¢æ¬£åè±å è´è´£äººèµµç¥ºæ±æ¥</li> 731<li><strong>8 æ 24 æ¥</strong>ï¼TRAEãæ£åï¼Cozeï¼å¢éæ´ä½å¹¶å ¥è±å ä½ç³»</li> 732</ul> 733<p>ææç产å Agent ç¸å ³å¢ééä¸ç±èµµç¥ºç»ä¸é¢å¯¼ï¼åå ¬ AI æç¥ä»å¤çº¿å¹¶è¡è½¬å<strong>åç¹çªç ´</strong>ãè±å å·¥ä½å°±æ¯è¿åºæ´åç产ç©ã</p> 734<h3 id="ä¸å½åå ¬-ai-çé£ä¹¦ä¼å¿">
7343. ä¸å½åå ¬ AI ç"é£ä¹¦ä¼å¿"</h3> 735<p>ç¸æ¯ OpenAIï¼æ ä¼ä¸ IMï¼ãGoogleï¼æ Workspace ä½ä¸å½ä¸å¯ç¨ï¼ãAnthropicï¼çº¯ APIï¼ï¼åèçæ ¸å¿ä¼å¿å¨äº<strong>é£ä¹¦å¤©ç¶æ²æ·äºä¸å½ä¼ä¸æå®æ´çåå ¬ä¸ä¸æ</strong>ãAgent æ¶ä»£ï¼è°ææ¡ä¸ä¸æï¼è°å°±ææ¡çè§£åã</p> 736<hr> 737<h2 id="å ãä¸ç«å对æ¯">å ãä¸ç«å对æ¯</h2> 738<div class="table-wrapper"><table> 739<thead> 740<tr> 741<th>维度</th> 742<th>è±å å·¥ä½</th> 743<th>ChatGPT Work</th> 744<th>Claude Cowork</th> 745<th>Gemini Spark</th> 746</tr> 747</thead> 748<tbody> 749<tr> 750<td>ä¼ä¸ä¸ä¸æ</td> 751<td>â é£ä¹¦æ·±åº¦æé</td> 752<td>â</td> 753<td>â</td> 754<td>â ï¸ Workspace</td> 755</tr> 756<tr> 757<td>æä½çµè</td> 758<td>â + äºçµè</td> 759<td>â ï¸</td> 760<td>â </td> 761<td>â </td> 762</tr> 763<tr> 764<td>å¤ Agent åä½</td> 765<td>â </td> 766<td>â</td> 767<td>â</td> 768<td>â ï¸</td> 769</tr> 770<tr> 771<td>æ¬å° + äºç«¯</td> 772<td>â äºçµè + è¿ç¨</td> 773<td>â </td> 774<td>â </td> 775<td>â </td> 776</tr> 777<tr> 778<td>ä»·æ ¼</td> 779<td>30 天å è´¹</td> 780<td>$20/æèµ·</td> 781<td>$20/æèµ·</td> 782<td>$99.99/æ</td> 783</tr> 784<tr> 785<td>ä¸å½å¸åº</td> 786<td>â </td> 787<td>â</td> 788<td>â</td> 789<td>â</td> 790</tr> 791<tr> 792<td>å®å ¨è®¤è¯</td> 793<td>â å项认è¯</td> 794<td>-</td> 795<td>-</td> 796<td>-</td> 797</tr> 798</tbody> 799</table> 800</div><hr> 801<h2 id="ä¸ãæçè§å¯ä¸æè">ä¸ãæçè§å¯ä¸æè</h2> 802<p><strong>1. "ä¸ä¸æ"æ¯ Agent æ¶ä»£ççæ£æ¤åæ²³</strong></p> 803<p>模åè½åå¨å¿«éè¶åï¼å沿模åä»·æ ¼æå·²ç»æå°å°æ¿ï¼ï¼ä½<strong>ä¼ä¸ä¸ä¸æ</strong>ââä½ çææ¡£ãè天记å½ãä¼è®®å³è®®ãä¸å¡æµç¨ââæ¯ä¸å¯å¤å¶çèµäº§ãè°è®© Agent æ´å¥½å°"çè§£ä½ çä¸å¡"ï¼
803è°å°±èµ¢ãåèéè¿é£ä¹¦å¤©ç¶æ¥æè¿ä¸ªä¼å¿ã</p> 804<p><strong>2. Agent ç"æåä¸å ¬é"é®é¢æ¯æä½è½å</strong></p> 805<p>å ä¼åææ¡£ç AI åªæ¯"é«çº§ç§ä¹¦"ï¼è½æä½æµè§å¨ãæå¼ Excelãå¡«å®è¡¨åãè·å®æµç¨çææ¯"æ°ååå·¥"ãè±å å·¥ä½å¼ºè°çæä½è½åï¼æµè§å¨ + çµè + äºçµèï¼ç´æè¿ä¸ªçç¹ã</p> 806<p><strong>3. å¤ Agent å使¯æ¹åï¼ä½è¿æªå°</strong></p> 807<p>"å·¥ä½å°é"æ¦å¿µå¾å¥½ï¼ä½å®é ä½éªä¸å¤ Agent çåè°ææ¬ãå²çªå¤çãç»æä¸è´æ§ä»æ¯é¾é¢ãé¢è®¡ 1-2 å¹´å ä¼çå°æ´æççåä½èå¼ã</p> 808<p><strong>4. å®å ¨æ¯ä¼ä¸è½å°ç第ä¸é鍿§</strong></p> 809<p>"æä½çµè"è½åæå³ç巨大çå®å ¨é£é©ãè±å å·¥ä½çå ¨é¾è·¯å®å ¨é²æ¤åå项认è¯ï¼æ¯ä¼ä¸éè´å³çä¸çå å项ãä½ Agent çæéè¾¹çãæä½å®¡è®¡ãåæ»æºå¶ä»éæç»æç£¨ã</p> 810<hr> 811<h2 id="å «ãæ»ç»">å «ãæ»ç»</h2> 812<p>è±å å·¥ä½çå叿 å¿çä¸å½åå ¬ AI è¿å ¥<strong>"Agent 交ä»"æ¶ä»£</strong>ââä»"å¸®ä½ å"å°"å¸®ä½ åå®"ãå®çé£ä¹¦ä¸ä¸ææéãæä½çµèè½åãå¤ Agent åä½è®¾è®¡ï¼å ä¸åèå ¨ç»ç»æ´åçèµæºæå ¥ï¼ä½¿å ¶æä¸ºä¸å½å¸åºåå ¬ Agent èµéæå ·ç«äºåçéæã</p> 813<p>对äºé£ä¹¦ç¨æ·ï¼å½å æ°ç¾ä¸ä¼ä¸ï¼ï¼è¿æ¯ä¸ä¸ªå¼å¾ç«å»å°è¯ç产åââå°¤å ¶æ¯é£äºæ¯å¤©è±å¤§éæ¶é´å¨"å-æ¹-å¡«-æ¥"循ç¯ä¸çèåºäººã</p> 814<blockquote> 815<p><strong>ä¸è½½å°å</strong>
815ï¼è±å å·¥ä½çµèçå®ç½ï¼<a href="https://www.doubao.com/work?from=feishu_mobile">https://www.doubao.com/work?from=feishu_mobile</a> ï¼å·²å¼æ¾ï¼ä¸è½½ç»å½å¯é¢ 30 天å 费订é ãé£ä¹¦ææ°çåºé¨ä¹æå ¥å£ã</p> 816</blockquote> 817</article> 818 <!-- æç« 页è --> 819 820 <div class="post-footer"> 821 <section class="tags-section"> 822 <div class="title text-creative">æç« æ ç¾</div> 823 <div class="content tags-list"> 824 <a 825 href="/tags/zi-jie-tiao-dong" 826 class="tag-item" 827 >#åèè·³å¨</a><a 828 href="/tags/dou-bao-gong-zuo" 829 class="tag-item" 830 >#è±å å·¥ä½</a><a 831 href="/tags/AI%E5%8A%9E%E5%85%AC" 832 class="tag-item" 833 >#AIåå ¬</a><a 834 href="/tags/AI-Agent" 835 class="tag-item" 836 >#AI Agent</a> 837 </div> 838 </section> 839 840 <section class="license"> 841 842 843 <div class="title text-creative">许å¯åè®®</div> 844 <div class="content"> 845 æ¬æéç¨ 846 <a 847 href="https://github.com/openclaw/openclaw?tab=MIT-1-ov-file" 848 target="_blank" 849 > 850 <svg 851 xmlns="http://www.w3.org/2000/svg" 852 width="1em" 853 height="1em"
854 viewBox="0 0 24 24" 855 style="vertical-align: -0.125em; display: inline" 856 > 857 <path 858 fill="currentColor" 859 d="M9 8c1.104 0 2.105.448 2.829 1.173l-1.414 1.413a2 2 0 1 0 0 2.828l1.413 1.414A4.001 4.001 0 0 1 5 12c0-2.208 1.792-4 4-4m9.829 1.173A4.001 4.001 0 0 0 12 12a4.001 4.001 0 0 0 6.828 2.828l-1.414-1.414a2 2 0 1 1 0-2.828zM2 12C2 6.477 6.477 2 12 2s10 4.477 10 10s-4.477 10-10 10S2 17.523 2 12m10-8a8 8 0 1 0 0 16a8 8 0 0 0 0-16" 860 /> 861 </svg> 862 863 864 <span>OpenClaw 俱ä¹é¨-éå䏿§ä½¿ç¨</span> 865 866 </a> 867 许å¯åè®®ï¼è½¬è½½è¯·æ³¨æåºå¤ã 868 </div> 869 870 871 872 </section> 873 </div> 874 875 <!-- æç« å¯¼èª --> 876 877 878 <div 879 class="surround-post" data-prev-url="/archives/ai-llm-price-war" data-next-url="/archives/openclaw-2026-8-1-update" 880 > 881 <a href="/archives/ai-llm-price-war" class="surround-link"> 882 <span class="icon-[solar--rewind-back-bold-duotone] rtl-flip"></span> 883 <div class="surround-text"> 884 <strong class="title text-creative">DeepSeek 涨价 VS OpenAIãAnthropicéä½éä»·</strong> 885 <span class="date">2026-08-23</span> 886 </div> 887 </a> 888 889 890 <a href="/archives/openclaw-2026-8-1-update" class="surround-link align-end"> 891 <span class="icon-[solar--rewind-forward-bold-duotone] rtl-flip"></span> 892 <div class="surround-text"> 893 <strong class="title text-creative">ð¦ OpenClaw 2026.8.1 æ´æ°</strong> 894 <span class="date">2026-09-01</span> 895 </div> 896 </a> 897 898 </div> 899 900 901 <!-- è¯è®ºåº --> 902 903 <h3 class="comment-title"> 904 <span class="icon-[ph--chat-circle-text-bold]"></span> 905 <span>è¯è®ºåº</span> 906 </h3> 907 908 909 910 911 912 <section class="z-comment" id="comment"> 913 <div id="comment-content-halo-run-Post-e8f0d6fc-c6fc-48e5-bdc7-5c90511a3625"></div>
914<script type="module" data-pjax> 915 import { init } from "/plugins/PluginCommentWidget/assets/static/comment-widget.js?version=3.0.0"; 916 init( 917 "#comment-content-halo-run-Post-e8f0d6fc-c6fc-48e5-bdc7-5c90511a3625", 918 { 919 group: "content.halo.run", 920 kind: "Post", 921 name: "e8f0d6fc-c6fc-48e5-bdc7-5c90511a3625", 922 } 923 ); 924</script>
924 925 926 </section> 927 928 929 930 931 <!-- ç¼è¾æç« æé® --> 932 933 <!-- æç« æµ·æ¥å¼¹çª --> 934 935 <div id="poster-modal" class="poster-modal" style="display: none"> 936 <div class="poster-modal-overlay"></div> 937 <div class="poster-modal-content"> 938 <button class="poster-close" id="poster-close"> 939 <span class="icon-[ph--x-bold]"></span> 940 </button> 941 <div class="poster-preview"> 942 <div class="poster-card" id="poster-card"> 943 <div class="poster-header"> 944 <img 945 src="/upload/ChatGPT%20Image%202026%E5%B9%B48%E6%9C%8826%E6%97%A5%2010_59_06-jPVI.png" 946 class="poster-cover" 947 alt="åèâè±å å·¥ä½âæ£å¼äº®ç¸ï¼åå ¬AIä»âåä¸è¥¿âå°â干宿´»âçèå¼è·è¿" 948 crossorigin="anonymous" sizes="(max-width: 640px) 94vw, (max-width: 768px) 92vw, (max-width: 1024px) 88vw, min(800px, 85vw)" srcset="/upload/ChatGPT%20Image%202026%E5%B9%B48%E6%9C%8826%E6%97%A5%2010_59_06-jPVI.png?width=1200 1200w, /upload/ChatGPT%20Image%202026%E5%B9%B48%E6%9C%8826%E6%97%A5%2010_59_06-jPVI.png?width=400 400w, /upload/ChatGPT%20Image%202026%E5%B9%B48%E6%9C%8826%E6%97%A5%2010_59_06-jPVI.png?width=800 800w, /upload/ChatGPT%20Image%202026%E5%B9%B48%E6%9C%8826%E6%97%A5%2010_59_06-jPVI.png?width=1600 1600w" 949 /> 950 <div class="poster-gradient"></div> 951 </div> 952 <div class="poster-body"> 953 <h2 class="poster-title">åèâè±å å·¥ä½âæ£å¼äº®ç¸ï¼åå ¬AIä»âåä¸è¥¿âå°â干宿´»âçèå¼è·è¿</h2> 954 <p class="poster-excerpt">æ¬ææ·±åº¦è§£è¯»åèè·³å¨ææ°åå¸çä¼ä¸çº§ Agent 产å"è±å å·¥ä½"ãæç« ä»ä¸å¥è¯çè§£åå ¥ï¼æè§£å ¶å 容çæãAI åä½ç¼è¾ãæä½çµè䏿µè§å¨ãå¤ Agent åä½ãæè½çæäºå¤§æ ¸å¿è½åï¼éç¹åæå ¶ä¸é£ä¹¦æ·±åº¦æéå½¢æçç«äºå£åï¼å¹¶æ¢³çå®å ¨åè§ä½ç³»ãè¡ä¸èæ¯ä¸ç«å对æ¯ã</p> 955 <div class="poster-meta"> 956 <span 957 >2026-08-26</span> 958 <span 959 >ææ¯åæ²¿</span> 960 </div> 961 </div> 962 <div class="poster-footer"> 963 <div class="poster-qrcode" id="poster-qrcode"></div> 964 <div class="poster-site"> 965 <div class="poster-site-name">OpenClaw 俱ä¹é¨</div> 966 <div class="poster-site-tip">æ«ç é è¯»å ¨æ</div> 967 </div> 968 </div> 969 </div> 970 </div> 971 <div class="poster-actions"> 972 <button class="z-btn primary" id="poster-download"> 973 <span class="icon-[ph--download-bold]"></span> 974 <span>ä¿åæµ·æ¥</span> 975 </button> 976 </div> 977 </div> 978 </div> 979 980 <!-- æç« èæ¬ --> 981 982
982<script> 983 (function () { 984 const title = "\u5B57\u8282\u201C\u8C46\u5305\u5DE5\u4F5C\u201C\u6B63\u5F0F\u4EAE\u76F8\uFF1A\u529E\u516CAI\u4ECE\u201C\u5199\u4E1C\u897F\u201C\u5230\u201C\u5E72\u5B8C\u6D3B\u201C\u7684\u8303\u5F0F\u8DC3\u8FC1"; 985 const excerpt = "\u672C\u6587\u6DF1\u5EA6\u89E3\u8BFB\u5B57\u8282\u8DF3\u52A8\u6700\u65B0\u53D1\u5E03\u7684\u4F01\u4E1A\u7EA7 Agent \u4EA7\u54C1\"\u8C46\u5305\u5DE5\u4F5C\"\u3002\u6587\u7AE0\u4ECE\u4E00\u53E5\u8BDD\u7406\u89E3\u5207\u5165\uFF0C\u62C6\u89E3\u5176\u5185\u5BB9\u751F\u6210\u3001AI \u534F\u4F5C\u7F16\u8F91\u3001\u64CD\u4F5C\u7535\u8111\u4E0E\u6D4F\u89C8\u5668\u3001\u591A Agent \u534F\u4F5C\u3001\u6280\u80FD\u751F\u6001\u4E94\u5927\u6838\u5FC3\u80FD\u529B\uFF0C\u91CD\u70B9\u5206\u6790\u5176\u4E0E\u98DE\u4E66\u6DF1\u5EA6\u6253\u901A\u5F62\u6210\u7684\u7ADE\u4E89\u58C1\u5792\uFF0C\u5E76\u68B3\u7406\u5B89\u5168\u5408\u89C4\u4F53\u7CFB\u3001\u884C\u4E1A\u80CC\u666F\u4E0E\u7ADE\u54C1\u5BF9\u6BD4\u3002"; 986 const siteTitle = "OpenClaw \u4FF1\u4E50\u90E8"; 987 const getUrl = () => window.location.href; 988 const defaultPosterCover = "\/upload\/%E6%9C%AC%E5%9C%B0%20AI%20%E6%89%A7%E8%A1%8C%E5%BC%95%E6%93%8E%EF%BC%8C%E8%AE%A9%20AI%20%E7%9C%9F%E6%AD%A3%E5%B8%AE%E4%BD%A0%E5%B9%B2%E6%B4%BB%20(3).png"; 989 990 // æåå享 991 const shareBtn = document.getElementById("share-btn"); 992 if (shareBtn) { 993 shareBtn.addEventListener("click", async () => { 994 const url = getUrl(); 995 const shareText = `ã${siteTitle}ã${title}\n\n${excerpt ? excerpt + "\n\n" : ""}${url}`; 996 try { 997 await navigator.clipboard.writeText(shareText); 998 const icon = shareBtn.querySelector("span:first-child"); 999 const text = shareBtn.querySelector("span:last-child"); 1000 icon.className = "icon-[ph--check-bold]"; 1001 text.textContent = "å·²å¤å¶"; 1002 setTimeout(() => { 1003 icon.className = "icon-[ph--share-bold]"; 1004 text.textContent = "æåå享"; 1005 }, 2000); 1006 } catch (err) { 1007 console.error("å¤å¶å¤±è´¥:", err); 1008 } 1009 }); 1010 } 1011 1012 // æµ·æ¥å享 1013 const posterBtn = document.getElementById("poster-btn"); 1014 const posterModal = document.getElementById("poster-modal"); 1015 const posterClose = document.getElementById("poster-close"); 1016 const posterDownload = document.getElementById("poster-download"); 1017 const posterQrcode = document.getElementById("poster-qrcode"); 1018 const posterCard = document.getElementById("poster-card"); 1019 1020 // ç¼è¾æç« 1021 const editPostBtn = document.getElementById("edit-post-btn"); 1022 if (editPostBtn) { 1023 editPostBtn.addEventListener("click", () => { 1024 const editUrl = editPostBtn.dataset.url; 1025 if (editUrl) { 1026 window.location.href = editUrl; 1027 } 1028 }); 1029 } 1030 1031 if (posterBtn && posterModal) { 1032 let qrGenerated = false; 1033 1034 // æå¼å¼¹çª 1035 posterBtn.addEventListener("click", () => { 1036 posterModal.style.display = "flex"; 1037 document.body.style.overflow = "hidden"; 1038 1039 // çæäºç»´ç 1040 if (!qrGenerated && window.generateQRCode) { 1041 window.generateQRCode(posterQrcode, getUrl()); 1042 qrGenerated = true; 1043 } 1044 }); 1045 1046 // å ³éå¼¹çª 1047 const closeModal = () => { 1048 posterModal.style.display = "none"; 1049 document.body.style.overflow = ""; 1050 }; 1051 1052 posterClose.addEventListener("click", closeModal); 1053 posterModal.querySelector(".poster-modal-overlay").addEventListener("click", closeModal); 1054 1055 // ä¸è½½æµ·æ¥ 1056 posterDownload.addEventListener("click", async () => { 1057 const icon = posterDownload.querySelector("span:first-child"); 1058 const text = posterDownload.querySelector("span:last-child"); 1059 1060 icon.className = "icon-[ph--spinner] animate-spin"; 1061 text.textContent = "çæä¸..."; 1062 1063 try { 1064 if (window.generatePoster) { 1065 await window.generatePoster(posterCard, title, defaultPosterCover); 1066 icon.className = "icon-[ph--check-bold]"; 1067 text.textContent = "å·²ä¿å"; 1068 } 1069 } catch (err) { 1070 console.error("çæå¤±è´¥:", err); 1071 icon.className = "icon-[ph--warning-bold]"; 1072 text.textContent = "çæå¤±è´¥"; 1073 } 1074 1075 setTimeout(() => { 1076 icon.className = "icon-[ph--download-bold]"; 1077 text.textContent = "ä¿åæµ·æ¥"; 1078 }, 2000); 1079 }); 1080 } 1081 })(); 1082 </script>
1082 1083 1084 1085 1086 <footer class="z-footer"> 1087 <nav class="footer-nav"> 1088 <div 1089 class="footer-nav-group" 1090 > 1091 <h3>æ¢ç´¢</h3> 1092 <menu> 1093 1094 1095 <li> 1096 <a href="https://openclaw.ai/" target="_blank"> 1097 1098 <span class="nav-text">ð¦ OpenClaw å®ç½</span> 1099 </a> 1100 </li> 1101 <li> 1102 <a href="https://github.com/openclaw/openclaw" target="_blank"> 1103 1104 <img 1105 src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cpath%20fill%3D%22currentColor%22%20fill-rule%3D%22evenodd%22%20d%3D%22M7.976%200A7.977%207.977%200%200%200%200%207.976c0%203.522%202.3%206.507%205.431%207.584c.392.049.538-.196.538-.392v-1.37c-2.201.49-2.69-1.076-2.69-1.076c-.343-.93-.881-1.175-.881-1.175c-.734-.489.048-.489.048-.489c.783.049%201.224.832%201.224.832c.734%201.223%201.859.88%202.3.685c.048-.538.293-.88.489-1.076c-1.762-.196-3.621-.881-3.621-3.964c0-.88.293-1.566.832-2.153c-.05-.147-.343-.978.098-2.055c0%200%20.685-.196%202.201.832c.636-.196%201.322-.245%202.007-.245s1.37.098%202.006.245c1.517-1.027%202.202-.832%202.202-.832c.44%201.077.146%201.908.097%202.104a3.16%203.16%200%200%201%20.832%202.153c0%203.083-1.86%203.719-3.62%203.915c.293.244.538.733.538%201.467v2.202c0%20.196.146.44.538.392A7.98%207.98%200%200%200%2016%207.976C15.951%203.572%2012.38%200%207.976%200%22%20clip-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E" 1106 alt="" 1107 class="link-icon" 1108 /> 1109 1110 <span class="nav-text">GitHub å°å</span> 1111 </a> 1112 </li> 1113 <li> 1114 <a href="https://1panel.cn/" target="_blank"> 1115 1116 <img 1117 src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cg%20fill%3D%22none%22%3E%3Cpath%20stroke%3D%22%234A90E2%22%20stroke-linecap%3D%22round%22%20stroke-width%3D%222%22%20d%3D%22M8%208V6a2%202%200%200%201%202-2h4a2%202%200%200%201%202%202v2M4%2014l3.15.787a20%2020%200%200%200%209.7%200L20%2014%22%2F%3E%3Cpath%20stroke%3D%22%234A90E2%22%20stroke-linejoin%3D%22round%22%20stroke-width%3D%222%22%20d%3D%22M4%2010a2%202%200%200%201%202-2h12a2%202%200%200%201%202%202v8a2%202%200%200%201-2%202H6a2%202%200%200%201-2-2z%22%2F%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%221%22%20fill%3D%22%234A90E2%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E" 1118 alt="" 1119 class="link-icon" 1120 /> 1121 1122 <span class="nav-text">1Panel å®ç½</span> 1123 </a> 1124 </li> 1125 <li> 1126 <a href="https://space.bilibili.com/3691010037123684?spm_id_from=333.1387.0.0" target="_blank"> 1127 1128 <img 1129 src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%201000%201000%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22M196.031.063C88.252.063.062%2088.253.062%20196.032V804.22c0%20107.779%2088.19%20195.969%20195.969%20195.969h608.188c107.779%200%20195.969-88.19%20195.969-195.969V196.032c0-107.779-88.19-195.969-195.969-195.969zm112.188%20225.656H505.5c40.972%200%2072.094%201.499%2093.219%204.719c21.125%203.059%2040.968%209.616%2059.406%2019.594c19.953%2010.749%2034.941%2025.224%2044.813%2043.156c9.87%2018.038%2014.875%2038.771%2014.875%2062.344c0%2027.244-6.798%2051.461-20.5%2072.719c-13.57%2021.258-32.399%2036.89-56.344%2047v2.906c34.454%207.317%2062.087%2022.036%2082.813%2044.438c20.757%2022.428%2031.125%2052.618%2031.125%2090.531c0%2027.75-5.239%2052.227-15.75%2073.219c-10.507%2020.992-24.577%2038.29-42.375%2052.125c-20.992%2016.496-44.033%2028.137-69.281%2035.188c-25.089%207.024-56.959%2010.531-95.75%2010.531H308.22V225.72zM447.75%20328.094v118.188h17.656c23.945%200%2040.864-.246%2050.469-.75s19.601-3.077%2029.844-7.813c11.121-5.241%2018.953-12.518%2023.156-21.75c4.23-9.339%206.406-20.123%206.406-32.281c0-9.072-2.308-18.31-6.938-27.781c-4.603-9.472-11.754-16.395-21.625-20.625c-9.206-4.097-20.091-6.257-32.781-6.656c-12.664-.4-31.482-.531-56.438-.531zm0%202
112913.844v139.813h7.563c36.503%200%2061.715-.275%2075.656-.781c13.941-.504%2028.303-3.815%2042.75-10.094c12.824-5.507%2022.031-13.577%2027.938-24.219c5.88-10.616%208.813-22.658%208.813-36.094c0-17.294-3.418-30.731-10.469-40.469c-7.024-9.844-17.532-17.154-31.5-22.156c-8.461-3.326-20.248-5.128-35.094-5.5s-34.799-.5-59.781-.5z%22%2F%3E%3C%2Fsvg%3E" 1130 alt="" 1131 class="link-icon" 1132 /> 1133 1134 <span class="nav-text">Bilibili è§é¢</span> 1135 </a> 1136 </li> 1137 </menu> 1138 </div> 1139 1140 1141 1142 <div class="footer-nav-group"> 1143 <h3>ä¿¡æ¯</h3> 1144 <menu> 1145 <li> 1146 <a href="https://halo.run" target="_blank"> 1147 <span class="icon-[ph--cube-bold]"></span> 1148 <span class="nav-text">æ¶æäº Halo</span> 1149 </a> 1150 </li> 1151 <li> 1152 <a href="https://github.com/acanyo/theme-clarity" target="_blank"> 1153 <span class="icon-[ph--mountains-bold]"></span> 1154 <span class="nav-text">é©±å¨ Clarity 1.5.3</span> 1155 </a> 1156 </li> 1157 1158 1159 1160 </menu> 1161 </div> 1162 </nav> 1163 1164 <div class="footer-inject"> 1165 <meta name="sogou_site_verification" content="gZ3ZG62pkC" />
1166<script 1167async 1168defer 1169src="https://edu-maxkb2.fit2cloud.cn/chat/api/embed?protocol=https&host=edu-maxkb2.fit2cloud.cn&token=8317591bf1969954"> 1170</script>
1170 1171 1172 1173 </div> 1174 1175 <p>© <span>2026</span> <span>OpenClaw 俱ä¹é¨</span></p> 1176</footer> 1177 </main> 1178 1179 1180 <aside id="z-aside"> 1181 1182 <!-- ç®å½ç»ä»¶ --> 1183 <section 1184 class="widget toc-widget" 1185 id="catalog-widget" 1186 style="display: none" 1187> 1188 <hgroup class="widget-title"> 1189 <span class="title-text">æç« ç®å½</span> 1190 <a 1191 onclick="return false;" 1192 aria-label="ç¹èµæç« " 1193 x-data="postLike()" 1194 x-init="init()" 1195 @click="toggleLike()" 1196 :data-title="liked ? 'å·²ç¹èµ' : 'ç¹èµ'" 1197 :class="{ 'liked': liked }" 1198 data-count="0" 1199 data-name="e8f0d6fc-c6fc-48e5-bdc7-5c90511a3625" 1200 > 1201 <span class="icon-[ph--heart-bold]" x-show="!liked"></span> 1202 <span class="icon-[ph--heart-fill]" x-show="liked"></span> 1203 <span class="like-count" x-show="count > 0" x-text="count"></span> 1204 </a> 1205 <a 1206 href="#content" 1207 aria-label="è¿åé¡¶é¨" 1208 data-title="è¿åé¡¶é¨" 1209 onclick=" 1210 window.scrollTo({ top: 0, behavior: 'smooth' }); 1211 return false; 1212 " 1213 > 1214 <span class="icon-[ph--arrow-circle-up-bold]"></span> 1215 </a> 1216 <a 1217 href="#comment" 1218 aria-label="è¯è®ºåº" 1219 data-title="è¯è®ºåº" 1220 onclick=" 1221 document.getElementById('comment')?.scrollIntoView({ behavior: 'smooth' }); 1222 return false; 1223 " 1224 > 1225 <span class="icon-[ph--chat-circle-text-bold]"></span> 1226 </a> 1227 </hgroup> 1228 1229 <div class="widget-body widget-card toc-body"> 1230 <nav id="catalog-content" class="toc-nav"></nav> 1231 <p id="no-toc-tip" class="no-toc" style="display: none">ææ ç®å½ä¿¡æ¯</p> 1232 </div> 1233 1234
1234<script> 1235 (function () { 1236 function generateCatalog() { 1237 const article = document.querySelector(".article") || document.getElementById("article-content"); 1238 const catalogWidget = document.getElementById("catalog-widget"); 1239 const catalogContent = document.getElementById("catalog-content"); 1240 const noTocTip = document.getElementById("no-toc-tip"); 1241 1242 if (!article || !catalogWidget || !catalogContent) return; 1243 1244 const headers = Array.from(article.querySelectorAll("h1, h2, h3, h4, h5, h6")); 1245 if (headers.length === 0) { 1246 catalogWidget.style.display = "block"; 1247 catalogContent.style.display = "none"; 1248 noTocTip.style.display = "block"; 1249 return; 1250 } 1251 1252 catalogWidget.style.display = "block"; 1253 catalogContent.style.display = "block"; 1254 noTocTip.style.display = "none"; 1255 catalogContent.innerHTML = ""; 1256 1257 const root = { children: [] }; 1258 const stack = [root]; 1259 1260 headers.forEach((header, index) => { 1261 if (!header.id) header.id = "heading-" + index; 1262 1263 const level = parseInt(header.tagName.substring(1)); 1264 const item = { 1265 id: header.id, 1266 text: header.textContent, 1267 level: level, 1268 children: [], 1269 }; 1270 1271 while (stack.length > 1 && stack[stack.length - 1].level >= level) { 1272 stack.pop(); 1273 } 1274 1275 stack[stack.length - 1].children.push(item); 1276 stack.push(item); 1277 }); 1278 1279 function renderTree(items) { 1280 if (!items.length) return null; 1281 const ol = document.createElement("ol"); 1282 items.forEach((item) => { 1283 const li = document.createElement("li"); 1284 li.dataset.id = item.id; 1285 li.dataset.level = String(item.level || 1); 1286 1287 const hasChildren = item.children && item.children.length > 0; 1288 if (hasChildren) { 1289 li.classList.add("toc-collapsed"); 1290 } 1291 1292 const wrapper = document.createElement("div"); 1293 wrapper.className = "toc-item-wrapper"; 1294 1295 const a = document.createElement("a"); 1296 a.href = "#" + item.id; 1297 a.textContent = item.text; 1298 a.title = item.text; 1299 a.onclick = (e) => { 1300 e.preventDefault(); 1301 const target = document.getElementById(item.id); 1302 if (target) { 1303 target.scrollIntoView({ behavior: "smooth" }); 1304 history.pushState(null, null, "#" + item.id); 1305 target.classList.remove("toc-highlight"); 1306 void target.offsetWidth; 1307 target.classList.add("toc-highlight"); 1308 setTimeout(() => target.classList.remove("toc-highlight"), 2000);
1309 setActiveById(item.id); 1310 } 1311 }; 1312 1313 wrapper.appendChild(a); 1314 1315 if (hasChildren) { 1316 const toggle = document.createElement("span"); 1317 toggle.className = "toc-toggle"; 1318 toggle.innerHTML = '<span class="icon-[ph--caret-right-bold]"></span>'; 1319 toggle.onclick = (e) => { 1320 e.preventDefault(); 1321 e.stopPropagation(); 1322 toggleCollapse(li); 1323 }; 1324 wrapper.appendChild(toggle); 1325 } 1326 li.appendChild(wrapper); 1327 1328 const childrenOl = renderTree(item.children); 1329 if (childrenOl) { 1330 childrenOl.className = "toc-children"; 1331 li.appendChild(childrenOl); 1332 } 1333 ol.appendChild(li); 1334 }); 1335 return ol; 1336 } 1337 1338 function toggleCollapse(li) { 1339 if (li.classList.contains("toc-collapsed")) { 1340 li.classList.remove("toc-collapsed"); 1341 li.classList.add("toc-expanded"); 1342 } else { 1343 li.classList.remove("toc-expanded"); 1344 li.classList.add("toc-collapsed"); 1345 } 1346 } 1347 1348 function expandLi(li) { 1349 li.classList.remove("toc-collapsed"); 1350 li.classList.add("toc-expanded"); 1351 } 1352 1353 function collapseLi(li) { 1354 li.classList.remove("toc-expanded"); 1355 li.classList.add("toc-collapsed"); 1356 } 1357 1358 function getAllParentLis(currentLi) { 1359 const parents = []; 1360 let parent = currentLi.parentElement?.closest("li"); 1361 while (parent) { 1362 parents.push(parent); 1363 parent = parent.parentElement?.closest("li"); 1364 } 1365 return parents; 1366 } 1367 1368 function getVisibleHeaderRange() { 1369 const viewportTop = window.scrollY + 80; 1370 const viewportBottom = window.scrollY + window.innerHeight - 80; 1371 1372 let firstVisibleId = null; 1373 let lastVisibleId = null; 1374 1375 for (let i = 0; i < headers.length; i++) { 1376 const header = headers[i]; 1377 const top = header.offsetTop; 1378 const bottom = top + header.offsetHeight; 1379 1380 if (top <= viewportBottom && bottom >= viewportTop) { 1381 if (firstVisibleId === null) { 1382 firstVisibleId = header.id; 1383 } 1384 lastVisibleId = header.id; 1385 } 1386 } 1387 1388 return { firstVisibleId, lastVisibleId }; 1389 } 1390 1391 function autoCollapseByViewport() { 1392 let { firstVisibleId, lastVisibleId } = getVisibleHeaderRange(); 1393 1394 if (firstVisibleId === null || lastVisibleId === null) { 1395 const currentId = resolveCurrentHeadingId(); 1396 firstVisibleId = currentId; 1397 lastVisibleId = currentId; 1398 } 1399 1400 const firstLi = tocItemMap.get(firstVisibleId); 1401 const lastLi = tocItemMap.get(lastVisibleId); 1402 1403 const allParentIds = new Set(); 1404 1405 if (firstLi) { 1406 allParentIds.add(firstLi.dataset.id); 1407 getAllParentLis(firstLi).forEach((li) => { 1408 if (li.dataset.id) allParentIds.add(li.dataset.id); 1409 }); 1410 } 1411 1412 if (lastLi && lastLi !== firstLi) { 1413 allParentIds.add(lastLi.dataset.id); 1414 getAllParentLis(lastLi).forEach((li) => { 1415 if (li.dataset.id) allParentIds.add(li.dataset.id); 1416 }); 1417 } 1418 1419 catalogContent.querySelectorAll("li.toc-expanded").forEach((li) => { 1420 const id = li.dataset.id; 1421 if (!allParentIds.has(id)) { 1422 const hasVisibleChildren = hasVisibleChildrenInViewport(li); 1423 if (!hasVisibleChildren) { 1424 collapseLi(li); 1425 } 1426 } 1427 }); 1428 1429 allParentIds.forEach((id) => { 1430 const li = tocItemMap.get(id); 1431 if (li && !li.classList.contains("toc-expanded")) { 1432 expandLi(li); 1433 } 1434 }); 1435 } 1436 1437 function hasVisibleChildrenInViewport(parentLi) { 1438 const children = parentLi.querySelectorAll(":scope > .toc-children > ol > li"); 1439 if (children.length === 0) return false; 1440 1441 const viewportTop = window.scrollY + 80; 1442 const viewportBottom = window.scrollY + window.innerHeight - 80; 1443 1444 for (const child of children) { 1445 const childId = child.dataset.id; 1446 const header = document.getElementById(childId); 1447 if (header) { 1448 const top = header.offsetTop; 1449 const bottom = top + header.offsetHeight; 1450 if (top <= viewportBottom && bottom >= viewportTop) { 1451 return true; 1452 } 1453 } 1454 } 1455 1456 return false;
1457 } 1458 1459 const treeDom = renderTree(root.children); 1460 if (treeDom) catalogContent.appendChild(treeDom); 1461 1462 const tocItemMap = new Map(); 1463 catalogContent.querySelectorAll("li[data-id]").forEach((li) => { 1464 tocItemMap.set(li.dataset.id, li); 1465 }); 1466 1467 function ensureActiveVisible(currentLi) { 1468 if (!currentLi) return; 1469 const viewTop = catalogContent.scrollTop; 1470 const viewBottom = viewTop + catalogContent.clientHeight; 1471 const itemTop = currentLi.offsetTop; 1472 const itemBottom = itemTop + currentLi.offsetHeight; 1473 const padding = 24; 1474 1475 if (itemTop < viewTop + padding || itemBottom > viewBottom - padding) { 1476 const targetTop = Math.max(0, itemTop - catalogContent.clientHeight * 0.35); 1477 const distance = Math.abs(targetTop - catalogContent.scrollTop); 1478 catalogContent.scrollTo({ 1479 top: targetTop, 1480 behavior: distance > 80 ? "smooth" : "auto", 1481 }); 1482 } 1483 } 1484 1485 function setActiveById(id) { 1486 if (!id) return; 1487 1488 catalogContent.querySelectorAll("li.active, li.has-active").forEach((el) => { 1489 el.classList.remove("active", "has-active"); 1490 }); 1491 1492 const currentLi = tocItemMap.get(id); 1493 if (!currentLi) return; 1494 1495 currentLi.classList.add("active"); 1496 let parent = currentLi.parentElement?.closest("li"); 1497 while (parent) { 1498 parent.classList.add("has-active"); 1499 expandLi(parent); 1500 parent = parent.parentElement?.closest("li"); 1501 } 1502 1503 ensureActiveVisible(currentLi); 1504 } 1505 1506 function resolveCurrentHeadingId() { 1507 const marker = window.scrollY + 140; 1508 let currentId = headers[0].id; 1509 1510 for (let i = 0; i < headers.length; i++) { 1511 if (headers[i].offsetTop <= marker) { 1512 currentId = headers[i].id; 1513 } else { 1514 break; 1515 } 1516 } 1517 return currentId; 1518 } 1519 1520 function syncActiveByScroll() { 1521 setActiveById(resolveCurrentHeadingId()); 1522 } 1523 1524 let rafId = 0; 1525 let lastViewportRange = null; 1526 1527 const onScroll = () => { 1528 if (rafId) return; 1529 rafId = window.requestAnimationFrame(() => { 1530 rafId = 0; 1531 syncActiveByScroll(); 1532 autoCollapseByViewport(); 1533 }); 1534 }; 1535 1536 window.addEventListener("scroll", onScroll, { passive: true }); 1537 window.addEventListener("resize", onScroll); 1538 syncActiveByScroll(); 1539 } 1540 1541 generateCatalog(); 1542 })(); 1543</script>
1543 1544</section> 1545 1546 1547 <!-- ä¾§è¾¹æ ç»ä»¶ --> 1548 1549</aside> 1550 1551 1552 </div> 1553 1554 <div id="z-panel"> 1555 <button 1556 id="toggle-sidebar" 1557 aria-label="忢èå" 1558 onclick=" 1559 (function (btn) { 1560 var sb = document.getElementById('z-sidebar'), 1561 mk = document.getElementById('z-sidebar-bgmask'); 1562 sb.classList.toggle('show'); 1563 mk.classList.toggle('hidden'); 1564 btn.classList.toggle('active'); 1565 })(this) 1566 " 1567 > 1568 <span class="icon-[ph--sidebar-duotone] rtl-flip" style="display: block"></span> 1569 </button> 1570 <button 1571 id="toggle-aside" 1572 aria-label="åæ¢ä¾§è¾¹æ " 1573 onclick=" 1574 (function (btn) { 1575 var as = document.getElementById('z-aside'), 1576 mk = document.getElementById('z-aside-bgmask'); 1577 as.classList.toggle('show'); 1578 mk.classList.toggle('hidden'); 1579 btn.classList.toggle('active'); 1580 })(this) 1581 " 1582 > 1583 <span class="icon-[ph--align-right-duotone] rtl-flip" style="display: block"></span> 1584 </button> 1585 1586 1587 <button id="back-to-top" aria-label="è¿åé¡¶é¨" style="display: none"> 1588 <span class="icon-[ph--arrow-up-bold]" style="display: block"></span> 1589 </button> 1590 </div> 1591 1592 <button id="pc-back-to-top" class="pc-back-to-top" onclick="window.scrollTo({ top: 0, behavior: 'smooth' })"> 1593 <svg class="svgIcon" viewBox="0 0 384 512"> 1594 <path 1595 d="M214.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 141.2V448c0 17.7 14.3 32 32 32s32-14.3 32-32V141.2L329.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z" 1596 ></path> 1597 </svg> 1598 </button> 1599 1600 1601 1602 1603 1604 1605
1605<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4bc70e2c01a94c73b74392e4234840661791215815920" integrity="sha512-L0ha0OXavK/8okipN9F8BtP84dg9DUhPERbBXzwI6dgTA55d2+yweo3pn5CSFYs45/r8md2+xvUPtTdvTNRfjA==" data-cf-beacon='{"version":"2024.11.0","token":"a092d8e40f0a476f9abd5e996f61369f","r":1,"spa":2}' crossorigin="anonymous"></script>
1605 1606</body> 1607</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.