[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"site-settings":3,"footer-friends":48,"tag-projects-fine-tuning":63,"tag-posts-fine-tuning":73,"sidebar-tags":122,"sidebar-donations":263,"ad-sidebar_top":270,"ad-sidebar_mid":272,"ad-sidebar_bottom":274},{"alipayQr":4,"beianNumber":5,"commentsRequireApproval":6,"contactEmail":7,"copyrightNotice":5,"donationEnabled":6,"emailCodeExpireMinutes":8,"enableRegistration":6,"followBilibiliUrl":9,"followGithubUrl":10,"followQqGroup":11,"followQqQr":12,"followWechatQr":13,"footerHtml":5,"gaTrackingId":5,"heroEnabled":6,"heroSearchPlaceholder":5,"heroSubtitle":14,"heroTitle":15,"homeCategoryTabsCount":16,"homePageSize":17,"homeProjectsCount":18,"homeSpecialsCount":19,"homeToolsCount":18,"icpNumber":20,"inviteDefaultQuota":21,"inviteRequired":22,"logoUrl":23,"mailPasswordChangedBody":24,"mailPasswordChangedSubject":25,"mailRegisterCodeBody":26,"mailRegisterCodeSubject":27,"mailResetCodeBody":28,"mailResetCodeSubject":29,"mailWelcomeBody":30,"mailWelcomeSubject":31,"miniappAppid":32,"miniappEnabled":6,"profileAvatar":33,"profileBio":34,"profileName":35,"profileWechatQr":36,"promoteEnabled":6,"promoteNotice":5,"promoteWechat":5,"requireEmailVerify":6,"sectionArticleEnabled":6,"sectionArticleTitle":37,"sectionProjectsEnabled":6,"sectionProjectsTitle":38,"sectionSpecialEnabled":6,"sectionSpecialTitle":39,"sectionToolsEnabled":6,"sectionToolsTitle":40,"seoAuthor":41,"seoBaiduTongjiId":5,"seoBaiduVerify":5,"seoCanonicalEnabled":6,"seoDescription":42,"seoGoogleVerify":5,"seoKeywords":5,"seoOgImage":23,"seoRobots":5,"seoSitemapEnabled":6,"seoTitle":43,"seoTitleTemplate":44,"showHeroStats":6,"showSidebarDonations":6,"showSidebarFeedback":6,"showSidebarFollowUs":6,"showSidebarProfile":6,"showSidebarTagCloud":6,"siteDescription":42,"siteFavicon":45,"siteName":41,"siteUrl":46,"wechatQr":47},"\u002Fstatic\u002Fuploads\u002Fimages\u002F2026\u002F09\u002F29\u002F1790628031878385634.png","","true","enghin110@qq.com","10","https:\u002F\u002Fspace.bilibili.com\u002F470616503","https:\u002F\u002Fgithub.com\u002Fitwuge","606262780","\u002Fstatic\u002Fuploads\u002Fimages\u002F2026\u002F09\u002F29\u002F1790627647190853446.png","\u002Fstatic\u002Fuploads\u002Fimages\u002F2026\u002F09\u002F29\u002F1790627638856258082.jpg","精选 AI 教程、开源项目与实用工具，助你从入门到精通","探索人工智能的无限可能","6","7","4","3","赣ICP备2023014108号-2","5","false","\u002Fimages\u002Flogo\u002Flogo.png","\u003C!DOCTYPE html>\n\u003Chtml lang=\"zh-CN\">\n\u003Chead>\u003Cmeta charset=\"UTF-8\">\u003Cmeta name=\"viewport\" content=\"width=device-width,initial-scale=1.0\">\u003C\u002Fhead>\n\u003Cbody style=\"margin:0;padding:24px 0;background:#f1f5f9;font-family:'Microsoft YaHei','PingFang SC',Helvetica,Arial,sans-serif;\">\n  \u003Ctable role=\"presentation\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" style=\"background:#f1f5f9;\">\n    \u003Ctr>\n      \u003Ctd align=\"center\" style=\"padding:0 16px;\">\n        \u003Ctable role=\"presentation\" width=\"600\" cellpadding=\"0\" cellspacing=\"0\" style=\"max-width:600px;width:100%;\">\n          \u003C!-- 品牌头部 -->\n          \u003Ctr>\n            \u003Ctd style=\"background:#3b82f6;border-radius:12px 12px 0 0;padding:20px 28px;\">\n              \u003Cspan style=\"font-size:18px;font-weight:bold;color:#ffffff;\">\u003Ca href=\"{site_url}\" style=\"color:#ffffff;text-decoration:none;\">{site_name}\u003C\u002Fa>\u003C\u002Fspan>\n              \u003Cspan style=\"float:right;font-size:12px;color:#dbeafe;line-height:26px;\">{site_description}\u003C\u002Fspan>\n            \u003C\u002Ftd>\n          \u003C\u002Ftr>\n          \u003C!-- 正文卡片 -->\n          \u003Ctr>\n            \u003Ctd style=\"background:#ffffff;padding:32px 28px;border-radius:0 0 12px 12px;box-shadow:0 2px 8px rgba(15,23,42,0.06);\">\n              \n  \u003Ch2 style=\"margin:0 0 16px;font-size:20px;color:#1e293b;\">🔒 账户密码修改成功\u003C\u002Fh2>\n  \u003Cp style=\"margin:0 0 16px;font-size:14px;line-height:1.8;color:#475569;\">\n    你好，\u003Cstrong style=\"color:#1e293b;\">{username}\u003C\u002Fstrong>，你的账户密码已于刚刚修改成功。\n  \u003C\u002Fp>\n  \u003Ctable role=\"presentation\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" style=\"background:#f8fafc;border-radius:10px;margin:8px 0 4px;\">\n    \u003Ctr>\u003Ctd style=\"padding:14px 18px;font-size:13px;line-height:2;color:#475569;\">\n      账户用户名：\u003Cstrong style=\"color:#1e293b;\">{username}\u003C\u002Fstrong>\u003Cbr>\n      账户邮箱：\u003Cstrong style=\"color:#1e293b;\">{email}\u003C\u002Fstrong>\u003Cbr>\n      修改时间：\u003Cstrong style=\"color:#1e293b;\">{change_time}\u003C\u002Fstrong>\n    \u003C\u002Ftd>\u003C\u002Ftr>\n  \u003C\u002Ftable>\n  \u003Cp style=\"margin:16px 0 0;font-size:13px;line-height:1.8;color:#64748b;\">\n    如果这是你本人的操作，请忽略本邮件；\u003Cstrong style=\"color:#dc2626;\">如果不是你本人操作，说明账户密码可能已泄露\u003C\u002Fstrong>，\n    请立即使用「忘记密码」功能重置密码，并通过页脚联系邮箱告知站长。\n  \u003C\u002Fp>\n  \n  \u003Cp style=\"text-align:center;margin:28px 0 8px;\">\n    \u003Ca href=\"{site_url}\" style=\"display:inline-block;padding:12px 36px;background:#3b82f6;color:#ffffff;font-size:15px;font-weight:bold;text-decoration:none;border-radius:8px;\">进入{site_name}\u003C\u002Fa>\n  \u003C\u002Fp>\n            \u003C\u002Ftd>\n          \u003C\u002Ftr>\n          \u003C!-- 页脚 -->\n          \u003Ctr>\n            \u003Ctd align=\"center\" style=\"padding:20px 16px 0;\">\n              \n              \u003Cp style=\"margin:6px 0 0;font-size:12px;color:#94a3b8;\">联系邮箱：\u003Ca href=\"mailto:{contact_email}\" style=\"color:#64748b;text-decoration:none;\">{contact_email}\u003C\u002Fa>\u003C\u002Fp>\n              \u003Cp style=\"margin:6px 0 0;font-size:12px;color:#94a3b8;\">此邮件由系统自动发送，请勿直接回复 · © {year} {site_name}\u003C\u002Fp>\n            \u003C\u002Ftd>\n          \u003C\u002Ftr>\n        \u003C\u002Ftable>\n      \u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftable>\n\u003C\u002Fbody>\n\u003C\u002Fhtml>","【{site_name}】你的账户密码已修改","\u003C!DOCTYPE html>\n\u003Chtml lang=\"zh-CN\">\n\u003Chead>\u003Cmeta charset=\"UTF-8\">\u003Cmeta name=\"viewport\" content=\"width=device-width,initial-scale=1.0\">\u003C\u002Fhead>\n\u003Cbody style=\"margin:0;padding:24px 0;background:#f1f5f9;font-family:'Microsoft YaHei','PingFang SC',Helvetica,Arial,sans-serif;\">\n  \u003Ctable role=\"presentation\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" style=\"background:#f1f5f9;\">\n    \u003Ctr>\n      \u003Ctd align=\"center\" style=\"padding:0 16px;\">\n        \u003Ctable role=\"presentation\" width=\"600\" cellpadding=\"0\" cellspacing=\"0\" style=\"max-width:600px;width:100%;\">\n          \u003C!-- 品牌头部 -->\n          \u003Ctr>\n            \u003Ctd style=\"background:#3b82f6;border-radius:12px 12px 0 0;padding:20px 28px;\">\n              \u003Cspan style=\"font-size:18px;font-weight:bold;color:#ffffff;\">\u003Ca href=\"{site_url}\" style=\"color:#ffffff;text-decoration:none;\">{site_name}\u003C\u002Fa>\u003C\u002Fspan>\n              \u003Cspan style=\"float:right;font-size:12px;color:#dbeafe;line-height:26px;\">{site_description}\u003C\u002Fspan>\n            \u003C\u002Ftd>\n          \u003C\u002Ftr>\n          \u003C!-- 正文卡片 -->\n          \u003Ctr>\n            \u003Ctd style=\"background:#ffffff;padding:32px 28px;border-radius:0 0 12px 12px;box-shadow:0 2px 8px rgba(15,23,42,0.06);\">\n              \n  \u003Ch2 style=\"margin:0 0 16px;font-size:20px;color:#1e293b;\">注册邮箱验证码\u003C\u002Fh2>\n  \u003Cp style=\"margin:0 0 16px;font-size:14px;line-height:1.8;color:#475569;\">欢迎注册 \u003Cstrong>{site_name}\u003C\u002Fstrong>！感谢你的加入，请使用下方验证码完成邮箱验证：\u003C\u002Fp>\n  \u003Ctable role=\"presentation\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" style=\"margin:8px 0 4px;\">\n    \u003Ctr>\n      \u003Ctd align=\"center\" style=\"background:#f8fafc;border:1px dashed #cbd5e1;border-radius:10px;padding:22px 0;\">\n        \u003Cspan style=\"font-size:32px;font-weight:bold;letter-spacing:10px;color:#3b82f6;font-family:Consolas,Menlo,monospace;\">{code}\u003C\u002Fspan>\n      \u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftable>\n  \u003Cp style=\"margin:12px 0 0;font-size:13px;color:#64748b;\">\n    验证码 \u003Cstrong style=\"color:#dc2626;\">{expire} 分钟\u003C\u002Fstrong> 内有效，为保障账户安全，请勿向他人泄露。\n  \u003C\u002Fp>\n  \u003Chr style=\"border:none;border-top:1px solid #e2e8f0;margin:24px 0;\">\n  \n  \u003Cp style=\"margin:0 0 12px;font-size:14px;line-height:1.8;color:#475569;\">\n    这里是 \u003Cstrong style=\"color:#1e293b;\">{site_name}\u003C\u002Fstrong>，{site_description}\n  \u003C\u002Fp>\n  \u003Ctable role=\"presentation\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" style=\"margin:8px 0 4px;\">\n    \u003Ctr>\n      \u003Ctd width=\"33%\" valign=\"top\" style=\"padding:6px;\">\n        \u003Cdiv style=\"background:#eff6ff;border-radius:8px;padding:14px 10px;text-align:center;\">\n          \u003Cdiv style=\"font-size:15px;\">📚\u003C\u002Fdiv>\n          \u003Cdiv style=\"font-size:13px;font-weight:bold;color:#1e40af;margin-top:4px;\">精选教程\u003C\u002Fdiv>\n          \u003Cdiv style=\"font-size:12px;color:#64748b;margin-top:2px;\">从入门到实战\u003C\u002Fdiv>\n        \u003C\u002Fdiv>\n      \u003C\u002Ftd>\n      \u003Ctd width=\"33%\" valign=\"top\" style=\"padding:6px;\">\n        \u003Cdiv style=\"background:#ecfdf5;border-radius:8px;padding:14px 10px;text-align:center;\">\n          \u003Cdiv style=\"font-size:15px;\">🚀\u003C\u002Fdiv>\n          \u003Cdiv style=\"font-size:13px;font-weight:bold;color:#065f46;margin-top:4px;\">开源项目\u003C\u002Fdiv>\n          \u003Cdiv style=\"font-size:12px;color:#64748b;margin-top:2px;\">精选可部署方案\u003C\u002Fdiv>\n        \u003C\u002Fdiv>\n      \u003C\u002Ftd>\n      \u003Ctd width=\"34%\" valign=\"top\" style=\"padding:6px;\">\n        \u003Cdiv style=\"background:#fff7ed;border-radius:8px;padding:14px 10px;text-align:center;\">\n          \u003Cdiv style=\"font-size:15px;\">🧰\u003C\u002Fdiv>\n          \u003Cdiv style=\"font-size:13px;font-weight:bold;color:#9a3412;margin-top:4px;\">在线工具\u003C\u002Fdiv>\n          \u003Cdiv style=\"font-size:12px;color:#64748b;margin-top:2px;\">即开即用提效\u003C\u002Fdiv>\n        \u003C\u002Fdiv>\n      \u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftable>\n  \u003Cp style=\"margin:20px 0 0;font-size:12px;line-height:1.8;color:#94a3b8;\">\n    如果这不是你本人的操作，请忽略本邮件，你的账户安全不会受到影响。\n  \u003C\u002Fp>\n            \u003C\u002Ftd>\n          \u003C\u002Ftr>\n          \u003C!-- 页脚 -->\n          \u003Ctr>\n            \u003Ctd align=\"center\" style=\"padding:20px 16px 0;\">\n              \n              \u003Cp style=\"margin:6px 0 0;font-size:12px;color:#94a3b8;\">联系邮箱：\u003Ca href=\"mailto:{contact_email}\" style=\"color:#64748b;text-decoration:none;\">{contact_email}\u003C\u002Fa>\u003C\u002Fp>\n              \u003Cp style=\"margin:6px 0 0;font-size:12px;color:#94a3b8;\">此邮件由系统自动发送，请勿直接回复 · © {year} {site_name}\u003C\u002Fp>\n            \u003C\u002Ftd>\n          \u003C\u002Ftr>\n        \u003C\u002Ftable>\n      \u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftable>\n\u003C\u002Fbody>\n\u003C\u002Fhtml>","【{site_name}】注册验证码","\u003C!DOCTYPE html>\n\u003Chtml lang=\"zh-CN\">\n\u003Chead>\u003Cmeta charset=\"UTF-8\">\u003Cmeta name=\"viewport\" content=\"width=device-width,initial-scale=1.0\">\u003C\u002Fhead>\n\u003Cbody style=\"margin:0;padding:24px 0;background:#f1f5f9;font-family:'Microsoft YaHei','PingFang SC',Helvetica,Arial,sans-serif;\">\n  \u003Ctable role=\"presentation\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" style=\"background:#f1f5f9;\">\n    \u003Ctr>\n      \u003Ctd align=\"center\" style=\"padding:0 16px;\">\n        \u003Ctable role=\"presentation\" width=\"600\" cellpadding=\"0\" cellspacing=\"0\" style=\"max-width:600px;width:100%;\">\n          \u003C!-- 品牌头部 -->\n          \u003Ctr>\n            \u003Ctd style=\"background:#3b82f6;border-radius:12px 12px 0 0;padding:20px 28px;\">\n              \u003Cspan style=\"font-size:18px;font-weight:bold;color:#ffffff;\">\u003Ca href=\"{site_url}\" style=\"color:#ffffff;text-decoration:none;\">{site_name}\u003C\u002Fa>\u003C\u002Fspan>\n              \u003Cspan style=\"float:right;font-size:12px;color:#dbeafe;line-height:26px;\">{site_description}\u003C\u002Fspan>\n            \u003C\u002Ftd>\n          \u003C\u002Ftr>\n          \u003C!-- 正文卡片 -->\n          \u003Ctr>\n            \u003Ctd style=\"background:#ffffff;padding:32px 28px;border-radius:0 0 12px 12px;box-shadow:0 2px 8px rgba(15,23,42,0.06);\">\n              \n  \u003Ch2 style=\"margin:0 0 16px;font-size:20px;color:#1e293b;\">找回密码验证码\u003C\u002Fh2>\n  \u003Cp style=\"margin:0 0 16px;font-size:14px;line-height:1.8;color:#475569;\">你正在找回账户密码，请使用下方验证码完成重置操作：\u003C\u002Fp>\n  \u003Ctable role=\"presentation\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" style=\"margin:8px 0 4px;\">\n    \u003Ctr>\n      \u003Ctd align=\"center\" style=\"background:#f8fafc;border:1px dashed #cbd5e1;border-radius:10px;padding:22px 0;\">\n        \u003Cspan style=\"font-size:32px;font-weight:bold;letter-spacing:10px;color:#3b82f6;font-family:Consolas,Menlo,monospace;\">{code}\u003C\u002Fspan>\n      \u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftable>\n  \u003Cp style=\"margin:12px 0 0;font-size:13px;color:#64748b;\">\n    验证码 \u003Cstrong style=\"color:#dc2626;\">{expire} 分钟\u003C\u002Fstrong> 内有效，为保障账户安全，请勿向他人泄露。\n  \u003C\u002Fp>\n  \u003Chr style=\"border:none;border-top:1px solid #e2e8f0;margin:24px 0;\">\n  \n  \u003Cp style=\"margin:0 0 12px;font-size:14px;line-height:1.8;color:#475569;\">\n    这里是 \u003Cstrong style=\"color:#1e293b;\">{site_name}\u003C\u002Fstrong>，{site_description}\n  \u003C\u002Fp>\n  \u003Ctable role=\"presentation\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" style=\"margin:8px 0 4px;\">\n    \u003Ctr>\n      \u003Ctd width=\"33%\" valign=\"top\" style=\"padding:6px;\">\n        \u003Cdiv style=\"background:#eff6ff;border-radius:8px;padding:14px 10px;text-align:center;\">\n          \u003Cdiv style=\"font-size:15px;\">📚\u003C\u002Fdiv>\n          \u003Cdiv style=\"font-size:13px;font-weight:bold;color:#1e40af;margin-top:4px;\">精选教程\u003C\u002Fdiv>\n          \u003Cdiv style=\"font-size:12px;color:#64748b;margin-top:2px;\">从入门到实战\u003C\u002Fdiv>\n        \u003C\u002Fdiv>\n      \u003C\u002Ftd>\n      \u003Ctd width=\"33%\" valign=\"top\" style=\"padding:6px;\">\n        \u003Cdiv style=\"background:#ecfdf5;border-radius:8px;padding:14px 10px;text-align:center;\">\n          \u003Cdiv style=\"font-size:15px;\">🚀\u003C\u002Fdiv>\n          \u003Cdiv style=\"font-size:13px;font-weight:bold;color:#065f46;margin-top:4px;\">开源项目\u003C\u002Fdiv>\n          \u003Cdiv style=\"font-size:12px;color:#64748b;margin-top:2px;\">精选可部署方案\u003C\u002Fdiv>\n        \u003C\u002Fdiv>\n      \u003C\u002Ftd>\n      \u003Ctd width=\"34%\" valign=\"top\" style=\"padding:6px;\">\n        \u003Cdiv style=\"background:#fff7ed;border-radius:8px;padding:14px 10px;text-align:center;\">\n          \u003Cdiv style=\"font-size:15px;\">🧰\u003C\u002Fdiv>\n          \u003Cdiv style=\"font-size:13px;font-weight:bold;color:#9a3412;margin-top:4px;\">在线工具\u003C\u002Fdiv>\n          \u003Cdiv style=\"font-size:12px;color:#64748b;margin-top:2px;\">即开即用提效\u003C\u002Fdiv>\n        \u003C\u002Fdiv>\n      \u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftable>\n  \u003Cp style=\"margin:20px 0 0;font-size:12px;line-height:1.8;color:#94a3b8;\">\n    如果这不是你本人的操作，请忽略本邮件，你的账户安全不会受到影响。\n  \u003C\u002Fp>\n            \u003C\u002Ftd>\n          \u003C\u002Ftr>\n          \u003C!-- 页脚 -->\n          \u003Ctr>\n            \u003Ctd align=\"center\" style=\"padding:20px 16px 0;\">\n              \n              \u003Cp style=\"margin:6px 0 0;font-size:12px;color:#94a3b8;\">联系邮箱：\u003Ca href=\"mailto:{contact_email}\" style=\"color:#64748b;text-decoration:none;\">{contact_email}\u003C\u002Fa>\u003C\u002Fp>\n              \u003Cp style=\"margin:6px 0 0;font-size:12px;color:#94a3b8;\">此邮件由系统自动发送，请勿直接回复 · © {year} {site_name}\u003C\u002Fp>\n            \u003C\u002Ftd>\n          \u003C\u002Ftr>\n        \u003C\u002Ftable>\n      \u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftable>\n\u003C\u002Fbody>\n\u003C\u002Fhtml>","【{site_name}】找回密码验证码","\u003C!DOCTYPE html>\n\u003Chtml lang=\"zh-CN\">\n\u003Chead>\u003Cmeta charset=\"UTF-8\">\u003Cmeta name=\"viewport\" content=\"width=device-width,initial-scale=1.0\">\u003C\u002Fhead>\n\u003Cbody style=\"margin:0;padding:24px 0;background:#f1f5f9;font-family:'Microsoft YaHei','PingFang SC',Helvetica,Arial,sans-serif;\">\n  \u003Ctable role=\"presentation\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" style=\"background:#f1f5f9;\">\n    \u003Ctr>\n      \u003Ctd align=\"center\" style=\"padding:0 16px;\">\n        \u003Ctable role=\"presentation\" width=\"600\" cellpadding=\"0\" cellspacing=\"0\" style=\"max-width:600px;width:100%;\">\n          \u003C!-- 品牌头部 -->\n          \u003Ctr>\n            \u003Ctd style=\"background:#3b82f6;border-radius:12px 12px 0 0;padding:20px 28px;\">\n              \u003Cspan style=\"font-size:18px;font-weight:bold;color:#ffffff;\">\u003Ca href=\"{site_url}\" style=\"color:#ffffff;text-decoration:none;\">{site_name}\u003C\u002Fa>\u003C\u002Fspan>\n              \u003Cspan style=\"float:right;font-size:12px;color:#dbeafe;line-height:26px;\">{site_description}\u003C\u002Fspan>\n            \u003C\u002Ftd>\n          \u003C\u002Ftr>\n          \u003C!-- 正文卡片 -->\n          \u003Ctr>\n            \u003Ctd style=\"background:#ffffff;padding:32px 28px;border-radius:0 0 12px 12px;box-shadow:0 2px 8px rgba(15,23,42,0.06);\">\n              \n  \u003Ch2 style=\"margin:0 0 4px;font-size:20px;color:#1e293b;\">🎉 欢迎加入 {site_name}！\u003Cspan style=\"display:inline-block;margin-left:8px;padding:2px 8px;background:#dcfce7;color:#15803d;font-size:12px;border-radius:10px;vertical-align:middle;\">邮箱已验证\u003C\u002Fspan>\u003C\u002Fh2>\n  \u003Cp style=\"margin:0 0 16px;font-size:14px;line-height:1.8;color:#475569;\">\n    你好，\u003Cstrong style=\"color:#1e293b;\">{username}\u003C\u002Fstrong>，你的账户已注册成功。\n  \u003C\u002Fp>\n  \u003Ctable role=\"presentation\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" style=\"background:#f8fafc;border-radius:10px;margin:8px 0 4px;\">\n    \u003Ctr>\u003Ctd style=\"padding:14px 18px;font-size:13px;line-height:2;color:#475569;\">\n      账户用户名：\u003Cstrong style=\"color:#1e293b;\">{username}\u003C\u002Fstrong>\u003Cbr>\n      注册邮箱：\u003Cstrong style=\"color:#1e293b;\">{email}\u003C\u002Fstrong>\u003Cbr>\n      注册奖励：\u003Cstrong style=\"color:#dc2626;\">+{register_points} 积分\u003C\u002Fstrong>已发放\n    \u003C\u002Ftd>\u003C\u002Ftr>\n  \u003C\u002Ftable>\n  \u003Chr style=\"border:none;border-top:1px solid #e2e8f0;margin:24px 0;\">\n  \n  \u003Cp style=\"margin:0 0 12px;font-size:14px;line-height:1.8;color:#475569;\">\n    这里是 \u003Cstrong style=\"color:#1e293b;\">{site_name}\u003C\u002Fstrong>，{site_description}\n  \u003C\u002Fp>\n  \u003Ctable role=\"presentation\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" style=\"margin:8px 0 4px;\">\n    \u003Ctr>\n      \u003Ctd width=\"33%\" valign=\"top\" style=\"padding:6px;\">\n        \u003Cdiv style=\"background:#eff6ff;border-radius:8px;padding:14px 10px;text-align:center;\">\n          \u003Cdiv style=\"font-size:15px;\">📚\u003C\u002Fdiv>\n          \u003Cdiv style=\"font-size:13px;font-weight:bold;color:#1e40af;margin-top:4px;\">精选教程\u003C\u002Fdiv>\n          \u003Cdiv style=\"font-size:12px;color:#64748b;margin-top:2px;\">从入门到实战\u003C\u002Fdiv>\n        \u003C\u002Fdiv>\n      \u003C\u002Ftd>\n      \u003Ctd width=\"33%\" valign=\"top\" style=\"padding:6px;\">\n        \u003Cdiv style=\"background:#ecfdf5;border-radius:8px;padding:14px 10px;text-align:center;\">\n          \u003Cdiv style=\"font-size:15px;\">🚀\u003C\u002Fdiv>\n          \u003Cdiv style=\"font-size:13px;font-weight:bold;color:#065f46;margin-top:4px;\">开源项目\u003C\u002Fdiv>\n          \u003Cdiv style=\"font-size:12px;color:#64748b;margin-top:2px;\">精选可部署方案\u003C\u002Fdiv>\n        \u003C\u002Fdiv>\n      \u003C\u002Ftd>\n      \u003Ctd width=\"34%\" valign=\"top\" style=\"padding:6px;\">\n        \u003Cdiv style=\"background:#fff7ed;border-radius:8px;padding:14px 10px;text-align:center;\">\n          \u003Cdiv style=\"font-size:15px;\">🧰\u003C\u002Fdiv>\n          \u003Cdiv style=\"font-size:13px;font-weight:bold;color:#9a3412;margin-top:4px;\">在线工具\u003C\u002Fdiv>\n          \u003Cdiv style=\"font-size:12px;color:#64748b;margin-top:2px;\">即开即用提效\u003C\u002Fdiv>\n        \u003C\u002Fdiv>\n      \u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftable>\n  \u003Cp style=\"margin:16px 0 0;font-size:14px;line-height:1.8;color:#475569;\">登录后你可以：\u003C\u002Fp>\n  \u003Cul style=\"margin:8px 0 0;padding-left:22px;font-size:14px;line-height:2;color:#475569;\">\n    \u003Cli>浏览、收藏优质内容与实用工具\u003C\u002Fli>\n    \u003Cli>投稿教程与项目，审核通过后获得积分奖励\u003C\u002Fli>\n    \u003Cli>参与评论、打分，与其他用户交流\u003C\u002Fli>\n    \u003Cli>通过签到、投稿、互动持续累积积分与等级\u003C\u002Fli>\n  \u003C\u002Ful>\n  \n  \u003Cp style=\"text-align:center;margin:28px 0 8px;\">\n    \u003Ca href=\"{site_url}\" style=\"display:inline-block;padding:12px 36px;background:#3b82f6;color:#ffffff;font-size:15px;font-weight:bold;text-decoration:none;border-radius:8px;\">进入{site_name}\u003C\u002Fa>\n  \u003C\u002Fp>\n            \u003C\u002Ftd>\n          \u003C\u002Ftr>\n          \u003C!-- 页脚 -->\n          \u003Ctr>\n            \u003Ctd align=\"center\" style=\"padding:20px 16px 0;\">\n              \n              \u003Cp style=\"margin:6px 0 0;font-size:12px;color:#94a3b8;\">联系邮箱：\u003Ca href=\"mailto:{contact_email}\" style=\"color:#64748b;text-decoration:none;\">{contact_email}\u003C\u002Fa>\u003C\u002Fp>\n              \u003Cp style=\"margin:6px 0 0;font-size:12px;color:#94a3b8;\">此邮件由系统自动发送，请勿直接回复 · © {year} {site_name}\u003C\u002Fp>\n            \u003C\u002Ftd>\n          \u003C\u002Ftr>\n        \u003C\u002Ftable>\n      \u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftable>\n\u003C\u002Fbody>\n\u003C\u002Fhtml>","【{site_name}】欢迎加入{site_name}，账户注册成功","7111479@qq.com","\u002Fstatic\u002Fuploads\u002Fimages\u002F2026\u002F09\u002F29\u002F1790627623420492239.jpg","全栈开发者，专注 AI 应用与效率工具","武哥","\u002Fstatic\u002Fuploads\u002Fimages\u002F2026\u002F09\u002F29\u002F1790629453503799753.png","热门爆款","精选项目","精选专题","精选工具","AI导航工具站","精选优质 AI 教程、AI 工具与开源项目，助力开发者快速上手人工智能","AI导航工具站 - AI 教程 · AI 项目 · AI 工具","%s - AI导航工具站","\u002Fimages\u002Flogo\u002Ffavicon.ico","https:\u002F\u002Fwuge.fun","\u002Fstatic\u002Fuploads\u002Fimages\u002F2026\u002F09\u002F29\u002F1790628026196296604.png",[49,58],{"id":50,"name":51,"url":52,"logo":53,"description":51,"sortOrder":54,"status":55,"createdAt":56,"updatedAt":57},2,"哔哩哔哩","https:\u002F\u002Fwww.bilibili.com\u002F","\\images\\social\\bilibili.png",0,1,"0001-01-01T00:00:00Z","2026-09-29T04:44:41.867019475+08:00",{"id":55,"name":59,"url":60,"logo":61,"description":59,"sortOrder":54,"status":55,"createdAt":62,"updatedAt":62},"GitHub","https:\u002F\u002Fgithub.com","\\images\\social\\github.png","2026-09-29T04:32:39.65740234+08:00",{"items":64,"pagination":65,"tag":67},[],{"page":55,"pageSize":66,"total":54,"totalPages":55},12,{"id":68,"name":69,"slug":70,"color":71,"postCount":54,"createdAt":72},107,"Fine-tuning","fine-tuning","#e2e8f0","2026-09-29T06:46:14.010861283+08:00",{"items":74,"pagination":121},[75],{"id":76,"title":77,"slug":78,"summary":79,"content":80,"coverImage":81,"categoryId":82,"authorId":55,"viewCount":54,"likeCount":54,"commentCount":54,"isTop":54,"isRecommend":54,"status":55,"rejectReason":5,"publishedAt":83,"createdAt":84,"updatedAt":85,"category":86,"author":91,"tags":99},8,"Fine-tuning 微调入门：什么时候该微调，怎么做","finetune","微调不是万能的——80% 的需求用提示词和 RAG 就能解决。一文讲清微调与 RAG 的选型逻辑、LoRA 原理、数据准备和完整训练流程。","## 先泼一盆冷水：你可能不需要微调\n\n很多新手把微调当成「提升 AI 能力」的首选方案，这是本末倒置。在掏钱训练之前，先按这个顺序检查：\n\n```text\n提示词能解决吗？ → 能，结束\n    ↓ 不能\n加几个示例（Few-shot）能解决吗？ → 能，结束\n    ↓ 不能\nRAG（外挂知识库）能解决吗？ → 能，结束\n    ↓ 不能\n这时才考虑微调\n```\n\n**微调与 RAG 的本质区别**：\n\n| | RAG | 微调 |\n|---|-----|------|\n| 解决什么 | 让模型「知道」它不知道的知识 | 让模型「学会」一种行为模式或风格 |\n| 类比 | 给员工一本手册让他查 | 把员工培训出肌肉记忆 |\n| 数据更新 | 改知识库即可，即时生效 | 需要重新训练 |\n| 成本 | 几乎为零 | 数据准备 + 训练算力 + 调试时间 |\n| 典型场景 | 企业知识库问答、文档客服 | 固定格式输出、特定语气风格、领域术语理解 |\n\n**该微调的典型信号**：\n\n- 需要模型**稳定输出固定格式**（如医疗病历结构化），提示词约束总是不够稳定\n- 需要模型掌握**特定风格\u002F语气**（如模仿某位作家的文风、公司客服的统一话术）\n- 领域术语太多，提示词里塞不下（如法律条文分析、芯片设计文档）\n- 需要在**小模型上达到大模型的垂直能力**，以降低推理成本\n\n## LoRA：普通人玩得起的微调\n\n全量微调一个 7B 模型需要几百 G 显存，普通人根本玩不起。**LoRA（Low-Rank Adaptation）** 的出现改变了这一切。\n\n**原理一句话版**：不动原始模型的 70 亿参数，而是在关键层旁边「外挂」一小撮可训练的参数（通常只占 0.1%-1%），训练时只更新这一小撮。\n\n带来的好处：\n\n- 显存需求从几百 G 降到 **16-24G**（一张 RTX 4090 就能训 7B 模型）\n- 训练速度快 10 倍以上\n- 产出物只有几十 MB 的「适配器文件」，可以为不同任务训练多个 LoRA 随时切换\n\n配合 **QLoRA**（量化 + LoRA，把模型量化到 4bit 再训练），8G 显存的消费级显卡也能入门。\n\n## 完整流程：五步走完一次微调\n\n### 第 1 步：准备数据（最重要，占 70% 的工作量）\n\n微调效果的上限由数据质量决定，不是模型也不是参数。标准格式是 JSONL，每行一条问答对：\n\n```json\n{\"messages\": [{\"role\": \"system\", \"content\": \"你是五更AI导航的客服\"}, {\"role\": \"user\", \"content\": \"网站主要收录什么内容？\"}, {\"role\": \"assistant\", \"content\": \"本站收录 AI 教程、AI 工具、AI 项目和 AI 专题四大板块……\"}]}\n{\"messages\": [{\"role\": \"system\", \"content\": \"你是五更AI导航的客服\"}, {\"role\": \"user\", \"content\": \"怎么投稿？\"}, {\"role\": \"assistant\", \"content\": \"注册账号后进入个人中心，点击投稿……\"}]}\n```\n\n**数据量参考**：\n\n- 学习\u002F实验：100-500 条就能看出风格变化\n- 简单任务：1000-3000 条\n- 生产可用：5000 条以上，且要覆盖各种边界情况\n\n**质量红线**：宁要 500 条精品，不要 5000 条垃圾。数据里有错，模型照单全收。\n\n### 第 2 步：选基座模型\n\n中文场景主流选择：\n\n| 模型 | 参数量 | 特点 |\n|------|-------|------|\n| Qwen2.5-7B | 70 亿 | 中文能力强，生态好，首选 |\n| Qwen2.5-1.5B | 15 亿 | 小显卡福音，能力弱一些 |\n| ChatGLM4-9B | 90 亿 | 智谱出品，对话能力强 |\n| Llama-3.1-8B（中文版） | 80 亿 | 英文强，中文需选社区汉化版 |\n\n第一次练手建议 Qwen2.5-1.5B，半小时就能训完一轮。\n\n### 第 3 步：训练（代码示例）\n\n用 HuggingFace 生态的 `transformers + peft + trl` 三件套：\n\n```python\n# train_lora.py\nfrom datasets import load_dataset\nfrom transformers import AutoModelForCausalLM, AutoTokenizer\nfrom peft import LoraConfig\nfrom trl import SFTConfig, SFTTrainer\n\nMODEL = \"Qwen\u002FQwen2.5-1.5B-Instruct\"\n\n# 加载基座模型与分词器\nmodel = AutoModelForCausalLM.from_pretrained(MODEL, device_map=\"auto\")\ntokenizer = AutoTokenizer.from_pretrained(MODEL)\n\n# LoRA 配置：rank 越大能力越强但越容易过拟合，8-16 是常用甜点\nlora_config = LoraConfig(\n    r=16,\n    lora_alpha=32,\n    target_modules=[\"q_proj\", \"k_proj\", \"v_proj\", \"o_proj\"],\n    lora_dropout=0.05,\n    task_type=\"CAUSAL_LM\",\n)\n\n# 训练参数\nsft_config = SFTConfig(\n    output_dir=\".\u002Foutput\",\n    num_train_epochs=3,           # 小数据 3-5 轮，别贪多\n    per_device_train_batch_size=4,\n    learning_rate=2e-4,           # LoRA 常用学习率\n    logging_steps=10,\n    save_strategy=\"epoch\",\n)\n\n# 开始训练\ndataset = load_dataset(\"json\", data_files=\"train.jsonl\", split=\"train\")\ntrainer = SFTTrainer(\n    model=model,\n    args=sft_config,\n    train_dataset=dataset,\n    peft_config=lora_config,\n)\ntrainer.train()\ntrainer.save_model(\".\u002Fmy_lora\")  # 产出的 LoRA 适配器仅几十 MB\n```\n\n### 第 4 步：评估\n\n别只看 loss 曲线，**用真实的考题测**：\n\n- 准备 20-50 条训练集之外的问题\n- 对比微调前后的回答质量\n- 重点检查：会不会「学傻了」（通用能力退化，术语叫灾难性遗忘）\n\n### 第 5 步：部署使用\n\nLoRA 文件可以动态挂载，也可以用 `merge_and_unload()` 合并进基座模型得到独立模型。推理用 Ollama、vLLM 都支持。\n\n## 新手最容易踩的 5 个坑\n\n1. **数据泄露**：测试题混进了训练集，评估分数虚高，上线就翻车\n2. **过拟合**：训练轮数太多，模型把训练数据背下来了，换个问法就懵\n3. **格式不一致**：训练数据的格式和线上真实输入对不上（比如线上会带历史对话，训练数据全是单轮）\n4. **忽略基座能力**：想让 1.5B 小模型学会复杂推理，数据再好也白搭——选对基座比调参重要\n5. **没有兜底**：微调模型线上表现异常时，要有切回基座模型的预案\n\n## 不想自己折腾？托管微调服务\n\n如果没有显卡或不想配环境：\n\n- **OpenAI Fine-tuning**：网页上传 JSONL 即可，按 token 计费，适合 gpt-4o-mini\n- **阿里云百炼**：支持通义千问系列的可视化微调\n- **硅基流动\u002F各大模型平台**：陆续都上线了托管微调\n\n托管服务适合验证想法；数据敏感或需要深度定制时，还是得回到本地 LoRA 路线。\n\n## 写在最后\n\n微调是典型的「知道什么时候不用，比知道怎么用更重要」的技术。先榨干提示词和 RAG 的潜力，确认真的需要行为层面的改变时再动手。而当你真的需要时，LoRA 已经把门槛降到了一张消费级显卡——剩下的，全在数据里。\n","\u002Fstatic\u002Fuploads\u002Fimages\u002F2026\u002F09\u002F29\u002F1790635574023452717.png",5,"2026-09-29T06:46:32.654576979+08:00","2026-09-29T06:46:14.023578677+08:00","2026-09-29T06:46:32.654630914+08:00",{"id":82,"name":87,"slug":88,"description":5,"icon":89,"sortOrder":82,"postCount":54,"parentId":54,"createdAt":90,"updatedAt":90},"深度学习","deep-learning","i-ri-cpu-line","2026-09-29T04:25:29.699654027+08:00",{"id":55,"username":92,"email":32,"phone":5,"nickname":93,"avatarUrl":94,"bio":5,"role":55,"status":55,"points":54,"lastLoginAt":95,"loginCount":96,"createdAt":97,"updatedAt":98},"wuge","站长","\u002Fstatic\u002Fuploads\u002Favatars\u002F2026\u002F09\u002F29\u002F1790630804049538805.jpg","2026-09-29T05:22:12.192245111+08:00",3,"2026-09-29T04:25:29.170055083+08:00","2026-09-29T05:26:46.960829427+08:00",[100,105,110,115,116],{"id":101,"name":102,"slug":103,"color":71,"postCount":54,"createdAt":104},7,"LLM","llm","2026-09-29T04:25:30.353458642+08:00",{"id":106,"name":107,"slug":108,"color":71,"postCount":54,"createdAt":109},18,"LoRA","lora","2026-09-29T04:25:30.435990894+08:00",{"id":111,"name":112,"slug":113,"color":71,"postCount":54,"createdAt":114},106,"微调","wei-diao","2026-09-29T06:46:14.003649773+08:00",{"id":68,"name":69,"slug":70,"color":71,"postCount":54,"createdAt":72},{"id":117,"name":118,"slug":119,"color":71,"postCount":54,"createdAt":120},108,"模型训练","mo-xing-xun-lian","2026-09-29T06:46:14.016756557+08:00",{"page":55,"pageSize":66,"total":55,"totalPages":55},[123,128,133,138,143,148,153,158,163,168,173,178,183,188,193,198,202,207,212,217,222,227,232,237,238,243,247,252,253,258],{"id":124,"name":125,"slug":126,"color":71,"postCount":54,"createdAt":127},150,"AI","ai","2026-09-29T06:55:38.743861502+08:00",{"id":129,"name":130,"slug":131,"color":71,"postCount":54,"createdAt":132},53,"AI 绘画","ai-hui-hua","2026-09-29T04:25:30.70107663+08:00",{"id":134,"name":135,"slug":136,"color":71,"postCount":54,"createdAt":137},94,"AIGC","aigc","2026-09-29T06:46:13.817043541+08:00",{"id":139,"name":140,"slug":141,"color":71,"postCount":54,"createdAt":142},81,"AI入门","ai-ru-men","2026-09-29T06:46:13.646321088+08:00",{"id":144,"name":145,"slug":146,"color":71,"postCount":54,"createdAt":147},113,"AI写作","ai-xie-zuo","2026-09-29T06:46:14.098797917+08:00",{"id":149,"name":150,"slug":151,"color":71,"postCount":54,"createdAt":152},95,"AI工具","ai-gong-ju","2026-09-29T06:46:13.849105815+08:00",{"id":154,"name":155,"slug":156,"color":71,"postCount":54,"createdAt":157},87,"AI技巧","ai-ji-qiao","2026-09-29T06:46:13.717351439+08:00",{"id":159,"name":160,"slug":161,"color":71,"postCount":54,"createdAt":162},92,"AI绘画","ai-hui-hua-2","2026-09-29T06:46:13.800506851+08:00",{"id":164,"name":165,"slug":166,"color":71,"postCount":54,"createdAt":167},88,"AI编程","ai-bian-cheng","2026-09-29T06:46:13.748934007+08:00",{"id":169,"name":170,"slug":171,"color":71,"postCount":54,"createdAt":172},104,"API","api","2026-09-29T06:46:13.964167454+08:00",{"id":174,"name":175,"slug":176,"color":71,"postCount":54,"createdAt":177},24,"Agent","agent","2026-09-29T04:25:30.481917452+08:00",{"id":179,"name":180,"slug":181,"color":71,"postCount":54,"createdAt":182},15,"Apache-2.0","apache-2-0","2026-09-29T04:25:30.413130076+08:00",{"id":184,"name":185,"slug":186,"color":71,"postCount":54,"createdAt":187},124,"BeautifulSoup","beautifulsoup","2026-09-29T06:55:38.372320794+08:00",{"id":189,"name":190,"slug":191,"color":71,"postCount":54,"createdAt":192},71,"C++","c","2026-09-29T04:25:30.832723566+08:00",{"id":194,"name":195,"slug":196,"color":71,"postCount":54,"createdAt":197},9,"C\u002FC++","c-c","2026-09-29T04:25:30.367438818+08:00",{"id":76,"name":199,"slug":200,"color":71,"postCount":54,"createdAt":201},"CPU 推理","cpu-tui-li","2026-09-29T04:25:30.360161464+08:00",{"id":203,"name":204,"slug":205,"color":71,"postCount":54,"createdAt":206},82,"ChatGPT","chatgpt","2026-09-29T06:46:13.65246271+08:00",{"id":208,"name":209,"slug":210,"color":71,"postCount":54,"createdAt":211},43,"ChatGPT 界面","chatgpt-jie-mian","2026-09-29T04:25:30.631791206+08:00",{"id":213,"name":214,"slug":215,"color":71,"postCount":54,"createdAt":216},109,"Coze","coze","2026-09-29T06:46:14.04772698+08:00",{"id":218,"name":219,"slug":220,"color":71,"postCount":54,"createdAt":221},89,"DeepSeek","deepseek","2026-09-29T06:46:13.756746391+08:00",{"id":223,"name":224,"slug":225,"color":71,"postCount":54,"createdAt":226},103,"Embedding","embedding","2026-09-29T06:46:13.931530378+08:00",{"id":228,"name":229,"slug":230,"color":71,"postCount":54,"createdAt":231},139,"Excel","excel","2026-09-29T06:55:38.596869557+08:00",{"id":233,"name":234,"slug":235,"color":71,"postCount":54,"createdAt":236},132,"FastAPI","fastapi","2026-09-29T06:55:38.496902061+08:00",{"id":68,"name":69,"slug":70,"color":71,"postCount":54,"createdAt":72},{"id":239,"name":240,"slug":241,"color":71,"postCount":54,"createdAt":242},97,"Gamma","gamma","2026-09-29T06:46:13.863615311+08:00",{"id":96,"name":244,"slug":245,"color":71,"postCount":54,"createdAt":246},"Go","go","2026-09-29T04:25:30.324360969+08:00",{"id":248,"name":249,"slug":250,"color":71,"postCount":54,"createdAt":251},98,"Kimi","kimi","2026-09-29T06:46:13.871065157+08:00",{"id":101,"name":102,"slug":103,"color":71,"postCount":54,"createdAt":104},{"id":254,"name":255,"slug":256,"color":71,"postCount":54,"createdAt":257},31,"LLMOps","llmops","2026-09-29T04:25:30.534990482+08:00",{"id":259,"name":260,"slug":261,"color":71,"postCount":54,"createdAt":262},101,"LangChain","langchain","2026-09-29T06:46:13.916898801+08:00",[264],{"id":55,"userId":265,"donorName":35,"amount":266,"message":267,"paymentMethod":268,"isAnonymous":54,"status":55,"createdAt":269},null,128,"加油","wechat","2026-09-29T04:45:44+08:00",{"materials":271},[],{"materials":273},[],{"materials":275},[]]