<?xml version="1.0" encoding="utf-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><title>老吴搭建教程</title><link>https://www.lw50.com/</link><description>LW50</description><item><title>AIKE智能PHP在线客服系统WordPress插件</title><link>https://www.lw50.com/post/f45d4cf6.html</link><description>&lt;p style=&quot;text-align: left;&quot;&gt;AIKE智能PHP在线客服系统WordPress插件:&lt;span title=&quot;连接 Z-Blog 与 AIKE AI 智能客服：在线聊天、意向分流、工单提交。&quot;&gt;AIKE 在线客服，使用此插件可一键在WordPress网站任意地方插入客服弹窗及工单入口。（&lt;span title=&quot;连接 Z-Blog 与 AIKE AI 智能客服：在线聊天、意向分流、工单提交。&quot;&gt;客服弹窗&lt;/span&gt;有3种模式可选）&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span title=&quot;连接 Z-Blog 与 AIKE AI 智能客服：在线聊天、意向分流、工单提交。&quot;&gt;&lt;img src=&quot;https://www.lw50.com/zb_users/upload/2026/08/202608281787907567208948.jpg&quot; title=&quot;AIKE智能PHP在线客服系统WordPress插件  第1张&quot; alt=&quot;AIKE智能PHP在线客服系统WordPress插件  第1张&quot; class=&quot;ue-image&quot; style=&quot;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;span class=&quot;std-cata-section&quot; id=&quot;stdcata1&quot;&gt;&lt;span title=&quot;连接 Z-Blog 与 AIKE AI 智能客服：在线聊天、意向分流、工单提交。&quot;&gt;使用前提：&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p style=&quot;text-align: left;&quot;&gt;安装部署：&lt;a href=&quot;https://www.lw50.com/post/4216586a.html&quot; title=&quot;链接到 AIKE智能PHP在线客服系统&quot; rel=&quot;bookmark&quot;&gt;AIKE智能PHP在线客服系统&lt;/a&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;span class=&quot;std-cata-section&quot; id=&quot;stdcata2&quot;&gt;&lt;span title=&quot;连接 Z-Blog 与 AIKE AI 智能客服：在线聊天、意向分流、工单提交。&quot;&gt;使用方法：&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;span class=&quot;std-cata-section&quot; id=&quot;stdcata3&quot;&gt;1、附件获取插件&lt;/span&gt;&lt;/h3&gt;&lt;p style=&quot;text-align: left;&quot;&gt;附件解压aike-live-chat.zip到/www/wwwroot/你的目录/wp-content/plugins&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;span class=&quot;std-cata-section&quot; id=&quot;stdcata4&quot;&gt;2、启动插件&lt;/span&gt;&lt;/h3&gt;&lt;p style=&quot;text-align: left;&quot;&gt;WordPress站点后台插件管理启动此插件即可&lt;/p&gt;&lt;p style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://www.lw50.com/zb_users/upload/2026/08/202608281787907566375381.jpg&quot; title=&quot;AIKE智能PHP在线客服系统WordPress插件  第2张&quot; alt=&quot;AIKE智能PHP在线客服系统WordPress插件  第2张&quot; class=&quot;ue-image&quot; style=&quot;&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.lw50.com/zb_users/upload/2026/08/202608281787907566592351.jpg&quot; title=&quot;AIKE智能PHP在线客服系统WordPress插件  第3张&quot; alt=&quot;AIKE智能PHP在线客服系统WordPress插件  第3张&quot; class=&quot;ue-image&quot; style=&quot;&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.lw50.com/zb_users/upload/2026/08/202608281787907566198486.jpg&quot; title=&quot;AIKE智能PHP在线客服系统WordPress插件  第4张&quot; alt=&quot;AIKE智能PHP在线客服系统WordPress插件  第4张&quot; class=&quot;ue-image&quot; style=&quot;&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.lw50.com/zb_users/upload/2026/08/202608281787907567361461.jpg&quot; title=&quot;AIKE智能PHP在线客服系统WordPress插件  第5张&quot; alt=&quot;AIKE智能PHP在线客服系统WordPress插件  第5张&quot; class=&quot;ue-image&quot; style=&quot;&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.lw50.com/zb_users/upload/2026/08/202608281787907567761091.jpg&quot; title=&quot;AIKE智能PHP在线客服系统WordPress插件  第6张&quot; alt=&quot;AIKE智能PHP在线客服系统WordPress插件  第6张&quot; class=&quot;ue-image&quot; style=&quot;&quot;&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;span class=&quot;std-cata-section&quot; id=&quot;stdcata5&quot;&gt;3、文章插入工单&lt;/span&gt;&lt;/h3&gt;&lt;p style=&quot;text-align: left;&quot;&gt;把文章标签复制放到文章指定位置即可，效果如图1&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;span class=&quot;std-cata-section&quot; id=&quot;stdcata6&quot;&gt;相关文章：&lt;/span&gt;&lt;/h2&gt;&lt;ul style=&quot;list-style-type: disc;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;https://www.lw50.com/post/aike3.html&quot; title=&quot;链接到 AIKE智能PHP在线客服系统安装教程&quot; rel=&quot;bookmark&quot;&gt;AIKE智能PHP在线客服系统安装教程&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href=&quot;https://www.lw50.com/post/466e5aa4.html&quot; title=&quot;链接到 AIKE智能PHP在线客服系统Zblog插件&quot; rel=&quot;bookmark&quot;&gt;AIKE智能PHP在线客服系统Zblog插&lt;/a&gt;件&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;span class=&quot;std-cata-section&quot; id=&quot;stdcata7&quot;&gt;获取插件：&lt;/span&gt;&lt;/h2&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;strong&gt;附件为WordPress插件：aike-live-chat，使用此插件需已安装AIKE智能PHP在线客服系统。&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;[CommShow]&lt;/p&gt;&lt;p&gt;通过网盘分享的文件：WordPress插件aike-live-chat.zip&lt;br/&gt;链接: https://pan.baidu.com/s/1GbDiN8FIyKouR1kKfePugw?pwd=g5c3 提取码: g5c3 复制这段内容后打开百度网盘手机App，操作更方便哦&lt;/p&gt;&lt;p&gt;[/CommShow]&lt;/p&gt;</description><pubDate>Fri, 28 Aug 2026 16:39:42 +0800</pubDate></item><item><title>AIKE智能PHP在线客服系统Zblog插件</title><link>https://www.lw50.com/post/466e5aa4.html</link><description>&lt;p style=&quot;text-align: left;&quot;&gt;AIKE智能PHP在线客服系统Zblog插件:&lt;span title=&quot;连接 Z-Blog 与 AIKE AI 智能客服：在线聊天、意向分流、工单提交。&quot;&gt;AIKE 在线客服，使用此插件可一键在网站任意地方插入客服弹窗及工单入口。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align:center&quot;&gt;&lt;span title=&quot;连接 Z-Blog 与 AIKE AI 智能客服：在线聊天、意向分流、工单提交。&quot;&gt;&lt;img src=&quot;https://www.lw50.com/zb_users/upload/2026/08/202608121786523767182673.jpg&quot; title=&quot;AIKE智能PHP在线客服系统Zblog插件  第1张&quot; alt=&quot;AIKE智能PHP在线客服系统Zblog插件  第1张&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;span title=&quot;连接 Z-Blog 与 AIKE AI 智能客服：在线聊天、意向分流、工单提交。&quot;&gt;使用前提：&lt;/span&gt;&lt;/h2&gt;&lt;p style=&quot;text-align: left;&quot;&gt;安装部署：&lt;a href=&quot;https://www.lw50.com/post/4216586a.html&quot; title=&quot;链接到 AIKE智能PHP在线客服系统&quot; rel=&quot;bookmark&quot;&gt;AIKE智能PHP在线客服系统&lt;/a&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;span title=&quot;连接 Z-Blog 与 AIKE AI 智能客服：在线聊天、意向分流、工单提交。&quot;&gt;使用方法：&lt;/span&gt;&lt;/h2&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;1、附件获取插件&lt;/h3&gt;&lt;p style=&quot;text-align: left;&quot;&gt;附件解压aikeLiveChat.zip到/www/wwwroot/你的目录/zb_users/plugin&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;2、启动插件&lt;/h3&gt;&lt;p style=&quot;text-align: left;&quot;&gt;ZBLOG后台插件管理启动此插件即可&lt;/p&gt;&lt;p style=&quot;text-align:center&quot;&gt;&lt;span title=&quot;连接 Z-Blog 与 AIKE AI 智能客服：在线聊天、意向分流、工单提交。&quot;&gt;&lt;img src=&quot;https://www.lw50.com/zb_users/upload/2026/08/202608121786523767550087.jpg&quot; title=&quot;AIKE智能PHP在线客服系统Zblog插件  第2张&quot; alt=&quot;AIKE智能PHP在线客服系统Zblog插件  第2张&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br style=&quot;text-align: left;&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://www.lw50.com/zb_users/upload/2026/08/202608121786523767773855.jpg&quot; title=&quot;AIKE智能PHP在线客服系统Zblog插件  第3张&quot; alt=&quot;AIKE智能PHP在线客服系统Zblog插件  第3张&quot;&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;3、文章插入工单&lt;/h3&gt;&lt;p style=&quot;text-align: left;&quot;&gt;把文章标签复制放到文章指定位置即可，效果如图下&lt;/p&gt;&lt;p style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://www.lw50.com/zb_users/upload/2026/08/202608121786523766431720.jpg&quot; title=&quot;AIKE智能PHP在线客服系统Zblog插件  第4张&quot; alt=&quot;AIKE智能PHP在线客服系统Zblog插件  第4张&quot;&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;相关文章：&lt;/h2&gt;&lt;ul style=&quot;list-style-type: disc;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;https://www.lw50.com/post/aike3.html&quot; title=&quot;链接到 AIKE智能PHP在线客服系统安装教程&quot; rel=&quot;bookmark&quot;&gt;AIKE智能PHP在线客服系统安装教程&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href=&quot;https://www.lw50.com/post/f45d4cf6.html&quot; title=&quot;链接到 AIKE智能PHP在线客服系统WordPress插件&quot; rel=&quot;bookmark&quot;&gt;AIKE智能PHP在线客服系统WordPress插件&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;获取插件：&lt;/h2&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;strong&gt;附件为ZBLOG插件aikeLiveChat，使用此插件需已安装AIKE智能PHP在线客服系统。&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;[CommShow]&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;通过网盘分享的文件：aikeLiveChat.zip&lt;br style=&quot;text-align: left;&quot;/&gt;链接: https://pan.baidu.com/s/1ZJuseSPeSXfEKWpkryyMfA?pwd=e4br 提取码: e4br 复制这段内容后打开百度网盘手机App，操作更方便哦&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;[/CommShow]&lt;/p&gt;</description><pubDate>Wed, 12 Aug 2026 16:50:08 +0800</pubDate></item><item><title>AIKE智能PHP在线客服系统</title><link>https://www.lw50.com/post/4216586a.html</link><description>&lt;p&gt;AIKE 智能客服系统是一款面向全行业的企业级在线客服平台，系统由PHP Web 应用、实时推送、知识库与可选向量检索组成，支持 Nginx 反代与 HTTPS/WSS。&lt;/p&gt;&lt;p style=&quot;text-align:center&quot;&gt;&lt;span style=&quot;color: #333333; font-family: &amp;quot;Microsoft YaHei&amp;quot;, Helvetica, &amp;quot;Meiryo UI&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Trebuchet MS&amp;quot;, Monaco, monospace, Tahoma, STXihei, 华文细黑, STHeiti, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;wenquanyi micro hei&amp;quot;, FreeSans, Arimo, Arial, SimSun, 宋体, Heiti, 黑体, sans-serif; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: left; text-indent: 0px; text-transform: none; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: #F7F7F7; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; display: inline !important;&quot;&gt;&lt;span style=&quot;color: #666666; font-family: &amp;quot;PingFang SC&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif; font-size: 15px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: #FFFFFF; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; display: inline !important; float: none;&quot;&gt;&lt;img src=&quot;https://www.lw50.com/zb_users/upload/2026/07/202607281785228593854223.jpg&quot; title=&quot;AIKE智能PHP在线客服系统  第1张&quot; alt=&quot;AIKE智能PHP在线客服系统  第1张&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;h2 id=&quot;doc-一产品定位-2&quot; style=&quot;box-sizing: border-box; margin: 36px 0px 16px; padding: 0px; font-size: 22px; color: rgb(23, 93, 255); scroll-margin-top: 108px; font-family: &amp;quot;PingFang SC&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; text-align: left; text-indent: 0px; text-transform: none; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;一、产品定位&lt;/h2&gt;&lt;p&gt;AIKE 是面向全行业的企业级 AI 在线客服平台，融合大模型、知识库与实时通讯，支持私有化部署与 SaaS 多商户、多客服模式，支持售前意向咨询、售后工单及插件市场功能扩展。&lt;/p&gt;&lt;p&gt;适用对象：&lt;/p&gt;&lt;ol style=&quot;list-style-type: decimal;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p style=&quot;text-align: left;&quot;&gt;适合所有行业，独立部署对服务器要求不高，尤其适合预算有限小微企业及超级个体&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: left;&quot;&gt;需要 7x24 智能接待、及要求多语言自动翻译聊天信息的海外独立站团队&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: left;&quot;&gt;需要PHP开源客服系统做二次开发的技术个人及工作室&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h2 id=&quot;doc-三核心能力-10&quot; style=&quot;box-sizing: border-box; margin: 36px 0px 16px; padding: 0px; font-size: 22px; color: rgb(23, 93, 255); scroll-margin-top: 108px; font-family: &amp;quot;PingFang SC&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; text-align: left; text-indent: 0px; text-transform: none; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;二、核心能力&lt;/h2&gt;&lt;h3&gt;基础能力：&lt;/h3&gt;&lt;ul style=&quot;list-style-type: disc;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;AI 智能回复 - 7*24小时在线&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;可接入第三方Agent智能体&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;多语言自动翻译&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;自动进化&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;支持后台多语言&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;可嵌入任意网站&amp;nbsp;-&amp;nbsp;同时支持桌面与移动端&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;系统支持私有化部署与多商户模式&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;多行业AI预设包 - 开箱即用&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style=&quot;color: #333333; font-family: &amp;quot;Microsoft YaHei&amp;quot;, Helvetica, &amp;quot;Meiryo UI&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Trebuchet MS&amp;quot;, Monaco, monospace, Tahoma, STXihei, 华文细黑, STHeiti, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;wenquanyi micro hei&amp;quot;, FreeSans, Arimo, Arial, SimSun, 宋体, Heiti, 黑体, sans-serif; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: #F7F7F7; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; display: inline !important; float: none;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;h3&gt;能力扩展：&lt;/h3&gt;&lt;ul style=&quot;list-style-type: disc;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;插件市场-能力扩展，可定制功能插件&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://www.lw50.com/zb_users/upload/2026/07/202607291785324020537824.jpg&quot; title=&quot;AIKE智能PHP在线客服系统  第2张&quot; alt=&quot;AIKE智能PHP在线客服系统  第2张&quot; class=&quot;ue-image&quot;&gt;&lt;/p&gt;&lt;h3&gt;插件扩展&lt;/h3&gt;&lt;ul style=&quot;list-style-type: disc;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;a href=&quot;https://www.lw50.com/post/f45d4cf6.html&quot; title=&quot;链接到 AIKE智能PHP在线客服系统WordPress插件&quot; rel=&quot;bookmark&quot;&gt;AIKE智能PHP在线客服系统WordPress插件&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href=&quot;https://www.lw50.com/post/466e5aa4.html&quot; title=&quot;链接到 AIKE智能PHP在线客服系统Zblog插件&quot; rel=&quot;bookmark&quot;&gt;AIKE智能PHP在线客服系统Zblog插件&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 style=&quot;box-sizing: border-box; margin: 36px 0px 16px; padding: 0px; font-size: 22px; color: rgb(23, 93, 255); scroll-margin-top: 108px; font-family: &amp;quot;PingFang SC&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; text-align: left; text-indent: 0px; text-transform: none; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;三、源码地址&lt;/h2&gt;&lt;p style=&quot;text-align: left;&quot;&gt;附件为标准版（单域名），演示地址：&lt;a href=&quot;https://aike.lw50.com/docs/whitepaper.html&quot; target=&quot;_self&quot;&gt;AIKE 智能客服 — 产品白皮书&lt;/a&gt;&lt;/p&gt;</description><pubDate>Tue, 28 Jul 2026 16:38:46 +0800</pubDate></item><item><title>AIKE智能PHP在线客服系统安装教程</title><link>https://www.lw50.com/post/aike3.html</link><description>&lt;p style=&quot;text-align: left;&quot;&gt;本AIKE智能PHP在线客服系统安装教程从零部署本系统所需的**环境要求**、**Web 安装向导**、**安装后必改配置文件**、**相关服务启动**及**验收检查**。演示地址：&lt;a href=&quot;https://aike.lw50.com&quot; target=&quot;_self&quot;&gt;AIKE智能PHP在线客服系统&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;img src=&quot;https://www.lw50.com/zb_users/upload/2026/07/202607241784822643162201.jpg&quot; title=&quot;AIKE智能PHP在线客服系统安装教程  第1张&quot; alt=&quot;AIKE智能PHP在线客服系统安装教程  第1张&quot; class=&quot;ue-image&quot;&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;## 一、系统组成&lt;/h2&gt;&lt;ul style=&quot;list-style-type: disc;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p style=&quot;text-align: left;&quot;&gt;PHP Web 应用：public/` 为网站根目录&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: left;&quot;&gt;实时推送服务：`aike_pusher/`（Workerman，WebSocket + HTTP API）&amp;nbsp;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: left;&quot;&gt;数据库结构：install/data.sql`（安装向导自动导入）&amp;nbsp;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: left;&quot;&gt;向量检索（可选）：知识库导入插件依赖 Qdrant；**一键安装：`bash install_qdrant.sh`**&amp;nbsp;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;## 二、环境要求&lt;/h2&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;### 2.1 服务器&lt;/h3&gt;&lt;ul style=&quot;list-style-type: disc;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p style=&quot;text-align: left;&quot;&gt;- **操作系统**：&lt;em&gt;Linux（推荐）&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;em&gt;- **PHP**：推荐 7.3+&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;em&gt;- **MySQL**：5.6+，字符集 **utf8mb4**&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;text-align:center&quot;&gt;&lt;em&gt;&lt;img src=&quot;https://www.lw50.com/zb_users/upload/2026/07/202607231784801021386333.jpg&quot; title=&quot;AIKE智能PHP在线客服系统安装教程  第2张&quot; alt=&quot;AIKE智能PHP在线客服系统安装教程  第2张&quot;&gt;&lt;/em&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;em&gt;### 2.2 PHP 扩展（安装向导会检测）&lt;/em&gt;&lt;/h3&gt;&lt;div style=&quot;--container-height: 229px; text-align: left;&quot;&gt;&lt;div style=&quot;--container-height: 229px; position: sticky; top: 0px; left: 0px; right: 0px; width: 100%; height: 0px;&quot;&gt;&lt;div style=&quot;left: 0px; right: 0px; display: block; top: calc(var(--container-height) - 14px); height: 8px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th&gt;&lt;em&gt;&lt;span class=&quot;&quot;&gt;扩展名&lt;/span&gt;&lt;/em&gt;&lt;/th&gt;&lt;th&gt;&lt;em&gt;&lt;span class=&quot;&quot;&gt;主要用途&lt;/span&gt;&lt;/em&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;em&gt;&lt;span class=&quot;&quot;&gt;mbstring&lt;/span&gt;&lt;/em&gt;&lt;/td&gt;&lt;td&gt;&lt;em&gt;&lt;span class=&quot;&quot;&gt;多字节字符串&lt;/span&gt;&lt;/em&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;em&gt;&lt;span class=&quot;&quot;&gt;gd&lt;/span&gt;&lt;/em&gt;&lt;/td&gt;&lt;td&gt;&lt;em&gt;&lt;span class=&quot;&quot;&gt;图片处理&lt;/span&gt;&lt;/em&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;em&gt;&lt;span class=&quot;&quot;&gt;curl&lt;/span&gt;&lt;/em&gt;&lt;/td&gt;&lt;td&gt;&lt;em&gt;&lt;span class=&quot;&quot;&gt;HTTP 请求、AI 接口&lt;/span&gt;&lt;/em&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;em&gt;&lt;span class=&quot;&quot;&gt;pdo_mysql&lt;/span&gt;&lt;/em&gt;&lt;/td&gt;&lt;td style=&quot;word-break: break-all;&quot;&gt;&lt;em&gt;&lt;span class=&quot;&quot;&gt;数据库&lt;/span&gt;&lt;/em&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;em&gt;建议额外启用：`json`、`openssl`、`fileinfo`、`zip`。&lt;br style=&quot;text-align: left;&quot;/&gt;&lt;/em&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;em&gt;### 2.3 目录写权限&lt;/em&gt;&lt;/h3&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;em&gt;以下目录需对 Web 运行用户可写：&lt;br style=&quot;text-align: left;&quot;/&gt;&lt;br style=&quot;text-align: left;&quot;/&gt;```&lt;br style=&quot;text-align: left;&quot;/&gt;config/&lt;br style=&quot;text-align: left;&quot;/&gt;application/extra/&lt;br style=&quot;text-align: left;&quot;/&gt;public/&lt;br style=&quot;text-align: left;&quot;/&gt;public/upload/&lt;br style=&quot;text-align: left;&quot;/&gt;runtime/&lt;br style=&quot;text-align: left;&quot;/&gt;public/assets/front/&lt;br style=&quot;text-align: left;&quot;/&gt;public/assets/layer/&lt;br style=&quot;text-align: left;&quot;/&gt;```&lt;/em&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;em&gt;### 2.4 端口规划&lt;/em&gt;&lt;/h3&gt;&lt;div style=&quot;--container-height: 274px; text-align: left;&quot;&gt;&lt;div style=&quot;--container-height: 274px; position: sticky; top: 0px; left: 0px; right: 0px; width: 100%; height: 0px;&quot;&gt;&lt;div style=&quot;left: 0px; right: 0px; display: block; top: calc(var(--container-height) - 14px); height: 8px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th&gt;&lt;em&gt;&lt;span class=&quot;&quot;&gt;端口&lt;/span&gt;&lt;/em&gt;&lt;/th&gt;&lt;th&gt;&lt;em&gt;&lt;span class=&quot;&quot;&gt;默认值&lt;/span&gt;&lt;/em&gt;&lt;/th&gt;&lt;th&gt;&lt;em&gt;&lt;span class=&quot;&quot;&gt;说明&lt;/span&gt;&lt;/em&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;em&gt;&lt;span class=&quot;&quot;&gt;HTTP/HTTPS&lt;/span&gt;&lt;/em&gt;&lt;/td&gt;&lt;td&gt;&lt;em&gt;&lt;span class=&quot;&quot;&gt;80 / 443&lt;/span&gt;&lt;/em&gt;&lt;/td&gt;&lt;td&gt;&lt;em&gt;&lt;span class=&quot;&quot;&gt;网站访问&lt;/span&gt;&lt;/em&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;em&gt;&lt;span class=&quot;&quot;&gt;WebSocket（&lt;/span&gt;&lt;code&gt;wport&lt;/code&gt;&lt;span class=&quot;&quot;&gt;）&lt;/span&gt;&lt;/em&gt;&lt;/td&gt;&lt;td&gt;&lt;em&gt;&lt;strong&gt;&lt;span class=&quot;&quot;&gt;456&lt;/span&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/td&gt;&lt;td&gt;&lt;em&gt;&lt;span class=&quot;&quot;&gt;访客端 / 客服端实时消息（&lt;/span&gt;&lt;code&gt;aike_pusher&lt;/code&gt;&lt;span class=&quot;&quot;&gt; 监听）&lt;/span&gt;&lt;/em&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;em&gt;&lt;span class=&quot;&quot;&gt;Pusher API（&lt;/span&gt;&lt;code&gt;aport&lt;/code&gt;&lt;span class=&quot;&quot;&gt;）&lt;/span&gt;&lt;/em&gt;&lt;/td&gt;&lt;td&gt;&lt;em&gt;&lt;span class=&quot;&quot;&gt;2080&lt;/span&gt;&lt;/em&gt;&lt;/td&gt;&lt;td&gt;&lt;em&gt;&lt;span class=&quot;&quot;&gt;PHP 后端与推送服务通讯（建议仅本机或内网）&lt;/span&gt;&lt;/em&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;em&gt;&lt;span class=&quot;&quot;&gt;Qdrant HTTP&lt;/span&gt;&lt;/em&gt;&lt;/td&gt;&lt;td&gt;&lt;em&gt;&lt;span class=&quot;&quot;&gt;6333&lt;/span&gt;&lt;/em&gt;&lt;/td&gt;&lt;td&gt;&lt;em&gt;&lt;span class=&quot;&quot;&gt;向量检索（可选）&lt;/span&gt;&lt;/em&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;em&gt;&lt;span class=&quot;&quot;&gt;Qdrant gRPC&lt;/span&gt;&lt;/em&gt;&lt;/td&gt;&lt;td&gt;&lt;em&gt;&lt;span class=&quot;&quot;&gt;6334&lt;/span&gt;&lt;/em&gt;&lt;/td&gt;&lt;td style=&quot;word-break: break-all;&quot;&gt;&lt;em&gt;&lt;span class=&quot;&quot;&gt;向量检索（可选，SDK 直连时用）&lt;/span&gt;&lt;/em&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;em&gt;&amp;gt; **HTTPS 站点**：`whost` 建议填 `wss://你的域名`，由 Nginx 反代到本机 `456`；`wport` 填 **443**（对外）或 **456**（直连），须与 Nginx / 防火墙配置一致。&lt;/em&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;em&gt;## 三、部署教程&lt;/em&gt;&lt;/h2&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;em&gt;### 3.1 上传代码&lt;/em&gt;&lt;/h3&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;em&gt;将项目上传到服务器，例如：&lt;/em&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;em&gt;/www/wwwroot/your-domain.com/&lt;/em&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;em&gt;网站根目录指向 **`public`**，不要将整个项目根目录直接暴露给外网。&lt;/em&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;em&gt;### 3.2 创建数据库&lt;/em&gt;&lt;/h3&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;em&gt;宝塔创建数据库&lt;/em&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;em&gt;安装向导也可自动创建数据库。&lt;/em&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;em&gt;### 3.3 开始安装&lt;/em&gt;&lt;/h3&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;em&gt;- 若 `public/index.php` **已存在**，安装向导会提示「已经安装成功」。&lt;/em&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;em&gt;重新安装：https://你的域名/install.php&lt;br style=&quot;text-align: left;&quot;/&gt;&lt;/em&gt;&lt;/p&gt;&lt;p style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://www.lw50.com/zb_users/upload/2026/07/202607231784805663485343.jpg&quot; title=&quot;AIKE智能PHP在线客服系统安装教程  第3张&quot; alt=&quot;AIKE智能PHP在线客服系统安装教程  第3张&quot;&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;em&gt;修改数据库参数和管理账号即可，其它不懂的建议默认。&lt;/em&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;em&gt;### 3.4&amp;nbsp;&lt;/em&gt;&lt;em&gt;安装成功：&lt;/em&gt;&lt;/h3&gt;&lt;p style=&quot;text-align:center&quot;&gt;&lt;em&gt;&lt;img src=&quot;https://www.lw50.com/zb_users/upload/2026/07/202607231784810626774999.jpg&quot; title=&quot;AIKE智能PHP在线客服系统安装教程  第4张&quot; alt=&quot;AIKE智能PHP在线客服系统安装教程  第4张&quot;&gt;&lt;/em&gt;&lt;/p&gt;&lt;h3&gt;&lt;em&gt;### 3.5&lt;em&gt;总后台&lt;/em&gt;&lt;/em&gt;&lt;/h3&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;em&gt;https://你的域名/platform/passport/login.html&lt;/em&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;em&gt;账号：安装时创建&lt;/em&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;em&gt;密码：&lt;em&gt;安装&lt;em&gt;时&lt;/em&gt;创建&lt;/em&gt;&lt;/em&gt;&lt;/p&gt;&lt;p style=&quot;text-align:center&quot;&gt;&lt;em&gt;&lt;img src=&quot;https://www.lw50.com/zb_users/upload/2026/07/202607231784810867380747.jpg&quot; title=&quot;AIKE智能PHP在线客服系统安装教程  第5张&quot; alt=&quot;AIKE智能PHP在线客服系统安装教程  第5张&quot;&gt;&lt;/em&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;em&gt;### 3.6&lt;/em&gt;&lt;em&gt;&amp;nbsp;客服后台&lt;/em&gt;&lt;/h3&gt;&lt;p style=&quot;text-align: left;&quot;&gt;总后台创建客服账号：&lt;/p&gt;&lt;p style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://www.lw50.com/zb_users/upload/2026/07/202607231784811962754970.jpg&quot; title=&quot;AIKE智能PHP在线客服系统安装教程  第6张&quot; alt=&quot;AIKE智能PHP在线客服系统安装教程  第6张&quot;&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;登陆客服后台：&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;https://你的域名/admin/login/index/business_id/1.html&quot; _src=&quot;https://你的域名/admin/login/index/business_id/1.html&quot;&gt;https://你的域名/admin/login/index/business_id/1.html&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://www.lw50.com/zb_users/upload/2026/07/202607231784812081165336.jpg&quot; title=&quot;AIKE智能PHP在线客服系统安装教程  第7张&quot; alt=&quot;AIKE智能PHP在线客服系统安装教程  第7张&quot;&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;em&gt;## 四、Web 服务器配置&lt;/em&gt;&lt;/h2&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;/h3&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;em&gt;#&lt;em&gt;#&lt;/em&gt;&lt;em&gt;#&amp;nbsp;&lt;/em&gt;Nginx配置&lt;/em&gt;&lt;/h3&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;em&gt;站点配置文件后面加上：&lt;/em&gt;&lt;/p&gt;&lt;pre&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;access_log&amp;nbsp;&amp;nbsp;/dev/null;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;error_log&amp;nbsp;&amp;nbsp;/www/wwwlogs/ai.lw50.com.error.log;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;location&amp;nbsp;/app&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;proxy_pass&amp;nbsp;http://127.0.0.1:456;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;proxy_http_version&amp;nbsp;1.1;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;proxy_set_header&amp;nbsp;Upgrade&amp;nbsp;$http_upgrade;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;proxy_set_header&amp;nbsp;Connection&amp;nbsp;&amp;quot;Upgrade&amp;quot;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;proxy_set_header&amp;nbsp;X-Real-IP&amp;nbsp;$remote_addr;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;proxy_read_timeout&amp;nbsp;3600s;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/pre&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;em&gt;若前端直连 `ws://IP:456`，需在安全组放行 **456** 端口。&lt;/em&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;em&gt;#&lt;em&gt;#&lt;/em&gt;&lt;em&gt;# &lt;/em&gt;Linux伪静态&lt;br style=&quot;text-align: left;&quot;/&gt;&lt;/em&gt;&lt;/h3&gt;&lt;pre&gt;#&amp;nbsp;==========&amp;nbsp;ThinkPHP&amp;nbsp;5&amp;nbsp;短期加固&amp;nbsp;+&amp;nbsp;原有静态规则&amp;nbsp;==========

#&amp;nbsp;1.&amp;nbsp;禁止访问敏感目录（在原&amp;nbsp;runtime|application&amp;nbsp;基础上扩展）
location&amp;nbsp;~*&amp;nbsp;^/(runtime|application|config|thinkphp|vendor|extend)/&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;403;
}

#&amp;nbsp;2.&amp;nbsp;禁止访问示例/调试目录
location&amp;nbsp;~*&amp;nbsp;^/assets/libs/myeditor/examples/&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;403;
}

#&amp;nbsp;3.&amp;nbsp;禁止&amp;nbsp;uploads、assets&amp;nbsp;下直接执行&amp;nbsp;PHP
location&amp;nbsp;~*&amp;nbsp;^/upload/.*\.php$&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;403;
}
location&amp;nbsp;~*&amp;nbsp;^/assets/.*\.php$&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;403;
}

#&amp;nbsp;4.&amp;nbsp;拦截&amp;nbsp;ThinkPHP&amp;nbsp;5&amp;nbsp;常见&amp;nbsp;exploit&amp;nbsp;查询串
#&amp;nbsp;只拦截&amp;nbsp;s=&amp;nbsp;路由参数中的&amp;nbsp;exploit，勿扫描整段&amp;nbsp;query_string（会误伤&amp;nbsp;?code=&amp;nbsp;token）
if&amp;nbsp;($arg_s&amp;nbsp;~*&amp;nbsp;&amp;quot;(invokefunction|call_user_func|call_user_func_array|pearcmd|config-create)&amp;quot;)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;403;
}
if&amp;nbsp;($arg_s&amp;nbsp;~*&amp;nbsp;&amp;quot;think(%2f|%5c|/)&amp;quot;)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;403;
}
if&amp;nbsp;($arg_s&amp;nbsp;~*&amp;nbsp;&amp;quot;(php://|phar://)&amp;quot;)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;403;
}
if&amp;nbsp;($arg_s&amp;nbsp;~*&amp;nbsp;&amp;quot;(\.\.|%2e%2e)&amp;quot;)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;403;
}

#&amp;nbsp;5.&amp;nbsp;原有伪静态（保持不变）
location&amp;nbsp;/&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(!-e&amp;nbsp;$request_filename)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rewrite&amp;nbsp;^(.*)$&amp;nbsp;/index.php?s=$1&amp;nbsp;last;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;## 五、服务启动说明&lt;/h2&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;###&amp;nbsp;禁用函数&lt;/h3&gt;&lt;p style=&quot;text-align: left;&quot;&gt;在宝塔：软件商店 →&amp;nbsp;PHP 7.3&amp;nbsp;→&amp;nbsp;禁用函数，删掉与进程控制相关的项，至少包括：&lt;/p&gt;&lt;pre&gt;pcntl_fork、pcntl_waitpid、pcntl_wait、pcntl_signal、pcntl_signal_dispatch、pcntl_alarm、pcntl_exec&amp;nbsp;以及列表里其它&amp;nbsp;pcntl_*&lt;/pre&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;###&amp;nbsp; 修改app_secrets.php&lt;br style=&quot;text-align: left;&quot;/&gt;&lt;/h3&gt;&lt;p style=&quot;text-align: left;&quot;&gt;看图修改WSS、http、端口&lt;/p&gt;&lt;p style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://www.lw50.com/zb_users/upload/2026/07/202607231784816828348220.png&quot; title=&quot;AIKE智能PHP在线客服系统安装教程  第8张&quot; alt=&quot;AIKE智能PHP在线客服系统安装教程  第8张&quot;&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;### 实时推送 `aike_pusher`（必须）&lt;/h3&gt;&lt;pre&gt;cd&amp;nbsp;/www/wwwroot/你的目录/aike_pusher

php&amp;nbsp;start.php&amp;nbsp;restart&amp;nbsp;-d&lt;/pre&gt;&lt;p style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://www.lw50.com/zb_users/upload/2026/07/202607231784813806776257.jpg&quot; title=&quot;AIKE智能PHP在线客服系统安装教程  第9张&quot; alt=&quot;AIKE智能PHP在线客服系统安装教程  第9张&quot;&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;常用指令：&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;php start.php start&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; # 前台调试&lt;br style=&quot;text-align: left;&quot;/&gt;php start.php start -d&amp;nbsp; &amp;nbsp; &amp;nbsp;# 后台守护&lt;br style=&quot;text-align: left;&quot;/&gt;php start.php stop&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# 停止&lt;br style=&quot;text-align: left;&quot;/&gt;php start.php reload&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# 平滑重启&lt;br style=&quot;text-align: left;&quot;/&gt;php start.php status&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# 状态&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;### 进程守护&lt;/h3&gt;&lt;p style=&quot;text-align: left;&quot;&gt;`run.sh` 每分钟检测 Workerman，未运行则启动：&lt;br style=&quot;text-align: left;&quot;/&gt;&lt;/p&gt;&lt;pre&gt;cd&amp;nbsp;/www/wwwroot/你的目录/
sudo&amp;nbsp;bash&amp;nbsp;run.sh&lt;/pre&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;###添加计划任务&lt;/h3&gt;&lt;pre&gt;cd&amp;nbsp;/www/wwwroot/你的目录/
sudo&amp;nbsp;bash&amp;nbsp;init.sh&lt;/pre&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;### 前端验证&lt;/h3&gt;&lt;p style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://www.lw50.com/zb_users/upload/2026/07/202607231784819176455935.jpg&quot; title=&quot;AIKE智能PHP在线客服系统安装教程  第10张&quot; alt=&quot;AIKE智能PHP在线客服系统安装教程  第10张&quot;&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;### 安装 Qdrant 向量数据库&lt;/h3&gt;&lt;p style=&quot;text-align: left;&quot;&gt;启用知识库**语义检索 / 向量化**时需要。项目已提供**一键安装脚本**，请在**项目根目录**执行（与 `public/` 同级）：&lt;br style=&quot;text-align: left;&quot;/&gt;&lt;/p&gt;&lt;pre&gt;cd&amp;nbsp;/www/wwwroot/你的目录
sudo&amp;nbsp;bash&amp;nbsp;install_qdrant.sh&lt;/pre&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&amp;gt; 若系统尚未安装 Docker，脚本会先自动安装 Docker，再部署 Qdrant；Docker 已就绪则直接进入 Qdrant 安装。&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;### 前置条件&lt;/h3&gt;&lt;ol style=&quot;list-style-type: decimal;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p style=&quot;text-align: left;&quot;&gt;**Linux** 服务器（脚本不支持 Windows 直接运行）&lt;br style=&quot;text-align: left;&quot;/&gt;2. 未安装 Docker 时，脚本会**自动安装并启动 Docker**（需 **root**：`sudo bash install_qdrant.sh`）&lt;br style=&quot;text-align: left;&quot;/&gt;3. 已安装且 Docker 服务正常时，**跳过 Docker 步骤**，直接安装 Qdrant&lt;br style=&quot;text-align: left;&quot;/&gt;4. 本机可访问 `curl`（健康检查用；安装 Docker 时脚本会尝试自动安装 curl）&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;### 安装后验证&lt;/h3&gt;&lt;pre&gt;bash&amp;nbsp;scripts/qdrant/status.sh&lt;/pre&gt;&lt;p style=&quot;text-align: left;&quot;&gt;或手动检查：&lt;br style=&quot;text-align: left;&quot;/&gt;&lt;/p&gt;&lt;pre&gt;curl&amp;nbsp;http://127.0.0.1:6333/
curl&amp;nbsp;http://127.0.0.1:6333/readyz
docker&amp;nbsp;ps&amp;nbsp;|&amp;nbsp;grep&amp;nbsp;wolive-qdrant&lt;/pre&gt;&lt;p style=&quot;text-align: left;&quot;&gt;输出 `Qdrant installed successfully` 且 REST API 为 `http://127.0.0.1:6333` 即表示就绪：&lt;/p&gt;&lt;p style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://www.lw50.com/zb_users/upload/2026/07/202607231784821070184657.jpg&quot; title=&quot;AIKE智能PHP在线客服系统安装教程  第11张&quot; alt=&quot;AIKE智能PHP在线客服系统安装教程  第11张&quot;&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;### 安装失败：Docker iptables 问题&lt;/h3&gt;&lt;p style=&quot;text-align: left;&quot;&gt;部分云服务器 / CentOS 会出现端口映射失败，脚本会自动尝试 **host 网络模式**。若仍失败，以 root 执行修复后重试：&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;```bash&lt;br style=&quot;text-align: left;&quot;/&gt;bash scripts/qdrant/fix_docker_iptables.sh&lt;br style=&quot;text-align: left;&quot;/&gt;bash install_qdrant.sh&lt;br style=&quot;text-align: left;&quot;/&gt;```&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;### 在系统中启用向量检索&lt;/h3&gt;&lt;p style=&quot;text-align: left;&quot;&gt;确认 `bash scripts/qdrant/status.sh` 显示 **Health : OK**&lt;br style=&quot;text-align: left;&quot;/&gt;1. 登录商户后台 → **知识库导入 / 向量设置**：&lt;br style=&quot;text-align: left;&quot;/&gt;&amp;nbsp; &amp;nbsp;- 开启 **向量检索**&lt;br style=&quot;text-align: left;&quot;/&gt;&amp;nbsp; &amp;nbsp;- `qdrant_url`：`http://127.0.0.1:6333`&lt;br style=&quot;text-align: left;&quot;/&gt;&amp;nbsp; &amp;nbsp;- 填写 Embedding API（URL、Key、模型）&lt;br style=&quot;text-align: left;&quot;/&gt;2. 导入 FAQ 或页面后执行向量化&lt;br style=&quot;text-align: left;&quot;/&gt;3. 在 **AI 智能回复设置** 中确认已启用知识库召回&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;### Qdrant 常见问题&lt;/h3&gt;&lt;div style=&quot;--container-height: 349px; text-align: left;&quot;&gt;&lt;div style=&quot;--container-height: 349px; position: sticky; top: 0px; left: 0px; right: 0px; width: 100%; height: 0px;&quot;&gt;&lt;div style=&quot;left: 0px; right: 0px; display: block; top: calc(var(--container-height) - 14px); height: 8px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th&gt;&lt;span class=&quot;&quot;&gt;现象&lt;/span&gt;&lt;/th&gt;&lt;th&gt;&lt;span class=&quot;&quot;&gt;处理&lt;/span&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;Docker not found&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;span class=&quot;&quot;&gt;使用 &lt;/span&gt;&lt;code&gt;sudo bash install_qdrant.sh&lt;/code&gt;&lt;span class=&quot;&quot;&gt; 以自动安装 Docker&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;Docker auto-install requires root&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;span class=&quot;&quot;&gt;加 &lt;/span&gt;&lt;code&gt;sudo&lt;/code&gt;&lt;span class=&quot;&quot;&gt; 后重试&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;Docker daemon not running&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;span class=&quot;&quot;&gt;脚本会尝试 &lt;/span&gt;&lt;code&gt;systemctl start docker&lt;/code&gt;&lt;span class=&quot;&quot;&gt;；失败则手动检查 Docker 服务&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;&quot;&gt;健康检查超时&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;docker logs wolive-qdrant&lt;/code&gt;&lt;span class=&quot;&quot;&gt;，或执行 &lt;/span&gt;&lt;code&gt;fix_docker_iptables.sh&lt;/code&gt;&lt;span class=&quot;&quot;&gt; 后重装&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;&quot;&gt;向量化失败&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class=&quot;&quot;&gt;检查后台 Embedding API Key，与 Qdrant 无关时先排除 API 问题&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;### 手动执行（调试）&lt;/h3&gt;&lt;p style=&quot;text-align: left;&quot;&gt;```bash&lt;br style=&quot;text-align: left;&quot;/&gt;cd /www/wwwroot/your-domain.com&lt;br style=&quot;text-align: left;&quot;/&gt;# 指定商户 business_id=1；-f 忽略后台「蒸馏开关=关」&lt;br style=&quot;text-align: left;&quot;/&gt;php think ai:distill-human -b 1&lt;br style=&quot;text-align: left;&quot;/&gt;php think ai:distill-human -b 1 -f&lt;br style=&quot;text-align: left;&quot;/&gt;# 增量同步（页面 QA + 向量）&lt;br style=&quot;text-align: left;&quot;/&gt;php think ai:auto-sync -b 1&lt;br style=&quot;text-align: left;&quot;/&gt;php think ai:auto-sync -b 1 -f&lt;br style=&quot;text-align: left;&quot;/&gt;```&lt;br style=&quot;text-align: left;&quot;/&gt;成功时终端会输出 `scanned` / `pairs` / `inserted` 等统计。&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;### 后台开关（必配）&lt;/h3&gt;&lt;p style=&quot;text-align: left;&quot;&gt;Cron 只负责**按时触发**；各商户是否在任务内真正执行，由后台 **AI 智能回复设置 → 知识进化与定时任务** 控制：&lt;/p&gt;&lt;div style=&quot;--container-height: 274px; text-align: left;&quot;&gt;&lt;div style=&quot;--container-height: 274px; position: sticky; top: 0px; left: 0px; right: 0px; width: 100%; height: 0px;&quot;&gt;&lt;div style=&quot;left: 0px; right: 0px; display: block; top: calc(var(--container-height) - 14px); height: 8px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th&gt;&lt;span class=&quot;&quot;&gt;开关&lt;/span&gt;&lt;/th&gt;&lt;th&gt;&lt;span class=&quot;&quot;&gt;建议&lt;/span&gt;&lt;/th&gt;&lt;th&gt;&lt;span class=&quot;&quot;&gt;作用&lt;/span&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;&lt;span class=&quot;&quot;&gt;人工聊天蒸馏&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;span class=&quot;&quot;&gt;开&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class=&quot;&quot;&gt;写入「AI进化池 → 人工聊天学习候选」&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;&lt;span class=&quot;&quot;&gt;仅人工回复&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;span class=&quot;&quot;&gt;开&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class=&quot;&quot;&gt;排除 AI 自动回复与常见问题预设&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;&lt;span class=&quot;&quot;&gt;定时增量同步&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;span class=&quot;&quot;&gt;按需&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class=&quot;&quot;&gt;从已同步页面抽 QA、维护向量&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;&lt;span class=&quot;&quot;&gt;同步向量库&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;span class=&quot;&quot;&gt;开（若已装 Qdrant）&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class=&quot;&quot;&gt;FAQ 增量写入 Qdrant&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;&lt;span class=&quot;&quot;&gt;同步含蒸馏&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;span class=&quot;&quot;&gt;关&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class=&quot;&quot;&gt;auto-sync 内再跑蒸馏（与 hourly 重复，一般关）&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style=&quot;text-align: left;&quot;&gt;阈值（质量分、出现次数、更新 FAQ 次数等）也在同一区块配置，保存后写入 `wolive_ai_config.distill_config_json` / `auto_sync_json`。&lt;br style=&quot;text-align: left;&quot;/&gt;&lt;br style=&quot;text-align: left;&quot;/&gt;&amp;gt; **注意：** 仅注册 cron、未在后台开启对应开关时，任务会跳过该商户。向量 FAQ 直答依赖 **7.2 Qdrant** 与后台 Embedding 配置。&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;## 六、自动化说明&lt;/h2&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span class=&quot;&quot;&gt;“自动 vs 人工”环节：&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;--container-height: 320px; text-align: left;&quot;&gt;&lt;div style=&quot;--container-height: 320px; position: sticky; top: 0px; left: 0px; right: 0px; width: 100%; height: 0px;&quot;&gt;&lt;div style=&quot;left: 0px; right: 0px; display: block; top: calc(var(--container-height) - 14px); height: 8px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th&gt;&lt;span class=&quot;&quot;&gt;环节&lt;/span&gt;&lt;/th&gt;&lt;th&gt;&lt;span class=&quot;&quot;&gt;是否自动&lt;/span&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;&quot;&gt;cron 扫描聊天、写候选&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class=&quot;&quot;&gt;✅&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;&quot;&gt;cron 页面 QA、向量同步&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class=&quot;&quot;&gt;✅（需开开关）&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;&quot;&gt;高质量&lt;/span&gt;&lt;strong&gt;&lt;span class=&quot;&quot;&gt;新问题&lt;/span&gt;&lt;/strong&gt;&lt;span class=&quot;&quot;&gt;自动入 FAQ&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class=&quot;&quot;&gt;✅（进化池开关 + 阈值）&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;&lt;span class=&quot;&quot;&gt;同问不同答&lt;/span&gt;&lt;/strong&gt;&lt;span class=&quot;&quot;&gt;更新已有 FAQ&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class=&quot;&quot;&gt;❌ 需人工点「更新 FAQ」&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;&quot;&gt;意图关键词应用&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class=&quot;&quot;&gt;❌ 需人工勾选并选意图&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;&quot;&gt;未命中 → 加 FAQ&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;word-break: break-all;&quot;&gt;&lt;span class=&quot;&quot;&gt;❌ 需人工确认&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;## 七、常见问题&lt;/h2&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;### Q1：SQL 导入失败？&lt;/h3&gt;&lt;p style=&quot;text-align: left;&quot;&gt;检查 MySQL 版本、账号权限、`install/data.sql` 是否完整，查看安装页报错详情。&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;### Q2：消息不实时？&lt;/h3&gt;&lt;ol style=&quot;list-style-type: decimal;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p style=&quot;text-align: left;&quot;&gt;`php start.php status` 确认 pusher 运行&amp;nbsp;&amp;nbsp;&lt;br style=&quot;text-align: left;&quot;/&gt;2. `app_secrets.php` 中 `app_key` / `app_secret` / `aport` / `websocket_port` 正确（改完需重启 pusher）&amp;nbsp;&amp;nbsp;&lt;br style=&quot;text-align: left;&quot;/&gt;3. `whost`、`wport`（对外）与 `websocket_port`（监听，默认 456）与 Nginx / 防火墙一致&amp;nbsp;&amp;nbsp;&lt;br style=&quot;text-align: left;&quot;/&gt;4. 浏览器控制台查看 WebSocket 连接&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;###Q3：`Missing application/extra/app_secrets.php`？&lt;/h3&gt;&lt;p style=&quot;text-align: left;&quot;&gt;重新安装，或从 `app_secrets.example.php` 复制并填写（含 `websocket_port`、`aport`）。&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;### Q4：HTTPS 下 WebSocket 失败？&lt;/h3&gt;&lt;p style=&quot;text-align: left;&quot;&gt;`whost` 用 `wss://域名`，Nginx `/app` 反代到 `127.0.0.1:456`，或配置 **6.4** SSL 直连&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;### Q5：向量检索无结果？&lt;/h3&gt;&lt;p style=&quot;text-align: left;&quot;&gt;确认已执行 `bash install_qdrant.sh` 且 `status.sh` 正常，后台 `qdrant_url` 为 `http://127.0.0.1:6333`，Embedding API 可用并已执行向量化。&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;### Q6：AI 进化 cron 不跑？&lt;/h3&gt;&lt;ol style=&quot;list-style-type: decimal;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p style=&quot;text-align: left;&quot;&gt;`crontab -l` 是否含 `ai:distill-human`、`ai:auto-sync`（无则 `sudo bash init.sh`）&amp;nbsp;&amp;nbsp;&lt;br style=&quot;text-align: left;&quot;/&gt;2. 后台 **知识进化与定时任务** 对应开关是否开启&amp;nbsp;&amp;nbsp;&lt;br style=&quot;text-align: left;&quot;/&gt;3. 查看 `runtime/log/ai_distill_cron.log`、`ai_auto_sync.log` 是否有 PHP 报错&amp;nbsp;&amp;nbsp;&lt;br style=&quot;text-align: left;&quot;/&gt;4. 手动 `php think ai:distill-human -b 商户ID -f` 验证 CLI 是否正常&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;### Q7：蒸馏有候选但不会自动进 FAQ？&lt;/h3&gt;&lt;p style=&quot;text-align: left;&quot;&gt;自动入库仅针对 **FAQ 中尚不存在的新问题**，且需同时满足：进化池开启 **高质量自动入 FAQ**、质量分 ≥ 阈值、出现次数 ≥ 阈值。同问不同答只会标「可更新 FAQ」，须人工确认。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;END！！！&lt;/p&gt;</description><pubDate>Thu, 23 Jul 2026 17:27:15 +0800</pubDate></item><item><title>12条规则能将AI编程错误率降至3%</title><link>https://www.lw50.com/post/andrej-karpathy-skills2.html</link><description>&lt;p dir=&quot;auto&quot;&gt;&lt;img src=&quot;https://www.lw50.com/zb_users/upload/2026/07/202607141784041554512659.jpg&quot; title=&quot;12条规则能将AI编程错误率降至3%  第1张&quot; alt=&quot;12条规则能将AI编程错误率降至3%  第1张&quot; class=&quot;ue-image&quot;&gt;&lt;/p&gt;&lt;h2 dir=&quot;auto&quot;&gt;四大原则&lt;/h2&gt;&lt;p dir=&quot;auto&quot;&gt;四大原则说是能将AI编程错误率从41%降至11%。原文地址：&lt;a href=&quot;https://www.lw50.com/post/andrej-karpathy-skills.html&quot; title=&quot;链接到 AI 编程的“紧箍咒”：CLAUDE.md 霸榜 GitHub，7万程序员疯抄作业&quot; rel=&quot;bookmark&quot; style=&quot;font-size: 20px; text-decoration: underline;&quot;&gt;&lt;span style=&quot;font-size: 20px;&quot;&gt;AI 编程的“紧箍咒”：CLAUDE.md 霸榜 GitHub，7万程序员疯抄作业&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p dir=&quot;auto&quot; style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 16px; color: rgb(31, 35, 40); font-family: &amp;quot;Mona Sans VF&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Noto Sans&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;auto&quot; style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 16px; color: rgb(31, 35, 40); font-family: &amp;quot;Mona Sans VF&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Noto Sans&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;hr style=&quot;box-sizing: border-box; height: 0.25em; overflow: hidden; border: 0px; background: 0px 0px rgb(209, 217, 224); margin: 24px 0px; padding: 0px; font-family: &amp;quot;Mona Sans VF&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Noto Sans&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;/&gt;&lt;p dir=&quot;auto&quot; style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 0px !important; color: rgb(31, 35, 40); font-family: &amp;quot;Mona Sans VF&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Noto Sans&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;&lt;strong style=&quot;box-sizing: border-box; font-weight: 600;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;减少LLM编码常见错误的行为准则。根据需要与项目特定说明合并。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;auto&quot; style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 16px; color: rgb(31, 35, 40); font-family: &amp;quot;Mona Sans VF&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Noto Sans&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;&lt;strong style=&quot;box-sizing: border-box; font-weight: 600;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;权衡：&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;这些指导原则倾向于谨慎而非速度。对于琐碎的任务，请自行判断。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;markdown-heading&quot; dir=&quot;auto&quot; style=&quot;box-sizing: border-box; position: relative; color: rgb(31, 35, 40); font-family: &amp;quot;Mona Sans VF&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Noto Sans&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;&lt;h3 dir=&quot;auto&quot; style=&quot;box-sizing: border-box; margin-top: 24px; margin-bottom: 16px; font-size: 1.5em; font-weight: 600; line-height: 1.25; border-bottom: 0.8px solid rgba(209, 217, 224, 0.7); padding-bottom: 0.3em;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;1. 编码前先思考&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;&lt;a id=&quot;user-content-1-think-before-coding&quot; class=&quot;anchor&quot; aria-label=&quot;永久链接：1. 编码前先思考&quot; href=&quot;https://github.com/multica-ai/andrej-karpathy-skills/blob/main/CLAUDE.md#1-think-before-coding&quot; style=&quot;box-sizing: border-box; background-color: rgba(0, 0, 0, 0); color: rgb(9, 105, 218); text-decoration: underline; float: left; padding-right: 4px; margin: auto; line-height: 1; text-underline-offset: 0.2rem; border-radius: 6px; opacity: 0; justify-content: center; align-items: center; width: 28px; height: 28px; display: flex; position: absolute; top: 19px; left: -28px; transform: translateY(calc(-50% - 0.3rem));&quot;&gt;&lt;svg data-component=&quot;Octicon&quot; class=&quot;octicon octicon-link&quot; viewbox=&quot;0 0 16 16&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/div&gt;&lt;p dir=&quot;auto&quot; style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 16px; color: rgb(31, 35, 40); font-family: &amp;quot;Mona Sans VF&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Noto Sans&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;&lt;strong style=&quot;box-sizing: border-box; font-weight: 600;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;不要妄下断言。不要掩饰困惑。坦诚地权衡利弊。&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p dir=&quot;auto&quot; style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 16px; color: rgb(31, 35, 40); font-family: &amp;quot;Mona Sans VF&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Noto Sans&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;实施前：&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul dir=&quot;auto&quot; style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 16px; padding-left: 2em; color: rgb(31, 35, 40); font-family: &amp;quot;Mona Sans VF&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Noto Sans&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;请明确陈述您的假设。如有疑问，请提出。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;如果存在多种解释，请将它们提出来——不要默默地做出选择。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;如果存在更简单的方法，请提出来。必要时要坚持己见。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;如果有什么不清楚的地方，停下来。说出让你困惑的地方。然后提问。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;markdown-heading&quot; dir=&quot;auto&quot; style=&quot;box-sizing: border-box; position: relative; color: rgb(31, 35, 40); font-family: &amp;quot;Mona Sans VF&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Noto Sans&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;&lt;h3 dir=&quot;auto&quot; style=&quot;box-sizing: border-box; margin-top: 24px; margin-bottom: 16px; font-size: 1.5em; font-weight: 600; line-height: 1.25; border-bottom: 0.8px solid rgba(209, 217, 224, 0.7); padding-bottom: 0.3em;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;2. 简单至上&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;&lt;a id=&quot;user-content-2-simplicity-first&quot; class=&quot;anchor&quot; aria-label=&quot;永久链接：2. 简约至上&quot; href=&quot;https://github.com/multica-ai/andrej-karpathy-skills/blob/main/CLAUDE.md#2-simplicity-first&quot; style=&quot;box-sizing: border-box; background-color: rgba(0, 0, 0, 0); color: rgb(9, 105, 218); text-decoration: underline; float: left; padding-right: 4px; margin: auto; line-height: 1; text-underline-offset: 0.2rem; border-radius: 6px; opacity: 0; justify-content: center; align-items: center; width: 28px; height: 28px; display: flex; position: absolute; top: 19px; left: -28px; transform: translateY(calc(-50% - 0.3rem));&quot;&gt;&lt;svg data-component=&quot;Octicon&quot; class=&quot;octicon octicon-link&quot; viewbox=&quot;0 0 16 16&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/div&gt;&lt;p dir=&quot;auto&quot; style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 16px; color: rgb(31, 35, 40); font-family: &amp;quot;Mona Sans VF&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Noto Sans&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;&lt;strong style=&quot;box-sizing: border-box; font-weight: 600;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;用最少的代码解决问题。不要进行任何推测。&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;ul dir=&quot;auto&quot; style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 16px; padding-left: 2em; color: rgb(31, 35, 40); font-family: &amp;quot;Mona Sans VF&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Noto Sans&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;没有超出要求的功能。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;不为一次性代码进行抽象。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;没有提供任何未要求的“灵活性”或“可配置性”。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;对于不可能出现的情况，不进行错误处理。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;如果你写了 200 行，而 50 行就可以写完，那就重写。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p dir=&quot;auto&quot; style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 16px; color: rgb(31, 35, 40); font-family: &amp;quot;Mona Sans VF&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Noto Sans&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;问问自己：“一位资深工程师会认为这过于复杂吗？” 如果答案是肯定的，那就简化它。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;markdown-heading&quot; dir=&quot;auto&quot; style=&quot;box-sizing: border-box; position: relative; color: rgb(31, 35, 40); font-family: &amp;quot;Mona Sans VF&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Noto Sans&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;&lt;h3 dir=&quot;auto&quot; style=&quot;box-sizing: border-box; margin-top: 24px; margin-bottom: 16px; font-size: 1.5em; font-weight: 600; line-height: 1.25; border-bottom: 0.8px solid rgba(209, 217, 224, 0.7); padding-bottom: 0.3em;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;3. 手术改变&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;&lt;a id=&quot;user-content-3-surgical-changes&quot; class=&quot;anchor&quot; aria-label=&quot;永久链接：3. 手术改变&quot; href=&quot;https://github.com/multica-ai/andrej-karpathy-skills/blob/main/CLAUDE.md#3-surgical-changes&quot; style=&quot;box-sizing: border-box; background-color: rgba(0, 0, 0, 0); color: rgb(9, 105, 218); text-decoration: underline; float: left; padding-right: 4px; margin: auto; line-height: 1; text-underline-offset: 0.2rem; border-radius: 6px; opacity: 0; justify-content: center; align-items: center; width: 28px; height: 28px; display: flex; position: absolute; top: 19px; left: -28px; transform: translateY(calc(-50% - 0.3rem));&quot;&gt;&lt;svg data-component=&quot;Octicon&quot; class=&quot;octicon octicon-link&quot; viewbox=&quot;0 0 16 16&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/div&gt;&lt;p dir=&quot;auto&quot; style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 16px; color: rgb(31, 35, 40); font-family: &amp;quot;Mona Sans VF&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Noto Sans&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;&lt;strong style=&quot;box-sizing: border-box; font-weight: 600;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;只碰你必须碰的东西。只收拾你自己的烂摊子。&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p dir=&quot;auto&quot; style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 16px; color: rgb(31, 35, 40); font-family: &amp;quot;Mona Sans VF&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Noto Sans&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;编辑现有代码时：&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul dir=&quot;auto&quot; style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 16px; padding-left: 2em; color: rgb(31, 35, 40); font-family: &amp;quot;Mona Sans VF&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Noto Sans&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;不要“改进”相邻的代码、注释或格式。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;不要重构没有损坏的代码。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;即使你的做法不同，也要保持与现有风格一致。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;如果你发现无关的死代码，请指出来——不要删除它。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p dir=&quot;auto&quot; style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 16px; color: rgb(31, 35, 40); font-family: &amp;quot;Mona Sans VF&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Noto Sans&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;当你的更改创建了孤立文件时：&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul dir=&quot;auto&quot; style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 16px; padding-left: 2em; color: rgb(31, 35, 40); font-family: &amp;quot;Mona Sans VF&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Noto Sans&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;删除因您的修改而不再使用的导入项/变量/函数。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;除非被要求，否则不要删除已有的无效代码。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p dir=&quot;auto&quot; style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 16px; color: rgb(31, 35, 40); font-family: &amp;quot;Mona Sans VF&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Noto Sans&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;测试要求：每一行修改后的代码都应该直接追溯到用户的请求。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;markdown-heading&quot; dir=&quot;auto&quot; style=&quot;box-sizing: border-box; position: relative; color: rgb(31, 35, 40); font-family: &amp;quot;Mona Sans VF&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Noto Sans&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;&lt;h3 dir=&quot;auto&quot; style=&quot;box-sizing: border-box; margin-top: 24px; margin-bottom: 16px; font-size: 1.5em; font-weight: 600; line-height: 1.25; border-bottom: 0.8px solid rgba(209, 217, 224, 0.7); padding-bottom: 0.3em;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;4. 目标驱动型执行&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;&lt;a id=&quot;user-content-4-goal-driven-execution&quot; class=&quot;anchor&quot; aria-label=&quot;永久链接：4. 目标驱动的执行&quot; href=&quot;https://github.com/multica-ai/andrej-karpathy-skills/blob/main/CLAUDE.md#4-goal-driven-execution&quot; style=&quot;box-sizing: border-box; background-color: rgba(0, 0, 0, 0); color: rgb(9, 105, 218); text-decoration: underline; float: left; padding-right: 4px; margin: auto; line-height: 1; text-underline-offset: 0.2rem; border-radius: 6px; opacity: 0; justify-content: center; align-items: center; width: 28px; height: 28px; display: flex; position: absolute; top: 19px; left: -28px; transform: translateY(calc(-50% - 0.3rem));&quot;&gt;&lt;svg data-component=&quot;Octicon&quot; class=&quot;octicon octicon-link&quot; viewbox=&quot;0 0 16 16&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/div&gt;&lt;p dir=&quot;auto&quot; style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 16px; color: rgb(31, 35, 40); font-family: &amp;quot;Mona Sans VF&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Noto Sans&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;&lt;strong style=&quot;box-sizing: border-box; font-weight: 600;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;定义成功标准。循环直至验证通过。&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p dir=&quot;auto&quot; style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 16px; color: rgb(31, 35, 40); font-family: &amp;quot;Mona Sans VF&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Noto Sans&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;将任务转化为可验证的目标：&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul dir=&quot;auto&quot; style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 16px; padding-left: 2em; color: rgb(31, 35, 40); font-family: &amp;quot;Mona Sans VF&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Noto Sans&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;“添加验证”→“编写针对无效输入的测试，并确保它们都能通过”&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;“修复漏洞”→“编写一个能够重现该漏洞的测试，然后使其通过”。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;“重构 X” → “确保重构前后测试均通过”&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p dir=&quot;auto&quot; style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 16px; color: rgb(31, 35, 40); font-family: &amp;quot;Mona Sans VF&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Noto Sans&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;对于多步骤任务，请简要说明计划：&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;snippet-clipboard-content notranslate position-relative overflow-auto&quot; style=&quot;box-sizing: border-box; overflow: auto !important; position: relative !important; margin-bottom: 16px; background-color: rgb(246, 248, 250); justify-content: space-between; display: flex; color: rgb(31, 35, 40); font-family: &amp;quot;Mona Sans VF&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Noto Sans&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;&lt;pre class=&quot;notranslate&quot; style=&quot;box-sizing: border-box; font-family: &amp;quot;Monaspace Neon&amp;quot;, ui-monospace, SFMono-Regular, &amp;quot;SF Mono&amp;quot;, Menlo, Consolas, &amp;quot;Liberation Mono&amp;quot;, monospace; font-size: 13.6px; margin-top: 0px; margin-bottom: 0px; tab-size: 4; overflow-wrap: normal; padding: 16px; color: rgb(31, 35, 40); background-color: rgb(246, 248, 250); border-radius: 6px; line-height: 1.45; overflow: auto;&quot;&gt;1.&amp;nbsp;[Step]&amp;nbsp;→&amp;nbsp;verify:&amp;nbsp;[check]
2.&amp;nbsp;[Step]&amp;nbsp;→&amp;nbsp;verify:&amp;nbsp;[check]
3.&amp;nbsp;[Step]&amp;nbsp;→&amp;nbsp;verify:&amp;nbsp;[check]&lt;/pre&gt;&lt;div class=&quot;zeroclipboard-container&quot; style=&quot;box-sizing: border-box; animation: auto ease 0s 1 normal none running none; display: block;&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; data-component=&quot;Octicon&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; width=&quot;16&quot; data-view-component=&quot;true&quot; class=&quot;octicon octicon-copy js-clipboard-copy-icon&quot;&gt;&lt;/svg&gt;&lt;/div&gt;&lt;/div&gt;&lt;p dir=&quot;auto&quot; style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 16px; color: rgb(31, 35, 40); font-family: &amp;quot;Mona Sans VF&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Noto Sans&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;明确的成功标准能让你独立循环迭代。而模糊的标准（“只要能行就行”）则需要不断澄清。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;hr style=&quot;box-sizing: border-box; height: 0.25em; overflow: hidden; border: 0px; background: 0px 0px rgb(209, 217, 224); margin: 24px 0px; padding: 0px; font-family: &amp;quot;Mona Sans VF&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Noto Sans&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;/&gt;&lt;p dir=&quot;auto&quot; style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 0px !important; color: rgb(31, 35, 40); font-family: &amp;quot;Mona Sans VF&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Noto Sans&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;&lt;strong style=&quot;box-sizing: border-box; font-weight: 600;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;如果以下情况发生，则这些指导原则是有效的：&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; vertical-align: inherit;&quot;&gt;差异中不必要的更改减少，由于过于复杂而导致的重写减少，并且在实施之前而不是在出错之后提出澄清问题。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;lwskills-download-wrap&quot; style=&quot;margin-top: 2em; padding-top: 1.2em; border-top: 1px solid rgb(232, 232, 232); text-align: center;&quot;&gt;&lt;a href=&quot;https://www.lw50.com/zb_users/plugin/lwskills/download.php?id=1943&quot; class=&quot;lwskills-download-btn&quot; style=&quot;display:inline-block;padding:10px 28px;background:#3a6ea5;color:#fff;text-decoration:none;border-radius:4px;font-size:14px;&quot;&gt;下载原文档&lt;/a&gt;&lt;/p&gt;&lt;h2&gt;8条进阶规则&lt;/h2&gt;&lt;p&gt;&lt;span style=&quot;font-size: 20px;&quot;&gt;在4条核心法则的基础上，开发者通过实测又增加了8条进阶规则，进一步提升了AI编程可靠性，号称能&lt;strong&gt;将错误率降至3%&lt;/strong&gt;。&lt;/span&gt;&lt;/p&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;td width=&quot;713&quot; valign=&quot;top&quot; style=&quot;word-break: break-all;&quot;&gt;&lt;span style=&quot;font-size: 20px; background-color: #FFFFFF;&quot;&gt;法则：&lt;/span&gt;&lt;/td&gt;&lt;td width=&quot;713&quot; valign=&quot;top&quot; style=&quot;word-break: break-all;&quot;&gt;&lt;span style=&quot;font-size: 20px; background-color: #FFFFFF;&quot;&gt;核心要求：&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width=&quot;713&quot; valign=&quot;top&quot; style=&quot;word-break: break-all;&quot;&gt;只做判断，不写死逻辑&lt;/td&gt;&lt;td width=&quot;713&quot; valign=&quot;top&quot; style=&quot;word-break: break-all;&quot;&gt;避免硬编码，保持代码灵活性。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width=&quot;713&quot; valign=&quot;top&quot; style=&quot;word-break: break-all;&quot;&gt;严格控制Token消耗&lt;/td&gt;&lt;td width=&quot;713&quot; valign=&quot;top&quot; style=&quot;word-break: break-all;&quot;&gt;用最精炼的方式完成任务。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width=&quot;713&quot; valign=&quot;top&quot; style=&quot;word-break: break-all;&quot;&gt;代码冲突时不妥协&lt;/td&gt;&lt;td width=&quot;713&quot; valign=&quot;top&quot; style=&quot;word-break: break-all;&quot;&gt;遇到冲突应提示，而非擅自修改。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width=&quot;713&quot; valign=&quot;top&quot; style=&quot;word-break: break-all;&quot;&gt;先读懂源码再动手&lt;/td&gt;&lt;td width=&quot;713&quot; valign=&quot;top&quot; style=&quot;word-break: break-all;&quot;&gt;确保理解现有代码结构&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width=&quot;713&quot; valign=&quot;top&quot; style=&quot;word-break: break-all;&quot;&gt;拒绝假测试&lt;/td&gt;&lt;td width=&quot;713&quot; valign=&quot;top&quot; style=&quot;word-break: break-all;&quot;&gt;测试用例必须能真正验证功能。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width=&quot;713&quot; valign=&quot;top&quot; style=&quot;word-break: break-all;&quot;&gt;分步设置检查点&lt;/td&gt;&lt;td width=&quot;713&quot; valign=&quot;top&quot; style=&quot;word-break: break-all;&quot;&gt;将大任务分解，逐步验证。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width=&quot;713&quot; valign=&quot;top&quot; style=&quot;word-break: break-all;&quot;&gt;严格遵守代码风格&lt;/td&gt;&lt;td width=&quot;713&quot; valign=&quot;top&quot; style=&quot;word-break: break-all;&quot;&gt;保持与现有代码风格一致。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width=&quot;713&quot; valign=&quot;top&quot; style=&quot;word-break: break-all;&quot;&gt;遇到问题绝不隐瞒&lt;/td&gt;&lt;td width=&quot;713&quot; valign=&quot;top&quot; style=&quot;word-break: break-all;&quot;&gt;发现无法解决的问题时必须报告。&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;...&lt;/p&gt;</description><pubDate>Tue, 14 Jul 2026 22:49:01 +0800</pubDate></item><item><title>本地pdf、Word、ppt文档转MarkItDown格式工具：MarkItDown</title><link>https://www.lw50.com/post/MarkItDown.html</link><description>&lt;p style=&quot;text-align: left;&quot;&gt;MarkItDown 原是微软官方的一个轻量级的 Python 工具，用于将各种本地文档转换为 Markdown 格式，以便在 LLM 和结构化知识提取中使用，侧重于保留文档的重要结构和内容（包括标题、列表、表格、链接等）。主要用于方便文本分析工具，主流语言学习模型（LLM），如 OpenAI、deepseek，能够很好原生“理解”Markdown这种格式。&lt;/p&gt;&lt;p style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://www.lw50.com/zb_users/upload/2026/07/202607081783472556924430.png&quot; title=&quot;本地pdf、Word、ppt文档转MarkItDown格式工具：MarkItDown  第1张&quot; alt=&quot;本地pdf、Word、ppt文档转MarkItDown格式工具：MarkItDown  第1张&quot;&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;支持格式：&lt;/h2&gt;&lt;ul dir=&quot;auto&quot; style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 16px; padding-left: 2em; color: rgb(31, 35, 40); font-family: &amp;quot;Mona Sans VF&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Noto Sans&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p style=&quot;text-align: left;&quot;&gt;PDF&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: left;&quot;&gt;PowerPoint&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: left;&quot;&gt;Word&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: left;&quot;&gt;Excel&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: left;&quot;&gt;Images (EXIF metadata and OCR)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: left;&quot;&gt;Audio (EXIF metadata and speech transcription)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: left;&quot;&gt;HTML&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: left;&quot;&gt;Text-based formats (CSV, JSON, XML)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: left;&quot;&gt;ZIP files (iterates over contents)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: left;&quot;&gt;Youtube URLs&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: left;&quot;&gt;EPubs&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;工具说明&lt;/h2&gt;&lt;p style=&quot;text-align: left;&quot;&gt;本MarkItDown工具是老吴站修改过的版本，并增加了图形操作面板，看下图，可以手动选择要转换的文档及选择保存目录，对新手友好！&lt;/p&gt;&lt;p style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://www.lw50.com/zb_users/upload/2026/07/202607081783472753384868.png&quot; title=&quot;本地pdf、Word、ppt文档转MarkItDown格式工具：MarkItDown  第2张&quot; alt=&quot;本地pdf、Word、ppt文档转MarkItDown格式工具：MarkItDown  第2张&quot;&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;本地安装方法&lt;/h2&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;1、进入项目目录&lt;/h3&gt;&lt;p data-path-to-node=&quot;4,1,0&quot; style=&quot;text-align: left;&quot;&gt;文章附件获取源码，解压后打开CMD窗口，CD到文件根目录。&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;2、可编辑模式（Editable Mode）安装&lt;/h3&gt;&lt;pre _ngcontent-ng-c337567516=&quot;&quot;&gt;pip&amp;nbsp;install&amp;nbsp;-e&amp;nbsp;&amp;#39;packages/markitdown[all]&amp;#39;&lt;/pre&gt;&lt;ul style=&quot;list-style-type: disc;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p style=&quot;text-indent: 0em; text-align: left;&quot;&gt;&lt;code data-path-to-node=&quot;4,2,2,0,0&quot; data-index-in-node=&quot;0&quot;&gt;-e&lt;/code&gt; 参数表示以“可编辑模式”安装，这意味着你在源码中所做的任何修改都会立即反映到你的环境中，非常适合开发调试。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p data-path-to-node=&quot;4,2,2,1,0&quot; style=&quot;text-align: left;&quot;&gt;&lt;code data-path-to-node=&quot;4,2,2,1,0&quot; data-index-in-node=&quot;0&quot;&gt;[all]&lt;/code&gt; 表示安装所有处理格式（如 PDF、Word、PPT 等）所需的完整依赖。如：pip install &amp;#39;markitdown[pdf, docx, pptx]&amp;#39;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;使用方法&lt;/h2&gt;&lt;p style=&quot;text-align: left;&quot;&gt;安装好后，双击启动转换器.bat即可。&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;工具地址&lt;/h2&gt;&lt;p style=&quot;text-align: left;&quot;&gt;[CommShow]&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;原版本地址：&lt;a href=&quot;https://github.com/microsoft/markitdown&quot; _src=&quot;https://github.com/microsoft/markitdown&quot;&gt;https://github.com/microsoft/markitdown&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;老吴站版本：https://pan.baidu.com/s/1ZfKrsBUgcOprEv7nCWG1RQ?pwd=vsc4&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;[/CommShow]&lt;/p&gt;</description><pubDate>Wed, 08 Jul 2026 08:46:03 +0800</pubDate></item><item><title>MySQL 8.0.46部署工具</title><link>https://www.lw50.com/post/ddf7e284.html</link><description>&lt;p style=&quot;text-align: left;&quot;&gt;windows下单独安装MySQL到新手可能不太友好，有了这个MySQL 8.0.46安装工具就方便多了。MySQL 8.0.46是8.0 系列的最后一个维护版本(于 2026 年 4 月 21 日发布)，所以这个版本应该是比较稳定的。&lt;/p&gt;&lt;p style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://www.lw50.com/zb_users/upload/2026/06/202606251782369881325380.jpg&quot; title=&quot;MySQL 8.0.46部署工具  第1张&quot; alt=&quot;MySQL 8.0.46部署工具  第1张&quot;&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;工具功能：&lt;/h2&gt;&lt;ol style=&quot;list-style-type: decimal;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p style=&quot;text-align: left;&quot;&gt;调整配置文件my. ini&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: left;&quot;&gt;初始化MySQL(会清空数据)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: left;&quot;&gt;安装系统服务(默认类型自动)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: left;&quot;&gt;系统服务：启动、停止、卸载&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p style=&quot;text-align: left;&quot;&gt;该程序需要以管理员身份执行。&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;span id=&quot;stdcata14&quot;&gt;&lt;span id=&quot;stdcata3&quot;&gt;&lt;span id=&quot;stdcata14&quot;&gt;&lt;span id=&quot;stdcata2&quot;&gt;工具参数：&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;td style=&quot;word-break: break-all;&quot; width=&quot;651&quot; valign=&quot;top&quot;&gt;&lt;strong&gt;工具名称：&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;word-break: break-all;&quot; width=&quot;651&quot; valign=&quot;top&quot;&gt;MySQL 8.0.46部署工具&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign=&quot;top&quot; colspan=&quot;1&quot; rowspan=&quot;1&quot; style=&quot;word-break: break-all;&quot;&gt;&lt;strong&gt;运行系统：&lt;/strong&gt;&lt;/td&gt;&lt;td valign=&quot;top&quot; colspan=&quot;1&quot; rowspan=&quot;1&quot; style=&quot;word-break: break-all;&quot;&gt;windows&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;word-break: break-all;&quot; width=&quot;651&quot; valign=&quot;top&quot;&gt;&lt;strong&gt;文件格式：&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;word-break: break-all;&quot; width=&quot;651&quot; valign=&quot;top&quot;&gt;exe&lt;br style=&quot;text-align: left;&quot;/&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;word-break: break-all;&quot; width=&quot;667&quot; valign=&quot;top&quot;&gt;&lt;strong&gt;文件大小:&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;word-break: break-all;&quot; width=&quot;667&quot; valign=&quot;top&quot;&gt;1M&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;word-break: break-all;&quot; width=&quot;667&quot; valign=&quot;top&quot;&gt;&lt;strong&gt;工具截图:&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;word-break: break-all;&quot; width=&quot;667&quot; valign=&quot;top&quot;&gt;有&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h2&gt;&lt;span id=&quot;stdcata3&quot;&gt;&lt;/span&gt;&lt;/h2&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;span id=&quot;stdcata15&quot;&gt;&lt;span id=&quot;stdcata4&quot;&gt;&lt;span id=&quot;stdcata15&quot;&gt;工具&lt;span id=&quot;stdcata3&quot;&gt;地址：&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;[CommShow]&lt;/p&gt;&lt;p&gt;MySQL8.0.46官方下载链接：https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.46-winx64.zip&lt;br/&gt;MySQL自制部署工具下载：https://liyitong.lanzout.com/i46C23sx3yuh&lt;/p&gt;&lt;p&gt;[/CommShow]&lt;/p&gt;</description><pubDate>Thu, 25 Jun 2026 14:40:52 +0800</pubDate></item><item><title>Graphify：如何将代码库与文档一键转化为可查询的知识图谱？</title><link>https://www.lw50.com/post/Graphify.html</link><description>&lt;p style=&quot;text-align: left;&quot;&gt;这是一个代码知识图谱生成工具（AI 编程助手）。该工具在GitHub上有70+K星标，这玩意能将项目中任何包含代码、SQL模式、R脚本、shell脚本、文档、论文、图像或视频的文件夹转换为可查询的知识图谱，自动发现模块间的依赖关系和隐藏连接。&lt;/p&gt;&lt;p style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://www.lw50.com/zb_users/upload/2026/06/202606221782089375297019.jpg&quot; title=&quot;Graphify：如何将代码库与文档一键转化为可查询的知识图谱？  第1张&quot; alt=&quot;Graphify：如何将代码库与文档一键转化为可查询的知识图谱？  第1张&quot; width=&quot;900&quot; height=&quot;419&quot; border=&quot;0&quot; vspace=&quot;0&quot; style=&quot;width: 900px; height: 419px;&quot;&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;如何让 AI 更好地阅读我的项目？&lt;/h2&gt;&lt;ul style=&quot;list-style-type: disc;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p style=&quot;text-align: left;&quot;&gt;它能把你项目里的代码整成一份能点能拽的知识图谱。并且自动扒拉出模块之间的依赖关系、隐藏连接。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: left;&quot;&gt;它不光告诉你这段代码是“干哈的”，还能给你解释“为啥非得这么设计”。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: left;&quot;&gt;这基本就相当于给AI装了个“项目大脑”，属于是降维打击了。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: left;&quot;&gt;让AI理解项目的时候，不再跟没头苍蝇似的瞎翻文件。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: left;&quot;&gt;只要瞅一眼那个图谱，整个项目的结构立马就门儿清。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: left;&quot;&gt;同时它跟Claude Code、Codex这些主流工具都能搭上线，兼容性挺到位。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://www.lw50.com/zb_users/upload/2026/06/202606221782089383609239.jpg&quot; title=&quot;Graphify：如何将代码库与文档一键转化为可查询的知识图谱？  第2张&quot; alt=&quot;Graphify：如何将代码库与文档一键转化为可查询的知识图谱？  第2张&quot; width=&quot;900&quot; height=&quot;415&quot; border=&quot;0&quot; vspace=&quot;0&quot; style=&quot;width: 900px; height: 415px;&quot;&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;总结&amp;nbsp;&lt;/h2&gt;&lt;p style=&quot;text-align: left;&quot;&gt;对程序员来说，不管是刚接手一个陌生项目，还是想快速摸清老项目的底细，Graphify能帮助 AI 更好地理解复杂代码中的逻辑关系，这玩意儿都贼拉实用。&lt;/p&gt;&lt;h2&gt;项目地址&lt;/h2&gt;&lt;p&gt;Github项目：&lt;a href=&quot;https://github.com/safishamsi/graphify&quot; _src=&quot;https://github.com/safishamsi/graphify&quot;&gt;graphify&lt;/a&gt;&lt;/p&gt;</description><pubDate>Mon, 22 Jun 2026 08:44:12 +0800</pubDate></item><item><title>728电玩全套源码</title><link>https://www.lw50.com/post/b1d58aaa.html</link><description>&lt;p style=&quot;text-align: left;&quot;&gt;728全套源码的后端好像跟电玩63游戏源码后端一样的，前端UI不一样，&lt;strong&gt;用Cocos简单看了一下源码，这一套是仿官方的728&lt;/strong&gt;。内含多种玩法，支持Cocoscreator开发，完整前端代码一键部署，适合有二开需求的用户。&lt;/p&gt;&lt;p style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://www.lw50.com/zb_users/upload/2026/06/202606141781369847396694.jpg&quot; title=&quot;728电玩全套源码  第1张&quot; alt=&quot;728电玩全套源码  第1张&quot;&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;搭建环境&lt;/h2&gt;&lt;ul style=&quot;list-style-type: disc;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p style=&quot;text-align: left;&quot;&gt;运行环境：linux&amp;nbsp;CentOS7X&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: left;&quot;&gt;源码后端：mysql+php&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: left;&quot;&gt;前端：cocos dashboard 2.4.5&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 style=&quot;text-indent: 0em; text-align: left;&quot;&gt;&lt;span id=&quot;stdcata3&quot;&gt;服务器要求&lt;/span&gt;&lt;/h2&gt;&lt;h3&gt;&lt;/h3&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;td style=&quot;word-break: break-all;&quot; width=&quot;438&quot; valign=&quot;top&quot;&gt;&lt;strong&gt;硬件&lt;br style=&quot;text-align: left;&quot;/&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;word-break: break-all;&quot; width=&quot;438&quot; valign=&quot;top&quot;&gt;&lt;strong&gt;测试要求&lt;br style=&quot;text-align: left;&quot;/&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;word-break: break-all;&quot; width=&quot;438&quot; valign=&quot;top&quot;&gt;&lt;strong&gt;运营要求&lt;br style=&quot;text-align: left;&quot;/&gt;&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;word-break: break-all;&quot; width=&quot;438&quot; valign=&quot;top&quot;&gt;CPU&lt;br style=&quot;text-align: left;&quot;/&gt;&lt;/td&gt;&lt;td style=&quot;word-break: break-all;&quot; width=&quot;438&quot; valign=&quot;top&quot;&gt;CPU4核&lt;/td&gt;&lt;td style=&quot;word-break: break-all;&quot; width=&quot;438&quot; valign=&quot;top&quot;&gt;CPU8核&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;word-break: break-all;&quot; width=&quot;438&quot; valign=&quot;top&quot;&gt;内存&lt;br style=&quot;text-align: left;&quot;/&gt;&lt;/td&gt;&lt;td style=&quot;word-break: break-all;&quot; width=&quot;438&quot; valign=&quot;top&quot;&gt;内存8G&lt;/td&gt;&lt;td style=&quot;word-break: break-all;&quot; width=&quot;438&quot; valign=&quot;top&quot;&gt;内存16G&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;word-break: break-all;&quot; width=&quot;438&quot; valign=&quot;top&quot;&gt;带宽&lt;/td&gt;&lt;td style=&quot;word-break: break-all;&quot; width=&quot;438&quot; valign=&quot;top&quot;&gt;5Mbp以上&lt;/td&gt;&lt;td style=&quot;word-break: break-all;&quot; width=&quot;438&quot; valign=&quot;top&quot;&gt;20Mbp以上&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;word-break: break-all;&quot; width=&quot;438&quot; valign=&quot;top&quot;&gt;硬盘&lt;/td&gt;&lt;td style=&quot;word-break: break-all;&quot; width=&quot;438&quot; valign=&quot;top&quot;&gt;D盘50G以上&lt;/td&gt;&lt;td style=&quot;word-break: break-all;&quot; width=&quot;438&quot; valign=&quot;top&quot;&gt;D盘100G以上&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;span id=&quot;stdcata10&quot;&gt;附件截图&lt;/span&gt;&lt;/h2&gt;&lt;p style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://www.lw50.com/zb_users/upload/2026/06/202606141781369884657571.jpg&quot; title=&quot;728电玩全套源码  第2张&quot; alt=&quot;728电玩全套源码  第2张&quot;&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;span id=&quot;stdcata12&quot;&gt;附件地址&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;附件为源码，无教程！&lt;/p&gt;</description><pubDate>Sun, 14 Jun 2026 00:41:58 +0800</pubDate></item><item><title>MCP 原理及 Java 开发指南</title><link>https://www.lw50.com/post/1327ffbc.html</link><description>&lt;blockquote&gt;&lt;p&gt;目的：帮助 Java / Spring Boot 开发者快速理解 MCP 的设计动机、协议细节、以及 如何在 Spring AI 中落地。&lt;/p&gt;&lt;/blockquote&gt;&lt;h2&gt;为什么需要 MCP？&lt;/h2&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;MCP 助力开发者在 LLM 之上构建智能体和复杂工作流。由于 LLM 需要频繁与外部数据和工具集成，MCP 提供了以下核心价值：&lt;/p&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;开箱即用的集成能力&lt;/strong&gt;：提供丰富的预置集成方案，LLM 可直接接入使用&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;灵活的供应商切换&lt;/strong&gt;：支持在不同 LLM 服务商之间无缝迁移&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;安全最佳实践&lt;/strong&gt;：内置数据安全防护机制，确保基础设施安全可控&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;MCP 用 &lt;strong&gt;JSON‑RPC 2.0 + 能力发现&lt;/strong&gt; 的模式，把「模型 ↔ 应用 ↔ 工具」之间的交互标准化，实现 &lt;em&gt;一次接入，多处复用&lt;/em&gt;。&lt;/p&gt;&lt;blockquote class=&quot;lwskills-quote&quot; style=&quot;margin:1.2em 0;padding:0.9em 1.2em;border-left:4px solid #3a6ea5;background:#f6f8fa;color:#444;line-height:1.75;&quot;&gt;&lt;p style=&quot;margin:0;&quot;&gt;MCP 协议就好比 USB 接口，USB 设备可以通过 USB Hub 连接到不同的计算机上，而不需要重新设计接口。&lt;br/&gt;- 我们在电脑上可以同时使用多个 USB 设备（鼠标、键盘、硬盘、游戏手柄），这些 USB 设备有不同的功能，只要实现了标准的 USB 接口协议即可。&lt;br/&gt;- 电脑可以类比成 LLM，USB Hub 可以类比成 MCP Server，USB 设备可以类比成 Tool、Resource、Prompt 等。&lt;br/&gt;- 通过 MCP 协议，LLM 可以通过 USB Hub 访问不同的 USB 设备，从而扩展出各种各样的能力（发邮件、打电话、地图旅行规划、订票）。&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;从某种程度上说，MCP 就像是设计模式中的命令（Command）模式 + 外观（Facade）模式。&lt;/p&gt;&lt;h2 class=&quot;lwskills-h2&quot; style=&quot;margin:1.2em 0 0.6em;font-size:1.5em;color:#222;font-weight:600;&quot;&gt;基本概念&lt;/h2&gt;&lt;h3 class=&quot;lwskills-h3&quot; style=&quot;margin:1.2em 0 0.6em;font-size:1.25em;color:#222;font-weight:600;&quot;&gt;关键术语&lt;/h3&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;&lt;img src=&quot;https://www.lw50.com/zb_users/upload/2026/06/20260608152843178090372314058.png&quot; title=&quot;MCP 原理及 Java 开发指南  第1张&quot; alt=&quot;MCP 原理及 Java 开发指南  第1张&quot; loading=&quot;lazy&quot; style=&quot;max-width:100%;height:auto;vertical-align:middle;&quot;&gt;&lt;/p&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;MCP 主机&lt;/strong&gt;：需要通过 MCP 访问数据的程序，如 Claude Desktop、IDE 或 AI 工具&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;MCP 客户端&lt;/strong&gt;：与服务器保持 1:1 连接的协议客户端&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;MCP 服务器&lt;/strong&gt;：通过标准化的模型上下文协议暴露特定能力的轻量级程序&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;本地数据源&lt;/strong&gt;：MCP 服务器可以安全访问的计算机文件、数据库和服务&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;远程服务&lt;/strong&gt;：MCP 服务器可以通过互联网连接的外部系统（例如通过 API）&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 class=&quot;lwskills-h3&quot; style=&quot;margin:1.2em 0 0.6em;font-size:1.25em;color:#222;font-weight:600;&quot;&gt;分层架构&lt;/h3&gt;&lt;pre class=&quot;lwskills-code&quot; style=&quot;margin:1.2em 0;padding:1em;background:#282c34;color:#abb2bf;border-radius:6px;overflow:auto;&quot;&gt;┌────────────────────────────┐

│&amp;nbsp;&amp;nbsp;Client&amp;nbsp;/&amp;nbsp;Server&amp;nbsp;API&amp;nbsp;层&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;│&amp;nbsp;←&amp;nbsp;McpClient&amp;nbsp;/&amp;nbsp;McpServer

├────────────────────────────┤

│&amp;nbsp;&amp;nbsp;Session&amp;nbsp;会话层&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;│&amp;nbsp;←&amp;nbsp;会话&amp;nbsp;&amp;amp;&amp;nbsp;状态管理

├────────────────────────────┤

│&amp;nbsp;&amp;nbsp;Transport&amp;nbsp;传输层&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;│&amp;nbsp;←&amp;nbsp;Stdio&amp;nbsp;/&amp;nbsp;SSE&amp;nbsp;/&amp;nbsp;WebSocket&amp;nbsp;/&amp;nbsp;gRPC

└────────────────────────────┘&lt;/pre&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;MCP 采用分层架构设计，每一层都有其特定的职责：&lt;/p&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;1. &lt;strong&gt;Client / Server API 层&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;提供 McpClient 和 McpServer 接口&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;处理高层业务逻辑和协议交互&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;负责能力发现和工具调用&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;2. &lt;strong&gt;Session 会话层&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;管理客户端和服务器之间的会话状态&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;处理会话的生命周期（初始化、运行、关闭）&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;维护会话上下文和状态信息&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;3. &lt;strong&gt;Transport 传输层&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;提供多种传输机制支持：&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;Stdio：标准输入输出，适合本地进程间通信&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;SSE (Server-Sent Events)：单向服务器推送&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;WebSocket：全双工通信&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;gRPC：高性能 RPC 框架&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;处理底层通信细节和协议转换&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;这种分层设计使得 MCP 具有：&lt;/p&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;良好的可扩展性：可以轻松添加新的传输机制&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;清晰的职责分离：各层专注于自己的功能&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;灵活的部署方式：支持多种通信场景&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 class=&quot;lwskills-h3&quot; style=&quot;margin:1.2em 0 0.6em;font-size:1.25em;color:#222;font-weight:600;&quot;&gt;传输机制&lt;/h3&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;| 传输 | 场景 | 特点 |&lt;br/&gt;|------|------|------|&lt;br/&gt;| &lt;strong&gt;Stdio&lt;/strong&gt; | 本地 CLI / 子进程 | 零网络开销，启动快 |&lt;br/&gt;| &lt;strong&gt;HTTP + SSE&lt;/strong&gt; | 微服务 / Web 应用 | POST 请求 + SSE 推流，部署友好 |&lt;br/&gt;| &lt;strong&gt;自定义&lt;/strong&gt; | WebSocket / gRPC | 只需实现 Transport 接口即可 |&lt;/p&gt;&lt;h2 class=&quot;lwskills-h2&quot; style=&quot;margin:1.2em 0 0.6em;font-size:1.5em;color:#222;font-weight:600;&quot;&gt;Java Spring AI 集成实践&lt;/h2&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;使用 Spring AI 开发，详细说明可以参考官网文档。&lt;/p&gt;&lt;blockquote class=&quot;lwskills-quote&quot; style=&quot;margin:1.2em 0;padding:0.9em 1.2em;border-left:4px solid #3a6ea5;background:#f6f8fa;color:#444;line-height:1.75;&quot;&gt;&lt;p style=&quot;margin:0;&quot;&gt;MCP 分为 Stdio 和 SSE 两种传输方式，下面的例子使用 SSE 方式，最简化开发一个发票助手 MCP，并展示如何通过模型自动调用这个 MCP。&lt;/p&gt;&lt;/blockquote&gt;&lt;h3 class=&quot;lwskills-h3&quot; style=&quot;margin:1.2em 0 0.6em;font-size:1.25em;color:#222;font-weight:600;&quot;&gt;POM 依赖&lt;/h3&gt;&lt;pre class=&quot;lwskills-code&quot; style=&quot;margin:1.2em 0;padding:1em;background:#282c34;color:#abb2bf;border-radius:6px;overflow:auto;&quot;&gt;&amp;lt;dependency&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;groupId&amp;gt;org.springframework.ai&amp;lt;/groupId&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;artifactId&amp;gt;spring-ai-starter-mcp-server-webflux&amp;lt;/artifactId&amp;gt;
&amp;lt;/dependency&amp;gt;&lt;/pre&gt;&lt;h3 class=&quot;lwskills-h3&quot; style=&quot;margin:1.2em 0 0.6em;font-size:1.25em;color:#222;font-weight:600;&quot;&gt;配置示例 `application.properties`&lt;/h3&gt;&lt;pre class=&quot;lwskills-code&quot; style=&quot;margin:1.2em 0;padding:1em;background:#282c34;color:#abb2bf;border-radius:6px;overflow:auto;&quot;&gt;spring.main.banner-mode=off
#&amp;nbsp;logging.pattern.console=
spring.ai.mcp.server.name=my-invoice-server
spring.ai.mcp.server.version=0.0.1&lt;/pre&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;详细的配置参数及默认值可以参考官方文档：Spring AI / Model Context Protocol (MCP) / MCP Server Boot Starters)。&lt;/p&gt;&lt;h3 class=&quot;lwskills-h3&quot; style=&quot;margin:1.2em 0 0.6em;font-size:1.25em;color:#222;font-weight:600;&quot;&gt;暴露 Tool&lt;/h3&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;这里就模拟一个非常简单的功能，仅拼装对应参数，返回发票链接。&lt;/p&gt;&lt;pre class=&quot;lwskills-code&quot; style=&quot;margin:1.2em 0;padding:1em;background:#282c34;color:#abb2bf;border-radius:6px;overflow:auto;&quot;&gt;@Service
public&amp;nbsp;class&amp;nbsp;InvoiceService&amp;nbsp;{

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Tool(description&amp;nbsp;=&amp;nbsp;&amp;quot;获取发票链接&amp;quot;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;String&amp;nbsp;getInvoiceUrl(@ToolParam(required&amp;nbsp;=&amp;nbsp;true,&amp;nbsp;description&amp;nbsp;=&amp;nbsp;&amp;quot;发票&amp;nbsp;id&amp;quot;)&amp;nbsp;String&amp;nbsp;invoiceId)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;&amp;quot;https://www.example.com/invoice/&amp;quot;&amp;nbsp;+&amp;nbsp;invoiceId;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;pre class=&quot;lwskills-code&quot; style=&quot;margin:1.2em 0;padding:1em;background:#282c34;color:#abb2bf;border-radius:6px;overflow:auto;&quot;&gt;@SpringBootApplication
public&amp;nbsp;class&amp;nbsp;McpServerApplication&amp;nbsp;{

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;static&amp;nbsp;void&amp;nbsp;main(String[]&amp;nbsp;args)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SpringApplication.run(McpServerApplication.class,&amp;nbsp;args);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Bean
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;ToolCallbackProvider&amp;nbsp;invoiceTools(InvoiceService&amp;nbsp;invoiceService)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;MethodToolCallbackProvider.builder().toolObjects(invoiceService).build();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;h3 class=&quot;lwskills-h3&quot; style=&quot;margin:1.2em 0 0.6em;font-size:1.25em;color:#222;font-weight:600;&quot;&gt;启动服务&lt;/h3&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;执行 &lt;code style=&quot;padding:2px 6px;background:#f0f0f0;border-radius:3px;font-size:0.9em;&quot;&gt;java -jar mcp-server.jar&lt;/code&gt; 启动服务，默认监听 8080 端口。&lt;/p&gt;&lt;h3 class=&quot;lwskills-h3&quot; style=&quot;margin:1.2em 0 0.6em;font-size:1.25em;color:#222;font-weight:600;&quot;&gt;在 MCP client 中配置 mcp.setting&lt;/h3&gt;&lt;blockquote class=&quot;lwskills-quote&quot; style=&quot;margin:1.2em 0;padding:0.9em 1.2em;border-left:4px solid #3a6ea5;background:#f6f8fa;color:#444;line-height:1.75;&quot;&gt;&lt;p style=&quot;margin:0;&quot;&gt;cursor、VS code 中的 cline 插件都算是 MCP client。本文展示 cline 插件如何配置。&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;&lt;img src=&quot;https://www.lw50.com/zb_users/upload/2026/06/20260608152843178090372318137.png&quot; title=&quot;MCP 原理及 Java 开发指南  第2张&quot; alt=&quot;MCP 原理及 Java 开发指南  第2张&quot; loading=&quot;lazy&quot; style=&quot;max-width:100%;height:auto;vertical-align:middle;&quot;&gt;&lt;/p&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;cline_mcp_setting.json 增加如下配置：&lt;/p&gt;&lt;pre class=&quot;lwskills-code&quot; style=&quot;margin:1.2em 0;padding:1em;background:#282c34;color:#abb2bf;border-radius:6px;overflow:auto;&quot;&gt;{
&amp;nbsp;&amp;nbsp;&amp;quot;mcpServers&amp;quot;:&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;invoice-local&amp;quot;:&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;url&amp;quot;:&amp;nbsp;&amp;quot;http://localhost:8080/sse&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;autoApprove&amp;quot;:&amp;nbsp;[
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;getInvoiceUrl&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;我们可以看到对应的 getInvoiceUrl 方法已经被自动注册到 MCP Server 中。&lt;/p&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;&lt;img src=&quot;https://www.lw50.com/zb_users/upload/2026/06/20260608152844178090372486027.png&quot; title=&quot;MCP 原理及 Java 开发指南  第3张&quot; alt=&quot;MCP 原理及 Java 开发指南  第3张&quot; loading=&quot;lazy&quot; style=&quot;max-width:100%;height:auto;vertical-align:middle;&quot;&gt;&lt;/p&gt;&lt;h3 class=&quot;lwskills-h3&quot; style=&quot;margin:1.2em 0 0.6em;font-size:1.25em;color:#222;font-weight:600;&quot;&gt;使用 MCP！&lt;/h3&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;在 cline 中输入问题：“我有一个发票 id 是 123456，发票链接是多少？”，可以看到模型会自动判断是否需要调用 MCP Server 中的 getInvoiceUrl 方法，并拼装参数，获取结果。&lt;/p&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;&lt;img src=&quot;https://www.lw50.com/zb_users/upload/2026/06/20260608152844178090372491834.png&quot; title=&quot;MCP 原理及 Java 开发指南  第4张&quot; alt=&quot;MCP 原理及 Java 开发指南  第4张&quot; loading=&quot;lazy&quot; style=&quot;max-width:100%;height:auto;vertical-align:middle;&quot;&gt;&lt;/p&gt;&lt;h3 class=&quot;lwskills-h3&quot; style=&quot;margin:1.2em 0 0.6em;font-size:1.25em;color:#222;font-weight:600;&quot;&gt;说明&lt;/h3&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;1. JDK 版本必须 &amp;gt;= 17&lt;br/&gt;2. Spring Boot 版本必须 &amp;gt;= 3.2&lt;br/&gt;3. Spring AI 底层使用 modelcontextprotocol / java-sdk)&lt;br/&gt;4. MCP 协议等都在快速发展中，上面的代码示例仅供参考，具体实现可能会有所不同&lt;/p&gt;&lt;h2 class=&quot;lwskills-h2&quot; style=&quot;margin:1.2em 0 0.6em;font-size:1.5em;color:#222;font-weight:600;&quot;&gt;完整配置示例&lt;/h2&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;&lt;strong&gt;Application.java：&lt;/strong&gt;&lt;/p&gt;&lt;pre class=&quot;lwskills-code&quot; style=&quot;margin:1.2em 0;padding:1em;background:#282c34;color:#abb2bf;border-radius:6px;overflow:auto;&quot;&gt;package&amp;nbsp;com.example.mcp;

import&amp;nbsp;org.springframework.ai.mcp.server.tool.ToolCallbackProvider;
import&amp;nbsp;org.springframework.ai.mcp.server.tool.MethodToolCallbackProvider;
import&amp;nbsp;org.springframework.boot.SpringApplication;
import&amp;nbsp;org.springframework.boot.autoconfigure.SpringBootApplication;
import&amp;nbsp;org.springframework.context.annotation.Bean;
import&amp;nbsp;org.springframework.web.reactive.function.client.WebClient;

@SpringBootApplication
public&amp;nbsp;class&amp;nbsp;McpServerApplication&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;static&amp;nbsp;void&amp;nbsp;main(String[]&amp;nbsp;args)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SpringApplication.run(McpServerApplication.class,&amp;nbsp;args);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/**
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;注册所有&amp;nbsp;Tools
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Bean
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;ToolCallbackProvider&amp;nbsp;toolCallbackProvider(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DatabaseTools&amp;nbsp;databaseTools,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FileTools&amp;nbsp;fileTools,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HttpTools&amp;nbsp;httpTools
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;MethodToolCallbackProvider.builder()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.toolObjects(databaseTools,&amp;nbsp;fileTools,&amp;nbsp;httpTools)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.build();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/**
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;WebClient&amp;nbsp;for&amp;nbsp;HTTP&amp;nbsp;tools
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Bean
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;WebClient&amp;nbsp;webClient()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;WebClient.builder()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.defaultHeader(&amp;quot;User-Agent&amp;quot;,&amp;nbsp;&amp;quot;MCP-Server/1.0&amp;quot;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.build();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;&lt;strong&gt;application.yml：&lt;/strong&gt;&lt;/p&gt;&lt;pre class=&quot;lwskills-code&quot; style=&quot;margin:1.2em 0;padding:1em;background:#282c34;color:#abb2bf;border-radius:6px;overflow:auto;&quot;&gt;spring:
&amp;nbsp;&amp;nbsp;application:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name:&amp;nbsp;mcp-server-demo
&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;ai:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mcp:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;server:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name:&amp;nbsp;&amp;quot;Enterprise&amp;nbsp;MCP&amp;nbsp;Server&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;version:&amp;nbsp;&amp;quot;1.0.0&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;description:&amp;nbsp;&amp;quot;Comprehensive&amp;nbsp;MCP&amp;nbsp;server&amp;nbsp;with&amp;nbsp;database,&amp;nbsp;file,&amp;nbsp;and&amp;nbsp;HTTP&amp;nbsp;capabilities&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
server:
&amp;nbsp;&amp;nbsp;port:&amp;nbsp;8080
&amp;nbsp;&amp;nbsp;
logging:
&amp;nbsp;&amp;nbsp;level:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;org.springframework.ai.mcp:&amp;nbsp;DEBUG
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;com.example.mcp:&amp;nbsp;DEBUG&lt;/pre&gt;&lt;h2 class=&quot;lwskills-h2&quot; style=&quot;margin:1.2em 0 0.6em;font-size:1.5em;color:#222;font-weight:600;&quot;&gt;MCP Client 配置与使用&lt;/h2&gt;&lt;h3 class=&quot;lwskills-h3&quot; style=&quot;margin:1.2em 0 0.6em;font-size:1.25em;color:#222;font-weight:600;&quot;&gt;Claude Desktop 配置&lt;/h3&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;Claude Desktop 是最早支持 MCP 的应用之一。配置文件位置：&lt;/p&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;&lt;strong&gt;macOS：&lt;/strong&gt;&lt;/p&gt;&lt;pre class=&quot;lwskills-code&quot; style=&quot;margin:1.2em 0;padding:1em;background:#282c34;color:#abb2bf;border-radius:6px;overflow:auto;&quot;&gt;~/Library/Application\&amp;nbsp;Support/Claude/claude_desktop_config.json&lt;/pre&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;&lt;strong&gt;Windows：&lt;/strong&gt;&lt;/p&gt;&lt;pre class=&quot;lwskills-code&quot; style=&quot;margin:1.2em 0;padding:1em;background:#282c34;color:#abb2bf;border-radius:6px;overflow:auto;&quot;&gt;%APPDATA%\Claude\claude_desktop_config.json&lt;/pre&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;&lt;strong&gt;配置示例：&lt;/strong&gt;&lt;/p&gt;&lt;pre class=&quot;lwskills-code&quot; style=&quot;margin:1.2em 0;padding:1em;background:#282c34;color:#abb2bf;border-radius:6px;overflow:auto;&quot;&gt;{
&amp;nbsp;&amp;nbsp;&amp;quot;mcpServers&amp;quot;:&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;enterprise-server&amp;quot;:&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;command&amp;quot;:&amp;nbsp;&amp;quot;java&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;args&amp;quot;:&amp;nbsp;[
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;-jar&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;/path/to/mcp-server.jar&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;],
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;env&amp;quot;:&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;SERVER_PORT&amp;quot;:&amp;nbsp;&amp;quot;8080&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;database-server&amp;quot;:&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;url&amp;quot;:&amp;nbsp;&amp;quot;http://localhost:8080/sse&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;headers&amp;quot;:&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;Authorization&amp;quot;:&amp;nbsp;&amp;quot;Bearer&amp;nbsp;YOUR_TOKEN&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;h3 class=&quot;lwskills-h3&quot; style=&quot;margin:1.2em 0 0.6em;font-size:1.25em;color:#222;font-weight:600;&quot;&gt;Cursor IDE 配置&lt;/h3&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;Cursor 通过 &lt;code style=&quot;padding:2px 6px;background:#f0f0f0;border-radius:3px;font-size:0.9em;&quot;&gt;.cursor/mcp.json&lt;/code&gt; 文件配置 MCP 服务器：&lt;/p&gt;&lt;pre class=&quot;lwskills-code&quot; style=&quot;margin:1.2em 0;padding:1em;background:#282c34;color:#abb2bf;border-radius:6px;overflow:auto;&quot;&gt;{
&amp;nbsp;&amp;nbsp;&amp;quot;mcpServers&amp;quot;:&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;local-dev&amp;quot;:&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;command&amp;quot;:&amp;nbsp;&amp;quot;java&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;args&amp;quot;:&amp;nbsp;[&amp;quot;-jar&amp;quot;,&amp;nbsp;&amp;quot;mcp-server.jar&amp;quot;],
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;env&amp;quot;:&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;WORKSPACE_ROOT&amp;quot;:&amp;nbsp;&amp;quot;${workspaceFolder}&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;remote-api&amp;quot;:&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;url&amp;quot;:&amp;nbsp;&amp;quot;https://api.example.com/mcp/sse&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;autoApprove&amp;quot;:&amp;nbsp;[&amp;quot;read_file&amp;quot;,&amp;nbsp;&amp;quot;list_directory&amp;quot;]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;h3 class=&quot;lwskills-h3&quot; style=&quot;margin:1.2em 0 0.6em;font-size:1.25em;color:#222;font-weight:600;&quot;&gt;Cline/Continue 配置&lt;/h3&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;VS Code 插件 Cline 的配置文件：&lt;code style=&quot;padding:2px 6px;background:#f0f0f0;border-radius:3px;font-size:0.9em;&quot;&gt;~/.cline/mcp_settings.json&lt;/code&gt;&lt;/p&gt;&lt;pre class=&quot;lwskills-code&quot; style=&quot;margin:1.2em 0;padding:1em;background:#282c34;color:#abb2bf;border-radius:6px;overflow:auto;&quot;&gt;{
&amp;nbsp;&amp;nbsp;&amp;quot;mcpServers&amp;quot;:&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;development&amp;quot;:&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;url&amp;quot;:&amp;nbsp;&amp;quot;http://localhost:8080/sse&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;autoApprove&amp;quot;:&amp;nbsp;[
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;query_database&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;read_file&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;list_directory&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;],
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;alwaysAllow&amp;quot;:&amp;nbsp;[&amp;quot;get_table_schema&amp;quot;]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;h3 class=&quot;lwskills-h3&quot; style=&quot;margin:1.2em 0 0.6em;font-size:1.25em;color:#222;font-weight:600;&quot;&gt;实际使用示例&lt;/h3&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;&lt;strong&gt;场景 1：数据库查询&lt;/strong&gt;&lt;/p&gt;&lt;pre class=&quot;lwskills-code&quot; style=&quot;margin:1.2em 0;padding:1em;background:#282c34;color:#abb2bf;border-radius:6px;overflow:auto;&quot;&gt;用户:&amp;nbsp;查询用户表中所有活跃用户的数量

AI:&amp;nbsp;我会帮你查询数据库。
[调用&amp;nbsp;query_database]
参数:&amp;nbsp;sql&amp;nbsp;=&amp;nbsp;&amp;quot;SELECT&amp;nbsp;COUNT(*)&amp;nbsp;as&amp;nbsp;count&amp;nbsp;FROM&amp;nbsp;users&amp;nbsp;WHERE&amp;nbsp;status&amp;nbsp;=&amp;nbsp;&amp;#39;active&amp;#39;&amp;quot;

结果:&amp;nbsp;{&amp;quot;rowCount&amp;quot;:&amp;nbsp;1,&amp;nbsp;&amp;quot;rows&amp;quot;:&amp;nbsp;[{&amp;quot;count&amp;quot;:&amp;nbsp;1234}]}

AI:&amp;nbsp;当前有&amp;nbsp;1,234&amp;nbsp;个活跃用户。&lt;/pre&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;&lt;strong&gt;场景 2：文件操作&lt;/strong&gt;&lt;/p&gt;&lt;pre class=&quot;lwskills-code&quot; style=&quot;margin:1.2em 0;padding:1em;background:#282c34;color:#abb2bf;border-radius:6px;overflow:auto;&quot;&gt;用户:&amp;nbsp;帮我创建一个&amp;nbsp;README.md&amp;nbsp;文件,包含项目介绍

AI:&amp;nbsp;好的,我会创建&amp;nbsp;README&amp;nbsp;文件。
[调用&amp;nbsp;write_file]
参数:
&amp;nbsp;&amp;nbsp;path&amp;nbsp;=&amp;nbsp;&amp;quot;README.md&amp;quot;
&amp;nbsp;&amp;nbsp;content&amp;nbsp;=&amp;nbsp;&amp;quot;#&amp;nbsp;Project&amp;nbsp;Name\n\nThis&amp;nbsp;is&amp;nbsp;a&amp;nbsp;comprehensive&amp;nbsp;guide...&amp;quot;
&amp;nbsp;&amp;nbsp;create_dirs&amp;nbsp;=&amp;nbsp;true

AI:&amp;nbsp;README.md&amp;nbsp;文件已创建成功!&lt;/pre&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;&lt;strong&gt;场景 3：代码审查&lt;/strong&gt;&lt;/p&gt;&lt;pre class=&quot;lwskills-code&quot; style=&quot;margin:1.2em 0;padding:1em;background:#282c34;color:#abb2bf;border-radius:6px;overflow:auto;&quot;&gt;用户:&amp;nbsp;使用&amp;nbsp;code-review&amp;nbsp;prompt&amp;nbsp;审查这段代码

AI:&amp;nbsp;我会使用专业的代码审查模板。
[调用&amp;nbsp;code-review&amp;nbsp;prompt]
参数:
&amp;nbsp;&amp;nbsp;language&amp;nbsp;=&amp;nbsp;&amp;quot;Java&amp;quot;
&amp;nbsp;&amp;nbsp;code&amp;nbsp;=&amp;nbsp;&amp;quot;public&amp;nbsp;class&amp;nbsp;User&amp;nbsp;{&amp;nbsp;...&amp;nbsp;}&amp;quot;
&amp;nbsp;&amp;nbsp;focus_areas&amp;nbsp;=&amp;nbsp;&amp;quot;安全性和性能&amp;quot;

AI:&amp;nbsp;[提供详细的代码审查反馈...]&lt;/pre&gt;&lt;h2 class=&quot;lwskills-h2&quot; style=&quot;margin:1.2em 0 0.6em;font-size:1.5em;color:#222;font-weight:600;&quot;&gt;最佳实践&lt;/h2&gt;&lt;h3 class=&quot;lwskills-h3&quot; style=&quot;margin:1.2em 0 0.6em;font-size:1.25em;color:#222;font-weight:600;&quot;&gt;安全考虑&lt;/h3&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;1. &lt;strong&gt;输入验证&lt;/strong&gt;&lt;/p&gt;&lt;pre class=&quot;lwskills-code&quot; style=&quot;margin:1.2em 0;padding:1em;background:#282c34;color:#abb2bf;border-radius:6px;overflow:auto;&quot;&gt;public&amp;nbsp;class&amp;nbsp;SecurityValidator&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;static&amp;nbsp;void&amp;nbsp;validateSqlQuery(String&amp;nbsp;sql)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;防止&amp;nbsp;SQL&amp;nbsp;注入
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;lowerSql&amp;nbsp;=&amp;nbsp;sql.toLowerCase();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String[]&amp;nbsp;dangerousKeywords&amp;nbsp;=&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;drop&amp;quot;,&amp;nbsp;&amp;quot;delete&amp;quot;,&amp;nbsp;&amp;quot;update&amp;quot;,&amp;nbsp;&amp;quot;insert&amp;quot;,&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;truncate&amp;quot;,&amp;nbsp;&amp;quot;alter&amp;quot;,&amp;nbsp;&amp;quot;create&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;(String&amp;nbsp;keyword&amp;nbsp;:&amp;nbsp;dangerousKeywords)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(lowerSql.contains(keyword))&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;throw&amp;nbsp;new&amp;nbsp;SecurityException(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;不允许的&amp;nbsp;SQL&amp;nbsp;操作:&amp;nbsp;&amp;quot;&amp;nbsp;+&amp;nbsp;keyword
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;static&amp;nbsp;Path&amp;nbsp;validatePath(Path&amp;nbsp;basePath,&amp;nbsp;String&amp;nbsp;userPath)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Path&amp;nbsp;resolved&amp;nbsp;=&amp;nbsp;basePath.resolve(userPath).normalize();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;防止路径遍历攻击
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(!resolved.startsWith(basePath))&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;throw&amp;nbsp;new&amp;nbsp;SecurityException(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;路径超出允许范围:&amp;nbsp;&amp;quot;&amp;nbsp;+&amp;nbsp;userPath
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;resolved;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;2. &lt;strong&gt;权限控制&lt;/strong&gt;&lt;/p&gt;&lt;pre class=&quot;lwskills-code&quot; style=&quot;margin:1.2em 0;padding:1em;background:#282c34;color:#abb2bf;border-radius:6px;overflow:auto;&quot;&gt;@Configuration
public&amp;nbsp;class&amp;nbsp;McpSecurityConfig&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Bean
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;McpAuthorizationManager&amp;nbsp;authorizationManager()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;new&amp;nbsp;McpAuthorizationManager()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;boolean&amp;nbsp;canExecuteTool(String&amp;nbsp;toolName,&amp;nbsp;Principal&amp;nbsp;user)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;基于用户角色的权限控制
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;switch&amp;nbsp;(toolName)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case&amp;nbsp;&amp;quot;query_database&amp;quot;&amp;nbsp;-&amp;gt;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;user.hasRole(&amp;quot;DATA_ANALYST&amp;quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case&amp;nbsp;&amp;quot;write_file&amp;quot;&amp;nbsp;-&amp;gt;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;user.hasRole(&amp;quot;DEVELOPER&amp;quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;default&amp;nbsp;-&amp;gt;&amp;nbsp;true;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;3. &lt;strong&gt;API 速率限制&lt;/strong&gt;&lt;/p&gt;&lt;pre class=&quot;lwskills-code&quot; style=&quot;margin:1.2em 0;padding:1em;background:#282c34;color:#abb2bf;border-radius:6px;overflow:auto;&quot;&gt;@Aspect
@Component
public&amp;nbsp;class&amp;nbsp;RateLimitAspect&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;final&amp;nbsp;RateLimiter&amp;nbsp;rateLimiter&amp;nbsp;=&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RateLimiter.create(10.0);&amp;nbsp;//&amp;nbsp;每秒&amp;nbsp;10&amp;nbsp;个请求
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Around(&amp;quot;@annotation(Tool)&amp;quot;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;Object&amp;nbsp;rateLimit(ProceedingJoinPoint&amp;nbsp;joinPoint)&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;throws&amp;nbsp;Throwable&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(!rateLimiter.tryAcquire())&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;throw&amp;nbsp;new&amp;nbsp;RateLimitException(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;请求过于频繁,请稍后再试&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;joinPoint.proceed();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;h3 class=&quot;lwskills-h3&quot; style=&quot;margin:1.2em 0 0.6em;font-size:1.25em;color:#222;font-weight:600;&quot;&gt;性能优化&lt;/h3&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;1. &lt;strong&gt;结果缓存&lt;/strong&gt;&lt;/p&gt;&lt;pre class=&quot;lwskills-code&quot; style=&quot;margin:1.2em 0;padding:1em;background:#282c34;color:#abb2bf;border-radius:6px;overflow:auto;&quot;&gt;@Service
public&amp;nbsp;class&amp;nbsp;CachedDatabaseTools&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Cacheable(value&amp;nbsp;=&amp;nbsp;&amp;quot;tableSchema&amp;quot;,&amp;nbsp;key&amp;nbsp;=&amp;nbsp;&amp;quot;#tableName&amp;quot;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;TableSchema&amp;nbsp;getTableSchema(String&amp;nbsp;tableName)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;缓存表结构,避免重复查询
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;databaseService.getSchema(tableName);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Cacheable(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;value&amp;nbsp;=&amp;nbsp;&amp;quot;queryResults&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;key&amp;nbsp;=&amp;nbsp;&amp;quot;#sql&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;condition&amp;nbsp;=&amp;nbsp;&amp;quot;#sql.toLowerCase().startsWith(&amp;#39;select&amp;#39;)&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;QueryResult&amp;nbsp;executeQuery(String&amp;nbsp;sql)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;databaseService.execute(sql);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;2. &lt;strong&gt;异步处理&lt;/strong&gt;&lt;/p&gt;&lt;pre class=&quot;lwskills-code&quot; style=&quot;margin:1.2em 0;padding:1em;background:#282c34;color:#abb2bf;border-radius:6px;overflow:auto;&quot;&gt;@Service
public&amp;nbsp;class&amp;nbsp;AsyncFileTools&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Tool(description&amp;nbsp;=&amp;nbsp;&amp;quot;异步搜索文件&amp;quot;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;CompletableFuture&amp;lt;List&amp;lt;String&amp;gt;&amp;gt;&amp;nbsp;searchFilesAsync(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@ToolParam(name&amp;nbsp;=&amp;nbsp;&amp;quot;pattern&amp;quot;)&amp;nbsp;String&amp;nbsp;pattern
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;CompletableFuture.supplyAsync(()&amp;nbsp;-&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;耗时的文件搜索操作
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;fileService.search(pattern);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;});
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;3. &lt;strong&gt;连接池管理&lt;/strong&gt;&lt;/p&gt;&lt;pre class=&quot;lwskills-code&quot; style=&quot;margin:1.2em 0;padding:1em;background:#282c34;color:#abb2bf;border-radius:6px;overflow:auto;&quot;&gt;@Configuration
public&amp;nbsp;class&amp;nbsp;DatabaseConfig&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Bean
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;DataSource&amp;nbsp;dataSource()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HikariConfig&amp;nbsp;config&amp;nbsp;=&amp;nbsp;new&amp;nbsp;HikariConfig();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;config.setJdbcUrl(jdbcUrl);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;config.setUsername(username);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;config.setPassword(password);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;优化连接池配置
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;config.setMaximumPoolSize(20);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;config.setMinimumIdle(5);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;config.setConnectionTimeout(30000);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;config.setIdleTimeout(600000);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;new&amp;nbsp;HikariDataSource(config);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;h3 class=&quot;lwskills-h3&quot; style=&quot;margin:1.2em 0 0.6em;font-size:1.25em;color:#222;font-weight:600;&quot;&gt;错误处理&lt;/h3&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;&lt;strong&gt;统一异常处理：&lt;/strong&gt;&lt;/p&gt;&lt;pre class=&quot;lwskills-code&quot; style=&quot;margin:1.2em 0;padding:1em;background:#282c34;color:#abb2bf;border-radius:6px;overflow:auto;&quot;&gt;@ControllerAdvice
public&amp;nbsp;class&amp;nbsp;McpExceptionHandler&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@ExceptionHandler(SecurityException.class)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;ResponseEntity&amp;lt;ErrorResponse&amp;gt;&amp;nbsp;handleSecurityException(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SecurityException&amp;nbsp;ex
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;ResponseEntity
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.status(HttpStatus.FORBIDDEN)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.body(new&amp;nbsp;ErrorResponse(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;SECURITY_ERROR&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ex.getMessage()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@ExceptionHandler(IllegalArgumentException.class)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;ResponseEntity&amp;lt;ErrorResponse&amp;gt;&amp;nbsp;handleValidationException(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IllegalArgumentException&amp;nbsp;ex
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;ResponseEntity
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.status(HttpStatus.BAD_REQUEST)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.body(new&amp;nbsp;ErrorResponse(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;VALIDATION_ERROR&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ex.getMessage()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@ExceptionHandler(Exception.class)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;ResponseEntity&amp;lt;ErrorResponse&amp;gt;&amp;nbsp;handleGenericException(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Exception&amp;nbsp;ex
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;log.error(&amp;quot;Unexpected&amp;nbsp;error&amp;quot;,&amp;nbsp;ex);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;ResponseEntity
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.status(HttpStatus.INTERNAL_SERVER_ERROR)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.body(new&amp;nbsp;ErrorResponse(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;INTERNAL_ERROR&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;服务暂时不可用,请稍后重试&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}

record&amp;nbsp;ErrorResponse(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;code,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;message
)&amp;nbsp;{}&lt;/pre&gt;&lt;h3 class=&quot;lwskills-h3&quot; style=&quot;margin:1.2em 0 0.6em;font-size:1.25em;color:#222;font-weight:600;&quot;&gt;监控与日志&lt;/h3&gt;&lt;pre class=&quot;lwskills-code&quot; style=&quot;margin:1.2em 0;padding:1em;background:#282c34;color:#abb2bf;border-radius:6px;overflow:auto;&quot;&gt;@Aspect
@Component
public&amp;nbsp;class&amp;nbsp;McpMonitoringAspect&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Around(&amp;quot;@annotation(tool)&amp;quot;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;Object&amp;nbsp;monitorToolExecution(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ProceedingJoinPoint&amp;nbsp;joinPoint,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Tool&amp;nbsp;tool
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&amp;nbsp;throws&amp;nbsp;Throwable&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;toolName&amp;nbsp;=&amp;nbsp;tool.name();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;long&amp;nbsp;startTime&amp;nbsp;=&amp;nbsp;System.currentTimeMillis();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;try&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Object&amp;nbsp;result&amp;nbsp;=&amp;nbsp;joinPoint.proceed();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;long&amp;nbsp;duration&amp;nbsp;=&amp;nbsp;System.currentTimeMillis()&amp;nbsp;-&amp;nbsp;startTime;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;记录成功的工具调用
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;log.info(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;Tool&amp;nbsp;executed:&amp;nbsp;{}&amp;nbsp;|&amp;nbsp;Duration:&amp;nbsp;{}ms&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;toolName,&amp;nbsp;duration
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;发送指标到监控系统
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;metricsService.recordToolExecution(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;toolName,&amp;nbsp;duration,&amp;nbsp;&amp;quot;success&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;result;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;catch&amp;nbsp;(Exception&amp;nbsp;ex)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;long&amp;nbsp;duration&amp;nbsp;=&amp;nbsp;System.currentTimeMillis()&amp;nbsp;-&amp;nbsp;startTime;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;记录失败的工具调用
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;log.error(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;Tool&amp;nbsp;failed:&amp;nbsp;{}&amp;nbsp;|&amp;nbsp;Duration:&amp;nbsp;{}ms&amp;nbsp;|&amp;nbsp;Error:&amp;nbsp;{}&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;toolName,&amp;nbsp;duration,&amp;nbsp;ex.getMessage()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;metricsService.recordToolExecution(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;toolName,&amp;nbsp;duration,&amp;nbsp;&amp;quot;failure&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;throw&amp;nbsp;ex;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;h2 class=&quot;lwskills-h2&quot; style=&quot;margin:1.2em 0 0.6em;font-size:1.5em;color:#222;font-weight:600;&quot;&gt;典型应用场景&lt;/h2&gt;&lt;h3 class=&quot;lwskills-h3&quot; style=&quot;margin:1.2em 0 0.6em;font-size:1.25em;color:#222;font-weight:600;&quot;&gt;1. IDE 智能助手&lt;/h3&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;&lt;strong&gt;功能描述：&lt;/strong&gt; 在 IDE 中提供代码生成、重构、调试等智能辅助功能。&lt;/p&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;&lt;strong&gt;实现示例：&lt;/strong&gt;&lt;/p&gt;&lt;pre class=&quot;lwskills-code&quot; style=&quot;margin:1.2em 0;padding:1em;background:#282c34;color:#abb2bf;border-radius:6px;overflow:auto;&quot;&gt;@Service
public&amp;nbsp;class&amp;nbsp;IdeTools&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Tool(description&amp;nbsp;=&amp;nbsp;&amp;quot;生成单元测试&amp;quot;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;String&amp;nbsp;generateUnitTest(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@ToolParam(name&amp;nbsp;=&amp;nbsp;&amp;quot;source_code&amp;quot;)&amp;nbsp;String&amp;nbsp;sourceCode,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@ToolParam(name&amp;nbsp;=&amp;nbsp;&amp;quot;test_framework&amp;quot;)&amp;nbsp;String&amp;nbsp;framework
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;分析源代码
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CodeAnalysis&amp;nbsp;analysis&amp;nbsp;=&amp;nbsp;codeAnalyzer.analyze(sourceCode);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;生成测试代码
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;testGenerator.generate(analysis,&amp;nbsp;framework);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Tool(description&amp;nbsp;=&amp;nbsp;&amp;quot;代码重构建议&amp;quot;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;List&amp;lt;RefactoringSuggestion&amp;gt;&amp;nbsp;suggestRefactoring(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@ToolParam(name&amp;nbsp;=&amp;nbsp;&amp;quot;code&amp;quot;)&amp;nbsp;String&amp;nbsp;code
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;refactoringService.analyzePotentialImprovements(code);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;h3 class=&quot;lwskills-h3&quot; style=&quot;margin:1.2em 0 0.6em;font-size:1.25em;color:#222;font-weight:600;&quot;&gt;2. 企业数据分析&lt;/h3&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;&lt;strong&gt;功能描述：&lt;/strong&gt; 提供自然语言到 SQL 的转换,支持数据可视化。&lt;/p&gt;&lt;pre class=&quot;lwskills-code&quot; style=&quot;margin:1.2em 0;padding:1em;background:#282c34;color:#abb2bf;border-radius:6px;overflow:auto;&quot;&gt;@Service
public&amp;nbsp;class&amp;nbsp;DataAnalyticsTools&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Tool(description&amp;nbsp;=&amp;nbsp;&amp;quot;自然语言查询&amp;quot;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;QueryResult&amp;nbsp;nlQuery(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@ToolParam(name&amp;nbsp;=&amp;nbsp;&amp;quot;question&amp;quot;)&amp;nbsp;String&amp;nbsp;question
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;将自然语言转换为&amp;nbsp;SQL
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;sql&amp;nbsp;=&amp;nbsp;nlToSqlConverter.convert(question);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;log.info(&amp;quot;Generated&amp;nbsp;SQL:&amp;nbsp;{}&amp;quot;,&amp;nbsp;sql);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;执行查询
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;databaseService.executeQuery(sql);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Tool(description&amp;nbsp;=&amp;nbsp;&amp;quot;生成数据可视化&amp;quot;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;ChartConfig&amp;nbsp;generateChart(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@ToolParam(name&amp;nbsp;=&amp;nbsp;&amp;quot;data&amp;quot;)&amp;nbsp;List&amp;lt;Map&amp;lt;String,&amp;nbsp;Object&amp;gt;&amp;gt;&amp;nbsp;data,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@ToolParam(name&amp;nbsp;=&amp;nbsp;&amp;quot;chart_type&amp;quot;)&amp;nbsp;String&amp;nbsp;chartType
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;chartGenerator.generate(data,&amp;nbsp;chartType);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;h3 class=&quot;lwskills-h3&quot; style=&quot;margin:1.2em 0 0.6em;font-size:1.25em;color:#222;font-weight:600;&quot;&gt;3. 文档生成与管理&lt;/h3&gt;&lt;pre class=&quot;lwskills-code&quot; style=&quot;margin:1.2em 0;padding:1em;background:#282c34;color:#abb2bf;border-radius:6px;overflow:auto;&quot;&gt;@Service
public&amp;nbsp;class&amp;nbsp;DocumentationTools&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Tool(description&amp;nbsp;=&amp;nbsp;&amp;quot;生成&amp;nbsp;API&amp;nbsp;文档&amp;quot;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;String&amp;nbsp;generateApiDocs(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@ToolParam(name&amp;nbsp;=&amp;nbsp;&amp;quot;swagger_spec&amp;quot;)&amp;nbsp;String&amp;nbsp;swaggerSpec
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;apiDocGenerator.generate(swaggerSpec);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Tool(description&amp;nbsp;=&amp;nbsp;&amp;quot;更新用户手册&amp;quot;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;UpdateResult&amp;nbsp;updateUserManual(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@ToolParam(name&amp;nbsp;=&amp;nbsp;&amp;quot;section&amp;quot;)&amp;nbsp;String&amp;nbsp;section,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@ToolParam(name&amp;nbsp;=&amp;nbsp;&amp;quot;content&amp;quot;)&amp;nbsp;String&amp;nbsp;content
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Path&amp;nbsp;manualPath&amp;nbsp;=&amp;nbsp;docsPath.resolve(&amp;quot;user-manual.md&amp;quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;documentService.updateSection(manualPath,&amp;nbsp;section,&amp;nbsp;content);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;h3 class=&quot;lwskills-h3&quot; style=&quot;margin:1.2em 0 0.6em;font-size:1.25em;color:#222;font-weight:600;&quot;&gt;4. DevOps 自动化&lt;/h3&gt;&lt;pre class=&quot;lwskills-code&quot; style=&quot;margin:1.2em 0;padding:1em;background:#282c34;color:#abb2bf;border-radius:6px;overflow:auto;&quot;&gt;@Service
public&amp;nbsp;class&amp;nbsp;DevOpsTools&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Tool(description&amp;nbsp;=&amp;nbsp;&amp;quot;部署应用&amp;quot;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;DeploymentResult&amp;nbsp;deploy(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@ToolParam(name&amp;nbsp;=&amp;nbsp;&amp;quot;environment&amp;quot;)&amp;nbsp;String&amp;nbsp;environment,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@ToolParam(name&amp;nbsp;=&amp;nbsp;&amp;quot;version&amp;quot;)&amp;nbsp;String&amp;nbsp;version
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;deploymentService.deploy(environment,&amp;nbsp;version);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Tool(description&amp;nbsp;=&amp;nbsp;&amp;quot;查看日志&amp;quot;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;List&amp;lt;LogEntry&amp;gt;&amp;nbsp;getLogs(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@ToolParam(name&amp;nbsp;=&amp;nbsp;&amp;quot;service&amp;quot;)&amp;nbsp;String&amp;nbsp;service,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@ToolParam(name&amp;nbsp;=&amp;nbsp;&amp;quot;lines&amp;quot;)&amp;nbsp;int&amp;nbsp;lines
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;logService.getTailLogs(service,&amp;nbsp;lines);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Tool(description&amp;nbsp;=&amp;nbsp;&amp;quot;检查服务健康状态&amp;quot;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;HealthStatus&amp;nbsp;checkHealth(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@ToolParam(name&amp;nbsp;=&amp;nbsp;&amp;quot;service&amp;quot;)&amp;nbsp;String&amp;nbsp;service
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;healthCheckService.check(service);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;h2 class=&quot;lwskills-h2&quot; style=&quot;margin:1.2em 0 0.6em;font-size:1.5em;color:#222;font-weight:600;&quot;&gt;生态系统与工具&lt;/h2&gt;&lt;h3 class=&quot;lwskills-h3&quot; style=&quot;margin:1.2em 0 0.6em;font-size:1.25em;color:#222;font-weight:600;&quot;&gt;官方工具&lt;/h3&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;1. &lt;strong&gt;MCP Inspector&lt;/strong&gt; - 调试和测试 MCP 服务器&lt;/p&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;网址: &lt;a href=&quot;https://github.com/modelcontextprotocol/inspector&quot; target=&quot;_self&quot;&gt;inspector&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;功能: 实时查看工具调用、测试 prompts、监控资源&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;2. &lt;strong&gt;MCP CLI&lt;/strong&gt; - 命令行工具&lt;br/&gt;``&lt;code style=&quot;padding:2px 6px;background:#f0f0f0;border-radius:3px;font-size:0.9em;&quot;&gt;bash&lt;br/&gt;npm install -g @modelcontextprotocol/cli&lt;br/&gt;mcp test http://localhost:8080/sse&lt;br/&gt;&lt;/code&gt;``&lt;/p&gt;&lt;h3 class=&quot;lwskills-h3&quot; style=&quot;margin:1.2em 0 0.6em;font-size:1.25em;color:#222;font-weight:600;&quot;&gt;社区服务器&lt;/h3&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;访问 mcp.so 浏览 1000+ 社区 MCP 服务器:&lt;/p&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;数据库&lt;/strong&gt;: PostgreSQL, MySQL, MongoDB, Redis&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;云服务&lt;/strong&gt;: AWS, Azure, GCP&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;开发工具&lt;/strong&gt;: GitHub, GitLab, Jira&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;通信&lt;/strong&gt;: Slack, Discord, Email&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;数据处理&lt;/strong&gt;: Pandas, NumPy, Excel&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 class=&quot;lwskills-h3&quot; style=&quot;margin:1.2em 0 0.6em;font-size:1.25em;color:#222;font-weight:600;&quot;&gt;客户端支持&lt;/h3&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;| 客户端 | 支持程度 | 配置方式 |&lt;br/&gt;|--------|---------|----------|&lt;br/&gt;| &lt;strong&gt;Claude Desktop&lt;/strong&gt; | ✅ 完整支持 | JSON 配置文件 |&lt;br/&gt;| &lt;strong&gt;Cursor&lt;/strong&gt; | ✅ 完整支持 | .cursor/mcp.json |&lt;br/&gt;| &lt;strong&gt;Cline (VS Code)&lt;/strong&gt; | ✅ 完整支持 | 插件配置 |&lt;br/&gt;| &lt;strong&gt;Continue&lt;/strong&gt; | ✅ 完整支持 | config.json |&lt;br/&gt;| &lt;strong&gt;Zed&lt;/strong&gt; | ✅ 实验性支持 | 内置配置 |&lt;/p&gt;&lt;h2 class=&quot;lwskills-h2&quot; style=&quot;margin:1.2em 0 0.6em;font-size:1.5em;color:#222;font-weight:600;&quot;&gt;常见问题&lt;/h2&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;&lt;strong&gt;Q: MCP 与 OpenAI Function Calling 有什么区别？&lt;/strong&gt;&lt;/p&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;A: MCP 是一个开放协议,不绑定特定 AI 提供商。Function Calling 是 OpenAI 特定的实现。MCP 支持更丰富的能力(Tools, Resources, Prompts),而 Function Calling 主要聚焦于函数调用。&lt;/p&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;&lt;strong&gt;Q: stdio 和 SSE 传输方式如何选择？&lt;/strong&gt;&lt;/p&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;A:&lt;/p&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;stdio&lt;/strong&gt;: 适合本地命令行工具,零网络开销,启动快&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;SSE&lt;/strong&gt;: 适合 Web 服务,支持远程访问,易于部署和扩展&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;&lt;strong&gt;Q: MCP 服务器如何处理长时间运行的任务？&lt;/strong&gt;&lt;/p&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;A: 建议使用异步模式:&lt;/p&gt;&lt;pre class=&quot;lwskills-code&quot; style=&quot;margin:1.2em 0;padding:1em;background:#282c34;color:#abb2bf;border-radius:6px;overflow:auto;&quot;&gt;@Tool(description&amp;nbsp;=&amp;nbsp;&amp;quot;异步任务&amp;quot;)
public&amp;nbsp;TaskId&amp;nbsp;startAsyncTask(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@ToolParam(name&amp;nbsp;=&amp;nbsp;&amp;quot;input&amp;quot;)&amp;nbsp;String&amp;nbsp;input
)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;返回任务&amp;nbsp;ID
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;taskService.submit(input);
}

@Tool(description&amp;nbsp;=&amp;nbsp;&amp;quot;查询任务状态&amp;quot;)
public&amp;nbsp;TaskStatus&amp;nbsp;getTaskStatus(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@ToolParam(name&amp;nbsp;=&amp;nbsp;&amp;quot;task_id&amp;quot;)&amp;nbsp;String&amp;nbsp;taskId
)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;taskService.getStatus(taskId);
}&lt;/pre&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;&lt;strong&gt;Q: 如何调试 MCP 服务器？&lt;/strong&gt;&lt;/p&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;A:&lt;br/&gt;1. 使用 MCP Inspector 工具&lt;br/&gt;2. 启用详细日志: &lt;code style=&quot;padding:2px 6px;background:#f0f0f0;border-radius:3px;font-size:0.9em;&quot;&gt;logging.level.org.springframework.ai.mcp=DEBUG&lt;/code&gt;&lt;br/&gt;3. 使用 Postman 测试 SSE 端点&lt;br/&gt;4. 添加监控和追踪&lt;/p&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;&lt;strong&gt;Q: MCP 服务器的性能瓶颈在哪里？&lt;/strong&gt;&lt;/p&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;A: 常见瓶颈:&lt;/p&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;数据库连接池不足&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;未使用缓存&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;同步阻塞操作&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;大数据传输&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;优化建议见&amp;quot;性能优化&amp;quot;章节。&lt;/p&gt;&lt;h2 class=&quot;lwskills-h2&quot; style=&quot;margin:1.2em 0 0.6em;font-size:1.5em;color:#222;font-weight:600;&quot;&gt;未来展望&lt;/h2&gt;&lt;h3 class=&quot;lwskills-h3&quot; style=&quot;margin:1.2em 0 0.6em;font-size:1.25em;color:#222;font-weight:600;&quot;&gt;即将到来的特性&lt;/h3&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;1. &lt;strong&gt;细粒度权限控制&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;基于工具的 ACL&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;资源级别的访问控制&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;审计日志&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;2. &lt;strong&gt;多模态支持&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;图像分析工具&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;音频处理&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;视频内容理解&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;3. &lt;strong&gt;增强的上下文管理&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;会话状态持久化&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;跨工具上下文共享&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;智能缓存策略&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;lwskills-p&quot; style=&quot;margin:0 0 1em;line-height:1.75;color:#333;&quot;&gt;4. &lt;strong&gt;更好的可观测性&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;内置追踪和指标&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;性能分析工具&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;实时监控面板&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 class=&quot;lwskills-h3&quot; style=&quot;margin:1.2em 0 0.6em;font-size:1.25em;color:#222;font-weight:600;&quot;&gt;技术演进方向&lt;/h3&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;协议版本 2.0&lt;/strong&gt;: 更高效的二进制传输&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;边缘计算&lt;/strong&gt;: 在浏览器中运行 MCP 服务器&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;联邦学习&lt;/strong&gt;: 跨服务器的知识共享&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;AI Agent 框架&lt;/strong&gt;: 与 LangChain, AutoGPT 等深度集成&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 class=&quot;lwskills-h3&quot; style=&quot;margin:1.2em 0 0.6em;font-size:1.25em;color:#222;font-weight:600;&quot;&gt;生态发展&lt;/h3&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;企业采用&lt;/strong&gt;: 更多企业级 MCP 服务器&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;标准化&lt;/strong&gt;: 行业标准和最佳实践&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;认证体系&lt;/strong&gt;: MCP 服务器质量认证&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot;lwskills-ul list-paddingleft-2&quot; style=&quot;margin:0 0 1em 1.5em;padding:0;line-height:1.75;&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;市场生态&lt;/strong&gt;: MCP 服务器市场和交易平台&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 class=&quot;lwskills-h2&quot; style=&quot;margin:1.2em 0 0.6em;font-size:1.5em;color:#222;font-weight:600;&quot;&gt;参考资源&lt;/h2&gt;&lt;h3 class=&quot;lwskills-h3&quot; style=&quot;margin:1.2em 0 0.6em;font-size:1.25em;color:#222;font-weight:600;&quot;&gt;官方资源&lt;/h3&gt;&lt;ul style=&quot;list-style-type: disc;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;MCP 官方网站&lt;/strong&gt;: &lt;a href=&quot;https://modelcontextprotocol.io&quot; _src=&quot;https://modelcontextprotocol.io&quot;&gt;modelcontextprotocol&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;MCP 规范&lt;/strong&gt;: &lt;a href=&quot;https://spec.modelcontextprotocol.io&quot; _src=&quot;https://spec.modelcontextprotocol.io&quot;&gt;modelcontextprotocol&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;MCP GitHub&lt;/strong&gt;: &lt;a href=&quot;https://github.com/modelcontextprotocol&quot; _src=&quot;https://github.com/modelcontextprotocol&quot;&gt;modelcontextprotocol&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;MCP 服务器目录&lt;/strong&gt;: &lt;a href=&quot;https://mcp.so/servers&quot; _src=&quot;https://mcp.so/servers&quot;&gt;mcp&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 class=&quot;lwskills-h3&quot; style=&quot;margin:1.2em 0 0.6em;font-size:1.25em;color:#222;font-weight:600;&quot;&gt;Spring AI 相关&lt;/h3&gt;&lt;ul style=&quot;list-style-type: disc;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Spring AI 文档&lt;/strong&gt;: &lt;a href=&quot;https://docs.spring.io/spring-ai/reference/&quot; _src=&quot;https://docs.spring.io/spring-ai/reference/&quot;&gt;reference&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;MCP 集成指南&lt;/strong&gt;: &lt;a href=&quot;https://docs.spring.io/spring-ai/reference/api/mcp/&quot; _src=&quot;https://docs.spring.io/spring-ai/reference/api/mcp/&quot;&gt;mcp&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;示例仓库&lt;/strong&gt;: &lt;a href=&quot;https://github.com/spring-projects/spring-ai-examples&quot; _src=&quot;https://github.com/spring-projects/spring-ai-examples&quot;&gt;spring-ai-examples&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Spring AI MCP Server Starter&lt;/strong&gt;: &lt;a href=&quot;https://docs.spring.io/spring-ai/reference/api/mcp/mcp-server-boot-starter-docs.html&quot; _src=&quot;https://docs.spring.io/spring-ai/reference/api/mcp/mcp-server-boot-starter-docs.html&quot;&gt;mcp-server-boot-starter-docs.html&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 class=&quot;lwskills-h3&quot; style=&quot;margin:1.2em 0 0.6em;font-size:1.25em;color:#222;font-weight:600;&quot;&gt;技术规范&lt;/h3&gt;&lt;ul style=&quot;list-style-type: disc;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;JSON-RPC 2.0&lt;/strong&gt;: &lt;a href=&quot;https://www.jsonrpc.org/specification&quot; _src=&quot;https://www.jsonrpc.org/specification&quot;&gt;specification&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Server-Sent Events&lt;/strong&gt;: &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events&quot; _src=&quot;https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events&quot;&gt;Server-sent_events&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;OpenAPI 3.0&lt;/strong&gt;: &lt;a href=&quot;https://swagger.io/specification/&quot; _src=&quot;https://swagger.io/specification/&quot;&gt;specification&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 class=&quot;lwskills-h3&quot; style=&quot;margin:1.2em 0 0.6em;font-size:1.25em;color:#222;font-weight:600;&quot;&gt;社区资源&lt;/h3&gt;&lt;ul style=&quot;list-style-type: disc;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;MCP Discord&lt;/strong&gt;: &lt;a href=&quot;https://discord.gg/modelcontextprotocol&quot; _src=&quot;https://discord.gg/modelcontextprotocol&quot;&gt;modelcontextprotocol&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;MCP Reddit&lt;/strong&gt;: &lt;a href=&quot;https://reddit.com/r/mcp&quot; _src=&quot;https://reddit.com/r/mcp&quot;&gt;reddit&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Stack Overflow&lt;/strong&gt;: 标签 &lt;code style=&quot;padding:2px 6px;background:#f0f0f0;border-radius:3px;font-size:0.9em;&quot;&gt;model-context-protocol&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;YouTube 教程&lt;/strong&gt;: 搜索 &amp;quot;MCP Tutorial&amp;quot;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 class=&quot;lwskills-h3&quot; style=&quot;margin:1.2em 0 0.6em;font-size:1.25em;color:#222;font-weight:600;&quot;&gt;相关项目&lt;/h3&gt;&lt;ul style=&quot;list-style-type: disc;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Java SDK&lt;/strong&gt;: &lt;a href=&quot;https://github.com/modelcontextprotocol/java-sdk&quot; _src=&quot;https://github.com/modelcontextprotocol/java-sdk&quot;&gt;java-sdk&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;TypeScript SDK&lt;/strong&gt;:&amp;nbsp;&lt;a href=&quot;https://github.com/modelcontextprotocol/typescript-sdk&quot; _src=&quot;https://github.com/modelcontextprotocol/typescript-sdk&quot;&gt;typescript-sdk&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Python SDK&lt;/strong&gt;: &lt;a href=&quot;https://github.com/modelcontextprotocol/python-sdk&quot; _src=&quot;https://github.com/modelcontextprotocol/python-sdk&quot;&gt;python-sdk&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;MCP Inspector&lt;/strong&gt;: &lt;a href=&quot;https://github.com/modelcontextprotocol/inspector&quot; _src=&quot;https://github.com/modelcontextprotocol/inspector&quot;&gt;inspector&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;lwskills-download-wrap&quot; style=&quot;margin-top: 2em; padding-top: 1.2em; border-top: 1px solid rgb(232, 232, 232); text-align: center;&quot;&gt;&lt;a href=&quot;https://www.lw50.com/zb_users/plugin/lwskills/download.php?id=1937&quot; class=&quot;lwskills-download-btn&quot; style=&quot;display:inline-block;padding:10px 28px;background:#3a6ea5;color:#fff;text-decoration:none;border-radius:4px;font-size:14px;&quot;&gt;下载文档&lt;/a&gt;&lt;/p&gt;</description><pubDate>Wed, 10 Jun 2026 13:25:52 +0800</pubDate></item></channel></rss>