<!doctype html>
<html lang="zh-Hant" class="lenis"><head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- The old Lovable host still serves a copy of the site; send people and crawlers to the canonical
         domain, same path. Exact host only: Lovable editor previews and the /~oauth server redirects are untouched. -->
    <script data-keep="">if(location.hostname==="sunnedatascience.lovable.app"){location.replace("https://sunnydatascience.com"+location.pathname+location.search+location.hash)}</script>
    <!-- Content Security Policy -->
    <meta http-equiv="Content-Security-Policy" content="default-src 'self';
               script-src 'self' 'unsafe-inline' https://*.googletagmanager.com https://tagmanager.google.com https://connect.facebook.net https://*.clarity.ms https://assets.calendly.com;
               style-src 'self' 'unsafe-inline' https://fonts.googleapis.com https://tagmanager.google.com https://assets.calendly.com;
               font-src 'self' https://fonts.gstatic.com;
               img-src 'self' data: https:;
               connect-src 'self' https://*.supabase.co wss://*.supabase.co https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com https://*.g.doubleclick.net https://*.google.com https://*.google.com.tw https://connect.facebook.net https://www.facebook.com https://*.clarity.ms https://calendly.com;
               frame-src https://calendly.com https://www.googletagmanager.com https://tagassistant.google.com https://www.youtube.com https://www.youtube-nocookie.com https://player.vimeo.com https://iframe.mediadelivery.net;
               frame-ancestors 'none';
               base-uri 'self';
               form-action 'self';">
    <!-- Google Tag Manager (loads GA4 + Meta Pixel; keep data-keep so prerender does not strip it) -->
    <script data-keep="">(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
    new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
    j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
    'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
    })(window,document,'script','dataLayer','GTM-KPVSWW9D');</script>
    <!-- End Google Tag Manager -->
    <script>window.prerenderReady = false;</script>
    <title>Sunny Data Science 桑尼資料科學｜AI 工程與資料科學課程、企業 AI 內訓</title>
    
    <meta name="author" content="Sunny 桑尼">
    <meta name="robots" content="index, follow">
    
    
    

    <!-- Open Graph -->
    
    
    
    
    
    
    
    
    

    <!-- Twitter Card -->
    
    
    
    

    <!-- JSON-LD Structured Data: site-wide entities only (no WebPage here; it would be copied into every
         prerendered page). Keep in sync with BRAND_* in src/lib/schema-org.ts. -->
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@graph": [
        {
          "@type": "Organization",
          "@id": "https://sunnydatascience.com/#organization",
          "name": "Sunny Data Science",
          "alternateName": ["桑尼資料科學", "Sunny 資料科學", "Sunny DataScience"],
          "legalName": "傳恩私塾股份有限公司",
          "url": "https://sunnydatascience.com",
          "logo": { "@type": "ImageObject", "url": "https://sunnydatascience.com/og-image.png", "width": 1200, "height": 630 },
          "description": "Sunny Data Science（桑尼資料科學）由 Sunny 經營，提供 AI 工程、資料科學與 AI 工作流的文章、線上課程、線下實戰營與企業內訓。",
          "founder": { "@id": "https://sunnydatascience.com/about#sunny" },
          "sameAs": [
            "https://www.instagram.com/datasunnie/",
            "https://www.threads.net/@datasunnie",
            "https://www.facebook.com/share/18GVXbXUFE/"
          ]
        },
        {
          "@type": "WebSite",
          "@id": "https://sunnydatascience.com/#website",
          "url": "https://sunnydatascience.com",
          "name": "Sunny Data Science",
          "alternateName": "桑尼資料科學",
          "publisher": { "@id": "https://sunnydatascience.com/#organization" },
          "inLanguage": "zh-Hant"
        }
      ]
    }
    </script>

    <!-- Favicon -->
    <link rel="icon" href="/favicon.png" type="image/png">

    <!-- Preconnect to Google Fonts for faster loading -->
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="">
    <!-- Preconnect to Supabase for faster API calls -->
    <link rel="preconnect" href="https://ptdupjlpnsiiyukbgesl.supabase.co">
    <link rel="dns-prefetch" href="https://ptdupjlpnsiiyukbgesl.supabase.co">
    <!-- Preload critical font files for faster FCP -->
        <link rel="preload" href="https://fonts.gstatic.com/s/notosanstc/v36/-nFlOG829Oofr2wohFbTp9i9kwMvDQ.woff2" as="font" type="font/woff2" crossorigin="">
    <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&amp;family=Noto+Serif+TC:wght@500;600&amp;family=Noto+Sans+TC:wght@400;500;700&amp;family=IBM+Plex+Mono:wght@400;500&amp;display=swap" media="print" onload="this.media='all'">
    <noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=Noto+Serif+TC:wght@500;600&family=Noto+Sans+TC:wght@400;500;700&family=IBM+Plex+Mono:wght@400;500&display=swap" /></noscript>
    <!-- Inline critical styles for immediate first paint -->
    <style>
      :root{--background:40 35% 93%;--foreground:206 47% 12%;--primary:206 47% 12%;--gradient-hero:linear-gradient(160deg,#071722 0%,#102a3a 100%)}
      *,::before,::after{box-sizing:border-box;border-width:0;border-style:solid}
      body{margin:0;font-family:Inter,'Noto Sans TC',system-ui,sans-serif;-webkit-font-smoothing:antialiased;background-color:hsl(var(--background));color:hsl(var(--foreground))}
      #root{min-height:100vh;display:flex;flex-direction:column}
      .container{width:100%;margin-left:auto;margin-right:auto;padding-left:20px;padding-right:20px}
      @media(min-width:1376px){.container{max-width:1376px}}
      #site-header{position:sticky;top:0;z-index:50}
    </style>
    <script type="module" crossorigin="" src="/assets/index-C6zqxsly.js"></script>
    <link rel="modulepreload" crossorigin="" href="/assets/vendor-helmet-C3k_8RUa.js">
    <link rel="modulepreload" crossorigin="" href="/assets/vendor-supabase-DnYeCrHm.js">
    <link rel="modulepreload" crossorigin="" href="/assets/vendor-radix-core-hze9jkRl.js">
    <link rel="modulepreload" crossorigin="" href="/assets/vendor-utils--BulIq_u.js">
    <link rel="modulepreload" crossorigin="" href="/assets/vendor-query-CkWExa8E.js">
    <link rel="modulepreload" crossorigin="" href="/assets/vendor-react-C3M65P51.js">
    <link rel="modulepreload" crossorigin="" href="/assets/vendor-motion-DIW5MBCO.js">
    <link rel="stylesheet" crossorigin="" href="/assets/index-CML4_kDk.css">
  <style type="text/css">:where(html[dir="ltr"]),:where([data-sonner-toaster][dir="ltr"]){--toast-icon-margin-start: -3px;--toast-icon-margin-end: 4px;--toast-svg-margin-start: -1px;--toast-svg-margin-end: 0px;--toast-button-margin-start: auto;--toast-button-margin-end: 0;--toast-close-button-start: 0;--toast-close-button-end: unset;--toast-close-button-transform: translate(-35%, -35%)}:where(html[dir="rtl"]),:where([data-sonner-toaster][dir="rtl"]){--toast-icon-margin-start: 4px;--toast-icon-margin-end: -3px;--toast-svg-margin-start: 0px;--toast-svg-margin-end: -1px;--toast-button-margin-start: 0;--toast-button-margin-end: auto;--toast-close-button-start: unset;--toast-close-button-end: 0;--toast-close-button-transform: translate(35%, -35%)}:where([data-sonner-toaster]){position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1: hsl(0, 0%, 99%);--gray2: hsl(0, 0%, 97.3%);--gray3: hsl(0, 0%, 95.1%);--gray4: hsl(0, 0%, 93%);--gray5: hsl(0, 0%, 90.9%);--gray6: hsl(0, 0%, 88.7%);--gray7: hsl(0, 0%, 85.8%);--gray8: hsl(0, 0%, 78%);--gray9: hsl(0, 0%, 56.1%);--gray10: hsl(0, 0%, 52.3%);--gray11: hsl(0, 0%, 43.5%);--gray12: hsl(0, 0%, 9%);--border-radius: 8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:none;z-index:999999999;transition:transform .4s ease}:where([data-sonner-toaster][data-lifted="true"]){transform:translateY(-10px)}@media (hover: none) and (pointer: coarse){:where([data-sonner-toaster][data-lifted="true"]){transform:none}}:where([data-sonner-toaster][data-x-position="right"]){right:var(--offset-right)}:where([data-sonner-toaster][data-x-position="left"]){left:var(--offset-left)}:where([data-sonner-toaster][data-x-position="center"]){left:50%;transform:translate(-50%)}:where([data-sonner-toaster][data-y-position="top"]){top:var(--offset-top)}:where([data-sonner-toaster][data-y-position="bottom"]){bottom:var(--offset-bottom)}:where([data-sonner-toast]){--y: translateY(100%);--lift-amount: calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);filter:blur(0);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:none;overflow-wrap:anywhere}:where([data-sonner-toast][data-styled="true"]){padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px #0000001a;width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}:where([data-sonner-toast]:focus-visible){box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast][data-y-position="top"]){top:0;--y: translateY(-100%);--lift: 1;--lift-amount: calc(1 * var(--gap))}:where([data-sonner-toast][data-y-position="bottom"]){bottom:0;--y: translateY(100%);--lift: -1;--lift-amount: calc(var(--lift) * var(--gap))}:where([data-sonner-toast]) :where([data-description]){font-weight:400;line-height:1.4;color:inherit}:where([data-sonner-toast]) :where([data-title]){font-weight:500;line-height:1.5;color:inherit}:where([data-sonner-toast]) :where([data-icon]){display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}:where([data-sonner-toast][data-promise="true"]) :where([data-icon])>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}:where([data-sonner-toast]) :where([data-icon])>*{flex-shrink:0}:where([data-sonner-toast]) :where([data-icon]) svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}:where([data-sonner-toast]) :where([data-content]){display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;cursor:pointer;outline:none;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}:where([data-sonner-toast]) :where([data-button]):focus-visible{box-shadow:0 0 0 2px #0006}:where([data-sonner-toast]) :where([data-button]):first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}:where([data-sonner-toast]) :where([data-cancel]){color:var(--normal-text);background:rgba(0,0,0,.08)}:where([data-sonner-toast][data-theme="dark"]) :where([data-cancel]){background:rgba(255,255,255,.3)}:where([data-sonner-toast]) :where([data-close-button]){position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast] [data-close-button]{background:var(--gray1)}:where([data-sonner-toast]) :where([data-close-button]):focus-visible{box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast]) :where([data-disabled="true"]){cursor:not-allowed}:where([data-sonner-toast]):hover :where([data-close-button]):hover{background:var(--gray2);border-color:var(--gray5)}:where([data-sonner-toast][data-swiping="true"]):before{content:"";position:absolute;left:-50%;right:-50%;height:100%;z-index:-1}:where([data-sonner-toast][data-y-position="top"][data-swiping="true"]):before{bottom:50%;transform:scaleY(3) translateY(50%)}:where([data-sonner-toast][data-y-position="bottom"][data-swiping="true"]):before{top:50%;transform:scaleY(3) translateY(-50%)}:where([data-sonner-toast][data-swiping="false"][data-removed="true"]):before{content:"";position:absolute;inset:0;transform:scaleY(2)}:where([data-sonner-toast]):after{content:"";position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}:where([data-sonner-toast][data-mounted="true"]){--y: translateY(0);opacity:1}:where([data-sonner-toast][data-expanded="false"][data-front="false"]){--scale: var(--toasts-before) * .05 + 1;--y: translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}:where([data-sonner-toast])>*{transition:opacity .4s}:where([data-sonner-toast][data-expanded="false"][data-front="false"][data-styled="true"])>*{opacity:0}:where([data-sonner-toast][data-visible="false"]){opacity:0;pointer-events:none}:where([data-sonner-toast][data-mounted="true"][data-expanded="true"]){--y: translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}:where([data-sonner-toast][data-removed="true"][data-front="true"][data-swipe-out="false"]){--y: translateY(calc(var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed="true"][data-front="false"][data-swipe-out="false"][data-expanded="true"]){--y: translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed="true"][data-front="false"][data-swipe-out="false"][data-expanded="false"]){--y: translateY(40%);opacity:0;transition:transform .5s,opacity .2s}:where([data-sonner-toast][data-removed="true"][data-front="false"]):before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y, 0px)) translate(var(--swipe-amount-x, 0px));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width: 600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-theme=light]{--normal-bg: #fff;--normal-border: var(--gray4);--normal-text: var(--gray12);--success-bg: hsl(143, 85%, 96%);--success-border: hsl(145, 92%, 91%);--success-text: hsl(140, 100%, 27%);--info-bg: hsl(208, 100%, 97%);--info-border: hsl(221, 91%, 91%);--info-text: hsl(210, 92%, 45%);--warning-bg: hsl(49, 100%, 97%);--warning-border: hsl(49, 91%, 91%);--warning-text: hsl(31, 92%, 45%);--error-bg: hsl(359, 100%, 97%);--error-border: hsl(359, 100%, 94%);--error-text: hsl(360, 100%, 45%)}[data-sonner-toaster][data-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg: #000;--normal-border: hsl(0, 0%, 20%);--normal-text: var(--gray1)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg: #fff;--normal-border: var(--gray3);--normal-text: var(--gray12)}[data-sonner-toaster][data-theme=dark]{--normal-bg: #000;--normal-bg-hover: hsl(0, 0%, 12%);--normal-border: hsl(0, 0%, 20%);--normal-border-hover: hsl(0, 0%, 25%);--normal-text: var(--gray1);--success-bg: hsl(150, 100%, 6%);--success-border: hsl(147, 100%, 12%);--success-text: hsl(150, 86%, 65%);--info-bg: hsl(215, 100%, 6%);--info-border: hsl(223, 100%, 12%);--info-text: hsl(216, 87%, 65%);--warning-bg: hsl(64, 100%, 6%);--warning-border: hsl(60, 100%, 12%);--warning-text: hsl(46, 87%, 65%);--error-bg: hsl(358, 76%, 10%);--error-border: hsl(357, 89%, 16%);--error-text: hsl(358, 100%, 81%)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success],[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info],[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning],[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error],[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size: 16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:nth-child(1){animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}to{opacity:.15}}@media (prefers-reduced-motion){[data-sonner-toast],[data-sonner-toast]>*,.sonner-loading-bar{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}
</style><link rel="modulepreload" as="script" crossorigin="" href="/assets/SupportWidget-C6KEX76z.js"><link rel="modulepreload" as="script" crossorigin="" href="/assets/input-BN8grsLf.js"><link rel="modulepreload" as="script" crossorigin="" href="/assets/textarea-B8JStQhL.js"><link rel="modulepreload" as="script" crossorigin="" href="/assets/arrow-left-UaEQcn7Z.js"><link rel="modulepreload" as="script" crossorigin="" href="/assets/message-circle-8J83oUcm.js"><link rel="modulepreload" as="script" crossorigin="" href="/assets/calendar-check-D5rP2V3H.js"><link rel="canonical" href="https://sunnydatascience.com/" data-rh="true"><meta name="google-site-verification" content="-Yyv3Pl1iSa2oESwudWXUXs_g4PUPuCQEcA4fFBx-jQ" data-rh="true"><meta name="description" content="Sunny Data Science（桑尼資料科學）由 Sunny 經營，提供 AI 工程、資料科學與 AI 工作流的文章、線上課程、線下實戰營與企業內訓。" data-rh="true"><meta property="og:title" content="Sunny Data Science 桑尼資料科學｜AI 工程與資料科學課程、企業 AI 內訓" data-rh="true"><meta property="og:description" content="Sunny Data Science（桑尼資料科學）由 Sunny 經營，提供 AI 工程、資料科學與 AI 工作流的文章、線上課程、線下實戰營與企業內訓。" data-rh="true"><meta property="og:url" content="https://sunnydatascience.com/" data-rh="true"><meta property="og:type" content="website" data-rh="true"><meta property="og:site_name" content="Sunny Data Science" data-rh="true"><meta property="og:locale" content="zh_TW" data-rh="true"><meta property="og:image" content="https://sunnydatascience.com/og-image.png" data-rh="true"><meta property="og:image:width" content="1200" data-rh="true"><meta property="og:image:height" content="630" data-rh="true"><meta name="twitter:card" content="summary_large_image" data-rh="true"><meta name="twitter:title" content="Sunny Data Science 桑尼資料科學｜AI 工程與資料科學課程、企業 AI 內訓" data-rh="true"><meta name="twitter:description" content="Sunny Data Science（桑尼資料科學）由 Sunny 經營，提供 AI 工程、資料科學與 AI 工作流的文章、線上課程、線下實戰營與企業內訓。" data-rh="true"><meta name="twitter:image" content="https://sunnydatascience.com/og-image.png" data-rh="true"><link rel="modulepreload" as="script" crossorigin="" href="/assets/scroll-DA5eEbBF.js"></head>
  <body>
    <!-- Google Tag Manager (noscript) -->
    <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-KPVSWW9D"
    height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
    <!-- End Google Tag Manager (noscript) -->
    <div id="root"><div><div role="region" aria-label="Notifications (F8)" tabindex="-1" style="pointer-events: none;"><ol tabindex="-1" class="fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]"></ol></div></div><section aria-label="Notifications alt+T" tabindex="-1" aria-live="polite" aria-relevant="additions text" aria-atomic="false"></section><div class="flex min-h-screen flex-col"><a href="#main-content" class="sr-only focus:not-sr-only focus:absolute focus:z-[100] focus:bg-primary focus:px-4 focus:py-2 focus:text-primary-foreground">跳至主要內容</a><div class="scroll-progress" style="transform: scaleX(0);"></div><header id="site-header" class="sticky top-0 z-50 w-full border-b transition-[background-color,border-color] duration-200 border-sds-line bg-sds-paper-soft"><nav class="container flex h-[60px] items-center gap-7 lg:h-[72px]" aria-label="主選單"><a class="mr-auto flex shrink-0 items-center gap-2.5" aria-label="Sunny Data Science 首頁" href="/"><img src="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20199%20200'%20width='199'%20height='200'%3e%3cpath%20d='M68.512,199.25c-0.037,0%20-0.075,0%20-0.112,0l-11.021,0c-0.145,0%20-0.289,-0.001%20-0.434,-0.004l-20.831,-0.417c-11.806,-0.236%20-21.253,-9.878%20-21.253,-21.691c0,0%20-1.938,-12.306%205.815,-20.565c7.778,-8.286%20-20.03,-1.25%20-20.676,-38.525c11.418,-0.105%2035.126,2.57%2035.052,26.502c-0.017,5.492%20-0,32.588%20-0,32.588c-0,0.814%200.651,1.479%201.465,1.496l20.831,0.417l0.03,0l8.278,0c11.662,-7.239%2018.069,-15.46%2020.45,-23.793c3.461,-12.115%20-1.768,-23.875%20-9.029,-30.281c-11.232,-9.908%20-36.424,-33.087%20-50.419,-46.003c-8.342,-7.68%20-13.089,-18.504%20-13.089,-29.845l-0.001,-24.404c0,-6.558%202.604,-12.847%207.239,-17.483c4.635,-4.637%2010.921,-7.242%2017.476,-7.242l75.228,0c22.546,-0%2044.169,8.96%2060.111,24.909c15.943,15.949%2024.899,37.581%2024.899,60.136l-0,29.16c-0,46.969%20-38.06,85.045%20-85.01,85.045l-45,-0Zm27.536,-20.2l17.465,0c35.798,-0%2064.819,-29.032%2064.819,-64.845l0,-29.16c-0,-17.198%20-6.829,-33.692%20-18.985,-45.853c-12.156,-12.161%20-28.643,-18.993%20-45.834,-18.993l-75.228,-0c-1.2,0%20-2.35,0.477%20-3.199,1.326c-0.848,0.849%20-1.325,2%20-1.325,3.2l0.001,24.402c-0,5.693%202.383,11.127%206.57,14.982l0.009,0.008c13.911,12.838%2038.934,35.865%2050.091,45.707c12.218,10.778%2020.912,30.597%2015.089,50.982c-1.733,6.065%20-4.757,12.251%20-9.473,18.243Z'%20fill='%232f5753'%20stroke='%232f5753'%20stroke-width='6'%20stroke-linejoin='round'%20stroke-linecap='round'/%3e%3cpath%20d='M34.097,75.044c0.208,8.559%208.665,18.55%208.665,18.55c0,0%20-16.755,-15.051%20-19.246,-17.39c-6.347,-5.954%20-9.947,-14.27%20-9.947,-22.973l-0,-28.505c0,-6.558%202.604,-12.847%207.239,-17.483c4.635,-4.637%2010.921,-7.242%2017.476,-7.242l75.228,0c22.546,-0%2044.169,8.96%2060.111,24.909c15.943,15.949%2024.899,37.581%2024.899,60.136l-0,29.16c-0,46.969%20-38.06,85.045%20-85.01,85.045l-56.133,-0c-0.145,0%20-0.289,-0.001%20-0.434,-0.004l-20.831,-0.417c-11.806,-0.236%20-21.253,-9.878%20-21.253,-21.691c0,0%20-0.711,-6.282%200.646,-10.789c2.979,12.095%2020.197,12.268%2021.011,12.285l20.831,0.417l0.03,0l56.133,0c35.798,-0%2064.819,-29.032%2064.819,-64.845l0,-29.16c-0,-17.198%20-6.829,-33.692%20-18.985,-45.853c-12.156,-12.161%20-28.643,-18.993%20-45.834,-18.993l-75.228,0c-1.2,0%20-2.35,0.477%20-3.199,1.326c-0.848,0.849%20-1.325,2%20-1.325,3.2l0,25.919c0,2.475%200.218,19.498%200.337,24.399Z'%20fill='%235f8f8b'%20stroke='%235f8f8b'%20stroke-width='6'%20stroke-linejoin='round'%20stroke-linecap='round'/%3e%3ccircle%20cx='82.071'%20cy='53.597'%20r='24'%20fill='%23d9d0c5'/%3e%3ccircle%20cx='82.071'%20cy='53.597'%20r='19'%20fill='%23b0756a'/%3e%3c/svg%3e" alt="" class="h-8 w-8 object-contain" width="36" height="36"><span class="font-serif text-[17px] font-semibold tracking-[-0.01em] text-sds-ink">Sunny Data Science</span></a><ul class="hidden items-center gap-7 lg:flex"><li><a class="text-[14px] transition-colors hover:text-sds-ink text-sds-graphite" href="/learn">Writing</a></li><li><a class="text-[14px] transition-colors hover:text-sds-ink text-sds-graphite" href="/ai-builder/projects">Projects</a></li><li><a class="text-[14px] transition-colors hover:text-sds-ink text-sds-graphite" href="/ai-builder/online">Courses</a></li><li><a class="text-[14px] transition-colors hover:text-sds-ink text-sds-graphite" href="/enterprise">For Teams</a></li><li><a class="text-[14px] transition-colors hover:text-sds-ink text-sds-graphite" href="/about">About</a></li></ul><div class="flex items-center gap-2"><button aria-label="搜尋" class="flex h-10 w-10 items-center justify-center rounded-btn text-sds-graphite transition-colors hover:bg-sds-ink/5 hover:text-sds-ink"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-search h-[18px] w-[18px]"><circle cx="11" cy="11" r="8"></circle><path d="m21 21-4.3-4.3"></path></svg></button><a class="shrink-0 whitespace-nowrap px-1.5 text-[14px] text-sds-graphite transition-colors hover:text-sds-ink" href="/auth/login">登入</a><a class="items-center justify-center gap-2 rounded-btn font-sans font-medium transition-colors duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sds-alpine focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 border border-sds-ink bg-transparent text-sds-ink hover:bg-sds-ink/5 hidden whitespace-nowrap px-4 py-2.5 text-[14px] xl:inline-flex" href="/build">免費 Starter Kit</a><a class="items-center justify-center gap-2 whitespace-nowrap rounded-btn font-sans font-medium transition-colors duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sds-alpine focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 border border-sds-ink bg-sds-ink text-sds-paper-soft hover:border-[#1f3444] hover:bg-[#1f3444] hidden px-4 py-2.5 text-[14px] md:inline-flex" href="/consult">Contact<span aria-hidden="true">→</span></a><button aria-label="開啟選單" class="flex h-10 w-10 items-center justify-center rounded-btn text-sds-graphite transition-colors hover:bg-sds-ink/5 hover:text-sds-ink lg:hidden" type="button" aria-haspopup="dialog" aria-expanded="false" aria-controls="radix-:r0:" data-state="closed"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-menu h-5 w-5"><line x1="4" x2="20" y1="12" y2="12"></line><line x1="4" x2="20" y1="6" y2="6"></line><line x1="4" x2="20" y1="18" y2="18"></line></svg></button></div></nav></header><div style="opacity: 1; transform: none;"><main id="main-content" class="flex-1"><section class="home-hero relative isolate flex min-h-[clamp(600px,86svh,860px)] flex-col overflow-hidden border-b border-sds-line bg-sds-paper" aria-labelledby="home-hero-title"><canvas aria-hidden="true" class="pointer-events-none absolute inset-0 h-full w-full" width="1280" height="773"></canvas><div class="container relative z-10 flex flex-1 flex-col items-center justify-center pb-10 pt-16 text-center md:pt-20"><a class="home-rise mb-8 inline-flex max-w-full items-center gap-2 rounded-full border border-sds-line bg-sds-paper-soft px-3 py-1.5 text-left text-[13px] text-sds-ink transition-colors hover:border-sds-ink focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-sds-alpine md:text-sm" href="/learn/series/claude-code-2026"><span class="shrink-0 rounded-full bg-sds-ink px-2 py-0.5 font-mono text-[10px] tracking-[0.12em] text-sds-paper-soft">NEW SERIES</span><span class="min-w-0">2026 Claude Code 學習指南：不會寫程式也能做出作品 →</span></a><p class="home-rise font-mono text-[11px] uppercase tracking-[0.18em] text-sds-graphite md:text-xs">A PERSONAL JOURNAL OF AI, ENGINEERING &amp; IDEAS</p><h1 id="home-hero-title" class="home-rise mt-6 font-serif text-[clamp(44px,6vw,84px)] font-medium leading-[1.1] tracking-[-0.02em] text-sds-ink"><span class="whitespace-nowrap">技術、</span><span class="whitespace-nowrap">思考</span><span class="whitespace-nowrap">與實踐。</span></h1><span aria-hidden="true" class="home-rise mt-8 block h-px w-14 bg-sds-seiji"></span><p class="home-rise mt-8 max-w-[34em] text-[16px] leading-[1.85] text-sds-graphite md:text-[18px]">Hi 大家好，我是 Sunny，一個斜槓工作者。白天在企業裡做 AI 產品開發與數據分析、累積技術經驗；其餘時間把做過的事、還沒想通的問題寫下來。這裡放的是我踩過的坑和累積的經驗，最後濃縮成一套筆記、作品和方法。</p><div class="home-rise mt-10 flex flex-wrap justify-center gap-3"><a class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-btn font-sans font-medium transition-colors duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sds-alpine focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 border border-sds-ink bg-sds-ink text-sds-paper-soft hover:border-[#1f3444] hover:bg-[#1f3444] px-4 py-3 text-[15px]" href="/learn">讀文章 →</a><a class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-btn font-sans font-medium transition-colors duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sds-alpine focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 border border-sds-ink bg-transparent text-sds-ink hover:bg-sds-ink/5 px-4 py-3 text-[15px]" href="/ai-builder/projects">看作品 →</a></div></div><nav aria-label="首頁章節" class="container relative z-10 pb-12 md:pb-14"><ol class="grid grid-cols-1 border-t border-sds-line sm:grid-cols-5"><li><a href="#projects" class="group relative flex items-baseline gap-3 border-b border-sds-line py-4 text-left outline-none sm:block sm:border-b-0 sm:px-3 sm:pt-5 sm:text-center focus-visible:bg-sds-paper-soft"><span aria-hidden="true" class="absolute inset-x-0 top-[-1px] hidden h-px origin-center scale-x-0 bg-sds-seiji transition-transform duration-500 group-hover:scale-x-100 group-focus-visible:scale-x-100 sm:block"></span><span class="sm:block"><span class="block text-[15px] font-medium text-sds-ink transition-colors group-hover:text-sds-seiji">從想法到作品</span><span class="mt-1 block font-mono text-[10px] tracking-[0.08em] text-sds-meta">Projects / 開發手記</span></span></a></li><li><a href="#writing" class="group relative flex items-baseline gap-3 border-b border-sds-line py-4 text-left outline-none sm:block sm:border-b-0 sm:px-3 sm:pt-5 sm:text-center focus-visible:bg-sds-paper-soft"><span aria-hidden="true" class="absolute inset-x-0 top-[-1px] hidden h-px origin-center scale-x-0 bg-sds-seiji transition-transform duration-500 group-hover:scale-x-100 group-focus-visible:scale-x-100 sm:block"></span><span class="sm:block"><span class="block text-[15px] font-medium text-sds-ink transition-colors group-hover:text-sds-seiji">換個角度看問題</span><span class="mt-1 block font-mono text-[10px] tracking-[0.08em] text-sds-meta">Writing / 研究與觀察</span></span></a></li><li><a href="#courses" class="group relative flex items-baseline gap-3 border-b border-sds-line py-4 text-left outline-none sm:block sm:border-b-0 sm:px-3 sm:pt-5 sm:text-center focus-visible:bg-sds-paper-soft"><span aria-hidden="true" class="absolute inset-x-0 top-[-1px] hidden h-px origin-center scale-x-0 bg-sds-seiji transition-transform duration-500 group-hover:scale-x-100 group-focus-visible:scale-x-100 sm:block"></span><span class="sm:block"><span class="block text-[15px] font-medium text-sds-ink transition-colors group-hover:text-sds-seiji">從難題到實作</span><span class="mt-1 block font-mono text-[10px] tracking-[0.08em] text-sds-meta">Courses / 實作學習</span></span></a></li><li><a href="#knowledge-map" class="group relative flex items-baseline gap-3 border-b border-sds-line py-4 text-left outline-none sm:block sm:border-b-0 sm:px-3 sm:pt-5 sm:text-center focus-visible:bg-sds-paper-soft"><span aria-hidden="true" class="absolute inset-x-0 top-[-1px] hidden h-px origin-center scale-x-0 bg-sds-seiji transition-transform duration-500 group-hover:scale-x-100 group-focus-visible:scale-x-100 sm:block"></span><span class="sm:block"><span class="block text-[15px] font-medium text-sds-ink transition-colors group-hover:text-sds-seiji">把思考留下來</span><span class="mt-1 block font-mono text-[10px] tracking-[0.08em] text-sds-meta">Knowledge Map / 知識脈絡</span></span></a></li><li><a href="#about" class="group relative flex items-baseline gap-3 border-b border-sds-line py-4 text-left outline-none sm:block sm:border-b-0 sm:px-3 sm:pt-5 sm:text-center focus-visible:bg-sds-paper-soft"><span aria-hidden="true" class="absolute inset-x-0 top-[-1px] hidden h-px origin-center scale-x-0 bg-sds-seiji transition-transform duration-500 group-hover:scale-x-100 group-focus-visible:scale-x-100 sm:block"></span><span class="sm:block"><span class="block text-[15px] font-medium text-sds-ink transition-colors group-hover:text-sds-seiji">技術之外，還有人</span><span class="mt-1 block font-mono text-[10px] tracking-[0.08em] text-sds-meta">About / 作者與理念</span></span></a></li></ol></nav><button type="button" aria-pressed="false" aria-label="暫停背景動態" class="absolute bottom-4 left-4 z-20 flex h-8 w-8 items-center justify-center rounded-full bg-sds-paper-soft/80 text-sds-graphite transition-colors hover:text-sds-ink focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sds-alpine md:left-6"><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-pause" aria-hidden="true"><rect x="14" y="4" width="4" height="16" rx="1"></rect><rect x="6" y="4" width="4" height="16" rx="1"></rect></svg></button></section><div class="border-b border-sds-line bg-sds-paper-soft"><p class="container py-4 text-[14px] leading-relaxed text-sds-graphite md:py-5 md:text-[15px]">Sunny Data Science（桑尼資料科學）由 Sunny 經營，提供 AI 工程、資料科學與 AI 工作流的文章、線上課程、線下實戰營與企業內訓。</p></div><section id="projects" class="sds-night home-night border-t border-sds-paper/10 bg-sds-night py-20 text-sds-paper md:py-32"><div class="container"><div class="home-reveal flex flex-col gap-4 md:flex-row md:items-end md:justify-between md:gap-8 mb-10 md:mb-16"><div class="[&amp;_h2]:text-[clamp(2.125rem,1.5rem+2.4vw,3.5rem)] [&amp;_h2]:leading-[1.15] [&amp;_.sds-lead]:mt-6 [&amp;_.sds-lead]:text-[17px] md:[&amp;_.sds-lead]:text-[19px]"><div class="max-w-[760px]"><h2>近期專案</h2><p class="sds-lead mt-4">每個專案都會保留一點開發脈絡：當時遇到什麼問題、為什麼選這個做法、哪裡卡住，最後又改成什麼樣子。</p></div></div><a class="shrink-0 text-sm font-medium underline-offset-4 hover:underline" href="/ai-builder/projects">View projects →</a></div><div class="grid gap-6 md:grid-cols-2 md:gap-8 lg:grid-cols-[2fr_1fr_1fr]"><div class="home-reveal md:col-span-2 lg:col-span-1"><a class="home-card sds-tilt group flex h-full flex-col rounded-[6px] border border-sds-paper/15 p-4 transition-colors hover:border-sds-paper/40 md:p-5" href="/ai-builder/projects/24-hour-ai-coding-workflow"><div class="home-card-media rounded-[4px]" style="aspect-ratio: 16 / 9;"><img src="/assets/project-coding-workflow-CWE3I78p.webp" alt="24-hour AI Coding Workflow" loading="lazy" fetchpriority="low" decoding="async" class="sds-tilt-media h-full w-full object-cover"></div><h3 class="mt-5 font-serif font-medium text-sds-paper text-[26px] md:text-[30px]"><span class="home-sweep">24-hour AI Coding Workflow</span></h3><p class="mt-2 font-mono text-[11px] uppercase tracking-[0.06em] text-sds-paper/60">BUILD LOG / 001 · CLAUDE CODE × CODEX × MULTI-DEVICE</p><dl class="mt-5 grid gap-3 border-t border-sds-paper/15 pt-4"><div class="grid gap-1 md:grid-cols-[88px_1fr] md:gap-4"><dt class="font-mono text-[11px] uppercase tracking-[0.06em] text-sds-paper/50">Problem</dt><dd class="text-sm leading-[1.65] text-sds-paper/85">開發環境綁在一台電腦上。離開座位，正在跑的任務就停；換一台機器，環境又要重設一次。</dd></div><div class="grid gap-1 md:grid-cols-[88px_1fr] md:gap-4"><dt class="font-mono text-[11px] uppercase tracking-[0.06em] text-sds-paper/50">System</dt><dd class="text-sm leading-[1.65] text-sds-paper/85">Git worktree 隔離任務；每個 Agent 一條分支；手機派任務、回到電腦驗收；CI 跑型別、測試與預覽部署。</dd></div><div class="grid gap-1 md:grid-cols-[88px_1fr] md:gap-4"><dt class="font-mono text-[11px] uppercase tracking-[0.06em] text-sds-paper/50">Outcome</dt><dd class="text-sm leading-[1.65] text-sds-paper/85">一天多出兩段原本浪費掉的開發時間；大型重構可以拆成幾條平行的 Agent 任務，由人做最後的合併判斷。</dd></div></dl></a></div><div class="home-reveal" style="transition-delay: 60ms;"><a class="home-card sds-tilt group flex h-full flex-col rounded-[6px] border border-sds-paper/15 p-4 transition-colors hover:border-sds-paper/40 md:p-5" href="/ai-builder/projects/ai-writing-system"><div class="home-card-media rounded-[4px]" style="aspect-ratio: 3 / 2;"><img src="/assets/project-writing-system-CsSSYOQF.webp" alt="AI Writing System" loading="lazy" fetchpriority="low" decoding="async" class="sds-tilt-media h-full w-full object-cover"></div><h3 class="mt-5 font-serif font-medium text-sds-paper text-[22px]"><span class="home-sweep">AI Writing System</span></h3><p class="mt-2 font-mono text-[11px] uppercase tracking-[0.06em] text-sds-paper/60">BUILD LOG / 002 · HUMAN JUDGMENT × RETRIEVAL</p><dl class="mt-5 grid gap-3 border-t border-sds-paper/15 pt-4"><div class="grid gap-1"><dt class="font-mono text-[11px] uppercase tracking-[0.06em] text-sds-paper/50">Problem</dt><dd class="text-sm leading-[1.65] text-sds-paper/85 line-clamp-3">用 AI 寫東西很快，但寫出來的句子常常不是自己會說的話，引用也查不回來源。</dd></div><div class="grid gap-1"><dt class="font-mono text-[11px] uppercase tracking-[0.06em] text-sds-paper/50">System</dt><dd class="text-sm leading-[1.65] text-sds-paper/85 line-clamp-3">來源庫加上檢索；每一段草稿都帶著引用位置；修改用 diff 看，不整篇重生。</dd></div><div class="grid gap-1"><dt class="font-mono text-[11px] uppercase tracking-[0.06em] text-sds-paper/50">Outcome</dt><dd class="text-sm leading-[1.65] text-sds-paper/85 line-clamp-3">一篇長文從三天縮到一天內，而且每一句都能回到原始來源。這個網站上的文章多數用這套流程寫。</dd></div></dl></a></div><div class="home-reveal" style="transition-delay: 120ms;"><a class="home-card sds-tilt group flex h-full flex-col rounded-[6px] border border-sds-paper/15 p-4 transition-colors hover:border-sds-paper/40 md:p-5" href="/ai-builder/projects/industrial-vision-ai"><div class="home-card-media rounded-[4px]" style="aspect-ratio: 16 / 9;"><img src="/assets/project-industrial-vision-DdLrs3h7.webp" alt="Industrial Vision AI" loading="lazy" fetchpriority="low" decoding="async" class="sds-tilt-media h-full w-full object-cover"></div><h3 class="mt-5 font-serif font-medium text-sds-paper text-[22px]"><span class="home-sweep">Industrial Vision AI</span></h3><p class="mt-2 font-mono text-[11px] uppercase tracking-[0.06em] text-sds-paper/60">BUILD LOG / 003 · TRAINING / INFERENCE / DEPLOYMENT</p><dl class="mt-5 grid gap-3 border-t border-sds-paper/15 pt-4"><div class="grid gap-1"><dt class="font-mono text-[11px] uppercase tracking-[0.06em] text-sds-paper/50">Problem</dt><dd class="text-sm leading-[1.65] text-sds-paper/85 line-clamp-3">模型在實驗室的準確率很好，到了產線就不穩。光線、鏡頭、產品批次一變，結果就跟著變。</dd></div><div class="grid gap-1"><dt class="font-mono text-[11px] uppercase tracking-[0.06em] text-sds-paper/50">System</dt><dd class="text-sm leading-[1.65] text-sds-paper/85 line-clamp-3">資料版本化；推論服務在邊緣裝置上跑；現場誤判樣本自動回收成下一輪訓練資料。</dd></div><div class="grid gap-1"><dt class="font-mono text-[11px] uppercase tracking-[0.06em] text-sds-paper/50">Outcome</dt><dd class="text-sm leading-[1.65] text-sds-paper/85 line-clamp-3">從一個只能展示的 Demo，變成可以在現場持續運作、持續修正的系統。細節因保密不公開，這裡只保留架構與方法。</dd></div></dl></a></div></div></div></section><section id="writing" class="py-12 md:py-[72px] border-t border-sds-line bg-sds-paper pb-10 pt-20 md:pb-14 md:pt-32"><div class="container"><div class="home-reveal flex flex-col gap-4 md:flex-row md:items-end md:justify-between md:gap-8 mb-10 md:mb-16"><div class="[&amp;_h2]:text-[clamp(2.125rem,1.5rem+2.4vw,3.5rem)] [&amp;_h2]:leading-[1.15] [&amp;_.sds-lead]:mt-6 [&amp;_.sds-lead]:text-[17px] md:[&amp;_.sds-lead]:text-[19px]"><div class="max-w-[760px]"><h2>最近寫的</h2></div></div><a class="shrink-0 text-sm font-medium underline-offset-4 hover:underline" href="/learn">View all writing →</a></div><div class="grid gap-8 lg:grid-cols-12 lg:gap-10"><div class="home-reveal lg:col-span-7"><a class="home-card group block overflow-hidden rounded-[6px] border border-sds-line bg-sds-paper-soft" href="/learn/ai-capability-spiky-debate"><div class="home-card-media rounded-none" style="aspect-ratio: 16 / 9;"><img src="https://ptdupjlpnsiiyukbgesl.supabase.co/storage/v1/object/public/thumbnails/1792766411880-wibz1hb3z4s.webp" alt="Adam Hunt 指 AI 能力越來越不平均，Anthropic 與 Chollet 各怎麼看" loading="lazy" fetchpriority="low" decoding="async" class="h-full w-full object-cover"></div><div class="p-5 md:p-6"><p class="flex flex-wrap items-center gap-2 font-mono text-xs uppercase tracking-[0.06em]"><span class="rounded-[4px] px-2 py-0.5 text-[11px] font-medium normal-case tracking-normal border border-sds-alpine/25 bg-sds-mist text-sds-alpine">新知與拆解</span><span class="text-sds-alpine">AI &amp; Work</span></p><h3 class="mt-3 font-serif text-[22px] font-medium leading-[1.3] text-sds-ink md:text-[28px]"><span class="home-sweep">Adam Hunt 指 AI 能力越來越不平均，Anthropic 與 Chollet 各怎麼看</span></h3><p class="mt-3 line-clamp-3 text-base leading-[1.7] text-sds-graphite">劍橋大學研究者 Adam Hunt 說模型的程式和數學變強、語言變弱。前 OpenAI 的 Andrew Ho、Anthropic 的 Jackson Kernion、François Chollet 各自怎麼看，附立場總覽表與可以自己動手的做法。</p><p class="mt-4 font-mono text-xs text-sds-graphite">2026.10.23 · 17 MIN READ</p></div></a></div><div class="home-reveal grid content-start gap-7 lg:col-span-5" style="transition-delay: 120ms;"><a class="home-card group grid grid-cols-[110px_1fr] gap-4 border-b border-sds-line pb-5 last:border-b-0 md:grid-cols-[140px_1fr]" href="/learn/ai-chip-memory-architectures-compared"><div class="home-card-media rounded-[4px]" style="aspect-ratio: 4 / 3;"><img src="https://ptdupjlpnsiiyukbgesl.supabase.co/storage/v1/object/public/thumbnails/1792766382387-83byq0v3zqr.webp" alt="權重放哪裡，決定 AI 晶片擅長什麼" loading="lazy" fetchpriority="low" decoding="async" class="h-full w-full object-cover"></div><div class="min-w-0"><p class="flex flex-wrap items-center gap-1.5 font-mono text-[11px] uppercase tracking-[0.06em]"><span class="font-medium normal-case tracking-normal text-sds-alpine">新知與拆解</span><span class="text-sds-meta">·</span><span class="text-sds-alpine">AI Engineering</span></p><h3 class="mt-2 font-serif text-[17px] font-medium leading-[1.4] text-sds-ink md:text-lg"><span class="home-sweep">權重放哪裡，決定 AI 晶片擅長什麼</span></h3><p class="mt-2 font-mono text-[11px] text-sds-graphite">20 MIN READ</p></div></a><a class="home-card group grid grid-cols-[110px_1fr] gap-4 border-b border-sds-line pb-5 last:border-b-0 md:grid-cols-[140px_1fr]" href="/learn/token-1000x-cheaper-neil-movva"><div class="home-card-media rounded-[4px]" style="aspect-ratio: 4 / 3;"><img src="https://ptdupjlpnsiiyukbgesl.supabase.co/storage/v1/object/public/thumbnails/1792766355330-mkm5y1kqrpb.webp" alt="Token 折扣仍綁在等待時間上" loading="lazy" fetchpriority="low" decoding="async" class="h-full w-full object-cover"></div><div class="min-w-0"><p class="flex flex-wrap items-center gap-1.5 font-mono text-[11px] uppercase tracking-[0.06em]"><span class="font-medium normal-case tracking-normal text-sds-alpine">新知與拆解</span><span class="text-sds-meta">·</span><span class="text-sds-alpine">AI Engineering</span></p><h3 class="mt-2 font-serif text-[17px] font-medium leading-[1.4] text-sds-ink md:text-lg"><span class="home-sweep">Token 折扣仍綁在等待時間上</span></h3><p class="mt-2 font-mono text-[11px] text-sds-graphite">18 MIN READ</p></div></a><a class="home-card group grid grid-cols-[110px_1fr] gap-4 border-b border-sds-line pb-5 last:border-b-0 md:grid-cols-[140px_1fr]" href="/learn/ai-search-frontier-grainger-turnbull-12-techniques"><div class="home-card-media rounded-[4px]" style="aspect-ratio: 4 / 3;"><img src="https://ptdupjlpnsiiyukbgesl.supabase.co/storage/v1/object/public/thumbnails/1792766319772-y7zvtu2n4cf.webp" alt="AI 搜尋講座談了十多項技術，本站挑 12 項分四級排先後" loading="lazy" fetchpriority="low" decoding="async" class="h-full w-full object-cover"></div><div class="min-w-0"><p class="flex flex-wrap items-center gap-1.5 font-mono text-[11px] uppercase tracking-[0.06em]"><span class="font-medium normal-case tracking-normal text-sds-alpine">新知與拆解</span><span class="text-sds-meta">·</span><span class="text-sds-alpine">AI Engineering</span></p><h3 class="mt-2 font-serif text-[17px] font-medium leading-[1.4] text-sds-ink md:text-lg"><span class="home-sweep">AI 搜尋講座談了十多項技術，本站挑 12 項分四級排先後</span></h3><p class="mt-2 font-mono text-[11px] text-sds-graphite">24 MIN READ</p></div></a></div></div></div></section><section class="border-sds-line py-12 md:py-[72px] border-t-0 bg-sds-paper pb-20 pt-0 md:pb-32 md:pt-0"><div class="container"><h2 class="mb-8 border-t border-sds-line pt-10 text-[20px] text-sds-ink md:mb-10 md:pt-14 md:text-[22px]">更多近期文章</h2><div class="grid items-start gap-12 md:grid-cols-3 md:gap-12"><div class="home-reveal"><a class="home-card group block" href="/learn/ai-enabled-ai-first-ai-native-definitions"><div class="home-card-media rounded-[4px]" style="aspect-ratio: 16 / 9;"><img src="https://ptdupjlpnsiiyukbgesl.supabase.co/storage/v1/object/public/thumbnails/1792766292440-xh19tpx8bv.webp" alt="AI-enabled、AI First、AI Native 沒有共同定義，12 家機構指的是三個不同的層" loading="lazy" fetchpriority="low" decoding="async" class="h-full w-full object-cover"></div><div class="mt-4"><p class="flex flex-wrap items-center gap-1.5 font-mono text-[11px] uppercase tracking-[0.06em]"><span class="font-medium normal-case tracking-normal text-sds-alpine">新知與拆解</span><span class="text-sds-meta">·</span><span class="text-sds-alpine">AI &amp; Work</span><span class="text-sds-graphite">· 2026.10.23</span></p><h3 class="mt-2 font-serif text-xl font-medium leading-[1.35] text-sds-ink"><span class="home-sweep">AI-enabled、AI First、AI Native 沒有共同定義，12 家機構指的是三個不同的層</span></h3></div></a></div><div class="home-reveal" style="transition-delay: 90ms;"><a class="home-card group block rounded-[6px] border border-sds-line bg-sds-paper-soft p-6" href="/learn/shreya-shankar-automate-evals-three-mistakes"><p class="flex flex-wrap items-center gap-1.5 font-mono text-[11px] uppercase tracking-[0.06em]"><span class="font-medium normal-case tracking-normal text-sds-alpine">新知與拆解</span><span class="text-sds-meta">·</span><span class="text-sds-alpine">AI Engineering</span><span class="text-sds-graphite">· 2026.10.23</span></p><h3 class="mt-3 font-serif text-xl font-medium leading-[1.35] text-sds-ink"><span class="home-sweep">Eval 能自動化多少，取決於你寫下了多少標準</span></h3><p class="mt-3 line-clamp-5 text-[15px] leading-[1.75] text-sds-graphite">Shreya Shankar 在演講裡點出 Eval 自動化的三個常見錯誤：叫 coding agent 直接評估整個 app、只看一遍資料、所有應用共用同一個準確度標準。這篇整理各自的表現、原因與修正，再對照 Hamel Husain 團隊用 100 筆真實 trace 做的實測。</p><p class="mt-4 font-mono text-[11px] text-sds-graphite">29 MIN READ</p></a></div><div class="home-reveal" style="transition-delay: 180ms;"><a class="home-card group block pt-2" href="/learn/hex-data-agent-verification"><blockquote class="border-l border-sds-alpine pl-5 font-serif text-[22px] leading-[1.55] text-sds-ink">Hex 工程師 Izzy Miller 刻意在儀表板埋入錯誤，資料 Agent 看到超過 900% 的達成率，仍說是最好的一季。這篇從他的 LangChain《Max Agency》訪談整理六個驗證做法，對照 Hex 官方文件與主持人 Harrison Chase 的回應。</blockquote><div class="mt-5 pl-5"><p class="flex flex-wrap items-center gap-1.5 font-mono text-[11px] uppercase tracking-[0.06em]"><span class="font-medium normal-case tracking-normal text-sds-alpine">新知與拆解</span><span class="text-sds-meta">·</span><span class="text-sds-alpine">Data Science</span><span class="text-sds-graphite">· 2026.10.23</span></p><p class="mt-2 text-[15px] font-medium text-sds-ink"><span class="home-sweep">資料 Agent 算錯了誰會發現？Hex 的 6 個驗證做法</span></p></div></a></div></div></div></section><section class="border-t border-sds-line bg-sds-paper-soft py-14 md:py-20"><div class="container"><div class="home-reveal flex flex-col gap-4 md:flex-row md:items-end md:justify-between md:gap-8 mb-6 md:mb-8"><div class="[&amp;_h2]:text-[clamp(1.5rem,1.3rem+0.6vw,1.875rem)] [&amp;_.sds-lead]:mt-3 [&amp;_.sds-lead]:text-[15px] md:[&amp;_.sds-lead]:text-[16px]"><div class="max-w-[760px]"><h2>我常寫的幾個方向</h2><p class="sds-lead mt-4">AI 工程、Agent、產品、資料和工作方法，這些題目在實際專案裡常常會碰在一起。文章先按主題整理，方便讀者找到入口。</p></div></div></div><div class="home-reveal"><ul class="grid grid-cols-2 gap-4 md:grid-cols-3 lg:grid-cols-6"><li><a class="home-card flex h-full min-h-[110px] flex-col justify-between rounded-[4px] border border-sds-line bg-sds-paper p-4 transition-colors hover:border-sds-ink md:p-5" href="/learn/topic/ai-and-work"><span class="font-serif text-[17px] font-medium leading-snug text-sds-ink"><span class="home-sweep">AI &amp; Work</span></span><span class="mt-3 font-mono text-xs text-sds-graphite">工作與社會</span></a></li><li><a class="home-card flex h-full min-h-[110px] flex-col justify-between rounded-[4px] border border-sds-line bg-sds-paper p-4 transition-colors hover:border-sds-ink md:p-5" href="/learn/topic/ai-engineering"><span class="font-serif text-[17px] font-medium leading-snug text-sds-ink"><span class="home-sweep">AI Engineering</span></span><span class="mt-3 font-mono text-xs text-sds-graphite">工程與系統</span></a></li><li><a class="home-card flex h-full min-h-[110px] flex-col justify-between rounded-[4px] border border-sds-line bg-sds-paper p-4 transition-colors hover:border-sds-ink md:p-5" href="/learn/topic/agent-systems"><span class="font-serif text-[17px] font-medium leading-snug text-sds-ink"><span class="home-sweep">Agent Systems</span></span><span class="mt-3 font-mono text-xs text-sds-graphite">代理與自動化</span></a></li><li><a class="home-card flex h-full min-h-[110px] flex-col justify-between rounded-[4px] border border-sds-line bg-sds-paper p-4 transition-colors hover:border-sds-ink md:p-5" href="/learn/topic/product-thinking"><span class="font-serif text-[17px] font-medium leading-snug text-sds-ink"><span class="home-sweep">Product Thinking</span></span><span class="mt-3 font-mono text-xs text-sds-graphite">產品與判斷</span></a></li><li><a class="home-card flex h-full min-h-[110px] flex-col justify-between rounded-[4px] border border-sds-line bg-sds-paper p-4 transition-colors hover:border-sds-ink md:p-5" href="/learn/topic/data-science"><span class="font-serif text-[17px] font-medium leading-snug text-sds-ink"><span class="home-sweep">Data Science</span></span><span class="mt-3 font-mono text-xs text-sds-graphite">資料與模型</span></a></li><li><a class="home-card flex h-full min-h-[110px] flex-col justify-between rounded-[4px] border border-sds-line bg-sds-paper p-4 transition-colors hover:border-sds-ink md:p-5" href="/learn/topic/building-shipping"><span class="font-serif text-[17px] font-medium leading-snug text-sds-ink"><span class="home-sweep">Building &amp; Shipping</span></span><span class="mt-3 font-mono text-xs text-sds-graphite">從 0 到 1</span></a></li></ul></div></div></section><section id="knowledge-map" class="sds-night home-night border-t border-sds-paper/10 bg-sds-night py-24 text-sds-paper md:py-36"><div class="container"><div class="home-reveal flex flex-col gap-4 md:flex-row md:items-end md:justify-between md:gap-8 mb-10 md:mb-16"><div class="[&amp;_h2]:text-[clamp(2.125rem,1.5rem+2.4vw,3.5rem)] [&amp;_h2]:leading-[1.15] [&amp;_.sds-lead]:mt-6 [&amp;_.sds-lead]:text-[17px] md:[&amp;_.sds-lead]:text-[19px]"><div class="max-w-[760px]"><h2>這些主題怎麼連在一起</h2><p class="sds-lead mt-4">我寫的東西看起來有點散。一個工具改變了開發方式，接著會影響產品怎麼設計、團隊怎麼合作，最後又回到人怎麼做判斷。這張圖用來整理它們之間的關係。</p></div></div></div><div class="hidden lg:block"><div><div class="relative mx-auto w-full max-w-[1376px]"><div class="home-lattice relative w-full max-w-[1280px] mx-auto" style="aspect-ratio: 1280 / 640;"><svg viewBox="0 0 1280 640" class="absolute inset-0 h-full w-full" preserveAspectRatio="none" aria-hidden="true" focusable="false"><g stroke="rgba(159,184,198,.45)" stroke-width="1" vector-effect="non-scaling-stroke" fill="none"><line x1="426.6666666666667" y1="0" x2="426.6666666666667" y2="640" vector-effect="non-scaling-stroke"></line><line x1="853.3333333333334" y1="0" x2="853.3333333333334" y2="640" vector-effect="non-scaling-stroke"></line><line x1="0" y1="237" x2="1280" y2="237" vector-effect="non-scaling-stroke"></line><line x1="0" y1="416" x2="1280" y2="416" vector-effect="non-scaling-stroke"></line></g><g><line x1="305" y1="125" x2="545" y2="125" stroke="#8FC0B3" stroke-opacity="0.7" stroke-width="1.5" vector-effect="non-scaling-stroke" class="home-lattice-fade" style="opacity: 1;"></line><line x1="305" y1="125" x2="545" y2="125" stroke="#F4F0E8" stroke-width="1.5" vector-effect="non-scaling-stroke" class="home-lattice-fade" style="opacity: 1; transform: none;"></line></g><g><line x1="735" y1="125" x2="975" y2="125" stroke="#8FC0B3" stroke-opacity="0.7" stroke-width="1.5" vector-effect="non-scaling-stroke" class="home-lattice-fade" style="opacity: 1;"></line><line x1="735" y1="125" x2="975" y2="125" stroke="#F4F0E8" stroke-width="1.5" vector-effect="non-scaling-stroke" class="home-lattice-fade" style="opacity: 1; transform: none;"></line></g><g><line x1="320" y1="490" x2="550" y2="490" stroke="#8FC0B3" stroke-opacity="0.7" stroke-width="1.5" vector-effect="non-scaling-stroke" class="home-lattice-fade" style="opacity: 1;"></line><line x1="320" y1="490" x2="550" y2="490" stroke="#F4F0E8" stroke-width="1.5" vector-effect="non-scaling-stroke" class="home-lattice-fade" style="opacity: 1; transform: none;"></line></g><g><line x1="730" y1="490" x2="960" y2="490" stroke="#8FC0B3" stroke-opacity="0.7" stroke-width="1.5" vector-effect="non-scaling-stroke" class="home-lattice-fade" style="opacity: 1;"></line><line x1="730" y1="490" x2="960" y2="490" stroke="#F4F0E8" stroke-width="1.5" vector-effect="non-scaling-stroke" class="home-lattice-fade" style="opacity: 1; transform: none;"></line></g><g><line x1="213" y1="185" x2="213" y2="445" stroke="#8FC0B3" stroke-opacity="0.7" stroke-width="1.5" vector-effect="non-scaling-stroke" class="home-lattice-fade" style="opacity: 1;"></line><line x1="213" y1="185" x2="213" y2="445" stroke="#F4F0E8" stroke-width="1.5" vector-effect="non-scaling-stroke" class="home-lattice-fade" style="opacity: 1; transform: none;"></line></g><g><line x1="1067" y1="185" x2="1067" y2="445" stroke="#8FC0B3" stroke-opacity="0.7" stroke-width="1.5" vector-effect="non-scaling-stroke" class="home-lattice-fade" style="opacity: 1;"></line><line x1="1067" y1="185" x2="1067" y2="445" stroke="#F4F0E8" stroke-width="1.5" vector-effect="non-scaling-stroke" class="home-lattice-fade" style="opacity: 1; transform: none;"></line></g><g><line x1="213" y1="320" x2="426.6666666666667" y2="320" stroke="#8FC0B3" stroke-opacity="0.7" stroke-width="1.5" vector-effect="non-scaling-stroke" class="home-lattice-fade" style="opacity: 1;"></line><line x1="213" y1="320" x2="426.6666666666667" y2="320" stroke="#F4F0E8" stroke-width="1.5" vector-effect="non-scaling-stroke" class="home-lattice-fade" style="opacity: 1; transform: none;"></line></g><g><line x1="1067" y1="320" x2="853.3333333333334" y2="320" stroke="#8FC0B3" stroke-opacity="0.7" stroke-width="1.5" vector-effect="non-scaling-stroke" class="home-lattice-fade" style="opacity: 1;"></line><line x1="1067" y1="320" x2="853.3333333333334" y2="320" stroke="#F4F0E8" stroke-width="1.5" vector-effect="non-scaling-stroke" class="home-lattice-fade" style="opacity: 1; transform: none;"></line></g><g><line x1="640" y1="185" x2="640" y2="237" stroke="#8FC0B3" stroke-opacity="0.7" stroke-width="1.5" vector-effect="non-scaling-stroke" class="home-lattice-fade" style="opacity: 1;"></line><line x1="640" y1="185" x2="640" y2="237" stroke="#F4F0E8" stroke-width="1.5" vector-effect="non-scaling-stroke" class="home-lattice-fade" style="opacity: 1; transform: none;"></line></g><g><line x1="640" y1="416" x2="640" y2="445" stroke="#8FC0B3" stroke-opacity="0.7" stroke-width="1.5" vector-effect="non-scaling-stroke" class="home-lattice-fade" style="opacity: 1;"></line><line x1="640" y1="416" x2="640" y2="445" stroke="#F4F0E8" stroke-width="1.5" vector-effect="non-scaling-stroke" class="home-lattice-fade" style="opacity: 1; transform: none;"></line></g></svg><a class="home-lattice-fade absolute -translate-x-1/2 -translate-y-1/2 whitespace-nowrap px-4 py-2 text-center font-serif text-[40px] leading-none text-sds-paper outline-none focus-visible:ring-2 focus-visible:ring-sds-paper xl:text-[48px]" href="/learn" style="left: 50%; top: 50%; opacity: 1;">How I Think</a><button type="button" aria-expanded="false" aria-haspopup="dialog" aria-describedby="home-map-caption" class="home-lattice-fade absolute flex -translate-x-1/2 flex-col items-center whitespace-nowrap px-3 py-2 text-center outline-none focus-visible:ring-2 focus-visible:ring-sds-paper" style="left: 16.6406%; top: 13.2812%; opacity: 1;"><span class="block h-[10px] w-[10px] rounded-full bg-[#9FB8C6]" aria-hidden="true"></span><span class="mt-[18px] block font-serif text-[20px] leading-none text-sds-paper xl:text-[22px]">AI &amp; Work</span><span class="mt-3 block text-[13px] leading-none tracking-[0.08em] text-[#B7C2C8]">工作與社會</span></button><button type="button" aria-expanded="false" aria-haspopup="dialog" aria-describedby="home-map-caption" class="home-lattice-fade absolute flex -translate-x-1/2 flex-col items-center whitespace-nowrap px-3 py-2 text-center outline-none focus-visible:ring-2 focus-visible:ring-sds-paper" style="left: 50%; top: 13.2812%; opacity: 1;"><span class="block h-[10px] w-[10px] rounded-full bg-[#9FB8C6]" aria-hidden="true"></span><span class="mt-[18px] block font-serif text-[20px] leading-none text-sds-paper xl:text-[22px]">AI Engineering</span><span class="mt-3 block text-[13px] leading-none tracking-[0.08em] text-[#B7C2C8]">工程與系統</span></button><button type="button" aria-expanded="false" aria-haspopup="dialog" aria-describedby="home-map-caption" class="home-lattice-fade absolute flex -translate-x-1/2 flex-col items-center whitespace-nowrap px-3 py-2 text-center outline-none focus-visible:ring-2 focus-visible:ring-sds-paper" style="left: 83.3594%; top: 13.2812%; opacity: 1;"><span class="block h-[10px] w-[10px] rounded-full bg-[#9FB8C6]" aria-hidden="true"></span><span class="mt-[18px] block font-serif text-[20px] leading-none text-sds-paper xl:text-[22px]">Agent Systems</span><span class="mt-3 block text-[13px] leading-none tracking-[0.08em] text-[#B7C2C8]">代理與自動化</span></button><button type="button" aria-expanded="false" aria-haspopup="dialog" aria-describedby="home-map-caption" class="home-lattice-fade absolute flex -translate-x-1/2 flex-col items-center whitespace-nowrap px-3 py-2 text-center outline-none focus-visible:ring-2 focus-visible:ring-sds-paper" style="left: 16.6406%; top: 70.3125%; opacity: 1;"><span class="block h-[10px] w-[10px] rounded-full bg-[#9FB8C6]" aria-hidden="true"></span><span class="mt-[18px] block font-serif text-[20px] leading-none text-sds-paper xl:text-[22px]">Product Thinking</span><span class="mt-3 block text-[13px] leading-none tracking-[0.08em] text-[#B7C2C8]">產品與判斷</span></button><button type="button" aria-expanded="false" aria-haspopup="dialog" aria-describedby="home-map-caption" class="home-lattice-fade absolute flex -translate-x-1/2 flex-col items-center whitespace-nowrap px-3 py-2 text-center outline-none focus-visible:ring-2 focus-visible:ring-sds-paper" style="left: 50%; top: 70.3125%; opacity: 1;"><span class="block h-[10px] w-[10px] rounded-full bg-[#9FB8C6]" aria-hidden="true"></span><span class="mt-[18px] block font-serif text-[20px] leading-none text-sds-paper xl:text-[22px]">Data Science</span><span class="mt-3 block text-[13px] leading-none tracking-[0.08em] text-[#B7C2C8]">資料與模型</span></button><button type="button" aria-expanded="false" aria-haspopup="dialog" aria-describedby="home-map-caption" class="home-lattice-fade absolute flex -translate-x-1/2 flex-col items-center whitespace-nowrap px-3 py-2 text-center outline-none focus-visible:ring-2 focus-visible:ring-sds-paper" style="left: 83.3594%; top: 70.3125%; opacity: 1;"><span class="block h-[10px] w-[10px] rounded-full bg-[#9FB8C6]" aria-hidden="true"></span><span class="mt-[18px] block font-serif text-[20px] leading-none text-sds-paper xl:text-[22px]">Building &amp; Shipping</span><span class="mt-3 block text-[13px] leading-none tracking-[0.08em] text-[#B7C2C8]">從 0 到 1</span></button></div></div><p id="home-map-caption" aria-live="polite" class="mx-auto mt-6 min-h-[1.75rem] max-w-[640px] text-center text-[15px] text-sds-paper/70">移到節點上，看它和哪些主題相連；點一下，看這個主題的代表文章。</p></div></div><div class="lg:hidden"><ul class="home-rail -mx-5 flex snap-x snap-mandatory scroll-px-5 gap-3 overflow-x-auto px-5 pb-2"><li class="w-[240px] shrink-0 snap-start"><a class="flex h-full min-h-[150px] flex-col rounded-[6px] border border-sds-paper/15 p-5" href="/learn/topic/ai-and-work"><span class="font-serif text-lg text-sds-paper">AI &amp; Work</span><span class="mt-1 font-mono text-[11px] text-sds-paper/60">工作與社會</span><span class="mt-4 text-sm leading-relaxed text-sds-paper/75">AI 進到工作現場之後，判斷、分工與責任怎麼變。</span></a></li><li class="w-[240px] shrink-0 snap-start"><a class="flex h-full min-h-[150px] flex-col rounded-[6px] border border-sds-paper/15 p-5" href="/learn/topic/ai-engineering"><span class="font-serif text-lg text-sds-paper">AI Engineering</span><span class="mt-1 font-mono text-[11px] text-sds-paper/60">工程與系統</span><span class="mt-4 text-sm leading-relaxed text-sds-paper/75">模型、推論、資料與部署放在同一個系統裡看。</span></a></li><li class="w-[240px] shrink-0 snap-start"><a class="flex h-full min-h-[150px] flex-col rounded-[6px] border border-sds-paper/15 p-5" href="/learn/topic/agent-systems"><span class="font-serif text-lg text-sds-paper">Agent Systems</span><span class="mt-1 font-mono text-[11px] text-sds-paper/60">代理與自動化</span><span class="mt-4 text-sm leading-relaxed text-sds-paper/75">Agent、工具與流程怎麼組成可以維護的工作方式。</span></a></li><li class="w-[240px] shrink-0 snap-start"><a class="flex h-full min-h-[150px] flex-col rounded-[6px] border border-sds-paper/15 p-5" href="/learn/topic/product-thinking"><span class="font-serif text-lg text-sds-paper">Product Thinking</span><span class="mt-1 font-mono text-[11px] text-sds-paper/60">產品與判斷</span><span class="mt-4 text-sm leading-relaxed text-sds-paper/75">問題怎麼定義、取捨怎麼做、什麼時候該停。</span></a></li><li class="w-[240px] shrink-0 snap-start"><a class="flex h-full min-h-[150px] flex-col rounded-[6px] border border-sds-paper/15 p-5" href="/learn/topic/data-science"><span class="font-serif text-lg text-sds-paper">Data Science</span><span class="mt-1 font-mono text-[11px] text-sds-paper/60">資料與模型</span><span class="mt-4 text-sm leading-relaxed text-sds-paper/75">從資料到模型，哪些假設撐得住、哪些撐不住。</span></a></li><li class="w-[240px] shrink-0 snap-start"><a class="flex h-full min-h-[150px] flex-col rounded-[6px] border border-sds-paper/15 p-5" href="/learn/topic/building-shipping"><span class="font-serif text-lg text-sds-paper">Building &amp; Shipping</span><span class="mt-1 font-mono text-[11px] text-sds-paper/60">從 0 到 1</span><span class="mt-4 text-sm leading-relaxed text-sds-paper/75">把一個題目做到可操作，再交出去。</span></a></li></ul></div></div></section><section id="courses" class="border-t border-sds-line bg-sds-paper py-20 md:py-28"><div class="container"><div class="grid gap-12 lg:grid-cols-2 lg:gap-16"><div class="lg:sticky lg:top-28 lg:self-start"><div class="home-reveal flex flex-col gap-4 md:flex-row md:items-end md:justify-between md:gap-8 mb-8 md:mb-10"><div class="[&amp;_.sds-lead]:mt-5 [&amp;_.sds-lead]:text-[16px] md:[&amp;_.sds-lead]:text-[18px]"><div class="max-w-[760px]"><h2>課程與工作坊</h2><p class="sds-lead mt-4">這些課程大多是職場上做過的專案改編而來，內容可以說是經驗血淚的點滴，全部來自業界的標準，桑尼只帶給大家有用且實用的課程，一個不會隨工具改變而過時的乾貨。</p></div></div></div><div class="flex flex-wrap items-center gap-x-5 gap-y-3"><a class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-btn font-sans font-medium transition-colors duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sds-alpine focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 border border-sds-ink bg-sds-ink text-sds-paper-soft hover:border-[#1f3444] hover:bg-[#1f3444] px-4 py-3 text-[15px]" href="/ai-builder/online">看課程 →</a><a class="text-sm text-sds-ink underline underline-offset-4" href="/build">先領免費 Starter Kit →</a></div></div><div><div class="home-reveal"><a class="home-card group block overflow-hidden rounded-[6px] border border-sds-line bg-sds-paper-soft" href="/ai-builder"><div class="home-card-media"><div class="relative w-full overflow-hidden bg-sds-mist rounded-none border-0" style="aspect-ratio: 16 / 9;"><img src="/assets/topic-building-shipping-DQ6440Im.webp" alt="木工桌上的半成品結構" loading="lazy" decoding="async" class="h-full w-full object-cover"></div></div><div class="p-5 md:p-6"><p class="flex items-center gap-2 font-mono text-xs uppercase tracking-[0.06em] text-sds-alpine">FLAGSHIP <span class="inline-flex items-center rounded-[4px] border align-middle px-1.5 py-[3px] font-mono text-[11px] uppercase tracking-[0.06em] border-sds-ink bg-sds-ink text-sds-paper">線下實戰營</span></p><h3 class="mt-3 font-serif text-[24px] font-medium leading-[1.3] text-sds-ink md:text-[28px]"><span class="home-sweep">AI Native Builder Program</span></h3><p class="mt-3 text-base leading-[1.7] text-sds-graphite">給已經在使用 AI，希望再往實作走一步的人。課程會帶著你把一個題目做成可操作的 prototype，過程會碰到 AI coding、Agent、產品設計與交付。</p></div></a></div><div class="home-reveal" style="transition-delay: 120ms;"><ul class="mt-8 border-t border-sds-line"><li class="border-b border-sds-line"><a class="home-card group block py-5" href="/ai-builder/online/ai-leverage-productivity"><p class="font-medium text-sds-ink"><span class="inline-flex items-center rounded-[4px] border align-middle px-1.5 py-[3px] font-mono text-[11px] uppercase tracking-[0.06em] border-sds-ink bg-sds-paper text-sds-ink mr-2">線上自學</span><span class="home-sweep">AI 槓桿力：從工作流程到可驗證原型</span></p><p class="mt-1 text-sm text-sds-graphite">先找出值得改的工作，再把 AI 用進流程。</p><dl class="mt-2 flex flex-wrap gap-x-5 gap-y-1 font-mono text-[11px] text-sds-graphite"><div class="flex gap-1.5"><dt class="text-sds-alpine">適合誰</dt><dd>社會新鮮人、在職 3–5 年</dd></div><div class="flex gap-1.5"><dt class="text-sds-alpine">核心成果</dt><dd>工作流程診斷表</dd></div><div class="flex gap-1.5"><dt class="text-sds-alpine">形式</dt><dd>線上課程 · 入門</dd></div></dl></a></li><li class="border-b border-sds-line"><a class="home-card group block py-5" href="/ai-builder/online/ai-studio-prompt-to-product"><p class="font-medium text-sds-ink"><span class="inline-flex items-center rounded-[4px] border align-middle px-1.5 py-[3px] font-mono text-[11px] uppercase tracking-[0.06em] border-sds-ink bg-sds-paper text-sds-ink mr-2">線上自學</span><span class="home-sweep">AI Studio 入門：從提示詞到產品</span></p><p class="mt-1 text-sm text-sds-graphite">把想法寫成需求文件，再做出可試用的 MVP。</p><dl class="mt-2 flex flex-wrap gap-x-5 gap-y-1 font-mono text-[11px] text-sds-graphite"><div class="flex gap-1.5"><dt class="text-sds-alpine">適合誰</dt><dd>學生、在職 3–5 年</dd></div><div class="flex gap-1.5"><dt class="text-sds-alpine">核心成果</dt><dd>第一份需求文件</dd></div><div class="flex gap-1.5"><dt class="text-sds-alpine">形式</dt><dd>線上課程 · 入門</dd></div></dl></a></li><li class="border-b border-sds-line"><a class="home-card group block py-5" href="/ai-builder/online/ai-coding-claude-openclaw"><p class="font-medium text-sds-ink"><span class="inline-flex items-center rounded-[4px] border align-middle px-1.5 py-[3px] font-mono text-[11px] uppercase tracking-[0.06em] border-sds-ink bg-sds-paper text-sds-ink mr-2">線上自學</span><span class="home-sweep">AI Coding 實戰：Claude Code + OpenClaw</span></p><p class="mt-1 text-sm text-sds-graphite">從第一個網頁走到 Git、部署與 Telegram 助理。</p><dl class="mt-2 flex flex-wrap gap-x-5 gap-y-1 font-mono text-[11px] text-sds-graphite"><div class="flex gap-1.5"><dt class="text-sds-alpine">適合誰</dt><dd>學生</dd></div><div class="flex gap-1.5"><dt class="text-sds-alpine">核心成果</dt><dd>可部署的網頁作品</dd></div><div class="flex gap-1.5"><dt class="text-sds-alpine">形式</dt><dd>線上課程 · 入門</dd></div></dl></a></li></ul></div></div></div></div></section><section class="border-t border-sds-line bg-sds-paper py-14 md:py-20"><div class="container"><div class="grid items-center gap-10 lg:grid-cols-2 lg:gap-12"><div><div class="home-reveal flex flex-col gap-4 md:flex-row md:items-end md:justify-between md:gap-8 mb-6 md:mb-6"><div class="[&amp;_h2]:text-[clamp(1.5rem,1.3rem+0.6vw,1.875rem)] [&amp;_.sds-lead]:mt-3 [&amp;_.sds-lead]:text-[15px] md:[&amp;_.sds-lead]:text-[16px]"><div class="max-w-[760px]"><h2>企業合作</h2><p class="sds-lead mt-4">企業內訓，我比較在意課後能不能真的用上。通常會先看團隊現在的工作流程和卡點，再決定內容要講什麼、練什麼。</p></div></div></div><a class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-btn font-sans font-medium transition-colors duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sds-alpine focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 border border-sds-ink bg-sds-ink text-sds-paper-soft hover:border-[#1f3444] hover:bg-[#1f3444] px-4 py-3 text-[15px]" href="/enterprise">談企業合作 →</a></div><div class="home-reveal"><ul class="grid gap-4 sm:grid-cols-2"><li class="flex min-h-[150px] flex-col rounded-[4px] border border-sds-line bg-sds-paper-soft p-5"><p class="font-serif text-lg font-medium text-sds-ink">AI Strategy Workshop</p><p class="mt-1 font-mono text-[11px] text-sds-alpine">AI 導入工作坊</p><p class="mt-auto pt-4 text-sm leading-[1.65] text-sds-graphite">先盤點流程和痛點，再選適合投入的題目。</p></li><li class="flex min-h-[150px] flex-col rounded-[4px] border border-sds-line bg-sds-paper-soft p-5"><p class="font-serif text-lg font-medium text-sds-ink">Agentic Development</p><p class="mt-1 font-mono text-[11px] text-sds-alpine">AI Coding / Agent 開發</p><p class="mt-auto pt-4 text-sm leading-[1.65] text-sds-graphite">讓開發團隊實際走一遍規劃、實作、review 與交付。</p></li><li class="flex min-h-[150px] flex-col rounded-[4px] border border-sds-line bg-sds-paper-soft p-5"><p class="font-serif text-lg font-medium text-sds-ink">AI Engineering</p><p class="mt-1 font-mono text-[11px] text-sds-alpine">AI 工程訓練</p><p class="mt-auto pt-4 text-sm leading-[1.65] text-sds-graphite">依團隊需求安排資料、模型、推論與部署主題。</p></li><li class="flex min-h-[150px] flex-col rounded-[4px] border border-sds-line bg-sds-paper-soft p-5"><p class="font-serif text-lg font-medium text-sds-ink">Custom Training</p><p class="mt-1 font-mono text-[11px] text-sds-alpine">客製課程</p><p class="mt-auto pt-4 text-sm leading-[1.65] text-sds-graphite">用你們的角色與工作情境重做案例和練習。</p></li></ul></div></div></div></section><section id="about" class="border-t border-sds-line bg-sds-paper py-24 md:py-36"><div class="container"><div class="grid items-center gap-12 lg:grid-cols-12 lg:gap-16"><div class="lg:col-span-7"><div class="home-reveal flex flex-col gap-4 md:flex-row md:items-end md:justify-between md:gap-8 mb-8 md:mb-10"><div class="[&amp;_.sds-lead]:mt-5 [&amp;_.sds-lead]:text-[16px] md:[&amp;_.sds-lead]:text-[18px]"><div class="max-w-[760px]"><h2>關於我</h2></div></div></div><div class="home-reveal max-w-[640px]"><p class="font-serif text-[22px] font-medium leading-[1.6] text-sds-ink md:text-[26px]">我擅長把混亂的需求理清，做出能進入真實工作場景的 AI 系統與產品。</p><p class="mt-5 text-base leading-[1.8] text-sds-graphite">從半導體現場、企業數據轉型，到新創產品與 AI 架構工作，我一路練習把模糊的問題整理成可執行的方案。</p><p class="mt-5 text-base leading-[1.8] text-sds-graphite">現在我把研究、工程和產品實踐整理成方法，透過文章、課程與陪伴，幫助更多人練出自己的判斷力。</p><a class="mt-8 inline-block font-medium text-sds-ink underline-offset-4 hover:underline" href="/about">關於我 →</a><p class="mt-10 font-mono text-[11px] uppercase tracking-[0.06em] text-sds-graphite">Electrical Engineering / Data Science / AI Engineering / Product / Teaching</p></div></div><div class="home-reveal lg:col-span-5" style="transition-delay: 120ms;"><img src="/assets/sunny-portrait-BfE6sl75.webp" alt="Sunny 的人像" loading="lazy" fetchpriority="low" decoding="async" class="aspect-[4/5] min-h-[420px] w-full rounded-[4px] object-cover"></div></div></div></section></main></div><footer class="border-t border-sds-line bg-background text-sds-graphite"><div class="container grid grid-cols-2 gap-x-6 gap-y-10 py-12 md:grid-cols-4 md:py-[56px]"><div><h2 class="sds-eyebrow mb-4 font-mono text-[12px] tracking-[0.08em]">Writing topics</h2><ul class="space-y-2.5 text-[14px]"><li><a class="transition-colors hover:text-sds-ink" href="/learn/topic/ai-and-work">AI &amp; Work</a></li><li><a class="transition-colors hover:text-sds-ink" href="/learn/topic/ai-engineering">AI Engineering</a></li><li><a class="transition-colors hover:text-sds-ink" href="/learn/topic/agent-systems">Agent Systems</a></li><li><a class="transition-colors hover:text-sds-ink" href="/learn/topic/product-thinking">Product Thinking</a></li><li><a class="transition-colors hover:text-sds-ink" href="/learn/topic/data-science">Data Science</a></li><li><a class="transition-colors hover:text-sds-ink" href="/learn/topic/building-shipping">Building &amp; Shipping</a></li></ul></div><div><h2 class="sds-eyebrow mb-4 font-mono text-[12px] tracking-[0.08em]">Learn</h2><ul class="space-y-2.5 text-[14px]"><li><a class="transition-colors hover:text-sds-ink" href="/ai-builder/online">Courses</a></li><li><a class="transition-colors hover:text-sds-ink" href="/ai-builder">AI Native Builder Program</a></li><li><a class="transition-colors hover:text-sds-ink" href="/ai-builder/schedule">Schedule</a></li><li><a class="transition-colors hover:text-sds-ink" href="/build">Free Starter Kit</a></li><li><a class="transition-colors hover:text-sds-ink" href="/toolkit">Toolkit</a></li></ul></div><div><h2 class="sds-eyebrow mb-4 font-mono text-[12px] tracking-[0.08em]">Work</h2><ul class="space-y-2.5 text-[14px]"><li><a class="transition-colors hover:text-sds-ink" href="/enterprise">For Teams</a></li><li><a class="transition-colors hover:text-sds-ink" href="/ai-builder/projects">Projects</a></li><li><a class="transition-colors hover:text-sds-ink" href="/consult">Contact</a></li></ul></div><div><h2 class="sds-eyebrow mb-4 font-mono text-[12px] tracking-[0.08em]">About</h2><ul class="space-y-2.5 text-[14px]"><li><a class="transition-colors hover:text-sds-ink" href="/about">About</a></li><li><a class="transition-colors hover:text-sds-ink" href="/learn">Writing</a></li><li><a class="transition-colors hover:text-sds-ink" href="/privacy">Privacy</a></li><li><a class="transition-colors hover:text-sds-ink" href="/terms">Terms</a></li></ul></div></div><div class="container flex flex-col gap-4 border-t border-sds-line py-6 md:flex-row md:items-center md:justify-between"><div class="space-y-1"><p class="font-serif text-[15px] text-sds-ink">Sunny Data Science｜AI、資料、產品與教學</p><p class="sds-meta normal-case tracking-normal text-sds-graphite">© 2026 Sunny Data Science · 傳恩私塾股份有限公司</p></div><ul class="-ml-2 flex gap-1 md:ml-0"><li><a href="https://www.instagram.com/datasunnie/" target="_blank" rel="noopener noreferrer" aria-label="Instagram" class="flex h-9 w-9 items-center justify-center rounded-btn text-sds-graphite transition-colors hover:bg-sds-ink/5 hover:text-sds-ink"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-instagram h-[18px] w-[18px]"><rect width="20" height="20" x="2" y="2" rx="5" ry="5"></rect><path d="M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z"></path><line x1="17.5" x2="17.51" y1="6.5" y2="6.5"></line></svg></a></li><li><a href="https://www.threads.net/@datasunnie" target="_blank" rel="noopener noreferrer" aria-label="Threads" class="flex h-9 w-9 items-center justify-center rounded-btn text-sds-graphite transition-colors hover:bg-sds-ink/5 hover:text-sds-ink"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-at-sign h-[18px] w-[18px]"><circle cx="12" cy="12" r="4"></circle><path d="M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-4 8"></path></svg></a></li><li><a href="https://www.facebook.com/share/18GVXbXUFE/?mibextid=wwXIfr" target="_blank" rel="noopener noreferrer" aria-label="Facebook" class="flex h-9 w-9 items-center justify-center rounded-btn text-sds-graphite transition-colors hover:bg-sds-ink/5 hover:text-sds-ink"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-facebook h-[18px] w-[18px]"><path d="M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z"></path></svg></a></li><li><a href="https://www.linkedin.com/in/wei-yang-weng-13b71215b/" target="_blank" rel="noopener noreferrer" aria-label="LinkedIn" class="flex h-9 w-9 items-center justify-center rounded-btn text-sds-graphite transition-colors hover:bg-sds-ink/5 hover:text-sds-ink"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-linkedin h-[18px] w-[18px]"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"></path><rect width="4" height="12" x="2" y="9"></rect><circle cx="4" cy="4" r="2"></circle></svg></a></li><li><a href="https://line.me/R/ti/p/@055zjitb" target="_blank" rel="noopener noreferrer" aria-label="LINE" class="flex h-9 w-9 items-center justify-center rounded-btn text-sds-graphite transition-colors hover:bg-sds-ink/5 hover:text-sds-ink"><svg viewBox="0 0 24 24" fill="currentColor" class="h-[18px] w-[18px]" aria-hidden="true"><path d="M19.365 9.863c.349 0 .63.285.63.631 0 .345-.281.63-.63.63H17.61v1.125h1.755c.349 0 .63.283.63.63 0 .344-.281.629-.63.629h-2.386a.63.63 0 0 1-.63-.629V8.108c0-.345.282-.63.63-.63h2.386c.349 0 .63.285.63.63 0 .349-.281.63-.63.63H17.61v1.125h1.755zm-3.855 3.016a.63.63 0 0 1-.63.631.618.618 0 0 1-.51-.27l-2.443-3.317v2.956a.629.629 0 0 1-1.26 0V8.108a.629.629 0 0 1 .63-.629c.195 0 .375.104.495.254l2.462 3.33V8.108c0-.345.282-.63.63-.63.349 0 .63.285.63.63v4.771h-.004zm-5.741 0a.63.63 0 0 1-1.26 0V8.108c0-.345.285-.63.63-.63.348 0 .63.285.63.63v4.771zm-2.466.631H4.917a.63.63 0 0 1-.63-.631V8.108c0-.345.285-.63.63-.63.349 0 .63.285.63.63v4.141h1.756c.348 0 .629.283.629.63 0 .344-.282.629-.629.629M24 10.314C24 4.943 18.615.572 12 .572S0 4.943 0 10.314c0 4.811 4.27 8.842 10.035 9.608.391.082.923.258 1.058.59.12.301.079.766.038 1.08l-.164 1.02c-.045.301-.24 1.186 1.049.645 1.291-.539 6.916-4.078 9.436-6.975C23.176 14.393 24 12.458 24 10.314"></path></svg></a></li></ul></div></footer></div><div class="fixed bottom-5 right-5 z-50 flex flex-col items-end gap-3"><button aria-label="需要幫忙嗎" aria-expanded="false" class="flex h-14 w-14 items-center justify-center rounded-full bg-primary text-primary-foreground shadow-lg transition-transform hover:scale-105"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-circle h-6 w-6"><path d="M7.9 20A9 9 0 1 0 4 16.1L2 22Z"></path></svg></button></div></div>
  
</body></html>